From 19d6edcbdfe2e0941252b7883f880c8137bd4670 Mon Sep 17 00:00:00 2001 From: patrickelectric Date: Thu, 20 Jun 2024 18:54:15 +0000 Subject: [PATCH] deploy: f47c61f74b7255bd7e37d82c56410812e1dd9551 --- mavlink/ardupilotmega/enum.MavMessage.html | 528 +++++++++--------- mavlink/ardupilotmega/struct.AdsbFlags.html | 16 +- mavlink/ardupilotmega/struct.AisFlags.html | 14 +- .../struct.AttitudeTargetTypemask.html | 14 +- .../ardupilotmega/struct.CameraCapFlags.html | 14 +- .../ardupilotmega/struct.EkfStatusFlags.html | 18 +- .../ardupilotmega/struct.EscFailureFlags.html | 18 +- .../struct.EstimatorStatusFlags.html | 12 +- .../struct.GimbalDeviceCapFlags.html | 14 +- .../struct.GimbalDeviceErrorFlags.html | 14 +- .../struct.GimbalDeviceFlags.html | 16 +- .../struct.GimbalManagerCapFlags.html | 14 +- .../struct.GoproHeartbeatFlags.html | 14 +- .../struct.GpsInputIgnoreFlags.html | 18 +- .../struct.HighresImuUpdatedFlags.html | 10 +- .../struct.HilSensorUpdatedFlags.html | 16 +- .../ardupilotmega/struct.HlFailureFlag.html | 12 +- mavlink/ardupilotmega/struct.LimitModule.html | 14 +- .../struct.MavEventCurrentSequenceFlags.html | 16 +- .../struct.MavGeneratorStatusFlag.html | 16 +- mavlink/ardupilotmega/struct.MavModeFlag.html | 14 +- .../ardupilotmega/struct.MavPowerStatus.html | 18 +- .../struct.MavProtocolCapability.html | 10 +- .../struct.MavSysStatusSensor.html | 18 +- .../struct.MavWinchStatusFlag.html | 16 +- .../struct.PositionTargetTypemask.html | 16 +- mavlink/ardupilotmega/struct.RallyFlags.html | 18 +- .../struct.SerialControlFlag.html | 16 +- mavlink/ardupilotmega/struct.TuneFormat.html | 18 +- .../struct.UavionixAdsbOutDynamicState.html | 10 +- .../struct.UavionixAdsbOutRfSelect.html | 10 +- .../struct.UavionixAdsbRfHealth.html | 14 +- .../struct.UtmDataAvailFlags.html | 14 +- mavlink/common/enum.MavMessage.html | 394 ++++++------- mavlink/common/struct.AdsbFlags.html | 16 +- mavlink/common/struct.AisFlags.html | 12 +- .../common/struct.AttitudeTargetTypemask.html | 16 +- mavlink/common/struct.CameraCapFlags.html | 18 +- mavlink/common/struct.EscFailureFlags.html | 16 +- .../common/struct.EstimatorStatusFlags.html | 16 +- .../common/struct.GimbalDeviceCapFlags.html | 14 +- .../common/struct.GimbalDeviceErrorFlags.html | 18 +- mavlink/common/struct.GimbalDeviceFlags.html | 16 +- .../common/struct.GimbalManagerCapFlags.html | 12 +- .../common/struct.GpsInputIgnoreFlags.html | 10 +- .../common/struct.HighresImuUpdatedFlags.html | 14 +- .../common/struct.HilSensorUpdatedFlags.html | 18 +- mavlink/common/struct.HlFailureFlag.html | 14 +- .../struct.MavEventCurrentSequenceFlags.html | 14 +- .../common/struct.MavGeneratorStatusFlag.html | 14 +- mavlink/common/struct.MavModeFlag.html | 16 +- mavlink/common/struct.MavPowerStatus.html | 14 +- .../common/struct.MavProtocolCapability.html | 12 +- mavlink/common/struct.MavSysStatusSensor.html | 18 +- mavlink/common/struct.MavWinchStatusFlag.html | 16 +- .../common/struct.PositionTargetTypemask.html | 18 +- mavlink/common/struct.SerialControlFlag.html | 12 +- mavlink/common/struct.TuneFormat.html | 16 +- mavlink/common/struct.UtmDataAvailFlags.html | 18 +- mavlink/icarous/enum.MavMessage.html | 4 +- mavlink/uavionix/enum.MavMessage.html | 394 ++++++------- mavlink/uavionix/struct.AdsbFlags.html | 14 +- mavlink/uavionix/struct.AisFlags.html | 16 +- .../struct.AttitudeTargetTypemask.html | 12 +- mavlink/uavionix/struct.CameraCapFlags.html | 16 +- mavlink/uavionix/struct.EscFailureFlags.html | 18 +- .../uavionix/struct.EstimatorStatusFlags.html | 12 +- .../uavionix/struct.GimbalDeviceCapFlags.html | 16 +- .../struct.GimbalDeviceErrorFlags.html | 18 +- .../uavionix/struct.GimbalDeviceFlags.html | 14 +- .../struct.GimbalManagerCapFlags.html | 16 +- .../uavionix/struct.GpsInputIgnoreFlags.html | 18 +- .../struct.HighresImuUpdatedFlags.html | 16 +- .../struct.HilSensorUpdatedFlags.html | 16 +- mavlink/uavionix/struct.HlFailureFlag.html | 18 +- .../struct.MavEventCurrentSequenceFlags.html | 14 +- .../struct.MavGeneratorStatusFlag.html | 16 +- mavlink/uavionix/struct.MavModeFlag.html | 16 +- mavlink/uavionix/struct.MavPowerStatus.html | 16 +- .../struct.MavProtocolCapability.html | 18 +- .../uavionix/struct.MavSysStatusSensor.html | 16 +- .../uavionix/struct.MavWinchStatusFlag.html | 14 +- .../struct.PositionTargetTypemask.html | 14 +- .../uavionix/struct.SerialControlFlag.html | 14 +- mavlink/uavionix/struct.TuneFormat.html | 16 +- .../struct.UavionixAdsbOutDynamicState.html | 16 +- .../struct.UavionixAdsbOutRfSelect.html | 16 +- .../uavionix/struct.UavionixAdsbRfHealth.html | 12 +- .../uavionix/struct.UtmDataAvailFlags.html | 18 +- mavlink_bindgen/error/enum.BindGenError.html | 9 +- mavlink_bindgen/error/index.html | 2 +- mavlink_bindgen/index.html | 2 +- mavlink_bindgen/parser/enum.MavType.html | 18 +- .../parser/enum.MavXmlElement.html | 6 +- mavlink_bindgen/parser/fn.extra_crc.html | 2 +- mavlink_bindgen/parser/fn.generate.html | 4 +- mavlink_bindgen/parser/fn.parse_profile.html | 4 +- mavlink_bindgen/parser/index.html | 2 +- mavlink_bindgen/parser/struct.MavEnum.html | 6 +- .../parser/struct.MavEnumEntry.html | 6 +- mavlink_bindgen/parser/struct.MavField.html | 6 +- mavlink_bindgen/parser/struct.MavMessage.html | 6 +- mavlink_bindgen/parser/struct.MavProfile.html | 6 +- search-index.js | 4 +- .../mavlink_bindgen-desc-0-.js | 2 +- .../out/ardupilotmega.rs.html | 2 +- .../out/common.rs.html | 2 +- .../out/icarous.rs.html | 2 +- .../out/uavionix.rs.html | 2 +- src/mavlink_bindgen/error.rs.html | 18 +- src/mavlink_bindgen/lib.rs.html | 4 +- src/mavlink_bindgen/parser.rs.html | 36 +- 112 files changed, 1399 insertions(+), 1358 deletions(-) diff --git a/mavlink/ardupilotmega/enum.MavMessage.html b/mavlink/ardupilotmega/enum.MavMessage.html index befd9edf25..466a726d71 100644 --- a/mavlink/ardupilotmega/enum.MavMessage.html +++ b/mavlink/ardupilotmega/enum.MavMessage.html @@ -1,301 +1,301 @@ MavMessage in mavlink::ardupilotmega - Rust

Enum mavlink::ardupilotmega::MavMessage

source ·
#[repr(u32)]
pub enum MavMessage { -
Show 296 variants LOGGING_ACK(LOGGING_ACK_DATA), - GENERATOR_STATUS(GENERATOR_STATUS_DATA), - VIDEO_STREAM_STATUS(VIDEO_STREAM_STATUS_DATA), - SET_HOME_POSITION(SET_HOME_POSITION_DATA), - LOG_REQUEST_LIST(LOG_REQUEST_LIST_DATA), - VFR_HUD(VFR_HUD_DATA), - HIL_ACTUATOR_CONTROLS(HIL_ACTUATOR_CONTROLS_DATA), - GLOBAL_VISION_POSITION_ESTIMATE(GLOBAL_VISION_POSITION_ESTIMATE_DATA), - UAVCAN_NODE_INFO(UAVCAN_NODE_INFO_DATA), - FENCE_POINT(FENCE_POINT_DATA), - MISSION_REQUEST(MISSION_REQUEST_DATA), - DATA64(DATA64_DATA), - GIMBAL_TORQUE_CMD_REPORT(GIMBAL_TORQUE_CMD_REPORT_DATA), - SYS_STATUS(SYS_STATUS_DATA), - MCU_STATUS(MCU_STATUS_DATA), - HIL_RC_INPUTS_RAW(HIL_RC_INPUTS_RAW_DATA), - PARAM_REQUEST_LIST(PARAM_REQUEST_LIST_DATA), +
Show 296 variants HEARTBEAT(HEARTBEAT_DATA), + MISSION_ITEM_REACHED(MISSION_ITEM_REACHED_DATA), OSD_PARAM_SHOW_CONFIG(OSD_PARAM_SHOW_CONFIG_DATA), - POSITION_TARGET_GLOBAL_INT(POSITION_TARGET_GLOBAL_INT_DATA), - NAMED_VALUE_INT(NAMED_VALUE_INT_DATA), - CONTROL_SYSTEM_STATE(CONTROL_SYSTEM_STATE_DATA), - FLIGHT_INFORMATION(FLIGHT_INFORMATION_DATA), - UAVIONIX_ADSB_OUT_CFG(UAVIONIX_ADSB_OUT_CFG_DATA), - PLAY_TUNE_V2(PLAY_TUNE_V2_DATA), - MANUAL_CONTROL(MANUAL_CONTROL_DATA), - ADAP_TUNING(ADAP_TUNING_DATA), - LOG_REQUEST_DATA(LOG_REQUEST_DATA_DATA), - HIL_SENSOR(HIL_SENSOR_DATA), - PARAM_EXT_REQUEST_READ(PARAM_EXT_REQUEST_READ_DATA), - PARAM_EXT_VALUE(PARAM_EXT_VALUE_DATA), - ICAROUS_KINEMATIC_BANDS(ICAROUS_KINEMATIC_BANDS_DATA), - LIMITS_STATUS(LIMITS_STATUS_DATA), - WIND(WIND_DATA), - CAMERA_TRACKING_GEO_STATUS(CAMERA_TRACKING_GEO_STATUS_DATA), - GPS2_RTK(GPS2_RTK_DATA), - HERELINK_TELEM(HERELINK_TELEM_DATA), - GIMBAL_REPORT(GIMBAL_REPORT_DATA), - COLLISION(COLLISION_DATA), - HEARTBEAT(HEARTBEAT_DATA), - ESC_TELEMETRY_1_TO_4(ESC_TELEMETRY_1_TO_4_DATA), - RESPONSE_EVENT_ERROR(RESPONSE_EVENT_ERROR_DATA), - SAFETY_SET_ALLOWED_AREA(SAFETY_SET_ALLOWED_AREA_DATA), - LOG_DATA(LOG_DATA_DATA), + TIMESYNC(TIMESYNC_DATA), + GOPRO_GET_REQUEST(GOPRO_GET_REQUEST_DATA), + TRAJECTORY_REPRESENTATION_WAYPOINTS(TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA), + POSITION_TARGET_LOCAL_NED(POSITION_TARGET_LOCAL_NED_DATA), LOCAL_POSITION_NED(LOCAL_POSITION_NED_DATA), + TIME_ESTIMATE_TO_TARGET(TIME_ESTIMATE_TO_TARGET_DATA), + SUPPORTED_TUNES(SUPPORTED_TUNES_DATA), + VFR_HUD(VFR_HUD_DATA), + POSITION_TARGET_GLOBAL_INT(POSITION_TARGET_GLOBAL_INT_DATA), + EFI_STATUS(EFI_STATUS_DATA), ALTITUDE(ALTITUDE_DATA), - GIMBAL_MANAGER_SET_ATTITUDE(GIMBAL_MANAGER_SET_ATTITUDE_DATA), - GPS2_RAW(GPS2_RAW_DATA), - SET_POSITION_TARGET_LOCAL_NED(SET_POSITION_TARGET_LOCAL_NED_DATA), + RAW_PRESSURE(RAW_PRESSURE_DATA), + OBSTACLE_DISTANCE(OBSTACLE_DISTANCE_DATA), + LINK_NODE_STATUS(LINK_NODE_STATUS_DATA), + AIRSPEED_AUTOCAL(AIRSPEED_AUTOCAL_DATA), SET_GPS_GLOBAL_ORIGIN(SET_GPS_GLOBAL_ORIGIN_DATA), + RADIO_STATUS(RADIO_STATUS_DATA), + LOGGING_DATA(LOGGING_DATA_DATA), + HOME_POSITION(HOME_POSITION_DATA), + WHEEL_DISTANCE(WHEEL_DISTANCE_DATA), + GIMBAL_MANAGER_SET_MANUAL_CONTROL(GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA), + FILE_TRANSFER_PROTOCOL(FILE_TRANSFER_PROTOCOL_DATA), + MISSION_REQUEST_PARTIAL_LIST(MISSION_REQUEST_PARTIAL_LIST_DATA), + RC_CHANNELS_RAW(RC_CHANNELS_RAW_DATA), + ACTUATOR_CONTROL_TARGET(ACTUATOR_CONTROL_TARGET_DATA), + FOLLOW_TARGET(FOLLOW_TARGET_DATA), + CANFD_FRAME(CANFD_FRAME_DATA), + VIDEO_STREAM_STATUS(VIDEO_STREAM_STATUS_DATA), + PARAM_SET(PARAM_SET_DATA), + SYS_STATUS(SYS_STATUS_DATA), + ADSB_VEHICLE(ADSB_VEHICLE_DATA), + WIND_COV(WIND_COV_DATA), + ESTIMATOR_STATUS(ESTIMATOR_STATUS_DATA), + OPEN_DRONE_ID_SYSTEM_UPDATE(OPEN_DRONE_ID_SYSTEM_UPDATE_DATA), + UAVIONIX_ADSB_OUT_CFG(UAVIONIX_ADSB_OUT_CFG_DATA), + FENCE_STATUS(FENCE_STATUS_DATA), + AUTOPILOT_VERSION_REQUEST(AUTOPILOT_VERSION_REQUEST_DATA), + DATA16(DATA16_DATA), + MANUAL_SETPOINT(MANUAL_SETPOINT_DATA), + POWER_STATUS(POWER_STATUS_DATA), + SET_ACTUATOR_CONTROL_TARGET(SET_ACTUATOR_CONTROL_TARGET_DATA), + HWSTATUS(HWSTATUS_DATA), + SET_POSITION_TARGET_LOCAL_NED(SET_POSITION_TARGET_LOCAL_NED_DATA), + CAMERA_IMAGE_CAPTURED(CAMERA_IMAGE_CAPTURED_DATA), + CAMERA_STATUS(CAMERA_STATUS_DATA), + SCALED_IMU2(SCALED_IMU2_DATA), PARAM_VALUE(PARAM_VALUE_DATA), - OPTICAL_FLOW(OPTICAL_FLOW_DATA), - RC_CHANNELS(RC_CHANNELS_DATA), - PARAM_EXT_REQUEST_LIST(PARAM_EXT_REQUEST_LIST_DATA), - OPEN_DRONE_ID_BASIC_ID(OPEN_DRONE_ID_BASIC_ID_DATA), - LOCAL_POSITION_NED_COV(LOCAL_POSITION_NED_COV_DATA), TERRAIN_REQUEST(TERRAIN_REQUEST_DATA), + WIND(WIND_DATA), DATA_TRANSMISSION_HANDSHAKE(DATA_TRANSMISSION_HANDSHAKE_DATA), - AHRS(AHRS_DATA), - OPEN_DRONE_ID_SYSTEM(OPEN_DRONE_ID_SYSTEM_DATA), - LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET(LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA), - MISSION_REQUEST_LIST(MISSION_REQUEST_LIST_DATA), - CAMERA_TRACKING_IMAGE_STATUS(CAMERA_TRACKING_IMAGE_STATUS_DATA), - POSITION_TARGET_LOCAL_NED(POSITION_TARGET_LOCAL_NED_DATA), - PING(PING_DATA), - PARAM_EXT_SET(PARAM_EXT_SET_DATA), + TUNNEL(TUNNEL_DATA), + HIL_ACTUATOR_CONTROLS(HIL_ACTUATOR_CONTROLS_DATA), + UAVCAN_NODE_STATUS(UAVCAN_NODE_STATUS_DATA), + GPS_RTK(GPS_RTK_DATA), + HYGROMETER_SENSOR(HYGROMETER_SENSOR_DATA), + COMPASSMOT_STATUS(COMPASSMOT_STATUS_DATA), + EXTENDED_SYS_STATE(EXTENDED_SYS_STATE_DATA), GIMBAL_DEVICE_INFORMATION(GIMBAL_DEVICE_INFORMATION_DATA), - AUTOPILOT_STATE_FOR_GIMBAL_DEVICE(AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA), - GIMBAL_CONTROL(GIMBAL_CONTROL_DATA), - EKF_STATUS_REPORT(EKF_STATUS_REPORT_DATA), - OSD_PARAM_SHOW_CONFIG_REPLY(OSD_PARAM_SHOW_CONFIG_REPLY_DATA), - SET_MAG_OFFSETS(SET_MAG_OFFSETS_DATA), - GIMBAL_DEVICE_SET_ATTITUDE(GIMBAL_DEVICE_SET_ATTITUDE_DATA), + PLAY_TUNE_V2(PLAY_TUNE_V2_DATA), + OPEN_DRONE_ID_ARM_STATUS(OPEN_DRONE_ID_ARM_STATUS_DATA), + SCALED_PRESSURE2(SCALED_PRESSURE2_DATA), + DATA96(DATA96_DATA), + FLIGHT_INFORMATION(FLIGHT_INFORMATION_DATA), + REMOTE_LOG_DATA_BLOCK(REMOTE_LOG_DATA_BLOCK_DATA), + ACTUATOR_OUTPUT_STATUS(ACTUATOR_OUTPUT_STATUS_DATA), + AHRS(AHRS_DATA), + DEBUG_VECT(DEBUG_VECT_DATA), + UTM_GLOBAL_POSITION(UTM_GLOBAL_POSITION_DATA), + MISSION_ITEM_INT(MISSION_ITEM_INT_DATA), + CAN_FILTER_MODIFY(CAN_FILTER_MODIFY_DATA), DEVICE_OP_READ_REPLY(DEVICE_OP_READ_REPLY_DATA), - GOPRO_SET_REQUEST(GOPRO_SET_REQUEST_DATA), - GIMBAL_MANAGER_INFORMATION(GIMBAL_MANAGER_INFORMATION_DATA), - ORBIT_EXECUTION_STATUS(ORBIT_EXECUTION_STATUS_DATA), - DATA16(DATA16_DATA), - COMPONENT_METADATA(COMPONENT_METADATA_DATA), - POWER_STATUS(POWER_STATUS_DATA), - RESOURCE_REQUEST(RESOURCE_REQUEST_DATA), - SET_ATTITUDE_TARGET(SET_ATTITUDE_TARGET_DATA), - COMMAND_ACK(COMMAND_ACK_DATA), - LOG_ENTRY(LOG_ENTRY_DATA), - EVENT(EVENT_DATA), - HWSTATUS(HWSTATUS_DATA), - CELLULAR_STATUS(CELLULAR_STATUS_DATA), - LOGGING_DATA(LOGGING_DATA_DATA), - HIL_GPS(HIL_GPS_DATA), - CAN_FRAME(CAN_FRAME_DATA), - CAMERA_IMAGE_CAPTURED(CAMERA_IMAGE_CAPTURED_DATA), - V2_EXTENSION(V2_EXTENSION_DATA), - SAFETY_ALLOWED_AREA(SAFETY_ALLOWED_AREA_DATA), + ADAP_TUNING(ADAP_TUNING_DATA), + SET_POSITION_TARGET_GLOBAL_INT(SET_POSITION_TARGET_GLOBAL_INT_DATA), PROTOCOL_VERSION(PROTOCOL_VERSION_DATA), - RAW_IMU(RAW_IMU_DATA), - CAMERA_INFORMATION(CAMERA_INFORMATION_DATA), - OPEN_DRONE_ID_SYSTEM_UPDATE(OPEN_DRONE_ID_SYSTEM_UPDATE_DATA), - REQUEST_DATA_STREAM(REQUEST_DATA_STREAM_DATA), - OPEN_DRONE_ID_SELF_ID(OPEN_DRONE_ID_SELF_ID_DATA), - OPEN_DRONE_ID_AUTHENTICATION(OPEN_DRONE_ID_AUTHENTICATION_DATA), + HIL_GPS(HIL_GPS_DATA), + SCALED_IMU(SCALED_IMU_DATA), + UAVIONIX_ADSB_OUT_DYNAMIC(UAVIONIX_ADSB_OUT_DYNAMIC_DATA), + COMMAND_CANCEL(COMMAND_CANCEL_DATA), + MOUNT_CONFIGURE(MOUNT_CONFIGURE_DATA), + LOGGING_ACK(LOGGING_ACK_DATA), ATT_POS_MOCAP(ATT_POS_MOCAP_DATA), - HOME_POSITION(HOME_POSITION_DATA), - COMMAND_INT(COMMAND_INT_DATA), - CAMERA_CAPTURE_STATUS(CAMERA_CAPTURE_STATUS_DATA), - RAW_PRESSURE(RAW_PRESSURE_DATA), - MISSION_ACK(MISSION_ACK_DATA), - GIMBAL_DEVICE_ATTITUDE_STATUS(GIMBAL_DEVICE_ATTITUDE_STATUS_DATA), - MANUAL_SETPOINT(MANUAL_SETPOINT_DATA), + PARAM_EXT_REQUEST_READ(PARAM_EXT_REQUEST_READ_DATA), + CAMERA_TRACKING_IMAGE_STATUS(CAMERA_TRACKING_IMAGE_STATUS_DATA), + EKF_STATUS_REPORT(EKF_STATUS_REPORT_DATA), + OBSTACLE_DISTANCE_3D(OBSTACLE_DISTANCE_3D_DATA), + TERRAIN_DATA(TERRAIN_DATA_DATA), + PARAM_REQUEST_LIST(PARAM_REQUEST_LIST_DATA), RPM(RPM_DATA), - WATER_DEPTH(WATER_DEPTH_DATA), - REQUEST_EVENT(REQUEST_EVENT_DATA), - DEBUG_VECT(DEBUG_VECT_DATA), - REMOTE_LOG_BLOCK_STATUS(REMOTE_LOG_BLOCK_STATUS_DATA), MISSION_REQUEST_INT(MISSION_REQUEST_INT_DATA), - NAMED_VALUE_FLOAT(NAMED_VALUE_FLOAT_DATA), - NAV_CONTROLLER_OUTPUT(NAV_CONTROLLER_OUTPUT_DATA), - AUTOPILOT_VERSION_REQUEST(AUTOPILOT_VERSION_REQUEST_DATA), - HIL_STATE(HIL_STATE_DATA), - LOG_REQUEST_END(LOG_REQUEST_END_DATA), - REMOTE_LOG_DATA_BLOCK(REMOTE_LOG_DATA_BLOCK_DATA), - PARAM_MAP_RC(PARAM_MAP_RC_DATA), - DEBUG_FLOAT_ARRAY(DEBUG_FLOAT_ARRAY_DATA), + CELLULAR_CONFIG(CELLULAR_CONFIG_DATA), + SENSOR_OFFSETS(SENSOR_OFFSETS_DATA), AHRS3(AHRS3_DATA), - OPEN_DRONE_ID_ARM_STATUS(OPEN_DRONE_ID_ARM_STATUS_DATA), - OBSTACLE_DISTANCE_3D(OBSTACLE_DISTANCE_3D_DATA), - SUPPORTED_TUNES(SUPPORTED_TUNES_DATA), - SIMSTATE(SIMSTATE_DATA), - CANFD_FRAME(CANFD_FRAME_DATA), - MISSION_COUNT(MISSION_COUNT_DATA), - AUTOPILOT_VERSION(AUTOPILOT_VERSION_DATA), - OPEN_DRONE_ID_MESSAGE_PACK(OPEN_DRONE_ID_MESSAGE_PACK_DATA), - LOGGING_DATA_ACKED(LOGGING_DATA_ACKED_DATA), - GPS_GLOBAL_ORIGIN(GPS_GLOBAL_ORIGIN_DATA), - GIMBAL_MANAGER_STATUS(GIMBAL_MANAGER_STATUS_DATA), - MISSION_ITEM(MISSION_ITEM_DATA), - CUBEPILOT_FIRMWARE_UPDATE_START(CUBEPILOT_FIRMWARE_UPDATE_START_DATA), - AP_ADC(AP_ADC_DATA), - LINK_NODE_STATUS(LINK_NODE_STATUS_DATA), - PARAM_EXT_ACK(PARAM_EXT_ACK_DATA), + LOG_REQUEST_LIST(LOG_REQUEST_LIST_DATA), + DIGICAM_CONFIGURE(DIGICAM_CONFIGURE_DATA), + GPS2_RAW(GPS2_RAW_DATA), + OPEN_DRONE_ID_SELF_ID(OPEN_DRONE_ID_SELF_ID_DATA), + AHRS2(AHRS2_DATA), VICON_POSITION_ESTIMATE(VICON_POSITION_ESTIMATE_DATA), - CAMERA_FOV_STATUS(CAMERA_FOV_STATUS_DATA), - TERRAIN_REPORT(TERRAIN_REPORT_DATA), - ACTUATOR_OUTPUT_STATUS(ACTUATOR_OUTPUT_STATUS_DATA), - MESSAGE_INTERVAL(MESSAGE_INTERVAL_DATA), - ONBOARD_COMPUTER_STATUS(ONBOARD_COMPUTER_STATUS_DATA), - UAVIONIX_ADSB_OUT_DYNAMIC(UAVIONIX_ADSB_OUT_DYNAMIC_DATA), - HERELINK_VIDEO_STREAM_INFORMATION(HERELINK_VIDEO_STREAM_INFORMATION_DATA), - RALLY_POINT(RALLY_POINT_DATA), - UAVCAN_NODE_STATUS(UAVCAN_NODE_STATUS_DATA), - COMPASSMOT_STATUS(COMPASSMOT_STATUS_DATA), - CAMERA_FEEDBACK(CAMERA_FEEDBACK_DATA), - RALLY_FETCH_POINT(RALLY_FETCH_POINT_DATA), - HIGH_LATENCY2(HIGH_LATENCY2_DATA), - GOPRO_HEARTBEAT(GOPRO_HEARTBEAT_DATA), - MEMORY_VECT(MEMORY_VECT_DATA), - CUBEPILOT_FIRMWARE_UPDATE_RESP(CUBEPILOT_FIRMWARE_UPDATE_RESP_DATA), - SET_POSITION_TARGET_GLOBAL_INT(SET_POSITION_TARGET_GLOBAL_INT_DATA), - MISSION_ITEM_INT(MISSION_ITEM_INT_DATA), - SETUP_SIGNING(SETUP_SIGNING_DATA), - TERRAIN_DATA(TERRAIN_DATA_DATA), CHANGE_OPERATOR_CONTROL(CHANGE_OPERATOR_CONTROL_DATA), + RC_CHANNELS_OVERRIDE(RC_CHANNELS_OVERRIDE_DATA), MISSION_WRITE_PARTIAL_LIST(MISSION_WRITE_PARTIAL_LIST_DATA), - SERIAL_CONTROL(SERIAL_CONTROL_DATA), - CUBEPILOT_RAW_RC(CUBEPILOT_RAW_RC_DATA), - FENCE_FETCH_POINT(FENCE_FETCH_POINT_DATA), - GOPRO_SET_RESPONSE(GOPRO_SET_RESPONSE_DATA), CAMERA_TRIGGER(CAMERA_TRIGGER_DATA), - VISION_POSITION_DELTA(VISION_POSITION_DELTA_DATA), + MISSION_REQUEST_LIST(MISSION_REQUEST_LIST_DATA), + DATA32(DATA32_DATA), + CAMERA_CAPTURE_STATUS(CAMERA_CAPTURE_STATUS_DATA), + TERRAIN_CHECK(TERRAIN_CHECK_DATA), + ICAROUS_KINEMATIC_BANDS(ICAROUS_KINEMATIC_BANDS_DATA), + CHANGE_OPERATOR_CONTROL_ACK(CHANGE_OPERATOR_CONTROL_ACK_DATA), + ORBIT_EXECUTION_STATUS(ORBIT_EXECUTION_STATUS_DATA), + DEVICE_OP_WRITE(DEVICE_OP_WRITE_DATA), OPEN_DRONE_ID_LOCATION(OPEN_DRONE_ID_LOCATION_DATA), - GOPRO_GET_RESPONSE(GOPRO_GET_RESPONSE_DATA), - SCALED_PRESSURE3(SCALED_PRESSURE3_DATA), + LANDING_TARGET(LANDING_TARGET_DATA), + BATTERY_STATUS(BATTERY_STATUS_DATA), + GOPRO_SET_RESPONSE(GOPRO_SET_RESPONSE_DATA), + EVENT(EVENT_DATA), + GIMBAL_MANAGER_SET_PITCHYAW(GIMBAL_MANAGER_SET_PITCHYAW_DATA), SMART_BATTERY_INFO(SMART_BATTERY_INFO_DATA), - OPEN_DRONE_ID_OPERATOR_ID(OPEN_DRONE_ID_OPERATOR_ID_DATA), - ESC_INFO(ESC_INFO_DATA), - STORAGE_INFORMATION(STORAGE_INFORMATION_DATA), - RADIO_STATUS(RADIO_STATUS_DATA), - WHEEL_DISTANCE(WHEEL_DISTANCE_DATA), - FILE_TRANSFER_PROTOCOL(FILE_TRANSFER_PROTOCOL_DATA), - DEVICE_OP_READ(DEVICE_OP_READ_DATA), - MOUNT_CONTROL(MOUNT_CONTROL_DATA), - BATTERY2(BATTERY2_DATA), + ATTITUDE_QUATERNION(ATTITUDE_QUATERNION_DATA), + SET_ATTITUDE_TARGET(SET_ATTITUDE_TARGET_DATA), + MANUAL_CONTROL(MANUAL_CONTROL_DATA), + RALLY_FETCH_POINT(RALLY_FETCH_POINT_DATA), + VISION_POSITION_ESTIMATE(VISION_POSITION_ESTIMATE_DATA), + RALLY_POINT(RALLY_POINT_DATA), + VIDEO_STREAM_INFORMATION(VIDEO_STREAM_INFORMATION_DATA), + OPEN_DRONE_ID_BASIC_ID(OPEN_DRONE_ID_BASIC_ID_DATA), + ENCAPSULATED_DATA(ENCAPSULATED_DATA_DATA), + DEVICE_OP_WRITE_REPLY(DEVICE_OP_WRITE_REPLY_DATA), + PING(PING_DATA), + SET_MAG_OFFSETS(SET_MAG_OFFSETS_DATA), + GPS_INPUT(GPS_INPUT_DATA), + LOG_ENTRY(LOG_ENTRY_DATA), + RAW_IMU(RAW_IMU_DATA), + GPS_RAW_INT(GPS_RAW_INT_DATA), + CONTROL_SYSTEM_STATE(CONTROL_SYSTEM_STATE_DATA), + DEBUG(DEBUG_DATA), + ESC_TELEMETRY_1_TO_4(ESC_TELEMETRY_1_TO_4_DATA), + MOUNT_CONTROL(MOUNT_CONTROL_DATA), + COMPONENT_METADATA(COMPONENT_METADATA_DATA), + NAMED_VALUE_FLOAT(NAMED_VALUE_FLOAT_DATA), + GPS2_RTK(GPS2_RTK_DATA), + VIBRATION(VIBRATION_DATA), + MISSION_CURRENT(MISSION_CURRENT_DATA), + HERELINK_TELEM(HERELINK_TELEM_DATA), + PARAM_EXT_ACK(PARAM_EXT_ACK_DATA), + MISSION_REQUEST(MISSION_REQUEST_DATA), + MEMINFO(MEMINFO_DATA), + LED_CONTROL(LED_CONTROL_DATA), + MISSION_ITEM(MISSION_ITEM_DATA), + GPS_RTCM_DATA(GPS_RTCM_DATA_DATA), OPTICAL_FLOW_RAD(OPTICAL_FLOW_RAD_DATA), - ESC_TELEMETRY_9_TO_12(ESC_TELEMETRY_9_TO_12_DATA), + VISION_SPEED_ESTIMATE(VISION_SPEED_ESTIMATE_DATA), + TERRAIN_REPORT(TERRAIN_REPORT_DATA), + V2_EXTENSION(V2_EXTENSION_DATA), + CAN_FRAME(CAN_FRAME_DATA), + REQUEST_EVENT(REQUEST_EVENT_DATA), + OSD_PARAM_CONFIG(OSD_PARAM_CONFIG_DATA), + AUTOPILOT_STATE_FOR_GIMBAL_DEVICE(AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA), + ATTITUDE(ATTITUDE_DATA), + UAVCAN_NODE_INFO(UAVCAN_NODE_INFO_DATA), HIL_OPTICAL_FLOW(HIL_OPTICAL_FLOW_DATA), - SIM_STATE(SIM_STATE_DATA), - VIDEO_STREAM_INFORMATION(VIDEO_STREAM_INFORMATION_DATA), + MEMORY_VECT(MEMORY_VECT_DATA), + SAFETY_SET_ALLOWED_AREA(SAFETY_SET_ALLOWED_AREA_DATA), + GIMBAL_MANAGER_STATUS(GIMBAL_MANAGER_STATUS_DATA), + GLOBAL_VISION_POSITION_ESTIMATE(GLOBAL_VISION_POSITION_ESTIMATE_DATA), + AUTH_KEY(AUTH_KEY_DATA), + COMMAND_ACK(COMMAND_ACK_DATA), + DIGICAM_CONTROL(DIGICAM_CONTROL_DATA), + FENCE_FETCH_POINT(FENCE_FETCH_POINT_DATA), + ESC_TELEMETRY_9_TO_12(ESC_TELEMETRY_9_TO_12_DATA), + SERIAL_CONTROL(SERIAL_CONTROL_DATA), + MCU_STATUS(MCU_STATUS_DATA), + COMMAND_INT(COMMAND_INT_DATA), + RAW_RPM(RAW_RPM_DATA), + OPEN_DRONE_ID_OPERATOR_ID(OPEN_DRONE_ID_OPERATOR_ID_DATA), + DATA_STREAM(DATA_STREAM_DATA), + MISSION_COUNT(MISSION_COUNT_DATA), + SCALED_IMU3(SCALED_IMU3_DATA), + DEBUG_FLOAT_ARRAY(DEBUG_FLOAT_ARRAY_DATA), + GIMBAL_MANAGER_INFORMATION(GIMBAL_MANAGER_INFORMATION_DATA), + HIGH_LATENCY2(HIGH_LATENCY2_DATA), + PLAY_TUNE(PLAY_TUNE_DATA), + AOA_SSA(AOA_SSA_DATA), + LOCAL_POSITION_NED_COV(LOCAL_POSITION_NED_COV_DATA), + MISSION_ACK(MISSION_ACK_DATA), + LIMITS_STATUS(LIMITS_STATUS_DATA), COMPONENT_INFORMATION(COMPONENT_INFORMATION_DATA), - LOG_ERASE(LOG_ERASE_DATA), + GIMBAL_TORQUE_CMD_REPORT(GIMBAL_TORQUE_CMD_REPORT_DATA), + MOUNT_STATUS(MOUNT_STATUS_DATA), + SIM_STATE(SIM_STATE_DATA), + MISSION_SET_CURRENT(MISSION_SET_CURRENT_DATA), + PARAM_EXT_SET(PARAM_EXT_SET_DATA), + ISBD_LINK_STATUS(ISBD_LINK_STATUS_DATA), + RC_CHANNELS(RC_CHANNELS_DATA), + CUBEPILOT_FIRMWARE_UPDATE_RESP(CUBEPILOT_FIRMWARE_UPDATE_RESP_DATA), + SIMSTATE(SIMSTATE_DATA), + CAMERA_TRACKING_GEO_STATUS(CAMERA_TRACKING_GEO_STATUS_DATA), + ESC_STATUS(ESC_STATUS_DATA), + CUBEPILOT_RAW_RC(CUBEPILOT_RAW_RC_DATA), + HIGHRES_IMU(HIGHRES_IMU_DATA), + NAV_CONTROLLER_OUTPUT(NAV_CONTROLLER_OUTPUT_DATA), + OPEN_DRONE_ID_AUTHENTICATION(OPEN_DRONE_ID_AUTHENTICATION_DATA), + LOGGING_DATA_ACKED(LOGGING_DATA_ACKED_DATA), + ICAROUS_HEARTBEAT(ICAROUS_HEARTBEAT_DATA), + FENCE_POINT(FENCE_POINT_DATA), + OSD_PARAM_SHOW_CONFIG_REPLY(OSD_PARAM_SHOW_CONFIG_REPLY_DATA), + ATTITUDE_TARGET(ATTITUDE_TARGET_DATA), + LOG_REQUEST_DATA(LOG_REQUEST_DATA_DATA), + GIMBAL_REPORT(GIMBAL_REPORT_DATA), + PARAM_EXT_VALUE(PARAM_EXT_VALUE_DATA), SERVO_OUTPUT_RAW(SERVO_OUTPUT_RAW_DATA), - HYGROMETER_SENSOR(HYGROMETER_SENSOR_DATA), - DIGICAM_CONTROL(DIGICAM_CONTROL_DATA), - ENCAPSULATED_DATA(ENCAPSULATED_DATA_DATA), + ESC_INFO(ESC_INFO_DATA), + OPEN_DRONE_ID_SYSTEM(OPEN_DRONE_ID_SYSTEM_DATA), + UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT(UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA), + HIGH_LATENCY(HIGH_LATENCY_DATA), + PID_TUNING(PID_TUNING_DATA), + RANGEFINDER(RANGEFINDER_DATA), + GIMBAL_DEVICE_SET_ATTITUDE(GIMBAL_DEVICE_SET_ATTITUDE_DATA), + VISION_POSITION_DELTA(VISION_POSITION_DELTA_DATA), + CAMERA_FEEDBACK(CAMERA_FEEDBACK_DATA), + BUTTON_CHANGE(BUTTON_CHANGE_DATA), + DEEPSTALL(DEEPSTALL_DATA), + ONBOARD_COMPUTER_STATUS(ONBOARD_COMPUTER_STATUS_DATA), + GOPRO_GET_RESPONSE(GOPRO_GET_RESPONSE_DATA), + GIMBAL_DEVICE_ATTITUDE_STATUS(GIMBAL_DEVICE_ATTITUDE_STATUS_DATA), + PARAM_EXT_REQUEST_LIST(PARAM_EXT_REQUEST_LIST_DATA), + OSD_PARAM_CONFIG_REPLY(OSD_PARAM_CONFIG_REPLY_DATA), + HIL_STATE_QUATERNION(HIL_STATE_QUATERNION_DATA), + CAMERA_SETTINGS(CAMERA_SETTINGS_DATA), + CURRENT_EVENT_SEQUENCE(CURRENT_EVENT_SEQUENCE_DATA), + RESOURCE_REQUEST(RESOURCE_REQUEST_DATA), + LOG_DATA(LOG_DATA_DATA), + ATTITUDE_QUATERNION_COV(ATTITUDE_QUATERNION_COV_DATA), + TRAJECTORY_REPRESENTATION_BEZIER(TRAJECTORY_REPRESENTATION_BEZIER_DATA), + SAFETY_ALLOWED_AREA(SAFETY_ALLOWED_AREA_DATA), + STATUSTEXT(STATUSTEXT_DATA), + RADIO(RADIO_DATA), + CELLULAR_STATUS(CELLULAR_STATUS_DATA), + DEVICE_OP_READ(DEVICE_OP_READ_DATA), WIFI_CONFIG_AP(WIFI_CONFIG_AP_DATA), - SET_ACTUATOR_CONTROL_TARGET(SET_ACTUATOR_CONTROL_TARGET_DATA), + GENERATOR_STATUS(GENERATOR_STATUS_DATA), + NAMED_VALUE_INT(NAMED_VALUE_INT_DATA), + HIL_CONTROLS(HIL_CONTROLS_DATA), + AUTOPILOT_VERSION(AUTOPILOT_VERSION_DATA), + AP_ADC(AP_ADC_DATA), + HIL_STATE(HIL_STATE_DATA), + PARAM_MAP_RC(PARAM_MAP_RC_DATA), + MAG_CAL_PROGRESS(MAG_CAL_PROGRESS_DATA), + GIMBAL_CONTROL(GIMBAL_CONTROL_DATA), + DISTANCE_SENSOR(DISTANCE_SENSOR_DATA), SYSTEM_TIME(SYSTEM_TIME_DATA), - ISBD_LINK_STATUS(ISBD_LINK_STATUS_DATA), - PLAY_TUNE(PLAY_TUNE_DATA), - ATTITUDE(ATTITUDE_DATA), + COMMAND_LONG(COMMAND_LONG_DATA), + GPS_INJECT_DATA(GPS_INJECT_DATA_DATA), + OPTICAL_FLOW(OPTICAL_FLOW_DATA), + GOPRO_HEARTBEAT(GOPRO_HEARTBEAT_DATA), MAG_CAL_REPORT(MAG_CAL_REPORT_DATA), - UTM_GLOBAL_POSITION(UTM_GLOBAL_POSITION_DATA), - LANDING_TARGET(LANDING_TARGET_DATA), - MISSION_REQUEST_PARTIAL_LIST(MISSION_REQUEST_PARTIAL_LIST_DATA), - RANGEFINDER(RANGEFINDER_DATA), - MAG_CAL_PROGRESS(MAG_CAL_PROGRESS_DATA), - PID_TUNING(PID_TUNING_DATA), - COMMAND_CANCEL(COMMAND_CANCEL_DATA), - DEVICE_OP_WRITE(DEVICE_OP_WRITE_DATA), - SCALED_IMU(SCALED_IMU_DATA), + MESSAGE_INTERVAL(MESSAGE_INTERVAL_DATA), + WINCH_STATUS(WINCH_STATUS_DATA), + GPS_GLOBAL_ORIGIN(GPS_GLOBAL_ORIGIN_DATA), + MOUNT_ORIENTATION(MOUNT_ORIENTATION_DATA), + ODOMETRY(ODOMETRY_DATA), + SETUP_SIGNING(SETUP_SIGNING_DATA), + LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET(LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA), + MISSION_CLEAR_ALL(MISSION_CLEAR_ALL_DATA), + OPEN_DRONE_ID_MESSAGE_PACK(OPEN_DRONE_ID_MESSAGE_PACK_DATA), + DATA64(DATA64_DATA), + REMOTE_LOG_BLOCK_STATUS(REMOTE_LOG_BLOCK_STATUS_DATA), + GOPRO_SET_REQUEST(GOPRO_SET_REQUEST_DATA), + SCALED_PRESSURE3(SCALED_PRESSURE3_DATA), + REQUEST_DATA_STREAM(REQUEST_DATA_STREAM_DATA), + LOG_REQUEST_END(LOG_REQUEST_END_DATA), + STORAGE_INFORMATION(STORAGE_INFORMATION_DATA), + HIL_SENSOR(HIL_SENSOR_DATA), + AIS_VESSEL(AIS_VESSEL_DATA), + CUBEPILOT_FIRMWARE_UPDATE_START(CUBEPILOT_FIRMWARE_UPDATE_START_DATA), + BATTERY2(BATTERY2_DATA), + GLOBAL_POSITION_INT(GLOBAL_POSITION_INT_DATA), RC_CHANNELS_SCALED(RC_CHANNELS_SCALED_DATA), - VIBRATION(VIBRATION_DATA), - DEVICE_OP_WRITE_REPLY(DEVICE_OP_WRITE_REPLY_DATA), - OSD_PARAM_CONFIG(OSD_PARAM_CONFIG_DATA), + COLLISION(COLLISION_DATA), + WATER_DEPTH(WATER_DEPTH_DATA), ESC_TELEMETRY_5_TO_8(ESC_TELEMETRY_5_TO_8_DATA), + HERELINK_VIDEO_STREAM_INFORMATION(HERELINK_VIDEO_STREAM_INFORMATION_DATA), + LOG_ERASE(LOG_ERASE_DATA), + SET_HOME_POSITION(SET_HOME_POSITION_DATA), + CAMERA_FOV_STATUS(CAMERA_FOV_STATUS_DATA), + SCALED_PRESSURE(SCALED_PRESSURE_DATA), PARAM_REQUEST_READ(PARAM_REQUEST_READ_DATA), - ATTITUDE_TARGET(ATTITUDE_TARGET_DATA), - ESC_STATUS(ESC_STATUS_DATA), - CURRENT_EVENT_SEQUENCE(CURRENT_EVENT_SEQUENCE_DATA), - CAMERA_SETTINGS(CAMERA_SETTINGS_DATA), + HIL_RC_INPUTS_RAW(HIL_RC_INPUTS_RAW_DATA), SET_MODE(SET_MODE_DATA), - GPS_INJECT_DATA(GPS_INJECT_DATA_DATA), - GIMBAL_MANAGER_SET_PITCHYAW(GIMBAL_MANAGER_SET_PITCHYAW_DATA), - GOPRO_GET_REQUEST(GOPRO_GET_REQUEST_DATA), + GIMBAL_MANAGER_SET_ATTITUDE(GIMBAL_MANAGER_SET_ATTITUDE_DATA), + CAMERA_INFORMATION(CAMERA_INFORMATION_DATA), GLOBAL_POSITION_INT_COV(GLOBAL_POSITION_INT_COV_DATA), - MOUNT_CONFIGURE(MOUNT_CONFIGURE_DATA), - WINCH_STATUS(WINCH_STATUS_DATA), - TIME_ESTIMATE_TO_TARGET(TIME_ESTIMATE_TO_TARGET_DATA), - ESTIMATOR_STATUS(ESTIMATOR_STATUS_DATA), - MISSION_SET_CURRENT(MISSION_SET_CURRENT_DATA), - LED_CONTROL(LED_CONTROL_DATA), - RADIO(RADIO_DATA), - TERRAIN_CHECK(TERRAIN_CHECK_DATA), - MISSION_ITEM_REACHED(MISSION_ITEM_REACHED_DATA), - GPS_RAW_INT(GPS_RAW_INT_DATA), - GIMBAL_MANAGER_SET_MANUAL_CONTROL(GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA), - EFI_STATUS(EFI_STATUS_DATA), - COMMAND_LONG(COMMAND_LONG_DATA), - HIL_STATE_QUATERNION(HIL_STATE_QUATERNION_DATA), - BUTTON_CHANGE(BUTTON_CHANGE_DATA), - TRAJECTORY_REPRESENTATION_WAYPOINTS(TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA), - RAW_RPM(RAW_RPM_DATA), - SCALED_PRESSURE(SCALED_PRESSURE_DATA), - UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT(UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA), - SENSOR_OFFSETS(SENSOR_OFFSETS_DATA), - HIGHRES_IMU(HIGHRES_IMU_DATA), - AHRS2(AHRS2_DATA), - ATTITUDE_QUATERNION_COV(ATTITUDE_QUATERNION_COV_DATA), - MISSION_CURRENT(MISSION_CURRENT_DATA), - AIRSPEED_AUTOCAL(AIRSPEED_AUTOCAL_DATA), - ODOMETRY(ODOMETRY_DATA), - ICAROUS_HEARTBEAT(ICAROUS_HEARTBEAT_DATA), - MEMINFO(MEMINFO_DATA), - EXTENDED_SYS_STATE(EXTENDED_SYS_STATE_DATA), - TRAJECTORY_REPRESENTATION_BEZIER(TRAJECTORY_REPRESENTATION_BEZIER_DATA), - CAMERA_STATUS(CAMERA_STATUS_DATA), - WIND_COV(WIND_COV_DATA), - AIS_VESSEL(AIS_VESSEL_DATA), - GPS_INPUT(GPS_INPUT_DATA), - TIMESYNC(TIMESYNC_DATA), - SCALED_IMU3(SCALED_IMU3_DATA), - ADSB_VEHICLE(ADSB_VEHICLE_DATA), - DEBUG(DEBUG_DATA), - FOLLOW_TARGET(FOLLOW_TARGET_DATA), - VISION_SPEED_ESTIMATE(VISION_SPEED_ESTIMATE_DATA), - DIGICAM_CONFIGURE(DIGICAM_CONFIGURE_DATA), - CHANGE_OPERATOR_CONTROL_ACK(CHANGE_OPERATOR_CONTROL_ACK_DATA), - MOUNT_STATUS(MOUNT_STATUS_DATA), - GPS_RTK(GPS_RTK_DATA), - DATA32(DATA32_DATA), - HIL_CONTROLS(HIL_CONTROLS_DATA), - DATA96(DATA96_DATA), - SCALED_IMU2(SCALED_IMU2_DATA), - DATA_STREAM(DATA_STREAM_DATA), - MOUNT_ORIENTATION(MOUNT_ORIENTATION_DATA), - HIGH_LATENCY(HIGH_LATENCY_DATA), - GLOBAL_POSITION_INT(GLOBAL_POSITION_INT_DATA), - OSD_PARAM_CONFIG_REPLY(OSD_PARAM_CONFIG_REPLY_DATA), - ACTUATOR_CONTROL_TARGET(ACTUATOR_CONTROL_TARGET_DATA), - OBSTACLE_DISTANCE(OBSTACLE_DISTANCE_DATA), - CAN_FILTER_MODIFY(CAN_FILTER_MODIFY_DATA), - VISION_POSITION_ESTIMATE(VISION_POSITION_ESTIMATE_DATA), - STATUSTEXT(STATUSTEXT_DATA), - ATTITUDE_QUATERNION(ATTITUDE_QUATERNION_DATA), - PARAM_SET(PARAM_SET_DATA), - TUNNEL(TUNNEL_DATA), - RC_CHANNELS_RAW(RC_CHANNELS_RAW_DATA), - CELLULAR_CONFIG(CELLULAR_CONFIG_DATA), - GPS_RTCM_DATA(GPS_RTCM_DATA_DATA), - AUTH_KEY(AUTH_KEY_DATA), GPS_STATUS(GPS_STATUS_DATA), - RC_CHANNELS_OVERRIDE(RC_CHANNELS_OVERRIDE_DATA), - DEEPSTALL(DEEPSTALL_DATA), - FENCE_STATUS(FENCE_STATUS_DATA), - BATTERY_STATUS(BATTERY_STATUS_DATA), - AOA_SSA(AOA_SSA_DATA), - MISSION_CLEAR_ALL(MISSION_CLEAR_ALL_DATA), - SCALED_PRESSURE2(SCALED_PRESSURE2_DATA), - DISTANCE_SENSOR(DISTANCE_SENSOR_DATA), -
}

Variants§

§

LOGGING_ACK(LOGGING_ACK_DATA)

§

GENERATOR_STATUS(GENERATOR_STATUS_DATA)

§

VIDEO_STREAM_STATUS(VIDEO_STREAM_STATUS_DATA)

§

SET_HOME_POSITION(SET_HOME_POSITION_DATA)

§

LOG_REQUEST_LIST(LOG_REQUEST_LIST_DATA)

§

VFR_HUD(VFR_HUD_DATA)

§

HIL_ACTUATOR_CONTROLS(HIL_ACTUATOR_CONTROLS_DATA)

§

GLOBAL_VISION_POSITION_ESTIMATE(GLOBAL_VISION_POSITION_ESTIMATE_DATA)

§

UAVCAN_NODE_INFO(UAVCAN_NODE_INFO_DATA)

§

FENCE_POINT(FENCE_POINT_DATA)

§

MISSION_REQUEST(MISSION_REQUEST_DATA)

§

DATA64(DATA64_DATA)

§

GIMBAL_TORQUE_CMD_REPORT(GIMBAL_TORQUE_CMD_REPORT_DATA)

§

SYS_STATUS(SYS_STATUS_DATA)

§

MCU_STATUS(MCU_STATUS_DATA)

§

HIL_RC_INPUTS_RAW(HIL_RC_INPUTS_RAW_DATA)

§

PARAM_REQUEST_LIST(PARAM_REQUEST_LIST_DATA)

§

OSD_PARAM_SHOW_CONFIG(OSD_PARAM_SHOW_CONFIG_DATA)

§

POSITION_TARGET_GLOBAL_INT(POSITION_TARGET_GLOBAL_INT_DATA)

§

NAMED_VALUE_INT(NAMED_VALUE_INT_DATA)

§

CONTROL_SYSTEM_STATE(CONTROL_SYSTEM_STATE_DATA)

§

FLIGHT_INFORMATION(FLIGHT_INFORMATION_DATA)

§

UAVIONIX_ADSB_OUT_CFG(UAVIONIX_ADSB_OUT_CFG_DATA)

§

PLAY_TUNE_V2(PLAY_TUNE_V2_DATA)

§

MANUAL_CONTROL(MANUAL_CONTROL_DATA)

§

ADAP_TUNING(ADAP_TUNING_DATA)

§

LOG_REQUEST_DATA(LOG_REQUEST_DATA_DATA)

§

HIL_SENSOR(HIL_SENSOR_DATA)

§

PARAM_EXT_REQUEST_READ(PARAM_EXT_REQUEST_READ_DATA)

§

PARAM_EXT_VALUE(PARAM_EXT_VALUE_DATA)

§

ICAROUS_KINEMATIC_BANDS(ICAROUS_KINEMATIC_BANDS_DATA)

§

LIMITS_STATUS(LIMITS_STATUS_DATA)

§

WIND(WIND_DATA)

§

CAMERA_TRACKING_GEO_STATUS(CAMERA_TRACKING_GEO_STATUS_DATA)

§

GPS2_RTK(GPS2_RTK_DATA)

§

GIMBAL_REPORT(GIMBAL_REPORT_DATA)

§

COLLISION(COLLISION_DATA)

§

HEARTBEAT(HEARTBEAT_DATA)

§

ESC_TELEMETRY_1_TO_4(ESC_TELEMETRY_1_TO_4_DATA)

§

RESPONSE_EVENT_ERROR(RESPONSE_EVENT_ERROR_DATA)

§

SAFETY_SET_ALLOWED_AREA(SAFETY_SET_ALLOWED_AREA_DATA)

§

LOG_DATA(LOG_DATA_DATA)

§

LOCAL_POSITION_NED(LOCAL_POSITION_NED_DATA)

§

ALTITUDE(ALTITUDE_DATA)

§

GIMBAL_MANAGER_SET_ATTITUDE(GIMBAL_MANAGER_SET_ATTITUDE_DATA)

§

GPS2_RAW(GPS2_RAW_DATA)

§

SET_POSITION_TARGET_LOCAL_NED(SET_POSITION_TARGET_LOCAL_NED_DATA)

§

SET_GPS_GLOBAL_ORIGIN(SET_GPS_GLOBAL_ORIGIN_DATA)

§

PARAM_VALUE(PARAM_VALUE_DATA)

§

OPTICAL_FLOW(OPTICAL_FLOW_DATA)

§

RC_CHANNELS(RC_CHANNELS_DATA)

§

PARAM_EXT_REQUEST_LIST(PARAM_EXT_REQUEST_LIST_DATA)

§

OPEN_DRONE_ID_BASIC_ID(OPEN_DRONE_ID_BASIC_ID_DATA)

§

LOCAL_POSITION_NED_COV(LOCAL_POSITION_NED_COV_DATA)

§

TERRAIN_REQUEST(TERRAIN_REQUEST_DATA)

§

DATA_TRANSMISSION_HANDSHAKE(DATA_TRANSMISSION_HANDSHAKE_DATA)

§

AHRS(AHRS_DATA)

§

OPEN_DRONE_ID_SYSTEM(OPEN_DRONE_ID_SYSTEM_DATA)

§

LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET(LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA)

§

MISSION_REQUEST_LIST(MISSION_REQUEST_LIST_DATA)

§

CAMERA_TRACKING_IMAGE_STATUS(CAMERA_TRACKING_IMAGE_STATUS_DATA)

§

POSITION_TARGET_LOCAL_NED(POSITION_TARGET_LOCAL_NED_DATA)

§

PING(PING_DATA)

§

PARAM_EXT_SET(PARAM_EXT_SET_DATA)

§

GIMBAL_DEVICE_INFORMATION(GIMBAL_DEVICE_INFORMATION_DATA)

§

AUTOPILOT_STATE_FOR_GIMBAL_DEVICE(AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA)

§

GIMBAL_CONTROL(GIMBAL_CONTROL_DATA)

§

EKF_STATUS_REPORT(EKF_STATUS_REPORT_DATA)

§

OSD_PARAM_SHOW_CONFIG_REPLY(OSD_PARAM_SHOW_CONFIG_REPLY_DATA)

§

SET_MAG_OFFSETS(SET_MAG_OFFSETS_DATA)

§

GIMBAL_DEVICE_SET_ATTITUDE(GIMBAL_DEVICE_SET_ATTITUDE_DATA)

§

DEVICE_OP_READ_REPLY(DEVICE_OP_READ_REPLY_DATA)

§

GOPRO_SET_REQUEST(GOPRO_SET_REQUEST_DATA)

§

GIMBAL_MANAGER_INFORMATION(GIMBAL_MANAGER_INFORMATION_DATA)

§

ORBIT_EXECUTION_STATUS(ORBIT_EXECUTION_STATUS_DATA)

§

DATA16(DATA16_DATA)

§

COMPONENT_METADATA(COMPONENT_METADATA_DATA)

§

POWER_STATUS(POWER_STATUS_DATA)

§

RESOURCE_REQUEST(RESOURCE_REQUEST_DATA)

§

SET_ATTITUDE_TARGET(SET_ATTITUDE_TARGET_DATA)

§

COMMAND_ACK(COMMAND_ACK_DATA)

§

LOG_ENTRY(LOG_ENTRY_DATA)

§

EVENT(EVENT_DATA)

§

HWSTATUS(HWSTATUS_DATA)

§

CELLULAR_STATUS(CELLULAR_STATUS_DATA)

§

LOGGING_DATA(LOGGING_DATA_DATA)

§

HIL_GPS(HIL_GPS_DATA)

§

CAN_FRAME(CAN_FRAME_DATA)

§

CAMERA_IMAGE_CAPTURED(CAMERA_IMAGE_CAPTURED_DATA)

§

V2_EXTENSION(V2_EXTENSION_DATA)

§

SAFETY_ALLOWED_AREA(SAFETY_ALLOWED_AREA_DATA)

§

PROTOCOL_VERSION(PROTOCOL_VERSION_DATA)

§

RAW_IMU(RAW_IMU_DATA)

§

CAMERA_INFORMATION(CAMERA_INFORMATION_DATA)

§

OPEN_DRONE_ID_SYSTEM_UPDATE(OPEN_DRONE_ID_SYSTEM_UPDATE_DATA)

§

REQUEST_DATA_STREAM(REQUEST_DATA_STREAM_DATA)

§

OPEN_DRONE_ID_SELF_ID(OPEN_DRONE_ID_SELF_ID_DATA)

§

OPEN_DRONE_ID_AUTHENTICATION(OPEN_DRONE_ID_AUTHENTICATION_DATA)

§

ATT_POS_MOCAP(ATT_POS_MOCAP_DATA)

§

HOME_POSITION(HOME_POSITION_DATA)

§

COMMAND_INT(COMMAND_INT_DATA)

§

CAMERA_CAPTURE_STATUS(CAMERA_CAPTURE_STATUS_DATA)

§

RAW_PRESSURE(RAW_PRESSURE_DATA)

§

MISSION_ACK(MISSION_ACK_DATA)

§

GIMBAL_DEVICE_ATTITUDE_STATUS(GIMBAL_DEVICE_ATTITUDE_STATUS_DATA)

§

MANUAL_SETPOINT(MANUAL_SETPOINT_DATA)

§

RPM(RPM_DATA)

§

WATER_DEPTH(WATER_DEPTH_DATA)

§

REQUEST_EVENT(REQUEST_EVENT_DATA)

§

DEBUG_VECT(DEBUG_VECT_DATA)

§

REMOTE_LOG_BLOCK_STATUS(REMOTE_LOG_BLOCK_STATUS_DATA)

§

MISSION_REQUEST_INT(MISSION_REQUEST_INT_DATA)

§

NAMED_VALUE_FLOAT(NAMED_VALUE_FLOAT_DATA)

§

NAV_CONTROLLER_OUTPUT(NAV_CONTROLLER_OUTPUT_DATA)

§

AUTOPILOT_VERSION_REQUEST(AUTOPILOT_VERSION_REQUEST_DATA)

§

HIL_STATE(HIL_STATE_DATA)

§

LOG_REQUEST_END(LOG_REQUEST_END_DATA)

§

REMOTE_LOG_DATA_BLOCK(REMOTE_LOG_DATA_BLOCK_DATA)

§

PARAM_MAP_RC(PARAM_MAP_RC_DATA)

§

DEBUG_FLOAT_ARRAY(DEBUG_FLOAT_ARRAY_DATA)

§

AHRS3(AHRS3_DATA)

§

OPEN_DRONE_ID_ARM_STATUS(OPEN_DRONE_ID_ARM_STATUS_DATA)

§

OBSTACLE_DISTANCE_3D(OBSTACLE_DISTANCE_3D_DATA)

§

SUPPORTED_TUNES(SUPPORTED_TUNES_DATA)

§

SIMSTATE(SIMSTATE_DATA)

§

CANFD_FRAME(CANFD_FRAME_DATA)

§

MISSION_COUNT(MISSION_COUNT_DATA)

§

AUTOPILOT_VERSION(AUTOPILOT_VERSION_DATA)

§

OPEN_DRONE_ID_MESSAGE_PACK(OPEN_DRONE_ID_MESSAGE_PACK_DATA)

§

LOGGING_DATA_ACKED(LOGGING_DATA_ACKED_DATA)

§

GPS_GLOBAL_ORIGIN(GPS_GLOBAL_ORIGIN_DATA)

§

GIMBAL_MANAGER_STATUS(GIMBAL_MANAGER_STATUS_DATA)

§

MISSION_ITEM(MISSION_ITEM_DATA)

§

CUBEPILOT_FIRMWARE_UPDATE_START(CUBEPILOT_FIRMWARE_UPDATE_START_DATA)

§

AP_ADC(AP_ADC_DATA)

§

PARAM_EXT_ACK(PARAM_EXT_ACK_DATA)

§

VICON_POSITION_ESTIMATE(VICON_POSITION_ESTIMATE_DATA)

§

CAMERA_FOV_STATUS(CAMERA_FOV_STATUS_DATA)

§

TERRAIN_REPORT(TERRAIN_REPORT_DATA)

§

ACTUATOR_OUTPUT_STATUS(ACTUATOR_OUTPUT_STATUS_DATA)

§

MESSAGE_INTERVAL(MESSAGE_INTERVAL_DATA)

§

ONBOARD_COMPUTER_STATUS(ONBOARD_COMPUTER_STATUS_DATA)

§

UAVIONIX_ADSB_OUT_DYNAMIC(UAVIONIX_ADSB_OUT_DYNAMIC_DATA)

§

RALLY_POINT(RALLY_POINT_DATA)

§

UAVCAN_NODE_STATUS(UAVCAN_NODE_STATUS_DATA)

§

COMPASSMOT_STATUS(COMPASSMOT_STATUS_DATA)

§

CAMERA_FEEDBACK(CAMERA_FEEDBACK_DATA)

§

RALLY_FETCH_POINT(RALLY_FETCH_POINT_DATA)

§

HIGH_LATENCY2(HIGH_LATENCY2_DATA)

§

GOPRO_HEARTBEAT(GOPRO_HEARTBEAT_DATA)

§

MEMORY_VECT(MEMORY_VECT_DATA)

§

CUBEPILOT_FIRMWARE_UPDATE_RESP(CUBEPILOT_FIRMWARE_UPDATE_RESP_DATA)

§

SET_POSITION_TARGET_GLOBAL_INT(SET_POSITION_TARGET_GLOBAL_INT_DATA)

§

MISSION_ITEM_INT(MISSION_ITEM_INT_DATA)

§

SETUP_SIGNING(SETUP_SIGNING_DATA)

§

TERRAIN_DATA(TERRAIN_DATA_DATA)

§

CHANGE_OPERATOR_CONTROL(CHANGE_OPERATOR_CONTROL_DATA)

§

MISSION_WRITE_PARTIAL_LIST(MISSION_WRITE_PARTIAL_LIST_DATA)

§

SERIAL_CONTROL(SERIAL_CONTROL_DATA)

§

CUBEPILOT_RAW_RC(CUBEPILOT_RAW_RC_DATA)

§

FENCE_FETCH_POINT(FENCE_FETCH_POINT_DATA)

§

GOPRO_SET_RESPONSE(GOPRO_SET_RESPONSE_DATA)

§

CAMERA_TRIGGER(CAMERA_TRIGGER_DATA)

§

VISION_POSITION_DELTA(VISION_POSITION_DELTA_DATA)

§

OPEN_DRONE_ID_LOCATION(OPEN_DRONE_ID_LOCATION_DATA)

§

GOPRO_GET_RESPONSE(GOPRO_GET_RESPONSE_DATA)

§

SCALED_PRESSURE3(SCALED_PRESSURE3_DATA)

§

SMART_BATTERY_INFO(SMART_BATTERY_INFO_DATA)

§

OPEN_DRONE_ID_OPERATOR_ID(OPEN_DRONE_ID_OPERATOR_ID_DATA)

§

ESC_INFO(ESC_INFO_DATA)

§

STORAGE_INFORMATION(STORAGE_INFORMATION_DATA)

§

RADIO_STATUS(RADIO_STATUS_DATA)

§

WHEEL_DISTANCE(WHEEL_DISTANCE_DATA)

§

FILE_TRANSFER_PROTOCOL(FILE_TRANSFER_PROTOCOL_DATA)

§

DEVICE_OP_READ(DEVICE_OP_READ_DATA)

§

MOUNT_CONTROL(MOUNT_CONTROL_DATA)

§

BATTERY2(BATTERY2_DATA)

§

OPTICAL_FLOW_RAD(OPTICAL_FLOW_RAD_DATA)

§

ESC_TELEMETRY_9_TO_12(ESC_TELEMETRY_9_TO_12_DATA)

§

HIL_OPTICAL_FLOW(HIL_OPTICAL_FLOW_DATA)

§

SIM_STATE(SIM_STATE_DATA)

§

VIDEO_STREAM_INFORMATION(VIDEO_STREAM_INFORMATION_DATA)

§

COMPONENT_INFORMATION(COMPONENT_INFORMATION_DATA)

§

LOG_ERASE(LOG_ERASE_DATA)

§

SERVO_OUTPUT_RAW(SERVO_OUTPUT_RAW_DATA)

§

HYGROMETER_SENSOR(HYGROMETER_SENSOR_DATA)

§

DIGICAM_CONTROL(DIGICAM_CONTROL_DATA)

§

ENCAPSULATED_DATA(ENCAPSULATED_DATA_DATA)

§

WIFI_CONFIG_AP(WIFI_CONFIG_AP_DATA)

§

SET_ACTUATOR_CONTROL_TARGET(SET_ACTUATOR_CONTROL_TARGET_DATA)

§

SYSTEM_TIME(SYSTEM_TIME_DATA)

§

PLAY_TUNE(PLAY_TUNE_DATA)

§

ATTITUDE(ATTITUDE_DATA)

§

MAG_CAL_REPORT(MAG_CAL_REPORT_DATA)

§

UTM_GLOBAL_POSITION(UTM_GLOBAL_POSITION_DATA)

§

LANDING_TARGET(LANDING_TARGET_DATA)

§

MISSION_REQUEST_PARTIAL_LIST(MISSION_REQUEST_PARTIAL_LIST_DATA)

§

RANGEFINDER(RANGEFINDER_DATA)

§

MAG_CAL_PROGRESS(MAG_CAL_PROGRESS_DATA)

§

PID_TUNING(PID_TUNING_DATA)

§

COMMAND_CANCEL(COMMAND_CANCEL_DATA)

§

DEVICE_OP_WRITE(DEVICE_OP_WRITE_DATA)

§

SCALED_IMU(SCALED_IMU_DATA)

§

RC_CHANNELS_SCALED(RC_CHANNELS_SCALED_DATA)

§

VIBRATION(VIBRATION_DATA)

§

DEVICE_OP_WRITE_REPLY(DEVICE_OP_WRITE_REPLY_DATA)

§

OSD_PARAM_CONFIG(OSD_PARAM_CONFIG_DATA)

§

ESC_TELEMETRY_5_TO_8(ESC_TELEMETRY_5_TO_8_DATA)

§

PARAM_REQUEST_READ(PARAM_REQUEST_READ_DATA)

§

ATTITUDE_TARGET(ATTITUDE_TARGET_DATA)

§

ESC_STATUS(ESC_STATUS_DATA)

§

CURRENT_EVENT_SEQUENCE(CURRENT_EVENT_SEQUENCE_DATA)

§

CAMERA_SETTINGS(CAMERA_SETTINGS_DATA)

§

SET_MODE(SET_MODE_DATA)

§

GPS_INJECT_DATA(GPS_INJECT_DATA_DATA)

§

GIMBAL_MANAGER_SET_PITCHYAW(GIMBAL_MANAGER_SET_PITCHYAW_DATA)

§

GOPRO_GET_REQUEST(GOPRO_GET_REQUEST_DATA)

§

GLOBAL_POSITION_INT_COV(GLOBAL_POSITION_INT_COV_DATA)

§

MOUNT_CONFIGURE(MOUNT_CONFIGURE_DATA)

§

WINCH_STATUS(WINCH_STATUS_DATA)

§

TIME_ESTIMATE_TO_TARGET(TIME_ESTIMATE_TO_TARGET_DATA)

§

ESTIMATOR_STATUS(ESTIMATOR_STATUS_DATA)

§

MISSION_SET_CURRENT(MISSION_SET_CURRENT_DATA)

§

LED_CONTROL(LED_CONTROL_DATA)

§

RADIO(RADIO_DATA)

§

TERRAIN_CHECK(TERRAIN_CHECK_DATA)

§

MISSION_ITEM_REACHED(MISSION_ITEM_REACHED_DATA)

§

GPS_RAW_INT(GPS_RAW_INT_DATA)

§

GIMBAL_MANAGER_SET_MANUAL_CONTROL(GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA)

§

EFI_STATUS(EFI_STATUS_DATA)

§

COMMAND_LONG(COMMAND_LONG_DATA)

§

HIL_STATE_QUATERNION(HIL_STATE_QUATERNION_DATA)

§

BUTTON_CHANGE(BUTTON_CHANGE_DATA)

§

TRAJECTORY_REPRESENTATION_WAYPOINTS(TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA)

§

RAW_RPM(RAW_RPM_DATA)

§

SCALED_PRESSURE(SCALED_PRESSURE_DATA)

§

UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT(UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA)

§

SENSOR_OFFSETS(SENSOR_OFFSETS_DATA)

§

HIGHRES_IMU(HIGHRES_IMU_DATA)

§

AHRS2(AHRS2_DATA)

§

ATTITUDE_QUATERNION_COV(ATTITUDE_QUATERNION_COV_DATA)

§

MISSION_CURRENT(MISSION_CURRENT_DATA)

§

AIRSPEED_AUTOCAL(AIRSPEED_AUTOCAL_DATA)

§

ODOMETRY(ODOMETRY_DATA)

§

ICAROUS_HEARTBEAT(ICAROUS_HEARTBEAT_DATA)

§

MEMINFO(MEMINFO_DATA)

§

EXTENDED_SYS_STATE(EXTENDED_SYS_STATE_DATA)

§

TRAJECTORY_REPRESENTATION_BEZIER(TRAJECTORY_REPRESENTATION_BEZIER_DATA)

§

CAMERA_STATUS(CAMERA_STATUS_DATA)

§

WIND_COV(WIND_COV_DATA)

§

AIS_VESSEL(AIS_VESSEL_DATA)

§

GPS_INPUT(GPS_INPUT_DATA)

§

TIMESYNC(TIMESYNC_DATA)

§

SCALED_IMU3(SCALED_IMU3_DATA)

§

ADSB_VEHICLE(ADSB_VEHICLE_DATA)

§

DEBUG(DEBUG_DATA)

§

FOLLOW_TARGET(FOLLOW_TARGET_DATA)

§

VISION_SPEED_ESTIMATE(VISION_SPEED_ESTIMATE_DATA)

§

DIGICAM_CONFIGURE(DIGICAM_CONFIGURE_DATA)

§

CHANGE_OPERATOR_CONTROL_ACK(CHANGE_OPERATOR_CONTROL_ACK_DATA)

§

MOUNT_STATUS(MOUNT_STATUS_DATA)

§

GPS_RTK(GPS_RTK_DATA)

§

DATA32(DATA32_DATA)

§

HIL_CONTROLS(HIL_CONTROLS_DATA)

§

DATA96(DATA96_DATA)

§

SCALED_IMU2(SCALED_IMU2_DATA)

§

DATA_STREAM(DATA_STREAM_DATA)

§

MOUNT_ORIENTATION(MOUNT_ORIENTATION_DATA)

§

HIGH_LATENCY(HIGH_LATENCY_DATA)

§

GLOBAL_POSITION_INT(GLOBAL_POSITION_INT_DATA)

§

OSD_PARAM_CONFIG_REPLY(OSD_PARAM_CONFIG_REPLY_DATA)

§

ACTUATOR_CONTROL_TARGET(ACTUATOR_CONTROL_TARGET_DATA)

§

OBSTACLE_DISTANCE(OBSTACLE_DISTANCE_DATA)

§

CAN_FILTER_MODIFY(CAN_FILTER_MODIFY_DATA)

§

VISION_POSITION_ESTIMATE(VISION_POSITION_ESTIMATE_DATA)

§

STATUSTEXT(STATUSTEXT_DATA)

§

ATTITUDE_QUATERNION(ATTITUDE_QUATERNION_DATA)

§

PARAM_SET(PARAM_SET_DATA)

§

TUNNEL(TUNNEL_DATA)

§

RC_CHANNELS_RAW(RC_CHANNELS_RAW_DATA)

§

CELLULAR_CONFIG(CELLULAR_CONFIG_DATA)

§

GPS_RTCM_DATA(GPS_RTCM_DATA_DATA)

§

AUTH_KEY(AUTH_KEY_DATA)

§

GPS_STATUS(GPS_STATUS_DATA)

§

RC_CHANNELS_OVERRIDE(RC_CHANNELS_OVERRIDE_DATA)

§

DEEPSTALL(DEEPSTALL_DATA)

§

FENCE_STATUS(FENCE_STATUS_DATA)

§

BATTERY_STATUS(BATTERY_STATUS_DATA)

§

AOA_SSA(AOA_SSA_DATA)

§

MISSION_CLEAR_ALL(MISSION_CLEAR_ALL_DATA)

§

SCALED_PRESSURE2(SCALED_PRESSURE2_DATA)

§

DISTANCE_SENSOR(DISTANCE_SENSOR_DATA)

Trait Implementations§

source§

impl Clone for MavMessage

source§

fn clone(&self) -> MavMessage

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for MavMessage

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<'de> Deserialize<'de> for MavMessage

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where + RESPONSE_EVENT_ERROR(RESPONSE_EVENT_ERROR_DATA), +

}

Variants§

§

HEARTBEAT(HEARTBEAT_DATA)

§

MISSION_ITEM_REACHED(MISSION_ITEM_REACHED_DATA)

§

OSD_PARAM_SHOW_CONFIG(OSD_PARAM_SHOW_CONFIG_DATA)

§

TIMESYNC(TIMESYNC_DATA)

§

GOPRO_GET_REQUEST(GOPRO_GET_REQUEST_DATA)

§

TRAJECTORY_REPRESENTATION_WAYPOINTS(TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA)

§

POSITION_TARGET_LOCAL_NED(POSITION_TARGET_LOCAL_NED_DATA)

§

LOCAL_POSITION_NED(LOCAL_POSITION_NED_DATA)

§

TIME_ESTIMATE_TO_TARGET(TIME_ESTIMATE_TO_TARGET_DATA)

§

SUPPORTED_TUNES(SUPPORTED_TUNES_DATA)

§

VFR_HUD(VFR_HUD_DATA)

§

POSITION_TARGET_GLOBAL_INT(POSITION_TARGET_GLOBAL_INT_DATA)

§

EFI_STATUS(EFI_STATUS_DATA)

§

ALTITUDE(ALTITUDE_DATA)

§

RAW_PRESSURE(RAW_PRESSURE_DATA)

§

OBSTACLE_DISTANCE(OBSTACLE_DISTANCE_DATA)

§

AIRSPEED_AUTOCAL(AIRSPEED_AUTOCAL_DATA)

§

SET_GPS_GLOBAL_ORIGIN(SET_GPS_GLOBAL_ORIGIN_DATA)

§

RADIO_STATUS(RADIO_STATUS_DATA)

§

LOGGING_DATA(LOGGING_DATA_DATA)

§

HOME_POSITION(HOME_POSITION_DATA)

§

WHEEL_DISTANCE(WHEEL_DISTANCE_DATA)

§

GIMBAL_MANAGER_SET_MANUAL_CONTROL(GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA)

§

FILE_TRANSFER_PROTOCOL(FILE_TRANSFER_PROTOCOL_DATA)

§

MISSION_REQUEST_PARTIAL_LIST(MISSION_REQUEST_PARTIAL_LIST_DATA)

§

RC_CHANNELS_RAW(RC_CHANNELS_RAW_DATA)

§

ACTUATOR_CONTROL_TARGET(ACTUATOR_CONTROL_TARGET_DATA)

§

FOLLOW_TARGET(FOLLOW_TARGET_DATA)

§

CANFD_FRAME(CANFD_FRAME_DATA)

§

VIDEO_STREAM_STATUS(VIDEO_STREAM_STATUS_DATA)

§

PARAM_SET(PARAM_SET_DATA)

§

SYS_STATUS(SYS_STATUS_DATA)

§

ADSB_VEHICLE(ADSB_VEHICLE_DATA)

§

WIND_COV(WIND_COV_DATA)

§

ESTIMATOR_STATUS(ESTIMATOR_STATUS_DATA)

§

OPEN_DRONE_ID_SYSTEM_UPDATE(OPEN_DRONE_ID_SYSTEM_UPDATE_DATA)

§

UAVIONIX_ADSB_OUT_CFG(UAVIONIX_ADSB_OUT_CFG_DATA)

§

FENCE_STATUS(FENCE_STATUS_DATA)

§

AUTOPILOT_VERSION_REQUEST(AUTOPILOT_VERSION_REQUEST_DATA)

§

DATA16(DATA16_DATA)

§

MANUAL_SETPOINT(MANUAL_SETPOINT_DATA)

§

POWER_STATUS(POWER_STATUS_DATA)

§

SET_ACTUATOR_CONTROL_TARGET(SET_ACTUATOR_CONTROL_TARGET_DATA)

§

HWSTATUS(HWSTATUS_DATA)

§

SET_POSITION_TARGET_LOCAL_NED(SET_POSITION_TARGET_LOCAL_NED_DATA)

§

CAMERA_IMAGE_CAPTURED(CAMERA_IMAGE_CAPTURED_DATA)

§

CAMERA_STATUS(CAMERA_STATUS_DATA)

§

SCALED_IMU2(SCALED_IMU2_DATA)

§

PARAM_VALUE(PARAM_VALUE_DATA)

§

TERRAIN_REQUEST(TERRAIN_REQUEST_DATA)

§

WIND(WIND_DATA)

§

DATA_TRANSMISSION_HANDSHAKE(DATA_TRANSMISSION_HANDSHAKE_DATA)

§

TUNNEL(TUNNEL_DATA)

§

HIL_ACTUATOR_CONTROLS(HIL_ACTUATOR_CONTROLS_DATA)

§

UAVCAN_NODE_STATUS(UAVCAN_NODE_STATUS_DATA)

§

GPS_RTK(GPS_RTK_DATA)

§

HYGROMETER_SENSOR(HYGROMETER_SENSOR_DATA)

§

COMPASSMOT_STATUS(COMPASSMOT_STATUS_DATA)

§

EXTENDED_SYS_STATE(EXTENDED_SYS_STATE_DATA)

§

GIMBAL_DEVICE_INFORMATION(GIMBAL_DEVICE_INFORMATION_DATA)

§

PLAY_TUNE_V2(PLAY_TUNE_V2_DATA)

§

OPEN_DRONE_ID_ARM_STATUS(OPEN_DRONE_ID_ARM_STATUS_DATA)

§

SCALED_PRESSURE2(SCALED_PRESSURE2_DATA)

§

DATA96(DATA96_DATA)

§

FLIGHT_INFORMATION(FLIGHT_INFORMATION_DATA)

§

REMOTE_LOG_DATA_BLOCK(REMOTE_LOG_DATA_BLOCK_DATA)

§

ACTUATOR_OUTPUT_STATUS(ACTUATOR_OUTPUT_STATUS_DATA)

§

AHRS(AHRS_DATA)

§

DEBUG_VECT(DEBUG_VECT_DATA)

§

UTM_GLOBAL_POSITION(UTM_GLOBAL_POSITION_DATA)

§

MISSION_ITEM_INT(MISSION_ITEM_INT_DATA)

§

CAN_FILTER_MODIFY(CAN_FILTER_MODIFY_DATA)

§

DEVICE_OP_READ_REPLY(DEVICE_OP_READ_REPLY_DATA)

§

ADAP_TUNING(ADAP_TUNING_DATA)

§

SET_POSITION_TARGET_GLOBAL_INT(SET_POSITION_TARGET_GLOBAL_INT_DATA)

§

PROTOCOL_VERSION(PROTOCOL_VERSION_DATA)

§

HIL_GPS(HIL_GPS_DATA)

§

SCALED_IMU(SCALED_IMU_DATA)

§

UAVIONIX_ADSB_OUT_DYNAMIC(UAVIONIX_ADSB_OUT_DYNAMIC_DATA)

§

COMMAND_CANCEL(COMMAND_CANCEL_DATA)

§

MOUNT_CONFIGURE(MOUNT_CONFIGURE_DATA)

§

LOGGING_ACK(LOGGING_ACK_DATA)

§

ATT_POS_MOCAP(ATT_POS_MOCAP_DATA)

§

PARAM_EXT_REQUEST_READ(PARAM_EXT_REQUEST_READ_DATA)

§

CAMERA_TRACKING_IMAGE_STATUS(CAMERA_TRACKING_IMAGE_STATUS_DATA)

§

EKF_STATUS_REPORT(EKF_STATUS_REPORT_DATA)

§

OBSTACLE_DISTANCE_3D(OBSTACLE_DISTANCE_3D_DATA)

§

TERRAIN_DATA(TERRAIN_DATA_DATA)

§

PARAM_REQUEST_LIST(PARAM_REQUEST_LIST_DATA)

§

RPM(RPM_DATA)

§

MISSION_REQUEST_INT(MISSION_REQUEST_INT_DATA)

§

CELLULAR_CONFIG(CELLULAR_CONFIG_DATA)

§

SENSOR_OFFSETS(SENSOR_OFFSETS_DATA)

§

AHRS3(AHRS3_DATA)

§

LOG_REQUEST_LIST(LOG_REQUEST_LIST_DATA)

§

DIGICAM_CONFIGURE(DIGICAM_CONFIGURE_DATA)

§

GPS2_RAW(GPS2_RAW_DATA)

§

OPEN_DRONE_ID_SELF_ID(OPEN_DRONE_ID_SELF_ID_DATA)

§

AHRS2(AHRS2_DATA)

§

VICON_POSITION_ESTIMATE(VICON_POSITION_ESTIMATE_DATA)

§

CHANGE_OPERATOR_CONTROL(CHANGE_OPERATOR_CONTROL_DATA)

§

RC_CHANNELS_OVERRIDE(RC_CHANNELS_OVERRIDE_DATA)

§

MISSION_WRITE_PARTIAL_LIST(MISSION_WRITE_PARTIAL_LIST_DATA)

§

CAMERA_TRIGGER(CAMERA_TRIGGER_DATA)

§

MISSION_REQUEST_LIST(MISSION_REQUEST_LIST_DATA)

§

DATA32(DATA32_DATA)

§

CAMERA_CAPTURE_STATUS(CAMERA_CAPTURE_STATUS_DATA)

§

TERRAIN_CHECK(TERRAIN_CHECK_DATA)

§

ICAROUS_KINEMATIC_BANDS(ICAROUS_KINEMATIC_BANDS_DATA)

§

CHANGE_OPERATOR_CONTROL_ACK(CHANGE_OPERATOR_CONTROL_ACK_DATA)

§

ORBIT_EXECUTION_STATUS(ORBIT_EXECUTION_STATUS_DATA)

§

DEVICE_OP_WRITE(DEVICE_OP_WRITE_DATA)

§

OPEN_DRONE_ID_LOCATION(OPEN_DRONE_ID_LOCATION_DATA)

§

LANDING_TARGET(LANDING_TARGET_DATA)

§

BATTERY_STATUS(BATTERY_STATUS_DATA)

§

GOPRO_SET_RESPONSE(GOPRO_SET_RESPONSE_DATA)

§

EVENT(EVENT_DATA)

§

GIMBAL_MANAGER_SET_PITCHYAW(GIMBAL_MANAGER_SET_PITCHYAW_DATA)

§

SMART_BATTERY_INFO(SMART_BATTERY_INFO_DATA)

§

ATTITUDE_QUATERNION(ATTITUDE_QUATERNION_DATA)

§

SET_ATTITUDE_TARGET(SET_ATTITUDE_TARGET_DATA)

§

MANUAL_CONTROL(MANUAL_CONTROL_DATA)

§

RALLY_FETCH_POINT(RALLY_FETCH_POINT_DATA)

§

VISION_POSITION_ESTIMATE(VISION_POSITION_ESTIMATE_DATA)

§

RALLY_POINT(RALLY_POINT_DATA)

§

VIDEO_STREAM_INFORMATION(VIDEO_STREAM_INFORMATION_DATA)

§

OPEN_DRONE_ID_BASIC_ID(OPEN_DRONE_ID_BASIC_ID_DATA)

§

ENCAPSULATED_DATA(ENCAPSULATED_DATA_DATA)

§

DEVICE_OP_WRITE_REPLY(DEVICE_OP_WRITE_REPLY_DATA)

§

PING(PING_DATA)

§

SET_MAG_OFFSETS(SET_MAG_OFFSETS_DATA)

§

GPS_INPUT(GPS_INPUT_DATA)

§

LOG_ENTRY(LOG_ENTRY_DATA)

§

RAW_IMU(RAW_IMU_DATA)

§

GPS_RAW_INT(GPS_RAW_INT_DATA)

§

CONTROL_SYSTEM_STATE(CONTROL_SYSTEM_STATE_DATA)

§

DEBUG(DEBUG_DATA)

§

ESC_TELEMETRY_1_TO_4(ESC_TELEMETRY_1_TO_4_DATA)

§

MOUNT_CONTROL(MOUNT_CONTROL_DATA)

§

COMPONENT_METADATA(COMPONENT_METADATA_DATA)

§

NAMED_VALUE_FLOAT(NAMED_VALUE_FLOAT_DATA)

§

GPS2_RTK(GPS2_RTK_DATA)

§

VIBRATION(VIBRATION_DATA)

§

MISSION_CURRENT(MISSION_CURRENT_DATA)

§

PARAM_EXT_ACK(PARAM_EXT_ACK_DATA)

§

MISSION_REQUEST(MISSION_REQUEST_DATA)

§

MEMINFO(MEMINFO_DATA)

§

LED_CONTROL(LED_CONTROL_DATA)

§

MISSION_ITEM(MISSION_ITEM_DATA)

§

GPS_RTCM_DATA(GPS_RTCM_DATA_DATA)

§

OPTICAL_FLOW_RAD(OPTICAL_FLOW_RAD_DATA)

§

VISION_SPEED_ESTIMATE(VISION_SPEED_ESTIMATE_DATA)

§

TERRAIN_REPORT(TERRAIN_REPORT_DATA)

§

V2_EXTENSION(V2_EXTENSION_DATA)

§

CAN_FRAME(CAN_FRAME_DATA)

§

REQUEST_EVENT(REQUEST_EVENT_DATA)

§

OSD_PARAM_CONFIG(OSD_PARAM_CONFIG_DATA)

§

AUTOPILOT_STATE_FOR_GIMBAL_DEVICE(AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA)

§

ATTITUDE(ATTITUDE_DATA)

§

UAVCAN_NODE_INFO(UAVCAN_NODE_INFO_DATA)

§

HIL_OPTICAL_FLOW(HIL_OPTICAL_FLOW_DATA)

§

MEMORY_VECT(MEMORY_VECT_DATA)

§

SAFETY_SET_ALLOWED_AREA(SAFETY_SET_ALLOWED_AREA_DATA)

§

GIMBAL_MANAGER_STATUS(GIMBAL_MANAGER_STATUS_DATA)

§

GLOBAL_VISION_POSITION_ESTIMATE(GLOBAL_VISION_POSITION_ESTIMATE_DATA)

§

AUTH_KEY(AUTH_KEY_DATA)

§

COMMAND_ACK(COMMAND_ACK_DATA)

§

DIGICAM_CONTROL(DIGICAM_CONTROL_DATA)

§

FENCE_FETCH_POINT(FENCE_FETCH_POINT_DATA)

§

ESC_TELEMETRY_9_TO_12(ESC_TELEMETRY_9_TO_12_DATA)

§

SERIAL_CONTROL(SERIAL_CONTROL_DATA)

§

MCU_STATUS(MCU_STATUS_DATA)

§

COMMAND_INT(COMMAND_INT_DATA)

§

RAW_RPM(RAW_RPM_DATA)

§

OPEN_DRONE_ID_OPERATOR_ID(OPEN_DRONE_ID_OPERATOR_ID_DATA)

§

DATA_STREAM(DATA_STREAM_DATA)

§

MISSION_COUNT(MISSION_COUNT_DATA)

§

SCALED_IMU3(SCALED_IMU3_DATA)

§

DEBUG_FLOAT_ARRAY(DEBUG_FLOAT_ARRAY_DATA)

§

GIMBAL_MANAGER_INFORMATION(GIMBAL_MANAGER_INFORMATION_DATA)

§

HIGH_LATENCY2(HIGH_LATENCY2_DATA)

§

PLAY_TUNE(PLAY_TUNE_DATA)

§

AOA_SSA(AOA_SSA_DATA)

§

LOCAL_POSITION_NED_COV(LOCAL_POSITION_NED_COV_DATA)

§

MISSION_ACK(MISSION_ACK_DATA)

§

LIMITS_STATUS(LIMITS_STATUS_DATA)

§

COMPONENT_INFORMATION(COMPONENT_INFORMATION_DATA)

§

GIMBAL_TORQUE_CMD_REPORT(GIMBAL_TORQUE_CMD_REPORT_DATA)

§

MOUNT_STATUS(MOUNT_STATUS_DATA)

§

SIM_STATE(SIM_STATE_DATA)

§

MISSION_SET_CURRENT(MISSION_SET_CURRENT_DATA)

§

PARAM_EXT_SET(PARAM_EXT_SET_DATA)

§

RC_CHANNELS(RC_CHANNELS_DATA)

§

CUBEPILOT_FIRMWARE_UPDATE_RESP(CUBEPILOT_FIRMWARE_UPDATE_RESP_DATA)

§

SIMSTATE(SIMSTATE_DATA)

§

CAMERA_TRACKING_GEO_STATUS(CAMERA_TRACKING_GEO_STATUS_DATA)

§

ESC_STATUS(ESC_STATUS_DATA)

§

CUBEPILOT_RAW_RC(CUBEPILOT_RAW_RC_DATA)

§

HIGHRES_IMU(HIGHRES_IMU_DATA)

§

NAV_CONTROLLER_OUTPUT(NAV_CONTROLLER_OUTPUT_DATA)

§

OPEN_DRONE_ID_AUTHENTICATION(OPEN_DRONE_ID_AUTHENTICATION_DATA)

§

LOGGING_DATA_ACKED(LOGGING_DATA_ACKED_DATA)

§

ICAROUS_HEARTBEAT(ICAROUS_HEARTBEAT_DATA)

§

FENCE_POINT(FENCE_POINT_DATA)

§

OSD_PARAM_SHOW_CONFIG_REPLY(OSD_PARAM_SHOW_CONFIG_REPLY_DATA)

§

ATTITUDE_TARGET(ATTITUDE_TARGET_DATA)

§

LOG_REQUEST_DATA(LOG_REQUEST_DATA_DATA)

§

GIMBAL_REPORT(GIMBAL_REPORT_DATA)

§

PARAM_EXT_VALUE(PARAM_EXT_VALUE_DATA)

§

SERVO_OUTPUT_RAW(SERVO_OUTPUT_RAW_DATA)

§

ESC_INFO(ESC_INFO_DATA)

§

OPEN_DRONE_ID_SYSTEM(OPEN_DRONE_ID_SYSTEM_DATA)

§

UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT(UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA)

§

HIGH_LATENCY(HIGH_LATENCY_DATA)

§

PID_TUNING(PID_TUNING_DATA)

§

RANGEFINDER(RANGEFINDER_DATA)

§

GIMBAL_DEVICE_SET_ATTITUDE(GIMBAL_DEVICE_SET_ATTITUDE_DATA)

§

VISION_POSITION_DELTA(VISION_POSITION_DELTA_DATA)

§

CAMERA_FEEDBACK(CAMERA_FEEDBACK_DATA)

§

BUTTON_CHANGE(BUTTON_CHANGE_DATA)

§

DEEPSTALL(DEEPSTALL_DATA)

§

ONBOARD_COMPUTER_STATUS(ONBOARD_COMPUTER_STATUS_DATA)

§

GOPRO_GET_RESPONSE(GOPRO_GET_RESPONSE_DATA)

§

GIMBAL_DEVICE_ATTITUDE_STATUS(GIMBAL_DEVICE_ATTITUDE_STATUS_DATA)

§

PARAM_EXT_REQUEST_LIST(PARAM_EXT_REQUEST_LIST_DATA)

§

OSD_PARAM_CONFIG_REPLY(OSD_PARAM_CONFIG_REPLY_DATA)

§

HIL_STATE_QUATERNION(HIL_STATE_QUATERNION_DATA)

§

CAMERA_SETTINGS(CAMERA_SETTINGS_DATA)

§

CURRENT_EVENT_SEQUENCE(CURRENT_EVENT_SEQUENCE_DATA)

§

RESOURCE_REQUEST(RESOURCE_REQUEST_DATA)

§

LOG_DATA(LOG_DATA_DATA)

§

ATTITUDE_QUATERNION_COV(ATTITUDE_QUATERNION_COV_DATA)

§

TRAJECTORY_REPRESENTATION_BEZIER(TRAJECTORY_REPRESENTATION_BEZIER_DATA)

§

SAFETY_ALLOWED_AREA(SAFETY_ALLOWED_AREA_DATA)

§

STATUSTEXT(STATUSTEXT_DATA)

§

RADIO(RADIO_DATA)

§

CELLULAR_STATUS(CELLULAR_STATUS_DATA)

§

DEVICE_OP_READ(DEVICE_OP_READ_DATA)

§

WIFI_CONFIG_AP(WIFI_CONFIG_AP_DATA)

§

GENERATOR_STATUS(GENERATOR_STATUS_DATA)

§

NAMED_VALUE_INT(NAMED_VALUE_INT_DATA)

§

HIL_CONTROLS(HIL_CONTROLS_DATA)

§

AUTOPILOT_VERSION(AUTOPILOT_VERSION_DATA)

§

AP_ADC(AP_ADC_DATA)

§

HIL_STATE(HIL_STATE_DATA)

§

PARAM_MAP_RC(PARAM_MAP_RC_DATA)

§

MAG_CAL_PROGRESS(MAG_CAL_PROGRESS_DATA)

§

GIMBAL_CONTROL(GIMBAL_CONTROL_DATA)

§

DISTANCE_SENSOR(DISTANCE_SENSOR_DATA)

§

SYSTEM_TIME(SYSTEM_TIME_DATA)

§

COMMAND_LONG(COMMAND_LONG_DATA)

§

GPS_INJECT_DATA(GPS_INJECT_DATA_DATA)

§

OPTICAL_FLOW(OPTICAL_FLOW_DATA)

§

GOPRO_HEARTBEAT(GOPRO_HEARTBEAT_DATA)

§

MAG_CAL_REPORT(MAG_CAL_REPORT_DATA)

§

MESSAGE_INTERVAL(MESSAGE_INTERVAL_DATA)

§

WINCH_STATUS(WINCH_STATUS_DATA)

§

GPS_GLOBAL_ORIGIN(GPS_GLOBAL_ORIGIN_DATA)

§

MOUNT_ORIENTATION(MOUNT_ORIENTATION_DATA)

§

ODOMETRY(ODOMETRY_DATA)

§

SETUP_SIGNING(SETUP_SIGNING_DATA)

§

LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET(LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA)

§

MISSION_CLEAR_ALL(MISSION_CLEAR_ALL_DATA)

§

OPEN_DRONE_ID_MESSAGE_PACK(OPEN_DRONE_ID_MESSAGE_PACK_DATA)

§

DATA64(DATA64_DATA)

§

REMOTE_LOG_BLOCK_STATUS(REMOTE_LOG_BLOCK_STATUS_DATA)

§

GOPRO_SET_REQUEST(GOPRO_SET_REQUEST_DATA)

§

SCALED_PRESSURE3(SCALED_PRESSURE3_DATA)

§

REQUEST_DATA_STREAM(REQUEST_DATA_STREAM_DATA)

§

LOG_REQUEST_END(LOG_REQUEST_END_DATA)

§

STORAGE_INFORMATION(STORAGE_INFORMATION_DATA)

§

HIL_SENSOR(HIL_SENSOR_DATA)

§

AIS_VESSEL(AIS_VESSEL_DATA)

§

CUBEPILOT_FIRMWARE_UPDATE_START(CUBEPILOT_FIRMWARE_UPDATE_START_DATA)

§

BATTERY2(BATTERY2_DATA)

§

GLOBAL_POSITION_INT(GLOBAL_POSITION_INT_DATA)

§

RC_CHANNELS_SCALED(RC_CHANNELS_SCALED_DATA)

§

COLLISION(COLLISION_DATA)

§

WATER_DEPTH(WATER_DEPTH_DATA)

§

ESC_TELEMETRY_5_TO_8(ESC_TELEMETRY_5_TO_8_DATA)

§

LOG_ERASE(LOG_ERASE_DATA)

§

SET_HOME_POSITION(SET_HOME_POSITION_DATA)

§

CAMERA_FOV_STATUS(CAMERA_FOV_STATUS_DATA)

§

SCALED_PRESSURE(SCALED_PRESSURE_DATA)

§

PARAM_REQUEST_READ(PARAM_REQUEST_READ_DATA)

§

HIL_RC_INPUTS_RAW(HIL_RC_INPUTS_RAW_DATA)

§

SET_MODE(SET_MODE_DATA)

§

GIMBAL_MANAGER_SET_ATTITUDE(GIMBAL_MANAGER_SET_ATTITUDE_DATA)

§

CAMERA_INFORMATION(CAMERA_INFORMATION_DATA)

§

GLOBAL_POSITION_INT_COV(GLOBAL_POSITION_INT_COV_DATA)

§

GPS_STATUS(GPS_STATUS_DATA)

§

RESPONSE_EVENT_ERROR(RESPONSE_EVENT_ERROR_DATA)

Trait Implementations§

source§

impl Clone for MavMessage

source§

fn clone(&self) -> MavMessage

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for MavMessage

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<'de> Deserialize<'de> for MavMessage

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Message for MavMessage

source§

fn parse( version: MavlinkVersion, id: u32, diff --git a/mavlink/ardupilotmega/struct.AdsbFlags.html b/mavlink/ardupilotmega/struct.AdsbFlags.html index e2453ddf09..e4a85bfff0 100644 --- a/mavlink/ardupilotmega/struct.AdsbFlags.html +++ b/mavlink/ardupilotmega/struct.AdsbFlags.html @@ -56,17 +56,17 @@

§Safety
between Self::all() and self (e.g. Self::all() - self)

This is equivalent to using the ! operator (e.g. ops::Not), as in !flags.

-
source§

impl AdsbFlags

source

pub const DEFAULT: Self = Self::ADSB_FLAGS_VALID_COORDS

Trait Implementations§

source§

impl Binary for AdsbFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for AdsbFlags

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

+
source§

impl AdsbFlags

source

pub const DEFAULT: Self = Self::ADSB_FLAGS_VALID_COORDS

Trait Implementations§

source§

impl Binary for AdsbFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for AdsbFlags

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

§

type Output = AdsbFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for AdsbFlags

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

source§

impl BitOr for AdsbFlags

source§

fn bitor(self, other: AdsbFlags) -> Self

Returns the union of the two sets of flags.

-
§

type Output = AdsbFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for AdsbFlags

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
§

type Output = AdsbFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for AdsbFlags

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

source§

impl BitXor for AdsbFlags

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

-
§

type Output = AdsbFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for AdsbFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

-
source§

impl Clone for AdsbFlags

source§

fn clone(&self) -> AdsbFlags

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for AdsbFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for AdsbFlags

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for AdsbFlags

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where +

§

type Output = AdsbFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for AdsbFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
source§

impl Clone for AdsbFlags

source§

fn clone(&self) -> AdsbFlags

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for AdsbFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for AdsbFlags

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for AdsbFlags

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Extend<AdsbFlags> for AdsbFlags

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<AdsbFlags> for AdsbFlags

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for AdsbFlags

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for AdsbFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for AdsbFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = AdsbFlags

The resulting type after applying the ! operator.
source§

impl Octal for AdsbFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for AdsbFlags

source§

fn cmp(&self, other: &AdsbFlags) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for AdsbFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for AdsbFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

+
§

type Output = AdsbFlags

The resulting type after applying the ! operator.
source§

impl Octal for AdsbFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for AdsbFlags

source§

fn cmp(&self, other: &AdsbFlags) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for AdsbFlags

source§

fn eq(&self, other: &AdsbFlags) -> bool

This method tests for self and other values to be equal, and is used @@ -75,8 +75,8 @@
§Safety
operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl Serialize for AdsbFlags

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Sub for AdsbFlags

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

-
§

type Output = AdsbFlags

The resulting type after applying the - operator.
source§

impl SubAssign for AdsbFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

-
source§

impl UpperHex for AdsbFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for AdsbFlags

source§

impl Eq for AdsbFlags

source§

impl StructuralPartialEq for AdsbFlags

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

§

type Output = AdsbFlags

The resulting type after applying the - operator.
source§

impl SubAssign for AdsbFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

+
source§

impl UpperHex for AdsbFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for AdsbFlags

source§

impl Eq for AdsbFlags

source§

impl StructuralPartialEq for AdsbFlags

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/mavlink/ardupilotmega/struct.AisFlags.html b/mavlink/ardupilotmega/struct.AisFlags.html index 5479270547..005941ac5e 100644 --- a/mavlink/ardupilotmega/struct.AisFlags.html +++ b/mavlink/ardupilotmega/struct.AisFlags.html @@ -56,17 +56,17 @@
§Safety
between Self::all() and self (e.g. Self::all() - self)

This is equivalent to using the ! operator (e.g. ops::Not), as in !flags.

-
source§

impl AisFlags

source

pub const DEFAULT: Self = Self::AIS_FLAGS_POSITION_ACCURACY

Trait Implementations§

source§

impl Binary for AisFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for AisFlags

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

-
§

type Output = AisFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for AisFlags

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

+
source§

impl AisFlags

source

pub const DEFAULT: Self = Self::AIS_FLAGS_POSITION_ACCURACY

Trait Implementations§

source§

impl Binary for AisFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for AisFlags

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

+
§

type Output = AisFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for AisFlags

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

source§

impl BitOr for AisFlags

source§

fn bitor(self, other: AisFlags) -> Self

Returns the union of the two sets of flags.

-
§

type Output = AisFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for AisFlags

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
§

type Output = AisFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for AisFlags

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

source§

impl BitXor for AisFlags

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

§

type Output = AisFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for AisFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

-
source§

impl Clone for AisFlags

source§

fn clone(&self) -> AisFlags

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for AisFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for AisFlags

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for AisFlags

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where +

source§

impl Clone for AisFlags

source§

fn clone(&self) -> AisFlags

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for AisFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for AisFlags

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for AisFlags

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Extend<AisFlags> for AisFlags

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<AisFlags> for AisFlags

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for AisFlags

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for AisFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for AisFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = AisFlags

The resulting type after applying the ! operator.
source§

impl Octal for AisFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for AisFlags

source§

fn cmp(&self, other: &AisFlags) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for AisFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for AisFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

+
§

type Output = AisFlags

The resulting type after applying the ! operator.
source§

impl Octal for AisFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for AisFlags

source§

fn cmp(&self, other: &AisFlags) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for AisFlags

source§

fn eq(&self, other: &AisFlags) -> bool

This method tests for self and other values to be equal, and is used @@ -75,7 +75,7 @@
§Safety
operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl Serialize for AisFlags

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Sub for AisFlags

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

-
§

type Output = AisFlags

The resulting type after applying the - operator.
source§

impl SubAssign for AisFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

+
§

type Output = AisFlags

The resulting type after applying the - operator.
source§

impl SubAssign for AisFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

source§

impl UpperHex for AisFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for AisFlags

source§

impl Eq for AisFlags

source§

impl StructuralPartialEq for AisFlags

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where diff --git a/mavlink/ardupilotmega/struct.AttitudeTargetTypemask.html b/mavlink/ardupilotmega/struct.AttitudeTargetTypemask.html index 4d9bda6e0b..683ffed826 100644 --- a/mavlink/ardupilotmega/struct.AttitudeTargetTypemask.html +++ b/mavlink/ardupilotmega/struct.AttitudeTargetTypemask.html @@ -57,16 +57,16 @@
§Safety

This is equivalent to using the ! operator (e.g. ops::Not), as in !flags.

source§

impl AttitudeTargetTypemask

source

pub const DEFAULT: Self = Self::ATTITUDE_TARGET_TYPEMASK_BODY_ROLL_RATE_IGNORE

Trait Implementations§

source§

impl Binary for AttitudeTargetTypemask

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for AttitudeTargetTypemask

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

-
§

type Output = AttitudeTargetTypemask

The resulting type after applying the & operator.
source§

impl BitAndAssign for AttitudeTargetTypemask

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

+
§

type Output = AttitudeTargetTypemask

The resulting type after applying the & operator.
source§

impl BitAndAssign for AttitudeTargetTypemask

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

source§

impl BitOr for AttitudeTargetTypemask

source§

fn bitor(self, other: AttitudeTargetTypemask) -> Self

Returns the union of the two sets of flags.

-
§

type Output = AttitudeTargetTypemask

The resulting type after applying the | operator.
source§

impl BitOrAssign for AttitudeTargetTypemask

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
§

type Output = AttitudeTargetTypemask

The resulting type after applying the | operator.
source§

impl BitOrAssign for AttitudeTargetTypemask

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

source§

impl BitXor for AttitudeTargetTypemask

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

-
§

type Output = AttitudeTargetTypemask

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for AttitudeTargetTypemask

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
§

type Output = AttitudeTargetTypemask

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for AttitudeTargetTypemask

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

source§

impl Clone for AttitudeTargetTypemask

source§

fn clone(&self) -> AttitudeTargetTypemask

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for AttitudeTargetTypemask

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for AttitudeTargetTypemask

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for AttitudeTargetTypemask

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Extend<AttitudeTargetTypemask> for AttitudeTargetTypemask

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<AttitudeTargetTypemask> for AttitudeTargetTypemask

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for AttitudeTargetTypemask

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for AttitudeTargetTypemask

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for AttitudeTargetTypemask

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = AttitudeTargetTypemask

The resulting type after applying the ! operator.
source§

impl Octal for AttitudeTargetTypemask

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for AttitudeTargetTypemask

source§

fn cmp(&self, other: &AttitudeTargetTypemask) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for AttitudeTargetTypemask

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for AttitudeTargetTypemask

source§

fn not(self) -> Self

Returns the complement of this set of flags.

+
§

type Output = AttitudeTargetTypemask

The resulting type after applying the ! operator.
source§

impl Octal for AttitudeTargetTypemask

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for AttitudeTargetTypemask

source§

fn cmp(&self, other: &AttitudeTargetTypemask) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for AttitudeTargetTypemask

source§

fn eq(&self, other: &AttitudeTargetTypemask) -> bool

This method tests for self and other values to be equal, and is used @@ -75,8 +75,8 @@
§Safety
operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl Serialize for AttitudeTargetTypemask

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Sub for AttitudeTargetTypemask

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

-
§

type Output = AttitudeTargetTypemask

The resulting type after applying the - operator.
source§

impl SubAssign for AttitudeTargetTypemask

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

-
source§

impl UpperHex for AttitudeTargetTypemask

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for AttitudeTargetTypemask

source§

impl Eq for AttitudeTargetTypemask

source§

impl StructuralPartialEq for AttitudeTargetTypemask

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

§

type Output = AttitudeTargetTypemask

The resulting type after applying the - operator.
source§

impl SubAssign for AttitudeTargetTypemask

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

+
source§

impl UpperHex for AttitudeTargetTypemask

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for AttitudeTargetTypemask

source§

impl Eq for AttitudeTargetTypemask

source§

impl StructuralPartialEq for AttitudeTargetTypemask

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/mavlink/ardupilotmega/struct.CameraCapFlags.html b/mavlink/ardupilotmega/struct.CameraCapFlags.html index 1a7d352f5b..9ffe835fb4 100644 --- a/mavlink/ardupilotmega/struct.CameraCapFlags.html +++ b/mavlink/ardupilotmega/struct.CameraCapFlags.html @@ -56,17 +56,17 @@
§Safety
between Self::all() and self (e.g. Self::all() - self)

This is equivalent to using the ! operator (e.g. ops::Not), as in !flags.

-
source§

impl CameraCapFlags

source

pub const DEFAULT: Self = Self::CAMERA_CAP_FLAGS_CAPTURE_VIDEO

Trait Implementations§

source§

impl Binary for CameraCapFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for CameraCapFlags

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

-
§

type Output = CameraCapFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for CameraCapFlags

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

+
source§

impl CameraCapFlags

source

pub const DEFAULT: Self = Self::CAMERA_CAP_FLAGS_CAPTURE_VIDEO

Trait Implementations§

source§

impl Binary for CameraCapFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for CameraCapFlags

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

+
§

type Output = CameraCapFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for CameraCapFlags

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

source§

impl BitOr for CameraCapFlags

source§

fn bitor(self, other: CameraCapFlags) -> Self

Returns the union of the two sets of flags.

-
§

type Output = CameraCapFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for CameraCapFlags

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
§

type Output = CameraCapFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for CameraCapFlags

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

source§

impl BitXor for CameraCapFlags

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

-
§

type Output = CameraCapFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for CameraCapFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
§

type Output = CameraCapFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for CameraCapFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

source§

impl Clone for CameraCapFlags

source§

fn clone(&self) -> CameraCapFlags

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for CameraCapFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for CameraCapFlags

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for CameraCapFlags

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Extend<CameraCapFlags> for CameraCapFlags

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<CameraCapFlags> for CameraCapFlags

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for CameraCapFlags

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for CameraCapFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for CameraCapFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = CameraCapFlags

The resulting type after applying the ! operator.
source§

impl Octal for CameraCapFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for CameraCapFlags

source§

fn cmp(&self, other: &CameraCapFlags) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for CameraCapFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for CameraCapFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

+
§

type Output = CameraCapFlags

The resulting type after applying the ! operator.
source§

impl Octal for CameraCapFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for CameraCapFlags

source§

fn cmp(&self, other: &CameraCapFlags) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for CameraCapFlags

source§

fn eq(&self, other: &CameraCapFlags) -> bool

This method tests for self and other values to be equal, and is used @@ -75,7 +75,7 @@
§Safety
operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl Serialize for CameraCapFlags

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Sub for CameraCapFlags

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

-
§

type Output = CameraCapFlags

The resulting type after applying the - operator.
source§

impl SubAssign for CameraCapFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

+
§

type Output = CameraCapFlags

The resulting type after applying the - operator.
source§

impl SubAssign for CameraCapFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

source§

impl UpperHex for CameraCapFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for CameraCapFlags

source§

impl Eq for CameraCapFlags

source§

impl StructuralPartialEq for CameraCapFlags

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where diff --git a/mavlink/ardupilotmega/struct.EkfStatusFlags.html b/mavlink/ardupilotmega/struct.EkfStatusFlags.html index 09acc402de..25c1fd4a2f 100644 --- a/mavlink/ardupilotmega/struct.EkfStatusFlags.html +++ b/mavlink/ardupilotmega/struct.EkfStatusFlags.html @@ -56,17 +56,17 @@
§Safety
between Self::all() and self (e.g. Self::all() - self)

This is equivalent to using the ! operator (e.g. ops::Not), as in !flags.

-

source§

impl EkfStatusFlags

source

pub const DEFAULT: Self = Self::EKF_ATTITUDE

Trait Implementations§

source§

impl Binary for EkfStatusFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for EkfStatusFlags

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

-
§

type Output = EkfStatusFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for EkfStatusFlags

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

+
source§

impl EkfStatusFlags

source

pub const DEFAULT: Self = Self::EKF_ATTITUDE

Trait Implementations§

source§

impl Binary for EkfStatusFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for EkfStatusFlags

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

+
§

type Output = EkfStatusFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for EkfStatusFlags

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

source§

impl BitOr for EkfStatusFlags

source§

fn bitor(self, other: EkfStatusFlags) -> Self

Returns the union of the two sets of flags.

-
§

type Output = EkfStatusFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for EkfStatusFlags

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
§

type Output = EkfStatusFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for EkfStatusFlags

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

source§

impl BitXor for EkfStatusFlags

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

-
§

type Output = EkfStatusFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for EkfStatusFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

-
source§

impl Clone for EkfStatusFlags

source§

fn clone(&self) -> EkfStatusFlags

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for EkfStatusFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for EkfStatusFlags

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for EkfStatusFlags

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where +

§

type Output = EkfStatusFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for EkfStatusFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
source§

impl Clone for EkfStatusFlags

source§

fn clone(&self) -> EkfStatusFlags

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for EkfStatusFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for EkfStatusFlags

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for EkfStatusFlags

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Extend<EkfStatusFlags> for EkfStatusFlags

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<EkfStatusFlags> for EkfStatusFlags

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for EkfStatusFlags

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for EkfStatusFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for EkfStatusFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = EkfStatusFlags

The resulting type after applying the ! operator.
source§

impl Octal for EkfStatusFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for EkfStatusFlags

source§

fn cmp(&self, other: &EkfStatusFlags) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for EkfStatusFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for EkfStatusFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

+
§

type Output = EkfStatusFlags

The resulting type after applying the ! operator.
source§

impl Octal for EkfStatusFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for EkfStatusFlags

source§

fn cmp(&self, other: &EkfStatusFlags) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for EkfStatusFlags

source§

fn eq(&self, other: &EkfStatusFlags) -> bool

This method tests for self and other values to be equal, and is used @@ -75,8 +75,8 @@
§Safety
operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl Serialize for EkfStatusFlags

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Sub for EkfStatusFlags

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

-
§

type Output = EkfStatusFlags

The resulting type after applying the - operator.
source§

impl SubAssign for EkfStatusFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

-
source§

impl UpperHex for EkfStatusFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for EkfStatusFlags

source§

impl Eq for EkfStatusFlags

source§

impl StructuralPartialEq for EkfStatusFlags

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

§

type Output = EkfStatusFlags

The resulting type after applying the - operator.
source§

impl SubAssign for EkfStatusFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

+
source§

impl UpperHex for EkfStatusFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for EkfStatusFlags

source§

impl Eq for EkfStatusFlags

source§

impl StructuralPartialEq for EkfStatusFlags

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/mavlink/ardupilotmega/struct.EscFailureFlags.html b/mavlink/ardupilotmega/struct.EscFailureFlags.html index 57219a4657..5553cc533d 100644 --- a/mavlink/ardupilotmega/struct.EscFailureFlags.html +++ b/mavlink/ardupilotmega/struct.EscFailureFlags.html @@ -56,17 +56,17 @@
§Safety
between Self::all() and self (e.g. Self::all() - self)

This is equivalent to using the ! operator (e.g. ops::Not), as in !flags.

-
source§

impl EscFailureFlags

source

pub const DEFAULT: Self = Self::ESC_FAILURE_NONE

Trait Implementations§

source§

impl Binary for EscFailureFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for EscFailureFlags

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

-
§

type Output = EscFailureFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for EscFailureFlags

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

+
source§

impl EscFailureFlags

source

pub const DEFAULT: Self = Self::ESC_FAILURE_NONE

Trait Implementations§

source§

impl Binary for EscFailureFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for EscFailureFlags

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

+
§

type Output = EscFailureFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for EscFailureFlags

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

source§

impl BitOr for EscFailureFlags

source§

fn bitor(self, other: EscFailureFlags) -> Self

Returns the union of the two sets of flags.

-
§

type Output = EscFailureFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for EscFailureFlags

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
§

type Output = EscFailureFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for EscFailureFlags

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

source§

impl BitXor for EscFailureFlags

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

-
§

type Output = EscFailureFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for EscFailureFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

-
source§

impl Clone for EscFailureFlags

source§

fn clone(&self) -> EscFailureFlags

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for EscFailureFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for EscFailureFlags

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for EscFailureFlags

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where +

§

type Output = EscFailureFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for EscFailureFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
source§

impl Clone for EscFailureFlags

source§

fn clone(&self) -> EscFailureFlags

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for EscFailureFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for EscFailureFlags

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for EscFailureFlags

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Extend<EscFailureFlags> for EscFailureFlags

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<EscFailureFlags> for EscFailureFlags

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for EscFailureFlags

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for EscFailureFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for EscFailureFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = EscFailureFlags

The resulting type after applying the ! operator.
source§

impl Octal for EscFailureFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for EscFailureFlags

source§

fn cmp(&self, other: &EscFailureFlags) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for EscFailureFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for EscFailureFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

+
§

type Output = EscFailureFlags

The resulting type after applying the ! operator.
source§

impl Octal for EscFailureFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for EscFailureFlags

source§

fn cmp(&self, other: &EscFailureFlags) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for EscFailureFlags

source§

fn eq(&self, other: &EscFailureFlags) -> bool

This method tests for self and other values to be equal, and is used @@ -75,8 +75,8 @@
§Safety
operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl Serialize for EscFailureFlags

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Sub for EscFailureFlags

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

-
§

type Output = EscFailureFlags

The resulting type after applying the - operator.
source§

impl SubAssign for EscFailureFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

-
source§

impl UpperHex for EscFailureFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for EscFailureFlags

source§

impl Eq for EscFailureFlags

source§

impl StructuralPartialEq for EscFailureFlags

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

§

type Output = EscFailureFlags

The resulting type after applying the - operator.
source§

impl SubAssign for EscFailureFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

+
source§

impl UpperHex for EscFailureFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for EscFailureFlags

source§

impl Eq for EscFailureFlags

source§

impl StructuralPartialEq for EscFailureFlags

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/mavlink/ardupilotmega/struct.EstimatorStatusFlags.html b/mavlink/ardupilotmega/struct.EstimatorStatusFlags.html index ddadaa7671..20945de28f 100644 --- a/mavlink/ardupilotmega/struct.EstimatorStatusFlags.html +++ b/mavlink/ardupilotmega/struct.EstimatorStatusFlags.html @@ -56,16 +56,16 @@
§Safety
between Self::all() and self (e.g. Self::all() - self)

This is equivalent to using the ! operator (e.g. ops::Not), as in !flags.

-
source§

impl EstimatorStatusFlags

source

pub const DEFAULT: Self = Self::ESTIMATOR_ATTITUDE

Trait Implementations§

source§

impl Binary for EstimatorStatusFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for EstimatorStatusFlags

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

-
§

type Output = EstimatorStatusFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for EstimatorStatusFlags

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

+
source§

impl EstimatorStatusFlags

source

pub const DEFAULT: Self = Self::ESTIMATOR_ATTITUDE

Trait Implementations§

source§

impl Binary for EstimatorStatusFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for EstimatorStatusFlags

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

+
§

type Output = EstimatorStatusFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for EstimatorStatusFlags

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

source§

impl BitOr for EstimatorStatusFlags

source§

fn bitor(self, other: EstimatorStatusFlags) -> Self

Returns the union of the two sets of flags.

§

type Output = EstimatorStatusFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for EstimatorStatusFlags

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

source§

impl BitXor for EstimatorStatusFlags

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

§

type Output = EstimatorStatusFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for EstimatorStatusFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

-
source§

impl Clone for EstimatorStatusFlags

source§

fn clone(&self) -> EstimatorStatusFlags

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for EstimatorStatusFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for EstimatorStatusFlags

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for EstimatorStatusFlags

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where +

source§

impl Clone for EstimatorStatusFlags

source§

fn clone(&self) -> EstimatorStatusFlags

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for EstimatorStatusFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for EstimatorStatusFlags

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for EstimatorStatusFlags

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Extend<EstimatorStatusFlags> for EstimatorStatusFlags

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<EstimatorStatusFlags> for EstimatorStatusFlags

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for EstimatorStatusFlags

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for EstimatorStatusFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for EstimatorStatusFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

+ Self: Sized,
Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for EstimatorStatusFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for EstimatorStatusFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

§

type Output = EstimatorStatusFlags

The resulting type after applying the ! operator.
source§

impl Octal for EstimatorStatusFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for EstimatorStatusFlags

source§

fn cmp(&self, other: &EstimatorStatusFlags) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where @@ -75,8 +75,8 @@
§Safety
operator. Read more

1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl Serialize for EstimatorStatusFlags

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Sub for EstimatorStatusFlags

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

-
§

type Output = EstimatorStatusFlags

The resulting type after applying the - operator.
source§

impl SubAssign for EstimatorStatusFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

-
source§

impl UpperHex for EstimatorStatusFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for EstimatorStatusFlags

source§

impl Eq for EstimatorStatusFlags

source§

impl StructuralPartialEq for EstimatorStatusFlags

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

§

type Output = EstimatorStatusFlags

The resulting type after applying the - operator.
source§

impl SubAssign for EstimatorStatusFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

+
source§

impl UpperHex for EstimatorStatusFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for EstimatorStatusFlags

source§

impl Eq for EstimatorStatusFlags

source§

impl StructuralPartialEq for EstimatorStatusFlags

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/mavlink/ardupilotmega/struct.GimbalDeviceCapFlags.html b/mavlink/ardupilotmega/struct.GimbalDeviceCapFlags.html index 02c210131e..ca152995da 100644 --- a/mavlink/ardupilotmega/struct.GimbalDeviceCapFlags.html +++ b/mavlink/ardupilotmega/struct.GimbalDeviceCapFlags.html @@ -57,16 +57,16 @@
§Safety

This is equivalent to using the ! operator (e.g. ops::Not), as in !flags.

source§

impl GimbalDeviceCapFlags

source

pub const DEFAULT: Self = Self::GIMBAL_DEVICE_CAP_FLAGS_HAS_RETRACT

Trait Implementations§

source§

impl Binary for GimbalDeviceCapFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for GimbalDeviceCapFlags

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

-
§

type Output = GimbalDeviceCapFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for GimbalDeviceCapFlags

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

+
§

type Output = GimbalDeviceCapFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for GimbalDeviceCapFlags

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

source§

impl BitOr for GimbalDeviceCapFlags

source§

fn bitor(self, other: GimbalDeviceCapFlags) -> Self

Returns the union of the two sets of flags.

§

type Output = GimbalDeviceCapFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for GimbalDeviceCapFlags

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

source§

impl BitXor for GimbalDeviceCapFlags

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

-
§

type Output = GimbalDeviceCapFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for GimbalDeviceCapFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

-
source§

impl Clone for GimbalDeviceCapFlags

source§

fn clone(&self) -> GimbalDeviceCapFlags

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for GimbalDeviceCapFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for GimbalDeviceCapFlags

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for GimbalDeviceCapFlags

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where +

§

type Output = GimbalDeviceCapFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for GimbalDeviceCapFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
source§

impl Clone for GimbalDeviceCapFlags

source§

fn clone(&self) -> GimbalDeviceCapFlags

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for GimbalDeviceCapFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for GimbalDeviceCapFlags

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for GimbalDeviceCapFlags

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Extend<GimbalDeviceCapFlags> for GimbalDeviceCapFlags

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<GimbalDeviceCapFlags> for GimbalDeviceCapFlags

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for GimbalDeviceCapFlags

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for GimbalDeviceCapFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for GimbalDeviceCapFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = GimbalDeviceCapFlags

The resulting type after applying the ! operator.
source§

impl Octal for GimbalDeviceCapFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for GimbalDeviceCapFlags

source§

fn cmp(&self, other: &GimbalDeviceCapFlags) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for GimbalDeviceCapFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for GimbalDeviceCapFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

+
§

type Output = GimbalDeviceCapFlags

The resulting type after applying the ! operator.
source§

impl Octal for GimbalDeviceCapFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for GimbalDeviceCapFlags

source§

fn cmp(&self, other: &GimbalDeviceCapFlags) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for GimbalDeviceCapFlags

source§

fn eq(&self, other: &GimbalDeviceCapFlags) -> bool

This method tests for self and other values to be equal, and is used @@ -75,8 +75,8 @@
§Safety
operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl Serialize for GimbalDeviceCapFlags

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Sub for GimbalDeviceCapFlags

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

-
§

type Output = GimbalDeviceCapFlags

The resulting type after applying the - operator.
source§

impl SubAssign for GimbalDeviceCapFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

-
source§

impl UpperHex for GimbalDeviceCapFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for GimbalDeviceCapFlags

source§

impl Eq for GimbalDeviceCapFlags

source§

impl StructuralPartialEq for GimbalDeviceCapFlags

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

§

type Output = GimbalDeviceCapFlags

The resulting type after applying the - operator.
source§

impl SubAssign for GimbalDeviceCapFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

+
source§

impl UpperHex for GimbalDeviceCapFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for GimbalDeviceCapFlags

source§

impl Eq for GimbalDeviceCapFlags

source§

impl StructuralPartialEq for GimbalDeviceCapFlags

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/mavlink/ardupilotmega/struct.GimbalDeviceErrorFlags.html b/mavlink/ardupilotmega/struct.GimbalDeviceErrorFlags.html index 4a328d5415..a712ecc8c8 100644 --- a/mavlink/ardupilotmega/struct.GimbalDeviceErrorFlags.html +++ b/mavlink/ardupilotmega/struct.GimbalDeviceErrorFlags.html @@ -56,17 +56,17 @@
§Safety
between Self::all() and self (e.g. Self::all() - self)

This is equivalent to using the ! operator (e.g. ops::Not), as in !flags.

-
source§

impl GimbalDeviceErrorFlags

source

pub const DEFAULT: Self = Self::GIMBAL_DEVICE_ERROR_FLAGS_AT_ROLL_LIMIT

Trait Implementations§

source§

impl Binary for GimbalDeviceErrorFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for GimbalDeviceErrorFlags

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

-
§

type Output = GimbalDeviceErrorFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for GimbalDeviceErrorFlags

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

+
source§

impl GimbalDeviceErrorFlags

source

pub const DEFAULT: Self = Self::GIMBAL_DEVICE_ERROR_FLAGS_AT_ROLL_LIMIT

Trait Implementations§

source§

impl Binary for GimbalDeviceErrorFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for GimbalDeviceErrorFlags

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

+
§

type Output = GimbalDeviceErrorFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for GimbalDeviceErrorFlags

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

source§

impl BitOr for GimbalDeviceErrorFlags

source§

fn bitor(self, other: GimbalDeviceErrorFlags) -> Self

Returns the union of the two sets of flags.

§

type Output = GimbalDeviceErrorFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for GimbalDeviceErrorFlags

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

source§

impl BitXor for GimbalDeviceErrorFlags

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

-
§

type Output = GimbalDeviceErrorFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for GimbalDeviceErrorFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

-
source§

impl Clone for GimbalDeviceErrorFlags

source§

fn clone(&self) -> GimbalDeviceErrorFlags

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for GimbalDeviceErrorFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for GimbalDeviceErrorFlags

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for GimbalDeviceErrorFlags

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where +

§

type Output = GimbalDeviceErrorFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for GimbalDeviceErrorFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
source§

impl Clone for GimbalDeviceErrorFlags

source§

fn clone(&self) -> GimbalDeviceErrorFlags

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for GimbalDeviceErrorFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for GimbalDeviceErrorFlags

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for GimbalDeviceErrorFlags

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Extend<GimbalDeviceErrorFlags> for GimbalDeviceErrorFlags

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<GimbalDeviceErrorFlags> for GimbalDeviceErrorFlags

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for GimbalDeviceErrorFlags

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for GimbalDeviceErrorFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for GimbalDeviceErrorFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = GimbalDeviceErrorFlags

The resulting type after applying the ! operator.
source§

impl Octal for GimbalDeviceErrorFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for GimbalDeviceErrorFlags

source§

fn cmp(&self, other: &GimbalDeviceErrorFlags) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where +

§

type Output = GimbalDeviceErrorFlags

The resulting type after applying the ! operator.
source§

impl Octal for GimbalDeviceErrorFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for GimbalDeviceErrorFlags

source§

fn cmp(&self, other: &GimbalDeviceErrorFlags) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for GimbalDeviceErrorFlags

source§

fn eq(&self, other: &GimbalDeviceErrorFlags) -> bool

This method tests for self and other values to be equal, and is used @@ -75,8 +75,8 @@
§Safety
operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl Serialize for GimbalDeviceErrorFlags

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Sub for GimbalDeviceErrorFlags

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

-
§

type Output = GimbalDeviceErrorFlags

The resulting type after applying the - operator.
source§

impl SubAssign for GimbalDeviceErrorFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

-
source§

impl UpperHex for GimbalDeviceErrorFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for GimbalDeviceErrorFlags

source§

impl Eq for GimbalDeviceErrorFlags

source§

impl StructuralPartialEq for GimbalDeviceErrorFlags

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

§

type Output = GimbalDeviceErrorFlags

The resulting type after applying the - operator.
source§

impl SubAssign for GimbalDeviceErrorFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

+
source§

impl UpperHex for GimbalDeviceErrorFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for GimbalDeviceErrorFlags

source§

impl Eq for GimbalDeviceErrorFlags

source§

impl StructuralPartialEq for GimbalDeviceErrorFlags

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/mavlink/ardupilotmega/struct.GimbalDeviceFlags.html b/mavlink/ardupilotmega/struct.GimbalDeviceFlags.html index 36d8cbb56c..cff0bcbb22 100644 --- a/mavlink/ardupilotmega/struct.GimbalDeviceFlags.html +++ b/mavlink/ardupilotmega/struct.GimbalDeviceFlags.html @@ -56,17 +56,17 @@
§Safety
between Self::all() and self (e.g. Self::all() - self)

This is equivalent to using the ! operator (e.g. ops::Not), as in !flags.

-
source§

impl GimbalDeviceFlags

source

pub const DEFAULT: Self = Self::GIMBAL_DEVICE_FLAGS_RETRACT

Trait Implementations§

source§

impl Binary for GimbalDeviceFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for GimbalDeviceFlags

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

-
§

type Output = GimbalDeviceFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for GimbalDeviceFlags

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

+
source§

impl GimbalDeviceFlags

source

pub const DEFAULT: Self = Self::GIMBAL_DEVICE_FLAGS_RETRACT

Trait Implementations§

source§

impl Binary for GimbalDeviceFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for GimbalDeviceFlags

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

+
§

type Output = GimbalDeviceFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for GimbalDeviceFlags

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

source§

impl BitOr for GimbalDeviceFlags

source§

fn bitor(self, other: GimbalDeviceFlags) -> Self

Returns the union of the two sets of flags.

-
§

type Output = GimbalDeviceFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for GimbalDeviceFlags

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
§

type Output = GimbalDeviceFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for GimbalDeviceFlags

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

source§

impl BitXor for GimbalDeviceFlags

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

-
§

type Output = GimbalDeviceFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for GimbalDeviceFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
§

type Output = GimbalDeviceFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for GimbalDeviceFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

source§

impl Clone for GimbalDeviceFlags

source§

fn clone(&self) -> GimbalDeviceFlags

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for GimbalDeviceFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for GimbalDeviceFlags

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for GimbalDeviceFlags

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Extend<GimbalDeviceFlags> for GimbalDeviceFlags

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<GimbalDeviceFlags> for GimbalDeviceFlags

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for GimbalDeviceFlags

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for GimbalDeviceFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for GimbalDeviceFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = GimbalDeviceFlags

The resulting type after applying the ! operator.
source§

impl Octal for GimbalDeviceFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for GimbalDeviceFlags

source§

fn cmp(&self, other: &GimbalDeviceFlags) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for GimbalDeviceFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for GimbalDeviceFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

+
§

type Output = GimbalDeviceFlags

The resulting type after applying the ! operator.
source§

impl Octal for GimbalDeviceFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for GimbalDeviceFlags

source§

fn cmp(&self, other: &GimbalDeviceFlags) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for GimbalDeviceFlags

source§

fn eq(&self, other: &GimbalDeviceFlags) -> bool

This method tests for self and other values to be equal, and is used @@ -75,8 +75,8 @@
§Safety
operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl Serialize for GimbalDeviceFlags

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Sub for GimbalDeviceFlags

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

-
§

type Output = GimbalDeviceFlags

The resulting type after applying the - operator.
source§

impl SubAssign for GimbalDeviceFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

-
source§

impl UpperHex for GimbalDeviceFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for GimbalDeviceFlags

source§

impl Eq for GimbalDeviceFlags

source§

impl StructuralPartialEq for GimbalDeviceFlags

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

§

type Output = GimbalDeviceFlags

The resulting type after applying the - operator.
source§

impl SubAssign for GimbalDeviceFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

+
source§

impl UpperHex for GimbalDeviceFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for GimbalDeviceFlags

source§

impl Eq for GimbalDeviceFlags

source§

impl StructuralPartialEq for GimbalDeviceFlags

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/mavlink/ardupilotmega/struct.GimbalManagerCapFlags.html b/mavlink/ardupilotmega/struct.GimbalManagerCapFlags.html index 50f3566f40..43fade1305 100644 --- a/mavlink/ardupilotmega/struct.GimbalManagerCapFlags.html +++ b/mavlink/ardupilotmega/struct.GimbalManagerCapFlags.html @@ -56,17 +56,17 @@
§Safety
between Self::all() and self (e.g. Self::all() - self)

This is equivalent to using the ! operator (e.g. ops::Not), as in !flags.

-
source§

impl GimbalManagerCapFlags

source

pub const DEFAULT: Self = Self::GIMBAL_MANAGER_CAP_FLAGS_HAS_RETRACT

Trait Implementations§

source§

impl Binary for GimbalManagerCapFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for GimbalManagerCapFlags

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

-
§

type Output = GimbalManagerCapFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for GimbalManagerCapFlags

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

+
source§

impl GimbalManagerCapFlags

source

pub const DEFAULT: Self = Self::GIMBAL_MANAGER_CAP_FLAGS_HAS_RETRACT

Trait Implementations§

source§

impl Binary for GimbalManagerCapFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for GimbalManagerCapFlags

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

+
§

type Output = GimbalManagerCapFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for GimbalManagerCapFlags

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

source§

impl BitOr for GimbalManagerCapFlags

source§

fn bitor(self, other: GimbalManagerCapFlags) -> Self

Returns the union of the two sets of flags.

-
§

type Output = GimbalManagerCapFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for GimbalManagerCapFlags

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
§

type Output = GimbalManagerCapFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for GimbalManagerCapFlags

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

source§

impl BitXor for GimbalManagerCapFlags

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

-
§

type Output = GimbalManagerCapFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for GimbalManagerCapFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
§

type Output = GimbalManagerCapFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for GimbalManagerCapFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

source§

impl Clone for GimbalManagerCapFlags

source§

fn clone(&self) -> GimbalManagerCapFlags

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for GimbalManagerCapFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for GimbalManagerCapFlags

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for GimbalManagerCapFlags

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Extend<GimbalManagerCapFlags> for GimbalManagerCapFlags

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<GimbalManagerCapFlags> for GimbalManagerCapFlags

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for GimbalManagerCapFlags

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for GimbalManagerCapFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for GimbalManagerCapFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = GimbalManagerCapFlags

The resulting type after applying the ! operator.
source§

impl Octal for GimbalManagerCapFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for GimbalManagerCapFlags

source§

fn cmp(&self, other: &GimbalManagerCapFlags) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for GimbalManagerCapFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for GimbalManagerCapFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

+
§

type Output = GimbalManagerCapFlags

The resulting type after applying the ! operator.
source§

impl Octal for GimbalManagerCapFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for GimbalManagerCapFlags

source§

fn cmp(&self, other: &GimbalManagerCapFlags) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for GimbalManagerCapFlags

source§

fn eq(&self, other: &GimbalManagerCapFlags) -> bool

This method tests for self and other values to be equal, and is used @@ -76,7 +76,7 @@
§Safety
operator. Read more
source§

impl Serialize for GimbalManagerCapFlags

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Sub for GimbalManagerCapFlags

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

§

type Output = GimbalManagerCapFlags

The resulting type after applying the - operator.
source§

impl SubAssign for GimbalManagerCapFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

-
source§

impl UpperHex for GimbalManagerCapFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for GimbalManagerCapFlags

source§

impl Eq for GimbalManagerCapFlags

source§

impl StructuralPartialEq for GimbalManagerCapFlags

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

source§

impl UpperHex for GimbalManagerCapFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for GimbalManagerCapFlags

source§

impl Eq for GimbalManagerCapFlags

source§

impl StructuralPartialEq for GimbalManagerCapFlags

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/mavlink/ardupilotmega/struct.GoproHeartbeatFlags.html b/mavlink/ardupilotmega/struct.GoproHeartbeatFlags.html index 36483f79f7..a79d7a5c7c 100644 --- a/mavlink/ardupilotmega/struct.GoproHeartbeatFlags.html +++ b/mavlink/ardupilotmega/struct.GoproHeartbeatFlags.html @@ -56,17 +56,17 @@
§Safety
between Self::all() and self (e.g. Self::all() - self)

This is equivalent to using the ! operator (e.g. ops::Not), as in !flags.

-
source§

impl GoproHeartbeatFlags

source

pub const DEFAULT: Self = Self::GOPRO_FLAG_RECORDING

Trait Implementations§

source§

impl Binary for GoproHeartbeatFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for GoproHeartbeatFlags

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

+
source§

impl GoproHeartbeatFlags

source

pub const DEFAULT: Self = Self::GOPRO_FLAG_RECORDING

Trait Implementations§

source§

impl Binary for GoproHeartbeatFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for GoproHeartbeatFlags

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

§

type Output = GoproHeartbeatFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for GoproHeartbeatFlags

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

source§

impl BitOr for GoproHeartbeatFlags

source§

fn bitor(self, other: GoproHeartbeatFlags) -> Self

Returns the union of the two sets of flags.

-
§

type Output = GoproHeartbeatFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for GoproHeartbeatFlags

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
§

type Output = GoproHeartbeatFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for GoproHeartbeatFlags

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

source§

impl BitXor for GoproHeartbeatFlags

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

-
§

type Output = GoproHeartbeatFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for GoproHeartbeatFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

-
source§

impl Clone for GoproHeartbeatFlags

source§

fn clone(&self) -> GoproHeartbeatFlags

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for GoproHeartbeatFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for GoproHeartbeatFlags

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for GoproHeartbeatFlags

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where +

§

type Output = GoproHeartbeatFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for GoproHeartbeatFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
source§

impl Clone for GoproHeartbeatFlags

source§

fn clone(&self) -> GoproHeartbeatFlags

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for GoproHeartbeatFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for GoproHeartbeatFlags

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for GoproHeartbeatFlags

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Extend<GoproHeartbeatFlags> for GoproHeartbeatFlags

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<GoproHeartbeatFlags> for GoproHeartbeatFlags

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for GoproHeartbeatFlags

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for GoproHeartbeatFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for GoproHeartbeatFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = GoproHeartbeatFlags

The resulting type after applying the ! operator.
source§

impl Octal for GoproHeartbeatFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for GoproHeartbeatFlags

source§

fn cmp(&self, other: &GoproHeartbeatFlags) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where +

§

type Output = GoproHeartbeatFlags

The resulting type after applying the ! operator.
source§

impl Octal for GoproHeartbeatFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for GoproHeartbeatFlags

source§

fn cmp(&self, other: &GoproHeartbeatFlags) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for GoproHeartbeatFlags

source§

fn eq(&self, other: &GoproHeartbeatFlags) -> bool

This method tests for self and other values to be equal, and is used @@ -75,8 +75,8 @@
§Safety
operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl Serialize for GoproHeartbeatFlags

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Sub for GoproHeartbeatFlags

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

-
§

type Output = GoproHeartbeatFlags

The resulting type after applying the - operator.
source§

impl SubAssign for GoproHeartbeatFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

-
source§

impl UpperHex for GoproHeartbeatFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for GoproHeartbeatFlags

source§

impl Eq for GoproHeartbeatFlags

source§

impl StructuralPartialEq for GoproHeartbeatFlags

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

§

type Output = GoproHeartbeatFlags

The resulting type after applying the - operator.
source§

impl SubAssign for GoproHeartbeatFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

+
source§

impl UpperHex for GoproHeartbeatFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for GoproHeartbeatFlags

source§

impl Eq for GoproHeartbeatFlags

source§

impl StructuralPartialEq for GoproHeartbeatFlags

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/mavlink/ardupilotmega/struct.GpsInputIgnoreFlags.html b/mavlink/ardupilotmega/struct.GpsInputIgnoreFlags.html index ef6941ed4e..a90a07e143 100644 --- a/mavlink/ardupilotmega/struct.GpsInputIgnoreFlags.html +++ b/mavlink/ardupilotmega/struct.GpsInputIgnoreFlags.html @@ -56,17 +56,17 @@
§Safety
between Self::all() and self (e.g. Self::all() - self)

This is equivalent to using the ! operator (e.g. ops::Not), as in !flags.

-
source§

impl GpsInputIgnoreFlags

source

pub const DEFAULT: Self = Self::GPS_INPUT_IGNORE_FLAG_ALT

Trait Implementations§

source§

impl Binary for GpsInputIgnoreFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for GpsInputIgnoreFlags

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

-
§

type Output = GpsInputIgnoreFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for GpsInputIgnoreFlags

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

+
source§

impl GpsInputIgnoreFlags

source

pub const DEFAULT: Self = Self::GPS_INPUT_IGNORE_FLAG_ALT

Trait Implementations§

source§

impl Binary for GpsInputIgnoreFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for GpsInputIgnoreFlags

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

+
§

type Output = GpsInputIgnoreFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for GpsInputIgnoreFlags

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

source§

impl BitOr for GpsInputIgnoreFlags

source§

fn bitor(self, other: GpsInputIgnoreFlags) -> Self

Returns the union of the two sets of flags.

-
§

type Output = GpsInputIgnoreFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for GpsInputIgnoreFlags

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
§

type Output = GpsInputIgnoreFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for GpsInputIgnoreFlags

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

source§

impl BitXor for GpsInputIgnoreFlags

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

-
§

type Output = GpsInputIgnoreFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for GpsInputIgnoreFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

-
source§

impl Clone for GpsInputIgnoreFlags

source§

fn clone(&self) -> GpsInputIgnoreFlags

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for GpsInputIgnoreFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for GpsInputIgnoreFlags

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for GpsInputIgnoreFlags

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where +

§

type Output = GpsInputIgnoreFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for GpsInputIgnoreFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
source§

impl Clone for GpsInputIgnoreFlags

source§

fn clone(&self) -> GpsInputIgnoreFlags

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for GpsInputIgnoreFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for GpsInputIgnoreFlags

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for GpsInputIgnoreFlags

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Extend<GpsInputIgnoreFlags> for GpsInputIgnoreFlags

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<GpsInputIgnoreFlags> for GpsInputIgnoreFlags

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for GpsInputIgnoreFlags

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for GpsInputIgnoreFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for GpsInputIgnoreFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = GpsInputIgnoreFlags

The resulting type after applying the ! operator.
source§

impl Octal for GpsInputIgnoreFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for GpsInputIgnoreFlags

source§

fn cmp(&self, other: &GpsInputIgnoreFlags) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for GpsInputIgnoreFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for GpsInputIgnoreFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

+
§

type Output = GpsInputIgnoreFlags

The resulting type after applying the ! operator.
source§

impl Octal for GpsInputIgnoreFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for GpsInputIgnoreFlags

source§

fn cmp(&self, other: &GpsInputIgnoreFlags) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for GpsInputIgnoreFlags

source§

fn eq(&self, other: &GpsInputIgnoreFlags) -> bool

This method tests for self and other values to be equal, and is used @@ -75,8 +75,8 @@
§Safety
operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl Serialize for GpsInputIgnoreFlags

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Sub for GpsInputIgnoreFlags

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

-
§

type Output = GpsInputIgnoreFlags

The resulting type after applying the - operator.
source§

impl SubAssign for GpsInputIgnoreFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

-
source§

impl UpperHex for GpsInputIgnoreFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for GpsInputIgnoreFlags

source§

impl Eq for GpsInputIgnoreFlags

source§

impl StructuralPartialEq for GpsInputIgnoreFlags

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

§

type Output = GpsInputIgnoreFlags

The resulting type after applying the - operator.
source§

impl SubAssign for GpsInputIgnoreFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

+
source§

impl UpperHex for GpsInputIgnoreFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for GpsInputIgnoreFlags

source§

impl Eq for GpsInputIgnoreFlags

source§

impl StructuralPartialEq for GpsInputIgnoreFlags

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/mavlink/ardupilotmega/struct.HighresImuUpdatedFlags.html b/mavlink/ardupilotmega/struct.HighresImuUpdatedFlags.html index 336b88cc77..f983ef1074 100644 --- a/mavlink/ardupilotmega/struct.HighresImuUpdatedFlags.html +++ b/mavlink/ardupilotmega/struct.HighresImuUpdatedFlags.html @@ -61,12 +61,12 @@
§Safety
source§

impl BitOr for HighresImuUpdatedFlags

source§

fn bitor(self, other: HighresImuUpdatedFlags) -> Self

Returns the union of the two sets of flags.

§

type Output = HighresImuUpdatedFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for HighresImuUpdatedFlags

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

source§

impl BitXor for HighresImuUpdatedFlags

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

-
§

type Output = HighresImuUpdatedFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for HighresImuUpdatedFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
§

type Output = HighresImuUpdatedFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for HighresImuUpdatedFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

source§

impl Clone for HighresImuUpdatedFlags

source§

fn clone(&self) -> HighresImuUpdatedFlags

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for HighresImuUpdatedFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for HighresImuUpdatedFlags

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for HighresImuUpdatedFlags

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Extend<HighresImuUpdatedFlags> for HighresImuUpdatedFlags

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<HighresImuUpdatedFlags> for HighresImuUpdatedFlags

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for HighresImuUpdatedFlags

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for HighresImuUpdatedFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for HighresImuUpdatedFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = HighresImuUpdatedFlags

The resulting type after applying the ! operator.
source§

impl Octal for HighresImuUpdatedFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for HighresImuUpdatedFlags

source§

fn cmp(&self, other: &HighresImuUpdatedFlags) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for HighresImuUpdatedFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for HighresImuUpdatedFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

+
§

type Output = HighresImuUpdatedFlags

The resulting type after applying the ! operator.
source§

impl Octal for HighresImuUpdatedFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for HighresImuUpdatedFlags

source§

fn cmp(&self, other: &HighresImuUpdatedFlags) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for HighresImuUpdatedFlags

source§

fn eq(&self, other: &HighresImuUpdatedFlags) -> bool

This method tests for self and other values to be equal, and is used @@ -75,8 +75,8 @@
§Safety
operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl Serialize for HighresImuUpdatedFlags

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Sub for HighresImuUpdatedFlags

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

-
§

type Output = HighresImuUpdatedFlags

The resulting type after applying the - operator.
source§

impl SubAssign for HighresImuUpdatedFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

-
source§

impl UpperHex for HighresImuUpdatedFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for HighresImuUpdatedFlags

source§

impl Eq for HighresImuUpdatedFlags

source§

impl StructuralPartialEq for HighresImuUpdatedFlags

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

§

type Output = HighresImuUpdatedFlags

The resulting type after applying the - operator.
source§

impl SubAssign for HighresImuUpdatedFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

+
source§

impl UpperHex for HighresImuUpdatedFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for HighresImuUpdatedFlags

source§

impl Eq for HighresImuUpdatedFlags

source§

impl StructuralPartialEq for HighresImuUpdatedFlags

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/mavlink/ardupilotmega/struct.HilSensorUpdatedFlags.html b/mavlink/ardupilotmega/struct.HilSensorUpdatedFlags.html index 17dd5fcfe2..cc376e853f 100644 --- a/mavlink/ardupilotmega/struct.HilSensorUpdatedFlags.html +++ b/mavlink/ardupilotmega/struct.HilSensorUpdatedFlags.html @@ -56,17 +56,17 @@
§Safety
between Self::all() and self (e.g. Self::all() - self)

This is equivalent to using the ! operator (e.g. ops::Not), as in !flags.

-
source§

impl HilSensorUpdatedFlags

source

pub const DEFAULT: Self = Self::HIL_SENSOR_UPDATED_NONE

Trait Implementations§

source§

impl Binary for HilSensorUpdatedFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for HilSensorUpdatedFlags

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

+
source§

impl HilSensorUpdatedFlags

source

pub const DEFAULT: Self = Self::HIL_SENSOR_UPDATED_NONE

Trait Implementations§

source§

impl Binary for HilSensorUpdatedFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for HilSensorUpdatedFlags

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

§

type Output = HilSensorUpdatedFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for HilSensorUpdatedFlags

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

source§

impl BitOr for HilSensorUpdatedFlags

source§

fn bitor(self, other: HilSensorUpdatedFlags) -> Self

Returns the union of the two sets of flags.

-
§

type Output = HilSensorUpdatedFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for HilSensorUpdatedFlags

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
§

type Output = HilSensorUpdatedFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for HilSensorUpdatedFlags

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

source§

impl BitXor for HilSensorUpdatedFlags

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

-
§

type Output = HilSensorUpdatedFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for HilSensorUpdatedFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

-
source§

impl Clone for HilSensorUpdatedFlags

source§

fn clone(&self) -> HilSensorUpdatedFlags

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for HilSensorUpdatedFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for HilSensorUpdatedFlags

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for HilSensorUpdatedFlags

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where +

§

type Output = HilSensorUpdatedFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for HilSensorUpdatedFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
source§

impl Clone for HilSensorUpdatedFlags

source§

fn clone(&self) -> HilSensorUpdatedFlags

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for HilSensorUpdatedFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for HilSensorUpdatedFlags

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for HilSensorUpdatedFlags

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Extend<HilSensorUpdatedFlags> for HilSensorUpdatedFlags

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<HilSensorUpdatedFlags> for HilSensorUpdatedFlags

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for HilSensorUpdatedFlags

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for HilSensorUpdatedFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for HilSensorUpdatedFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = HilSensorUpdatedFlags

The resulting type after applying the ! operator.
source§

impl Octal for HilSensorUpdatedFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for HilSensorUpdatedFlags

source§

fn cmp(&self, other: &HilSensorUpdatedFlags) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for HilSensorUpdatedFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for HilSensorUpdatedFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

+
§

type Output = HilSensorUpdatedFlags

The resulting type after applying the ! operator.
source§

impl Octal for HilSensorUpdatedFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for HilSensorUpdatedFlags

source§

fn cmp(&self, other: &HilSensorUpdatedFlags) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for HilSensorUpdatedFlags

source§

fn eq(&self, other: &HilSensorUpdatedFlags) -> bool

This method tests for self and other values to be equal, and is used @@ -75,8 +75,8 @@
§Safety
operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl Serialize for HilSensorUpdatedFlags

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Sub for HilSensorUpdatedFlags

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

-
§

type Output = HilSensorUpdatedFlags

The resulting type after applying the - operator.
source§

impl SubAssign for HilSensorUpdatedFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

-
source§

impl UpperHex for HilSensorUpdatedFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for HilSensorUpdatedFlags

source§

impl Eq for HilSensorUpdatedFlags

source§

impl StructuralPartialEq for HilSensorUpdatedFlags

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

§

type Output = HilSensorUpdatedFlags

The resulting type after applying the - operator.
source§

impl SubAssign for HilSensorUpdatedFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

+
source§

impl UpperHex for HilSensorUpdatedFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for HilSensorUpdatedFlags

source§

impl Eq for HilSensorUpdatedFlags

source§

impl StructuralPartialEq for HilSensorUpdatedFlags

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/mavlink/ardupilotmega/struct.HlFailureFlag.html b/mavlink/ardupilotmega/struct.HlFailureFlag.html index 35be36d080..b3323773a2 100644 --- a/mavlink/ardupilotmega/struct.HlFailureFlag.html +++ b/mavlink/ardupilotmega/struct.HlFailureFlag.html @@ -56,16 +56,16 @@
§Safety
between Self::all() and self (e.g. Self::all() - self)

This is equivalent to using the ! operator (e.g. ops::Not), as in !flags.

-
source§

impl HlFailureFlag

source

pub const DEFAULT: Self = Self::HL_FAILURE_FLAG_GPS

Trait Implementations§

source§

impl Binary for HlFailureFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for HlFailureFlag

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

+
source§

impl HlFailureFlag

source

pub const DEFAULT: Self = Self::HL_FAILURE_FLAG_GPS

Trait Implementations§

source§

impl Binary for HlFailureFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for HlFailureFlag

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

§

type Output = HlFailureFlag

The resulting type after applying the & operator.
source§

impl BitAndAssign for HlFailureFlag

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

source§

impl BitOr for HlFailureFlag

source§

fn bitor(self, other: HlFailureFlag) -> Self

Returns the union of the two sets of flags.

§

type Output = HlFailureFlag

The resulting type after applying the | operator.
source§

impl BitOrAssign for HlFailureFlag

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

source§

impl BitXor for HlFailureFlag

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

-
§

type Output = HlFailureFlag

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for HlFailureFlag

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

-
source§

impl Clone for HlFailureFlag

source§

fn clone(&self) -> HlFailureFlag

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for HlFailureFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for HlFailureFlag

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for HlFailureFlag

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where +

§

type Output = HlFailureFlag

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for HlFailureFlag

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
source§

impl Clone for HlFailureFlag

source§

fn clone(&self) -> HlFailureFlag

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for HlFailureFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for HlFailureFlag

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for HlFailureFlag

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Extend<HlFailureFlag> for HlFailureFlag

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<HlFailureFlag> for HlFailureFlag

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for HlFailureFlag

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for HlFailureFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for HlFailureFlag

source§

fn not(self) -> Self

Returns the complement of this set of flags.

+ Self: Sized,
Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for HlFailureFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for HlFailureFlag

source§

fn not(self) -> Self

Returns the complement of this set of flags.

§

type Output = HlFailureFlag

The resulting type after applying the ! operator.
source§

impl Octal for HlFailureFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for HlFailureFlag

source§

fn cmp(&self, other: &HlFailureFlag) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where @@ -75,8 +75,8 @@
§Safety
operator. Read more

1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl Serialize for HlFailureFlag

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Sub for HlFailureFlag

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

-
§

type Output = HlFailureFlag

The resulting type after applying the - operator.
source§

impl SubAssign for HlFailureFlag

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

-
source§

impl UpperHex for HlFailureFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for HlFailureFlag

source§

impl Eq for HlFailureFlag

source§

impl StructuralPartialEq for HlFailureFlag

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

§

type Output = HlFailureFlag

The resulting type after applying the - operator.
source§

impl SubAssign for HlFailureFlag

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

+
source§

impl UpperHex for HlFailureFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for HlFailureFlag

source§

impl Eq for HlFailureFlag

source§

impl StructuralPartialEq for HlFailureFlag

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/mavlink/ardupilotmega/struct.LimitModule.html b/mavlink/ardupilotmega/struct.LimitModule.html index 061c761404..4704bbffb6 100644 --- a/mavlink/ardupilotmega/struct.LimitModule.html +++ b/mavlink/ardupilotmega/struct.LimitModule.html @@ -56,17 +56,17 @@
§Safety
between Self::all() and self (e.g. Self::all() - self)

This is equivalent to using the ! operator (e.g. ops::Not), as in !flags.

-
source§

impl LimitModule

source

pub const DEFAULT: Self = Self::LIMIT_GPSLOCK

Trait Implementations§

source§

impl Binary for LimitModule

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for LimitModule

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

-
§

type Output = LimitModule

The resulting type after applying the & operator.
source§

impl BitAndAssign for LimitModule

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

+
source§

impl LimitModule

source

pub const DEFAULT: Self = Self::LIMIT_GPSLOCK

Trait Implementations§

source§

impl Binary for LimitModule

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for LimitModule

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

+
§

type Output = LimitModule

The resulting type after applying the & operator.
source§

impl BitAndAssign for LimitModule

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

source§

impl BitOr for LimitModule

source§

fn bitor(self, other: LimitModule) -> Self

Returns the union of the two sets of flags.

-
§

type Output = LimitModule

The resulting type after applying the | operator.
source§

impl BitOrAssign for LimitModule

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
§

type Output = LimitModule

The resulting type after applying the | operator.
source§

impl BitOrAssign for LimitModule

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

source§

impl BitXor for LimitModule

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

§

type Output = LimitModule

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for LimitModule

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

source§

impl Clone for LimitModule

source§

fn clone(&self) -> LimitModule

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for LimitModule

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for LimitModule

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for LimitModule

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Extend<LimitModule> for LimitModule

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<LimitModule> for LimitModule

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for LimitModule

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for LimitModule

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for LimitModule

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = LimitModule

The resulting type after applying the ! operator.
source§

impl Octal for LimitModule

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for LimitModule

source§

fn cmp(&self, other: &LimitModule) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for LimitModule

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for LimitModule

source§

fn not(self) -> Self

Returns the complement of this set of flags.

+
§

type Output = LimitModule

The resulting type after applying the ! operator.
source§

impl Octal for LimitModule

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for LimitModule

source§

fn cmp(&self, other: &LimitModule) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for LimitModule

source§

fn eq(&self, other: &LimitModule) -> bool

This method tests for self and other values to be equal, and is used @@ -75,8 +75,8 @@
§Safety
operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl Serialize for LimitModule

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Sub for LimitModule

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

-
§

type Output = LimitModule

The resulting type after applying the - operator.
source§

impl SubAssign for LimitModule

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

-
source§

impl UpperHex for LimitModule

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for LimitModule

source§

impl Eq for LimitModule

source§

impl StructuralPartialEq for LimitModule

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

§

type Output = LimitModule

The resulting type after applying the - operator.
source§

impl SubAssign for LimitModule

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

+
source§

impl UpperHex for LimitModule

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for LimitModule

source§

impl Eq for LimitModule

source§

impl StructuralPartialEq for LimitModule

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/mavlink/ardupilotmega/struct.MavEventCurrentSequenceFlags.html b/mavlink/ardupilotmega/struct.MavEventCurrentSequenceFlags.html index 60c12cdf1c..c0787c8145 100644 --- a/mavlink/ardupilotmega/struct.MavEventCurrentSequenceFlags.html +++ b/mavlink/ardupilotmega/struct.MavEventCurrentSequenceFlags.html @@ -56,17 +56,17 @@
§Safety
between Self::all() and self (e.g. Self::all() - self)

This is equivalent to using the ! operator (e.g. ops::Not), as in !flags.

-
source§

impl MavEventCurrentSequenceFlags

source

pub const DEFAULT: Self = Self::MAV_EVENT_CURRENT_SEQUENCE_FLAGS_RESET

Trait Implementations§

source§

impl Binary for MavEventCurrentSequenceFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for MavEventCurrentSequenceFlags

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

-
§

type Output = MavEventCurrentSequenceFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for MavEventCurrentSequenceFlags

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

+
source§

impl MavEventCurrentSequenceFlags

source

pub const DEFAULT: Self = Self::MAV_EVENT_CURRENT_SEQUENCE_FLAGS_RESET

Trait Implementations§

source§

impl Binary for MavEventCurrentSequenceFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for MavEventCurrentSequenceFlags

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

+
§

type Output = MavEventCurrentSequenceFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for MavEventCurrentSequenceFlags

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

source§

impl BitOr for MavEventCurrentSequenceFlags

source§

fn bitor(self, other: MavEventCurrentSequenceFlags) -> Self

Returns the union of the two sets of flags.

-
§

type Output = MavEventCurrentSequenceFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for MavEventCurrentSequenceFlags

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
§

type Output = MavEventCurrentSequenceFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for MavEventCurrentSequenceFlags

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

source§

impl BitXor for MavEventCurrentSequenceFlags

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

-
§

type Output = MavEventCurrentSequenceFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for MavEventCurrentSequenceFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
§

type Output = MavEventCurrentSequenceFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for MavEventCurrentSequenceFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

source§

impl Clone for MavEventCurrentSequenceFlags

source§

fn clone(&self) -> MavEventCurrentSequenceFlags

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for MavEventCurrentSequenceFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for MavEventCurrentSequenceFlags

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for MavEventCurrentSequenceFlags

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Extend<MavEventCurrentSequenceFlags> for MavEventCurrentSequenceFlags

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<MavEventCurrentSequenceFlags> for MavEventCurrentSequenceFlags

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for MavEventCurrentSequenceFlags

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for MavEventCurrentSequenceFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for MavEventCurrentSequenceFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = MavEventCurrentSequenceFlags

The resulting type after applying the ! operator.
source§

impl Octal for MavEventCurrentSequenceFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for MavEventCurrentSequenceFlags

source§

fn cmp(&self, other: &MavEventCurrentSequenceFlags) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for MavEventCurrentSequenceFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for MavEventCurrentSequenceFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

+
§

type Output = MavEventCurrentSequenceFlags

The resulting type after applying the ! operator.
source§

impl Octal for MavEventCurrentSequenceFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for MavEventCurrentSequenceFlags

source§

fn cmp(&self, other: &MavEventCurrentSequenceFlags) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for MavEventCurrentSequenceFlags

source§

fn eq(&self, other: &MavEventCurrentSequenceFlags) -> bool

This method tests for self and other values to be equal, and is used @@ -75,8 +75,8 @@
§Safety
operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl Serialize for MavEventCurrentSequenceFlags

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Sub for MavEventCurrentSequenceFlags

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

-
§

type Output = MavEventCurrentSequenceFlags

The resulting type after applying the - operator.
source§

impl SubAssign for MavEventCurrentSequenceFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

-
source§

impl UpperHex for MavEventCurrentSequenceFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for MavEventCurrentSequenceFlags

source§

impl Eq for MavEventCurrentSequenceFlags

source§

impl StructuralPartialEq for MavEventCurrentSequenceFlags

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

§

type Output = MavEventCurrentSequenceFlags

The resulting type after applying the - operator.
source§

impl SubAssign for MavEventCurrentSequenceFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

+
source§

impl UpperHex for MavEventCurrentSequenceFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for MavEventCurrentSequenceFlags

source§

impl Eq for MavEventCurrentSequenceFlags

source§

impl StructuralPartialEq for MavEventCurrentSequenceFlags

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/mavlink/ardupilotmega/struct.MavGeneratorStatusFlag.html b/mavlink/ardupilotmega/struct.MavGeneratorStatusFlag.html index f5b1ef329d..4e96016e3c 100644 --- a/mavlink/ardupilotmega/struct.MavGeneratorStatusFlag.html +++ b/mavlink/ardupilotmega/struct.MavGeneratorStatusFlag.html @@ -56,17 +56,17 @@
§Safety
between Self::all() and self (e.g. Self::all() - self)

This is equivalent to using the ! operator (e.g. ops::Not), as in !flags.

-
source§

impl MavGeneratorStatusFlag

source

pub const DEFAULT: Self = Self::MAV_GENERATOR_STATUS_FLAG_OFF

Trait Implementations§

source§

impl Binary for MavGeneratorStatusFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for MavGeneratorStatusFlag

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

-
§

type Output = MavGeneratorStatusFlag

The resulting type after applying the & operator.
source§

impl BitAndAssign for MavGeneratorStatusFlag

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

+
source§

impl MavGeneratorStatusFlag

source

pub const DEFAULT: Self = Self::MAV_GENERATOR_STATUS_FLAG_OFF

Trait Implementations§

source§

impl Binary for MavGeneratorStatusFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for MavGeneratorStatusFlag

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

+
§

type Output = MavGeneratorStatusFlag

The resulting type after applying the & operator.
source§

impl BitAndAssign for MavGeneratorStatusFlag

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

source§

impl BitOr for MavGeneratorStatusFlag

source§

fn bitor(self, other: MavGeneratorStatusFlag) -> Self

Returns the union of the two sets of flags.

-
§

type Output = MavGeneratorStatusFlag

The resulting type after applying the | operator.
source§

impl BitOrAssign for MavGeneratorStatusFlag

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
§

type Output = MavGeneratorStatusFlag

The resulting type after applying the | operator.
source§

impl BitOrAssign for MavGeneratorStatusFlag

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

source§

impl BitXor for MavGeneratorStatusFlag

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

-
§

type Output = MavGeneratorStatusFlag

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for MavGeneratorStatusFlag

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

-
source§

impl Clone for MavGeneratorStatusFlag

source§

fn clone(&self) -> MavGeneratorStatusFlag

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for MavGeneratorStatusFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for MavGeneratorStatusFlag

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for MavGeneratorStatusFlag

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where +

§

type Output = MavGeneratorStatusFlag

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for MavGeneratorStatusFlag

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
source§

impl Clone for MavGeneratorStatusFlag

source§

fn clone(&self) -> MavGeneratorStatusFlag

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for MavGeneratorStatusFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for MavGeneratorStatusFlag

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for MavGeneratorStatusFlag

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Extend<MavGeneratorStatusFlag> for MavGeneratorStatusFlag

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<MavGeneratorStatusFlag> for MavGeneratorStatusFlag

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for MavGeneratorStatusFlag

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for MavGeneratorStatusFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for MavGeneratorStatusFlag

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = MavGeneratorStatusFlag

The resulting type after applying the ! operator.
source§

impl Octal for MavGeneratorStatusFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for MavGeneratorStatusFlag

source§

fn cmp(&self, other: &MavGeneratorStatusFlag) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for MavGeneratorStatusFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for MavGeneratorStatusFlag

source§

fn not(self) -> Self

Returns the complement of this set of flags.

+
§

type Output = MavGeneratorStatusFlag

The resulting type after applying the ! operator.
source§

impl Octal for MavGeneratorStatusFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for MavGeneratorStatusFlag

source§

fn cmp(&self, other: &MavGeneratorStatusFlag) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for MavGeneratorStatusFlag

source§

fn eq(&self, other: &MavGeneratorStatusFlag) -> bool

This method tests for self and other values to be equal, and is used @@ -75,7 +75,7 @@
§Safety
operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl Serialize for MavGeneratorStatusFlag

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Sub for MavGeneratorStatusFlag

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

-
§

type Output = MavGeneratorStatusFlag

The resulting type after applying the - operator.
source§

impl SubAssign for MavGeneratorStatusFlag

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

+
§

type Output = MavGeneratorStatusFlag

The resulting type after applying the - operator.
source§

impl SubAssign for MavGeneratorStatusFlag

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

source§

impl UpperHex for MavGeneratorStatusFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for MavGeneratorStatusFlag

source§

impl Eq for MavGeneratorStatusFlag

source§

impl StructuralPartialEq for MavGeneratorStatusFlag

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where diff --git a/mavlink/ardupilotmega/struct.MavModeFlag.html b/mavlink/ardupilotmega/struct.MavModeFlag.html index 59ffe2d1e8..0928763b37 100644 --- a/mavlink/ardupilotmega/struct.MavModeFlag.html +++ b/mavlink/ardupilotmega/struct.MavModeFlag.html @@ -56,17 +56,17 @@
§Safety
between Self::all() and self (e.g. Self::all() - self)

This is equivalent to using the ! operator (e.g. ops::Not), as in !flags.

-

source§

impl MavModeFlag

source

pub const DEFAULT: Self = Self::MAV_MODE_FLAG_SAFETY_ARMED

Trait Implementations§

source§

impl Binary for MavModeFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for MavModeFlag

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

-
§

type Output = MavModeFlag

The resulting type after applying the & operator.
source§

impl BitAndAssign for MavModeFlag

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

+
source§

impl MavModeFlag

source

pub const DEFAULT: Self = Self::MAV_MODE_FLAG_SAFETY_ARMED

Trait Implementations§

source§

impl Binary for MavModeFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for MavModeFlag

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

+
§

type Output = MavModeFlag

The resulting type after applying the & operator.
source§

impl BitAndAssign for MavModeFlag

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

source§

impl BitOr for MavModeFlag

source§

fn bitor(self, other: MavModeFlag) -> Self

Returns the union of the two sets of flags.

-
§

type Output = MavModeFlag

The resulting type after applying the | operator.
source§

impl BitOrAssign for MavModeFlag

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
§

type Output = MavModeFlag

The resulting type after applying the | operator.
source§

impl BitOrAssign for MavModeFlag

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

source§

impl BitXor for MavModeFlag

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

§

type Output = MavModeFlag

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for MavModeFlag

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

source§

impl Clone for MavModeFlag

source§

fn clone(&self) -> MavModeFlag

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for MavModeFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for MavModeFlag

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for MavModeFlag

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Extend<MavModeFlag> for MavModeFlag

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<MavModeFlag> for MavModeFlag

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for MavModeFlag

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for MavModeFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for MavModeFlag

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = MavModeFlag

The resulting type after applying the ! operator.
source§

impl Octal for MavModeFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for MavModeFlag

source§

fn cmp(&self, other: &MavModeFlag) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for MavModeFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for MavModeFlag

source§

fn not(self) -> Self

Returns the complement of this set of flags.

+
§

type Output = MavModeFlag

The resulting type after applying the ! operator.
source§

impl Octal for MavModeFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for MavModeFlag

source§

fn cmp(&self, other: &MavModeFlag) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for MavModeFlag

source§

fn eq(&self, other: &MavModeFlag) -> bool

This method tests for self and other values to be equal, and is used @@ -75,8 +75,8 @@
§Safety
operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl Serialize for MavModeFlag

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Sub for MavModeFlag

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

-
§

type Output = MavModeFlag

The resulting type after applying the - operator.
source§

impl SubAssign for MavModeFlag

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

-
source§

impl UpperHex for MavModeFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for MavModeFlag

source§

impl Eq for MavModeFlag

source§

impl StructuralPartialEq for MavModeFlag

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

§

type Output = MavModeFlag

The resulting type after applying the - operator.
source§

impl SubAssign for MavModeFlag

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

+
source§

impl UpperHex for MavModeFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for MavModeFlag

source§

impl Eq for MavModeFlag

source§

impl StructuralPartialEq for MavModeFlag

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/mavlink/ardupilotmega/struct.MavPowerStatus.html b/mavlink/ardupilotmega/struct.MavPowerStatus.html index 902db49320..0ae01c453c 100644 --- a/mavlink/ardupilotmega/struct.MavPowerStatus.html +++ b/mavlink/ardupilotmega/struct.MavPowerStatus.html @@ -56,17 +56,17 @@
§Safety
between Self::all() and self (e.g. Self::all() - self)

This is equivalent to using the ! operator (e.g. ops::Not), as in !flags.

-
source§

impl MavPowerStatus

source

pub const DEFAULT: Self = Self::MAV_POWER_STATUS_BRICK_VALID

Trait Implementations§

source§

impl Binary for MavPowerStatus

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for MavPowerStatus

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

-
§

type Output = MavPowerStatus

The resulting type after applying the & operator.
source§

impl BitAndAssign for MavPowerStatus

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

+
source§

impl MavPowerStatus

source

pub const DEFAULT: Self = Self::MAV_POWER_STATUS_BRICK_VALID

Trait Implementations§

source§

impl Binary for MavPowerStatus

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for MavPowerStatus

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

+
§

type Output = MavPowerStatus

The resulting type after applying the & operator.
source§

impl BitAndAssign for MavPowerStatus

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

source§

impl BitOr for MavPowerStatus

source§

fn bitor(self, other: MavPowerStatus) -> Self

Returns the union of the two sets of flags.

-
§

type Output = MavPowerStatus

The resulting type after applying the | operator.
source§

impl BitOrAssign for MavPowerStatus

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
§

type Output = MavPowerStatus

The resulting type after applying the | operator.
source§

impl BitOrAssign for MavPowerStatus

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

source§

impl BitXor for MavPowerStatus

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

-
§

type Output = MavPowerStatus

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for MavPowerStatus

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

-
source§

impl Clone for MavPowerStatus

source§

fn clone(&self) -> MavPowerStatus

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for MavPowerStatus

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for MavPowerStatus

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for MavPowerStatus

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where +

§

type Output = MavPowerStatus

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for MavPowerStatus

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
source§

impl Clone for MavPowerStatus

source§

fn clone(&self) -> MavPowerStatus

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for MavPowerStatus

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for MavPowerStatus

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for MavPowerStatus

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Extend<MavPowerStatus> for MavPowerStatus

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<MavPowerStatus> for MavPowerStatus

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for MavPowerStatus

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for MavPowerStatus

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for MavPowerStatus

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = MavPowerStatus

The resulting type after applying the ! operator.
source§

impl Octal for MavPowerStatus

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for MavPowerStatus

source§

fn cmp(&self, other: &MavPowerStatus) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for MavPowerStatus

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for MavPowerStatus

source§

fn not(self) -> Self

Returns the complement of this set of flags.

+
§

type Output = MavPowerStatus

The resulting type after applying the ! operator.
source§

impl Octal for MavPowerStatus

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for MavPowerStatus

source§

fn cmp(&self, other: &MavPowerStatus) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for MavPowerStatus

source§

fn eq(&self, other: &MavPowerStatus) -> bool

This method tests for self and other values to be equal, and is used @@ -75,8 +75,8 @@
§Safety
operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl Serialize for MavPowerStatus

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Sub for MavPowerStatus

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

-
§

type Output = MavPowerStatus

The resulting type after applying the - operator.
source§

impl SubAssign for MavPowerStatus

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

-
source§

impl UpperHex for MavPowerStatus

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for MavPowerStatus

source§

impl Eq for MavPowerStatus

source§

impl StructuralPartialEq for MavPowerStatus

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

§

type Output = MavPowerStatus

The resulting type after applying the - operator.
source§

impl SubAssign for MavPowerStatus

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

+
source§

impl UpperHex for MavPowerStatus

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for MavPowerStatus

source§

impl Eq for MavPowerStatus

source§

impl StructuralPartialEq for MavPowerStatus

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/mavlink/ardupilotmega/struct.MavProtocolCapability.html b/mavlink/ardupilotmega/struct.MavProtocolCapability.html index c4a1cc0766..636ecb8efe 100644 --- a/mavlink/ardupilotmega/struct.MavProtocolCapability.html +++ b/mavlink/ardupilotmega/struct.MavProtocolCapability.html @@ -57,16 +57,16 @@
§Safety

This is equivalent to using the ! operator (e.g. ops::Not), as in !flags.

source§

impl MavProtocolCapability

source

pub const DEFAULT: Self = Self::MAV_PROTOCOL_CAPABILITY_MISSION_FLOAT

Trait Implementations§

source§

impl Binary for MavProtocolCapability

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for MavProtocolCapability

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

-
§

type Output = MavProtocolCapability

The resulting type after applying the & operator.
source§

impl BitAndAssign for MavProtocolCapability

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

+
§

type Output = MavProtocolCapability

The resulting type after applying the & operator.
source§

impl BitAndAssign for MavProtocolCapability

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

source§

impl BitOr for MavProtocolCapability

source§

fn bitor(self, other: MavProtocolCapability) -> Self

Returns the union of the two sets of flags.

§

type Output = MavProtocolCapability

The resulting type after applying the | operator.
source§

impl BitOrAssign for MavProtocolCapability

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

source§

impl BitXor for MavProtocolCapability

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

§

type Output = MavProtocolCapability

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for MavProtocolCapability

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

-
source§

impl Clone for MavProtocolCapability

source§

fn clone(&self) -> MavProtocolCapability

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for MavProtocolCapability

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for MavProtocolCapability

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for MavProtocolCapability

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where +

source§

impl Clone for MavProtocolCapability

source§

fn clone(&self) -> MavProtocolCapability

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for MavProtocolCapability

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for MavProtocolCapability

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for MavProtocolCapability

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Extend<MavProtocolCapability> for MavProtocolCapability

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<MavProtocolCapability> for MavProtocolCapability

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for MavProtocolCapability

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for MavProtocolCapability

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for MavProtocolCapability

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = MavProtocolCapability

The resulting type after applying the ! operator.
source§

impl Octal for MavProtocolCapability

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for MavProtocolCapability

source§

fn cmp(&self, other: &MavProtocolCapability) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for MavProtocolCapability

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for MavProtocolCapability

source§

fn not(self) -> Self

Returns the complement of this set of flags.

+
§

type Output = MavProtocolCapability

The resulting type after applying the ! operator.
source§

impl Octal for MavProtocolCapability

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for MavProtocolCapability

source§

fn cmp(&self, other: &MavProtocolCapability) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for MavProtocolCapability

source§

fn eq(&self, other: &MavProtocolCapability) -> bool

This method tests for self and other values to be equal, and is used @@ -76,7 +76,7 @@
§Safety
operator. Read more
source§

impl Serialize for MavProtocolCapability

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Sub for MavProtocolCapability

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

§

type Output = MavProtocolCapability

The resulting type after applying the - operator.
source§

impl SubAssign for MavProtocolCapability

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

-
source§

impl UpperHex for MavProtocolCapability

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for MavProtocolCapability

source§

impl Eq for MavProtocolCapability

source§

impl StructuralPartialEq for MavProtocolCapability

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

source§

impl UpperHex for MavProtocolCapability

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for MavProtocolCapability

source§

impl Eq for MavProtocolCapability

source§

impl StructuralPartialEq for MavProtocolCapability

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/mavlink/ardupilotmega/struct.MavSysStatusSensor.html b/mavlink/ardupilotmega/struct.MavSysStatusSensor.html index 98dd918d6d..115a2b3176 100644 --- a/mavlink/ardupilotmega/struct.MavSysStatusSensor.html +++ b/mavlink/ardupilotmega/struct.MavSysStatusSensor.html @@ -56,17 +56,17 @@
§Safety
between Self::all() and self (e.g. Self::all() - self)

This is equivalent to using the ! operator (e.g. ops::Not), as in !flags.

-
source§

impl MavSysStatusSensor

source

pub const DEFAULT: Self = Self::MAV_SYS_STATUS_SENSOR_3D_GYRO

Trait Implementations§

source§

impl Binary for MavSysStatusSensor

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for MavSysStatusSensor

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

-
§

type Output = MavSysStatusSensor

The resulting type after applying the & operator.
source§

impl BitAndAssign for MavSysStatusSensor

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

+
source§

impl MavSysStatusSensor

source

pub const DEFAULT: Self = Self::MAV_SYS_STATUS_SENSOR_3D_GYRO

Trait Implementations§

source§

impl Binary for MavSysStatusSensor

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for MavSysStatusSensor

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

+
§

type Output = MavSysStatusSensor

The resulting type after applying the & operator.
source§

impl BitAndAssign for MavSysStatusSensor

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

source§

impl BitOr for MavSysStatusSensor

source§

fn bitor(self, other: MavSysStatusSensor) -> Self

Returns the union of the two sets of flags.

-
§

type Output = MavSysStatusSensor

The resulting type after applying the | operator.
source§

impl BitOrAssign for MavSysStatusSensor

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
§

type Output = MavSysStatusSensor

The resulting type after applying the | operator.
source§

impl BitOrAssign for MavSysStatusSensor

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

source§

impl BitXor for MavSysStatusSensor

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

-
§

type Output = MavSysStatusSensor

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for MavSysStatusSensor

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

-
source§

impl Clone for MavSysStatusSensor

source§

fn clone(&self) -> MavSysStatusSensor

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for MavSysStatusSensor

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for MavSysStatusSensor

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for MavSysStatusSensor

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where +

§

type Output = MavSysStatusSensor

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for MavSysStatusSensor

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
source§

impl Clone for MavSysStatusSensor

source§

fn clone(&self) -> MavSysStatusSensor

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for MavSysStatusSensor

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for MavSysStatusSensor

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for MavSysStatusSensor

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Extend<MavSysStatusSensor> for MavSysStatusSensor

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<MavSysStatusSensor> for MavSysStatusSensor

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for MavSysStatusSensor

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for MavSysStatusSensor

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for MavSysStatusSensor

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = MavSysStatusSensor

The resulting type after applying the ! operator.
source§

impl Octal for MavSysStatusSensor

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for MavSysStatusSensor

source§

fn cmp(&self, other: &MavSysStatusSensor) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for MavSysStatusSensor

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for MavSysStatusSensor

source§

fn not(self) -> Self

Returns the complement of this set of flags.

+
§

type Output = MavSysStatusSensor

The resulting type after applying the ! operator.
source§

impl Octal for MavSysStatusSensor

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for MavSysStatusSensor

source§

fn cmp(&self, other: &MavSysStatusSensor) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for MavSysStatusSensor

source§

fn eq(&self, other: &MavSysStatusSensor) -> bool

This method tests for self and other values to be equal, and is used @@ -75,8 +75,8 @@
§Safety
operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl Serialize for MavSysStatusSensor

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Sub for MavSysStatusSensor

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

-
§

type Output = MavSysStatusSensor

The resulting type after applying the - operator.
source§

impl SubAssign for MavSysStatusSensor

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

-
source§

impl UpperHex for MavSysStatusSensor

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for MavSysStatusSensor

source§

impl Eq for MavSysStatusSensor

source§

impl StructuralPartialEq for MavSysStatusSensor

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

§

type Output = MavSysStatusSensor

The resulting type after applying the - operator.
source§

impl SubAssign for MavSysStatusSensor

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

+
source§

impl UpperHex for MavSysStatusSensor

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for MavSysStatusSensor

source§

impl Eq for MavSysStatusSensor

source§

impl StructuralPartialEq for MavSysStatusSensor

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/mavlink/ardupilotmega/struct.MavWinchStatusFlag.html b/mavlink/ardupilotmega/struct.MavWinchStatusFlag.html index 3d04866b09..2fa5a40f47 100644 --- a/mavlink/ardupilotmega/struct.MavWinchStatusFlag.html +++ b/mavlink/ardupilotmega/struct.MavWinchStatusFlag.html @@ -56,17 +56,17 @@
§Safety
between Self::all() and self (e.g. Self::all() - self)

This is equivalent to using the ! operator (e.g. ops::Not), as in !flags.

-
source§

impl MavWinchStatusFlag

source

pub const DEFAULT: Self = Self::MAV_WINCH_STATUS_HEALTHY

Trait Implementations§

source§

impl Binary for MavWinchStatusFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for MavWinchStatusFlag

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

-
§

type Output = MavWinchStatusFlag

The resulting type after applying the & operator.
source§

impl BitAndAssign for MavWinchStatusFlag

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

+
source§

impl MavWinchStatusFlag

source

pub const DEFAULT: Self = Self::MAV_WINCH_STATUS_HEALTHY

Trait Implementations§

source§

impl Binary for MavWinchStatusFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for MavWinchStatusFlag

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

+
§

type Output = MavWinchStatusFlag

The resulting type after applying the & operator.
source§

impl BitAndAssign for MavWinchStatusFlag

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

source§

impl BitOr for MavWinchStatusFlag

source§

fn bitor(self, other: MavWinchStatusFlag) -> Self

Returns the union of the two sets of flags.

-
§

type Output = MavWinchStatusFlag

The resulting type after applying the | operator.
source§

impl BitOrAssign for MavWinchStatusFlag

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
§

type Output = MavWinchStatusFlag

The resulting type after applying the | operator.
source§

impl BitOrAssign for MavWinchStatusFlag

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

source§

impl BitXor for MavWinchStatusFlag

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

-
§

type Output = MavWinchStatusFlag

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for MavWinchStatusFlag

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
§

type Output = MavWinchStatusFlag

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for MavWinchStatusFlag

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

source§

impl Clone for MavWinchStatusFlag

source§

fn clone(&self) -> MavWinchStatusFlag

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for MavWinchStatusFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for MavWinchStatusFlag

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for MavWinchStatusFlag

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Extend<MavWinchStatusFlag> for MavWinchStatusFlag

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<MavWinchStatusFlag> for MavWinchStatusFlag

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for MavWinchStatusFlag

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for MavWinchStatusFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for MavWinchStatusFlag

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = MavWinchStatusFlag

The resulting type after applying the ! operator.
source§

impl Octal for MavWinchStatusFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for MavWinchStatusFlag

source§

fn cmp(&self, other: &MavWinchStatusFlag) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for MavWinchStatusFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for MavWinchStatusFlag

source§

fn not(self) -> Self

Returns the complement of this set of flags.

+
§

type Output = MavWinchStatusFlag

The resulting type after applying the ! operator.
source§

impl Octal for MavWinchStatusFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for MavWinchStatusFlag

source§

fn cmp(&self, other: &MavWinchStatusFlag) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for MavWinchStatusFlag

source§

fn eq(&self, other: &MavWinchStatusFlag) -> bool

This method tests for self and other values to be equal, and is used @@ -75,8 +75,8 @@
§Safety
operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl Serialize for MavWinchStatusFlag

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Sub for MavWinchStatusFlag

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

-
§

type Output = MavWinchStatusFlag

The resulting type after applying the - operator.
source§

impl SubAssign for MavWinchStatusFlag

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

-
source§

impl UpperHex for MavWinchStatusFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for MavWinchStatusFlag

source§

impl Eq for MavWinchStatusFlag

source§

impl StructuralPartialEq for MavWinchStatusFlag

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

§

type Output = MavWinchStatusFlag

The resulting type after applying the - operator.
source§

impl SubAssign for MavWinchStatusFlag

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

+
source§

impl UpperHex for MavWinchStatusFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for MavWinchStatusFlag

source§

impl Eq for MavWinchStatusFlag

source§

impl StructuralPartialEq for MavWinchStatusFlag

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/mavlink/ardupilotmega/struct.PositionTargetTypemask.html b/mavlink/ardupilotmega/struct.PositionTargetTypemask.html index d78e7c7676..300b498481 100644 --- a/mavlink/ardupilotmega/struct.PositionTargetTypemask.html +++ b/mavlink/ardupilotmega/struct.PositionTargetTypemask.html @@ -56,17 +56,17 @@
§Safety
between Self::all() and self (e.g. Self::all() - self)

This is equivalent to using the ! operator (e.g. ops::Not), as in !flags.

-
source§

impl PositionTargetTypemask

source

pub const DEFAULT: Self = Self::POSITION_TARGET_TYPEMASK_X_IGNORE

Trait Implementations§

source§

impl Binary for PositionTargetTypemask

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for PositionTargetTypemask

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

-
§

type Output = PositionTargetTypemask

The resulting type after applying the & operator.
source§

impl BitAndAssign for PositionTargetTypemask

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

+
source§

impl PositionTargetTypemask

source

pub const DEFAULT: Self = Self::POSITION_TARGET_TYPEMASK_X_IGNORE

Trait Implementations§

source§

impl Binary for PositionTargetTypemask

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for PositionTargetTypemask

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

+
§

type Output = PositionTargetTypemask

The resulting type after applying the & operator.
source§

impl BitAndAssign for PositionTargetTypemask

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

source§

impl BitOr for PositionTargetTypemask

source§

fn bitor(self, other: PositionTargetTypemask) -> Self

Returns the union of the two sets of flags.

-
§

type Output = PositionTargetTypemask

The resulting type after applying the | operator.
source§

impl BitOrAssign for PositionTargetTypemask

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
§

type Output = PositionTargetTypemask

The resulting type after applying the | operator.
source§

impl BitOrAssign for PositionTargetTypemask

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

source§

impl BitXor for PositionTargetTypemask

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

-
§

type Output = PositionTargetTypemask

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for PositionTargetTypemask

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

-
source§

impl Clone for PositionTargetTypemask

source§

fn clone(&self) -> PositionTargetTypemask

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for PositionTargetTypemask

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for PositionTargetTypemask

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for PositionTargetTypemask

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where +

§

type Output = PositionTargetTypemask

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for PositionTargetTypemask

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
source§

impl Clone for PositionTargetTypemask

source§

fn clone(&self) -> PositionTargetTypemask

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for PositionTargetTypemask

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for PositionTargetTypemask

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for PositionTargetTypemask

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Extend<PositionTargetTypemask> for PositionTargetTypemask

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<PositionTargetTypemask> for PositionTargetTypemask

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for PositionTargetTypemask

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for PositionTargetTypemask

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for PositionTargetTypemask

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = PositionTargetTypemask

The resulting type after applying the ! operator.
source§

impl Octal for PositionTargetTypemask

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for PositionTargetTypemask

source§

fn cmp(&self, other: &PositionTargetTypemask) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for PositionTargetTypemask

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for PositionTargetTypemask

source§

fn not(self) -> Self

Returns the complement of this set of flags.

+
§

type Output = PositionTargetTypemask

The resulting type after applying the ! operator.
source§

impl Octal for PositionTargetTypemask

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for PositionTargetTypemask

source§

fn cmp(&self, other: &PositionTargetTypemask) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for PositionTargetTypemask

source§

fn eq(&self, other: &PositionTargetTypemask) -> bool

This method tests for self and other values to be equal, and is used @@ -76,7 +76,7 @@
§Safety
operator. Read more
source§

impl Serialize for PositionTargetTypemask

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Sub for PositionTargetTypemask

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

§

type Output = PositionTargetTypemask

The resulting type after applying the - operator.
source§

impl SubAssign for PositionTargetTypemask

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

-
source§

impl UpperHex for PositionTargetTypemask

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for PositionTargetTypemask

source§

impl Eq for PositionTargetTypemask

source§

impl StructuralPartialEq for PositionTargetTypemask

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

source§

impl UpperHex for PositionTargetTypemask

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for PositionTargetTypemask

source§

impl Eq for PositionTargetTypemask

source§

impl StructuralPartialEq for PositionTargetTypemask

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/mavlink/ardupilotmega/struct.RallyFlags.html b/mavlink/ardupilotmega/struct.RallyFlags.html index 1cc8a6c42d..bd175fd2fc 100644 --- a/mavlink/ardupilotmega/struct.RallyFlags.html +++ b/mavlink/ardupilotmega/struct.RallyFlags.html @@ -56,17 +56,17 @@
§Safety
between Self::all() and self (e.g. Self::all() - self)

This is equivalent to using the ! operator (e.g. ops::Not), as in !flags.

-
source§

impl RallyFlags

source

pub const DEFAULT: Self = Self::FAVORABLE_WIND

Trait Implementations§

source§

impl Binary for RallyFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for RallyFlags

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

-
§

type Output = RallyFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for RallyFlags

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

+
source§

impl RallyFlags

source

pub const DEFAULT: Self = Self::FAVORABLE_WIND

Trait Implementations§

source§

impl Binary for RallyFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for RallyFlags

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

+
§

type Output = RallyFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for RallyFlags

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

source§

impl BitOr for RallyFlags

source§

fn bitor(self, other: RallyFlags) -> Self

Returns the union of the two sets of flags.

-
§

type Output = RallyFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for RallyFlags

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
§

type Output = RallyFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for RallyFlags

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

source§

impl BitXor for RallyFlags

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

-
§

type Output = RallyFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for RallyFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

-
source§

impl Clone for RallyFlags

source§

fn clone(&self) -> RallyFlags

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for RallyFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for RallyFlags

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for RallyFlags

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where +

§

type Output = RallyFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for RallyFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
source§

impl Clone for RallyFlags

source§

fn clone(&self) -> RallyFlags

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for RallyFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for RallyFlags

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for RallyFlags

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Extend<RallyFlags> for RallyFlags

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<RallyFlags> for RallyFlags

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for RallyFlags

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for RallyFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for RallyFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = RallyFlags

The resulting type after applying the ! operator.
source§

impl Octal for RallyFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for RallyFlags

source§

fn cmp(&self, other: &RallyFlags) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for RallyFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for RallyFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

+
§

type Output = RallyFlags

The resulting type after applying the ! operator.
source§

impl Octal for RallyFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for RallyFlags

source§

fn cmp(&self, other: &RallyFlags) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for RallyFlags

source§

fn eq(&self, other: &RallyFlags) -> bool

This method tests for self and other values to be equal, and is used @@ -75,8 +75,8 @@
§Safety
operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl Serialize for RallyFlags

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Sub for RallyFlags

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

-
§

type Output = RallyFlags

The resulting type after applying the - operator.
source§

impl SubAssign for RallyFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

-
source§

impl UpperHex for RallyFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for RallyFlags

source§

impl Eq for RallyFlags

source§

impl StructuralPartialEq for RallyFlags

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

§

type Output = RallyFlags

The resulting type after applying the - operator.
source§

impl SubAssign for RallyFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

+
source§

impl UpperHex for RallyFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for RallyFlags

source§

impl Eq for RallyFlags

source§

impl StructuralPartialEq for RallyFlags

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/mavlink/ardupilotmega/struct.SerialControlFlag.html b/mavlink/ardupilotmega/struct.SerialControlFlag.html index 8b0652690e..c32c0230dc 100644 --- a/mavlink/ardupilotmega/struct.SerialControlFlag.html +++ b/mavlink/ardupilotmega/struct.SerialControlFlag.html @@ -56,17 +56,17 @@
§Safety
between Self::all() and self (e.g. Self::all() - self)

This is equivalent to using the ! operator (e.g. ops::Not), as in !flags.

-
source§

impl SerialControlFlag

source

pub const DEFAULT: Self = Self::SERIAL_CONTROL_FLAG_REPLY

Trait Implementations§

source§

impl Binary for SerialControlFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for SerialControlFlag

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

-
§

type Output = SerialControlFlag

The resulting type after applying the & operator.
source§

impl BitAndAssign for SerialControlFlag

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

+
source§

impl SerialControlFlag

source

pub const DEFAULT: Self = Self::SERIAL_CONTROL_FLAG_REPLY

Trait Implementations§

source§

impl Binary for SerialControlFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for SerialControlFlag

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

+
§

type Output = SerialControlFlag

The resulting type after applying the & operator.
source§

impl BitAndAssign for SerialControlFlag

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

source§

impl BitOr for SerialControlFlag

source§

fn bitor(self, other: SerialControlFlag) -> Self

Returns the union of the two sets of flags.

-
§

type Output = SerialControlFlag

The resulting type after applying the | operator.
source§

impl BitOrAssign for SerialControlFlag

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
§

type Output = SerialControlFlag

The resulting type after applying the | operator.
source§

impl BitOrAssign for SerialControlFlag

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

source§

impl BitXor for SerialControlFlag

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

§

type Output = SerialControlFlag

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for SerialControlFlag

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

-
source§

impl Clone for SerialControlFlag

source§

fn clone(&self) -> SerialControlFlag

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for SerialControlFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for SerialControlFlag

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for SerialControlFlag

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where +

source§

impl Clone for SerialControlFlag

source§

fn clone(&self) -> SerialControlFlag

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for SerialControlFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for SerialControlFlag

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for SerialControlFlag

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Extend<SerialControlFlag> for SerialControlFlag

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<SerialControlFlag> for SerialControlFlag

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for SerialControlFlag

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for SerialControlFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for SerialControlFlag

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = SerialControlFlag

The resulting type after applying the ! operator.
source§

impl Octal for SerialControlFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for SerialControlFlag

source§

fn cmp(&self, other: &SerialControlFlag) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for SerialControlFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for SerialControlFlag

source§

fn not(self) -> Self

Returns the complement of this set of flags.

+
§

type Output = SerialControlFlag

The resulting type after applying the ! operator.
source§

impl Octal for SerialControlFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for SerialControlFlag

source§

fn cmp(&self, other: &SerialControlFlag) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for SerialControlFlag

source§

fn eq(&self, other: &SerialControlFlag) -> bool

This method tests for self and other values to be equal, and is used @@ -75,8 +75,8 @@
§Safety
operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl Serialize for SerialControlFlag

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Sub for SerialControlFlag

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

-
§

type Output = SerialControlFlag

The resulting type after applying the - operator.
source§

impl SubAssign for SerialControlFlag

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

-
source§

impl UpperHex for SerialControlFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for SerialControlFlag

source§

impl Eq for SerialControlFlag

source§

impl StructuralPartialEq for SerialControlFlag

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

§

type Output = SerialControlFlag

The resulting type after applying the - operator.
source§

impl SubAssign for SerialControlFlag

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

+
source§

impl UpperHex for SerialControlFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for SerialControlFlag

source§

impl Eq for SerialControlFlag

source§

impl StructuralPartialEq for SerialControlFlag

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/mavlink/ardupilotmega/struct.TuneFormat.html b/mavlink/ardupilotmega/struct.TuneFormat.html index d5824cc263..daaad5fbb0 100644 --- a/mavlink/ardupilotmega/struct.TuneFormat.html +++ b/mavlink/ardupilotmega/struct.TuneFormat.html @@ -56,17 +56,17 @@
§Safety
between Self::all() and self (e.g. Self::all() - self)

This is equivalent to using the ! operator (e.g. ops::Not), as in !flags.

-
source§

impl TuneFormat

source

pub const DEFAULT: Self = Self::TUNE_FORMAT_QBASIC1_1

Trait Implementations§

source§

impl Binary for TuneFormat

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for TuneFormat

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

-
§

type Output = TuneFormat

The resulting type after applying the & operator.
source§

impl BitAndAssign for TuneFormat

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

+
source§

impl TuneFormat

source

pub const DEFAULT: Self = Self::TUNE_FORMAT_QBASIC1_1

Trait Implementations§

source§

impl Binary for TuneFormat

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for TuneFormat

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

+
§

type Output = TuneFormat

The resulting type after applying the & operator.
source§

impl BitAndAssign for TuneFormat

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

source§

impl BitOr for TuneFormat

source§

fn bitor(self, other: TuneFormat) -> Self

Returns the union of the two sets of flags.

-
§

type Output = TuneFormat

The resulting type after applying the | operator.
source§

impl BitOrAssign for TuneFormat

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
§

type Output = TuneFormat

The resulting type after applying the | operator.
source§

impl BitOrAssign for TuneFormat

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

source§

impl BitXor for TuneFormat

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

-
§

type Output = TuneFormat

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for TuneFormat

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

-
source§

impl Clone for TuneFormat

source§

fn clone(&self) -> TuneFormat

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for TuneFormat

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for TuneFormat

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for TuneFormat

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where +

§

type Output = TuneFormat

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for TuneFormat

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
source§

impl Clone for TuneFormat

source§

fn clone(&self) -> TuneFormat

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for TuneFormat

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for TuneFormat

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for TuneFormat

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Extend<TuneFormat> for TuneFormat

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<TuneFormat> for TuneFormat

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for TuneFormat

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for TuneFormat

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for TuneFormat

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = TuneFormat

The resulting type after applying the ! operator.
source§

impl Octal for TuneFormat

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for TuneFormat

source§

fn cmp(&self, other: &TuneFormat) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for TuneFormat

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for TuneFormat

source§

fn not(self) -> Self

Returns the complement of this set of flags.

+
§

type Output = TuneFormat

The resulting type after applying the ! operator.
source§

impl Octal for TuneFormat

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for TuneFormat

source§

fn cmp(&self, other: &TuneFormat) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for TuneFormat

source§

fn eq(&self, other: &TuneFormat) -> bool

This method tests for self and other values to be equal, and is used @@ -75,8 +75,8 @@
§Safety
operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl Serialize for TuneFormat

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Sub for TuneFormat

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

-
§

type Output = TuneFormat

The resulting type after applying the - operator.
source§

impl SubAssign for TuneFormat

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

-
source§

impl UpperHex for TuneFormat

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for TuneFormat

source§

impl Eq for TuneFormat

source§

impl StructuralPartialEq for TuneFormat

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

§

type Output = TuneFormat

The resulting type after applying the - operator.
source§

impl SubAssign for TuneFormat

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

+
source§

impl UpperHex for TuneFormat

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for TuneFormat

source§

impl Eq for TuneFormat

source§

impl StructuralPartialEq for TuneFormat

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/mavlink/ardupilotmega/struct.UavionixAdsbOutDynamicState.html b/mavlink/ardupilotmega/struct.UavionixAdsbOutDynamicState.html index afbae0316e..a6ab5ce68b 100644 --- a/mavlink/ardupilotmega/struct.UavionixAdsbOutDynamicState.html +++ b/mavlink/ardupilotmega/struct.UavionixAdsbOutDynamicState.html @@ -56,17 +56,17 @@
§Safety
between Self::all() and self (e.g. Self::all() - self)

This is equivalent to using the ! operator (e.g. ops::Not), as in !flags.

-
source§

impl UavionixAdsbOutDynamicState

source

pub const DEFAULT: Self = Self::UAVIONIX_ADSB_OUT_DYNAMIC_STATE_INTENT_CHANGE

Trait Implementations§

source§

impl Binary for UavionixAdsbOutDynamicState

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for UavionixAdsbOutDynamicState

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

+
source§

impl UavionixAdsbOutDynamicState

source

pub const DEFAULT: Self = Self::UAVIONIX_ADSB_OUT_DYNAMIC_STATE_INTENT_CHANGE

Trait Implementations§

source§

impl Binary for UavionixAdsbOutDynamicState

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for UavionixAdsbOutDynamicState

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

§

type Output = UavionixAdsbOutDynamicState

The resulting type after applying the & operator.
source§

impl BitAndAssign for UavionixAdsbOutDynamicState

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

source§

impl BitOr for UavionixAdsbOutDynamicState

source§

fn bitor(self, other: UavionixAdsbOutDynamicState) -> Self

Returns the union of the two sets of flags.

-
§

type Output = UavionixAdsbOutDynamicState

The resulting type after applying the | operator.
source§

impl BitOrAssign for UavionixAdsbOutDynamicState

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
§

type Output = UavionixAdsbOutDynamicState

The resulting type after applying the | operator.
source§

impl BitOrAssign for UavionixAdsbOutDynamicState

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

source§

impl BitXor for UavionixAdsbOutDynamicState

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

-
§

type Output = UavionixAdsbOutDynamicState

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for UavionixAdsbOutDynamicState

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
§

type Output = UavionixAdsbOutDynamicState

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for UavionixAdsbOutDynamicState

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

source§

impl Clone for UavionixAdsbOutDynamicState

source§

fn clone(&self) -> UavionixAdsbOutDynamicState

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for UavionixAdsbOutDynamicState

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for UavionixAdsbOutDynamicState

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for UavionixAdsbOutDynamicState

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Extend<UavionixAdsbOutDynamicState> for UavionixAdsbOutDynamicState

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<UavionixAdsbOutDynamicState> for UavionixAdsbOutDynamicState

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for UavionixAdsbOutDynamicState

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for UavionixAdsbOutDynamicState

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for UavionixAdsbOutDynamicState

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = UavionixAdsbOutDynamicState

The resulting type after applying the ! operator.
source§

impl Octal for UavionixAdsbOutDynamicState

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for UavionixAdsbOutDynamicState

source§

fn cmp(&self, other: &UavionixAdsbOutDynamicState) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where +

§

type Output = UavionixAdsbOutDynamicState

The resulting type after applying the ! operator.
source§

impl Octal for UavionixAdsbOutDynamicState

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for UavionixAdsbOutDynamicState

source§

fn cmp(&self, other: &UavionixAdsbOutDynamicState) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for UavionixAdsbOutDynamicState

source§

fn eq(&self, other: &UavionixAdsbOutDynamicState) -> bool

This method tests for self and other values to be equal, and is used @@ -75,7 +75,7 @@
§Safety
operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl Serialize for UavionixAdsbOutDynamicState

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Sub for UavionixAdsbOutDynamicState

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

-
§

type Output = UavionixAdsbOutDynamicState

The resulting type after applying the - operator.
source§

impl SubAssign for UavionixAdsbOutDynamicState

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

+
§

type Output = UavionixAdsbOutDynamicState

The resulting type after applying the - operator.
source§

impl SubAssign for UavionixAdsbOutDynamicState

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

source§

impl UpperHex for UavionixAdsbOutDynamicState

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for UavionixAdsbOutDynamicState

source§

impl Eq for UavionixAdsbOutDynamicState

source§

impl StructuralPartialEq for UavionixAdsbOutDynamicState

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where diff --git a/mavlink/ardupilotmega/struct.UavionixAdsbOutRfSelect.html b/mavlink/ardupilotmega/struct.UavionixAdsbOutRfSelect.html index 00c09a5470..c6c83f047a 100644 --- a/mavlink/ardupilotmega/struct.UavionixAdsbOutRfSelect.html +++ b/mavlink/ardupilotmega/struct.UavionixAdsbOutRfSelect.html @@ -57,16 +57,16 @@
§Safety

This is equivalent to using the ! operator (e.g. ops::Not), as in !flags.

source§

impl UavionixAdsbOutRfSelect

source

pub const DEFAULT: Self = Self::UAVIONIX_ADSB_OUT_RF_SELECT_STANDBY

Trait Implementations§

source§

impl Binary for UavionixAdsbOutRfSelect

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for UavionixAdsbOutRfSelect

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

-
§

type Output = UavionixAdsbOutRfSelect

The resulting type after applying the & operator.
source§

impl BitAndAssign for UavionixAdsbOutRfSelect

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

+
§

type Output = UavionixAdsbOutRfSelect

The resulting type after applying the & operator.
source§

impl BitAndAssign for UavionixAdsbOutRfSelect

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

source§

impl BitOr for UavionixAdsbOutRfSelect

source§

fn bitor(self, other: UavionixAdsbOutRfSelect) -> Self

Returns the union of the two sets of flags.

-
§

type Output = UavionixAdsbOutRfSelect

The resulting type after applying the | operator.
source§

impl BitOrAssign for UavionixAdsbOutRfSelect

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
§

type Output = UavionixAdsbOutRfSelect

The resulting type after applying the | operator.
source§

impl BitOrAssign for UavionixAdsbOutRfSelect

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

source§

impl BitXor for UavionixAdsbOutRfSelect

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

-
§

type Output = UavionixAdsbOutRfSelect

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for UavionixAdsbOutRfSelect

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
§

type Output = UavionixAdsbOutRfSelect

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for UavionixAdsbOutRfSelect

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

source§

impl Clone for UavionixAdsbOutRfSelect

source§

fn clone(&self) -> UavionixAdsbOutRfSelect

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for UavionixAdsbOutRfSelect

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for UavionixAdsbOutRfSelect

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for UavionixAdsbOutRfSelect

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Extend<UavionixAdsbOutRfSelect> for UavionixAdsbOutRfSelect

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<UavionixAdsbOutRfSelect> for UavionixAdsbOutRfSelect

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for UavionixAdsbOutRfSelect

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for UavionixAdsbOutRfSelect

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for UavionixAdsbOutRfSelect

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = UavionixAdsbOutRfSelect

The resulting type after applying the ! operator.
source§

impl Octal for UavionixAdsbOutRfSelect

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for UavionixAdsbOutRfSelect

source§

fn cmp(&self, other: &UavionixAdsbOutRfSelect) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where +

§

type Output = UavionixAdsbOutRfSelect

The resulting type after applying the ! operator.
source§

impl Octal for UavionixAdsbOutRfSelect

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for UavionixAdsbOutRfSelect

source§

fn cmp(&self, other: &UavionixAdsbOutRfSelect) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for UavionixAdsbOutRfSelect

source§

fn eq(&self, other: &UavionixAdsbOutRfSelect) -> bool

This method tests for self and other values to be equal, and is used @@ -75,7 +75,7 @@
§Safety
operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl Serialize for UavionixAdsbOutRfSelect

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Sub for UavionixAdsbOutRfSelect

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

-
§

type Output = UavionixAdsbOutRfSelect

The resulting type after applying the - operator.
source§

impl SubAssign for UavionixAdsbOutRfSelect

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

+
§

type Output = UavionixAdsbOutRfSelect

The resulting type after applying the - operator.
source§

impl SubAssign for UavionixAdsbOutRfSelect

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

source§

impl UpperHex for UavionixAdsbOutRfSelect

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for UavionixAdsbOutRfSelect

source§

impl Eq for UavionixAdsbOutRfSelect

source§

impl StructuralPartialEq for UavionixAdsbOutRfSelect

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where diff --git a/mavlink/ardupilotmega/struct.UavionixAdsbRfHealth.html b/mavlink/ardupilotmega/struct.UavionixAdsbRfHealth.html index bd1cfa6799..bf60458c04 100644 --- a/mavlink/ardupilotmega/struct.UavionixAdsbRfHealth.html +++ b/mavlink/ardupilotmega/struct.UavionixAdsbRfHealth.html @@ -56,17 +56,17 @@
§Safety
between Self::all() and self (e.g. Self::all() - self)

This is equivalent to using the ! operator (e.g. ops::Not), as in !flags.

-

source§

impl UavionixAdsbRfHealth

source

pub const DEFAULT: Self = Self::UAVIONIX_ADSB_RF_HEALTH_INITIALIZING

Trait Implementations§

source§

impl Binary for UavionixAdsbRfHealth

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for UavionixAdsbRfHealth

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

-
§

type Output = UavionixAdsbRfHealth

The resulting type after applying the & operator.
source§

impl BitAndAssign for UavionixAdsbRfHealth

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

+
source§

impl UavionixAdsbRfHealth

source

pub const DEFAULT: Self = Self::UAVIONIX_ADSB_RF_HEALTH_INITIALIZING

Trait Implementations§

source§

impl Binary for UavionixAdsbRfHealth

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for UavionixAdsbRfHealth

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

+
§

type Output = UavionixAdsbRfHealth

The resulting type after applying the & operator.
source§

impl BitAndAssign for UavionixAdsbRfHealth

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

source§

impl BitOr for UavionixAdsbRfHealth

source§

fn bitor(self, other: UavionixAdsbRfHealth) -> Self

Returns the union of the two sets of flags.

-
§

type Output = UavionixAdsbRfHealth

The resulting type after applying the | operator.
source§

impl BitOrAssign for UavionixAdsbRfHealth

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
§

type Output = UavionixAdsbRfHealth

The resulting type after applying the | operator.
source§

impl BitOrAssign for UavionixAdsbRfHealth

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

source§

impl BitXor for UavionixAdsbRfHealth

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

-
§

type Output = UavionixAdsbRfHealth

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for UavionixAdsbRfHealth

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
§

type Output = UavionixAdsbRfHealth

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for UavionixAdsbRfHealth

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

source§

impl Clone for UavionixAdsbRfHealth

source§

fn clone(&self) -> UavionixAdsbRfHealth

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for UavionixAdsbRfHealth

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for UavionixAdsbRfHealth

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for UavionixAdsbRfHealth

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Extend<UavionixAdsbRfHealth> for UavionixAdsbRfHealth

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<UavionixAdsbRfHealth> for UavionixAdsbRfHealth

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for UavionixAdsbRfHealth

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for UavionixAdsbRfHealth

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for UavionixAdsbRfHealth

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = UavionixAdsbRfHealth

The resulting type after applying the ! operator.
source§

impl Octal for UavionixAdsbRfHealth

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for UavionixAdsbRfHealth

source§

fn cmp(&self, other: &UavionixAdsbRfHealth) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for UavionixAdsbRfHealth

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for UavionixAdsbRfHealth

source§

fn not(self) -> Self

Returns the complement of this set of flags.

+
§

type Output = UavionixAdsbRfHealth

The resulting type after applying the ! operator.
source§

impl Octal for UavionixAdsbRfHealth

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for UavionixAdsbRfHealth

source§

fn cmp(&self, other: &UavionixAdsbRfHealth) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for UavionixAdsbRfHealth

source§

fn eq(&self, other: &UavionixAdsbRfHealth) -> bool

This method tests for self and other values to be equal, and is used @@ -76,7 +76,7 @@
§Safety
operator. Read more
source§

impl Serialize for UavionixAdsbRfHealth

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Sub for UavionixAdsbRfHealth

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

§

type Output = UavionixAdsbRfHealth

The resulting type after applying the - operator.
source§

impl SubAssign for UavionixAdsbRfHealth

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

-
source§

impl UpperHex for UavionixAdsbRfHealth

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for UavionixAdsbRfHealth

source§

impl Eq for UavionixAdsbRfHealth

source§

impl StructuralPartialEq for UavionixAdsbRfHealth

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

source§

impl UpperHex for UavionixAdsbRfHealth

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for UavionixAdsbRfHealth

source§

impl Eq for UavionixAdsbRfHealth

source§

impl StructuralPartialEq for UavionixAdsbRfHealth

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/mavlink/ardupilotmega/struct.UtmDataAvailFlags.html b/mavlink/ardupilotmega/struct.UtmDataAvailFlags.html index 01a7f4ab32..e387381f7d 100644 --- a/mavlink/ardupilotmega/struct.UtmDataAvailFlags.html +++ b/mavlink/ardupilotmega/struct.UtmDataAvailFlags.html @@ -56,17 +56,17 @@
§Safety
between Self::all() and self (e.g. Self::all() - self)

This is equivalent to using the ! operator (e.g. ops::Not), as in !flags.

-
source§

impl UtmDataAvailFlags

source

pub const DEFAULT: Self = Self::UTM_DATA_AVAIL_FLAGS_TIME_VALID

Trait Implementations§

source§

impl Binary for UtmDataAvailFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for UtmDataAvailFlags

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

+
source§

impl UtmDataAvailFlags

source

pub const DEFAULT: Self = Self::UTM_DATA_AVAIL_FLAGS_TIME_VALID

Trait Implementations§

source§

impl Binary for UtmDataAvailFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for UtmDataAvailFlags

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

§

type Output = UtmDataAvailFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for UtmDataAvailFlags

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

source§

impl BitOr for UtmDataAvailFlags

source§

fn bitor(self, other: UtmDataAvailFlags) -> Self

Returns the union of the two sets of flags.

-
§

type Output = UtmDataAvailFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for UtmDataAvailFlags

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
§

type Output = UtmDataAvailFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for UtmDataAvailFlags

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

source§

impl BitXor for UtmDataAvailFlags

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

-
§

type Output = UtmDataAvailFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for UtmDataAvailFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

-
source§

impl Clone for UtmDataAvailFlags

source§

fn clone(&self) -> UtmDataAvailFlags

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for UtmDataAvailFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for UtmDataAvailFlags

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for UtmDataAvailFlags

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where +

§

type Output = UtmDataAvailFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for UtmDataAvailFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
source§

impl Clone for UtmDataAvailFlags

source§

fn clone(&self) -> UtmDataAvailFlags

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for UtmDataAvailFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for UtmDataAvailFlags

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for UtmDataAvailFlags

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Extend<UtmDataAvailFlags> for UtmDataAvailFlags

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<UtmDataAvailFlags> for UtmDataAvailFlags

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for UtmDataAvailFlags

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for UtmDataAvailFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for UtmDataAvailFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = UtmDataAvailFlags

The resulting type after applying the ! operator.
source§

impl Octal for UtmDataAvailFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for UtmDataAvailFlags

source§

fn cmp(&self, other: &UtmDataAvailFlags) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where +

§

type Output = UtmDataAvailFlags

The resulting type after applying the ! operator.
source§

impl Octal for UtmDataAvailFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for UtmDataAvailFlags

source§

fn cmp(&self, other: &UtmDataAvailFlags) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for UtmDataAvailFlags

source§

fn eq(&self, other: &UtmDataAvailFlags) -> bool

This method tests for self and other values to be equal, and is used @@ -75,8 +75,8 @@
§Safety
operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl Serialize for UtmDataAvailFlags

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Sub for UtmDataAvailFlags

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

-
§

type Output = UtmDataAvailFlags

The resulting type after applying the - operator.
source§

impl SubAssign for UtmDataAvailFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

-
source§

impl UpperHex for UtmDataAvailFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for UtmDataAvailFlags

source§

impl Eq for UtmDataAvailFlags

source§

impl StructuralPartialEq for UtmDataAvailFlags

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

§

type Output = UtmDataAvailFlags

The resulting type after applying the - operator.
source§

impl SubAssign for UtmDataAvailFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

+
source§

impl UpperHex for UtmDataAvailFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for UtmDataAvailFlags

source§

impl Eq for UtmDataAvailFlags

source§

impl StructuralPartialEq for UtmDataAvailFlags

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/mavlink/common/enum.MavMessage.html b/mavlink/common/enum.MavMessage.html index cd3c2e1984..77f3e47062 100644 --- a/mavlink/common/enum.MavMessage.html +++ b/mavlink/common/enum.MavMessage.html @@ -1,226 +1,226 @@ MavMessage in mavlink::common - Rust

Enum mavlink::common::MavMessage

source ·
#[repr(u32)]
pub enum MavMessage { -
Show 221 variants LOCAL_POSITION_NED(LOCAL_POSITION_NED_DATA), - FOLLOW_TARGET(FOLLOW_TARGET_DATA), - OPTICAL_FLOW(OPTICAL_FLOW_DATA), - STORAGE_INFORMATION(STORAGE_INFORMATION_DATA), - SAFETY_ALLOWED_AREA(SAFETY_ALLOWED_AREA_DATA), +
Show 221 variants RAW_PRESSURE(RAW_PRESSURE_DATA), + AUTOPILOT_STATE_FOR_GIMBAL_DEVICE(AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA), + LOG_ERASE(LOG_ERASE_DATA), + CAMERA_INFORMATION(CAMERA_INFORMATION_DATA), + RESOURCE_REQUEST(RESOURCE_REQUEST_DATA), + PARAM_EXT_REQUEST_READ(PARAM_EXT_REQUEST_READ_DATA), + LOCAL_POSITION_NED(LOCAL_POSITION_NED_DATA), MANUAL_SETPOINT(MANUAL_SETPOINT_DATA), - AUTOPILOT_VERSION(AUTOPILOT_VERSION_DATA), - RC_CHANNELS(RC_CHANNELS_DATA), + LOCAL_POSITION_NED_COV(LOCAL_POSITION_NED_COV_DATA), + HIL_RC_INPUTS_RAW(HIL_RC_INPUTS_RAW_DATA), ESTIMATOR_STATUS(ESTIMATOR_STATUS_DATA), - ADSB_VEHICLE(ADSB_VEHICLE_DATA), - TRAJECTORY_REPRESENTATION_WAYPOINTS(TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA), - WHEEL_DISTANCE(WHEEL_DISTANCE_DATA), - NAMED_VALUE_FLOAT(NAMED_VALUE_FLOAT_DATA), - ACTUATOR_OUTPUT_STATUS(ACTUATOR_OUTPUT_STATUS_DATA), - OPEN_DRONE_ID_BASIC_ID(OPEN_DRONE_ID_BASIC_ID_DATA), - PARAM_EXT_REQUEST_READ(PARAM_EXT_REQUEST_READ_DATA), - OPEN_DRONE_ID_SELF_ID(OPEN_DRONE_ID_SELF_ID_DATA), - DISTANCE_SENSOR(DISTANCE_SENSOR_DATA), - PARAM_EXT_SET(PARAM_EXT_SET_DATA), - OPEN_DRONE_ID_AUTHENTICATION(OPEN_DRONE_ID_AUTHENTICATION_DATA), - MISSION_CURRENT(MISSION_CURRENT_DATA), - ATTITUDE_TARGET(ATTITUDE_TARGET_DATA), - GPS2_RAW(GPS2_RAW_DATA), - FLIGHT_INFORMATION(FLIGHT_INFORMATION_DATA), - MISSION_COUNT(MISSION_COUNT_DATA), - SAFETY_SET_ALLOWED_AREA(SAFETY_SET_ALLOWED_AREA_DATA), - CAMERA_TRACKING_IMAGE_STATUS(CAMERA_TRACKING_IMAGE_STATUS_DATA), - GIMBAL_MANAGER_SET_PITCHYAW(GIMBAL_MANAGER_SET_PITCHYAW_DATA), - ATTITUDE(ATTITUDE_DATA), - MISSION_REQUEST_PARTIAL_LIST(MISSION_REQUEST_PARTIAL_LIST_DATA), - POSITION_TARGET_LOCAL_NED(POSITION_TARGET_LOCAL_NED_DATA), - GPS_STATUS(GPS_STATUS_DATA), - SET_ATTITUDE_TARGET(SET_ATTITUDE_TARGET_DATA), - HIL_GPS(HIL_GPS_DATA), - LOG_ERASE(LOG_ERASE_DATA), + SAFETY_ALLOWED_AREA(SAFETY_ALLOWED_AREA_DATA), + CAMERA_TRIGGER(CAMERA_TRIGGER_DATA), + SCALED_IMU2(SCALED_IMU2_DATA), + FENCE_STATUS(FENCE_STATUS_DATA), + AUTOPILOT_VERSION(AUTOPILOT_VERSION_DATA), + ESC_STATUS(ESC_STATUS_DATA), + TRAJECTORY_REPRESENTATION_BEZIER(TRAJECTORY_REPRESENTATION_BEZIER_DATA), + ALTITUDE(ALTITUDE_DATA), + HIGH_LATENCY(HIGH_LATENCY_DATA), + SCALED_PRESSURE2(SCALED_PRESSURE2_DATA), + GIMBAL_DEVICE_SET_ATTITUDE(GIMBAL_DEVICE_SET_ATTITUDE_DATA), VISION_SPEED_ESTIMATE(VISION_SPEED_ESTIMATE_DATA), - HIL_STATE_QUATERNION(HIL_STATE_QUATERNION_DATA), - NAV_CONTROLLER_OUTPUT(NAV_CONTROLLER_OUTPUT_DATA), - RC_CHANNELS_OVERRIDE(RC_CHANNELS_OVERRIDE_DATA), FILE_TRANSFER_PROTOCOL(FILE_TRANSFER_PROTOCOL_DATA), - EFI_STATUS(EFI_STATUS_DATA), - CAMERA_IMAGE_CAPTURED(CAMERA_IMAGE_CAPTURED_DATA), - ENCAPSULATED_DATA(ENCAPSULATED_DATA_DATA), + MISSION_REQUEST(MISSION_REQUEST_DATA), + RESPONSE_EVENT_ERROR(RESPONSE_EVENT_ERROR_DATA), + NAV_CONTROLLER_OUTPUT(NAV_CONTROLLER_OUTPUT_DATA), + SYS_STATUS(SYS_STATUS_DATA), + LOG_DATA(LOG_DATA_DATA), + CHANGE_OPERATOR_CONTROL(CHANGE_OPERATOR_CONTROL_DATA), + COMMAND_ACK(COMMAND_ACK_DATA), + HIL_OPTICAL_FLOW(HIL_OPTICAL_FLOW_DATA), + ORBIT_EXECUTION_STATUS(ORBIT_EXECUTION_STATUS_DATA), + DEBUG_VECT(DEBUG_VECT_DATA), + TRAJECTORY_REPRESENTATION_WAYPOINTS(TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA), + SMART_BATTERY_INFO(SMART_BATTERY_INFO_DATA), + PARAM_MAP_RC(PARAM_MAP_RC_DATA), + MISSION_ITEM_INT(MISSION_ITEM_INT_DATA), + WIND_COV(WIND_COV_DATA), + MANUAL_CONTROL(MANUAL_CONTROL_DATA), + LOG_REQUEST_LIST(LOG_REQUEST_LIST_DATA), + GLOBAL_VISION_POSITION_ESTIMATE(GLOBAL_VISION_POSITION_ESTIMATE_DATA), + TIME_ESTIMATE_TO_TARGET(TIME_ESTIMATE_TO_TARGET_DATA), COMMAND_LONG(COMMAND_LONG_DATA), - MESSAGE_INTERVAL(MESSAGE_INTERVAL_DATA), - LOGGING_DATA_ACKED(LOGGING_DATA_ACKED_DATA), - VIDEO_STREAM_STATUS(VIDEO_STREAM_STATUS_DATA), - GIMBAL_MANAGER_INFORMATION(GIMBAL_MANAGER_INFORMATION_DATA), - WIFI_CONFIG_AP(WIFI_CONFIG_AP_DATA), - AUTOPILOT_STATE_FOR_GIMBAL_DEVICE(AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA), - SET_MODE(SET_MODE_DATA), - MISSION_ITEM(MISSION_ITEM_DATA), - PROTOCOL_VERSION(PROTOCOL_VERSION_DATA), + GIMBAL_MANAGER_SET_ATTITUDE(GIMBAL_MANAGER_SET_ATTITUDE_DATA), + GIMBAL_MANAGER_SET_MANUAL_CONTROL(GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA), + OPEN_DRONE_ID_LOCATION(OPEN_DRONE_ID_LOCATION_DATA), + HIL_CONTROLS(HIL_CONTROLS_DATA), + MISSION_SET_CURRENT(MISSION_SET_CURRENT_DATA), + SET_POSITION_TARGET_LOCAL_NED(SET_POSITION_TARGET_LOCAL_NED_DATA), + HIL_STATE_QUATERNION(HIL_STATE_QUATERNION_DATA), + SETUP_SIGNING(SETUP_SIGNING_DATA), + DISTANCE_SENSOR(DISTANCE_SENSOR_DATA), + MISSION_CURRENT(MISSION_CURRENT_DATA), + SET_HOME_POSITION(SET_HOME_POSITION_DATA), + COMMAND_CANCEL(COMMAND_CANCEL_DATA), + GPS_INJECT_DATA(GPS_INJECT_DATA_DATA), + GPS_INPUT(GPS_INPUT_DATA), + UAVCAN_NODE_STATUS(UAVCAN_NODE_STATUS_DATA), + CELLULAR_CONFIG(CELLULAR_CONFIG_DATA), + GENERATOR_STATUS(GENERATOR_STATUS_DATA), + CAN_FRAME(CAN_FRAME_DATA), + OPEN_DRONE_ID_MESSAGE_PACK(OPEN_DRONE_ID_MESSAGE_PACK_DATA), MISSION_ITEM_REACHED(MISSION_ITEM_REACHED_DATA), - MISSION_ACK(MISSION_ACK_DATA), - SET_GPS_GLOBAL_ORIGIN(SET_GPS_GLOBAL_ORIGIN_DATA), + SET_ATTITUDE_TARGET(SET_ATTITUDE_TARGET_DATA), GPS_GLOBAL_ORIGIN(GPS_GLOBAL_ORIGIN_DATA), - MISSION_REQUEST_LIST(MISSION_REQUEST_LIST_DATA), - HIL_SENSOR(HIL_SENSOR_DATA), - ATTITUDE_QUATERNION_COV(ATTITUDE_QUATERNION_COV_DATA), + SET_ACTUATOR_CONTROL_TARGET(SET_ACTUATOR_CONTROL_TARGET_DATA), + CAMERA_FOV_STATUS(CAMERA_FOV_STATUS_DATA), SET_POSITION_TARGET_GLOBAL_INT(SET_POSITION_TARGET_GLOBAL_INT_DATA), - TERRAIN_REQUEST(TERRAIN_REQUEST_DATA), - TERRAIN_DATA(TERRAIN_DATA_DATA), - ATT_POS_MOCAP(ATT_POS_MOCAP_DATA), - CONTROL_SYSTEM_STATE(CONTROL_SYSTEM_STATE_DATA), - SCALED_IMU3(SCALED_IMU3_DATA), - WIND_COV(WIND_COV_DATA), - CAMERA_INFORMATION(CAMERA_INFORMATION_DATA), - GIMBAL_MANAGER_SET_MANUAL_CONTROL(GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA), - OBSTACLE_DISTANCE(OBSTACLE_DISTANCE_DATA), - SERIAL_CONTROL(SERIAL_CONTROL_DATA), - ACTUATOR_CONTROL_TARGET(ACTUATOR_CONTROL_TARGET_DATA), - GLOBAL_POSITION_INT(GLOBAL_POSITION_INT_DATA), - GPS_INPUT(GPS_INPUT_DATA), - VIBRATION(VIBRATION_DATA), - PARAM_REQUEST_LIST(PARAM_REQUEST_LIST_DATA), - EXTENDED_SYS_STATE(EXTENDED_SYS_STATE_DATA), - PLAY_TUNE(PLAY_TUNE_DATA), - VFR_HUD(VFR_HUD_DATA), - LOG_REQUEST_END(LOG_REQUEST_END_DATA), - HIGHRES_IMU(HIGHRES_IMU_DATA), - GLOBAL_POSITION_INT_COV(GLOBAL_POSITION_INT_COV_DATA), - AIS_VESSEL(AIS_VESSEL_DATA), - GPS_RTCM_DATA(GPS_RTCM_DATA_DATA), - COMMAND_ACK(COMMAND_ACK_DATA), - CHANGE_OPERATOR_CONTROL_ACK(CHANGE_OPERATOR_CONTROL_ACK_DATA), - SCALED_IMU2(SCALED_IMU2_DATA), - GIMBAL_MANAGER_STATUS(GIMBAL_MANAGER_STATUS_DATA), + MISSION_ITEM(MISSION_ITEM_DATA), + CURRENT_EVENT_SEQUENCE(CURRENT_EVENT_SEQUENCE_DATA), + MISSION_ACK(MISSION_ACK_DATA), PARAM_EXT_REQUEST_LIST(PARAM_EXT_REQUEST_LIST_DATA), - ODOMETRY(ODOMETRY_DATA), - DEBUG_VECT(DEBUG_VECT_DATA), - DEBUG(DEBUG_DATA), - TRAJECTORY_REPRESENTATION_BEZIER(TRAJECTORY_REPRESENTATION_BEZIER_DATA), - REQUEST_EVENT(REQUEST_EVENT_DATA), - CAN_FILTER_MODIFY(CAN_FILTER_MODIFY_DATA), - HYGROMETER_SENSOR(HYGROMETER_SENSOR_DATA), - NAMED_VALUE_INT(NAMED_VALUE_INT_DATA), - OPEN_DRONE_ID_MESSAGE_PACK(OPEN_DRONE_ID_MESSAGE_PACK_DATA), - CAMERA_TRIGGER(CAMERA_TRIGGER_DATA), - LOG_DATA(LOG_DATA_DATA), - SCALED_PRESSURE3(SCALED_PRESSURE3_DATA), - OPEN_DRONE_ID_ARM_STATUS(OPEN_DRONE_ID_ARM_STATUS_DATA), - ATTITUDE_QUATERNION(ATTITUDE_QUATERNION_DATA), - CHANGE_OPERATOR_CONTROL(CHANGE_OPERATOR_CONTROL_DATA), - SETUP_SIGNING(SETUP_SIGNING_DATA), - GIMBAL_DEVICE_INFORMATION(GIMBAL_DEVICE_INFORMATION_DATA), - WINCH_STATUS(WINCH_STATUS_DATA), - SIM_STATE(SIM_STATE_DATA), - GPS_RTK(GPS_RTK_DATA), + RC_CHANNELS_OVERRIDE(RC_CHANNELS_OVERRIDE_DATA), + AUTH_KEY(AUTH_KEY_DATA), + ISBD_LINK_STATUS(ISBD_LINK_STATUS_DATA), + COMMAND_INT(COMMAND_INT_DATA), + LOG_ENTRY(LOG_ENTRY_DATA), + GPS2_RAW(GPS2_RAW_DATA), GPS2_RTK(GPS2_RTK_DATA), - HIGH_LATENCY(HIGH_LATENCY_DATA), - TERRAIN_REPORT(TERRAIN_REPORT_DATA), - HIL_STATE(HIL_STATE_DATA), + COLLISION(COLLISION_DATA), + ONBOARD_COMPUTER_STATUS(ONBOARD_COMPUTER_STATUS_DATA), + DEBUG(DEBUG_DATA), MEMORY_VECT(MEMORY_VECT_DATA), - MOUNT_ORIENTATION(MOUNT_ORIENTATION_DATA), - CAMERA_TRACKING_GEO_STATUS(CAMERA_TRACKING_GEO_STATUS_DATA), - LOGGING_ACK(LOGGING_ACK_DATA), - UAVCAN_NODE_STATUS(UAVCAN_NODE_STATUS_DATA), - SCALED_PRESSURE2(SCALED_PRESSURE2_DATA), - VIDEO_STREAM_INFORMATION(VIDEO_STREAM_INFORMATION_DATA), + GIMBAL_DEVICE_INFORMATION(GIMBAL_DEVICE_INFORMATION_DATA), + EXTENDED_SYS_STATE(EXTENDED_SYS_STATE_DATA), + SUPPORTED_TUNES(SUPPORTED_TUNES_DATA), + CAMERA_SETTINGS(CAMERA_SETTINGS_DATA), + LOGGING_DATA_ACKED(LOGGING_DATA_ACKED_DATA), + LINK_NODE_STATUS(LINK_NODE_STATUS_DATA), + AIS_VESSEL(AIS_VESSEL_DATA), + DEBUG_FLOAT_ARRAY(DEBUG_FLOAT_ARRAY_DATA), + PARAM_EXT_ACK(PARAM_EXT_ACK_DATA), + MISSION_WRITE_PARTIAL_LIST(MISSION_WRITE_PARTIAL_LIST_DATA), BATTERY_STATUS(BATTERY_STATUS_DATA), - SCALED_IMU(SCALED_IMU_DATA), - LOCAL_POSITION_NED_COV(LOCAL_POSITION_NED_COV_DATA), - GENERATOR_STATUS(GENERATOR_STATUS_DATA), - CAN_FRAME(CAN_FRAME_DATA), - TERRAIN_CHECK(TERRAIN_CHECK_DATA), - CAMERA_CAPTURE_STATUS(CAMERA_CAPTURE_STATUS_DATA), + LANDING_TARGET(LANDING_TARGET_DATA), + CAMERA_TRACKING_GEO_STATUS(CAMERA_TRACKING_GEO_STATUS_DATA), + REQUEST_EVENT(REQUEST_EVENT_DATA), + SAFETY_SET_ALLOWED_AREA(SAFETY_SET_ALLOWED_AREA_DATA), + EFI_STATUS(EFI_STATUS_DATA), + STATUSTEXT(STATUSTEXT_DATA), + OPEN_DRONE_ID_SELF_ID(OPEN_DRONE_ID_SELF_ID_DATA), + LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET(LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA), + GPS_RTCM_DATA(GPS_RTCM_DATA_DATA), + SET_GPS_GLOBAL_ORIGIN(SET_GPS_GLOBAL_ORIGIN_DATA), + ACTUATOR_CONTROL_TARGET(ACTUATOR_CONTROL_TARGET_DATA), + BUTTON_CHANGE(BUTTON_CHANGE_DATA), + MISSION_REQUEST_PARTIAL_LIST(MISSION_REQUEST_PARTIAL_LIST_DATA), + UTM_GLOBAL_POSITION(UTM_GLOBAL_POSITION_DATA), + HOME_POSITION(HOME_POSITION_DATA), UAVCAN_NODE_INFO(UAVCAN_NODE_INFO_DATA), - RAW_PRESSURE(RAW_PRESSURE_DATA), + PLAY_TUNE_V2(PLAY_TUNE_V2_DATA), + MISSION_REQUEST_LIST(MISSION_REQUEST_LIST_DATA), + MISSION_REQUEST_INT(MISSION_REQUEST_INT_DATA), + DATA_STREAM(DATA_STREAM_DATA), + VIDEO_STREAM_INFORMATION(VIDEO_STREAM_INFORMATION_DATA), + CANFD_FRAME(CANFD_FRAME_DATA), + HYGROMETER_SENSOR(HYGROMETER_SENSOR_DATA), POSITION_TARGET_GLOBAL_INT(POSITION_TARGET_GLOBAL_INT_DATA), + HIGH_LATENCY2(HIGH_LATENCY2_DATA), + GLOBAL_POSITION_INT_COV(GLOBAL_POSITION_INT_COV_DATA), + NAMED_VALUE_INT(NAMED_VALUE_INT_DATA), + CHANGE_OPERATOR_CONTROL_ACK(CHANGE_OPERATOR_CONTROL_ACK_DATA), + GIMBAL_MANAGER_INFORMATION(GIMBAL_MANAGER_INFORMATION_DATA), + COMPONENT_METADATA(COMPONENT_METADATA_DATA), + LOGGING_ACK(LOGGING_ACK_DATA), + RC_CHANNELS_RAW(RC_CHANNELS_RAW_DATA), + POSITION_TARGET_LOCAL_NED(POSITION_TARGET_LOCAL_NED_DATA), + PARAM_EXT_SET(PARAM_EXT_SET_DATA), HEARTBEAT(HEARTBEAT_DATA), - RADIO_STATUS(RADIO_STATUS_DATA), + WIFI_CONFIG_AP(WIFI_CONFIG_AP_DATA), + SCALED_IMU3(SCALED_IMU3_DATA), PARAM_EXT_VALUE(PARAM_EXT_VALUE_DATA), - RC_CHANNELS_RAW(RC_CHANNELS_RAW_DATA), - ISBD_LINK_STATUS(ISBD_LINK_STATUS_DATA), - OPTICAL_FLOW_RAD(OPTICAL_FLOW_RAD_DATA), - PARAM_MAP_RC(PARAM_MAP_RC_DATA), + WINCH_STATUS(WINCH_STATUS_DATA), PARAM_REQUEST_READ(PARAM_REQUEST_READ_DATA), - RESPONSE_EVENT_ERROR(RESPONSE_EVENT_ERROR_DATA), - LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET(LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA), - GLOBAL_VISION_POSITION_ESTIMATE(GLOBAL_VISION_POSITION_ESTIMATE_DATA), - FENCE_STATUS(FENCE_STATUS_DATA), - ONBOARD_COMPUTER_STATUS(ONBOARD_COMPUTER_STATUS_DATA), - CURRENT_EVENT_SEQUENCE(CURRENT_EVENT_SEQUENCE_DATA), - MISSION_REQUEST_INT(MISSION_REQUEST_INT_DATA), - MISSION_ITEM_INT(MISSION_ITEM_INT_DATA), - VISION_POSITION_ESTIMATE(VISION_POSITION_ESTIMATE_DATA), - PARAM_EXT_ACK(PARAM_EXT_ACK_DATA), + HIGHRES_IMU(HIGHRES_IMU_DATA), + HIL_GPS(HIL_GPS_DATA), + TERRAIN_REQUEST(TERRAIN_REQUEST_DATA), + ATTITUDE(ATTITUDE_DATA), SYSTEM_TIME(SYSTEM_TIME_DATA), - LINK_NODE_STATUS(LINK_NODE_STATUS_DATA), - COMMAND_CANCEL(COMMAND_CANCEL_DATA), - VICON_POSITION_ESTIMATE(VICON_POSITION_ESTIMATE_DATA), - SERVO_OUTPUT_RAW(SERVO_OUTPUT_RAW_DATA), - TIMESYNC(TIMESYNC_DATA), + ATTITUDE_TARGET(ATTITUDE_TARGET_DATA), + DATA_TRANSMISSION_HANDSHAKE(DATA_TRANSMISSION_HANDSHAKE_DATA), + MESSAGE_INTERVAL(MESSAGE_INTERVAL_DATA), + TUNNEL(TUNNEL_DATA), + RAW_IMU(RAW_IMU_DATA), + OPEN_DRONE_ID_BASIC_ID(OPEN_DRONE_ID_BASIC_ID_DATA), + SCALED_PRESSURE(SCALED_PRESSURE_DATA), + GIMBAL_DEVICE_ATTITUDE_STATUS(GIMBAL_DEVICE_ATTITUDE_STATUS_DATA), + CAN_FILTER_MODIFY(CAN_FILTER_MODIFY_DATA), + HIL_ACTUATOR_CONTROLS(HIL_ACTUATOR_CONTROLS_DATA), + REQUEST_DATA_STREAM(REQUEST_DATA_STREAM_DATA), + NAMED_VALUE_FLOAT(NAMED_VALUE_FLOAT_DATA), + ATT_POS_MOCAP(ATT_POS_MOCAP_DATA), + PLAY_TUNE(PLAY_TUNE_DATA), + GPS_STATUS(GPS_STATUS_DATA), + SIM_STATE(SIM_STATE_DATA), POWER_STATUS(POWER_STATUS_DATA), + SCALED_PRESSURE3(SCALED_PRESSURE3_DATA), + FOLLOW_TARGET(FOLLOW_TARGET_DATA), + MAG_CAL_REPORT(MAG_CAL_REPORT_DATA), + OPTICAL_FLOW(OPTICAL_FLOW_DATA), + PROTOCOL_VERSION(PROTOCOL_VERSION_DATA), + SERIAL_CONTROL(SERIAL_CONTROL_DATA), + VIDEO_STREAM_STATUS(VIDEO_STREAM_STATUS_DATA), + ODOMETRY(ODOMETRY_DATA), + CELLULAR_STATUS(CELLULAR_STATUS_DATA), OPEN_DRONE_ID_SYSTEM_UPDATE(OPEN_DRONE_ID_SYSTEM_UPDATE_DATA), - RAW_RPM(RAW_RPM_DATA), - OPEN_DRONE_ID_LOCATION(OPEN_DRONE_ID_LOCATION_DATA), - LANDING_TARGET(LANDING_TARGET_DATA), - GIMBAL_MANAGER_SET_ATTITUDE(GIMBAL_MANAGER_SET_ATTITUDE_DATA), - ESC_STATUS(ESC_STATUS_DATA), - ORBIT_EXECUTION_STATUS(ORBIT_EXECUTION_STATUS_DATA), - SYS_STATUS(SYS_STATUS_DATA), - LOG_REQUEST_DATA(LOG_REQUEST_DATA_DATA), - AUTH_KEY(AUTH_KEY_DATA), - LOG_REQUEST_LIST(LOG_REQUEST_LIST_DATA), - GPS_INJECT_DATA(GPS_INJECT_DATA_DATA), - MISSION_SET_CURRENT(MISSION_SET_CURRENT_DATA), - COMMAND_INT(COMMAND_INT_DATA), - HIGH_LATENCY2(HIGH_LATENCY2_DATA), - BUTTON_CHANGE(BUTTON_CHANGE_DATA), - CAMERA_SETTINGS(CAMERA_SETTINGS_DATA), - DEBUG_FLOAT_ARRAY(DEBUG_FLOAT_ARRAY_DATA), - COMPONENT_METADATA(COMPONENT_METADATA_DATA), + PARAM_REQUEST_LIST(PARAM_REQUEST_LIST_DATA), + GIMBAL_MANAGER_SET_PITCHYAW(GIMBAL_MANAGER_SET_PITCHYAW_DATA), + SERVO_OUTPUT_RAW(SERVO_OUTPUT_RAW_DATA), + TIMESYNC(TIMESYNC_DATA), + RC_CHANNELS(RC_CHANNELS_DATA), + GLOBAL_POSITION_INT(GLOBAL_POSITION_INT_DATA), + ATTITUDE_QUATERNION_COV(ATTITUDE_QUATERNION_COV_DATA), + RADIO_STATUS(RADIO_STATUS_DATA), + ADSB_VEHICLE(ADSB_VEHICLE_DATA), + CONTROL_SYSTEM_STATE(CONTROL_SYSTEM_STATE_DATA), + SCALED_IMU(SCALED_IMU_DATA), MISSION_CLEAR_ALL(MISSION_CLEAR_ALL_DATA), - COLLISION(COLLISION_DATA), - SUPPORTED_TUNES(SUPPORTED_TUNES_DATA), + VICON_POSITION_ESTIMATE(VICON_POSITION_ESTIMATE_DATA), + TERRAIN_DATA(TERRAIN_DATA_DATA), + ATTITUDE_QUATERNION(ATTITUDE_QUATERNION_DATA), + CAMERA_IMAGE_CAPTURED(CAMERA_IMAGE_CAPTURED_DATA), + VISION_POSITION_ESTIMATE(VISION_POSITION_ESTIMATE_DATA), + LOG_REQUEST_DATA(LOG_REQUEST_DATA_DATA), + PING(PING_DATA), + VIBRATION(VIBRATION_DATA), + FLIGHT_INFORMATION(FLIGHT_INFORMATION_DATA), + GPS_RAW_INT(GPS_RAW_INT_DATA), + MOUNT_ORIENTATION(MOUNT_ORIENTATION_DATA), + LOGGING_DATA(LOGGING_DATA_DATA), + PARAM_SET(PARAM_SET_DATA), + GIMBAL_MANAGER_STATUS(GIMBAL_MANAGER_STATUS_DATA), + RAW_RPM(RAW_RPM_DATA), + TERRAIN_CHECK(TERRAIN_CHECK_DATA), + ACTUATOR_OUTPUT_STATUS(ACTUATOR_OUTPUT_STATUS_DATA), + V2_EXTENSION(V2_EXTENSION_DATA), + COMPONENT_INFORMATION(COMPONENT_INFORMATION_DATA), + HIL_STATE(HIL_STATE_DATA), + CAMERA_TRACKING_IMAGE_STATUS(CAMERA_TRACKING_IMAGE_STATUS_DATA), + RC_CHANNELS_SCALED(RC_CHANNELS_SCALED_DATA), EVENT(EVENT_DATA), - CANFD_FRAME(CANFD_FRAME_DATA), - GIMBAL_DEVICE_ATTITUDE_STATUS(GIMBAL_DEVICE_ATTITUDE_STATUS_DATA), - HOME_POSITION(HOME_POSITION_DATA), + WHEEL_DISTANCE(WHEEL_DISTANCE_DATA), + OPEN_DRONE_ID_OPERATOR_ID(OPEN_DRONE_ID_OPERATOR_ID_DATA), OPEN_DRONE_ID_SYSTEM(OPEN_DRONE_ID_SYSTEM_DATA), - GPS_RAW_INT(GPS_RAW_INT_DATA), - PING(PING_DATA), - HIL_CONTROLS(HIL_CONTROLS_DATA), - HIL_RC_INPUTS_RAW(HIL_RC_INPUTS_RAW_DATA), - STATUSTEXT(STATUSTEXT_DATA), + STORAGE_INFORMATION(STORAGE_INFORMATION_DATA), PARAM_VALUE(PARAM_VALUE_DATA), - SET_POSITION_TARGET_LOCAL_NED(SET_POSITION_TARGET_LOCAL_NED_DATA), - MISSION_REQUEST(MISSION_REQUEST_DATA), - TIME_ESTIMATE_TO_TARGET(TIME_ESTIMATE_TO_TARGET_DATA), - RAW_IMU(RAW_IMU_DATA), - DATA_TRANSMISSION_HANDSHAKE(DATA_TRANSMISSION_HANDSHAKE_DATA), - OPEN_DRONE_ID_OPERATOR_ID(OPEN_DRONE_ID_OPERATOR_ID_DATA), - MISSION_WRITE_PARTIAL_LIST(MISSION_WRITE_PARTIAL_LIST_DATA), - V2_EXTENSION(V2_EXTENSION_DATA), - CAMERA_FOV_STATUS(CAMERA_FOV_STATUS_DATA), - MAG_CAL_REPORT(MAG_CAL_REPORT_DATA), - SCALED_PRESSURE(SCALED_PRESSURE_DATA), - LOGGING_DATA(LOGGING_DATA_DATA), + GPS_RTK(GPS_RTK_DATA), ESC_INFO(ESC_INFO_DATA), - CELLULAR_STATUS(CELLULAR_STATUS_DATA), - RC_CHANNELS_SCALED(RC_CHANNELS_SCALED_DATA), - MANUAL_CONTROL(MANUAL_CONTROL_DATA), - DATA_STREAM(DATA_STREAM_DATA), - SET_HOME_POSITION(SET_HOME_POSITION_DATA), - GIMBAL_DEVICE_SET_ATTITUDE(GIMBAL_DEVICE_SET_ATTITUDE_DATA), - TUNNEL(TUNNEL_DATA), - COMPONENT_INFORMATION(COMPONENT_INFORMATION_DATA), - SET_ACTUATOR_CONTROL_TARGET(SET_ACTUATOR_CONTROL_TARGET_DATA), - HIL_ACTUATOR_CONTROLS(HIL_ACTUATOR_CONTROLS_DATA), - RESOURCE_REQUEST(RESOURCE_REQUEST_DATA), - PARAM_SET(PARAM_SET_DATA), - CELLULAR_CONFIG(CELLULAR_CONFIG_DATA), - ALTITUDE(ALTITUDE_DATA), - LOG_ENTRY(LOG_ENTRY_DATA), - SMART_BATTERY_INFO(SMART_BATTERY_INFO_DATA), - UTM_GLOBAL_POSITION(UTM_GLOBAL_POSITION_DATA), - PLAY_TUNE_V2(PLAY_TUNE_V2_DATA), - HIL_OPTICAL_FLOW(HIL_OPTICAL_FLOW_DATA), - REQUEST_DATA_STREAM(REQUEST_DATA_STREAM_DATA), -
}

Variants§

§

LOCAL_POSITION_NED(LOCAL_POSITION_NED_DATA)

§

FOLLOW_TARGET(FOLLOW_TARGET_DATA)

§

OPTICAL_FLOW(OPTICAL_FLOW_DATA)

§

STORAGE_INFORMATION(STORAGE_INFORMATION_DATA)

§

SAFETY_ALLOWED_AREA(SAFETY_ALLOWED_AREA_DATA)

§

MANUAL_SETPOINT(MANUAL_SETPOINT_DATA)

§

AUTOPILOT_VERSION(AUTOPILOT_VERSION_DATA)

§

RC_CHANNELS(RC_CHANNELS_DATA)

§

ESTIMATOR_STATUS(ESTIMATOR_STATUS_DATA)

§

ADSB_VEHICLE(ADSB_VEHICLE_DATA)

§

TRAJECTORY_REPRESENTATION_WAYPOINTS(TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA)

§

WHEEL_DISTANCE(WHEEL_DISTANCE_DATA)

§

NAMED_VALUE_FLOAT(NAMED_VALUE_FLOAT_DATA)

§

ACTUATOR_OUTPUT_STATUS(ACTUATOR_OUTPUT_STATUS_DATA)

§

OPEN_DRONE_ID_BASIC_ID(OPEN_DRONE_ID_BASIC_ID_DATA)

§

PARAM_EXT_REQUEST_READ(PARAM_EXT_REQUEST_READ_DATA)

§

OPEN_DRONE_ID_SELF_ID(OPEN_DRONE_ID_SELF_ID_DATA)

§

DISTANCE_SENSOR(DISTANCE_SENSOR_DATA)

§

PARAM_EXT_SET(PARAM_EXT_SET_DATA)

§

OPEN_DRONE_ID_AUTHENTICATION(OPEN_DRONE_ID_AUTHENTICATION_DATA)

§

MISSION_CURRENT(MISSION_CURRENT_DATA)

§

ATTITUDE_TARGET(ATTITUDE_TARGET_DATA)

§

GPS2_RAW(GPS2_RAW_DATA)

§

FLIGHT_INFORMATION(FLIGHT_INFORMATION_DATA)

§

MISSION_COUNT(MISSION_COUNT_DATA)

§

SAFETY_SET_ALLOWED_AREA(SAFETY_SET_ALLOWED_AREA_DATA)

§

CAMERA_TRACKING_IMAGE_STATUS(CAMERA_TRACKING_IMAGE_STATUS_DATA)

§

GIMBAL_MANAGER_SET_PITCHYAW(GIMBAL_MANAGER_SET_PITCHYAW_DATA)

§

ATTITUDE(ATTITUDE_DATA)

§

MISSION_REQUEST_PARTIAL_LIST(MISSION_REQUEST_PARTIAL_LIST_DATA)

§

POSITION_TARGET_LOCAL_NED(POSITION_TARGET_LOCAL_NED_DATA)

§

GPS_STATUS(GPS_STATUS_DATA)

§

SET_ATTITUDE_TARGET(SET_ATTITUDE_TARGET_DATA)

§

HIL_GPS(HIL_GPS_DATA)

§

LOG_ERASE(LOG_ERASE_DATA)

§

VISION_SPEED_ESTIMATE(VISION_SPEED_ESTIMATE_DATA)

§

HIL_STATE_QUATERNION(HIL_STATE_QUATERNION_DATA)

§

NAV_CONTROLLER_OUTPUT(NAV_CONTROLLER_OUTPUT_DATA)

§

RC_CHANNELS_OVERRIDE(RC_CHANNELS_OVERRIDE_DATA)

§

FILE_TRANSFER_PROTOCOL(FILE_TRANSFER_PROTOCOL_DATA)

§

EFI_STATUS(EFI_STATUS_DATA)

§

CAMERA_IMAGE_CAPTURED(CAMERA_IMAGE_CAPTURED_DATA)

§

ENCAPSULATED_DATA(ENCAPSULATED_DATA_DATA)

§

COMMAND_LONG(COMMAND_LONG_DATA)

§

MESSAGE_INTERVAL(MESSAGE_INTERVAL_DATA)

§

LOGGING_DATA_ACKED(LOGGING_DATA_ACKED_DATA)

§

VIDEO_STREAM_STATUS(VIDEO_STREAM_STATUS_DATA)

§

GIMBAL_MANAGER_INFORMATION(GIMBAL_MANAGER_INFORMATION_DATA)

§

WIFI_CONFIG_AP(WIFI_CONFIG_AP_DATA)

§

AUTOPILOT_STATE_FOR_GIMBAL_DEVICE(AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA)

§

SET_MODE(SET_MODE_DATA)

§

MISSION_ITEM(MISSION_ITEM_DATA)

§

PROTOCOL_VERSION(PROTOCOL_VERSION_DATA)

§

MISSION_ITEM_REACHED(MISSION_ITEM_REACHED_DATA)

§

MISSION_ACK(MISSION_ACK_DATA)

§

SET_GPS_GLOBAL_ORIGIN(SET_GPS_GLOBAL_ORIGIN_DATA)

§

GPS_GLOBAL_ORIGIN(GPS_GLOBAL_ORIGIN_DATA)

§

MISSION_REQUEST_LIST(MISSION_REQUEST_LIST_DATA)

§

HIL_SENSOR(HIL_SENSOR_DATA)

§

ATTITUDE_QUATERNION_COV(ATTITUDE_QUATERNION_COV_DATA)

§

SET_POSITION_TARGET_GLOBAL_INT(SET_POSITION_TARGET_GLOBAL_INT_DATA)

§

TERRAIN_REQUEST(TERRAIN_REQUEST_DATA)

§

TERRAIN_DATA(TERRAIN_DATA_DATA)

§

ATT_POS_MOCAP(ATT_POS_MOCAP_DATA)

§

CONTROL_SYSTEM_STATE(CONTROL_SYSTEM_STATE_DATA)

§

SCALED_IMU3(SCALED_IMU3_DATA)

§

WIND_COV(WIND_COV_DATA)

§

CAMERA_INFORMATION(CAMERA_INFORMATION_DATA)

§

GIMBAL_MANAGER_SET_MANUAL_CONTROL(GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA)

§

OBSTACLE_DISTANCE(OBSTACLE_DISTANCE_DATA)

§

SERIAL_CONTROL(SERIAL_CONTROL_DATA)

§

ACTUATOR_CONTROL_TARGET(ACTUATOR_CONTROL_TARGET_DATA)

§

GLOBAL_POSITION_INT(GLOBAL_POSITION_INT_DATA)

§

GPS_INPUT(GPS_INPUT_DATA)

§

VIBRATION(VIBRATION_DATA)

§

PARAM_REQUEST_LIST(PARAM_REQUEST_LIST_DATA)

§

EXTENDED_SYS_STATE(EXTENDED_SYS_STATE_DATA)

§

PLAY_TUNE(PLAY_TUNE_DATA)

§

VFR_HUD(VFR_HUD_DATA)

§

LOG_REQUEST_END(LOG_REQUEST_END_DATA)

§

HIGHRES_IMU(HIGHRES_IMU_DATA)

§

GLOBAL_POSITION_INT_COV(GLOBAL_POSITION_INT_COV_DATA)

§

AIS_VESSEL(AIS_VESSEL_DATA)

§

GPS_RTCM_DATA(GPS_RTCM_DATA_DATA)

§

COMMAND_ACK(COMMAND_ACK_DATA)

§

CHANGE_OPERATOR_CONTROL_ACK(CHANGE_OPERATOR_CONTROL_ACK_DATA)

§

SCALED_IMU2(SCALED_IMU2_DATA)

§

GIMBAL_MANAGER_STATUS(GIMBAL_MANAGER_STATUS_DATA)

§

PARAM_EXT_REQUEST_LIST(PARAM_EXT_REQUEST_LIST_DATA)

§

ODOMETRY(ODOMETRY_DATA)

§

DEBUG_VECT(DEBUG_VECT_DATA)

§

DEBUG(DEBUG_DATA)

§

TRAJECTORY_REPRESENTATION_BEZIER(TRAJECTORY_REPRESENTATION_BEZIER_DATA)

§

REQUEST_EVENT(REQUEST_EVENT_DATA)

§

CAN_FILTER_MODIFY(CAN_FILTER_MODIFY_DATA)

§

HYGROMETER_SENSOR(HYGROMETER_SENSOR_DATA)

§

NAMED_VALUE_INT(NAMED_VALUE_INT_DATA)

§

OPEN_DRONE_ID_MESSAGE_PACK(OPEN_DRONE_ID_MESSAGE_PACK_DATA)

§

CAMERA_TRIGGER(CAMERA_TRIGGER_DATA)

§

LOG_DATA(LOG_DATA_DATA)

§

SCALED_PRESSURE3(SCALED_PRESSURE3_DATA)

§

OPEN_DRONE_ID_ARM_STATUS(OPEN_DRONE_ID_ARM_STATUS_DATA)

§

ATTITUDE_QUATERNION(ATTITUDE_QUATERNION_DATA)

§

CHANGE_OPERATOR_CONTROL(CHANGE_OPERATOR_CONTROL_DATA)

§

SETUP_SIGNING(SETUP_SIGNING_DATA)

§

GIMBAL_DEVICE_INFORMATION(GIMBAL_DEVICE_INFORMATION_DATA)

§

WINCH_STATUS(WINCH_STATUS_DATA)

§

SIM_STATE(SIM_STATE_DATA)

§

GPS_RTK(GPS_RTK_DATA)

§

GPS2_RTK(GPS2_RTK_DATA)

§

HIGH_LATENCY(HIGH_LATENCY_DATA)

§

TERRAIN_REPORT(TERRAIN_REPORT_DATA)

§

HIL_STATE(HIL_STATE_DATA)

§

MEMORY_VECT(MEMORY_VECT_DATA)

§

MOUNT_ORIENTATION(MOUNT_ORIENTATION_DATA)

§

CAMERA_TRACKING_GEO_STATUS(CAMERA_TRACKING_GEO_STATUS_DATA)

§

LOGGING_ACK(LOGGING_ACK_DATA)

§

UAVCAN_NODE_STATUS(UAVCAN_NODE_STATUS_DATA)

§

SCALED_PRESSURE2(SCALED_PRESSURE2_DATA)

§

VIDEO_STREAM_INFORMATION(VIDEO_STREAM_INFORMATION_DATA)

§

BATTERY_STATUS(BATTERY_STATUS_DATA)

§

SCALED_IMU(SCALED_IMU_DATA)

§

LOCAL_POSITION_NED_COV(LOCAL_POSITION_NED_COV_DATA)

§

GENERATOR_STATUS(GENERATOR_STATUS_DATA)

§

CAN_FRAME(CAN_FRAME_DATA)

§

TERRAIN_CHECK(TERRAIN_CHECK_DATA)

§

CAMERA_CAPTURE_STATUS(CAMERA_CAPTURE_STATUS_DATA)

§

UAVCAN_NODE_INFO(UAVCAN_NODE_INFO_DATA)

§

RAW_PRESSURE(RAW_PRESSURE_DATA)

§

POSITION_TARGET_GLOBAL_INT(POSITION_TARGET_GLOBAL_INT_DATA)

§

HEARTBEAT(HEARTBEAT_DATA)

§

RADIO_STATUS(RADIO_STATUS_DATA)

§

PARAM_EXT_VALUE(PARAM_EXT_VALUE_DATA)

§

RC_CHANNELS_RAW(RC_CHANNELS_RAW_DATA)

§

OPTICAL_FLOW_RAD(OPTICAL_FLOW_RAD_DATA)

§

PARAM_MAP_RC(PARAM_MAP_RC_DATA)

§

PARAM_REQUEST_READ(PARAM_REQUEST_READ_DATA)

§

RESPONSE_EVENT_ERROR(RESPONSE_EVENT_ERROR_DATA)

§

LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET(LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA)

§

GLOBAL_VISION_POSITION_ESTIMATE(GLOBAL_VISION_POSITION_ESTIMATE_DATA)

§

FENCE_STATUS(FENCE_STATUS_DATA)

§

ONBOARD_COMPUTER_STATUS(ONBOARD_COMPUTER_STATUS_DATA)

§

CURRENT_EVENT_SEQUENCE(CURRENT_EVENT_SEQUENCE_DATA)

§

MISSION_REQUEST_INT(MISSION_REQUEST_INT_DATA)

§

MISSION_ITEM_INT(MISSION_ITEM_INT_DATA)

§

VISION_POSITION_ESTIMATE(VISION_POSITION_ESTIMATE_DATA)

§

PARAM_EXT_ACK(PARAM_EXT_ACK_DATA)

§

SYSTEM_TIME(SYSTEM_TIME_DATA)

§

COMMAND_CANCEL(COMMAND_CANCEL_DATA)

§

VICON_POSITION_ESTIMATE(VICON_POSITION_ESTIMATE_DATA)

§

SERVO_OUTPUT_RAW(SERVO_OUTPUT_RAW_DATA)

§

TIMESYNC(TIMESYNC_DATA)

§

POWER_STATUS(POWER_STATUS_DATA)

§

OPEN_DRONE_ID_SYSTEM_UPDATE(OPEN_DRONE_ID_SYSTEM_UPDATE_DATA)

§

RAW_RPM(RAW_RPM_DATA)

§

OPEN_DRONE_ID_LOCATION(OPEN_DRONE_ID_LOCATION_DATA)

§

LANDING_TARGET(LANDING_TARGET_DATA)

§

GIMBAL_MANAGER_SET_ATTITUDE(GIMBAL_MANAGER_SET_ATTITUDE_DATA)

§

ESC_STATUS(ESC_STATUS_DATA)

§

ORBIT_EXECUTION_STATUS(ORBIT_EXECUTION_STATUS_DATA)

§

SYS_STATUS(SYS_STATUS_DATA)

§

LOG_REQUEST_DATA(LOG_REQUEST_DATA_DATA)

§

AUTH_KEY(AUTH_KEY_DATA)

§

LOG_REQUEST_LIST(LOG_REQUEST_LIST_DATA)

§

GPS_INJECT_DATA(GPS_INJECT_DATA_DATA)

§

MISSION_SET_CURRENT(MISSION_SET_CURRENT_DATA)

§

COMMAND_INT(COMMAND_INT_DATA)

§

HIGH_LATENCY2(HIGH_LATENCY2_DATA)

§

BUTTON_CHANGE(BUTTON_CHANGE_DATA)

§

CAMERA_SETTINGS(CAMERA_SETTINGS_DATA)

§

DEBUG_FLOAT_ARRAY(DEBUG_FLOAT_ARRAY_DATA)

§

COMPONENT_METADATA(COMPONENT_METADATA_DATA)

§

MISSION_CLEAR_ALL(MISSION_CLEAR_ALL_DATA)

§

COLLISION(COLLISION_DATA)

§

SUPPORTED_TUNES(SUPPORTED_TUNES_DATA)

§

EVENT(EVENT_DATA)

§

CANFD_FRAME(CANFD_FRAME_DATA)

§

GIMBAL_DEVICE_ATTITUDE_STATUS(GIMBAL_DEVICE_ATTITUDE_STATUS_DATA)

§

HOME_POSITION(HOME_POSITION_DATA)

§

OPEN_DRONE_ID_SYSTEM(OPEN_DRONE_ID_SYSTEM_DATA)

§

GPS_RAW_INT(GPS_RAW_INT_DATA)

§

PING(PING_DATA)

§

HIL_CONTROLS(HIL_CONTROLS_DATA)

§

HIL_RC_INPUTS_RAW(HIL_RC_INPUTS_RAW_DATA)

§

STATUSTEXT(STATUSTEXT_DATA)

§

PARAM_VALUE(PARAM_VALUE_DATA)

§

SET_POSITION_TARGET_LOCAL_NED(SET_POSITION_TARGET_LOCAL_NED_DATA)

§

MISSION_REQUEST(MISSION_REQUEST_DATA)

§

TIME_ESTIMATE_TO_TARGET(TIME_ESTIMATE_TO_TARGET_DATA)

§

RAW_IMU(RAW_IMU_DATA)

§

DATA_TRANSMISSION_HANDSHAKE(DATA_TRANSMISSION_HANDSHAKE_DATA)

§

OPEN_DRONE_ID_OPERATOR_ID(OPEN_DRONE_ID_OPERATOR_ID_DATA)

§

MISSION_WRITE_PARTIAL_LIST(MISSION_WRITE_PARTIAL_LIST_DATA)

§

V2_EXTENSION(V2_EXTENSION_DATA)

§

CAMERA_FOV_STATUS(CAMERA_FOV_STATUS_DATA)

§

MAG_CAL_REPORT(MAG_CAL_REPORT_DATA)

§

SCALED_PRESSURE(SCALED_PRESSURE_DATA)

§

LOGGING_DATA(LOGGING_DATA_DATA)

§

ESC_INFO(ESC_INFO_DATA)

§

CELLULAR_STATUS(CELLULAR_STATUS_DATA)

§

RC_CHANNELS_SCALED(RC_CHANNELS_SCALED_DATA)

§

MANUAL_CONTROL(MANUAL_CONTROL_DATA)

§

DATA_STREAM(DATA_STREAM_DATA)

§

SET_HOME_POSITION(SET_HOME_POSITION_DATA)

§

GIMBAL_DEVICE_SET_ATTITUDE(GIMBAL_DEVICE_SET_ATTITUDE_DATA)

§

TUNNEL(TUNNEL_DATA)

§

COMPONENT_INFORMATION(COMPONENT_INFORMATION_DATA)

§

SET_ACTUATOR_CONTROL_TARGET(SET_ACTUATOR_CONTROL_TARGET_DATA)

§

HIL_ACTUATOR_CONTROLS(HIL_ACTUATOR_CONTROLS_DATA)

§

RESOURCE_REQUEST(RESOURCE_REQUEST_DATA)

§

PARAM_SET(PARAM_SET_DATA)

§

CELLULAR_CONFIG(CELLULAR_CONFIG_DATA)

§

ALTITUDE(ALTITUDE_DATA)

§

LOG_ENTRY(LOG_ENTRY_DATA)

§

SMART_BATTERY_INFO(SMART_BATTERY_INFO_DATA)

§

UTM_GLOBAL_POSITION(UTM_GLOBAL_POSITION_DATA)

§

PLAY_TUNE_V2(PLAY_TUNE_V2_DATA)

§

HIL_OPTICAL_FLOW(HIL_OPTICAL_FLOW_DATA)

§

REQUEST_DATA_STREAM(REQUEST_DATA_STREAM_DATA)

Trait Implementations§

source§

impl Clone for MavMessage

source§

fn clone(&self) -> MavMessage

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for MavMessage

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<'de> Deserialize<'de> for MavMessage

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where + TERRAIN_REPORT(TERRAIN_REPORT_DATA), + CAMERA_CAPTURE_STATUS(CAMERA_CAPTURE_STATUS_DATA), + ENCAPSULATED_DATA(ENCAPSULATED_DATA_DATA), + HIL_SENSOR(HIL_SENSOR_DATA), + OPEN_DRONE_ID_ARM_STATUS(OPEN_DRONE_ID_ARM_STATUS_DATA), + MISSION_COUNT(MISSION_COUNT_DATA), + LOG_REQUEST_END(LOG_REQUEST_END_DATA), + OPEN_DRONE_ID_AUTHENTICATION(OPEN_DRONE_ID_AUTHENTICATION_DATA), + OBSTACLE_DISTANCE(OBSTACLE_DISTANCE_DATA), + SET_MODE(SET_MODE_DATA), + VFR_HUD(VFR_HUD_DATA), + OPTICAL_FLOW_RAD(OPTICAL_FLOW_RAD_DATA), +

}

Variants§

§

RAW_PRESSURE(RAW_PRESSURE_DATA)

§

AUTOPILOT_STATE_FOR_GIMBAL_DEVICE(AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA)

§

LOG_ERASE(LOG_ERASE_DATA)

§

CAMERA_INFORMATION(CAMERA_INFORMATION_DATA)

§

RESOURCE_REQUEST(RESOURCE_REQUEST_DATA)

§

PARAM_EXT_REQUEST_READ(PARAM_EXT_REQUEST_READ_DATA)

§

LOCAL_POSITION_NED(LOCAL_POSITION_NED_DATA)

§

MANUAL_SETPOINT(MANUAL_SETPOINT_DATA)

§

LOCAL_POSITION_NED_COV(LOCAL_POSITION_NED_COV_DATA)

§

HIL_RC_INPUTS_RAW(HIL_RC_INPUTS_RAW_DATA)

§

ESTIMATOR_STATUS(ESTIMATOR_STATUS_DATA)

§

SAFETY_ALLOWED_AREA(SAFETY_ALLOWED_AREA_DATA)

§

CAMERA_TRIGGER(CAMERA_TRIGGER_DATA)

§

SCALED_IMU2(SCALED_IMU2_DATA)

§

FENCE_STATUS(FENCE_STATUS_DATA)

§

AUTOPILOT_VERSION(AUTOPILOT_VERSION_DATA)

§

ESC_STATUS(ESC_STATUS_DATA)

§

TRAJECTORY_REPRESENTATION_BEZIER(TRAJECTORY_REPRESENTATION_BEZIER_DATA)

§

ALTITUDE(ALTITUDE_DATA)

§

HIGH_LATENCY(HIGH_LATENCY_DATA)

§

SCALED_PRESSURE2(SCALED_PRESSURE2_DATA)

§

GIMBAL_DEVICE_SET_ATTITUDE(GIMBAL_DEVICE_SET_ATTITUDE_DATA)

§

VISION_SPEED_ESTIMATE(VISION_SPEED_ESTIMATE_DATA)

§

FILE_TRANSFER_PROTOCOL(FILE_TRANSFER_PROTOCOL_DATA)

§

MISSION_REQUEST(MISSION_REQUEST_DATA)

§

RESPONSE_EVENT_ERROR(RESPONSE_EVENT_ERROR_DATA)

§

NAV_CONTROLLER_OUTPUT(NAV_CONTROLLER_OUTPUT_DATA)

§

SYS_STATUS(SYS_STATUS_DATA)

§

LOG_DATA(LOG_DATA_DATA)

§

CHANGE_OPERATOR_CONTROL(CHANGE_OPERATOR_CONTROL_DATA)

§

COMMAND_ACK(COMMAND_ACK_DATA)

§

HIL_OPTICAL_FLOW(HIL_OPTICAL_FLOW_DATA)

§

ORBIT_EXECUTION_STATUS(ORBIT_EXECUTION_STATUS_DATA)

§

DEBUG_VECT(DEBUG_VECT_DATA)

§

TRAJECTORY_REPRESENTATION_WAYPOINTS(TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA)

§

SMART_BATTERY_INFO(SMART_BATTERY_INFO_DATA)

§

PARAM_MAP_RC(PARAM_MAP_RC_DATA)

§

MISSION_ITEM_INT(MISSION_ITEM_INT_DATA)

§

WIND_COV(WIND_COV_DATA)

§

MANUAL_CONTROL(MANUAL_CONTROL_DATA)

§

LOG_REQUEST_LIST(LOG_REQUEST_LIST_DATA)

§

GLOBAL_VISION_POSITION_ESTIMATE(GLOBAL_VISION_POSITION_ESTIMATE_DATA)

§

TIME_ESTIMATE_TO_TARGET(TIME_ESTIMATE_TO_TARGET_DATA)

§

COMMAND_LONG(COMMAND_LONG_DATA)

§

GIMBAL_MANAGER_SET_ATTITUDE(GIMBAL_MANAGER_SET_ATTITUDE_DATA)

§

GIMBAL_MANAGER_SET_MANUAL_CONTROL(GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA)

§

OPEN_DRONE_ID_LOCATION(OPEN_DRONE_ID_LOCATION_DATA)

§

HIL_CONTROLS(HIL_CONTROLS_DATA)

§

MISSION_SET_CURRENT(MISSION_SET_CURRENT_DATA)

§

SET_POSITION_TARGET_LOCAL_NED(SET_POSITION_TARGET_LOCAL_NED_DATA)

§

HIL_STATE_QUATERNION(HIL_STATE_QUATERNION_DATA)

§

SETUP_SIGNING(SETUP_SIGNING_DATA)

§

DISTANCE_SENSOR(DISTANCE_SENSOR_DATA)

§

MISSION_CURRENT(MISSION_CURRENT_DATA)

§

SET_HOME_POSITION(SET_HOME_POSITION_DATA)

§

COMMAND_CANCEL(COMMAND_CANCEL_DATA)

§

GPS_INJECT_DATA(GPS_INJECT_DATA_DATA)

§

GPS_INPUT(GPS_INPUT_DATA)

§

UAVCAN_NODE_STATUS(UAVCAN_NODE_STATUS_DATA)

§

CELLULAR_CONFIG(CELLULAR_CONFIG_DATA)

§

GENERATOR_STATUS(GENERATOR_STATUS_DATA)

§

CAN_FRAME(CAN_FRAME_DATA)

§

OPEN_DRONE_ID_MESSAGE_PACK(OPEN_DRONE_ID_MESSAGE_PACK_DATA)

§

MISSION_ITEM_REACHED(MISSION_ITEM_REACHED_DATA)

§

SET_ATTITUDE_TARGET(SET_ATTITUDE_TARGET_DATA)

§

GPS_GLOBAL_ORIGIN(GPS_GLOBAL_ORIGIN_DATA)

§

SET_ACTUATOR_CONTROL_TARGET(SET_ACTUATOR_CONTROL_TARGET_DATA)

§

CAMERA_FOV_STATUS(CAMERA_FOV_STATUS_DATA)

§

SET_POSITION_TARGET_GLOBAL_INT(SET_POSITION_TARGET_GLOBAL_INT_DATA)

§

MISSION_ITEM(MISSION_ITEM_DATA)

§

CURRENT_EVENT_SEQUENCE(CURRENT_EVENT_SEQUENCE_DATA)

§

MISSION_ACK(MISSION_ACK_DATA)

§

PARAM_EXT_REQUEST_LIST(PARAM_EXT_REQUEST_LIST_DATA)

§

RC_CHANNELS_OVERRIDE(RC_CHANNELS_OVERRIDE_DATA)

§

AUTH_KEY(AUTH_KEY_DATA)

§

COMMAND_INT(COMMAND_INT_DATA)

§

LOG_ENTRY(LOG_ENTRY_DATA)

§

GPS2_RAW(GPS2_RAW_DATA)

§

GPS2_RTK(GPS2_RTK_DATA)

§

COLLISION(COLLISION_DATA)

§

ONBOARD_COMPUTER_STATUS(ONBOARD_COMPUTER_STATUS_DATA)

§

DEBUG(DEBUG_DATA)

§

MEMORY_VECT(MEMORY_VECT_DATA)

§

GIMBAL_DEVICE_INFORMATION(GIMBAL_DEVICE_INFORMATION_DATA)

§

EXTENDED_SYS_STATE(EXTENDED_SYS_STATE_DATA)

§

SUPPORTED_TUNES(SUPPORTED_TUNES_DATA)

§

CAMERA_SETTINGS(CAMERA_SETTINGS_DATA)

§

LOGGING_DATA_ACKED(LOGGING_DATA_ACKED_DATA)

§

AIS_VESSEL(AIS_VESSEL_DATA)

§

DEBUG_FLOAT_ARRAY(DEBUG_FLOAT_ARRAY_DATA)

§

PARAM_EXT_ACK(PARAM_EXT_ACK_DATA)

§

MISSION_WRITE_PARTIAL_LIST(MISSION_WRITE_PARTIAL_LIST_DATA)

§

BATTERY_STATUS(BATTERY_STATUS_DATA)

§

LANDING_TARGET(LANDING_TARGET_DATA)

§

CAMERA_TRACKING_GEO_STATUS(CAMERA_TRACKING_GEO_STATUS_DATA)

§

REQUEST_EVENT(REQUEST_EVENT_DATA)

§

SAFETY_SET_ALLOWED_AREA(SAFETY_SET_ALLOWED_AREA_DATA)

§

EFI_STATUS(EFI_STATUS_DATA)

§

STATUSTEXT(STATUSTEXT_DATA)

§

OPEN_DRONE_ID_SELF_ID(OPEN_DRONE_ID_SELF_ID_DATA)

§

LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET(LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA)

§

GPS_RTCM_DATA(GPS_RTCM_DATA_DATA)

§

SET_GPS_GLOBAL_ORIGIN(SET_GPS_GLOBAL_ORIGIN_DATA)

§

ACTUATOR_CONTROL_TARGET(ACTUATOR_CONTROL_TARGET_DATA)

§

BUTTON_CHANGE(BUTTON_CHANGE_DATA)

§

MISSION_REQUEST_PARTIAL_LIST(MISSION_REQUEST_PARTIAL_LIST_DATA)

§

UTM_GLOBAL_POSITION(UTM_GLOBAL_POSITION_DATA)

§

HOME_POSITION(HOME_POSITION_DATA)

§

UAVCAN_NODE_INFO(UAVCAN_NODE_INFO_DATA)

§

PLAY_TUNE_V2(PLAY_TUNE_V2_DATA)

§

MISSION_REQUEST_LIST(MISSION_REQUEST_LIST_DATA)

§

MISSION_REQUEST_INT(MISSION_REQUEST_INT_DATA)

§

DATA_STREAM(DATA_STREAM_DATA)

§

VIDEO_STREAM_INFORMATION(VIDEO_STREAM_INFORMATION_DATA)

§

CANFD_FRAME(CANFD_FRAME_DATA)

§

HYGROMETER_SENSOR(HYGROMETER_SENSOR_DATA)

§

POSITION_TARGET_GLOBAL_INT(POSITION_TARGET_GLOBAL_INT_DATA)

§

HIGH_LATENCY2(HIGH_LATENCY2_DATA)

§

GLOBAL_POSITION_INT_COV(GLOBAL_POSITION_INT_COV_DATA)

§

NAMED_VALUE_INT(NAMED_VALUE_INT_DATA)

§

CHANGE_OPERATOR_CONTROL_ACK(CHANGE_OPERATOR_CONTROL_ACK_DATA)

§

GIMBAL_MANAGER_INFORMATION(GIMBAL_MANAGER_INFORMATION_DATA)

§

COMPONENT_METADATA(COMPONENT_METADATA_DATA)

§

LOGGING_ACK(LOGGING_ACK_DATA)

§

RC_CHANNELS_RAW(RC_CHANNELS_RAW_DATA)

§

POSITION_TARGET_LOCAL_NED(POSITION_TARGET_LOCAL_NED_DATA)

§

PARAM_EXT_SET(PARAM_EXT_SET_DATA)

§

HEARTBEAT(HEARTBEAT_DATA)

§

WIFI_CONFIG_AP(WIFI_CONFIG_AP_DATA)

§

SCALED_IMU3(SCALED_IMU3_DATA)

§

PARAM_EXT_VALUE(PARAM_EXT_VALUE_DATA)

§

WINCH_STATUS(WINCH_STATUS_DATA)

§

PARAM_REQUEST_READ(PARAM_REQUEST_READ_DATA)

§

HIGHRES_IMU(HIGHRES_IMU_DATA)

§

HIL_GPS(HIL_GPS_DATA)

§

TERRAIN_REQUEST(TERRAIN_REQUEST_DATA)

§

ATTITUDE(ATTITUDE_DATA)

§

SYSTEM_TIME(SYSTEM_TIME_DATA)

§

ATTITUDE_TARGET(ATTITUDE_TARGET_DATA)

§

DATA_TRANSMISSION_HANDSHAKE(DATA_TRANSMISSION_HANDSHAKE_DATA)

§

MESSAGE_INTERVAL(MESSAGE_INTERVAL_DATA)

§

TUNNEL(TUNNEL_DATA)

§

RAW_IMU(RAW_IMU_DATA)

§

OPEN_DRONE_ID_BASIC_ID(OPEN_DRONE_ID_BASIC_ID_DATA)

§

SCALED_PRESSURE(SCALED_PRESSURE_DATA)

§

GIMBAL_DEVICE_ATTITUDE_STATUS(GIMBAL_DEVICE_ATTITUDE_STATUS_DATA)

§

CAN_FILTER_MODIFY(CAN_FILTER_MODIFY_DATA)

§

HIL_ACTUATOR_CONTROLS(HIL_ACTUATOR_CONTROLS_DATA)

§

REQUEST_DATA_STREAM(REQUEST_DATA_STREAM_DATA)

§

NAMED_VALUE_FLOAT(NAMED_VALUE_FLOAT_DATA)

§

ATT_POS_MOCAP(ATT_POS_MOCAP_DATA)

§

PLAY_TUNE(PLAY_TUNE_DATA)

§

GPS_STATUS(GPS_STATUS_DATA)

§

SIM_STATE(SIM_STATE_DATA)

§

POWER_STATUS(POWER_STATUS_DATA)

§

SCALED_PRESSURE3(SCALED_PRESSURE3_DATA)

§

FOLLOW_TARGET(FOLLOW_TARGET_DATA)

§

MAG_CAL_REPORT(MAG_CAL_REPORT_DATA)

§

OPTICAL_FLOW(OPTICAL_FLOW_DATA)

§

PROTOCOL_VERSION(PROTOCOL_VERSION_DATA)

§

SERIAL_CONTROL(SERIAL_CONTROL_DATA)

§

VIDEO_STREAM_STATUS(VIDEO_STREAM_STATUS_DATA)

§

ODOMETRY(ODOMETRY_DATA)

§

CELLULAR_STATUS(CELLULAR_STATUS_DATA)

§

OPEN_DRONE_ID_SYSTEM_UPDATE(OPEN_DRONE_ID_SYSTEM_UPDATE_DATA)

§

PARAM_REQUEST_LIST(PARAM_REQUEST_LIST_DATA)

§

GIMBAL_MANAGER_SET_PITCHYAW(GIMBAL_MANAGER_SET_PITCHYAW_DATA)

§

SERVO_OUTPUT_RAW(SERVO_OUTPUT_RAW_DATA)

§

TIMESYNC(TIMESYNC_DATA)

§

RC_CHANNELS(RC_CHANNELS_DATA)

§

GLOBAL_POSITION_INT(GLOBAL_POSITION_INT_DATA)

§

ATTITUDE_QUATERNION_COV(ATTITUDE_QUATERNION_COV_DATA)

§

RADIO_STATUS(RADIO_STATUS_DATA)

§

ADSB_VEHICLE(ADSB_VEHICLE_DATA)

§

CONTROL_SYSTEM_STATE(CONTROL_SYSTEM_STATE_DATA)

§

SCALED_IMU(SCALED_IMU_DATA)

§

MISSION_CLEAR_ALL(MISSION_CLEAR_ALL_DATA)

§

VICON_POSITION_ESTIMATE(VICON_POSITION_ESTIMATE_DATA)

§

TERRAIN_DATA(TERRAIN_DATA_DATA)

§

ATTITUDE_QUATERNION(ATTITUDE_QUATERNION_DATA)

§

CAMERA_IMAGE_CAPTURED(CAMERA_IMAGE_CAPTURED_DATA)

§

VISION_POSITION_ESTIMATE(VISION_POSITION_ESTIMATE_DATA)

§

LOG_REQUEST_DATA(LOG_REQUEST_DATA_DATA)

§

PING(PING_DATA)

§

VIBRATION(VIBRATION_DATA)

§

FLIGHT_INFORMATION(FLIGHT_INFORMATION_DATA)

§

GPS_RAW_INT(GPS_RAW_INT_DATA)

§

MOUNT_ORIENTATION(MOUNT_ORIENTATION_DATA)

§

LOGGING_DATA(LOGGING_DATA_DATA)

§

PARAM_SET(PARAM_SET_DATA)

§

GIMBAL_MANAGER_STATUS(GIMBAL_MANAGER_STATUS_DATA)

§

RAW_RPM(RAW_RPM_DATA)

§

TERRAIN_CHECK(TERRAIN_CHECK_DATA)

§

ACTUATOR_OUTPUT_STATUS(ACTUATOR_OUTPUT_STATUS_DATA)

§

V2_EXTENSION(V2_EXTENSION_DATA)

§

COMPONENT_INFORMATION(COMPONENT_INFORMATION_DATA)

§

HIL_STATE(HIL_STATE_DATA)

§

CAMERA_TRACKING_IMAGE_STATUS(CAMERA_TRACKING_IMAGE_STATUS_DATA)

§

RC_CHANNELS_SCALED(RC_CHANNELS_SCALED_DATA)

§

EVENT(EVENT_DATA)

§

WHEEL_DISTANCE(WHEEL_DISTANCE_DATA)

§

OPEN_DRONE_ID_OPERATOR_ID(OPEN_DRONE_ID_OPERATOR_ID_DATA)

§

OPEN_DRONE_ID_SYSTEM(OPEN_DRONE_ID_SYSTEM_DATA)

§

STORAGE_INFORMATION(STORAGE_INFORMATION_DATA)

§

PARAM_VALUE(PARAM_VALUE_DATA)

§

GPS_RTK(GPS_RTK_DATA)

§

ESC_INFO(ESC_INFO_DATA)

§

TERRAIN_REPORT(TERRAIN_REPORT_DATA)

§

CAMERA_CAPTURE_STATUS(CAMERA_CAPTURE_STATUS_DATA)

§

ENCAPSULATED_DATA(ENCAPSULATED_DATA_DATA)

§

HIL_SENSOR(HIL_SENSOR_DATA)

§

OPEN_DRONE_ID_ARM_STATUS(OPEN_DRONE_ID_ARM_STATUS_DATA)

§

MISSION_COUNT(MISSION_COUNT_DATA)

§

LOG_REQUEST_END(LOG_REQUEST_END_DATA)

§

OPEN_DRONE_ID_AUTHENTICATION(OPEN_DRONE_ID_AUTHENTICATION_DATA)

§

OBSTACLE_DISTANCE(OBSTACLE_DISTANCE_DATA)

§

SET_MODE(SET_MODE_DATA)

§

VFR_HUD(VFR_HUD_DATA)

§

OPTICAL_FLOW_RAD(OPTICAL_FLOW_RAD_DATA)

Trait Implementations§

source§

impl Clone for MavMessage

source§

fn clone(&self) -> MavMessage

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for MavMessage

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<'de> Deserialize<'de> for MavMessage

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Message for MavMessage

source§

fn parse( version: MavlinkVersion, id: u32, diff --git a/mavlink/common/struct.AdsbFlags.html b/mavlink/common/struct.AdsbFlags.html index d1d9cb5575..08b0c4f7f9 100644 --- a/mavlink/common/struct.AdsbFlags.html +++ b/mavlink/common/struct.AdsbFlags.html @@ -56,17 +56,17 @@

§Safety
between Self::all() and self (e.g. Self::all() - self)

This is equivalent to using the ! operator (e.g. ops::Not), as in !flags.

-
source§

impl AdsbFlags

source

pub const DEFAULT: Self = Self::ADSB_FLAGS_VALID_COORDS

Trait Implementations§

source§

impl Binary for AdsbFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for AdsbFlags

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

-
§

type Output = AdsbFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for AdsbFlags

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

+
source§

impl AdsbFlags

source

pub const DEFAULT: Self = Self::ADSB_FLAGS_VALID_COORDS

Trait Implementations§

source§

impl Binary for AdsbFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for AdsbFlags

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

+
§

type Output = AdsbFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for AdsbFlags

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

source§

impl BitOr for AdsbFlags

source§

fn bitor(self, other: AdsbFlags) -> Self

Returns the union of the two sets of flags.

-
§

type Output = AdsbFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for AdsbFlags

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
§

type Output = AdsbFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for AdsbFlags

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

source§

impl BitXor for AdsbFlags

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

-
§

type Output = AdsbFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for AdsbFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

-
source§

impl Clone for AdsbFlags

source§

fn clone(&self) -> AdsbFlags

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for AdsbFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for AdsbFlags

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for AdsbFlags

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where +

§

type Output = AdsbFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for AdsbFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
source§

impl Clone for AdsbFlags

source§

fn clone(&self) -> AdsbFlags

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for AdsbFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for AdsbFlags

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for AdsbFlags

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Extend<AdsbFlags> for AdsbFlags

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<AdsbFlags> for AdsbFlags

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for AdsbFlags

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for AdsbFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for AdsbFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = AdsbFlags

The resulting type after applying the ! operator.
source§

impl Octal for AdsbFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for AdsbFlags

source§

fn cmp(&self, other: &AdsbFlags) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for AdsbFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for AdsbFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

+
§

type Output = AdsbFlags

The resulting type after applying the ! operator.
source§

impl Octal for AdsbFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for AdsbFlags

source§

fn cmp(&self, other: &AdsbFlags) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for AdsbFlags

source§

fn eq(&self, other: &AdsbFlags) -> bool

This method tests for self and other values to be equal, and is used @@ -75,7 +75,7 @@
§Safety
operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl Serialize for AdsbFlags

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Sub for AdsbFlags

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

-
§

type Output = AdsbFlags

The resulting type after applying the - operator.
source§

impl SubAssign for AdsbFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

+
§

type Output = AdsbFlags

The resulting type after applying the - operator.
source§

impl SubAssign for AdsbFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

source§

impl UpperHex for AdsbFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for AdsbFlags

source§

impl Eq for AdsbFlags

source§

impl StructuralPartialEq for AdsbFlags

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where diff --git a/mavlink/common/struct.AisFlags.html b/mavlink/common/struct.AisFlags.html index 3abf6ab9b4..ae98296443 100644 --- a/mavlink/common/struct.AisFlags.html +++ b/mavlink/common/struct.AisFlags.html @@ -57,16 +57,16 @@
§Safety

This is equivalent to using the ! operator (e.g. ops::Not), as in !flags.

source§

impl AisFlags

source

pub const DEFAULT: Self = Self::AIS_FLAGS_POSITION_ACCURACY

Trait Implementations§

source§

impl Binary for AisFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for AisFlags

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

-
§

type Output = AisFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for AisFlags

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

+
§

type Output = AisFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for AisFlags

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

source§

impl BitOr for AisFlags

source§

fn bitor(self, other: AisFlags) -> Self

Returns the union of the two sets of flags.

-
§

type Output = AisFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for AisFlags

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
§

type Output = AisFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for AisFlags

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

source§

impl BitXor for AisFlags

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

§

type Output = AisFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for AisFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

source§

impl Clone for AisFlags

source§

fn clone(&self) -> AisFlags

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for AisFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for AisFlags

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for AisFlags

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Extend<AisFlags> for AisFlags

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<AisFlags> for AisFlags

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for AisFlags

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for AisFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for AisFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = AisFlags

The resulting type after applying the ! operator.
source§

impl Octal for AisFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for AisFlags

source§

fn cmp(&self, other: &AisFlags) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for AisFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for AisFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

+
§

type Output = AisFlags

The resulting type after applying the ! operator.
source§

impl Octal for AisFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for AisFlags

source§

fn cmp(&self, other: &AisFlags) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for AisFlags

source§

fn eq(&self, other: &AisFlags) -> bool

This method tests for self and other values to be equal, and is used @@ -75,8 +75,8 @@
§Safety
operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl Serialize for AisFlags

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Sub for AisFlags

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

-
§

type Output = AisFlags

The resulting type after applying the - operator.
source§

impl SubAssign for AisFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

-
source§

impl UpperHex for AisFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for AisFlags

source§

impl Eq for AisFlags

source§

impl StructuralPartialEq for AisFlags

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

§

type Output = AisFlags

The resulting type after applying the - operator.
source§

impl SubAssign for AisFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

+
source§

impl UpperHex for AisFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for AisFlags

source§

impl Eq for AisFlags

source§

impl StructuralPartialEq for AisFlags

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/mavlink/common/struct.AttitudeTargetTypemask.html b/mavlink/common/struct.AttitudeTargetTypemask.html index 569c0eef4e..e1cafd7f26 100644 --- a/mavlink/common/struct.AttitudeTargetTypemask.html +++ b/mavlink/common/struct.AttitudeTargetTypemask.html @@ -56,17 +56,17 @@
§Safety
between Self::all() and self (e.g. Self::all() - self)

This is equivalent to using the ! operator (e.g. ops::Not), as in !flags.

-
source§

impl AttitudeTargetTypemask

source

pub const DEFAULT: Self = Self::ATTITUDE_TARGET_TYPEMASK_BODY_ROLL_RATE_IGNORE

Trait Implementations§

source§

impl Binary for AttitudeTargetTypemask

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for AttitudeTargetTypemask

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

-
§

type Output = AttitudeTargetTypemask

The resulting type after applying the & operator.
source§

impl BitAndAssign for AttitudeTargetTypemask

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

+
source§

impl AttitudeTargetTypemask

source

pub const DEFAULT: Self = Self::ATTITUDE_TARGET_TYPEMASK_BODY_ROLL_RATE_IGNORE

Trait Implementations§

source§

impl Binary for AttitudeTargetTypemask

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for AttitudeTargetTypemask

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

+
§

type Output = AttitudeTargetTypemask

The resulting type after applying the & operator.
source§

impl BitAndAssign for AttitudeTargetTypemask

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

source§

impl BitOr for AttitudeTargetTypemask

source§

fn bitor(self, other: AttitudeTargetTypemask) -> Self

Returns the union of the two sets of flags.

-
§

type Output = AttitudeTargetTypemask

The resulting type after applying the | operator.
source§

impl BitOrAssign for AttitudeTargetTypemask

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
§

type Output = AttitudeTargetTypemask

The resulting type after applying the | operator.
source§

impl BitOrAssign for AttitudeTargetTypemask

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

source§

impl BitXor for AttitudeTargetTypemask

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

-
§

type Output = AttitudeTargetTypemask

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for AttitudeTargetTypemask

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

-
source§

impl Clone for AttitudeTargetTypemask

source§

fn clone(&self) -> AttitudeTargetTypemask

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for AttitudeTargetTypemask

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for AttitudeTargetTypemask

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for AttitudeTargetTypemask

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where +

§

type Output = AttitudeTargetTypemask

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for AttitudeTargetTypemask

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
source§

impl Clone for AttitudeTargetTypemask

source§

fn clone(&self) -> AttitudeTargetTypemask

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for AttitudeTargetTypemask

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for AttitudeTargetTypemask

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for AttitudeTargetTypemask

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Extend<AttitudeTargetTypemask> for AttitudeTargetTypemask

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<AttitudeTargetTypemask> for AttitudeTargetTypemask

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for AttitudeTargetTypemask

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for AttitudeTargetTypemask

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for AttitudeTargetTypemask

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = AttitudeTargetTypemask

The resulting type after applying the ! operator.
source§

impl Octal for AttitudeTargetTypemask

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for AttitudeTargetTypemask

source§

fn cmp(&self, other: &AttitudeTargetTypemask) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for AttitudeTargetTypemask

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for AttitudeTargetTypemask

source§

fn not(self) -> Self

Returns the complement of this set of flags.

+
§

type Output = AttitudeTargetTypemask

The resulting type after applying the ! operator.
source§

impl Octal for AttitudeTargetTypemask

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for AttitudeTargetTypemask

source§

fn cmp(&self, other: &AttitudeTargetTypemask) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for AttitudeTargetTypemask

source§

fn eq(&self, other: &AttitudeTargetTypemask) -> bool

This method tests for self and other values to be equal, and is used @@ -76,7 +76,7 @@
§Safety
operator. Read more
source§

impl Serialize for AttitudeTargetTypemask

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Sub for AttitudeTargetTypemask

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

§

type Output = AttitudeTargetTypemask

The resulting type after applying the - operator.
source§

impl SubAssign for AttitudeTargetTypemask

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

-
source§

impl UpperHex for AttitudeTargetTypemask

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for AttitudeTargetTypemask

source§

impl Eq for AttitudeTargetTypemask

source§

impl StructuralPartialEq for AttitudeTargetTypemask

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

source§

impl UpperHex for AttitudeTargetTypemask

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for AttitudeTargetTypemask

source§

impl Eq for AttitudeTargetTypemask

source§

impl StructuralPartialEq for AttitudeTargetTypemask

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/mavlink/common/struct.CameraCapFlags.html b/mavlink/common/struct.CameraCapFlags.html index 1e4734f7bd..9751326356 100644 --- a/mavlink/common/struct.CameraCapFlags.html +++ b/mavlink/common/struct.CameraCapFlags.html @@ -56,17 +56,17 @@
§Safety
between Self::all() and self (e.g. Self::all() - self)

This is equivalent to using the ! operator (e.g. ops::Not), as in !flags.

-
source§

impl CameraCapFlags

source

pub const DEFAULT: Self = Self::CAMERA_CAP_FLAGS_CAPTURE_VIDEO

Trait Implementations§

source§

impl Binary for CameraCapFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for CameraCapFlags

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

-
§

type Output = CameraCapFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for CameraCapFlags

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

+
source§

impl CameraCapFlags

source

pub const DEFAULT: Self = Self::CAMERA_CAP_FLAGS_CAPTURE_VIDEO

Trait Implementations§

source§

impl Binary for CameraCapFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for CameraCapFlags

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

+
§

type Output = CameraCapFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for CameraCapFlags

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

source§

impl BitOr for CameraCapFlags

source§

fn bitor(self, other: CameraCapFlags) -> Self

Returns the union of the two sets of flags.

-
§

type Output = CameraCapFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for CameraCapFlags

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
§

type Output = CameraCapFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for CameraCapFlags

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

source§

impl BitXor for CameraCapFlags

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

-
§

type Output = CameraCapFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for CameraCapFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

-
source§

impl Clone for CameraCapFlags

source§

fn clone(&self) -> CameraCapFlags

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for CameraCapFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for CameraCapFlags

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for CameraCapFlags

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where +

§

type Output = CameraCapFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for CameraCapFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
source§

impl Clone for CameraCapFlags

source§

fn clone(&self) -> CameraCapFlags

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for CameraCapFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for CameraCapFlags

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for CameraCapFlags

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Extend<CameraCapFlags> for CameraCapFlags

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<CameraCapFlags> for CameraCapFlags

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for CameraCapFlags

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for CameraCapFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for CameraCapFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = CameraCapFlags

The resulting type after applying the ! operator.
source§

impl Octal for CameraCapFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for CameraCapFlags

source§

fn cmp(&self, other: &CameraCapFlags) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for CameraCapFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for CameraCapFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

+
§

type Output = CameraCapFlags

The resulting type after applying the ! operator.
source§

impl Octal for CameraCapFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for CameraCapFlags

source§

fn cmp(&self, other: &CameraCapFlags) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for CameraCapFlags

source§

fn eq(&self, other: &CameraCapFlags) -> bool

This method tests for self and other values to be equal, and is used @@ -75,8 +75,8 @@
§Safety
operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl Serialize for CameraCapFlags

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Sub for CameraCapFlags

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

-
§

type Output = CameraCapFlags

The resulting type after applying the - operator.
source§

impl SubAssign for CameraCapFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

-
source§

impl UpperHex for CameraCapFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for CameraCapFlags

source§

impl Eq for CameraCapFlags

source§

impl StructuralPartialEq for CameraCapFlags

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

§

type Output = CameraCapFlags

The resulting type after applying the - operator.
source§

impl SubAssign for CameraCapFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

+
source§

impl UpperHex for CameraCapFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for CameraCapFlags

source§

impl Eq for CameraCapFlags

source§

impl StructuralPartialEq for CameraCapFlags

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/mavlink/common/struct.EscFailureFlags.html b/mavlink/common/struct.EscFailureFlags.html index 3fab7db684..6ebd1e9366 100644 --- a/mavlink/common/struct.EscFailureFlags.html +++ b/mavlink/common/struct.EscFailureFlags.html @@ -57,16 +57,16 @@
§Safety

This is equivalent to using the ! operator (e.g. ops::Not), as in !flags.

source§

impl EscFailureFlags

source

pub const DEFAULT: Self = Self::ESC_FAILURE_NONE

Trait Implementations§

source§

impl Binary for EscFailureFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for EscFailureFlags

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

-
§

type Output = EscFailureFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for EscFailureFlags

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

+
§

type Output = EscFailureFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for EscFailureFlags

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

source§

impl BitOr for EscFailureFlags

source§

fn bitor(self, other: EscFailureFlags) -> Self

Returns the union of the two sets of flags.

-
§

type Output = EscFailureFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for EscFailureFlags

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
§

type Output = EscFailureFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for EscFailureFlags

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

source§

impl BitXor for EscFailureFlags

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

-
§

type Output = EscFailureFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for EscFailureFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

-
source§

impl Clone for EscFailureFlags

source§

fn clone(&self) -> EscFailureFlags

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for EscFailureFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for EscFailureFlags

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for EscFailureFlags

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where +

§

type Output = EscFailureFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for EscFailureFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
source§

impl Clone for EscFailureFlags

source§

fn clone(&self) -> EscFailureFlags

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for EscFailureFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for EscFailureFlags

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for EscFailureFlags

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Extend<EscFailureFlags> for EscFailureFlags

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<EscFailureFlags> for EscFailureFlags

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for EscFailureFlags

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for EscFailureFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for EscFailureFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = EscFailureFlags

The resulting type after applying the ! operator.
source§

impl Octal for EscFailureFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for EscFailureFlags

source§

fn cmp(&self, other: &EscFailureFlags) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for EscFailureFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for EscFailureFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

+
§

type Output = EscFailureFlags

The resulting type after applying the ! operator.
source§

impl Octal for EscFailureFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for EscFailureFlags

source§

fn cmp(&self, other: &EscFailureFlags) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for EscFailureFlags

source§

fn eq(&self, other: &EscFailureFlags) -> bool

This method tests for self and other values to be equal, and is used @@ -75,8 +75,8 @@
§Safety
operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl Serialize for EscFailureFlags

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Sub for EscFailureFlags

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

-
§

type Output = EscFailureFlags

The resulting type after applying the - operator.
source§

impl SubAssign for EscFailureFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

-
source§

impl UpperHex for EscFailureFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for EscFailureFlags

source§

impl Eq for EscFailureFlags

source§

impl StructuralPartialEq for EscFailureFlags

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

§

type Output = EscFailureFlags

The resulting type after applying the - operator.
source§

impl SubAssign for EscFailureFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

+
source§

impl UpperHex for EscFailureFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for EscFailureFlags

source§

impl Eq for EscFailureFlags

source§

impl StructuralPartialEq for EscFailureFlags

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/mavlink/common/struct.EstimatorStatusFlags.html b/mavlink/common/struct.EstimatorStatusFlags.html index 100e654bd6..e5098849d4 100644 --- a/mavlink/common/struct.EstimatorStatusFlags.html +++ b/mavlink/common/struct.EstimatorStatusFlags.html @@ -56,17 +56,17 @@
§Safety
between Self::all() and self (e.g. Self::all() - self)

This is equivalent to using the ! operator (e.g. ops::Not), as in !flags.

-
source§

impl EstimatorStatusFlags

source

pub const DEFAULT: Self = Self::ESTIMATOR_ATTITUDE

Trait Implementations§

source§

impl Binary for EstimatorStatusFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for EstimatorStatusFlags

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

-
§

type Output = EstimatorStatusFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for EstimatorStatusFlags

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

+
source§

impl EstimatorStatusFlags

source

pub const DEFAULT: Self = Self::ESTIMATOR_ATTITUDE

Trait Implementations§

source§

impl Binary for EstimatorStatusFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for EstimatorStatusFlags

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

+
§

type Output = EstimatorStatusFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for EstimatorStatusFlags

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

source§

impl BitOr for EstimatorStatusFlags

source§

fn bitor(self, other: EstimatorStatusFlags) -> Self

Returns the union of the two sets of flags.

-
§

type Output = EstimatorStatusFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for EstimatorStatusFlags

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
§

type Output = EstimatorStatusFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for EstimatorStatusFlags

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

source§

impl BitXor for EstimatorStatusFlags

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

-
§

type Output = EstimatorStatusFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for EstimatorStatusFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

-
source§

impl Clone for EstimatorStatusFlags

source§

fn clone(&self) -> EstimatorStatusFlags

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for EstimatorStatusFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for EstimatorStatusFlags

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for EstimatorStatusFlags

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where +

§

type Output = EstimatorStatusFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for EstimatorStatusFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
source§

impl Clone for EstimatorStatusFlags

source§

fn clone(&self) -> EstimatorStatusFlags

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for EstimatorStatusFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for EstimatorStatusFlags

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for EstimatorStatusFlags

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Extend<EstimatorStatusFlags> for EstimatorStatusFlags

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<EstimatorStatusFlags> for EstimatorStatusFlags

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for EstimatorStatusFlags

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for EstimatorStatusFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for EstimatorStatusFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = EstimatorStatusFlags

The resulting type after applying the ! operator.
source§

impl Octal for EstimatorStatusFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for EstimatorStatusFlags

source§

fn cmp(&self, other: &EstimatorStatusFlags) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where +

§

type Output = EstimatorStatusFlags

The resulting type after applying the ! operator.
source§

impl Octal for EstimatorStatusFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for EstimatorStatusFlags

source§

fn cmp(&self, other: &EstimatorStatusFlags) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for EstimatorStatusFlags

source§

fn eq(&self, other: &EstimatorStatusFlags) -> bool

This method tests for self and other values to be equal, and is used @@ -75,8 +75,8 @@
§Safety
operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl Serialize for EstimatorStatusFlags

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Sub for EstimatorStatusFlags

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

-
§

type Output = EstimatorStatusFlags

The resulting type after applying the - operator.
source§

impl SubAssign for EstimatorStatusFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

-
source§

impl UpperHex for EstimatorStatusFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for EstimatorStatusFlags

source§

impl Eq for EstimatorStatusFlags

source§

impl StructuralPartialEq for EstimatorStatusFlags

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

§

type Output = EstimatorStatusFlags

The resulting type after applying the - operator.
source§

impl SubAssign for EstimatorStatusFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

+
source§

impl UpperHex for EstimatorStatusFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for EstimatorStatusFlags

source§

impl Eq for EstimatorStatusFlags

source§

impl StructuralPartialEq for EstimatorStatusFlags

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/mavlink/common/struct.GimbalDeviceCapFlags.html b/mavlink/common/struct.GimbalDeviceCapFlags.html index d982beb063..6f95d8c5c0 100644 --- a/mavlink/common/struct.GimbalDeviceCapFlags.html +++ b/mavlink/common/struct.GimbalDeviceCapFlags.html @@ -57,16 +57,16 @@
§Safety

This is equivalent to using the ! operator (e.g. ops::Not), as in !flags.

source§

impl GimbalDeviceCapFlags

source

pub const DEFAULT: Self = Self::GIMBAL_DEVICE_CAP_FLAGS_HAS_RETRACT

Trait Implementations§

source§

impl Binary for GimbalDeviceCapFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for GimbalDeviceCapFlags

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

-
§

type Output = GimbalDeviceCapFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for GimbalDeviceCapFlags

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

+
§

type Output = GimbalDeviceCapFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for GimbalDeviceCapFlags

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

source§

impl BitOr for GimbalDeviceCapFlags

source§

fn bitor(self, other: GimbalDeviceCapFlags) -> Self

Returns the union of the two sets of flags.

-
§

type Output = GimbalDeviceCapFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for GimbalDeviceCapFlags

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
§

type Output = GimbalDeviceCapFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for GimbalDeviceCapFlags

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

source§

impl BitXor for GimbalDeviceCapFlags

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

§

type Output = GimbalDeviceCapFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for GimbalDeviceCapFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

-
source§

impl Clone for GimbalDeviceCapFlags

source§

fn clone(&self) -> GimbalDeviceCapFlags

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for GimbalDeviceCapFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for GimbalDeviceCapFlags

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for GimbalDeviceCapFlags

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where +

source§

impl Clone for GimbalDeviceCapFlags

source§

fn clone(&self) -> GimbalDeviceCapFlags

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for GimbalDeviceCapFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for GimbalDeviceCapFlags

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for GimbalDeviceCapFlags

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Extend<GimbalDeviceCapFlags> for GimbalDeviceCapFlags

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<GimbalDeviceCapFlags> for GimbalDeviceCapFlags

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for GimbalDeviceCapFlags

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for GimbalDeviceCapFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for GimbalDeviceCapFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = GimbalDeviceCapFlags

The resulting type after applying the ! operator.
source§

impl Octal for GimbalDeviceCapFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for GimbalDeviceCapFlags

source§

fn cmp(&self, other: &GimbalDeviceCapFlags) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for GimbalDeviceCapFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for GimbalDeviceCapFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

+
§

type Output = GimbalDeviceCapFlags

The resulting type after applying the ! operator.
source§

impl Octal for GimbalDeviceCapFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for GimbalDeviceCapFlags

source§

fn cmp(&self, other: &GimbalDeviceCapFlags) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for GimbalDeviceCapFlags

source§

fn eq(&self, other: &GimbalDeviceCapFlags) -> bool

This method tests for self and other values to be equal, and is used @@ -75,8 +75,8 @@
§Safety
operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl Serialize for GimbalDeviceCapFlags

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Sub for GimbalDeviceCapFlags

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

-
§

type Output = GimbalDeviceCapFlags

The resulting type after applying the - operator.
source§

impl SubAssign for GimbalDeviceCapFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

-
source§

impl UpperHex for GimbalDeviceCapFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for GimbalDeviceCapFlags

source§

impl Eq for GimbalDeviceCapFlags

source§

impl StructuralPartialEq for GimbalDeviceCapFlags

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

§

type Output = GimbalDeviceCapFlags

The resulting type after applying the - operator.
source§

impl SubAssign for GimbalDeviceCapFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

+
source§

impl UpperHex for GimbalDeviceCapFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for GimbalDeviceCapFlags

source§

impl Eq for GimbalDeviceCapFlags

source§

impl StructuralPartialEq for GimbalDeviceCapFlags

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/mavlink/common/struct.GimbalDeviceErrorFlags.html b/mavlink/common/struct.GimbalDeviceErrorFlags.html index bfee759c61..2dd49c80a3 100644 --- a/mavlink/common/struct.GimbalDeviceErrorFlags.html +++ b/mavlink/common/struct.GimbalDeviceErrorFlags.html @@ -56,17 +56,17 @@
§Safety
between Self::all() and self (e.g. Self::all() - self)

This is equivalent to using the ! operator (e.g. ops::Not), as in !flags.

-
source§

impl GimbalDeviceErrorFlags

source

pub const DEFAULT: Self = Self::GIMBAL_DEVICE_ERROR_FLAGS_AT_ROLL_LIMIT

Trait Implementations§

source§

impl Binary for GimbalDeviceErrorFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for GimbalDeviceErrorFlags

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

-
§

type Output = GimbalDeviceErrorFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for GimbalDeviceErrorFlags

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

+
source§

impl GimbalDeviceErrorFlags

source

pub const DEFAULT: Self = Self::GIMBAL_DEVICE_ERROR_FLAGS_AT_ROLL_LIMIT

Trait Implementations§

source§

impl Binary for GimbalDeviceErrorFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for GimbalDeviceErrorFlags

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

+
§

type Output = GimbalDeviceErrorFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for GimbalDeviceErrorFlags

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

source§

impl BitOr for GimbalDeviceErrorFlags

source§

fn bitor(self, other: GimbalDeviceErrorFlags) -> Self

Returns the union of the two sets of flags.

-
§

type Output = GimbalDeviceErrorFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for GimbalDeviceErrorFlags

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
§

type Output = GimbalDeviceErrorFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for GimbalDeviceErrorFlags

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

source§

impl BitXor for GimbalDeviceErrorFlags

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

-
§

type Output = GimbalDeviceErrorFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for GimbalDeviceErrorFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

-
source§

impl Clone for GimbalDeviceErrorFlags

source§

fn clone(&self) -> GimbalDeviceErrorFlags

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for GimbalDeviceErrorFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for GimbalDeviceErrorFlags

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for GimbalDeviceErrorFlags

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where +

§

type Output = GimbalDeviceErrorFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for GimbalDeviceErrorFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
source§

impl Clone for GimbalDeviceErrorFlags

source§

fn clone(&self) -> GimbalDeviceErrorFlags

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for GimbalDeviceErrorFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for GimbalDeviceErrorFlags

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for GimbalDeviceErrorFlags

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Extend<GimbalDeviceErrorFlags> for GimbalDeviceErrorFlags

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<GimbalDeviceErrorFlags> for GimbalDeviceErrorFlags

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for GimbalDeviceErrorFlags

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for GimbalDeviceErrorFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for GimbalDeviceErrorFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = GimbalDeviceErrorFlags

The resulting type after applying the ! operator.
source§

impl Octal for GimbalDeviceErrorFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for GimbalDeviceErrorFlags

source§

fn cmp(&self, other: &GimbalDeviceErrorFlags) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for GimbalDeviceErrorFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for GimbalDeviceErrorFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

+
§

type Output = GimbalDeviceErrorFlags

The resulting type after applying the ! operator.
source§

impl Octal for GimbalDeviceErrorFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for GimbalDeviceErrorFlags

source§

fn cmp(&self, other: &GimbalDeviceErrorFlags) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for GimbalDeviceErrorFlags

source§

fn eq(&self, other: &GimbalDeviceErrorFlags) -> bool

This method tests for self and other values to be equal, and is used @@ -75,8 +75,8 @@
§Safety
operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl Serialize for GimbalDeviceErrorFlags

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Sub for GimbalDeviceErrorFlags

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

-
§

type Output = GimbalDeviceErrorFlags

The resulting type after applying the - operator.
source§

impl SubAssign for GimbalDeviceErrorFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

-
source§

impl UpperHex for GimbalDeviceErrorFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for GimbalDeviceErrorFlags

source§

impl Eq for GimbalDeviceErrorFlags

source§

impl StructuralPartialEq for GimbalDeviceErrorFlags

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

§

type Output = GimbalDeviceErrorFlags

The resulting type after applying the - operator.
source§

impl SubAssign for GimbalDeviceErrorFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

+
source§

impl UpperHex for GimbalDeviceErrorFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for GimbalDeviceErrorFlags

source§

impl Eq for GimbalDeviceErrorFlags

source§

impl StructuralPartialEq for GimbalDeviceErrorFlags

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/mavlink/common/struct.GimbalDeviceFlags.html b/mavlink/common/struct.GimbalDeviceFlags.html index ce8515eb5f..513c412d13 100644 --- a/mavlink/common/struct.GimbalDeviceFlags.html +++ b/mavlink/common/struct.GimbalDeviceFlags.html @@ -56,17 +56,17 @@
§Safety
between Self::all() and self (e.g. Self::all() - self)

This is equivalent to using the ! operator (e.g. ops::Not), as in !flags.

-
source§

impl GimbalDeviceFlags

source

pub const DEFAULT: Self = Self::GIMBAL_DEVICE_FLAGS_RETRACT

Trait Implementations§

source§

impl Binary for GimbalDeviceFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for GimbalDeviceFlags

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

+
source§

impl GimbalDeviceFlags

source

pub const DEFAULT: Self = Self::GIMBAL_DEVICE_FLAGS_RETRACT

Trait Implementations§

source§

impl Binary for GimbalDeviceFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for GimbalDeviceFlags

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

§

type Output = GimbalDeviceFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for GimbalDeviceFlags

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

source§

impl BitOr for GimbalDeviceFlags

source§

fn bitor(self, other: GimbalDeviceFlags) -> Self

Returns the union of the two sets of flags.

-
§

type Output = GimbalDeviceFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for GimbalDeviceFlags

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
§

type Output = GimbalDeviceFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for GimbalDeviceFlags

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

source§

impl BitXor for GimbalDeviceFlags

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

-
§

type Output = GimbalDeviceFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for GimbalDeviceFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

-
source§

impl Clone for GimbalDeviceFlags

source§

fn clone(&self) -> GimbalDeviceFlags

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for GimbalDeviceFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for GimbalDeviceFlags

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for GimbalDeviceFlags

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where +

§

type Output = GimbalDeviceFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for GimbalDeviceFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
source§

impl Clone for GimbalDeviceFlags

source§

fn clone(&self) -> GimbalDeviceFlags

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for GimbalDeviceFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for GimbalDeviceFlags

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for GimbalDeviceFlags

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Extend<GimbalDeviceFlags> for GimbalDeviceFlags

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<GimbalDeviceFlags> for GimbalDeviceFlags

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for GimbalDeviceFlags

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for GimbalDeviceFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for GimbalDeviceFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = GimbalDeviceFlags

The resulting type after applying the ! operator.
source§

impl Octal for GimbalDeviceFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for GimbalDeviceFlags

source§

fn cmp(&self, other: &GimbalDeviceFlags) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for GimbalDeviceFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for GimbalDeviceFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

+
§

type Output = GimbalDeviceFlags

The resulting type after applying the ! operator.
source§

impl Octal for GimbalDeviceFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for GimbalDeviceFlags

source§

fn cmp(&self, other: &GimbalDeviceFlags) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for GimbalDeviceFlags

source§

fn eq(&self, other: &GimbalDeviceFlags) -> bool

This method tests for self and other values to be equal, and is used @@ -75,8 +75,8 @@
§Safety
operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl Serialize for GimbalDeviceFlags

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Sub for GimbalDeviceFlags

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

-
§

type Output = GimbalDeviceFlags

The resulting type after applying the - operator.
source§

impl SubAssign for GimbalDeviceFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

-
source§

impl UpperHex for GimbalDeviceFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for GimbalDeviceFlags

source§

impl Eq for GimbalDeviceFlags

source§

impl StructuralPartialEq for GimbalDeviceFlags

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

§

type Output = GimbalDeviceFlags

The resulting type after applying the - operator.
source§

impl SubAssign for GimbalDeviceFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

+
source§

impl UpperHex for GimbalDeviceFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for GimbalDeviceFlags

source§

impl Eq for GimbalDeviceFlags

source§

impl StructuralPartialEq for GimbalDeviceFlags

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/mavlink/common/struct.GimbalManagerCapFlags.html b/mavlink/common/struct.GimbalManagerCapFlags.html index 81cf6d51c4..87307b0caa 100644 --- a/mavlink/common/struct.GimbalManagerCapFlags.html +++ b/mavlink/common/struct.GimbalManagerCapFlags.html @@ -56,13 +56,13 @@
§Safety
between Self::all() and self (e.g. Self::all() - self)

This is equivalent to using the ! operator (e.g. ops::Not), as in !flags.

-
source§

impl GimbalManagerCapFlags

source

pub const DEFAULT: Self = Self::GIMBAL_MANAGER_CAP_FLAGS_HAS_RETRACT

Trait Implementations§

source§

impl Binary for GimbalManagerCapFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for GimbalManagerCapFlags

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

-
§

type Output = GimbalManagerCapFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for GimbalManagerCapFlags

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

+
source§

impl GimbalManagerCapFlags

source

pub const DEFAULT: Self = Self::GIMBAL_MANAGER_CAP_FLAGS_HAS_RETRACT

Trait Implementations§

source§

impl Binary for GimbalManagerCapFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for GimbalManagerCapFlags

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

+
§

type Output = GimbalManagerCapFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for GimbalManagerCapFlags

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

source§

impl BitOr for GimbalManagerCapFlags

source§

fn bitor(self, other: GimbalManagerCapFlags) -> Self

Returns the union of the two sets of flags.

-
§

type Output = GimbalManagerCapFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for GimbalManagerCapFlags

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
§

type Output = GimbalManagerCapFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for GimbalManagerCapFlags

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

source§

impl BitXor for GimbalManagerCapFlags

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

-
§

type Output = GimbalManagerCapFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for GimbalManagerCapFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

-
source§

impl Clone for GimbalManagerCapFlags

source§

fn clone(&self) -> GimbalManagerCapFlags

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for GimbalManagerCapFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for GimbalManagerCapFlags

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for GimbalManagerCapFlags

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where +

§

type Output = GimbalManagerCapFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for GimbalManagerCapFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
source§

impl Clone for GimbalManagerCapFlags

source§

fn clone(&self) -> GimbalManagerCapFlags

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for GimbalManagerCapFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for GimbalManagerCapFlags

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for GimbalManagerCapFlags

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Extend<GimbalManagerCapFlags> for GimbalManagerCapFlags

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<GimbalManagerCapFlags> for GimbalManagerCapFlags

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for GimbalManagerCapFlags

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for GimbalManagerCapFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for GimbalManagerCapFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

@@ -76,7 +76,7 @@
§Safety
operator. Read more
source§

impl Serialize for GimbalManagerCapFlags

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Sub for GimbalManagerCapFlags

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

§

type Output = GimbalManagerCapFlags

The resulting type after applying the - operator.
source§

impl SubAssign for GimbalManagerCapFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

-
source§

impl UpperHex for GimbalManagerCapFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for GimbalManagerCapFlags

source§

impl Eq for GimbalManagerCapFlags

source§

impl StructuralPartialEq for GimbalManagerCapFlags

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

source§

impl UpperHex for GimbalManagerCapFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for GimbalManagerCapFlags

source§

impl Eq for GimbalManagerCapFlags

source§

impl StructuralPartialEq for GimbalManagerCapFlags

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/mavlink/common/struct.GpsInputIgnoreFlags.html b/mavlink/common/struct.GpsInputIgnoreFlags.html index 42f13af8d8..469b319c74 100644 --- a/mavlink/common/struct.GpsInputIgnoreFlags.html +++ b/mavlink/common/struct.GpsInputIgnoreFlags.html @@ -57,16 +57,16 @@
§Safety

This is equivalent to using the ! operator (e.g. ops::Not), as in !flags.

source§

impl GpsInputIgnoreFlags

source

pub const DEFAULT: Self = Self::GPS_INPUT_IGNORE_FLAG_ALT

Trait Implementations§

source§

impl Binary for GpsInputIgnoreFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for GpsInputIgnoreFlags

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

-
§

type Output = GpsInputIgnoreFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for GpsInputIgnoreFlags

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

+
§

type Output = GpsInputIgnoreFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for GpsInputIgnoreFlags

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

source§

impl BitOr for GpsInputIgnoreFlags

source§

fn bitor(self, other: GpsInputIgnoreFlags) -> Self

Returns the union of the two sets of flags.

-
§

type Output = GpsInputIgnoreFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for GpsInputIgnoreFlags

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
§

type Output = GpsInputIgnoreFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for GpsInputIgnoreFlags

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

source§

impl BitXor for GpsInputIgnoreFlags

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

-
§

type Output = GpsInputIgnoreFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for GpsInputIgnoreFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
§

type Output = GpsInputIgnoreFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for GpsInputIgnoreFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

source§

impl Clone for GpsInputIgnoreFlags

source§

fn clone(&self) -> GpsInputIgnoreFlags

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for GpsInputIgnoreFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for GpsInputIgnoreFlags

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for GpsInputIgnoreFlags

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Extend<GpsInputIgnoreFlags> for GpsInputIgnoreFlags

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<GpsInputIgnoreFlags> for GpsInputIgnoreFlags

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for GpsInputIgnoreFlags

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for GpsInputIgnoreFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for GpsInputIgnoreFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = GpsInputIgnoreFlags

The resulting type after applying the ! operator.
source§

impl Octal for GpsInputIgnoreFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for GpsInputIgnoreFlags

source§

fn cmp(&self, other: &GpsInputIgnoreFlags) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where +

§

type Output = GpsInputIgnoreFlags

The resulting type after applying the ! operator.
source§

impl Octal for GpsInputIgnoreFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for GpsInputIgnoreFlags

source§

fn cmp(&self, other: &GpsInputIgnoreFlags) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for GpsInputIgnoreFlags

source§

fn eq(&self, other: &GpsInputIgnoreFlags) -> bool

This method tests for self and other values to be equal, and is used @@ -75,7 +75,7 @@
§Safety
operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl Serialize for GpsInputIgnoreFlags

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Sub for GpsInputIgnoreFlags

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

-
§

type Output = GpsInputIgnoreFlags

The resulting type after applying the - operator.
source§

impl SubAssign for GpsInputIgnoreFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

+
§

type Output = GpsInputIgnoreFlags

The resulting type after applying the - operator.
source§

impl SubAssign for GpsInputIgnoreFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

source§

impl UpperHex for GpsInputIgnoreFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for GpsInputIgnoreFlags

source§

impl Eq for GpsInputIgnoreFlags

source§

impl StructuralPartialEq for GpsInputIgnoreFlags

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where diff --git a/mavlink/common/struct.HighresImuUpdatedFlags.html b/mavlink/common/struct.HighresImuUpdatedFlags.html index 2702f51163..bbf5ca93c1 100644 --- a/mavlink/common/struct.HighresImuUpdatedFlags.html +++ b/mavlink/common/struct.HighresImuUpdatedFlags.html @@ -56,17 +56,17 @@
§Safety
between Self::all() and self (e.g. Self::all() - self)

This is equivalent to using the ! operator (e.g. ops::Not), as in !flags.

-

source§

impl HighresImuUpdatedFlags

source

pub const DEFAULT: Self = Self::HIGHRES_IMU_UPDATED_NONE

Trait Implementations§

source§

impl Binary for HighresImuUpdatedFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for HighresImuUpdatedFlags

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

+
source§

impl HighresImuUpdatedFlags

source

pub const DEFAULT: Self = Self::HIGHRES_IMU_UPDATED_NONE

Trait Implementations§

source§

impl Binary for HighresImuUpdatedFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for HighresImuUpdatedFlags

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

§

type Output = HighresImuUpdatedFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for HighresImuUpdatedFlags

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

source§

impl BitOr for HighresImuUpdatedFlags

source§

fn bitor(self, other: HighresImuUpdatedFlags) -> Self

Returns the union of the two sets of flags.

-
§

type Output = HighresImuUpdatedFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for HighresImuUpdatedFlags

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
§

type Output = HighresImuUpdatedFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for HighresImuUpdatedFlags

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

source§

impl BitXor for HighresImuUpdatedFlags

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

-
§

type Output = HighresImuUpdatedFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for HighresImuUpdatedFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

-
source§

impl Clone for HighresImuUpdatedFlags

source§

fn clone(&self) -> HighresImuUpdatedFlags

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for HighresImuUpdatedFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for HighresImuUpdatedFlags

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for HighresImuUpdatedFlags

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where +

§

type Output = HighresImuUpdatedFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for HighresImuUpdatedFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
source§

impl Clone for HighresImuUpdatedFlags

source§

fn clone(&self) -> HighresImuUpdatedFlags

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for HighresImuUpdatedFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for HighresImuUpdatedFlags

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for HighresImuUpdatedFlags

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Extend<HighresImuUpdatedFlags> for HighresImuUpdatedFlags

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<HighresImuUpdatedFlags> for HighresImuUpdatedFlags

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for HighresImuUpdatedFlags

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for HighresImuUpdatedFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for HighresImuUpdatedFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = HighresImuUpdatedFlags

The resulting type after applying the ! operator.
source§

impl Octal for HighresImuUpdatedFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for HighresImuUpdatedFlags

source§

fn cmp(&self, other: &HighresImuUpdatedFlags) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where +

§

type Output = HighresImuUpdatedFlags

The resulting type after applying the ! operator.
source§

impl Octal for HighresImuUpdatedFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for HighresImuUpdatedFlags

source§

fn cmp(&self, other: &HighresImuUpdatedFlags) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for HighresImuUpdatedFlags

source§

fn eq(&self, other: &HighresImuUpdatedFlags) -> bool

This method tests for self and other values to be equal, and is used @@ -75,8 +75,8 @@
§Safety
operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl Serialize for HighresImuUpdatedFlags

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Sub for HighresImuUpdatedFlags

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

-
§

type Output = HighresImuUpdatedFlags

The resulting type after applying the - operator.
source§

impl SubAssign for HighresImuUpdatedFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

-
source§

impl UpperHex for HighresImuUpdatedFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for HighresImuUpdatedFlags

source§

impl Eq for HighresImuUpdatedFlags

source§

impl StructuralPartialEq for HighresImuUpdatedFlags

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

§

type Output = HighresImuUpdatedFlags

The resulting type after applying the - operator.
source§

impl SubAssign for HighresImuUpdatedFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

+
source§

impl UpperHex for HighresImuUpdatedFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for HighresImuUpdatedFlags

source§

impl Eq for HighresImuUpdatedFlags

source§

impl StructuralPartialEq for HighresImuUpdatedFlags

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/mavlink/common/struct.HilSensorUpdatedFlags.html b/mavlink/common/struct.HilSensorUpdatedFlags.html index ef2169e151..5de68b67de 100644 --- a/mavlink/common/struct.HilSensorUpdatedFlags.html +++ b/mavlink/common/struct.HilSensorUpdatedFlags.html @@ -56,17 +56,17 @@
§Safety
between Self::all() and self (e.g. Self::all() - self)

This is equivalent to using the ! operator (e.g. ops::Not), as in !flags.

-
source§

impl HilSensorUpdatedFlags

source

pub const DEFAULT: Self = Self::HIL_SENSOR_UPDATED_NONE

Trait Implementations§

source§

impl Binary for HilSensorUpdatedFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for HilSensorUpdatedFlags

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

-
§

type Output = HilSensorUpdatedFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for HilSensorUpdatedFlags

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

+
source§

impl HilSensorUpdatedFlags

source

pub const DEFAULT: Self = Self::HIL_SENSOR_UPDATED_NONE

Trait Implementations§

source§

impl Binary for HilSensorUpdatedFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for HilSensorUpdatedFlags

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

+
§

type Output = HilSensorUpdatedFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for HilSensorUpdatedFlags

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

source§

impl BitOr for HilSensorUpdatedFlags

source§

fn bitor(self, other: HilSensorUpdatedFlags) -> Self

Returns the union of the two sets of flags.

-
§

type Output = HilSensorUpdatedFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for HilSensorUpdatedFlags

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
§

type Output = HilSensorUpdatedFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for HilSensorUpdatedFlags

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

source§

impl BitXor for HilSensorUpdatedFlags

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

-
§

type Output = HilSensorUpdatedFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for HilSensorUpdatedFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

-
source§

impl Clone for HilSensorUpdatedFlags

source§

fn clone(&self) -> HilSensorUpdatedFlags

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for HilSensorUpdatedFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for HilSensorUpdatedFlags

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for HilSensorUpdatedFlags

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where +

§

type Output = HilSensorUpdatedFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for HilSensorUpdatedFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
source§

impl Clone for HilSensorUpdatedFlags

source§

fn clone(&self) -> HilSensorUpdatedFlags

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for HilSensorUpdatedFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for HilSensorUpdatedFlags

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for HilSensorUpdatedFlags

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Extend<HilSensorUpdatedFlags> for HilSensorUpdatedFlags

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<HilSensorUpdatedFlags> for HilSensorUpdatedFlags

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for HilSensorUpdatedFlags

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for HilSensorUpdatedFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for HilSensorUpdatedFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = HilSensorUpdatedFlags

The resulting type after applying the ! operator.
source§

impl Octal for HilSensorUpdatedFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for HilSensorUpdatedFlags

source§

fn cmp(&self, other: &HilSensorUpdatedFlags) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for HilSensorUpdatedFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for HilSensorUpdatedFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

+
§

type Output = HilSensorUpdatedFlags

The resulting type after applying the ! operator.
source§

impl Octal for HilSensorUpdatedFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for HilSensorUpdatedFlags

source§

fn cmp(&self, other: &HilSensorUpdatedFlags) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for HilSensorUpdatedFlags

source§

fn eq(&self, other: &HilSensorUpdatedFlags) -> bool

This method tests for self and other values to be equal, and is used @@ -75,8 +75,8 @@
§Safety
operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl Serialize for HilSensorUpdatedFlags

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Sub for HilSensorUpdatedFlags

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

-
§

type Output = HilSensorUpdatedFlags

The resulting type after applying the - operator.
source§

impl SubAssign for HilSensorUpdatedFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

-
source§

impl UpperHex for HilSensorUpdatedFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for HilSensorUpdatedFlags

source§

impl Eq for HilSensorUpdatedFlags

source§

impl StructuralPartialEq for HilSensorUpdatedFlags

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

§

type Output = HilSensorUpdatedFlags

The resulting type after applying the - operator.
source§

impl SubAssign for HilSensorUpdatedFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

+
source§

impl UpperHex for HilSensorUpdatedFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for HilSensorUpdatedFlags

source§

impl Eq for HilSensorUpdatedFlags

source§

impl StructuralPartialEq for HilSensorUpdatedFlags

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/mavlink/common/struct.HlFailureFlag.html b/mavlink/common/struct.HlFailureFlag.html index 29a2902282..51171d2011 100644 --- a/mavlink/common/struct.HlFailureFlag.html +++ b/mavlink/common/struct.HlFailureFlag.html @@ -56,17 +56,17 @@
§Safety
between Self::all() and self (e.g. Self::all() - self)

This is equivalent to using the ! operator (e.g. ops::Not), as in !flags.

-
source§

impl HlFailureFlag

source

pub const DEFAULT: Self = Self::HL_FAILURE_FLAG_GPS

Trait Implementations§

source§

impl Binary for HlFailureFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for HlFailureFlag

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

-
§

type Output = HlFailureFlag

The resulting type after applying the & operator.
source§

impl BitAndAssign for HlFailureFlag

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

+
source§

impl HlFailureFlag

source

pub const DEFAULT: Self = Self::HL_FAILURE_FLAG_GPS

Trait Implementations§

source§

impl Binary for HlFailureFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for HlFailureFlag

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

+
§

type Output = HlFailureFlag

The resulting type after applying the & operator.
source§

impl BitAndAssign for HlFailureFlag

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

source§

impl BitOr for HlFailureFlag

source§

fn bitor(self, other: HlFailureFlag) -> Self

Returns the union of the two sets of flags.

§

type Output = HlFailureFlag

The resulting type after applying the | operator.
source§

impl BitOrAssign for HlFailureFlag

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

source§

impl BitXor for HlFailureFlag

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

-
§

type Output = HlFailureFlag

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for HlFailureFlag

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

-
source§

impl Clone for HlFailureFlag

source§

fn clone(&self) -> HlFailureFlag

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for HlFailureFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for HlFailureFlag

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for HlFailureFlag

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where +

§

type Output = HlFailureFlag

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for HlFailureFlag

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
source§

impl Clone for HlFailureFlag

source§

fn clone(&self) -> HlFailureFlag

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for HlFailureFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for HlFailureFlag

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for HlFailureFlag

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Extend<HlFailureFlag> for HlFailureFlag

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<HlFailureFlag> for HlFailureFlag

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for HlFailureFlag

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for HlFailureFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for HlFailureFlag

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = HlFailureFlag

The resulting type after applying the ! operator.
source§

impl Octal for HlFailureFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for HlFailureFlag

source§

fn cmp(&self, other: &HlFailureFlag) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for HlFailureFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for HlFailureFlag

source§

fn not(self) -> Self

Returns the complement of this set of flags.

+
§

type Output = HlFailureFlag

The resulting type after applying the ! operator.
source§

impl Octal for HlFailureFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for HlFailureFlag

source§

fn cmp(&self, other: &HlFailureFlag) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for HlFailureFlag

source§

fn eq(&self, other: &HlFailureFlag) -> bool

This method tests for self and other values to be equal, and is used @@ -76,7 +76,7 @@
§Safety
operator. Read more
source§

impl Serialize for HlFailureFlag

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Sub for HlFailureFlag

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

§

type Output = HlFailureFlag

The resulting type after applying the - operator.
source§

impl SubAssign for HlFailureFlag

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

-
source§

impl UpperHex for HlFailureFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for HlFailureFlag

source§

impl Eq for HlFailureFlag

source§

impl StructuralPartialEq for HlFailureFlag

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

source§

impl UpperHex for HlFailureFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for HlFailureFlag

source§

impl Eq for HlFailureFlag

source§

impl StructuralPartialEq for HlFailureFlag

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/mavlink/common/struct.MavEventCurrentSequenceFlags.html b/mavlink/common/struct.MavEventCurrentSequenceFlags.html index e94343e4fb..011734f065 100644 --- a/mavlink/common/struct.MavEventCurrentSequenceFlags.html +++ b/mavlink/common/struct.MavEventCurrentSequenceFlags.html @@ -56,17 +56,17 @@
§Safety
between Self::all() and self (e.g. Self::all() - self)

This is equivalent to using the ! operator (e.g. ops::Not), as in !flags.

-
source§

impl MavEventCurrentSequenceFlags

source

pub const DEFAULT: Self = Self::MAV_EVENT_CURRENT_SEQUENCE_FLAGS_RESET

Trait Implementations§

source§

impl Binary for MavEventCurrentSequenceFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for MavEventCurrentSequenceFlags

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

+
source§

impl MavEventCurrentSequenceFlags

source

pub const DEFAULT: Self = Self::MAV_EVENT_CURRENT_SEQUENCE_FLAGS_RESET

Trait Implementations§

source§

impl Binary for MavEventCurrentSequenceFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for MavEventCurrentSequenceFlags

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

§

type Output = MavEventCurrentSequenceFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for MavEventCurrentSequenceFlags

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

source§

impl BitOr for MavEventCurrentSequenceFlags

source§

fn bitor(self, other: MavEventCurrentSequenceFlags) -> Self

Returns the union of the two sets of flags.

-
§

type Output = MavEventCurrentSequenceFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for MavEventCurrentSequenceFlags

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
§

type Output = MavEventCurrentSequenceFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for MavEventCurrentSequenceFlags

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

source§

impl BitXor for MavEventCurrentSequenceFlags

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

-
§

type Output = MavEventCurrentSequenceFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for MavEventCurrentSequenceFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

-
source§

impl Clone for MavEventCurrentSequenceFlags

source§

fn clone(&self) -> MavEventCurrentSequenceFlags

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for MavEventCurrentSequenceFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for MavEventCurrentSequenceFlags

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for MavEventCurrentSequenceFlags

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where +

§

type Output = MavEventCurrentSequenceFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for MavEventCurrentSequenceFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
source§

impl Clone for MavEventCurrentSequenceFlags

source§

fn clone(&self) -> MavEventCurrentSequenceFlags

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for MavEventCurrentSequenceFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for MavEventCurrentSequenceFlags

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for MavEventCurrentSequenceFlags

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Extend<MavEventCurrentSequenceFlags> for MavEventCurrentSequenceFlags

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<MavEventCurrentSequenceFlags> for MavEventCurrentSequenceFlags

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for MavEventCurrentSequenceFlags

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for MavEventCurrentSequenceFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for MavEventCurrentSequenceFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = MavEventCurrentSequenceFlags

The resulting type after applying the ! operator.
source§

impl Octal for MavEventCurrentSequenceFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for MavEventCurrentSequenceFlags

source§

fn cmp(&self, other: &MavEventCurrentSequenceFlags) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for MavEventCurrentSequenceFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for MavEventCurrentSequenceFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

+
§

type Output = MavEventCurrentSequenceFlags

The resulting type after applying the ! operator.
source§

impl Octal for MavEventCurrentSequenceFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for MavEventCurrentSequenceFlags

source§

fn cmp(&self, other: &MavEventCurrentSequenceFlags) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for MavEventCurrentSequenceFlags

source§

fn eq(&self, other: &MavEventCurrentSequenceFlags) -> bool

This method tests for self and other values to be equal, and is used @@ -76,7 +76,7 @@
§Safety
operator. Read more
source§

impl Serialize for MavEventCurrentSequenceFlags

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Sub for MavEventCurrentSequenceFlags

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

§

type Output = MavEventCurrentSequenceFlags

The resulting type after applying the - operator.
source§

impl SubAssign for MavEventCurrentSequenceFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

-
source§

impl UpperHex for MavEventCurrentSequenceFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for MavEventCurrentSequenceFlags

source§

impl Eq for MavEventCurrentSequenceFlags

source§

impl StructuralPartialEq for MavEventCurrentSequenceFlags

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

source§

impl UpperHex for MavEventCurrentSequenceFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for MavEventCurrentSequenceFlags

source§

impl Eq for MavEventCurrentSequenceFlags

source§

impl StructuralPartialEq for MavEventCurrentSequenceFlags

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/mavlink/common/struct.MavGeneratorStatusFlag.html b/mavlink/common/struct.MavGeneratorStatusFlag.html index 10126e5b1f..390f0d10fd 100644 --- a/mavlink/common/struct.MavGeneratorStatusFlag.html +++ b/mavlink/common/struct.MavGeneratorStatusFlag.html @@ -56,17 +56,17 @@
§Safety
between Self::all() and self (e.g. Self::all() - self)

This is equivalent to using the ! operator (e.g. ops::Not), as in !flags.

-
source§

impl MavGeneratorStatusFlag

source

pub const DEFAULT: Self = Self::MAV_GENERATOR_STATUS_FLAG_OFF

Trait Implementations§

source§

impl Binary for MavGeneratorStatusFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for MavGeneratorStatusFlag

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

-
§

type Output = MavGeneratorStatusFlag

The resulting type after applying the & operator.
source§

impl BitAndAssign for MavGeneratorStatusFlag

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

+
source§

impl MavGeneratorStatusFlag

source

pub const DEFAULT: Self = Self::MAV_GENERATOR_STATUS_FLAG_OFF

Trait Implementations§

source§

impl Binary for MavGeneratorStatusFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for MavGeneratorStatusFlag

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

+
§

type Output = MavGeneratorStatusFlag

The resulting type after applying the & operator.
source§

impl BitAndAssign for MavGeneratorStatusFlag

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

source§

impl BitOr for MavGeneratorStatusFlag

source§

fn bitor(self, other: MavGeneratorStatusFlag) -> Self

Returns the union of the two sets of flags.

§

type Output = MavGeneratorStatusFlag

The resulting type after applying the | operator.
source§

impl BitOrAssign for MavGeneratorStatusFlag

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

source§

impl BitXor for MavGeneratorStatusFlag

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

-
§

type Output = MavGeneratorStatusFlag

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for MavGeneratorStatusFlag

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
§

type Output = MavGeneratorStatusFlag

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for MavGeneratorStatusFlag

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

source§

impl Clone for MavGeneratorStatusFlag

source§

fn clone(&self) -> MavGeneratorStatusFlag

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for MavGeneratorStatusFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for MavGeneratorStatusFlag

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for MavGeneratorStatusFlag

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Extend<MavGeneratorStatusFlag> for MavGeneratorStatusFlag

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<MavGeneratorStatusFlag> for MavGeneratorStatusFlag

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for MavGeneratorStatusFlag

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for MavGeneratorStatusFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for MavGeneratorStatusFlag

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = MavGeneratorStatusFlag

The resulting type after applying the ! operator.
source§

impl Octal for MavGeneratorStatusFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for MavGeneratorStatusFlag

source§

fn cmp(&self, other: &MavGeneratorStatusFlag) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for MavGeneratorStatusFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for MavGeneratorStatusFlag

source§

fn not(self) -> Self

Returns the complement of this set of flags.

+
§

type Output = MavGeneratorStatusFlag

The resulting type after applying the ! operator.
source§

impl Octal for MavGeneratorStatusFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for MavGeneratorStatusFlag

source§

fn cmp(&self, other: &MavGeneratorStatusFlag) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for MavGeneratorStatusFlag

source§

fn eq(&self, other: &MavGeneratorStatusFlag) -> bool

This method tests for self and other values to be equal, and is used @@ -75,8 +75,8 @@
§Safety
operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl Serialize for MavGeneratorStatusFlag

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Sub for MavGeneratorStatusFlag

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

-
§

type Output = MavGeneratorStatusFlag

The resulting type after applying the - operator.
source§

impl SubAssign for MavGeneratorStatusFlag

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

-
source§

impl UpperHex for MavGeneratorStatusFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for MavGeneratorStatusFlag

source§

impl Eq for MavGeneratorStatusFlag

source§

impl StructuralPartialEq for MavGeneratorStatusFlag

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

§

type Output = MavGeneratorStatusFlag

The resulting type after applying the - operator.
source§

impl SubAssign for MavGeneratorStatusFlag

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

+
source§

impl UpperHex for MavGeneratorStatusFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for MavGeneratorStatusFlag

source§

impl Eq for MavGeneratorStatusFlag

source§

impl StructuralPartialEq for MavGeneratorStatusFlag

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/mavlink/common/struct.MavModeFlag.html b/mavlink/common/struct.MavModeFlag.html index ed59626a22..424ce1254b 100644 --- a/mavlink/common/struct.MavModeFlag.html +++ b/mavlink/common/struct.MavModeFlag.html @@ -56,17 +56,17 @@
§Safety
between Self::all() and self (e.g. Self::all() - self)

This is equivalent to using the ! operator (e.g. ops::Not), as in !flags.

-
source§

impl MavModeFlag

source

pub const DEFAULT: Self = Self::MAV_MODE_FLAG_SAFETY_ARMED

Trait Implementations§

source§

impl Binary for MavModeFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for MavModeFlag

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

-
§

type Output = MavModeFlag

The resulting type after applying the & operator.
source§

impl BitAndAssign for MavModeFlag

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

+
source§

impl MavModeFlag

source

pub const DEFAULT: Self = Self::MAV_MODE_FLAG_SAFETY_ARMED

Trait Implementations§

source§

impl Binary for MavModeFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for MavModeFlag

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

+
§

type Output = MavModeFlag

The resulting type after applying the & operator.
source§

impl BitAndAssign for MavModeFlag

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

source§

impl BitOr for MavModeFlag

source§

fn bitor(self, other: MavModeFlag) -> Self

Returns the union of the two sets of flags.

-
§

type Output = MavModeFlag

The resulting type after applying the | operator.
source§

impl BitOrAssign for MavModeFlag

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
§

type Output = MavModeFlag

The resulting type after applying the | operator.
source§

impl BitOrAssign for MavModeFlag

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

source§

impl BitXor for MavModeFlag

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

-
§

type Output = MavModeFlag

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for MavModeFlag

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

-
source§

impl Clone for MavModeFlag

source§

fn clone(&self) -> MavModeFlag

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for MavModeFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for MavModeFlag

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for MavModeFlag

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where +

§

type Output = MavModeFlag

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for MavModeFlag

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
source§

impl Clone for MavModeFlag

source§

fn clone(&self) -> MavModeFlag

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for MavModeFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for MavModeFlag

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for MavModeFlag

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Extend<MavModeFlag> for MavModeFlag

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<MavModeFlag> for MavModeFlag

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for MavModeFlag

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for MavModeFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for MavModeFlag

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = MavModeFlag

The resulting type after applying the ! operator.
source§

impl Octal for MavModeFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for MavModeFlag

source§

fn cmp(&self, other: &MavModeFlag) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for MavModeFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for MavModeFlag

source§

fn not(self) -> Self

Returns the complement of this set of flags.

+
§

type Output = MavModeFlag

The resulting type after applying the ! operator.
source§

impl Octal for MavModeFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for MavModeFlag

source§

fn cmp(&self, other: &MavModeFlag) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for MavModeFlag

source§

fn eq(&self, other: &MavModeFlag) -> bool

This method tests for self and other values to be equal, and is used @@ -76,7 +76,7 @@
§Safety
operator. Read more
source§

impl Serialize for MavModeFlag

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Sub for MavModeFlag

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

§

type Output = MavModeFlag

The resulting type after applying the - operator.
source§

impl SubAssign for MavModeFlag

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

-
source§

impl UpperHex for MavModeFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for MavModeFlag

source§

impl Eq for MavModeFlag

source§

impl StructuralPartialEq for MavModeFlag

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

source§

impl UpperHex for MavModeFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for MavModeFlag

source§

impl Eq for MavModeFlag

source§

impl StructuralPartialEq for MavModeFlag

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/mavlink/common/struct.MavPowerStatus.html b/mavlink/common/struct.MavPowerStatus.html index 5ff82645d1..c23a6f265d 100644 --- a/mavlink/common/struct.MavPowerStatus.html +++ b/mavlink/common/struct.MavPowerStatus.html @@ -56,17 +56,17 @@
§Safety
between Self::all() and self (e.g. Self::all() - self)

This is equivalent to using the ! operator (e.g. ops::Not), as in !flags.

-
source§

impl MavPowerStatus

source

pub const DEFAULT: Self = Self::MAV_POWER_STATUS_BRICK_VALID

Trait Implementations§

source§

impl Binary for MavPowerStatus

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for MavPowerStatus

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

+
source§

impl MavPowerStatus

source

pub const DEFAULT: Self = Self::MAV_POWER_STATUS_BRICK_VALID

Trait Implementations§

source§

impl Binary for MavPowerStatus

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for MavPowerStatus

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

§

type Output = MavPowerStatus

The resulting type after applying the & operator.
source§

impl BitAndAssign for MavPowerStatus

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

source§

impl BitOr for MavPowerStatus

source§

fn bitor(self, other: MavPowerStatus) -> Self

Returns the union of the two sets of flags.

§

type Output = MavPowerStatus

The resulting type after applying the | operator.
source§

impl BitOrAssign for MavPowerStatus

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

source§

impl BitXor for MavPowerStatus

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

-
§

type Output = MavPowerStatus

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for MavPowerStatus

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

-
source§

impl Clone for MavPowerStatus

source§

fn clone(&self) -> MavPowerStatus

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for MavPowerStatus

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for MavPowerStatus

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for MavPowerStatus

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where +

§

type Output = MavPowerStatus

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for MavPowerStatus

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
source§

impl Clone for MavPowerStatus

source§

fn clone(&self) -> MavPowerStatus

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for MavPowerStatus

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for MavPowerStatus

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for MavPowerStatus

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Extend<MavPowerStatus> for MavPowerStatus

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<MavPowerStatus> for MavPowerStatus

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for MavPowerStatus

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for MavPowerStatus

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for MavPowerStatus

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = MavPowerStatus

The resulting type after applying the ! operator.
source§

impl Octal for MavPowerStatus

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for MavPowerStatus

source§

fn cmp(&self, other: &MavPowerStatus) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for MavPowerStatus

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for MavPowerStatus

source§

fn not(self) -> Self

Returns the complement of this set of flags.

+
§

type Output = MavPowerStatus

The resulting type after applying the ! operator.
source§

impl Octal for MavPowerStatus

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for MavPowerStatus

source§

fn cmp(&self, other: &MavPowerStatus) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for MavPowerStatus

source§

fn eq(&self, other: &MavPowerStatus) -> bool

This method tests for self and other values to be equal, and is used @@ -75,8 +75,8 @@
§Safety
operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl Serialize for MavPowerStatus

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Sub for MavPowerStatus

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

-
§

type Output = MavPowerStatus

The resulting type after applying the - operator.
source§

impl SubAssign for MavPowerStatus

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

-
source§

impl UpperHex for MavPowerStatus

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for MavPowerStatus

source§

impl Eq for MavPowerStatus

source§

impl StructuralPartialEq for MavPowerStatus

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

§

type Output = MavPowerStatus

The resulting type after applying the - operator.
source§

impl SubAssign for MavPowerStatus

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

+
source§

impl UpperHex for MavPowerStatus

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for MavPowerStatus

source§

impl Eq for MavPowerStatus

source§

impl StructuralPartialEq for MavPowerStatus

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/mavlink/common/struct.MavProtocolCapability.html b/mavlink/common/struct.MavProtocolCapability.html index ad4e1f06e3..0f96a858fd 100644 --- a/mavlink/common/struct.MavProtocolCapability.html +++ b/mavlink/common/struct.MavProtocolCapability.html @@ -57,16 +57,16 @@
§Safety

This is equivalent to using the ! operator (e.g. ops::Not), as in !flags.

source§

impl MavProtocolCapability

source

pub const DEFAULT: Self = Self::MAV_PROTOCOL_CAPABILITY_MISSION_FLOAT

Trait Implementations§

source§

impl Binary for MavProtocolCapability

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for MavProtocolCapability

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

-
§

type Output = MavProtocolCapability

The resulting type after applying the & operator.
source§

impl BitAndAssign for MavProtocolCapability

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

+
§

type Output = MavProtocolCapability

The resulting type after applying the & operator.
source§

impl BitAndAssign for MavProtocolCapability

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

source§

impl BitOr for MavProtocolCapability

source§

fn bitor(self, other: MavProtocolCapability) -> Self

Returns the union of the two sets of flags.

-
§

type Output = MavProtocolCapability

The resulting type after applying the | operator.
source§

impl BitOrAssign for MavProtocolCapability

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
§

type Output = MavProtocolCapability

The resulting type after applying the | operator.
source§

impl BitOrAssign for MavProtocolCapability

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

source§

impl BitXor for MavProtocolCapability

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

-
§

type Output = MavProtocolCapability

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for MavProtocolCapability

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
§

type Output = MavProtocolCapability

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for MavProtocolCapability

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

source§

impl Clone for MavProtocolCapability

source§

fn clone(&self) -> MavProtocolCapability

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for MavProtocolCapability

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for MavProtocolCapability

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for MavProtocolCapability

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Extend<MavProtocolCapability> for MavProtocolCapability

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<MavProtocolCapability> for MavProtocolCapability

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for MavProtocolCapability

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for MavProtocolCapability

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for MavProtocolCapability

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = MavProtocolCapability

The resulting type after applying the ! operator.
source§

impl Octal for MavProtocolCapability

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for MavProtocolCapability

source§

fn cmp(&self, other: &MavProtocolCapability) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for MavProtocolCapability

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for MavProtocolCapability

source§

fn not(self) -> Self

Returns the complement of this set of flags.

+
§

type Output = MavProtocolCapability

The resulting type after applying the ! operator.
source§

impl Octal for MavProtocolCapability

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for MavProtocolCapability

source§

fn cmp(&self, other: &MavProtocolCapability) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for MavProtocolCapability

source§

fn eq(&self, other: &MavProtocolCapability) -> bool

This method tests for self and other values to be equal, and is used @@ -76,7 +76,7 @@
§Safety
operator. Read more
source§

impl Serialize for MavProtocolCapability

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Sub for MavProtocolCapability

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

§

type Output = MavProtocolCapability

The resulting type after applying the - operator.
source§

impl SubAssign for MavProtocolCapability

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

-
source§

impl UpperHex for MavProtocolCapability

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for MavProtocolCapability

source§

impl Eq for MavProtocolCapability

source§

impl StructuralPartialEq for MavProtocolCapability

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

source§

impl UpperHex for MavProtocolCapability

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for MavProtocolCapability

source§

impl Eq for MavProtocolCapability

source§

impl StructuralPartialEq for MavProtocolCapability

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/mavlink/common/struct.MavSysStatusSensor.html b/mavlink/common/struct.MavSysStatusSensor.html index a8ed634d03..cfafbb43f5 100644 --- a/mavlink/common/struct.MavSysStatusSensor.html +++ b/mavlink/common/struct.MavSysStatusSensor.html @@ -56,17 +56,17 @@
§Safety
between Self::all() and self (e.g. Self::all() - self)

This is equivalent to using the ! operator (e.g. ops::Not), as in !flags.

-
source§

impl MavSysStatusSensor

source

pub const DEFAULT: Self = Self::MAV_SYS_STATUS_SENSOR_3D_GYRO

Trait Implementations§

source§

impl Binary for MavSysStatusSensor

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for MavSysStatusSensor

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

-
§

type Output = MavSysStatusSensor

The resulting type after applying the & operator.
source§

impl BitAndAssign for MavSysStatusSensor

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

+
source§

impl MavSysStatusSensor

source

pub const DEFAULT: Self = Self::MAV_SYS_STATUS_SENSOR_3D_GYRO

Trait Implementations§

source§

impl Binary for MavSysStatusSensor

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for MavSysStatusSensor

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

+
§

type Output = MavSysStatusSensor

The resulting type after applying the & operator.
source§

impl BitAndAssign for MavSysStatusSensor

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

source§

impl BitOr for MavSysStatusSensor

source§

fn bitor(self, other: MavSysStatusSensor) -> Self

Returns the union of the two sets of flags.

-
§

type Output = MavSysStatusSensor

The resulting type after applying the | operator.
source§

impl BitOrAssign for MavSysStatusSensor

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
§

type Output = MavSysStatusSensor

The resulting type after applying the | operator.
source§

impl BitOrAssign for MavSysStatusSensor

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

source§

impl BitXor for MavSysStatusSensor

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

-
§

type Output = MavSysStatusSensor

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for MavSysStatusSensor

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

-
source§

impl Clone for MavSysStatusSensor

source§

fn clone(&self) -> MavSysStatusSensor

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for MavSysStatusSensor

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for MavSysStatusSensor

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for MavSysStatusSensor

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where +

§

type Output = MavSysStatusSensor

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for MavSysStatusSensor

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
source§

impl Clone for MavSysStatusSensor

source§

fn clone(&self) -> MavSysStatusSensor

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for MavSysStatusSensor

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for MavSysStatusSensor

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for MavSysStatusSensor

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Extend<MavSysStatusSensor> for MavSysStatusSensor

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<MavSysStatusSensor> for MavSysStatusSensor

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for MavSysStatusSensor

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for MavSysStatusSensor

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for MavSysStatusSensor

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = MavSysStatusSensor

The resulting type after applying the ! operator.
source§

impl Octal for MavSysStatusSensor

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for MavSysStatusSensor

source§

fn cmp(&self, other: &MavSysStatusSensor) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for MavSysStatusSensor

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for MavSysStatusSensor

source§

fn not(self) -> Self

Returns the complement of this set of flags.

+
§

type Output = MavSysStatusSensor

The resulting type after applying the ! operator.
source§

impl Octal for MavSysStatusSensor

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for MavSysStatusSensor

source§

fn cmp(&self, other: &MavSysStatusSensor) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for MavSysStatusSensor

source§

fn eq(&self, other: &MavSysStatusSensor) -> bool

This method tests for self and other values to be equal, and is used @@ -75,8 +75,8 @@
§Safety
operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl Serialize for MavSysStatusSensor

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Sub for MavSysStatusSensor

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

-
§

type Output = MavSysStatusSensor

The resulting type after applying the - operator.
source§

impl SubAssign for MavSysStatusSensor

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

-
source§

impl UpperHex for MavSysStatusSensor

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for MavSysStatusSensor

source§

impl Eq for MavSysStatusSensor

source§

impl StructuralPartialEq for MavSysStatusSensor

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

§

type Output = MavSysStatusSensor

The resulting type after applying the - operator.
source§

impl SubAssign for MavSysStatusSensor

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

+
source§

impl UpperHex for MavSysStatusSensor

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for MavSysStatusSensor

source§

impl Eq for MavSysStatusSensor

source§

impl StructuralPartialEq for MavSysStatusSensor

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/mavlink/common/struct.MavWinchStatusFlag.html b/mavlink/common/struct.MavWinchStatusFlag.html index 253ed30060..1497e27a1b 100644 --- a/mavlink/common/struct.MavWinchStatusFlag.html +++ b/mavlink/common/struct.MavWinchStatusFlag.html @@ -56,17 +56,17 @@
§Safety
between Self::all() and self (e.g. Self::all() - self)

This is equivalent to using the ! operator (e.g. ops::Not), as in !flags.

-
source§

impl MavWinchStatusFlag

source

pub const DEFAULT: Self = Self::MAV_WINCH_STATUS_HEALTHY

Trait Implementations§

source§

impl Binary for MavWinchStatusFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for MavWinchStatusFlag

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

-
§

type Output = MavWinchStatusFlag

The resulting type after applying the & operator.
source§

impl BitAndAssign for MavWinchStatusFlag

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

+
source§

impl MavWinchStatusFlag

source

pub const DEFAULT: Self = Self::MAV_WINCH_STATUS_HEALTHY

Trait Implementations§

source§

impl Binary for MavWinchStatusFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for MavWinchStatusFlag

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

+
§

type Output = MavWinchStatusFlag

The resulting type after applying the & operator.
source§

impl BitAndAssign for MavWinchStatusFlag

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

source§

impl BitOr for MavWinchStatusFlag

source§

fn bitor(self, other: MavWinchStatusFlag) -> Self

Returns the union of the two sets of flags.

§

type Output = MavWinchStatusFlag

The resulting type after applying the | operator.
source§

impl BitOrAssign for MavWinchStatusFlag

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

source§

impl BitXor for MavWinchStatusFlag

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

-
§

type Output = MavWinchStatusFlag

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for MavWinchStatusFlag

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

-
source§

impl Clone for MavWinchStatusFlag

source§

fn clone(&self) -> MavWinchStatusFlag

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for MavWinchStatusFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for MavWinchStatusFlag

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for MavWinchStatusFlag

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where +

§

type Output = MavWinchStatusFlag

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for MavWinchStatusFlag

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
source§

impl Clone for MavWinchStatusFlag

source§

fn clone(&self) -> MavWinchStatusFlag

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for MavWinchStatusFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for MavWinchStatusFlag

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for MavWinchStatusFlag

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Extend<MavWinchStatusFlag> for MavWinchStatusFlag

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<MavWinchStatusFlag> for MavWinchStatusFlag

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for MavWinchStatusFlag

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for MavWinchStatusFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for MavWinchStatusFlag

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = MavWinchStatusFlag

The resulting type after applying the ! operator.
source§

impl Octal for MavWinchStatusFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for MavWinchStatusFlag

source§

fn cmp(&self, other: &MavWinchStatusFlag) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for MavWinchStatusFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for MavWinchStatusFlag

source§

fn not(self) -> Self

Returns the complement of this set of flags.

+
§

type Output = MavWinchStatusFlag

The resulting type after applying the ! operator.
source§

impl Octal for MavWinchStatusFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for MavWinchStatusFlag

source§

fn cmp(&self, other: &MavWinchStatusFlag) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for MavWinchStatusFlag

source§

fn eq(&self, other: &MavWinchStatusFlag) -> bool

This method tests for self and other values to be equal, and is used @@ -75,8 +75,8 @@
§Safety
operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl Serialize for MavWinchStatusFlag

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Sub for MavWinchStatusFlag

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

-
§

type Output = MavWinchStatusFlag

The resulting type after applying the - operator.
source§

impl SubAssign for MavWinchStatusFlag

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

-
source§

impl UpperHex for MavWinchStatusFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for MavWinchStatusFlag

source§

impl Eq for MavWinchStatusFlag

source§

impl StructuralPartialEq for MavWinchStatusFlag

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

§

type Output = MavWinchStatusFlag

The resulting type after applying the - operator.
source§

impl SubAssign for MavWinchStatusFlag

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

+
source§

impl UpperHex for MavWinchStatusFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for MavWinchStatusFlag

source§

impl Eq for MavWinchStatusFlag

source§

impl StructuralPartialEq for MavWinchStatusFlag

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/mavlink/common/struct.PositionTargetTypemask.html b/mavlink/common/struct.PositionTargetTypemask.html index 067ba0ec98..75639b05df 100644 --- a/mavlink/common/struct.PositionTargetTypemask.html +++ b/mavlink/common/struct.PositionTargetTypemask.html @@ -56,17 +56,17 @@
§Safety
between Self::all() and self (e.g. Self::all() - self)

This is equivalent to using the ! operator (e.g. ops::Not), as in !flags.

-
source§

impl PositionTargetTypemask

source

pub const DEFAULT: Self = Self::POSITION_TARGET_TYPEMASK_X_IGNORE

Trait Implementations§

source§

impl Binary for PositionTargetTypemask

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for PositionTargetTypemask

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

-
§

type Output = PositionTargetTypemask

The resulting type after applying the & operator.
source§

impl BitAndAssign for PositionTargetTypemask

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

+
source§

impl PositionTargetTypemask

source

pub const DEFAULT: Self = Self::POSITION_TARGET_TYPEMASK_X_IGNORE

Trait Implementations§

source§

impl Binary for PositionTargetTypemask

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for PositionTargetTypemask

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

+
§

type Output = PositionTargetTypemask

The resulting type after applying the & operator.
source§

impl BitAndAssign for PositionTargetTypemask

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

source§

impl BitOr for PositionTargetTypemask

source§

fn bitor(self, other: PositionTargetTypemask) -> Self

Returns the union of the two sets of flags.

-
§

type Output = PositionTargetTypemask

The resulting type after applying the | operator.
source§

impl BitOrAssign for PositionTargetTypemask

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
§

type Output = PositionTargetTypemask

The resulting type after applying the | operator.
source§

impl BitOrAssign for PositionTargetTypemask

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

source§

impl BitXor for PositionTargetTypemask

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

-
§

type Output = PositionTargetTypemask

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for PositionTargetTypemask

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

-
source§

impl Clone for PositionTargetTypemask

source§

fn clone(&self) -> PositionTargetTypemask

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for PositionTargetTypemask

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for PositionTargetTypemask

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for PositionTargetTypemask

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where +

§

type Output = PositionTargetTypemask

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for PositionTargetTypemask

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
source§

impl Clone for PositionTargetTypemask

source§

fn clone(&self) -> PositionTargetTypemask

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for PositionTargetTypemask

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for PositionTargetTypemask

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for PositionTargetTypemask

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Extend<PositionTargetTypemask> for PositionTargetTypemask

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<PositionTargetTypemask> for PositionTargetTypemask

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for PositionTargetTypemask

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for PositionTargetTypemask

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for PositionTargetTypemask

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = PositionTargetTypemask

The resulting type after applying the ! operator.
source§

impl Octal for PositionTargetTypemask

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for PositionTargetTypemask

source§

fn cmp(&self, other: &PositionTargetTypemask) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for PositionTargetTypemask

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for PositionTargetTypemask

source§

fn not(self) -> Self

Returns the complement of this set of flags.

+
§

type Output = PositionTargetTypemask

The resulting type after applying the ! operator.
source§

impl Octal for PositionTargetTypemask

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for PositionTargetTypemask

source§

fn cmp(&self, other: &PositionTargetTypemask) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for PositionTargetTypemask

source§

fn eq(&self, other: &PositionTargetTypemask) -> bool

This method tests for self and other values to be equal, and is used @@ -75,8 +75,8 @@
§Safety
operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl Serialize for PositionTargetTypemask

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Sub for PositionTargetTypemask

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

-
§

type Output = PositionTargetTypemask

The resulting type after applying the - operator.
source§

impl SubAssign for PositionTargetTypemask

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

-
source§

impl UpperHex for PositionTargetTypemask

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for PositionTargetTypemask

source§

impl Eq for PositionTargetTypemask

source§

impl StructuralPartialEq for PositionTargetTypemask

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

§

type Output = PositionTargetTypemask

The resulting type after applying the - operator.
source§

impl SubAssign for PositionTargetTypemask

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

+
source§

impl UpperHex for PositionTargetTypemask

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for PositionTargetTypemask

source§

impl Eq for PositionTargetTypemask

source§

impl StructuralPartialEq for PositionTargetTypemask

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/mavlink/common/struct.SerialControlFlag.html b/mavlink/common/struct.SerialControlFlag.html index 920786555e..30b06f0a7d 100644 --- a/mavlink/common/struct.SerialControlFlag.html +++ b/mavlink/common/struct.SerialControlFlag.html @@ -56,17 +56,17 @@
§Safety
between Self::all() and self (e.g. Self::all() - self)

This is equivalent to using the ! operator (e.g. ops::Not), as in !flags.

-
source§

impl SerialControlFlag

source

pub const DEFAULT: Self = Self::SERIAL_CONTROL_FLAG_REPLY

Trait Implementations§

source§

impl Binary for SerialControlFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for SerialControlFlag

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

-
§

type Output = SerialControlFlag

The resulting type after applying the & operator.
source§

impl BitAndAssign for SerialControlFlag

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

+
source§

impl SerialControlFlag

source

pub const DEFAULT: Self = Self::SERIAL_CONTROL_FLAG_REPLY

Trait Implementations§

source§

impl Binary for SerialControlFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for SerialControlFlag

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

+
§

type Output = SerialControlFlag

The resulting type after applying the & operator.
source§

impl BitAndAssign for SerialControlFlag

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

source§

impl BitOr for SerialControlFlag

source§

fn bitor(self, other: SerialControlFlag) -> Self

Returns the union of the two sets of flags.

§

type Output = SerialControlFlag

The resulting type after applying the | operator.
source§

impl BitOrAssign for SerialControlFlag

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

source§

impl BitXor for SerialControlFlag

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

-
§

type Output = SerialControlFlag

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for SerialControlFlag

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
§

type Output = SerialControlFlag

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for SerialControlFlag

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

source§

impl Clone for SerialControlFlag

source§

fn clone(&self) -> SerialControlFlag

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for SerialControlFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for SerialControlFlag

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for SerialControlFlag

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Extend<SerialControlFlag> for SerialControlFlag

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<SerialControlFlag> for SerialControlFlag

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for SerialControlFlag

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for SerialControlFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for SerialControlFlag

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = SerialControlFlag

The resulting type after applying the ! operator.
source§

impl Octal for SerialControlFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for SerialControlFlag

source§

fn cmp(&self, other: &SerialControlFlag) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for SerialControlFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for SerialControlFlag

source§

fn not(self) -> Self

Returns the complement of this set of flags.

+
§

type Output = SerialControlFlag

The resulting type after applying the ! operator.
source§

impl Octal for SerialControlFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for SerialControlFlag

source§

fn cmp(&self, other: &SerialControlFlag) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for SerialControlFlag

source§

fn eq(&self, other: &SerialControlFlag) -> bool

This method tests for self and other values to be equal, and is used @@ -75,7 +75,7 @@
§Safety
operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl Serialize for SerialControlFlag

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Sub for SerialControlFlag

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

-
§

type Output = SerialControlFlag

The resulting type after applying the - operator.
source§

impl SubAssign for SerialControlFlag

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

+
§

type Output = SerialControlFlag

The resulting type after applying the - operator.
source§

impl SubAssign for SerialControlFlag

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

source§

impl UpperHex for SerialControlFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for SerialControlFlag

source§

impl Eq for SerialControlFlag

source§

impl StructuralPartialEq for SerialControlFlag

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where diff --git a/mavlink/common/struct.TuneFormat.html b/mavlink/common/struct.TuneFormat.html index 360f1469cf..75fcde8066 100644 --- a/mavlink/common/struct.TuneFormat.html +++ b/mavlink/common/struct.TuneFormat.html @@ -56,17 +56,17 @@
§Safety
between Self::all() and self (e.g. Self::all() - self)

This is equivalent to using the ! operator (e.g. ops::Not), as in !flags.

-

source§

impl TuneFormat

source

pub const DEFAULT: Self = Self::TUNE_FORMAT_QBASIC1_1

Trait Implementations§

source§

impl Binary for TuneFormat

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for TuneFormat

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

-
§

type Output = TuneFormat

The resulting type after applying the & operator.
source§

impl BitAndAssign for TuneFormat

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

+
source§

impl TuneFormat

source

pub const DEFAULT: Self = Self::TUNE_FORMAT_QBASIC1_1

Trait Implementations§

source§

impl Binary for TuneFormat

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for TuneFormat

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

+
§

type Output = TuneFormat

The resulting type after applying the & operator.
source§

impl BitAndAssign for TuneFormat

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

source§

impl BitOr for TuneFormat

source§

fn bitor(self, other: TuneFormat) -> Self

Returns the union of the two sets of flags.

-
§

type Output = TuneFormat

The resulting type after applying the | operator.
source§

impl BitOrAssign for TuneFormat

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
§

type Output = TuneFormat

The resulting type after applying the | operator.
source§

impl BitOrAssign for TuneFormat

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

source§

impl BitXor for TuneFormat

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

-
§

type Output = TuneFormat

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for TuneFormat

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

-
source§

impl Clone for TuneFormat

source§

fn clone(&self) -> TuneFormat

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for TuneFormat

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for TuneFormat

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for TuneFormat

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where +

§

type Output = TuneFormat

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for TuneFormat

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
source§

impl Clone for TuneFormat

source§

fn clone(&self) -> TuneFormat

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for TuneFormat

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for TuneFormat

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for TuneFormat

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Extend<TuneFormat> for TuneFormat

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<TuneFormat> for TuneFormat

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for TuneFormat

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for TuneFormat

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for TuneFormat

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = TuneFormat

The resulting type after applying the ! operator.
source§

impl Octal for TuneFormat

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for TuneFormat

source§

fn cmp(&self, other: &TuneFormat) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for TuneFormat

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for TuneFormat

source§

fn not(self) -> Self

Returns the complement of this set of flags.

+
§

type Output = TuneFormat

The resulting type after applying the ! operator.
source§

impl Octal for TuneFormat

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for TuneFormat

source§

fn cmp(&self, other: &TuneFormat) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for TuneFormat

source§

fn eq(&self, other: &TuneFormat) -> bool

This method tests for self and other values to be equal, and is used @@ -76,7 +76,7 @@
§Safety
operator. Read more
source§

impl Serialize for TuneFormat

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Sub for TuneFormat

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

§

type Output = TuneFormat

The resulting type after applying the - operator.
source§

impl SubAssign for TuneFormat

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

-
source§

impl UpperHex for TuneFormat

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for TuneFormat

source§

impl Eq for TuneFormat

source§

impl StructuralPartialEq for TuneFormat

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

source§

impl UpperHex for TuneFormat

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for TuneFormat

source§

impl Eq for TuneFormat

source§

impl StructuralPartialEq for TuneFormat

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/mavlink/common/struct.UtmDataAvailFlags.html b/mavlink/common/struct.UtmDataAvailFlags.html index 12a50b8994..aa1a007ab0 100644 --- a/mavlink/common/struct.UtmDataAvailFlags.html +++ b/mavlink/common/struct.UtmDataAvailFlags.html @@ -56,17 +56,17 @@
§Safety
between Self::all() and self (e.g. Self::all() - self)

This is equivalent to using the ! operator (e.g. ops::Not), as in !flags.

-
source§

impl UtmDataAvailFlags

source

pub const DEFAULT: Self = Self::UTM_DATA_AVAIL_FLAGS_TIME_VALID

Trait Implementations§

source§

impl Binary for UtmDataAvailFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for UtmDataAvailFlags

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

-
§

type Output = UtmDataAvailFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for UtmDataAvailFlags

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

+
source§

impl UtmDataAvailFlags

source

pub const DEFAULT: Self = Self::UTM_DATA_AVAIL_FLAGS_TIME_VALID

Trait Implementations§

source§

impl Binary for UtmDataAvailFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for UtmDataAvailFlags

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

+
§

type Output = UtmDataAvailFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for UtmDataAvailFlags

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

source§

impl BitOr for UtmDataAvailFlags

source§

fn bitor(self, other: UtmDataAvailFlags) -> Self

Returns the union of the two sets of flags.

-
§

type Output = UtmDataAvailFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for UtmDataAvailFlags

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
§

type Output = UtmDataAvailFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for UtmDataAvailFlags

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

source§

impl BitXor for UtmDataAvailFlags

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

-
§

type Output = UtmDataAvailFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for UtmDataAvailFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

-
source§

impl Clone for UtmDataAvailFlags

source§

fn clone(&self) -> UtmDataAvailFlags

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for UtmDataAvailFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for UtmDataAvailFlags

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for UtmDataAvailFlags

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where +

§

type Output = UtmDataAvailFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for UtmDataAvailFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
source§

impl Clone for UtmDataAvailFlags

source§

fn clone(&self) -> UtmDataAvailFlags

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for UtmDataAvailFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for UtmDataAvailFlags

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for UtmDataAvailFlags

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Extend<UtmDataAvailFlags> for UtmDataAvailFlags

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<UtmDataAvailFlags> for UtmDataAvailFlags

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for UtmDataAvailFlags

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for UtmDataAvailFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for UtmDataAvailFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = UtmDataAvailFlags

The resulting type after applying the ! operator.
source§

impl Octal for UtmDataAvailFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for UtmDataAvailFlags

source§

fn cmp(&self, other: &UtmDataAvailFlags) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for UtmDataAvailFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for UtmDataAvailFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

+
§

type Output = UtmDataAvailFlags

The resulting type after applying the ! operator.
source§

impl Octal for UtmDataAvailFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for UtmDataAvailFlags

source§

fn cmp(&self, other: &UtmDataAvailFlags) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for UtmDataAvailFlags

source§

fn eq(&self, other: &UtmDataAvailFlags) -> bool

This method tests for self and other values to be equal, and is used @@ -75,8 +75,8 @@
§Safety
operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl Serialize for UtmDataAvailFlags

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Sub for UtmDataAvailFlags

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

-
§

type Output = UtmDataAvailFlags

The resulting type after applying the - operator.
source§

impl SubAssign for UtmDataAvailFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

-
source§

impl UpperHex for UtmDataAvailFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for UtmDataAvailFlags

source§

impl Eq for UtmDataAvailFlags

source§

impl StructuralPartialEq for UtmDataAvailFlags

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

§

type Output = UtmDataAvailFlags

The resulting type after applying the - operator.
source§

impl SubAssign for UtmDataAvailFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

+
source§

impl UpperHex for UtmDataAvailFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for UtmDataAvailFlags

source§

impl Eq for UtmDataAvailFlags

source§

impl StructuralPartialEq for UtmDataAvailFlags

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/mavlink/icarous/enum.MavMessage.html b/mavlink/icarous/enum.MavMessage.html index 7935946b4d..8fe9078cda 100644 --- a/mavlink/icarous/enum.MavMessage.html +++ b/mavlink/icarous/enum.MavMessage.html @@ -1,7 +1,7 @@ MavMessage in mavlink::icarous - Rust

Enum mavlink::icarous::MavMessage

source ·
#[repr(u32)]
pub enum MavMessage { - ICAROUS_HEARTBEAT(ICAROUS_HEARTBEAT_DATA), ICAROUS_KINEMATIC_BANDS(ICAROUS_KINEMATIC_BANDS_DATA), -}

Variants§

§

ICAROUS_HEARTBEAT(ICAROUS_HEARTBEAT_DATA)

§

ICAROUS_KINEMATIC_BANDS(ICAROUS_KINEMATIC_BANDS_DATA)

Trait Implementations§

source§

impl Clone for MavMessage

source§

fn clone(&self) -> MavMessage

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for MavMessage

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<'de> Deserialize<'de> for MavMessage

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where + ICAROUS_HEARTBEAT(ICAROUS_HEARTBEAT_DATA), +}

Variants§

§

ICAROUS_KINEMATIC_BANDS(ICAROUS_KINEMATIC_BANDS_DATA)

§

ICAROUS_HEARTBEAT(ICAROUS_HEARTBEAT_DATA)

Trait Implementations§

source§

impl Clone for MavMessage

source§

fn clone(&self) -> MavMessage

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for MavMessage

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<'de> Deserialize<'de> for MavMessage

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Message for MavMessage

source§

fn parse( version: MavlinkVersion, id: u32, diff --git a/mavlink/uavionix/enum.MavMessage.html b/mavlink/uavionix/enum.MavMessage.html index 88a35912e0..0a2cd5975b 100644 --- a/mavlink/uavionix/enum.MavMessage.html +++ b/mavlink/uavionix/enum.MavMessage.html @@ -1,229 +1,229 @@ MavMessage in mavlink::uavionix - Rust

Enum mavlink::uavionix::MavMessage

source ·
#[repr(u32)]
pub enum MavMessage { -
Show 224 variants STORAGE_INFORMATION(STORAGE_INFORMATION_DATA), - MOUNT_ORIENTATION(MOUNT_ORIENTATION_DATA), - SCALED_PRESSURE2(SCALED_PRESSURE2_DATA), - HIL_STATE(HIL_STATE_DATA), - GPS_RTCM_DATA(GPS_RTCM_DATA_DATA), - PARAM_EXT_VALUE(PARAM_EXT_VALUE_DATA), - MISSION_REQUEST_INT(MISSION_REQUEST_INT_DATA), - ALTITUDE(ALTITUDE_DATA), +
Show 224 variants UAVIONIX_ADSB_OUT_CFG(UAVIONIX_ADSB_OUT_CFG_DATA), + ADSB_VEHICLE(ADSB_VEHICLE_DATA), + MISSION_ITEM(MISSION_ITEM_DATA), CAMERA_TRIGGER(CAMERA_TRIGGER_DATA), - LOCAL_POSITION_NED_COV(LOCAL_POSITION_NED_COV_DATA), - LOG_ENTRY(LOG_ENTRY_DATA), - AUTOPILOT_STATE_FOR_GIMBAL_DEVICE(AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA), - WIFI_CONFIG_AP(WIFI_CONFIG_AP_DATA), ONBOARD_COMPUTER_STATUS(ONBOARD_COMPUTER_STATUS_DATA), - DATA_STREAM(DATA_STREAM_DATA), - SERVO_OUTPUT_RAW(SERVO_OUTPUT_RAW_DATA), - GIMBAL_DEVICE_ATTITUDE_STATUS(GIMBAL_DEVICE_ATTITUDE_STATUS_DATA), - ESC_STATUS(ESC_STATUS_DATA), - PLAY_TUNE(PLAY_TUNE_DATA), - FILE_TRANSFER_PROTOCOL(FILE_TRANSFER_PROTOCOL_DATA), - SET_HOME_POSITION(SET_HOME_POSITION_DATA), - ATTITUDE_QUATERNION_COV(ATTITUDE_QUATERNION_COV_DATA), - GPS2_RAW(GPS2_RAW_DATA), - SIM_STATE(SIM_STATE_DATA), - HOME_POSITION(HOME_POSITION_DATA), - MANUAL_CONTROL(MANUAL_CONTROL_DATA), - SET_POSITION_TARGET_GLOBAL_INT(SET_POSITION_TARGET_GLOBAL_INT_DATA), - GLOBAL_VISION_POSITION_ESTIMATE(GLOBAL_VISION_POSITION_ESTIMATE_DATA), - PING(PING_DATA), - WHEEL_DISTANCE(WHEEL_DISTANCE_DATA), - GIMBAL_MANAGER_SET_MANUAL_CONTROL(GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA), - RESPONSE_EVENT_ERROR(RESPONSE_EVENT_ERROR_DATA), - TERRAIN_CHECK(TERRAIN_CHECK_DATA), - OPEN_DRONE_ID_AUTHENTICATION(OPEN_DRONE_ID_AUTHENTICATION_DATA), - OPEN_DRONE_ID_ARM_STATUS(OPEN_DRONE_ID_ARM_STATUS_DATA), - OPEN_DRONE_ID_SYSTEM_UPDATE(OPEN_DRONE_ID_SYSTEM_UPDATE_DATA), - OPEN_DRONE_ID_SELF_ID(OPEN_DRONE_ID_SELF_ID_DATA), - BUTTON_CHANGE(BUTTON_CHANGE_DATA), - CAMERA_SETTINGS(CAMERA_SETTINGS_DATA), - ESC_INFO(ESC_INFO_DATA), - SERIAL_CONTROL(SERIAL_CONTROL_DATA), - CHANGE_OPERATOR_CONTROL_ACK(CHANGE_OPERATOR_CONTROL_ACK_DATA), - ESTIMATOR_STATUS(ESTIMATOR_STATUS_DATA), + ATTITUDE_TARGET(ATTITUDE_TARGET_DATA), + HIGH_LATENCY2(HIGH_LATENCY2_DATA), + DEBUG_VECT(DEBUG_VECT_DATA), + LOG_REQUEST_END(LOG_REQUEST_END_DATA), + NAV_CONTROLLER_OUTPUT(NAV_CONTROLLER_OUTPUT_DATA), + UTM_GLOBAL_POSITION(UTM_GLOBAL_POSITION_DATA), + GPS_INPUT(GPS_INPUT_DATA), + UAVCAN_NODE_STATUS(UAVCAN_NODE_STATUS_DATA), + LOGGING_DATA_ACKED(LOGGING_DATA_ACKED_DATA), + RAW_RPM(RAW_RPM_DATA), + MISSION_REQUEST(MISSION_REQUEST_DATA), + HIL_ACTUATOR_CONTROLS(HIL_ACTUATOR_CONTROLS_DATA), + PARAM_REQUEST_LIST(PARAM_REQUEST_LIST_DATA), + MISSION_ITEM_INT(MISSION_ITEM_INT_DATA), + LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET(LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA), + EFI_STATUS(EFI_STATUS_DATA), MISSION_ITEM_REACHED(MISSION_ITEM_REACHED_DATA), - SCALED_IMU2(SCALED_IMU2_DATA), - OPTICAL_FLOW_RAD(OPTICAL_FLOW_RAD_DATA), - LOG_REQUEST_DATA(LOG_REQUEST_DATA_DATA), - FOLLOW_TARGET(FOLLOW_TARGET_DATA), + REQUEST_DATA_STREAM(REQUEST_DATA_STREAM_DATA), + UAVIONIX_ADSB_OUT_DYNAMIC(UAVIONIX_ADSB_OUT_DYNAMIC_DATA), + CAMERA_CAPTURE_STATUS(CAMERA_CAPTURE_STATUS_DATA), + MANUAL_CONTROL(MANUAL_CONTROL_DATA), GIMBAL_MANAGER_SET_PITCHYAW(GIMBAL_MANAGER_SET_PITCHYAW_DATA), - HIGH_LATENCY(HIGH_LATENCY_DATA), - PARAM_MAP_RC(PARAM_MAP_RC_DATA), - MISSION_COUNT(MISSION_COUNT_DATA), + GPS_GLOBAL_ORIGIN(GPS_GLOBAL_ORIGIN_DATA), + HIL_CONTROLS(HIL_CONTROLS_DATA), + OPTICAL_FLOW(OPTICAL_FLOW_DATA), + OPEN_DRONE_ID_SELF_ID(OPEN_DRONE_ID_SELF_ID_DATA), + TIME_ESTIMATE_TO_TARGET(TIME_ESTIMATE_TO_TARGET_DATA), PARAM_VALUE(PARAM_VALUE_DATA), - LOGGING_ACK(LOGGING_ACK_DATA), - HIL_OPTICAL_FLOW(HIL_OPTICAL_FLOW_DATA), - HIGH_LATENCY2(HIGH_LATENCY2_DATA), - CURRENT_EVENT_SEQUENCE(CURRENT_EVENT_SEQUENCE_DATA), - CAMERA_TRACKING_GEO_STATUS(CAMERA_TRACKING_GEO_STATUS_DATA), - RC_CHANNELS_SCALED(RC_CHANNELS_SCALED_DATA), - GPS2_RTK(GPS2_RTK_DATA), - RC_CHANNELS(RC_CHANNELS_DATA), - MISSION_WRITE_PARTIAL_LIST(MISSION_WRITE_PARTIAL_LIST_DATA), - CAMERA_CAPTURE_STATUS(CAMERA_CAPTURE_STATUS_DATA), - RC_CHANNELS_OVERRIDE(RC_CHANNELS_OVERRIDE_DATA), + DEBUG_FLOAT_ARRAY(DEBUG_FLOAT_ARRAY_DATA), + AIS_VESSEL(AIS_VESSEL_DATA), + ATTITUDE_QUATERNION_COV(ATTITUDE_QUATERNION_COV_DATA), + GLOBAL_POSITION_INT(GLOBAL_POSITION_INT_DATA), + LOG_ENTRY(LOG_ENTRY_DATA), + OBSTACLE_DISTANCE(OBSTACLE_DISTANCE_DATA), + MISSION_COUNT(MISSION_COUNT_DATA), + FENCE_STATUS(FENCE_STATUS_DATA), + EVENT(EVENT_DATA), + HIL_SENSOR(HIL_SENSOR_DATA), + RAW_IMU(RAW_IMU_DATA), + V2_EXTENSION(V2_EXTENSION_DATA), + SMART_BATTERY_INFO(SMART_BATTERY_INFO_DATA), + PARAM_EXT_SET(PARAM_EXT_SET_DATA), + TERRAIN_CHECK(TERRAIN_CHECK_DATA), + TRAJECTORY_REPRESENTATION_WAYPOINTS(TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA), CAMERA_IMAGE_CAPTURED(CAMERA_IMAGE_CAPTURED_DATA), - MISSION_ITEM(MISSION_ITEM_DATA), - MAG_CAL_REPORT(MAG_CAL_REPORT_DATA), - COMMAND_INT(COMMAND_INT_DATA), - CANFD_FRAME(CANFD_FRAME_DATA), - SET_GPS_GLOBAL_ORIGIN(SET_GPS_GLOBAL_ORIGIN_DATA), + HEARTBEAT(HEARTBEAT_DATA), + LOG_ERASE(LOG_ERASE_DATA), + MANUAL_SETPOINT(MANUAL_SETPOINT_DATA), + SYSTEM_TIME(SYSTEM_TIME_DATA), HIL_GPS(HIL_GPS_DATA), - WINCH_STATUS(WINCH_STATUS_DATA), - DEBUG_VECT(DEBUG_VECT_DATA), + ESC_STATUS(ESC_STATUS_DATA), + CAMERA_TRACKING_GEO_STATUS(CAMERA_TRACKING_GEO_STATUS_DATA), + COMMAND_INT(COMMAND_INT_DATA), + HIL_RC_INPUTS_RAW(HIL_RC_INPUTS_RAW_DATA), + COMMAND_CANCEL(COMMAND_CANCEL_DATA), + TRAJECTORY_REPRESENTATION_BEZIER(TRAJECTORY_REPRESENTATION_BEZIER_DATA), + MISSION_CURRENT(MISSION_CURRENT_DATA), + UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT(UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA), + FLIGHT_INFORMATION(FLIGHT_INFORMATION_DATA), + SCALED_PRESSURE3(SCALED_PRESSURE3_DATA), LOGGING_DATA(LOGGING_DATA_DATA), - NAV_CONTROLLER_OUTPUT(NAV_CONTROLLER_OUTPUT_DATA), - MISSION_ITEM_INT(MISSION_ITEM_INT_DATA), - ACTUATOR_OUTPUT_STATUS(ACTUATOR_OUTPUT_STATUS_DATA), - LOG_ERASE(LOG_ERASE_DATA), - COMMAND_LONG(COMMAND_LONG_DATA), - CAMERA_INFORMATION(CAMERA_INFORMATION_DATA), - DISTANCE_SENSOR(DISTANCE_SENSOR_DATA), - UTM_GLOBAL_POSITION(UTM_GLOBAL_POSITION_DATA), - ATTITUDE(ATTITUDE_DATA), - WIND_COV(WIND_COV_DATA), - MEMORY_VECT(MEMORY_VECT_DATA), - GIMBAL_MANAGER_SET_ATTITUDE(GIMBAL_MANAGER_SET_ATTITUDE_DATA), - MISSION_CLEAR_ALL(MISSION_CLEAR_ALL_DATA), - DATA_TRANSMISSION_HANDSHAKE(DATA_TRANSMISSION_HANDSHAKE_DATA), - CAN_FILTER_MODIFY(CAN_FILTER_MODIFY_DATA), + ESTIMATOR_STATUS(ESTIMATOR_STATUS_DATA), + SET_GPS_GLOBAL_ORIGIN(SET_GPS_GLOBAL_ORIGIN_DATA), + DEBUG(DEBUG_DATA), + LOG_DATA(LOG_DATA_DATA), LOCAL_POSITION_NED(LOCAL_POSITION_NED_DATA), - GPS_INJECT_DATA(GPS_INJECT_DATA_DATA), + CANFD_FRAME(CANFD_FRAME_DATA), + MISSION_REQUEST_INT(MISSION_REQUEST_INT_DATA), + COMMAND_LONG(COMMAND_LONG_DATA), HIL_STATE_QUATERNION(HIL_STATE_QUATERNION_DATA), - SAFETY_SET_ALLOWED_AREA(SAFETY_SET_ALLOWED_AREA_DATA), - FENCE_STATUS(FENCE_STATUS_DATA), - OPTICAL_FLOW(OPTICAL_FLOW_DATA), - RADIO_STATUS(RADIO_STATUS_DATA), - SET_POSITION_TARGET_LOCAL_NED(SET_POSITION_TARGET_LOCAL_NED_DATA), + RC_CHANNELS_RAW(RC_CHANNELS_RAW_DATA), + DISTANCE_SENSOR(DISTANCE_SENSOR_DATA), + PARAM_EXT_REQUEST_LIST(PARAM_EXT_REQUEST_LIST_DATA), + AUTH_KEY(AUTH_KEY_DATA), + MISSION_ACK(MISSION_ACK_DATA), RESOURCE_REQUEST(RESOURCE_REQUEST_DATA), - UAVIONIX_ADSB_OUT_DYNAMIC(UAVIONIX_ADSB_OUT_DYNAMIC_DATA), - TRAJECTORY_REPRESENTATION_BEZIER(TRAJECTORY_REPRESENTATION_BEZIER_DATA), - GPS_STATUS(GPS_STATUS_DATA), - MISSION_REQUEST_PARTIAL_LIST(MISSION_REQUEST_PARTIAL_LIST_DATA), - AUTOPILOT_VERSION(AUTOPILOT_VERSION_DATA), - TUNNEL(TUNNEL_DATA), + SAFETY_ALLOWED_AREA(SAFETY_ALLOWED_AREA_DATA), + CAMERA_SETTINGS(CAMERA_SETTINGS_DATA), + GIMBAL_MANAGER_SET_ATTITUDE(GIMBAL_MANAGER_SET_ATTITUDE_DATA), + GPS_RTK(GPS_RTK_DATA), + PROTOCOL_VERSION(PROTOCOL_VERSION_DATA), + TERRAIN_REQUEST(TERRAIN_REQUEST_DATA), + POSITION_TARGET_LOCAL_NED(POSITION_TARGET_LOCAL_NED_DATA), + WIND_COV(WIND_COV_DATA), + COLLISION(COLLISION_DATA), + CELLULAR_CONFIG(CELLULAR_CONFIG_DATA), + CHANGE_OPERATOR_CONTROL_ACK(CHANGE_OPERATOR_CONTROL_ACK_DATA), + CONTROL_SYSTEM_STATE(CONTROL_SYSTEM_STATE_DATA), + RC_CHANNELS_SCALED(RC_CHANNELS_SCALED_DATA), + CAN_FRAME(CAN_FRAME_DATA), + VICON_POSITION_ESTIMATE(VICON_POSITION_ESTIMATE_DATA), + GIMBAL_MANAGER_STATUS(GIMBAL_MANAGER_STATUS_DATA), + SET_MODE(SET_MODE_DATA), TERRAIN_DATA(TERRAIN_DATA_DATA), - UAVCAN_NODE_STATUS(UAVCAN_NODE_STATUS_DATA), - HEARTBEAT(HEARTBEAT_DATA), - REQUEST_EVENT(REQUEST_EVENT_DATA), - PARAM_EXT_SET(PARAM_EXT_SET_DATA), + CHANGE_OPERATOR_CONTROL(CHANGE_OPERATOR_CONTROL_DATA), + PARAM_MAP_RC(PARAM_MAP_RC_DATA), + VIBRATION(VIBRATION_DATA), VISION_POSITION_ESTIMATE(VISION_POSITION_ESTIMATE_DATA), - SUPPORTED_TUNES(SUPPORTED_TUNES_DATA), - PARAM_EXT_REQUEST_LIST(PARAM_EXT_REQUEST_LIST_DATA), - ISBD_LINK_STATUS(ISBD_LINK_STATUS_DATA), + GPS2_RTK(GPS2_RTK_DATA), PLAY_TUNE_V2(PLAY_TUNE_V2_DATA), - VIDEO_STREAM_STATUS(VIDEO_STREAM_STATUS_DATA), - RAW_IMU(RAW_IMU_DATA), - OPEN_DRONE_ID_LOCATION(OPEN_DRONE_ID_LOCATION_DATA), - AIS_VESSEL(AIS_VESSEL_DATA), - RAW_RPM(RAW_RPM_DATA), - MISSION_REQUEST(MISSION_REQUEST_DATA), - FLIGHT_INFORMATION(FLIGHT_INFORMATION_DATA), - VICON_POSITION_ESTIMATE(VICON_POSITION_ESTIMATE_DATA), - HIL_SENSOR(HIL_SENSOR_DATA), + CELLULAR_STATUS(CELLULAR_STATUS_DATA), + OPEN_DRONE_ID_AUTHENTICATION(OPEN_DRONE_ID_AUTHENTICATION_DATA), + RESPONSE_EVENT_ERROR(RESPONSE_EVENT_ERROR_DATA), + SCALED_PRESSURE2(SCALED_PRESSURE2_DATA), + NAMED_VALUE_FLOAT(NAMED_VALUE_FLOAT_DATA), + ATTITUDE_QUATERNION(ATTITUDE_QUATERNION_DATA), TIMESYNC(TIMESYNC_DATA), - OPEN_DRONE_ID_OPERATOR_ID(OPEN_DRONE_ID_OPERATOR_ID_DATA), - COMPONENT_METADATA(COMPONENT_METADATA_DATA), - SAFETY_ALLOWED_AREA(SAFETY_ALLOWED_AREA_DATA), - MANUAL_SETPOINT(MANUAL_SETPOINT_DATA), - CAMERA_TRACKING_IMAGE_STATUS(CAMERA_TRACKING_IMAGE_STATUS_DATA), - GLOBAL_POSITION_INT(GLOBAL_POSITION_INT_DATA), + AUTOPILOT_VERSION(AUTOPILOT_VERSION_DATA), + MISSION_REQUEST_PARTIAL_LIST(MISSION_REQUEST_PARTIAL_LIST_DATA), + VISION_SPEED_ESTIMATE(VISION_SPEED_ESTIMATE_DATA), + SCALED_PRESSURE(SCALED_PRESSURE_DATA), + PARAM_REQUEST_READ(PARAM_REQUEST_READ_DATA), + PARAM_EXT_ACK(PARAM_EXT_ACK_DATA), + WIFI_CONFIG_AP(WIFI_CONFIG_AP_DATA), EXTENDED_SYS_STATE(EXTENDED_SYS_STATE_DATA), - OPEN_DRONE_ID_BASIC_ID(OPEN_DRONE_ID_BASIC_ID_DATA), - SYS_STATUS(SYS_STATUS_DATA), + OPEN_DRONE_ID_OPERATOR_ID(OPEN_DRONE_ID_OPERATOR_ID_DATA), + GIMBAL_DEVICE_SET_ATTITUDE(GIMBAL_DEVICE_SET_ATTITUDE_DATA), + VIDEO_STREAM_STATUS(VIDEO_STREAM_STATUS_DATA), UAVCAN_NODE_INFO(UAVCAN_NODE_INFO_DATA), - VIBRATION(VIBRATION_DATA), - PARAM_REQUEST_READ(PARAM_REQUEST_READ_DATA), - POSITION_TARGET_GLOBAL_INT(POSITION_TARGET_GLOBAL_INT_DATA), + SAFETY_SET_ALLOWED_AREA(SAFETY_SET_ALLOWED_AREA_DATA), + GLOBAL_POSITION_INT_COV(GLOBAL_POSITION_INT_COV_DATA), + SYS_STATUS(SYS_STATUS_DATA), + ODOMETRY(ODOMETRY_DATA), + CAMERA_INFORMATION(CAMERA_INFORMATION_DATA), + HIL_STATE(HIL_STATE_DATA), + CAMERA_TRACKING_IMAGE_STATUS(CAMERA_TRACKING_IMAGE_STATUS_DATA), SET_ACTUATOR_CONTROL_TARGET(SET_ACTUATOR_CONTROL_TARGET_DATA), - SET_MODE(SET_MODE_DATA), - TRAJECTORY_REPRESENTATION_WAYPOINTS(TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA), - COMPONENT_INFORMATION(COMPONENT_INFORMATION_DATA), - PROTOCOL_VERSION(PROTOCOL_VERSION_DATA), - MESSAGE_INTERVAL(MESSAGE_INTERVAL_DATA), - OPEN_DRONE_ID_SYSTEM(OPEN_DRONE_ID_SYSTEM_DATA), - ORBIT_EXECUTION_STATUS(ORBIT_EXECUTION_STATUS_DATA), + TERRAIN_REPORT(TERRAIN_REPORT_DATA), + ACTUATOR_OUTPUT_STATUS(ACTUATOR_OUTPUT_STATUS_DATA), + PARAM_EXT_REQUEST_READ(PARAM_EXT_REQUEST_READ_DATA), + SUPPORTED_TUNES(SUPPORTED_TUNES_DATA), + CURRENT_EVENT_SEQUENCE(CURRENT_EVENT_SEQUENCE_DATA), + PARAM_SET(PARAM_SET_DATA), + BATTERY_STATUS(BATTERY_STATUS_DATA), + MAG_CAL_REPORT(MAG_CAL_REPORT_DATA), + STORAGE_INFORMATION(STORAGE_INFORMATION_DATA), SETUP_SIGNING(SETUP_SIGNING_DATA), - OBSTACLE_DISTANCE(OBSTACLE_DISTANCE_DATA), - CAMERA_FOV_STATUS(CAMERA_FOV_STATUS_DATA), - ATTITUDE_QUATERNION(ATTITUDE_QUATERNION_DATA), - GENERATOR_STATUS(GENERATOR_STATUS_DATA), - POSITION_TARGET_LOCAL_NED(POSITION_TARGET_LOCAL_NED_DATA), + MOUNT_ORIENTATION(MOUNT_ORIENTATION_DATA), + OPTICAL_FLOW_RAD(OPTICAL_FLOW_RAD_DATA), + RC_CHANNELS(RC_CHANNELS_DATA), + GPS_RTCM_DATA(GPS_RTCM_DATA_DATA), + ACTUATOR_CONTROL_TARGET(ACTUATOR_CONTROL_TARGET_DATA), + ORBIT_EXECUTION_STATUS(ORBIT_EXECUTION_STATUS_DATA), + GIMBAL_DEVICE_ATTITUDE_STATUS(GIMBAL_DEVICE_ATTITUDE_STATUS_DATA), + PING(PING_DATA), + ATTITUDE(ATTITUDE_DATA), + OPEN_DRONE_ID_ARM_STATUS(OPEN_DRONE_ID_ARM_STATUS_DATA), + LOGGING_ACK(LOGGING_ACK_DATA), + ATT_POS_MOCAP(ATT_POS_MOCAP_DATA), + LINK_NODE_STATUS(LINK_NODE_STATUS_DATA), + MEMORY_VECT(MEMORY_VECT_DATA), + GPS_STATUS(GPS_STATUS_DATA), + HIL_OPTICAL_FLOW(HIL_OPTICAL_FLOW_DATA), + SERIAL_CONTROL(SERIAL_CONTROL_DATA), + DATA_TRANSMISSION_HANDSHAKE(DATA_TRANSMISSION_HANDSHAKE_DATA), + COMMAND_ACK(COMMAND_ACK_DATA), + OPEN_DRONE_ID_SYSTEM(OPEN_DRONE_ID_SYSTEM_DATA), + PARAM_EXT_VALUE(PARAM_EXT_VALUE_DATA), + GIMBAL_MANAGER_INFORMATION(GIMBAL_MANAGER_INFORMATION_DATA), HYGROMETER_SENSOR(HYGROMETER_SENSOR_DATA), - TIME_ESTIMATE_TO_TARGET(TIME_ESTIMATE_TO_TARGET_DATA), - MISSION_CURRENT(MISSION_CURRENT_DATA), - SYSTEM_TIME(SYSTEM_TIME_DATA), + POSITION_TARGET_GLOBAL_INT(POSITION_TARGET_GLOBAL_INT_DATA), + AUTOPILOT_STATE_FOR_GIMBAL_DEVICE(AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA), + DATA_STREAM(DATA_STREAM_DATA), + POWER_STATUS(POWER_STATUS_DATA), + BUTTON_CHANGE(BUTTON_CHANGE_DATA), + STATUSTEXT(STATUSTEXT_DATA), HIGHRES_IMU(HIGHRES_IMU_DATA), - REQUEST_DATA_STREAM(REQUEST_DATA_STREAM_DATA), - GPS_RTK(GPS_RTK_DATA), - EFI_STATUS(EFI_STATUS_DATA), + ESC_INFO(ESC_INFO_DATA), + SCALED_IMU(SCALED_IMU_DATA), + MISSION_SET_CURRENT(MISSION_SET_CURRENT_DATA), + VIDEO_STREAM_INFORMATION(VIDEO_STREAM_INFORMATION_DATA), + MISSION_WRITE_PARTIAL_LIST(MISSION_WRITE_PARTIAL_LIST_DATA), + SET_ATTITUDE_TARGET(SET_ATTITUDE_TARGET_DATA), + WHEEL_DISTANCE(WHEEL_DISTANCE_DATA), + GLOBAL_VISION_POSITION_ESTIMATE(GLOBAL_VISION_POSITION_ESTIMATE_DATA), + WINCH_STATUS(WINCH_STATUS_DATA), + PLAY_TUNE(PLAY_TUNE_DATA), + TUNNEL(TUNNEL_DATA), MISSION_REQUEST_LIST(MISSION_REQUEST_LIST_DATA), - SMART_BATTERY_INFO(SMART_BATTERY_INFO_DATA), - CELLULAR_CONFIG(CELLULAR_CONFIG_DATA), - CHANGE_OPERATOR_CONTROL(CHANGE_OPERATOR_CONTROL_DATA), - UAVIONIX_ADSB_OUT_CFG(UAVIONIX_ADSB_OUT_CFG_DATA), - UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT(UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA), - PARAM_EXT_REQUEST_READ(PARAM_EXT_REQUEST_READ_DATA), - LANDING_TARGET(LANDING_TARGET_DATA), - EVENT(EVENT_DATA), + SET_POSITION_TARGET_GLOBAL_INT(SET_POSITION_TARGET_GLOBAL_INT_DATA), + FOLLOW_TARGET(FOLLOW_TARGET_DATA), + REQUEST_EVENT(REQUEST_EVENT_DATA), + NAMED_VALUE_INT(NAMED_VALUE_INT_DATA), VFR_HUD(VFR_HUD_DATA), - HIL_RC_INPUTS_RAW(HIL_RC_INPUTS_RAW_DATA), - SCALED_PRESSURE3(SCALED_PRESSURE3_DATA), - COMMAND_CANCEL(COMMAND_CANCEL_DATA), - GIMBAL_MANAGER_STATUS(GIMBAL_MANAGER_STATUS_DATA), - ATT_POS_MOCAP(ATT_POS_MOCAP_DATA), - HIL_CONTROLS(HIL_CONTROLS_DATA), - ATTITUDE_TARGET(ATTITUDE_TARGET_DATA), - PARAM_EXT_ACK(PARAM_EXT_ACK_DATA), - ACTUATOR_CONTROL_TARGET(ACTUATOR_CONTROL_TARGET_DATA), - GPS_GLOBAL_ORIGIN(GPS_GLOBAL_ORIGIN_DATA), - SCALED_PRESSURE(SCALED_PRESSURE_DATA), - POWER_STATUS(POWER_STATUS_DATA), - TERRAIN_REQUEST(TERRAIN_REQUEST_DATA), - OPEN_DRONE_ID_MESSAGE_PACK(OPEN_DRONE_ID_MESSAGE_PACK_DATA), - LOG_DATA(LOG_DATA_DATA), - GLOBAL_POSITION_INT_COV(GLOBAL_POSITION_INT_COV_DATA), - V2_EXTENSION(V2_EXTENSION_DATA), - LOG_REQUEST_END(LOG_REQUEST_END_DATA), - CAN_FRAME(CAN_FRAME_DATA), - ODOMETRY(ODOMETRY_DATA), - TERRAIN_REPORT(TERRAIN_REPORT_DATA), - GIMBAL_DEVICE_SET_ATTITUDE(GIMBAL_DEVICE_SET_ATTITUDE_DATA), - MISSION_SET_CURRENT(MISSION_SET_CURRENT_DATA), - DEBUG_FLOAT_ARRAY(DEBUG_FLOAT_ARRAY_DATA), - AUTH_KEY(AUTH_KEY_DATA), - GIMBAL_MANAGER_INFORMATION(GIMBAL_MANAGER_INFORMATION_DATA), + LOG_REQUEST_DATA(LOG_REQUEST_DATA_DATA), + GPS2_RAW(GPS2_RAW_DATA), + HIGH_LATENCY(HIGH_LATENCY_DATA), + RADIO_STATUS(RADIO_STATUS_DATA), RAW_PRESSURE(RAW_PRESSURE_DATA), - MISSION_ACK(MISSION_ACK_DATA), - PARAM_REQUEST_LIST(PARAM_REQUEST_LIST_DATA), - SCALED_IMU(SCALED_IMU_DATA), - LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET(LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA), - DEBUG(DEBUG_DATA), - NAMED_VALUE_INT(NAMED_VALUE_INT_DATA), - CONTROL_SYSTEM_STATE(CONTROL_SYSTEM_STATE_DATA), + ALTITUDE(ALTITUDE_DATA), + SET_POSITION_TARGET_LOCAL_NED(SET_POSITION_TARGET_LOCAL_NED_DATA), + GIMBAL_MANAGER_SET_MANUAL_CONTROL(GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA), + SCALED_IMU2(SCALED_IMU2_DATA), GPS_RAW_INT(GPS_RAW_INT_DATA), - COMMAND_ACK(COMMAND_ACK_DATA), - VIDEO_STREAM_INFORMATION(VIDEO_STREAM_INFORMATION_DATA), - PARAM_SET(PARAM_SET_DATA), - LOGGING_DATA_ACKED(LOGGING_DATA_ACKED_DATA), - NAMED_VALUE_FLOAT(NAMED_VALUE_FLOAT_DATA), - ADSB_VEHICLE(ADSB_VEHICLE_DATA), - COLLISION(COLLISION_DATA), - HIL_ACTUATOR_CONTROLS(HIL_ACTUATOR_CONTROLS_DATA), - LOG_REQUEST_LIST(LOG_REQUEST_LIST_DATA), - LINK_NODE_STATUS(LINK_NODE_STATUS_DATA), - BATTERY_STATUS(BATTERY_STATUS_DATA), - VISION_SPEED_ESTIMATE(VISION_SPEED_ESTIMATE_DATA), - RC_CHANNELS_RAW(RC_CHANNELS_RAW_DATA), + MISSION_CLEAR_ALL(MISSION_CLEAR_ALL_DATA), SCALED_IMU3(SCALED_IMU3_DATA), + OPEN_DRONE_ID_LOCATION(OPEN_DRONE_ID_LOCATION_DATA), + GPS_INJECT_DATA(GPS_INJECT_DATA_DATA), + FILE_TRANSFER_PROTOCOL(FILE_TRANSFER_PROTOCOL_DATA), + CAMERA_FOV_STATUS(CAMERA_FOV_STATUS_DATA), + RC_CHANNELS_OVERRIDE(RC_CHANNELS_OVERRIDE_DATA), + LANDING_TARGET(LANDING_TARGET_DATA), + ISBD_LINK_STATUS(ISBD_LINK_STATUS_DATA), GIMBAL_DEVICE_INFORMATION(GIMBAL_DEVICE_INFORMATION_DATA), + SET_HOME_POSITION(SET_HOME_POSITION_DATA), + COMPONENT_INFORMATION(COMPONENT_INFORMATION_DATA), + HOME_POSITION(HOME_POSITION_DATA), + CAN_FILTER_MODIFY(CAN_FILTER_MODIFY_DATA), ENCAPSULATED_DATA(ENCAPSULATED_DATA_DATA), - SET_ATTITUDE_TARGET(SET_ATTITUDE_TARGET_DATA), - CELLULAR_STATUS(CELLULAR_STATUS_DATA), - STATUSTEXT(STATUSTEXT_DATA), - GPS_INPUT(GPS_INPUT_DATA), -
}

Variants§

§

STORAGE_INFORMATION(STORAGE_INFORMATION_DATA)

§

MOUNT_ORIENTATION(MOUNT_ORIENTATION_DATA)

§

SCALED_PRESSURE2(SCALED_PRESSURE2_DATA)

§

HIL_STATE(HIL_STATE_DATA)

§

GPS_RTCM_DATA(GPS_RTCM_DATA_DATA)

§

PARAM_EXT_VALUE(PARAM_EXT_VALUE_DATA)

§

MISSION_REQUEST_INT(MISSION_REQUEST_INT_DATA)

§

ALTITUDE(ALTITUDE_DATA)

§

CAMERA_TRIGGER(CAMERA_TRIGGER_DATA)

§

LOCAL_POSITION_NED_COV(LOCAL_POSITION_NED_COV_DATA)

§

LOG_ENTRY(LOG_ENTRY_DATA)

§

AUTOPILOT_STATE_FOR_GIMBAL_DEVICE(AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA)

§

WIFI_CONFIG_AP(WIFI_CONFIG_AP_DATA)

§

ONBOARD_COMPUTER_STATUS(ONBOARD_COMPUTER_STATUS_DATA)

§

DATA_STREAM(DATA_STREAM_DATA)

§

SERVO_OUTPUT_RAW(SERVO_OUTPUT_RAW_DATA)

§

GIMBAL_DEVICE_ATTITUDE_STATUS(GIMBAL_DEVICE_ATTITUDE_STATUS_DATA)

§

ESC_STATUS(ESC_STATUS_DATA)

§

PLAY_TUNE(PLAY_TUNE_DATA)

§

FILE_TRANSFER_PROTOCOL(FILE_TRANSFER_PROTOCOL_DATA)

§

SET_HOME_POSITION(SET_HOME_POSITION_DATA)

§

ATTITUDE_QUATERNION_COV(ATTITUDE_QUATERNION_COV_DATA)

§

GPS2_RAW(GPS2_RAW_DATA)

§

SIM_STATE(SIM_STATE_DATA)

§

HOME_POSITION(HOME_POSITION_DATA)

§

MANUAL_CONTROL(MANUAL_CONTROL_DATA)

§

SET_POSITION_TARGET_GLOBAL_INT(SET_POSITION_TARGET_GLOBAL_INT_DATA)

§

GLOBAL_VISION_POSITION_ESTIMATE(GLOBAL_VISION_POSITION_ESTIMATE_DATA)

§

PING(PING_DATA)

§

WHEEL_DISTANCE(WHEEL_DISTANCE_DATA)

§

GIMBAL_MANAGER_SET_MANUAL_CONTROL(GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA)

§

RESPONSE_EVENT_ERROR(RESPONSE_EVENT_ERROR_DATA)

§

TERRAIN_CHECK(TERRAIN_CHECK_DATA)

§

OPEN_DRONE_ID_AUTHENTICATION(OPEN_DRONE_ID_AUTHENTICATION_DATA)

§

OPEN_DRONE_ID_ARM_STATUS(OPEN_DRONE_ID_ARM_STATUS_DATA)

§

OPEN_DRONE_ID_SYSTEM_UPDATE(OPEN_DRONE_ID_SYSTEM_UPDATE_DATA)

§

OPEN_DRONE_ID_SELF_ID(OPEN_DRONE_ID_SELF_ID_DATA)

§

BUTTON_CHANGE(BUTTON_CHANGE_DATA)

§

CAMERA_SETTINGS(CAMERA_SETTINGS_DATA)

§

ESC_INFO(ESC_INFO_DATA)

§

SERIAL_CONTROL(SERIAL_CONTROL_DATA)

§

CHANGE_OPERATOR_CONTROL_ACK(CHANGE_OPERATOR_CONTROL_ACK_DATA)

§

ESTIMATOR_STATUS(ESTIMATOR_STATUS_DATA)

§

MISSION_ITEM_REACHED(MISSION_ITEM_REACHED_DATA)

§

SCALED_IMU2(SCALED_IMU2_DATA)

§

OPTICAL_FLOW_RAD(OPTICAL_FLOW_RAD_DATA)

§

LOG_REQUEST_DATA(LOG_REQUEST_DATA_DATA)

§

FOLLOW_TARGET(FOLLOW_TARGET_DATA)

§

GIMBAL_MANAGER_SET_PITCHYAW(GIMBAL_MANAGER_SET_PITCHYAW_DATA)

§

HIGH_LATENCY(HIGH_LATENCY_DATA)

§

PARAM_MAP_RC(PARAM_MAP_RC_DATA)

§

MISSION_COUNT(MISSION_COUNT_DATA)

§

PARAM_VALUE(PARAM_VALUE_DATA)

§

LOGGING_ACK(LOGGING_ACK_DATA)

§

HIL_OPTICAL_FLOW(HIL_OPTICAL_FLOW_DATA)

§

HIGH_LATENCY2(HIGH_LATENCY2_DATA)

§

CURRENT_EVENT_SEQUENCE(CURRENT_EVENT_SEQUENCE_DATA)

§

CAMERA_TRACKING_GEO_STATUS(CAMERA_TRACKING_GEO_STATUS_DATA)

§

RC_CHANNELS_SCALED(RC_CHANNELS_SCALED_DATA)

§

GPS2_RTK(GPS2_RTK_DATA)

§

RC_CHANNELS(RC_CHANNELS_DATA)

§

MISSION_WRITE_PARTIAL_LIST(MISSION_WRITE_PARTIAL_LIST_DATA)

§

CAMERA_CAPTURE_STATUS(CAMERA_CAPTURE_STATUS_DATA)

§

RC_CHANNELS_OVERRIDE(RC_CHANNELS_OVERRIDE_DATA)

§

CAMERA_IMAGE_CAPTURED(CAMERA_IMAGE_CAPTURED_DATA)

§

MISSION_ITEM(MISSION_ITEM_DATA)

§

MAG_CAL_REPORT(MAG_CAL_REPORT_DATA)

§

COMMAND_INT(COMMAND_INT_DATA)

§

CANFD_FRAME(CANFD_FRAME_DATA)

§

SET_GPS_GLOBAL_ORIGIN(SET_GPS_GLOBAL_ORIGIN_DATA)

§

HIL_GPS(HIL_GPS_DATA)

§

WINCH_STATUS(WINCH_STATUS_DATA)

§

DEBUG_VECT(DEBUG_VECT_DATA)

§

LOGGING_DATA(LOGGING_DATA_DATA)

§

NAV_CONTROLLER_OUTPUT(NAV_CONTROLLER_OUTPUT_DATA)

§

MISSION_ITEM_INT(MISSION_ITEM_INT_DATA)

§

ACTUATOR_OUTPUT_STATUS(ACTUATOR_OUTPUT_STATUS_DATA)

§

LOG_ERASE(LOG_ERASE_DATA)

§

COMMAND_LONG(COMMAND_LONG_DATA)

§

CAMERA_INFORMATION(CAMERA_INFORMATION_DATA)

§

DISTANCE_SENSOR(DISTANCE_SENSOR_DATA)

§

UTM_GLOBAL_POSITION(UTM_GLOBAL_POSITION_DATA)

§

ATTITUDE(ATTITUDE_DATA)

§

WIND_COV(WIND_COV_DATA)

§

MEMORY_VECT(MEMORY_VECT_DATA)

§

GIMBAL_MANAGER_SET_ATTITUDE(GIMBAL_MANAGER_SET_ATTITUDE_DATA)

§

MISSION_CLEAR_ALL(MISSION_CLEAR_ALL_DATA)

§

DATA_TRANSMISSION_HANDSHAKE(DATA_TRANSMISSION_HANDSHAKE_DATA)

§

CAN_FILTER_MODIFY(CAN_FILTER_MODIFY_DATA)

§

LOCAL_POSITION_NED(LOCAL_POSITION_NED_DATA)

§

GPS_INJECT_DATA(GPS_INJECT_DATA_DATA)

§

HIL_STATE_QUATERNION(HIL_STATE_QUATERNION_DATA)

§

SAFETY_SET_ALLOWED_AREA(SAFETY_SET_ALLOWED_AREA_DATA)

§

FENCE_STATUS(FENCE_STATUS_DATA)

§

OPTICAL_FLOW(OPTICAL_FLOW_DATA)

§

RADIO_STATUS(RADIO_STATUS_DATA)

§

SET_POSITION_TARGET_LOCAL_NED(SET_POSITION_TARGET_LOCAL_NED_DATA)

§

RESOURCE_REQUEST(RESOURCE_REQUEST_DATA)

§

UAVIONIX_ADSB_OUT_DYNAMIC(UAVIONIX_ADSB_OUT_DYNAMIC_DATA)

§

TRAJECTORY_REPRESENTATION_BEZIER(TRAJECTORY_REPRESENTATION_BEZIER_DATA)

§

GPS_STATUS(GPS_STATUS_DATA)

§

MISSION_REQUEST_PARTIAL_LIST(MISSION_REQUEST_PARTIAL_LIST_DATA)

§

AUTOPILOT_VERSION(AUTOPILOT_VERSION_DATA)

§

TUNNEL(TUNNEL_DATA)

§

TERRAIN_DATA(TERRAIN_DATA_DATA)

§

UAVCAN_NODE_STATUS(UAVCAN_NODE_STATUS_DATA)

§

HEARTBEAT(HEARTBEAT_DATA)

§

REQUEST_EVENT(REQUEST_EVENT_DATA)

§

PARAM_EXT_SET(PARAM_EXT_SET_DATA)

§

VISION_POSITION_ESTIMATE(VISION_POSITION_ESTIMATE_DATA)

§

SUPPORTED_TUNES(SUPPORTED_TUNES_DATA)

§

PARAM_EXT_REQUEST_LIST(PARAM_EXT_REQUEST_LIST_DATA)

§

PLAY_TUNE_V2(PLAY_TUNE_V2_DATA)

§

VIDEO_STREAM_STATUS(VIDEO_STREAM_STATUS_DATA)

§

RAW_IMU(RAW_IMU_DATA)

§

OPEN_DRONE_ID_LOCATION(OPEN_DRONE_ID_LOCATION_DATA)

§

AIS_VESSEL(AIS_VESSEL_DATA)

§

RAW_RPM(RAW_RPM_DATA)

§

MISSION_REQUEST(MISSION_REQUEST_DATA)

§

FLIGHT_INFORMATION(FLIGHT_INFORMATION_DATA)

§

VICON_POSITION_ESTIMATE(VICON_POSITION_ESTIMATE_DATA)

§

HIL_SENSOR(HIL_SENSOR_DATA)

§

TIMESYNC(TIMESYNC_DATA)

§

OPEN_DRONE_ID_OPERATOR_ID(OPEN_DRONE_ID_OPERATOR_ID_DATA)

§

COMPONENT_METADATA(COMPONENT_METADATA_DATA)

§

SAFETY_ALLOWED_AREA(SAFETY_ALLOWED_AREA_DATA)

§

MANUAL_SETPOINT(MANUAL_SETPOINT_DATA)

§

CAMERA_TRACKING_IMAGE_STATUS(CAMERA_TRACKING_IMAGE_STATUS_DATA)

§

GLOBAL_POSITION_INT(GLOBAL_POSITION_INT_DATA)

§

EXTENDED_SYS_STATE(EXTENDED_SYS_STATE_DATA)

§

OPEN_DRONE_ID_BASIC_ID(OPEN_DRONE_ID_BASIC_ID_DATA)

§

SYS_STATUS(SYS_STATUS_DATA)

§

UAVCAN_NODE_INFO(UAVCAN_NODE_INFO_DATA)

§

VIBRATION(VIBRATION_DATA)

§

PARAM_REQUEST_READ(PARAM_REQUEST_READ_DATA)

§

POSITION_TARGET_GLOBAL_INT(POSITION_TARGET_GLOBAL_INT_DATA)

§

SET_ACTUATOR_CONTROL_TARGET(SET_ACTUATOR_CONTROL_TARGET_DATA)

§

SET_MODE(SET_MODE_DATA)

§

TRAJECTORY_REPRESENTATION_WAYPOINTS(TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA)

§

COMPONENT_INFORMATION(COMPONENT_INFORMATION_DATA)

§

PROTOCOL_VERSION(PROTOCOL_VERSION_DATA)

§

MESSAGE_INTERVAL(MESSAGE_INTERVAL_DATA)

§

OPEN_DRONE_ID_SYSTEM(OPEN_DRONE_ID_SYSTEM_DATA)

§

ORBIT_EXECUTION_STATUS(ORBIT_EXECUTION_STATUS_DATA)

§

SETUP_SIGNING(SETUP_SIGNING_DATA)

§

OBSTACLE_DISTANCE(OBSTACLE_DISTANCE_DATA)

§

CAMERA_FOV_STATUS(CAMERA_FOV_STATUS_DATA)

§

ATTITUDE_QUATERNION(ATTITUDE_QUATERNION_DATA)

§

GENERATOR_STATUS(GENERATOR_STATUS_DATA)

§

POSITION_TARGET_LOCAL_NED(POSITION_TARGET_LOCAL_NED_DATA)

§

HYGROMETER_SENSOR(HYGROMETER_SENSOR_DATA)

§

TIME_ESTIMATE_TO_TARGET(TIME_ESTIMATE_TO_TARGET_DATA)

§

MISSION_CURRENT(MISSION_CURRENT_DATA)

§

SYSTEM_TIME(SYSTEM_TIME_DATA)

§

HIGHRES_IMU(HIGHRES_IMU_DATA)

§

REQUEST_DATA_STREAM(REQUEST_DATA_STREAM_DATA)

§

GPS_RTK(GPS_RTK_DATA)

§

EFI_STATUS(EFI_STATUS_DATA)

§

MISSION_REQUEST_LIST(MISSION_REQUEST_LIST_DATA)

§

SMART_BATTERY_INFO(SMART_BATTERY_INFO_DATA)

§

CELLULAR_CONFIG(CELLULAR_CONFIG_DATA)

§

CHANGE_OPERATOR_CONTROL(CHANGE_OPERATOR_CONTROL_DATA)

§

UAVIONIX_ADSB_OUT_CFG(UAVIONIX_ADSB_OUT_CFG_DATA)

§

UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT(UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA)

§

PARAM_EXT_REQUEST_READ(PARAM_EXT_REQUEST_READ_DATA)

§

LANDING_TARGET(LANDING_TARGET_DATA)

§

EVENT(EVENT_DATA)

§

VFR_HUD(VFR_HUD_DATA)

§

HIL_RC_INPUTS_RAW(HIL_RC_INPUTS_RAW_DATA)

§

SCALED_PRESSURE3(SCALED_PRESSURE3_DATA)

§

COMMAND_CANCEL(COMMAND_CANCEL_DATA)

§

GIMBAL_MANAGER_STATUS(GIMBAL_MANAGER_STATUS_DATA)

§

ATT_POS_MOCAP(ATT_POS_MOCAP_DATA)

§

HIL_CONTROLS(HIL_CONTROLS_DATA)

§

ATTITUDE_TARGET(ATTITUDE_TARGET_DATA)

§

PARAM_EXT_ACK(PARAM_EXT_ACK_DATA)

§

ACTUATOR_CONTROL_TARGET(ACTUATOR_CONTROL_TARGET_DATA)

§

GPS_GLOBAL_ORIGIN(GPS_GLOBAL_ORIGIN_DATA)

§

SCALED_PRESSURE(SCALED_PRESSURE_DATA)

§

POWER_STATUS(POWER_STATUS_DATA)

§

TERRAIN_REQUEST(TERRAIN_REQUEST_DATA)

§

OPEN_DRONE_ID_MESSAGE_PACK(OPEN_DRONE_ID_MESSAGE_PACK_DATA)

§

LOG_DATA(LOG_DATA_DATA)

§

GLOBAL_POSITION_INT_COV(GLOBAL_POSITION_INT_COV_DATA)

§

V2_EXTENSION(V2_EXTENSION_DATA)

§

LOG_REQUEST_END(LOG_REQUEST_END_DATA)

§

CAN_FRAME(CAN_FRAME_DATA)

§

ODOMETRY(ODOMETRY_DATA)

§

TERRAIN_REPORT(TERRAIN_REPORT_DATA)

§

GIMBAL_DEVICE_SET_ATTITUDE(GIMBAL_DEVICE_SET_ATTITUDE_DATA)

§

MISSION_SET_CURRENT(MISSION_SET_CURRENT_DATA)

§

DEBUG_FLOAT_ARRAY(DEBUG_FLOAT_ARRAY_DATA)

§

AUTH_KEY(AUTH_KEY_DATA)

§

GIMBAL_MANAGER_INFORMATION(GIMBAL_MANAGER_INFORMATION_DATA)

§

RAW_PRESSURE(RAW_PRESSURE_DATA)

§

MISSION_ACK(MISSION_ACK_DATA)

§

PARAM_REQUEST_LIST(PARAM_REQUEST_LIST_DATA)

§

SCALED_IMU(SCALED_IMU_DATA)

§

LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET(LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA)

§

DEBUG(DEBUG_DATA)

§

NAMED_VALUE_INT(NAMED_VALUE_INT_DATA)

§

CONTROL_SYSTEM_STATE(CONTROL_SYSTEM_STATE_DATA)

§

GPS_RAW_INT(GPS_RAW_INT_DATA)

§

COMMAND_ACK(COMMAND_ACK_DATA)

§

VIDEO_STREAM_INFORMATION(VIDEO_STREAM_INFORMATION_DATA)

§

PARAM_SET(PARAM_SET_DATA)

§

LOGGING_DATA_ACKED(LOGGING_DATA_ACKED_DATA)

§

NAMED_VALUE_FLOAT(NAMED_VALUE_FLOAT_DATA)

§

ADSB_VEHICLE(ADSB_VEHICLE_DATA)

§

COLLISION(COLLISION_DATA)

§

HIL_ACTUATOR_CONTROLS(HIL_ACTUATOR_CONTROLS_DATA)

§

LOG_REQUEST_LIST(LOG_REQUEST_LIST_DATA)

§

BATTERY_STATUS(BATTERY_STATUS_DATA)

§

VISION_SPEED_ESTIMATE(VISION_SPEED_ESTIMATE_DATA)

§

RC_CHANNELS_RAW(RC_CHANNELS_RAW_DATA)

§

SCALED_IMU3(SCALED_IMU3_DATA)

§

GIMBAL_DEVICE_INFORMATION(GIMBAL_DEVICE_INFORMATION_DATA)

§

ENCAPSULATED_DATA(ENCAPSULATED_DATA_DATA)

§

SET_ATTITUDE_TARGET(SET_ATTITUDE_TARGET_DATA)

§

CELLULAR_STATUS(CELLULAR_STATUS_DATA)

§

STATUSTEXT(STATUSTEXT_DATA)

§

GPS_INPUT(GPS_INPUT_DATA)

Trait Implementations§

source§

impl Clone for MavMessage

source§

fn clone(&self) -> MavMessage

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for MavMessage

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<'de> Deserialize<'de> for MavMessage

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where + GENERATOR_STATUS(GENERATOR_STATUS_DATA), + MESSAGE_INTERVAL(MESSAGE_INTERVAL_DATA), + OPEN_DRONE_ID_MESSAGE_PACK(OPEN_DRONE_ID_MESSAGE_PACK_DATA), + LOCAL_POSITION_NED_COV(LOCAL_POSITION_NED_COV_DATA), + COMPONENT_METADATA(COMPONENT_METADATA_DATA), + SIM_STATE(SIM_STATE_DATA), + SERVO_OUTPUT_RAW(SERVO_OUTPUT_RAW_DATA), + OPEN_DRONE_ID_BASIC_ID(OPEN_DRONE_ID_BASIC_ID_DATA), + LOG_REQUEST_LIST(LOG_REQUEST_LIST_DATA), + OPEN_DRONE_ID_SYSTEM_UPDATE(OPEN_DRONE_ID_SYSTEM_UPDATE_DATA), +

}

Variants§

§

UAVIONIX_ADSB_OUT_CFG(UAVIONIX_ADSB_OUT_CFG_DATA)

§

ADSB_VEHICLE(ADSB_VEHICLE_DATA)

§

MISSION_ITEM(MISSION_ITEM_DATA)

§

CAMERA_TRIGGER(CAMERA_TRIGGER_DATA)

§

ONBOARD_COMPUTER_STATUS(ONBOARD_COMPUTER_STATUS_DATA)

§

ATTITUDE_TARGET(ATTITUDE_TARGET_DATA)

§

HIGH_LATENCY2(HIGH_LATENCY2_DATA)

§

DEBUG_VECT(DEBUG_VECT_DATA)

§

LOG_REQUEST_END(LOG_REQUEST_END_DATA)

§

NAV_CONTROLLER_OUTPUT(NAV_CONTROLLER_OUTPUT_DATA)

§

UTM_GLOBAL_POSITION(UTM_GLOBAL_POSITION_DATA)

§

GPS_INPUT(GPS_INPUT_DATA)

§

UAVCAN_NODE_STATUS(UAVCAN_NODE_STATUS_DATA)

§

LOGGING_DATA_ACKED(LOGGING_DATA_ACKED_DATA)

§

RAW_RPM(RAW_RPM_DATA)

§

MISSION_REQUEST(MISSION_REQUEST_DATA)

§

HIL_ACTUATOR_CONTROLS(HIL_ACTUATOR_CONTROLS_DATA)

§

PARAM_REQUEST_LIST(PARAM_REQUEST_LIST_DATA)

§

MISSION_ITEM_INT(MISSION_ITEM_INT_DATA)

§

LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET(LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA)

§

EFI_STATUS(EFI_STATUS_DATA)

§

MISSION_ITEM_REACHED(MISSION_ITEM_REACHED_DATA)

§

REQUEST_DATA_STREAM(REQUEST_DATA_STREAM_DATA)

§

UAVIONIX_ADSB_OUT_DYNAMIC(UAVIONIX_ADSB_OUT_DYNAMIC_DATA)

§

CAMERA_CAPTURE_STATUS(CAMERA_CAPTURE_STATUS_DATA)

§

MANUAL_CONTROL(MANUAL_CONTROL_DATA)

§

GIMBAL_MANAGER_SET_PITCHYAW(GIMBAL_MANAGER_SET_PITCHYAW_DATA)

§

GPS_GLOBAL_ORIGIN(GPS_GLOBAL_ORIGIN_DATA)

§

HIL_CONTROLS(HIL_CONTROLS_DATA)

§

OPTICAL_FLOW(OPTICAL_FLOW_DATA)

§

OPEN_DRONE_ID_SELF_ID(OPEN_DRONE_ID_SELF_ID_DATA)

§

TIME_ESTIMATE_TO_TARGET(TIME_ESTIMATE_TO_TARGET_DATA)

§

PARAM_VALUE(PARAM_VALUE_DATA)

§

DEBUG_FLOAT_ARRAY(DEBUG_FLOAT_ARRAY_DATA)

§

AIS_VESSEL(AIS_VESSEL_DATA)

§

ATTITUDE_QUATERNION_COV(ATTITUDE_QUATERNION_COV_DATA)

§

GLOBAL_POSITION_INT(GLOBAL_POSITION_INT_DATA)

§

LOG_ENTRY(LOG_ENTRY_DATA)

§

OBSTACLE_DISTANCE(OBSTACLE_DISTANCE_DATA)

§

MISSION_COUNT(MISSION_COUNT_DATA)

§

FENCE_STATUS(FENCE_STATUS_DATA)

§

EVENT(EVENT_DATA)

§

HIL_SENSOR(HIL_SENSOR_DATA)

§

RAW_IMU(RAW_IMU_DATA)

§

V2_EXTENSION(V2_EXTENSION_DATA)

§

SMART_BATTERY_INFO(SMART_BATTERY_INFO_DATA)

§

PARAM_EXT_SET(PARAM_EXT_SET_DATA)

§

TERRAIN_CHECK(TERRAIN_CHECK_DATA)

§

TRAJECTORY_REPRESENTATION_WAYPOINTS(TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA)

§

CAMERA_IMAGE_CAPTURED(CAMERA_IMAGE_CAPTURED_DATA)

§

HEARTBEAT(HEARTBEAT_DATA)

§

LOG_ERASE(LOG_ERASE_DATA)

§

MANUAL_SETPOINT(MANUAL_SETPOINT_DATA)

§

SYSTEM_TIME(SYSTEM_TIME_DATA)

§

HIL_GPS(HIL_GPS_DATA)

§

ESC_STATUS(ESC_STATUS_DATA)

§

CAMERA_TRACKING_GEO_STATUS(CAMERA_TRACKING_GEO_STATUS_DATA)

§

COMMAND_INT(COMMAND_INT_DATA)

§

HIL_RC_INPUTS_RAW(HIL_RC_INPUTS_RAW_DATA)

§

COMMAND_CANCEL(COMMAND_CANCEL_DATA)

§

TRAJECTORY_REPRESENTATION_BEZIER(TRAJECTORY_REPRESENTATION_BEZIER_DATA)

§

MISSION_CURRENT(MISSION_CURRENT_DATA)

§

UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT(UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA)

§

FLIGHT_INFORMATION(FLIGHT_INFORMATION_DATA)

§

SCALED_PRESSURE3(SCALED_PRESSURE3_DATA)

§

LOGGING_DATA(LOGGING_DATA_DATA)

§

ESTIMATOR_STATUS(ESTIMATOR_STATUS_DATA)

§

SET_GPS_GLOBAL_ORIGIN(SET_GPS_GLOBAL_ORIGIN_DATA)

§

DEBUG(DEBUG_DATA)

§

LOG_DATA(LOG_DATA_DATA)

§

LOCAL_POSITION_NED(LOCAL_POSITION_NED_DATA)

§

CANFD_FRAME(CANFD_FRAME_DATA)

§

MISSION_REQUEST_INT(MISSION_REQUEST_INT_DATA)

§

COMMAND_LONG(COMMAND_LONG_DATA)

§

HIL_STATE_QUATERNION(HIL_STATE_QUATERNION_DATA)

§

RC_CHANNELS_RAW(RC_CHANNELS_RAW_DATA)

§

DISTANCE_SENSOR(DISTANCE_SENSOR_DATA)

§

PARAM_EXT_REQUEST_LIST(PARAM_EXT_REQUEST_LIST_DATA)

§

AUTH_KEY(AUTH_KEY_DATA)

§

MISSION_ACK(MISSION_ACK_DATA)

§

RESOURCE_REQUEST(RESOURCE_REQUEST_DATA)

§

SAFETY_ALLOWED_AREA(SAFETY_ALLOWED_AREA_DATA)

§

CAMERA_SETTINGS(CAMERA_SETTINGS_DATA)

§

GIMBAL_MANAGER_SET_ATTITUDE(GIMBAL_MANAGER_SET_ATTITUDE_DATA)

§

GPS_RTK(GPS_RTK_DATA)

§

PROTOCOL_VERSION(PROTOCOL_VERSION_DATA)

§

TERRAIN_REQUEST(TERRAIN_REQUEST_DATA)

§

POSITION_TARGET_LOCAL_NED(POSITION_TARGET_LOCAL_NED_DATA)

§

WIND_COV(WIND_COV_DATA)

§

COLLISION(COLLISION_DATA)

§

CELLULAR_CONFIG(CELLULAR_CONFIG_DATA)

§

CHANGE_OPERATOR_CONTROL_ACK(CHANGE_OPERATOR_CONTROL_ACK_DATA)

§

CONTROL_SYSTEM_STATE(CONTROL_SYSTEM_STATE_DATA)

§

RC_CHANNELS_SCALED(RC_CHANNELS_SCALED_DATA)

§

CAN_FRAME(CAN_FRAME_DATA)

§

VICON_POSITION_ESTIMATE(VICON_POSITION_ESTIMATE_DATA)

§

GIMBAL_MANAGER_STATUS(GIMBAL_MANAGER_STATUS_DATA)

§

SET_MODE(SET_MODE_DATA)

§

TERRAIN_DATA(TERRAIN_DATA_DATA)

§

CHANGE_OPERATOR_CONTROL(CHANGE_OPERATOR_CONTROL_DATA)

§

PARAM_MAP_RC(PARAM_MAP_RC_DATA)

§

VIBRATION(VIBRATION_DATA)

§

VISION_POSITION_ESTIMATE(VISION_POSITION_ESTIMATE_DATA)

§

GPS2_RTK(GPS2_RTK_DATA)

§

PLAY_TUNE_V2(PLAY_TUNE_V2_DATA)

§

CELLULAR_STATUS(CELLULAR_STATUS_DATA)

§

OPEN_DRONE_ID_AUTHENTICATION(OPEN_DRONE_ID_AUTHENTICATION_DATA)

§

RESPONSE_EVENT_ERROR(RESPONSE_EVENT_ERROR_DATA)

§

SCALED_PRESSURE2(SCALED_PRESSURE2_DATA)

§

NAMED_VALUE_FLOAT(NAMED_VALUE_FLOAT_DATA)

§

ATTITUDE_QUATERNION(ATTITUDE_QUATERNION_DATA)

§

TIMESYNC(TIMESYNC_DATA)

§

AUTOPILOT_VERSION(AUTOPILOT_VERSION_DATA)

§

MISSION_REQUEST_PARTIAL_LIST(MISSION_REQUEST_PARTIAL_LIST_DATA)

§

VISION_SPEED_ESTIMATE(VISION_SPEED_ESTIMATE_DATA)

§

SCALED_PRESSURE(SCALED_PRESSURE_DATA)

§

PARAM_REQUEST_READ(PARAM_REQUEST_READ_DATA)

§

PARAM_EXT_ACK(PARAM_EXT_ACK_DATA)

§

WIFI_CONFIG_AP(WIFI_CONFIG_AP_DATA)

§

EXTENDED_SYS_STATE(EXTENDED_SYS_STATE_DATA)

§

OPEN_DRONE_ID_OPERATOR_ID(OPEN_DRONE_ID_OPERATOR_ID_DATA)

§

GIMBAL_DEVICE_SET_ATTITUDE(GIMBAL_DEVICE_SET_ATTITUDE_DATA)

§

VIDEO_STREAM_STATUS(VIDEO_STREAM_STATUS_DATA)

§

UAVCAN_NODE_INFO(UAVCAN_NODE_INFO_DATA)

§

SAFETY_SET_ALLOWED_AREA(SAFETY_SET_ALLOWED_AREA_DATA)

§

GLOBAL_POSITION_INT_COV(GLOBAL_POSITION_INT_COV_DATA)

§

SYS_STATUS(SYS_STATUS_DATA)

§

ODOMETRY(ODOMETRY_DATA)

§

CAMERA_INFORMATION(CAMERA_INFORMATION_DATA)

§

HIL_STATE(HIL_STATE_DATA)

§

CAMERA_TRACKING_IMAGE_STATUS(CAMERA_TRACKING_IMAGE_STATUS_DATA)

§

SET_ACTUATOR_CONTROL_TARGET(SET_ACTUATOR_CONTROL_TARGET_DATA)

§

TERRAIN_REPORT(TERRAIN_REPORT_DATA)

§

ACTUATOR_OUTPUT_STATUS(ACTUATOR_OUTPUT_STATUS_DATA)

§

PARAM_EXT_REQUEST_READ(PARAM_EXT_REQUEST_READ_DATA)

§

SUPPORTED_TUNES(SUPPORTED_TUNES_DATA)

§

CURRENT_EVENT_SEQUENCE(CURRENT_EVENT_SEQUENCE_DATA)

§

PARAM_SET(PARAM_SET_DATA)

§

BATTERY_STATUS(BATTERY_STATUS_DATA)

§

MAG_CAL_REPORT(MAG_CAL_REPORT_DATA)

§

STORAGE_INFORMATION(STORAGE_INFORMATION_DATA)

§

SETUP_SIGNING(SETUP_SIGNING_DATA)

§

MOUNT_ORIENTATION(MOUNT_ORIENTATION_DATA)

§

OPTICAL_FLOW_RAD(OPTICAL_FLOW_RAD_DATA)

§

RC_CHANNELS(RC_CHANNELS_DATA)

§

GPS_RTCM_DATA(GPS_RTCM_DATA_DATA)

§

ACTUATOR_CONTROL_TARGET(ACTUATOR_CONTROL_TARGET_DATA)

§

ORBIT_EXECUTION_STATUS(ORBIT_EXECUTION_STATUS_DATA)

§

GIMBAL_DEVICE_ATTITUDE_STATUS(GIMBAL_DEVICE_ATTITUDE_STATUS_DATA)

§

PING(PING_DATA)

§

ATTITUDE(ATTITUDE_DATA)

§

OPEN_DRONE_ID_ARM_STATUS(OPEN_DRONE_ID_ARM_STATUS_DATA)

§

LOGGING_ACK(LOGGING_ACK_DATA)

§

ATT_POS_MOCAP(ATT_POS_MOCAP_DATA)

§

MEMORY_VECT(MEMORY_VECT_DATA)

§

GPS_STATUS(GPS_STATUS_DATA)

§

HIL_OPTICAL_FLOW(HIL_OPTICAL_FLOW_DATA)

§

SERIAL_CONTROL(SERIAL_CONTROL_DATA)

§

DATA_TRANSMISSION_HANDSHAKE(DATA_TRANSMISSION_HANDSHAKE_DATA)

§

COMMAND_ACK(COMMAND_ACK_DATA)

§

OPEN_DRONE_ID_SYSTEM(OPEN_DRONE_ID_SYSTEM_DATA)

§

PARAM_EXT_VALUE(PARAM_EXT_VALUE_DATA)

§

GIMBAL_MANAGER_INFORMATION(GIMBAL_MANAGER_INFORMATION_DATA)

§

HYGROMETER_SENSOR(HYGROMETER_SENSOR_DATA)

§

POSITION_TARGET_GLOBAL_INT(POSITION_TARGET_GLOBAL_INT_DATA)

§

AUTOPILOT_STATE_FOR_GIMBAL_DEVICE(AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA)

§

DATA_STREAM(DATA_STREAM_DATA)

§

POWER_STATUS(POWER_STATUS_DATA)

§

BUTTON_CHANGE(BUTTON_CHANGE_DATA)

§

STATUSTEXT(STATUSTEXT_DATA)

§

HIGHRES_IMU(HIGHRES_IMU_DATA)

§

ESC_INFO(ESC_INFO_DATA)

§

SCALED_IMU(SCALED_IMU_DATA)

§

MISSION_SET_CURRENT(MISSION_SET_CURRENT_DATA)

§

VIDEO_STREAM_INFORMATION(VIDEO_STREAM_INFORMATION_DATA)

§

MISSION_WRITE_PARTIAL_LIST(MISSION_WRITE_PARTIAL_LIST_DATA)

§

SET_ATTITUDE_TARGET(SET_ATTITUDE_TARGET_DATA)

§

WHEEL_DISTANCE(WHEEL_DISTANCE_DATA)

§

GLOBAL_VISION_POSITION_ESTIMATE(GLOBAL_VISION_POSITION_ESTIMATE_DATA)

§

WINCH_STATUS(WINCH_STATUS_DATA)

§

PLAY_TUNE(PLAY_TUNE_DATA)

§

TUNNEL(TUNNEL_DATA)

§

MISSION_REQUEST_LIST(MISSION_REQUEST_LIST_DATA)

§

SET_POSITION_TARGET_GLOBAL_INT(SET_POSITION_TARGET_GLOBAL_INT_DATA)

§

FOLLOW_TARGET(FOLLOW_TARGET_DATA)

§

REQUEST_EVENT(REQUEST_EVENT_DATA)

§

NAMED_VALUE_INT(NAMED_VALUE_INT_DATA)

§

VFR_HUD(VFR_HUD_DATA)

§

LOG_REQUEST_DATA(LOG_REQUEST_DATA_DATA)

§

GPS2_RAW(GPS2_RAW_DATA)

§

HIGH_LATENCY(HIGH_LATENCY_DATA)

§

RADIO_STATUS(RADIO_STATUS_DATA)

§

RAW_PRESSURE(RAW_PRESSURE_DATA)

§

ALTITUDE(ALTITUDE_DATA)

§

SET_POSITION_TARGET_LOCAL_NED(SET_POSITION_TARGET_LOCAL_NED_DATA)

§

GIMBAL_MANAGER_SET_MANUAL_CONTROL(GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA)

§

SCALED_IMU2(SCALED_IMU2_DATA)

§

GPS_RAW_INT(GPS_RAW_INT_DATA)

§

MISSION_CLEAR_ALL(MISSION_CLEAR_ALL_DATA)

§

SCALED_IMU3(SCALED_IMU3_DATA)

§

OPEN_DRONE_ID_LOCATION(OPEN_DRONE_ID_LOCATION_DATA)

§

GPS_INJECT_DATA(GPS_INJECT_DATA_DATA)

§

FILE_TRANSFER_PROTOCOL(FILE_TRANSFER_PROTOCOL_DATA)

§

CAMERA_FOV_STATUS(CAMERA_FOV_STATUS_DATA)

§

RC_CHANNELS_OVERRIDE(RC_CHANNELS_OVERRIDE_DATA)

§

LANDING_TARGET(LANDING_TARGET_DATA)

§

GIMBAL_DEVICE_INFORMATION(GIMBAL_DEVICE_INFORMATION_DATA)

§

SET_HOME_POSITION(SET_HOME_POSITION_DATA)

§

COMPONENT_INFORMATION(COMPONENT_INFORMATION_DATA)

§

HOME_POSITION(HOME_POSITION_DATA)

§

CAN_FILTER_MODIFY(CAN_FILTER_MODIFY_DATA)

§

ENCAPSULATED_DATA(ENCAPSULATED_DATA_DATA)

§

GENERATOR_STATUS(GENERATOR_STATUS_DATA)

§

MESSAGE_INTERVAL(MESSAGE_INTERVAL_DATA)

§

OPEN_DRONE_ID_MESSAGE_PACK(OPEN_DRONE_ID_MESSAGE_PACK_DATA)

§

LOCAL_POSITION_NED_COV(LOCAL_POSITION_NED_COV_DATA)

§

COMPONENT_METADATA(COMPONENT_METADATA_DATA)

§

SIM_STATE(SIM_STATE_DATA)

§

SERVO_OUTPUT_RAW(SERVO_OUTPUT_RAW_DATA)

§

OPEN_DRONE_ID_BASIC_ID(OPEN_DRONE_ID_BASIC_ID_DATA)

§

LOG_REQUEST_LIST(LOG_REQUEST_LIST_DATA)

§

OPEN_DRONE_ID_SYSTEM_UPDATE(OPEN_DRONE_ID_SYSTEM_UPDATE_DATA)

Trait Implementations§

source§

impl Clone for MavMessage

source§

fn clone(&self) -> MavMessage

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for MavMessage

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<'de> Deserialize<'de> for MavMessage

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Message for MavMessage

source§

fn parse( version: MavlinkVersion, id: u32, diff --git a/mavlink/uavionix/struct.AdsbFlags.html b/mavlink/uavionix/struct.AdsbFlags.html index 1df59f150f..2a38f67bbe 100644 --- a/mavlink/uavionix/struct.AdsbFlags.html +++ b/mavlink/uavionix/struct.AdsbFlags.html @@ -56,17 +56,17 @@

§Safety
between Self::all() and self (e.g. Self::all() - self)

This is equivalent to using the ! operator (e.g. ops::Not), as in !flags.

-
source§

impl AdsbFlags

source

pub const DEFAULT: Self = Self::ADSB_FLAGS_VALID_COORDS

Trait Implementations§

source§

impl Binary for AdsbFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for AdsbFlags

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

-
§

type Output = AdsbFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for AdsbFlags

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

+
source§

impl AdsbFlags

source

pub const DEFAULT: Self = Self::ADSB_FLAGS_VALID_COORDS

Trait Implementations§

source§

impl Binary for AdsbFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for AdsbFlags

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

+
§

type Output = AdsbFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for AdsbFlags

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

source§

impl BitOr for AdsbFlags

source§

fn bitor(self, other: AdsbFlags) -> Self

Returns the union of the two sets of flags.

§

type Output = AdsbFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for AdsbFlags

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

source§

impl BitXor for AdsbFlags

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

-
§

type Output = AdsbFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for AdsbFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
§

type Output = AdsbFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for AdsbFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

source§

impl Clone for AdsbFlags

source§

fn clone(&self) -> AdsbFlags

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for AdsbFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for AdsbFlags

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for AdsbFlags

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Extend<AdsbFlags> for AdsbFlags

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<AdsbFlags> for AdsbFlags

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for AdsbFlags

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for AdsbFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for AdsbFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = AdsbFlags

The resulting type after applying the ! operator.
source§

impl Octal for AdsbFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for AdsbFlags

source§

fn cmp(&self, other: &AdsbFlags) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for AdsbFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for AdsbFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

+
§

type Output = AdsbFlags

The resulting type after applying the ! operator.
source§

impl Octal for AdsbFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for AdsbFlags

source§

fn cmp(&self, other: &AdsbFlags) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for AdsbFlags

source§

fn eq(&self, other: &AdsbFlags) -> bool

This method tests for self and other values to be equal, and is used @@ -75,8 +75,8 @@
§Safety
operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl Serialize for AdsbFlags

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Sub for AdsbFlags

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

-
§

type Output = AdsbFlags

The resulting type after applying the - operator.
source§

impl SubAssign for AdsbFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

-
source§

impl UpperHex for AdsbFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for AdsbFlags

source§

impl Eq for AdsbFlags

source§

impl StructuralPartialEq for AdsbFlags

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

§

type Output = AdsbFlags

The resulting type after applying the - operator.

source§

impl SubAssign for AdsbFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

+
source§

impl UpperHex for AdsbFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for AdsbFlags

source§

impl Eq for AdsbFlags

source§

impl StructuralPartialEq for AdsbFlags

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/mavlink/uavionix/struct.AisFlags.html b/mavlink/uavionix/struct.AisFlags.html index ab3dfd0fad..94c207540e 100644 --- a/mavlink/uavionix/struct.AisFlags.html +++ b/mavlink/uavionix/struct.AisFlags.html @@ -56,17 +56,17 @@
§Safety
between Self::all() and self (e.g. Self::all() - self)

This is equivalent to using the ! operator (e.g. ops::Not), as in !flags.

-
source§

impl AisFlags

source

pub const DEFAULT: Self = Self::AIS_FLAGS_POSITION_ACCURACY

Trait Implementations§

source§

impl Binary for AisFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for AisFlags

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

-
§

type Output = AisFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for AisFlags

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

+
source§

impl AisFlags

source

pub const DEFAULT: Self = Self::AIS_FLAGS_POSITION_ACCURACY

Trait Implementations§

source§

impl Binary for AisFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for AisFlags

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

+
§

type Output = AisFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for AisFlags

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

source§

impl BitOr for AisFlags

source§

fn bitor(self, other: AisFlags) -> Self

Returns the union of the two sets of flags.

§

type Output = AisFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for AisFlags

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

source§

impl BitXor for AisFlags

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

-
§

type Output = AisFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for AisFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

-
source§

impl Clone for AisFlags

source§

fn clone(&self) -> AisFlags

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for AisFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for AisFlags

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for AisFlags

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where +

§

type Output = AisFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for AisFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
source§

impl Clone for AisFlags

source§

fn clone(&self) -> AisFlags

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for AisFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for AisFlags

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for AisFlags

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Extend<AisFlags> for AisFlags

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<AisFlags> for AisFlags

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for AisFlags

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for AisFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for AisFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = AisFlags

The resulting type after applying the ! operator.
source§

impl Octal for AisFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for AisFlags

source§

fn cmp(&self, other: &AisFlags) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for AisFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for AisFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

+
§

type Output = AisFlags

The resulting type after applying the ! operator.
source§

impl Octal for AisFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for AisFlags

source§

fn cmp(&self, other: &AisFlags) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for AisFlags

source§

fn eq(&self, other: &AisFlags) -> bool

This method tests for self and other values to be equal, and is used @@ -75,8 +75,8 @@
§Safety
operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl Serialize for AisFlags

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Sub for AisFlags

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

-
§

type Output = AisFlags

The resulting type after applying the - operator.
source§

impl SubAssign for AisFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

-
source§

impl UpperHex for AisFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for AisFlags

source§

impl Eq for AisFlags

source§

impl StructuralPartialEq for AisFlags

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

§

type Output = AisFlags

The resulting type after applying the - operator.

source§

impl SubAssign for AisFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

+
source§

impl UpperHex for AisFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for AisFlags

source§

impl Eq for AisFlags

source§

impl StructuralPartialEq for AisFlags

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/mavlink/uavionix/struct.AttitudeTargetTypemask.html b/mavlink/uavionix/struct.AttitudeTargetTypemask.html index ab2585df53..f288b8ea3b 100644 --- a/mavlink/uavionix/struct.AttitudeTargetTypemask.html +++ b/mavlink/uavionix/struct.AttitudeTargetTypemask.html @@ -56,17 +56,17 @@
§Safety
between Self::all() and self (e.g. Self::all() - self)

This is equivalent to using the ! operator (e.g. ops::Not), as in !flags.

-
source§

impl AttitudeTargetTypemask

source

pub const DEFAULT: Self = Self::ATTITUDE_TARGET_TYPEMASK_BODY_ROLL_RATE_IGNORE

Trait Implementations§

source§

impl Binary for AttitudeTargetTypemask

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for AttitudeTargetTypemask

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

-
§

type Output = AttitudeTargetTypemask

The resulting type after applying the & operator.
source§

impl BitAndAssign for AttitudeTargetTypemask

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

+
source§

impl AttitudeTargetTypemask

source

pub const DEFAULT: Self = Self::ATTITUDE_TARGET_TYPEMASK_BODY_ROLL_RATE_IGNORE

Trait Implementations§

source§

impl Binary for AttitudeTargetTypemask

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for AttitudeTargetTypemask

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

+
§

type Output = AttitudeTargetTypemask

The resulting type after applying the & operator.
source§

impl BitAndAssign for AttitudeTargetTypemask

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

source§

impl BitOr for AttitudeTargetTypemask

source§

fn bitor(self, other: AttitudeTargetTypemask) -> Self

Returns the union of the two sets of flags.

§

type Output = AttitudeTargetTypemask

The resulting type after applying the | operator.
source§

impl BitOrAssign for AttitudeTargetTypemask

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

source§

impl BitXor for AttitudeTargetTypemask

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

§

type Output = AttitudeTargetTypemask

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for AttitudeTargetTypemask

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

-
source§

impl Clone for AttitudeTargetTypemask

source§

fn clone(&self) -> AttitudeTargetTypemask

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for AttitudeTargetTypemask

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for AttitudeTargetTypemask

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for AttitudeTargetTypemask

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where +

source§

impl Clone for AttitudeTargetTypemask

source§

fn clone(&self) -> AttitudeTargetTypemask

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for AttitudeTargetTypemask

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for AttitudeTargetTypemask

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for AttitudeTargetTypemask

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Extend<AttitudeTargetTypemask> for AttitudeTargetTypemask

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<AttitudeTargetTypemask> for AttitudeTargetTypemask

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for AttitudeTargetTypemask

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for AttitudeTargetTypemask

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for AttitudeTargetTypemask

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = AttitudeTargetTypemask

The resulting type after applying the ! operator.
source§

impl Octal for AttitudeTargetTypemask

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for AttitudeTargetTypemask

source§

fn cmp(&self, other: &AttitudeTargetTypemask) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for AttitudeTargetTypemask

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for AttitudeTargetTypemask

source§

fn not(self) -> Self

Returns the complement of this set of flags.

+
§

type Output = AttitudeTargetTypemask

The resulting type after applying the ! operator.
source§

impl Octal for AttitudeTargetTypemask

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for AttitudeTargetTypemask

source§

fn cmp(&self, other: &AttitudeTargetTypemask) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for AttitudeTargetTypemask

source§

fn eq(&self, other: &AttitudeTargetTypemask) -> bool

This method tests for self and other values to be equal, and is used @@ -75,7 +75,7 @@
§Safety
operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl Serialize for AttitudeTargetTypemask

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Sub for AttitudeTargetTypemask

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

-
§

type Output = AttitudeTargetTypemask

The resulting type after applying the - operator.
source§

impl SubAssign for AttitudeTargetTypemask

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

+
§

type Output = AttitudeTargetTypemask

The resulting type after applying the - operator.
source§

impl SubAssign for AttitudeTargetTypemask

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

source§

impl UpperHex for AttitudeTargetTypemask

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for AttitudeTargetTypemask

source§

impl Eq for AttitudeTargetTypemask

source§

impl StructuralPartialEq for AttitudeTargetTypemask

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where diff --git a/mavlink/uavionix/struct.CameraCapFlags.html b/mavlink/uavionix/struct.CameraCapFlags.html index 6bd8233915..21be3cfdf6 100644 --- a/mavlink/uavionix/struct.CameraCapFlags.html +++ b/mavlink/uavionix/struct.CameraCapFlags.html @@ -57,16 +57,16 @@
§Safety

This is equivalent to using the ! operator (e.g. ops::Not), as in !flags.

source§

impl CameraCapFlags

source

pub const DEFAULT: Self = Self::CAMERA_CAP_FLAGS_CAPTURE_VIDEO

Trait Implementations§

source§

impl Binary for CameraCapFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for CameraCapFlags

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

-
§

type Output = CameraCapFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for CameraCapFlags

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

+
§

type Output = CameraCapFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for CameraCapFlags

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

source§

impl BitOr for CameraCapFlags

source§

fn bitor(self, other: CameraCapFlags) -> Self

Returns the union of the two sets of flags.

-
§

type Output = CameraCapFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for CameraCapFlags

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
§

type Output = CameraCapFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for CameraCapFlags

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

source§

impl BitXor for CameraCapFlags

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

-
§

type Output = CameraCapFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for CameraCapFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

-
source§

impl Clone for CameraCapFlags

source§

fn clone(&self) -> CameraCapFlags

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for CameraCapFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for CameraCapFlags

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for CameraCapFlags

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where +

§

type Output = CameraCapFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for CameraCapFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
source§

impl Clone for CameraCapFlags

source§

fn clone(&self) -> CameraCapFlags

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for CameraCapFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for CameraCapFlags

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for CameraCapFlags

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Extend<CameraCapFlags> for CameraCapFlags

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<CameraCapFlags> for CameraCapFlags

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for CameraCapFlags

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for CameraCapFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for CameraCapFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = CameraCapFlags

The resulting type after applying the ! operator.
source§

impl Octal for CameraCapFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for CameraCapFlags

source§

fn cmp(&self, other: &CameraCapFlags) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for CameraCapFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for CameraCapFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

+
§

type Output = CameraCapFlags

The resulting type after applying the ! operator.
source§

impl Octal for CameraCapFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for CameraCapFlags

source§

fn cmp(&self, other: &CameraCapFlags) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for CameraCapFlags

source§

fn eq(&self, other: &CameraCapFlags) -> bool

This method tests for self and other values to be equal, and is used @@ -75,8 +75,8 @@
§Safety
operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl Serialize for CameraCapFlags

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Sub for CameraCapFlags

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

-
§

type Output = CameraCapFlags

The resulting type after applying the - operator.
source§

impl SubAssign for CameraCapFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

-
source§

impl UpperHex for CameraCapFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for CameraCapFlags

source§

impl Eq for CameraCapFlags

source§

impl StructuralPartialEq for CameraCapFlags

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

§

type Output = CameraCapFlags

The resulting type after applying the - operator.
source§

impl SubAssign for CameraCapFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

+
source§

impl UpperHex for CameraCapFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for CameraCapFlags

source§

impl Eq for CameraCapFlags

source§

impl StructuralPartialEq for CameraCapFlags

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/mavlink/uavionix/struct.EscFailureFlags.html b/mavlink/uavionix/struct.EscFailureFlags.html index 4f3d891daa..f763b8700e 100644 --- a/mavlink/uavionix/struct.EscFailureFlags.html +++ b/mavlink/uavionix/struct.EscFailureFlags.html @@ -56,17 +56,17 @@
§Safety
between Self::all() and self (e.g. Self::all() - self)

This is equivalent to using the ! operator (e.g. ops::Not), as in !flags.

-
source§

impl EscFailureFlags

source

pub const DEFAULT: Self = Self::ESC_FAILURE_NONE

Trait Implementations§

source§

impl Binary for EscFailureFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for EscFailureFlags

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

-
§

type Output = EscFailureFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for EscFailureFlags

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

+
source§

impl EscFailureFlags

source

pub const DEFAULT: Self = Self::ESC_FAILURE_NONE

Trait Implementations§

source§

impl Binary for EscFailureFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for EscFailureFlags

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

+
§

type Output = EscFailureFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for EscFailureFlags

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

source§

impl BitOr for EscFailureFlags

source§

fn bitor(self, other: EscFailureFlags) -> Self

Returns the union of the two sets of flags.

-
§

type Output = EscFailureFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for EscFailureFlags

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
§

type Output = EscFailureFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for EscFailureFlags

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

source§

impl BitXor for EscFailureFlags

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

-
§

type Output = EscFailureFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for EscFailureFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

-
source§

impl Clone for EscFailureFlags

source§

fn clone(&self) -> EscFailureFlags

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for EscFailureFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for EscFailureFlags

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for EscFailureFlags

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where +

§

type Output = EscFailureFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for EscFailureFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
source§

impl Clone for EscFailureFlags

source§

fn clone(&self) -> EscFailureFlags

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for EscFailureFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for EscFailureFlags

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for EscFailureFlags

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Extend<EscFailureFlags> for EscFailureFlags

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<EscFailureFlags> for EscFailureFlags

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for EscFailureFlags

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for EscFailureFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for EscFailureFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = EscFailureFlags

The resulting type after applying the ! operator.
source§

impl Octal for EscFailureFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for EscFailureFlags

source§

fn cmp(&self, other: &EscFailureFlags) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for EscFailureFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for EscFailureFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

+
§

type Output = EscFailureFlags

The resulting type after applying the ! operator.
source§

impl Octal for EscFailureFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for EscFailureFlags

source§

fn cmp(&self, other: &EscFailureFlags) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for EscFailureFlags

source§

fn eq(&self, other: &EscFailureFlags) -> bool

This method tests for self and other values to be equal, and is used @@ -75,8 +75,8 @@
§Safety
operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl Serialize for EscFailureFlags

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Sub for EscFailureFlags

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

-
§

type Output = EscFailureFlags

The resulting type after applying the - operator.
source§

impl SubAssign for EscFailureFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

-
source§

impl UpperHex for EscFailureFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for EscFailureFlags

source§

impl Eq for EscFailureFlags

source§

impl StructuralPartialEq for EscFailureFlags

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

§

type Output = EscFailureFlags

The resulting type after applying the - operator.
source§

impl SubAssign for EscFailureFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

+
source§

impl UpperHex for EscFailureFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for EscFailureFlags

source§

impl Eq for EscFailureFlags

source§

impl StructuralPartialEq for EscFailureFlags

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/mavlink/uavionix/struct.EstimatorStatusFlags.html b/mavlink/uavionix/struct.EstimatorStatusFlags.html index e73a011675..87a105da1d 100644 --- a/mavlink/uavionix/struct.EstimatorStatusFlags.html +++ b/mavlink/uavionix/struct.EstimatorStatusFlags.html @@ -56,17 +56,17 @@
§Safety
between Self::all() and self (e.g. Self::all() - self)

This is equivalent to using the ! operator (e.g. ops::Not), as in !flags.

-
source§

impl EstimatorStatusFlags

source

pub const DEFAULT: Self = Self::ESTIMATOR_ATTITUDE

Trait Implementations§

source§

impl Binary for EstimatorStatusFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for EstimatorStatusFlags

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

-
§

type Output = EstimatorStatusFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for EstimatorStatusFlags

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

+
source§

impl EstimatorStatusFlags

source

pub const DEFAULT: Self = Self::ESTIMATOR_ATTITUDE

Trait Implementations§

source§

impl Binary for EstimatorStatusFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for EstimatorStatusFlags

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

+
§

type Output = EstimatorStatusFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for EstimatorStatusFlags

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

source§

impl BitOr for EstimatorStatusFlags

source§

fn bitor(self, other: EstimatorStatusFlags) -> Self

Returns the union of the two sets of flags.

§

type Output = EstimatorStatusFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for EstimatorStatusFlags

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

source§

impl BitXor for EstimatorStatusFlags

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

§

type Output = EstimatorStatusFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for EstimatorStatusFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

-
source§

impl Clone for EstimatorStatusFlags

source§

fn clone(&self) -> EstimatorStatusFlags

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for EstimatorStatusFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for EstimatorStatusFlags

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for EstimatorStatusFlags

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where +

source§

impl Clone for EstimatorStatusFlags

source§

fn clone(&self) -> EstimatorStatusFlags

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for EstimatorStatusFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for EstimatorStatusFlags

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for EstimatorStatusFlags

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Extend<EstimatorStatusFlags> for EstimatorStatusFlags

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<EstimatorStatusFlags> for EstimatorStatusFlags

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for EstimatorStatusFlags

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for EstimatorStatusFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for EstimatorStatusFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = EstimatorStatusFlags

The resulting type after applying the ! operator.
source§

impl Octal for EstimatorStatusFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for EstimatorStatusFlags

source§

fn cmp(&self, other: &EstimatorStatusFlags) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where +

§

type Output = EstimatorStatusFlags

The resulting type after applying the ! operator.
source§

impl Octal for EstimatorStatusFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for EstimatorStatusFlags

source§

fn cmp(&self, other: &EstimatorStatusFlags) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for EstimatorStatusFlags

source§

fn eq(&self, other: &EstimatorStatusFlags) -> bool

This method tests for self and other values to be equal, and is used @@ -75,8 +75,8 @@
§Safety
operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl Serialize for EstimatorStatusFlags

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Sub for EstimatorStatusFlags

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

-
§

type Output = EstimatorStatusFlags

The resulting type after applying the - operator.
source§

impl SubAssign for EstimatorStatusFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

-
source§

impl UpperHex for EstimatorStatusFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for EstimatorStatusFlags

source§

impl Eq for EstimatorStatusFlags

source§

impl StructuralPartialEq for EstimatorStatusFlags

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

§

type Output = EstimatorStatusFlags

The resulting type after applying the - operator.
source§

impl SubAssign for EstimatorStatusFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

+
source§

impl UpperHex for EstimatorStatusFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for EstimatorStatusFlags

source§

impl Eq for EstimatorStatusFlags

source§

impl StructuralPartialEq for EstimatorStatusFlags

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/mavlink/uavionix/struct.GimbalDeviceCapFlags.html b/mavlink/uavionix/struct.GimbalDeviceCapFlags.html index 05a856b5cc..878a77ce24 100644 --- a/mavlink/uavionix/struct.GimbalDeviceCapFlags.html +++ b/mavlink/uavionix/struct.GimbalDeviceCapFlags.html @@ -56,17 +56,17 @@
§Safety
between Self::all() and self (e.g. Self::all() - self)

This is equivalent to using the ! operator (e.g. ops::Not), as in !flags.

-
source§

impl GimbalDeviceCapFlags

source

pub const DEFAULT: Self = Self::GIMBAL_DEVICE_CAP_FLAGS_HAS_RETRACT

Trait Implementations§

source§

impl Binary for GimbalDeviceCapFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for GimbalDeviceCapFlags

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

-
§

type Output = GimbalDeviceCapFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for GimbalDeviceCapFlags

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

+
source§

impl GimbalDeviceCapFlags

source

pub const DEFAULT: Self = Self::GIMBAL_DEVICE_CAP_FLAGS_HAS_RETRACT

Trait Implementations§

source§

impl Binary for GimbalDeviceCapFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for GimbalDeviceCapFlags

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

+
§

type Output = GimbalDeviceCapFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for GimbalDeviceCapFlags

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

source§

impl BitOr for GimbalDeviceCapFlags

source§

fn bitor(self, other: GimbalDeviceCapFlags) -> Self

Returns the union of the two sets of flags.

-
§

type Output = GimbalDeviceCapFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for GimbalDeviceCapFlags

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
§

type Output = GimbalDeviceCapFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for GimbalDeviceCapFlags

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

source§

impl BitXor for GimbalDeviceCapFlags

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

-
§

type Output = GimbalDeviceCapFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for GimbalDeviceCapFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

-
source§

impl Clone for GimbalDeviceCapFlags

source§

fn clone(&self) -> GimbalDeviceCapFlags

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for GimbalDeviceCapFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for GimbalDeviceCapFlags

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for GimbalDeviceCapFlags

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where +

§

type Output = GimbalDeviceCapFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for GimbalDeviceCapFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
source§

impl Clone for GimbalDeviceCapFlags

source§

fn clone(&self) -> GimbalDeviceCapFlags

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for GimbalDeviceCapFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for GimbalDeviceCapFlags

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for GimbalDeviceCapFlags

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Extend<GimbalDeviceCapFlags> for GimbalDeviceCapFlags

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<GimbalDeviceCapFlags> for GimbalDeviceCapFlags

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for GimbalDeviceCapFlags

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for GimbalDeviceCapFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for GimbalDeviceCapFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = GimbalDeviceCapFlags

The resulting type after applying the ! operator.
source§

impl Octal for GimbalDeviceCapFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for GimbalDeviceCapFlags

source§

fn cmp(&self, other: &GimbalDeviceCapFlags) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for GimbalDeviceCapFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for GimbalDeviceCapFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

+
§

type Output = GimbalDeviceCapFlags

The resulting type after applying the ! operator.
source§

impl Octal for GimbalDeviceCapFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for GimbalDeviceCapFlags

source§

fn cmp(&self, other: &GimbalDeviceCapFlags) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for GimbalDeviceCapFlags

source§

fn eq(&self, other: &GimbalDeviceCapFlags) -> bool

This method tests for self and other values to be equal, and is used @@ -75,7 +75,7 @@
§Safety
operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl Serialize for GimbalDeviceCapFlags

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Sub for GimbalDeviceCapFlags

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

-
§

type Output = GimbalDeviceCapFlags

The resulting type after applying the - operator.
source§

impl SubAssign for GimbalDeviceCapFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

+
§

type Output = GimbalDeviceCapFlags

The resulting type after applying the - operator.
source§

impl SubAssign for GimbalDeviceCapFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

source§

impl UpperHex for GimbalDeviceCapFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for GimbalDeviceCapFlags

source§

impl Eq for GimbalDeviceCapFlags

source§

impl StructuralPartialEq for GimbalDeviceCapFlags

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where diff --git a/mavlink/uavionix/struct.GimbalDeviceErrorFlags.html b/mavlink/uavionix/struct.GimbalDeviceErrorFlags.html index 643a99f774..1c07615e3e 100644 --- a/mavlink/uavionix/struct.GimbalDeviceErrorFlags.html +++ b/mavlink/uavionix/struct.GimbalDeviceErrorFlags.html @@ -56,17 +56,17 @@
§Safety
between Self::all() and self (e.g. Self::all() - self)

This is equivalent to using the ! operator (e.g. ops::Not), as in !flags.

-

source§

impl GimbalDeviceErrorFlags

source

pub const DEFAULT: Self = Self::GIMBAL_DEVICE_ERROR_FLAGS_AT_ROLL_LIMIT

Trait Implementations§

source§

impl Binary for GimbalDeviceErrorFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for GimbalDeviceErrorFlags

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

-
§

type Output = GimbalDeviceErrorFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for GimbalDeviceErrorFlags

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

+
source§

impl GimbalDeviceErrorFlags

source

pub const DEFAULT: Self = Self::GIMBAL_DEVICE_ERROR_FLAGS_AT_ROLL_LIMIT

Trait Implementations§

source§

impl Binary for GimbalDeviceErrorFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for GimbalDeviceErrorFlags

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

+
§

type Output = GimbalDeviceErrorFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for GimbalDeviceErrorFlags

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

source§

impl BitOr for GimbalDeviceErrorFlags

source§

fn bitor(self, other: GimbalDeviceErrorFlags) -> Self

Returns the union of the two sets of flags.

-
§

type Output = GimbalDeviceErrorFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for GimbalDeviceErrorFlags

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
§

type Output = GimbalDeviceErrorFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for GimbalDeviceErrorFlags

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

source§

impl BitXor for GimbalDeviceErrorFlags

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

-
§

type Output = GimbalDeviceErrorFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for GimbalDeviceErrorFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

-
source§

impl Clone for GimbalDeviceErrorFlags

source§

fn clone(&self) -> GimbalDeviceErrorFlags

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for GimbalDeviceErrorFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for GimbalDeviceErrorFlags

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for GimbalDeviceErrorFlags

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where +

§

type Output = GimbalDeviceErrorFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for GimbalDeviceErrorFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
source§

impl Clone for GimbalDeviceErrorFlags

source§

fn clone(&self) -> GimbalDeviceErrorFlags

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for GimbalDeviceErrorFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for GimbalDeviceErrorFlags

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for GimbalDeviceErrorFlags

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Extend<GimbalDeviceErrorFlags> for GimbalDeviceErrorFlags

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<GimbalDeviceErrorFlags> for GimbalDeviceErrorFlags

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for GimbalDeviceErrorFlags

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for GimbalDeviceErrorFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for GimbalDeviceErrorFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = GimbalDeviceErrorFlags

The resulting type after applying the ! operator.
source§

impl Octal for GimbalDeviceErrorFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for GimbalDeviceErrorFlags

source§

fn cmp(&self, other: &GimbalDeviceErrorFlags) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for GimbalDeviceErrorFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for GimbalDeviceErrorFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

+
§

type Output = GimbalDeviceErrorFlags

The resulting type after applying the ! operator.
source§

impl Octal for GimbalDeviceErrorFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for GimbalDeviceErrorFlags

source§

fn cmp(&self, other: &GimbalDeviceErrorFlags) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for GimbalDeviceErrorFlags

source§

fn eq(&self, other: &GimbalDeviceErrorFlags) -> bool

This method tests for self and other values to be equal, and is used @@ -75,8 +75,8 @@
§Safety
operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl Serialize for GimbalDeviceErrorFlags

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Sub for GimbalDeviceErrorFlags

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

-
§

type Output = GimbalDeviceErrorFlags

The resulting type after applying the - operator.
source§

impl SubAssign for GimbalDeviceErrorFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

-
source§

impl UpperHex for GimbalDeviceErrorFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for GimbalDeviceErrorFlags

source§

impl Eq for GimbalDeviceErrorFlags

source§

impl StructuralPartialEq for GimbalDeviceErrorFlags

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

§

type Output = GimbalDeviceErrorFlags

The resulting type after applying the - operator.
source§

impl SubAssign for GimbalDeviceErrorFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

+
source§

impl UpperHex for GimbalDeviceErrorFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for GimbalDeviceErrorFlags

source§

impl Eq for GimbalDeviceErrorFlags

source§

impl StructuralPartialEq for GimbalDeviceErrorFlags

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/mavlink/uavionix/struct.GimbalDeviceFlags.html b/mavlink/uavionix/struct.GimbalDeviceFlags.html index 67474f0fca..1328f6aa1c 100644 --- a/mavlink/uavionix/struct.GimbalDeviceFlags.html +++ b/mavlink/uavionix/struct.GimbalDeviceFlags.html @@ -56,17 +56,17 @@
§Safety
between Self::all() and self (e.g. Self::all() - self)

This is equivalent to using the ! operator (e.g. ops::Not), as in !flags.

-
source§

impl GimbalDeviceFlags

source

pub const DEFAULT: Self = Self::GIMBAL_DEVICE_FLAGS_RETRACT

Trait Implementations§

source§

impl Binary for GimbalDeviceFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for GimbalDeviceFlags

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

-
§

type Output = GimbalDeviceFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for GimbalDeviceFlags

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

+
source§

impl GimbalDeviceFlags

source

pub const DEFAULT: Self = Self::GIMBAL_DEVICE_FLAGS_RETRACT

Trait Implementations§

source§

impl Binary for GimbalDeviceFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for GimbalDeviceFlags

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

+
§

type Output = GimbalDeviceFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for GimbalDeviceFlags

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

source§

impl BitOr for GimbalDeviceFlags

source§

fn bitor(self, other: GimbalDeviceFlags) -> Self

Returns the union of the two sets of flags.

-
§

type Output = GimbalDeviceFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for GimbalDeviceFlags

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
§

type Output = GimbalDeviceFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for GimbalDeviceFlags

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

source§

impl BitXor for GimbalDeviceFlags

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

§

type Output = GimbalDeviceFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for GimbalDeviceFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

-
source§

impl Clone for GimbalDeviceFlags

source§

fn clone(&self) -> GimbalDeviceFlags

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for GimbalDeviceFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for GimbalDeviceFlags

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for GimbalDeviceFlags

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where +

source§

impl Clone for GimbalDeviceFlags

source§

fn clone(&self) -> GimbalDeviceFlags

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for GimbalDeviceFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for GimbalDeviceFlags

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for GimbalDeviceFlags

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Extend<GimbalDeviceFlags> for GimbalDeviceFlags

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<GimbalDeviceFlags> for GimbalDeviceFlags

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for GimbalDeviceFlags

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for GimbalDeviceFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for GimbalDeviceFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = GimbalDeviceFlags

The resulting type after applying the ! operator.
source§

impl Octal for GimbalDeviceFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for GimbalDeviceFlags

source§

fn cmp(&self, other: &GimbalDeviceFlags) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for GimbalDeviceFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for GimbalDeviceFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

+
§

type Output = GimbalDeviceFlags

The resulting type after applying the ! operator.
source§

impl Octal for GimbalDeviceFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for GimbalDeviceFlags

source§

fn cmp(&self, other: &GimbalDeviceFlags) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for GimbalDeviceFlags

source§

fn eq(&self, other: &GimbalDeviceFlags) -> bool

This method tests for self and other values to be equal, and is used @@ -75,7 +75,7 @@
§Safety
operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl Serialize for GimbalDeviceFlags

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Sub for GimbalDeviceFlags

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

-
§

type Output = GimbalDeviceFlags

The resulting type after applying the - operator.
source§

impl SubAssign for GimbalDeviceFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

+
§

type Output = GimbalDeviceFlags

The resulting type after applying the - operator.
source§

impl SubAssign for GimbalDeviceFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

source§

impl UpperHex for GimbalDeviceFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for GimbalDeviceFlags

source§

impl Eq for GimbalDeviceFlags

source§

impl StructuralPartialEq for GimbalDeviceFlags

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where diff --git a/mavlink/uavionix/struct.GimbalManagerCapFlags.html b/mavlink/uavionix/struct.GimbalManagerCapFlags.html index c0ca2769f2..4928b50d72 100644 --- a/mavlink/uavionix/struct.GimbalManagerCapFlags.html +++ b/mavlink/uavionix/struct.GimbalManagerCapFlags.html @@ -56,17 +56,17 @@
§Safety
between Self::all() and self (e.g. Self::all() - self)

This is equivalent to using the ! operator (e.g. ops::Not), as in !flags.

-

source§

impl GimbalManagerCapFlags

source

pub const DEFAULT: Self = Self::GIMBAL_MANAGER_CAP_FLAGS_HAS_RETRACT

Trait Implementations§

source§

impl Binary for GimbalManagerCapFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for GimbalManagerCapFlags

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

-
§

type Output = GimbalManagerCapFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for GimbalManagerCapFlags

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

+
source§

impl GimbalManagerCapFlags

source

pub const DEFAULT: Self = Self::GIMBAL_MANAGER_CAP_FLAGS_HAS_RETRACT

Trait Implementations§

source§

impl Binary for GimbalManagerCapFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for GimbalManagerCapFlags

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

+
§

type Output = GimbalManagerCapFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for GimbalManagerCapFlags

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

source§

impl BitOr for GimbalManagerCapFlags

source§

fn bitor(self, other: GimbalManagerCapFlags) -> Self

Returns the union of the two sets of flags.

-
§

type Output = GimbalManagerCapFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for GimbalManagerCapFlags

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
§

type Output = GimbalManagerCapFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for GimbalManagerCapFlags

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

source§

impl BitXor for GimbalManagerCapFlags

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

-
§

type Output = GimbalManagerCapFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for GimbalManagerCapFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

-
source§

impl Clone for GimbalManagerCapFlags

source§

fn clone(&self) -> GimbalManagerCapFlags

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for GimbalManagerCapFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for GimbalManagerCapFlags

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for GimbalManagerCapFlags

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where +

§

type Output = GimbalManagerCapFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for GimbalManagerCapFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
source§

impl Clone for GimbalManagerCapFlags

source§

fn clone(&self) -> GimbalManagerCapFlags

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for GimbalManagerCapFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for GimbalManagerCapFlags

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for GimbalManagerCapFlags

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Extend<GimbalManagerCapFlags> for GimbalManagerCapFlags

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<GimbalManagerCapFlags> for GimbalManagerCapFlags

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for GimbalManagerCapFlags

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for GimbalManagerCapFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for GimbalManagerCapFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = GimbalManagerCapFlags

The resulting type after applying the ! operator.
source§

impl Octal for GimbalManagerCapFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for GimbalManagerCapFlags

source§

fn cmp(&self, other: &GimbalManagerCapFlags) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where +

§

type Output = GimbalManagerCapFlags

The resulting type after applying the ! operator.
source§

impl Octal for GimbalManagerCapFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for GimbalManagerCapFlags

source§

fn cmp(&self, other: &GimbalManagerCapFlags) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for GimbalManagerCapFlags

source§

fn eq(&self, other: &GimbalManagerCapFlags) -> bool

This method tests for self and other values to be equal, and is used @@ -75,8 +75,8 @@
§Safety
operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl Serialize for GimbalManagerCapFlags

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Sub for GimbalManagerCapFlags

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

-
§

type Output = GimbalManagerCapFlags

The resulting type after applying the - operator.
source§

impl SubAssign for GimbalManagerCapFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

-
source§

impl UpperHex for GimbalManagerCapFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for GimbalManagerCapFlags

source§

impl Eq for GimbalManagerCapFlags

source§

impl StructuralPartialEq for GimbalManagerCapFlags

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

§

type Output = GimbalManagerCapFlags

The resulting type after applying the - operator.
source§

impl SubAssign for GimbalManagerCapFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

+
source§

impl UpperHex for GimbalManagerCapFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for GimbalManagerCapFlags

source§

impl Eq for GimbalManagerCapFlags

source§

impl StructuralPartialEq for GimbalManagerCapFlags

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/mavlink/uavionix/struct.GpsInputIgnoreFlags.html b/mavlink/uavionix/struct.GpsInputIgnoreFlags.html index 1e2f4afcbe..cff74f5a6c 100644 --- a/mavlink/uavionix/struct.GpsInputIgnoreFlags.html +++ b/mavlink/uavionix/struct.GpsInputIgnoreFlags.html @@ -56,17 +56,17 @@
§Safety
between Self::all() and self (e.g. Self::all() - self)

This is equivalent to using the ! operator (e.g. ops::Not), as in !flags.

-
source§

impl GpsInputIgnoreFlags

source

pub const DEFAULT: Self = Self::GPS_INPUT_IGNORE_FLAG_ALT

Trait Implementations§

source§

impl Binary for GpsInputIgnoreFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for GpsInputIgnoreFlags

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

-
§

type Output = GpsInputIgnoreFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for GpsInputIgnoreFlags

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

+
source§

impl GpsInputIgnoreFlags

source

pub const DEFAULT: Self = Self::GPS_INPUT_IGNORE_FLAG_ALT

Trait Implementations§

source§

impl Binary for GpsInputIgnoreFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for GpsInputIgnoreFlags

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

+
§

type Output = GpsInputIgnoreFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for GpsInputIgnoreFlags

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

source§

impl BitOr for GpsInputIgnoreFlags

source§

fn bitor(self, other: GpsInputIgnoreFlags) -> Self

Returns the union of the two sets of flags.

-
§

type Output = GpsInputIgnoreFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for GpsInputIgnoreFlags

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
§

type Output = GpsInputIgnoreFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for GpsInputIgnoreFlags

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

source§

impl BitXor for GpsInputIgnoreFlags

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

-
§

type Output = GpsInputIgnoreFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for GpsInputIgnoreFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

-
source§

impl Clone for GpsInputIgnoreFlags

source§

fn clone(&self) -> GpsInputIgnoreFlags

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for GpsInputIgnoreFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for GpsInputIgnoreFlags

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for GpsInputIgnoreFlags

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where +

§

type Output = GpsInputIgnoreFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for GpsInputIgnoreFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
source§

impl Clone for GpsInputIgnoreFlags

source§

fn clone(&self) -> GpsInputIgnoreFlags

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for GpsInputIgnoreFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for GpsInputIgnoreFlags

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for GpsInputIgnoreFlags

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Extend<GpsInputIgnoreFlags> for GpsInputIgnoreFlags

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<GpsInputIgnoreFlags> for GpsInputIgnoreFlags

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for GpsInputIgnoreFlags

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for GpsInputIgnoreFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for GpsInputIgnoreFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = GpsInputIgnoreFlags

The resulting type after applying the ! operator.
source§

impl Octal for GpsInputIgnoreFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for GpsInputIgnoreFlags

source§

fn cmp(&self, other: &GpsInputIgnoreFlags) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for GpsInputIgnoreFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for GpsInputIgnoreFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

+
§

type Output = GpsInputIgnoreFlags

The resulting type after applying the ! operator.
source§

impl Octal for GpsInputIgnoreFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for GpsInputIgnoreFlags

source§

fn cmp(&self, other: &GpsInputIgnoreFlags) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for GpsInputIgnoreFlags

source§

fn eq(&self, other: &GpsInputIgnoreFlags) -> bool

This method tests for self and other values to be equal, and is used @@ -75,8 +75,8 @@
§Safety
operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl Serialize for GpsInputIgnoreFlags

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Sub for GpsInputIgnoreFlags

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

-
§

type Output = GpsInputIgnoreFlags

The resulting type after applying the - operator.
source§

impl SubAssign for GpsInputIgnoreFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

-
source§

impl UpperHex for GpsInputIgnoreFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for GpsInputIgnoreFlags

source§

impl Eq for GpsInputIgnoreFlags

source§

impl StructuralPartialEq for GpsInputIgnoreFlags

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

§

type Output = GpsInputIgnoreFlags

The resulting type after applying the - operator.
source§

impl SubAssign for GpsInputIgnoreFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

+
source§

impl UpperHex for GpsInputIgnoreFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for GpsInputIgnoreFlags

source§

impl Eq for GpsInputIgnoreFlags

source§

impl StructuralPartialEq for GpsInputIgnoreFlags

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/mavlink/uavionix/struct.HighresImuUpdatedFlags.html b/mavlink/uavionix/struct.HighresImuUpdatedFlags.html index 0cdc256e0f..6a8ccb8209 100644 --- a/mavlink/uavionix/struct.HighresImuUpdatedFlags.html +++ b/mavlink/uavionix/struct.HighresImuUpdatedFlags.html @@ -56,17 +56,17 @@
§Safety
between Self::all() and self (e.g. Self::all() - self)

This is equivalent to using the ! operator (e.g. ops::Not), as in !flags.

-
source§

impl HighresImuUpdatedFlags

source

pub const DEFAULT: Self = Self::HIGHRES_IMU_UPDATED_NONE

Trait Implementations§

source§

impl Binary for HighresImuUpdatedFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for HighresImuUpdatedFlags

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

-
§

type Output = HighresImuUpdatedFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for HighresImuUpdatedFlags

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

+
source§

impl HighresImuUpdatedFlags

source

pub const DEFAULT: Self = Self::HIGHRES_IMU_UPDATED_NONE

Trait Implementations§

source§

impl Binary for HighresImuUpdatedFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for HighresImuUpdatedFlags

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

+
§

type Output = HighresImuUpdatedFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for HighresImuUpdatedFlags

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

source§

impl BitOr for HighresImuUpdatedFlags

source§

fn bitor(self, other: HighresImuUpdatedFlags) -> Self

Returns the union of the two sets of flags.

§

type Output = HighresImuUpdatedFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for HighresImuUpdatedFlags

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

source§

impl BitXor for HighresImuUpdatedFlags

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

-
§

type Output = HighresImuUpdatedFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for HighresImuUpdatedFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

-
source§

impl Clone for HighresImuUpdatedFlags

source§

fn clone(&self) -> HighresImuUpdatedFlags

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for HighresImuUpdatedFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for HighresImuUpdatedFlags

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for HighresImuUpdatedFlags

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where +

§

type Output = HighresImuUpdatedFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for HighresImuUpdatedFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
source§

impl Clone for HighresImuUpdatedFlags

source§

fn clone(&self) -> HighresImuUpdatedFlags

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for HighresImuUpdatedFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for HighresImuUpdatedFlags

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for HighresImuUpdatedFlags

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Extend<HighresImuUpdatedFlags> for HighresImuUpdatedFlags

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<HighresImuUpdatedFlags> for HighresImuUpdatedFlags

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for HighresImuUpdatedFlags

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for HighresImuUpdatedFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for HighresImuUpdatedFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = HighresImuUpdatedFlags

The resulting type after applying the ! operator.
source§

impl Octal for HighresImuUpdatedFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for HighresImuUpdatedFlags

source§

fn cmp(&self, other: &HighresImuUpdatedFlags) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for HighresImuUpdatedFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for HighresImuUpdatedFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

+
§

type Output = HighresImuUpdatedFlags

The resulting type after applying the ! operator.
source§

impl Octal for HighresImuUpdatedFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for HighresImuUpdatedFlags

source§

fn cmp(&self, other: &HighresImuUpdatedFlags) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for HighresImuUpdatedFlags

source§

fn eq(&self, other: &HighresImuUpdatedFlags) -> bool

This method tests for self and other values to be equal, and is used @@ -75,8 +75,8 @@
§Safety
operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl Serialize for HighresImuUpdatedFlags

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Sub for HighresImuUpdatedFlags

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

-
§

type Output = HighresImuUpdatedFlags

The resulting type after applying the - operator.
source§

impl SubAssign for HighresImuUpdatedFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

-
source§

impl UpperHex for HighresImuUpdatedFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for HighresImuUpdatedFlags

source§

impl Eq for HighresImuUpdatedFlags

source§

impl StructuralPartialEq for HighresImuUpdatedFlags

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

§

type Output = HighresImuUpdatedFlags

The resulting type after applying the - operator.
source§

impl SubAssign for HighresImuUpdatedFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

+
source§

impl UpperHex for HighresImuUpdatedFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for HighresImuUpdatedFlags

source§

impl Eq for HighresImuUpdatedFlags

source§

impl StructuralPartialEq for HighresImuUpdatedFlags

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/mavlink/uavionix/struct.HilSensorUpdatedFlags.html b/mavlink/uavionix/struct.HilSensorUpdatedFlags.html index dd643ee76a..c6af377e40 100644 --- a/mavlink/uavionix/struct.HilSensorUpdatedFlags.html +++ b/mavlink/uavionix/struct.HilSensorUpdatedFlags.html @@ -56,17 +56,17 @@
§Safety
between Self::all() and self (e.g. Self::all() - self)

This is equivalent to using the ! operator (e.g. ops::Not), as in !flags.

-
source§

impl HilSensorUpdatedFlags

source

pub const DEFAULT: Self = Self::HIL_SENSOR_UPDATED_NONE

Trait Implementations§

source§

impl Binary for HilSensorUpdatedFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for HilSensorUpdatedFlags

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

+
source§

impl HilSensorUpdatedFlags

source

pub const DEFAULT: Self = Self::HIL_SENSOR_UPDATED_NONE

Trait Implementations§

source§

impl Binary for HilSensorUpdatedFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for HilSensorUpdatedFlags

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

§

type Output = HilSensorUpdatedFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for HilSensorUpdatedFlags

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

source§

impl BitOr for HilSensorUpdatedFlags

source§

fn bitor(self, other: HilSensorUpdatedFlags) -> Self

Returns the union of the two sets of flags.

-
§

type Output = HilSensorUpdatedFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for HilSensorUpdatedFlags

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
§

type Output = HilSensorUpdatedFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for HilSensorUpdatedFlags

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

source§

impl BitXor for HilSensorUpdatedFlags

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

-
§

type Output = HilSensorUpdatedFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for HilSensorUpdatedFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

-
source§

impl Clone for HilSensorUpdatedFlags

source§

fn clone(&self) -> HilSensorUpdatedFlags

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for HilSensorUpdatedFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for HilSensorUpdatedFlags

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for HilSensorUpdatedFlags

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where +

§

type Output = HilSensorUpdatedFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for HilSensorUpdatedFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
source§

impl Clone for HilSensorUpdatedFlags

source§

fn clone(&self) -> HilSensorUpdatedFlags

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for HilSensorUpdatedFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for HilSensorUpdatedFlags

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for HilSensorUpdatedFlags

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Extend<HilSensorUpdatedFlags> for HilSensorUpdatedFlags

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<HilSensorUpdatedFlags> for HilSensorUpdatedFlags

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for HilSensorUpdatedFlags

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for HilSensorUpdatedFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for HilSensorUpdatedFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = HilSensorUpdatedFlags

The resulting type after applying the ! operator.
source§

impl Octal for HilSensorUpdatedFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for HilSensorUpdatedFlags

source§

fn cmp(&self, other: &HilSensorUpdatedFlags) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for HilSensorUpdatedFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for HilSensorUpdatedFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

+
§

type Output = HilSensorUpdatedFlags

The resulting type after applying the ! operator.
source§

impl Octal for HilSensorUpdatedFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for HilSensorUpdatedFlags

source§

fn cmp(&self, other: &HilSensorUpdatedFlags) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for HilSensorUpdatedFlags

source§

fn eq(&self, other: &HilSensorUpdatedFlags) -> bool

This method tests for self and other values to be equal, and is used @@ -75,8 +75,8 @@
§Safety
operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl Serialize for HilSensorUpdatedFlags

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Sub for HilSensorUpdatedFlags

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

-
§

type Output = HilSensorUpdatedFlags

The resulting type after applying the - operator.
source§

impl SubAssign for HilSensorUpdatedFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

-
source§

impl UpperHex for HilSensorUpdatedFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for HilSensorUpdatedFlags

source§

impl Eq for HilSensorUpdatedFlags

source§

impl StructuralPartialEq for HilSensorUpdatedFlags

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

§

type Output = HilSensorUpdatedFlags

The resulting type after applying the - operator.
source§

impl SubAssign for HilSensorUpdatedFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

+
source§

impl UpperHex for HilSensorUpdatedFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for HilSensorUpdatedFlags

source§

impl Eq for HilSensorUpdatedFlags

source§

impl StructuralPartialEq for HilSensorUpdatedFlags

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/mavlink/uavionix/struct.HlFailureFlag.html b/mavlink/uavionix/struct.HlFailureFlag.html index 312b1f55f2..a4295489fd 100644 --- a/mavlink/uavionix/struct.HlFailureFlag.html +++ b/mavlink/uavionix/struct.HlFailureFlag.html @@ -56,17 +56,17 @@
§Safety
between Self::all() and self (e.g. Self::all() - self)

This is equivalent to using the ! operator (e.g. ops::Not), as in !flags.

-
source§

impl HlFailureFlag

source

pub const DEFAULT: Self = Self::HL_FAILURE_FLAG_GPS

Trait Implementations§

source§

impl Binary for HlFailureFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for HlFailureFlag

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

-
§

type Output = HlFailureFlag

The resulting type after applying the & operator.
source§

impl BitAndAssign for HlFailureFlag

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

+
source§

impl HlFailureFlag

source

pub const DEFAULT: Self = Self::HL_FAILURE_FLAG_GPS

Trait Implementations§

source§

impl Binary for HlFailureFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for HlFailureFlag

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

+
§

type Output = HlFailureFlag

The resulting type after applying the & operator.
source§

impl BitAndAssign for HlFailureFlag

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

source§

impl BitOr for HlFailureFlag

source§

fn bitor(self, other: HlFailureFlag) -> Self

Returns the union of the two sets of flags.

-
§

type Output = HlFailureFlag

The resulting type after applying the | operator.
source§

impl BitOrAssign for HlFailureFlag

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
§

type Output = HlFailureFlag

The resulting type after applying the | operator.
source§

impl BitOrAssign for HlFailureFlag

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

source§

impl BitXor for HlFailureFlag

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

-
§

type Output = HlFailureFlag

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for HlFailureFlag

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

-
source§

impl Clone for HlFailureFlag

source§

fn clone(&self) -> HlFailureFlag

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for HlFailureFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for HlFailureFlag

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for HlFailureFlag

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where +

§

type Output = HlFailureFlag

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for HlFailureFlag

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
source§

impl Clone for HlFailureFlag

source§

fn clone(&self) -> HlFailureFlag

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for HlFailureFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for HlFailureFlag

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for HlFailureFlag

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Extend<HlFailureFlag> for HlFailureFlag

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<HlFailureFlag> for HlFailureFlag

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for HlFailureFlag

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for HlFailureFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for HlFailureFlag

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = HlFailureFlag

The resulting type after applying the ! operator.
source§

impl Octal for HlFailureFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for HlFailureFlag

source§

fn cmp(&self, other: &HlFailureFlag) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for HlFailureFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for HlFailureFlag

source§

fn not(self) -> Self

Returns the complement of this set of flags.

+
§

type Output = HlFailureFlag

The resulting type after applying the ! operator.
source§

impl Octal for HlFailureFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for HlFailureFlag

source§

fn cmp(&self, other: &HlFailureFlag) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for HlFailureFlag

source§

fn eq(&self, other: &HlFailureFlag) -> bool

This method tests for self and other values to be equal, and is used @@ -75,8 +75,8 @@
§Safety
operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl Serialize for HlFailureFlag

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Sub for HlFailureFlag

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

-
§

type Output = HlFailureFlag

The resulting type after applying the - operator.
source§

impl SubAssign for HlFailureFlag

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

-
source§

impl UpperHex for HlFailureFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for HlFailureFlag

source§

impl Eq for HlFailureFlag

source§

impl StructuralPartialEq for HlFailureFlag

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

§

type Output = HlFailureFlag

The resulting type after applying the - operator.
source§

impl SubAssign for HlFailureFlag

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

+
source§

impl UpperHex for HlFailureFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for HlFailureFlag

source§

impl Eq for HlFailureFlag

source§

impl StructuralPartialEq for HlFailureFlag

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/mavlink/uavionix/struct.MavEventCurrentSequenceFlags.html b/mavlink/uavionix/struct.MavEventCurrentSequenceFlags.html index cc8d4024c1..0ebcef8109 100644 --- a/mavlink/uavionix/struct.MavEventCurrentSequenceFlags.html +++ b/mavlink/uavionix/struct.MavEventCurrentSequenceFlags.html @@ -56,17 +56,17 @@
§Safety
between Self::all() and self (e.g. Self::all() - self)

This is equivalent to using the ! operator (e.g. ops::Not), as in !flags.

-
source§

impl MavEventCurrentSequenceFlags

source

pub const DEFAULT: Self = Self::MAV_EVENT_CURRENT_SEQUENCE_FLAGS_RESET

Trait Implementations§

source§

impl Binary for MavEventCurrentSequenceFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for MavEventCurrentSequenceFlags

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

+
source§

impl MavEventCurrentSequenceFlags

source

pub const DEFAULT: Self = Self::MAV_EVENT_CURRENT_SEQUENCE_FLAGS_RESET

Trait Implementations§

source§

impl Binary for MavEventCurrentSequenceFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for MavEventCurrentSequenceFlags

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

§

type Output = MavEventCurrentSequenceFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for MavEventCurrentSequenceFlags

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

source§

impl BitOr for MavEventCurrentSequenceFlags

source§

fn bitor(self, other: MavEventCurrentSequenceFlags) -> Self

Returns the union of the two sets of flags.

-
§

type Output = MavEventCurrentSequenceFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for MavEventCurrentSequenceFlags

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
§

type Output = MavEventCurrentSequenceFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for MavEventCurrentSequenceFlags

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

source§

impl BitXor for MavEventCurrentSequenceFlags

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

-
§

type Output = MavEventCurrentSequenceFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for MavEventCurrentSequenceFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

-
source§

impl Clone for MavEventCurrentSequenceFlags

source§

fn clone(&self) -> MavEventCurrentSequenceFlags

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for MavEventCurrentSequenceFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for MavEventCurrentSequenceFlags

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for MavEventCurrentSequenceFlags

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where +

§

type Output = MavEventCurrentSequenceFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for MavEventCurrentSequenceFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
source§

impl Clone for MavEventCurrentSequenceFlags

source§

fn clone(&self) -> MavEventCurrentSequenceFlags

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for MavEventCurrentSequenceFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for MavEventCurrentSequenceFlags

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for MavEventCurrentSequenceFlags

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Extend<MavEventCurrentSequenceFlags> for MavEventCurrentSequenceFlags

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<MavEventCurrentSequenceFlags> for MavEventCurrentSequenceFlags

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for MavEventCurrentSequenceFlags

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for MavEventCurrentSequenceFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for MavEventCurrentSequenceFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = MavEventCurrentSequenceFlags

The resulting type after applying the ! operator.
source§

impl Octal for MavEventCurrentSequenceFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for MavEventCurrentSequenceFlags

source§

fn cmp(&self, other: &MavEventCurrentSequenceFlags) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for MavEventCurrentSequenceFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for MavEventCurrentSequenceFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

+
§

type Output = MavEventCurrentSequenceFlags

The resulting type after applying the ! operator.
source§

impl Octal for MavEventCurrentSequenceFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for MavEventCurrentSequenceFlags

source§

fn cmp(&self, other: &MavEventCurrentSequenceFlags) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for MavEventCurrentSequenceFlags

source§

fn eq(&self, other: &MavEventCurrentSequenceFlags) -> bool

This method tests for self and other values to be equal, and is used @@ -75,7 +75,7 @@
§Safety
operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl Serialize for MavEventCurrentSequenceFlags

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Sub for MavEventCurrentSequenceFlags

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

-
§

type Output = MavEventCurrentSequenceFlags

The resulting type after applying the - operator.
source§

impl SubAssign for MavEventCurrentSequenceFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

+
§

type Output = MavEventCurrentSequenceFlags

The resulting type after applying the - operator.
source§

impl SubAssign for MavEventCurrentSequenceFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

source§

impl UpperHex for MavEventCurrentSequenceFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for MavEventCurrentSequenceFlags

source§

impl Eq for MavEventCurrentSequenceFlags

source§

impl StructuralPartialEq for MavEventCurrentSequenceFlags

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where diff --git a/mavlink/uavionix/struct.MavGeneratorStatusFlag.html b/mavlink/uavionix/struct.MavGeneratorStatusFlag.html index 8b17416918..8dce47c443 100644 --- a/mavlink/uavionix/struct.MavGeneratorStatusFlag.html +++ b/mavlink/uavionix/struct.MavGeneratorStatusFlag.html @@ -56,17 +56,17 @@
§Safety
between Self::all() and self (e.g. Self::all() - self)

This is equivalent to using the ! operator (e.g. ops::Not), as in !flags.

-

source§

impl MavGeneratorStatusFlag

source

pub const DEFAULT: Self = Self::MAV_GENERATOR_STATUS_FLAG_OFF

Trait Implementations§

source§

impl Binary for MavGeneratorStatusFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for MavGeneratorStatusFlag

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

+
source§

impl MavGeneratorStatusFlag

source

pub const DEFAULT: Self = Self::MAV_GENERATOR_STATUS_FLAG_OFF

Trait Implementations§

source§

impl Binary for MavGeneratorStatusFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for MavGeneratorStatusFlag

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

§

type Output = MavGeneratorStatusFlag

The resulting type after applying the & operator.
source§

impl BitAndAssign for MavGeneratorStatusFlag

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

source§

impl BitOr for MavGeneratorStatusFlag

source§

fn bitor(self, other: MavGeneratorStatusFlag) -> Self

Returns the union of the two sets of flags.

-
§

type Output = MavGeneratorStatusFlag

The resulting type after applying the | operator.
source§

impl BitOrAssign for MavGeneratorStatusFlag

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
§

type Output = MavGeneratorStatusFlag

The resulting type after applying the | operator.
source§

impl BitOrAssign for MavGeneratorStatusFlag

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

source§

impl BitXor for MavGeneratorStatusFlag

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

-
§

type Output = MavGeneratorStatusFlag

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for MavGeneratorStatusFlag

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

-
source§

impl Clone for MavGeneratorStatusFlag

source§

fn clone(&self) -> MavGeneratorStatusFlag

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for MavGeneratorStatusFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for MavGeneratorStatusFlag

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for MavGeneratorStatusFlag

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where +

§

type Output = MavGeneratorStatusFlag

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for MavGeneratorStatusFlag

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
source§

impl Clone for MavGeneratorStatusFlag

source§

fn clone(&self) -> MavGeneratorStatusFlag

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for MavGeneratorStatusFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for MavGeneratorStatusFlag

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for MavGeneratorStatusFlag

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Extend<MavGeneratorStatusFlag> for MavGeneratorStatusFlag

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<MavGeneratorStatusFlag> for MavGeneratorStatusFlag

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for MavGeneratorStatusFlag

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for MavGeneratorStatusFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for MavGeneratorStatusFlag

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = MavGeneratorStatusFlag

The resulting type after applying the ! operator.
source§

impl Octal for MavGeneratorStatusFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for MavGeneratorStatusFlag

source§

fn cmp(&self, other: &MavGeneratorStatusFlag) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for MavGeneratorStatusFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for MavGeneratorStatusFlag

source§

fn not(self) -> Self

Returns the complement of this set of flags.

+
§

type Output = MavGeneratorStatusFlag

The resulting type after applying the ! operator.
source§

impl Octal for MavGeneratorStatusFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for MavGeneratorStatusFlag

source§

fn cmp(&self, other: &MavGeneratorStatusFlag) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for MavGeneratorStatusFlag

source§

fn eq(&self, other: &MavGeneratorStatusFlag) -> bool

This method tests for self and other values to be equal, and is used @@ -75,8 +75,8 @@
§Safety
operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl Serialize for MavGeneratorStatusFlag

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Sub for MavGeneratorStatusFlag

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

-
§

type Output = MavGeneratorStatusFlag

The resulting type after applying the - operator.
source§

impl SubAssign for MavGeneratorStatusFlag

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

-
source§

impl UpperHex for MavGeneratorStatusFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for MavGeneratorStatusFlag

source§

impl Eq for MavGeneratorStatusFlag

source§

impl StructuralPartialEq for MavGeneratorStatusFlag

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

§

type Output = MavGeneratorStatusFlag

The resulting type after applying the - operator.
source§

impl SubAssign for MavGeneratorStatusFlag

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

+
source§

impl UpperHex for MavGeneratorStatusFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for MavGeneratorStatusFlag

source§

impl Eq for MavGeneratorStatusFlag

source§

impl StructuralPartialEq for MavGeneratorStatusFlag

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/mavlink/uavionix/struct.MavModeFlag.html b/mavlink/uavionix/struct.MavModeFlag.html index 0fb694f291..b8fcdcbac7 100644 --- a/mavlink/uavionix/struct.MavModeFlag.html +++ b/mavlink/uavionix/struct.MavModeFlag.html @@ -56,17 +56,17 @@
§Safety
between Self::all() and self (e.g. Self::all() - self)

This is equivalent to using the ! operator (e.g. ops::Not), as in !flags.

-
source§

impl MavModeFlag

source

pub const DEFAULT: Self = Self::MAV_MODE_FLAG_SAFETY_ARMED

Trait Implementations§

source§

impl Binary for MavModeFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for MavModeFlag

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

-
§

type Output = MavModeFlag

The resulting type after applying the & operator.
source§

impl BitAndAssign for MavModeFlag

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

+
source§

impl MavModeFlag

source

pub const DEFAULT: Self = Self::MAV_MODE_FLAG_SAFETY_ARMED

Trait Implementations§

source§

impl Binary for MavModeFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for MavModeFlag

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

+
§

type Output = MavModeFlag

The resulting type after applying the & operator.
source§

impl BitAndAssign for MavModeFlag

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

source§

impl BitOr for MavModeFlag

source§

fn bitor(self, other: MavModeFlag) -> Self

Returns the union of the two sets of flags.

§

type Output = MavModeFlag

The resulting type after applying the | operator.
source§

impl BitOrAssign for MavModeFlag

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

source§

impl BitXor for MavModeFlag

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

-
§

type Output = MavModeFlag

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for MavModeFlag

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

-
source§

impl Clone for MavModeFlag

source§

fn clone(&self) -> MavModeFlag

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for MavModeFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for MavModeFlag

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for MavModeFlag

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where +

§

type Output = MavModeFlag

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for MavModeFlag

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
source§

impl Clone for MavModeFlag

source§

fn clone(&self) -> MavModeFlag

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for MavModeFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for MavModeFlag

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for MavModeFlag

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Extend<MavModeFlag> for MavModeFlag

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<MavModeFlag> for MavModeFlag

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for MavModeFlag

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for MavModeFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for MavModeFlag

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = MavModeFlag

The resulting type after applying the ! operator.
source§

impl Octal for MavModeFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for MavModeFlag

source§

fn cmp(&self, other: &MavModeFlag) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for MavModeFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for MavModeFlag

source§

fn not(self) -> Self

Returns the complement of this set of flags.

+
§

type Output = MavModeFlag

The resulting type after applying the ! operator.
source§

impl Octal for MavModeFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for MavModeFlag

source§

fn cmp(&self, other: &MavModeFlag) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for MavModeFlag

source§

fn eq(&self, other: &MavModeFlag) -> bool

This method tests for self and other values to be equal, and is used @@ -75,8 +75,8 @@
§Safety
operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl Serialize for MavModeFlag

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Sub for MavModeFlag

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

-
§

type Output = MavModeFlag

The resulting type after applying the - operator.
source§

impl SubAssign for MavModeFlag

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

-
source§

impl UpperHex for MavModeFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for MavModeFlag

source§

impl Eq for MavModeFlag

source§

impl StructuralPartialEq for MavModeFlag

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

§

type Output = MavModeFlag

The resulting type after applying the - operator.
source§

impl SubAssign for MavModeFlag

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

+
source§

impl UpperHex for MavModeFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for MavModeFlag

source§

impl Eq for MavModeFlag

source§

impl StructuralPartialEq for MavModeFlag

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/mavlink/uavionix/struct.MavPowerStatus.html b/mavlink/uavionix/struct.MavPowerStatus.html index f494096b14..478c92ebbb 100644 --- a/mavlink/uavionix/struct.MavPowerStatus.html +++ b/mavlink/uavionix/struct.MavPowerStatus.html @@ -56,17 +56,17 @@
§Safety
between Self::all() and self (e.g. Self::all() - self)

This is equivalent to using the ! operator (e.g. ops::Not), as in !flags.

-
source§

impl MavPowerStatus

source

pub const DEFAULT: Self = Self::MAV_POWER_STATUS_BRICK_VALID

Trait Implementations§

source§

impl Binary for MavPowerStatus

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for MavPowerStatus

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

-
§

type Output = MavPowerStatus

The resulting type after applying the & operator.
source§

impl BitAndAssign for MavPowerStatus

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

+
source§

impl MavPowerStatus

source

pub const DEFAULT: Self = Self::MAV_POWER_STATUS_BRICK_VALID

Trait Implementations§

source§

impl Binary for MavPowerStatus

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for MavPowerStatus

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

+
§

type Output = MavPowerStatus

The resulting type after applying the & operator.
source§

impl BitAndAssign for MavPowerStatus

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

source§

impl BitOr for MavPowerStatus

source§

fn bitor(self, other: MavPowerStatus) -> Self

Returns the union of the two sets of flags.

-
§

type Output = MavPowerStatus

The resulting type after applying the | operator.
source§

impl BitOrAssign for MavPowerStatus

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
§

type Output = MavPowerStatus

The resulting type after applying the | operator.
source§

impl BitOrAssign for MavPowerStatus

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

source§

impl BitXor for MavPowerStatus

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

-
§

type Output = MavPowerStatus

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for MavPowerStatus

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

-
source§

impl Clone for MavPowerStatus

source§

fn clone(&self) -> MavPowerStatus

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for MavPowerStatus

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for MavPowerStatus

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for MavPowerStatus

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where +

§

type Output = MavPowerStatus

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for MavPowerStatus

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
source§

impl Clone for MavPowerStatus

source§

fn clone(&self) -> MavPowerStatus

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for MavPowerStatus

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for MavPowerStatus

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for MavPowerStatus

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Extend<MavPowerStatus> for MavPowerStatus

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<MavPowerStatus> for MavPowerStatus

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for MavPowerStatus

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for MavPowerStatus

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for MavPowerStatus

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = MavPowerStatus

The resulting type after applying the ! operator.
source§

impl Octal for MavPowerStatus

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for MavPowerStatus

source§

fn cmp(&self, other: &MavPowerStatus) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where +

§

type Output = MavPowerStatus

The resulting type after applying the ! operator.
source§

impl Octal for MavPowerStatus

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for MavPowerStatus

source§

fn cmp(&self, other: &MavPowerStatus) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for MavPowerStatus

source§

fn eq(&self, other: &MavPowerStatus) -> bool

This method tests for self and other values to be equal, and is used @@ -75,8 +75,8 @@
§Safety
operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl Serialize for MavPowerStatus

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Sub for MavPowerStatus

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

-
§

type Output = MavPowerStatus

The resulting type after applying the - operator.
source§

impl SubAssign for MavPowerStatus

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

-
source§

impl UpperHex for MavPowerStatus

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for MavPowerStatus

source§

impl Eq for MavPowerStatus

source§

impl StructuralPartialEq for MavPowerStatus

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

§

type Output = MavPowerStatus

The resulting type after applying the - operator.
source§

impl SubAssign for MavPowerStatus

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

+
source§

impl UpperHex for MavPowerStatus

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for MavPowerStatus

source§

impl Eq for MavPowerStatus

source§

impl StructuralPartialEq for MavPowerStatus

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/mavlink/uavionix/struct.MavProtocolCapability.html b/mavlink/uavionix/struct.MavProtocolCapability.html index 7e6b9ca95c..a3d8f0599e 100644 --- a/mavlink/uavionix/struct.MavProtocolCapability.html +++ b/mavlink/uavionix/struct.MavProtocolCapability.html @@ -56,17 +56,17 @@
§Safety
between Self::all() and self (e.g. Self::all() - self)

This is equivalent to using the ! operator (e.g. ops::Not), as in !flags.

-
source§

impl MavProtocolCapability

source

pub const DEFAULT: Self = Self::MAV_PROTOCOL_CAPABILITY_MISSION_FLOAT

Trait Implementations§

source§

impl Binary for MavProtocolCapability

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for MavProtocolCapability

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

-
§

type Output = MavProtocolCapability

The resulting type after applying the & operator.
source§

impl BitAndAssign for MavProtocolCapability

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

+
source§

impl MavProtocolCapability

source

pub const DEFAULT: Self = Self::MAV_PROTOCOL_CAPABILITY_MISSION_FLOAT

Trait Implementations§

source§

impl Binary for MavProtocolCapability

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for MavProtocolCapability

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

+
§

type Output = MavProtocolCapability

The resulting type after applying the & operator.
source§

impl BitAndAssign for MavProtocolCapability

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

source§

impl BitOr for MavProtocolCapability

source§

fn bitor(self, other: MavProtocolCapability) -> Self

Returns the union of the two sets of flags.

-
§

type Output = MavProtocolCapability

The resulting type after applying the | operator.
source§

impl BitOrAssign for MavProtocolCapability

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
§

type Output = MavProtocolCapability

The resulting type after applying the | operator.
source§

impl BitOrAssign for MavProtocolCapability

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

source§

impl BitXor for MavProtocolCapability

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

-
§

type Output = MavProtocolCapability

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for MavProtocolCapability

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

-
source§

impl Clone for MavProtocolCapability

source§

fn clone(&self) -> MavProtocolCapability

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for MavProtocolCapability

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for MavProtocolCapability

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for MavProtocolCapability

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where +

§

type Output = MavProtocolCapability

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for MavProtocolCapability

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
source§

impl Clone for MavProtocolCapability

source§

fn clone(&self) -> MavProtocolCapability

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for MavProtocolCapability

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for MavProtocolCapability

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for MavProtocolCapability

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Extend<MavProtocolCapability> for MavProtocolCapability

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<MavProtocolCapability> for MavProtocolCapability

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for MavProtocolCapability

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for MavProtocolCapability

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for MavProtocolCapability

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = MavProtocolCapability

The resulting type after applying the ! operator.
source§

impl Octal for MavProtocolCapability

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for MavProtocolCapability

source§

fn cmp(&self, other: &MavProtocolCapability) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for MavProtocolCapability

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for MavProtocolCapability

source§

fn not(self) -> Self

Returns the complement of this set of flags.

+
§

type Output = MavProtocolCapability

The resulting type after applying the ! operator.
source§

impl Octal for MavProtocolCapability

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for MavProtocolCapability

source§

fn cmp(&self, other: &MavProtocolCapability) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for MavProtocolCapability

source§

fn eq(&self, other: &MavProtocolCapability) -> bool

This method tests for self and other values to be equal, and is used @@ -75,8 +75,8 @@
§Safety
operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl Serialize for MavProtocolCapability

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Sub for MavProtocolCapability

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

-
§

type Output = MavProtocolCapability

The resulting type after applying the - operator.
source§

impl SubAssign for MavProtocolCapability

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

-
source§

impl UpperHex for MavProtocolCapability

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for MavProtocolCapability

source§

impl Eq for MavProtocolCapability

source§

impl StructuralPartialEq for MavProtocolCapability

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

§

type Output = MavProtocolCapability

The resulting type after applying the - operator.
source§

impl SubAssign for MavProtocolCapability

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

+
source§

impl UpperHex for MavProtocolCapability

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for MavProtocolCapability

source§

impl Eq for MavProtocolCapability

source§

impl StructuralPartialEq for MavProtocolCapability

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/mavlink/uavionix/struct.MavSysStatusSensor.html b/mavlink/uavionix/struct.MavSysStatusSensor.html index 77c72f9eed..97d5487da0 100644 --- a/mavlink/uavionix/struct.MavSysStatusSensor.html +++ b/mavlink/uavionix/struct.MavSysStatusSensor.html @@ -56,17 +56,17 @@
§Safety
between Self::all() and self (e.g. Self::all() - self)

This is equivalent to using the ! operator (e.g. ops::Not), as in !flags.

-
source§

impl MavSysStatusSensor

source

pub const DEFAULT: Self = Self::MAV_SYS_STATUS_SENSOR_3D_GYRO

Trait Implementations§

source§

impl Binary for MavSysStatusSensor

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for MavSysStatusSensor

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

-
§

type Output = MavSysStatusSensor

The resulting type after applying the & operator.
source§

impl BitAndAssign for MavSysStatusSensor

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

+
source§

impl MavSysStatusSensor

source

pub const DEFAULT: Self = Self::MAV_SYS_STATUS_SENSOR_3D_GYRO

Trait Implementations§

source§

impl Binary for MavSysStatusSensor

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for MavSysStatusSensor

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

+
§

type Output = MavSysStatusSensor

The resulting type after applying the & operator.
source§

impl BitAndAssign for MavSysStatusSensor

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

source§

impl BitOr for MavSysStatusSensor

source§

fn bitor(self, other: MavSysStatusSensor) -> Self

Returns the union of the two sets of flags.

-
§

type Output = MavSysStatusSensor

The resulting type after applying the | operator.
source§

impl BitOrAssign for MavSysStatusSensor

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
§

type Output = MavSysStatusSensor

The resulting type after applying the | operator.
source§

impl BitOrAssign for MavSysStatusSensor

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

source§

impl BitXor for MavSysStatusSensor

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

-
§

type Output = MavSysStatusSensor

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for MavSysStatusSensor

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

-
source§

impl Clone for MavSysStatusSensor

source§

fn clone(&self) -> MavSysStatusSensor

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for MavSysStatusSensor

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for MavSysStatusSensor

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for MavSysStatusSensor

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where +

§

type Output = MavSysStatusSensor

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for MavSysStatusSensor

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
source§

impl Clone for MavSysStatusSensor

source§

fn clone(&self) -> MavSysStatusSensor

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for MavSysStatusSensor

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for MavSysStatusSensor

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for MavSysStatusSensor

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Extend<MavSysStatusSensor> for MavSysStatusSensor

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<MavSysStatusSensor> for MavSysStatusSensor

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for MavSysStatusSensor

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for MavSysStatusSensor

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for MavSysStatusSensor

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = MavSysStatusSensor

The resulting type after applying the ! operator.
source§

impl Octal for MavSysStatusSensor

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for MavSysStatusSensor

source§

fn cmp(&self, other: &MavSysStatusSensor) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for MavSysStatusSensor

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for MavSysStatusSensor

source§

fn not(self) -> Self

Returns the complement of this set of flags.

+
§

type Output = MavSysStatusSensor

The resulting type after applying the ! operator.
source§

impl Octal for MavSysStatusSensor

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for MavSysStatusSensor

source§

fn cmp(&self, other: &MavSysStatusSensor) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for MavSysStatusSensor

source§

fn eq(&self, other: &MavSysStatusSensor) -> bool

This method tests for self and other values to be equal, and is used @@ -76,7 +76,7 @@
§Safety
operator. Read more
source§

impl Serialize for MavSysStatusSensor

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Sub for MavSysStatusSensor

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

§

type Output = MavSysStatusSensor

The resulting type after applying the - operator.
source§

impl SubAssign for MavSysStatusSensor

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

-
source§

impl UpperHex for MavSysStatusSensor

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for MavSysStatusSensor

source§

impl Eq for MavSysStatusSensor

source§

impl StructuralPartialEq for MavSysStatusSensor

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

source§

impl UpperHex for MavSysStatusSensor

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for MavSysStatusSensor

source§

impl Eq for MavSysStatusSensor

source§

impl StructuralPartialEq for MavSysStatusSensor

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/mavlink/uavionix/struct.MavWinchStatusFlag.html b/mavlink/uavionix/struct.MavWinchStatusFlag.html index 6cd4ba44f8..007e888c45 100644 --- a/mavlink/uavionix/struct.MavWinchStatusFlag.html +++ b/mavlink/uavionix/struct.MavWinchStatusFlag.html @@ -57,16 +57,16 @@
§Safety

This is equivalent to using the ! operator (e.g. ops::Not), as in !flags.

source§

impl MavWinchStatusFlag

source

pub const DEFAULT: Self = Self::MAV_WINCH_STATUS_HEALTHY

Trait Implementations§

source§

impl Binary for MavWinchStatusFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for MavWinchStatusFlag

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

-
§

type Output = MavWinchStatusFlag

The resulting type after applying the & operator.
source§

impl BitAndAssign for MavWinchStatusFlag

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

+
§

type Output = MavWinchStatusFlag

The resulting type after applying the & operator.
source§

impl BitAndAssign for MavWinchStatusFlag

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

source§

impl BitOr for MavWinchStatusFlag

source§

fn bitor(self, other: MavWinchStatusFlag) -> Self

Returns the union of the two sets of flags.

-
§

type Output = MavWinchStatusFlag

The resulting type after applying the | operator.
source§

impl BitOrAssign for MavWinchStatusFlag

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
§

type Output = MavWinchStatusFlag

The resulting type after applying the | operator.
source§

impl BitOrAssign for MavWinchStatusFlag

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

source§

impl BitXor for MavWinchStatusFlag

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

-
§

type Output = MavWinchStatusFlag

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for MavWinchStatusFlag

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

-
source§

impl Clone for MavWinchStatusFlag

source§

fn clone(&self) -> MavWinchStatusFlag

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for MavWinchStatusFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for MavWinchStatusFlag

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for MavWinchStatusFlag

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where +

§

type Output = MavWinchStatusFlag

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for MavWinchStatusFlag

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
source§

impl Clone for MavWinchStatusFlag

source§

fn clone(&self) -> MavWinchStatusFlag

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for MavWinchStatusFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for MavWinchStatusFlag

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for MavWinchStatusFlag

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Extend<MavWinchStatusFlag> for MavWinchStatusFlag

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<MavWinchStatusFlag> for MavWinchStatusFlag

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for MavWinchStatusFlag

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for MavWinchStatusFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for MavWinchStatusFlag

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = MavWinchStatusFlag

The resulting type after applying the ! operator.
source§

impl Octal for MavWinchStatusFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for MavWinchStatusFlag

source§

fn cmp(&self, other: &MavWinchStatusFlag) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where +

§

type Output = MavWinchStatusFlag

The resulting type after applying the ! operator.
source§

impl Octal for MavWinchStatusFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for MavWinchStatusFlag

source§

fn cmp(&self, other: &MavWinchStatusFlag) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for MavWinchStatusFlag

source§

fn eq(&self, other: &MavWinchStatusFlag) -> bool

This method tests for self and other values to be equal, and is used @@ -75,8 +75,8 @@
§Safety
operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl Serialize for MavWinchStatusFlag

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Sub for MavWinchStatusFlag

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

-
§

type Output = MavWinchStatusFlag

The resulting type after applying the - operator.
source§

impl SubAssign for MavWinchStatusFlag

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

-
source§

impl UpperHex for MavWinchStatusFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for MavWinchStatusFlag

source§

impl Eq for MavWinchStatusFlag

source§

impl StructuralPartialEq for MavWinchStatusFlag

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

§

type Output = MavWinchStatusFlag

The resulting type after applying the - operator.
source§

impl SubAssign for MavWinchStatusFlag

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

+
source§

impl UpperHex for MavWinchStatusFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for MavWinchStatusFlag

source§

impl Eq for MavWinchStatusFlag

source§

impl StructuralPartialEq for MavWinchStatusFlag

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/mavlink/uavionix/struct.PositionTargetTypemask.html b/mavlink/uavionix/struct.PositionTargetTypemask.html index 7b8fb97a80..ec2aa865da 100644 --- a/mavlink/uavionix/struct.PositionTargetTypemask.html +++ b/mavlink/uavionix/struct.PositionTargetTypemask.html @@ -56,17 +56,17 @@
§Safety
between Self::all() and self (e.g. Self::all() - self)

This is equivalent to using the ! operator (e.g. ops::Not), as in !flags.

-
source§

impl PositionTargetTypemask

source

pub const DEFAULT: Self = Self::POSITION_TARGET_TYPEMASK_X_IGNORE

Trait Implementations§

source§

impl Binary for PositionTargetTypemask

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for PositionTargetTypemask

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

-
§

type Output = PositionTargetTypemask

The resulting type after applying the & operator.
source§

impl BitAndAssign for PositionTargetTypemask

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

+
source§

impl PositionTargetTypemask

source

pub const DEFAULT: Self = Self::POSITION_TARGET_TYPEMASK_X_IGNORE

Trait Implementations§

source§

impl Binary for PositionTargetTypemask

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for PositionTargetTypemask

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

+
§

type Output = PositionTargetTypemask

The resulting type after applying the & operator.
source§

impl BitAndAssign for PositionTargetTypemask

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

source§

impl BitOr for PositionTargetTypemask

source§

fn bitor(self, other: PositionTargetTypemask) -> Self

Returns the union of the two sets of flags.

-
§

type Output = PositionTargetTypemask

The resulting type after applying the | operator.
source§

impl BitOrAssign for PositionTargetTypemask

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
§

type Output = PositionTargetTypemask

The resulting type after applying the | operator.
source§

impl BitOrAssign for PositionTargetTypemask

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

source§

impl BitXor for PositionTargetTypemask

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

-
§

type Output = PositionTargetTypemask

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for PositionTargetTypemask

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

-
source§

impl Clone for PositionTargetTypemask

source§

fn clone(&self) -> PositionTargetTypemask

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for PositionTargetTypemask

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for PositionTargetTypemask

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for PositionTargetTypemask

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where +

§

type Output = PositionTargetTypemask

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for PositionTargetTypemask

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
source§

impl Clone for PositionTargetTypemask

source§

fn clone(&self) -> PositionTargetTypemask

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for PositionTargetTypemask

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for PositionTargetTypemask

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for PositionTargetTypemask

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Extend<PositionTargetTypemask> for PositionTargetTypemask

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<PositionTargetTypemask> for PositionTargetTypemask

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for PositionTargetTypemask

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for PositionTargetTypemask

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for PositionTargetTypemask

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = PositionTargetTypemask

The resulting type after applying the ! operator.
source§

impl Octal for PositionTargetTypemask

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for PositionTargetTypemask

source§

fn cmp(&self, other: &PositionTargetTypemask) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where +

§

type Output = PositionTargetTypemask

The resulting type after applying the ! operator.
source§

impl Octal for PositionTargetTypemask

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for PositionTargetTypemask

source§

fn cmp(&self, other: &PositionTargetTypemask) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for PositionTargetTypemask

source§

fn eq(&self, other: &PositionTargetTypemask) -> bool

This method tests for self and other values to be equal, and is used @@ -75,7 +75,7 @@
§Safety
operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl Serialize for PositionTargetTypemask

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Sub for PositionTargetTypemask

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

-
§

type Output = PositionTargetTypemask

The resulting type after applying the - operator.
source§

impl SubAssign for PositionTargetTypemask

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

+
§

type Output = PositionTargetTypemask

The resulting type after applying the - operator.
source§

impl SubAssign for PositionTargetTypemask

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

source§

impl UpperHex for PositionTargetTypemask

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for PositionTargetTypemask

source§

impl Eq for PositionTargetTypemask

source§

impl StructuralPartialEq for PositionTargetTypemask

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where diff --git a/mavlink/uavionix/struct.SerialControlFlag.html b/mavlink/uavionix/struct.SerialControlFlag.html index a76851df5a..706a653da3 100644 --- a/mavlink/uavionix/struct.SerialControlFlag.html +++ b/mavlink/uavionix/struct.SerialControlFlag.html @@ -56,17 +56,17 @@
§Safety
between Self::all() and self (e.g. Self::all() - self)

This is equivalent to using the ! operator (e.g. ops::Not), as in !flags.

-

source§

impl SerialControlFlag

source

pub const DEFAULT: Self = Self::SERIAL_CONTROL_FLAG_REPLY

Trait Implementations§

source§

impl Binary for SerialControlFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for SerialControlFlag

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

+
source§

impl SerialControlFlag

source

pub const DEFAULT: Self = Self::SERIAL_CONTROL_FLAG_REPLY

Trait Implementations§

source§

impl Binary for SerialControlFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for SerialControlFlag

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

§

type Output = SerialControlFlag

The resulting type after applying the & operator.
source§

impl BitAndAssign for SerialControlFlag

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

source§

impl BitOr for SerialControlFlag

source§

fn bitor(self, other: SerialControlFlag) -> Self

Returns the union of the two sets of flags.

-
§

type Output = SerialControlFlag

The resulting type after applying the | operator.
source§

impl BitOrAssign for SerialControlFlag

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
§

type Output = SerialControlFlag

The resulting type after applying the | operator.
source§

impl BitOrAssign for SerialControlFlag

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

source§

impl BitXor for SerialControlFlag

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

-
§

type Output = SerialControlFlag

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for SerialControlFlag

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

-
source§

impl Clone for SerialControlFlag

source§

fn clone(&self) -> SerialControlFlag

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for SerialControlFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for SerialControlFlag

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for SerialControlFlag

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where +

§

type Output = SerialControlFlag

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for SerialControlFlag

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
source§

impl Clone for SerialControlFlag

source§

fn clone(&self) -> SerialControlFlag

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for SerialControlFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for SerialControlFlag

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for SerialControlFlag

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Extend<SerialControlFlag> for SerialControlFlag

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<SerialControlFlag> for SerialControlFlag

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for SerialControlFlag

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for SerialControlFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for SerialControlFlag

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = SerialControlFlag

The resulting type after applying the ! operator.
source§

impl Octal for SerialControlFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for SerialControlFlag

source§

fn cmp(&self, other: &SerialControlFlag) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for SerialControlFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for SerialControlFlag

source§

fn not(self) -> Self

Returns the complement of this set of flags.

+
§

type Output = SerialControlFlag

The resulting type after applying the ! operator.
source§

impl Octal for SerialControlFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for SerialControlFlag

source§

fn cmp(&self, other: &SerialControlFlag) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for SerialControlFlag

source§

fn eq(&self, other: &SerialControlFlag) -> bool

This method tests for self and other values to be equal, and is used @@ -76,7 +76,7 @@
§Safety
operator. Read more
source§

impl Serialize for SerialControlFlag

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Sub for SerialControlFlag

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

§

type Output = SerialControlFlag

The resulting type after applying the - operator.
source§

impl SubAssign for SerialControlFlag

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

-
source§

impl UpperHex for SerialControlFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for SerialControlFlag

source§

impl Eq for SerialControlFlag

source§

impl StructuralPartialEq for SerialControlFlag

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

source§

impl UpperHex for SerialControlFlag

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for SerialControlFlag

source§

impl Eq for SerialControlFlag

source§

impl StructuralPartialEq for SerialControlFlag

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/mavlink/uavionix/struct.TuneFormat.html b/mavlink/uavionix/struct.TuneFormat.html index f8a215f350..85752017fe 100644 --- a/mavlink/uavionix/struct.TuneFormat.html +++ b/mavlink/uavionix/struct.TuneFormat.html @@ -56,17 +56,17 @@
§Safety
between Self::all() and self (e.g. Self::all() - self)

This is equivalent to using the ! operator (e.g. ops::Not), as in !flags.

-
source§

impl TuneFormat

source

pub const DEFAULT: Self = Self::TUNE_FORMAT_QBASIC1_1

Trait Implementations§

source§

impl Binary for TuneFormat

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for TuneFormat

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

-
§

type Output = TuneFormat

The resulting type after applying the & operator.
source§

impl BitAndAssign for TuneFormat

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

+
source§

impl TuneFormat

source

pub const DEFAULT: Self = Self::TUNE_FORMAT_QBASIC1_1

Trait Implementations§

source§

impl Binary for TuneFormat

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for TuneFormat

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

+
§

type Output = TuneFormat

The resulting type after applying the & operator.
source§

impl BitAndAssign for TuneFormat

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

source§

impl BitOr for TuneFormat

source§

fn bitor(self, other: TuneFormat) -> Self

Returns the union of the two sets of flags.

-
§

type Output = TuneFormat

The resulting type after applying the | operator.
source§

impl BitOrAssign for TuneFormat

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
§

type Output = TuneFormat

The resulting type after applying the | operator.
source§

impl BitOrAssign for TuneFormat

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

source§

impl BitXor for TuneFormat

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

-
§

type Output = TuneFormat

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for TuneFormat

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

-
source§

impl Clone for TuneFormat

source§

fn clone(&self) -> TuneFormat

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for TuneFormat

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for TuneFormat

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for TuneFormat

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where +

§

type Output = TuneFormat

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for TuneFormat

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
source§

impl Clone for TuneFormat

source§

fn clone(&self) -> TuneFormat

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for TuneFormat

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for TuneFormat

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for TuneFormat

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Extend<TuneFormat> for TuneFormat

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<TuneFormat> for TuneFormat

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for TuneFormat

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for TuneFormat

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for TuneFormat

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = TuneFormat

The resulting type after applying the ! operator.
source§

impl Octal for TuneFormat

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for TuneFormat

source§

fn cmp(&self, other: &TuneFormat) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for TuneFormat

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for TuneFormat

source§

fn not(self) -> Self

Returns the complement of this set of flags.

+
§

type Output = TuneFormat

The resulting type after applying the ! operator.
source§

impl Octal for TuneFormat

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for TuneFormat

source§

fn cmp(&self, other: &TuneFormat) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for TuneFormat

source§

fn eq(&self, other: &TuneFormat) -> bool

This method tests for self and other values to be equal, and is used @@ -75,7 +75,7 @@
§Safety
operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl Serialize for TuneFormat

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Sub for TuneFormat

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

-
§

type Output = TuneFormat

The resulting type after applying the - operator.
source§

impl SubAssign for TuneFormat

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

+
§

type Output = TuneFormat

The resulting type after applying the - operator.
source§

impl SubAssign for TuneFormat

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

source§

impl UpperHex for TuneFormat

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for TuneFormat

source§

impl Eq for TuneFormat

source§

impl StructuralPartialEq for TuneFormat

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where diff --git a/mavlink/uavionix/struct.UavionixAdsbOutDynamicState.html b/mavlink/uavionix/struct.UavionixAdsbOutDynamicState.html index 33fd865da3..e648cd7d44 100644 --- a/mavlink/uavionix/struct.UavionixAdsbOutDynamicState.html +++ b/mavlink/uavionix/struct.UavionixAdsbOutDynamicState.html @@ -56,17 +56,17 @@
§Safety
between Self::all() and self (e.g. Self::all() - self)

This is equivalent to using the ! operator (e.g. ops::Not), as in !flags.

-

source§

impl UavionixAdsbOutDynamicState

source

pub const DEFAULT: Self = Self::UAVIONIX_ADSB_OUT_DYNAMIC_STATE_INTENT_CHANGE

Trait Implementations§

source§

impl Binary for UavionixAdsbOutDynamicState

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for UavionixAdsbOutDynamicState

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

+
source§

impl UavionixAdsbOutDynamicState

source

pub const DEFAULT: Self = Self::UAVIONIX_ADSB_OUT_DYNAMIC_STATE_INTENT_CHANGE

Trait Implementations§

source§

impl Binary for UavionixAdsbOutDynamicState

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for UavionixAdsbOutDynamicState

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

§

type Output = UavionixAdsbOutDynamicState

The resulting type after applying the & operator.
source§

impl BitAndAssign for UavionixAdsbOutDynamicState

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

source§

impl BitOr for UavionixAdsbOutDynamicState

source§

fn bitor(self, other: UavionixAdsbOutDynamicState) -> Self

Returns the union of the two sets of flags.

-
§

type Output = UavionixAdsbOutDynamicState

The resulting type after applying the | operator.
source§

impl BitOrAssign for UavionixAdsbOutDynamicState

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
§

type Output = UavionixAdsbOutDynamicState

The resulting type after applying the | operator.
source§

impl BitOrAssign for UavionixAdsbOutDynamicState

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

source§

impl BitXor for UavionixAdsbOutDynamicState

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

-
§

type Output = UavionixAdsbOutDynamicState

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for UavionixAdsbOutDynamicState

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

-
source§

impl Clone for UavionixAdsbOutDynamicState

source§

fn clone(&self) -> UavionixAdsbOutDynamicState

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for UavionixAdsbOutDynamicState

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for UavionixAdsbOutDynamicState

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for UavionixAdsbOutDynamicState

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where +

§

type Output = UavionixAdsbOutDynamicState

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for UavionixAdsbOutDynamicState

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
source§

impl Clone for UavionixAdsbOutDynamicState

source§

fn clone(&self) -> UavionixAdsbOutDynamicState

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for UavionixAdsbOutDynamicState

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for UavionixAdsbOutDynamicState

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for UavionixAdsbOutDynamicState

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Extend<UavionixAdsbOutDynamicState> for UavionixAdsbOutDynamicState

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<UavionixAdsbOutDynamicState> for UavionixAdsbOutDynamicState

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for UavionixAdsbOutDynamicState

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for UavionixAdsbOutDynamicState

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for UavionixAdsbOutDynamicState

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = UavionixAdsbOutDynamicState

The resulting type after applying the ! operator.
source§

impl Octal for UavionixAdsbOutDynamicState

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for UavionixAdsbOutDynamicState

source§

fn cmp(&self, other: &UavionixAdsbOutDynamicState) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for UavionixAdsbOutDynamicState

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for UavionixAdsbOutDynamicState

source§

fn not(self) -> Self

Returns the complement of this set of flags.

+
§

type Output = UavionixAdsbOutDynamicState

The resulting type after applying the ! operator.
source§

impl Octal for UavionixAdsbOutDynamicState

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for UavionixAdsbOutDynamicState

source§

fn cmp(&self, other: &UavionixAdsbOutDynamicState) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for UavionixAdsbOutDynamicState

source§

fn eq(&self, other: &UavionixAdsbOutDynamicState) -> bool

This method tests for self and other values to be equal, and is used @@ -75,8 +75,8 @@
§Safety
operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl Serialize for UavionixAdsbOutDynamicState

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Sub for UavionixAdsbOutDynamicState

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

-
§

type Output = UavionixAdsbOutDynamicState

The resulting type after applying the - operator.
source§

impl SubAssign for UavionixAdsbOutDynamicState

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

-
source§

impl UpperHex for UavionixAdsbOutDynamicState

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for UavionixAdsbOutDynamicState

source§

impl Eq for UavionixAdsbOutDynamicState

source§

impl StructuralPartialEq for UavionixAdsbOutDynamicState

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

§

type Output = UavionixAdsbOutDynamicState

The resulting type after applying the - operator.
source§

impl SubAssign for UavionixAdsbOutDynamicState

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

+
source§

impl UpperHex for UavionixAdsbOutDynamicState

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for UavionixAdsbOutDynamicState

source§

impl Eq for UavionixAdsbOutDynamicState

source§

impl StructuralPartialEq for UavionixAdsbOutDynamicState

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/mavlink/uavionix/struct.UavionixAdsbOutRfSelect.html b/mavlink/uavionix/struct.UavionixAdsbOutRfSelect.html index b98d1023b9..a34a68c785 100644 --- a/mavlink/uavionix/struct.UavionixAdsbOutRfSelect.html +++ b/mavlink/uavionix/struct.UavionixAdsbOutRfSelect.html @@ -56,17 +56,17 @@
§Safety
between Self::all() and self (e.g. Self::all() - self)

This is equivalent to using the ! operator (e.g. ops::Not), as in !flags.

-
source§

impl UavionixAdsbOutRfSelect

source

pub const DEFAULT: Self = Self::UAVIONIX_ADSB_OUT_RF_SELECT_STANDBY

Trait Implementations§

source§

impl Binary for UavionixAdsbOutRfSelect

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for UavionixAdsbOutRfSelect

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

-
§

type Output = UavionixAdsbOutRfSelect

The resulting type after applying the & operator.
source§

impl BitAndAssign for UavionixAdsbOutRfSelect

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

+
source§

impl UavionixAdsbOutRfSelect

source

pub const DEFAULT: Self = Self::UAVIONIX_ADSB_OUT_RF_SELECT_STANDBY

Trait Implementations§

source§

impl Binary for UavionixAdsbOutRfSelect

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for UavionixAdsbOutRfSelect

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

+
§

type Output = UavionixAdsbOutRfSelect

The resulting type after applying the & operator.
source§

impl BitAndAssign for UavionixAdsbOutRfSelect

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

source§

impl BitOr for UavionixAdsbOutRfSelect

source§

fn bitor(self, other: UavionixAdsbOutRfSelect) -> Self

Returns the union of the two sets of flags.

-
§

type Output = UavionixAdsbOutRfSelect

The resulting type after applying the | operator.
source§

impl BitOrAssign for UavionixAdsbOutRfSelect

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
§

type Output = UavionixAdsbOutRfSelect

The resulting type after applying the | operator.
source§

impl BitOrAssign for UavionixAdsbOutRfSelect

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

source§

impl BitXor for UavionixAdsbOutRfSelect

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

-
§

type Output = UavionixAdsbOutRfSelect

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for UavionixAdsbOutRfSelect

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

-
source§

impl Clone for UavionixAdsbOutRfSelect

source§

fn clone(&self) -> UavionixAdsbOutRfSelect

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for UavionixAdsbOutRfSelect

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for UavionixAdsbOutRfSelect

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for UavionixAdsbOutRfSelect

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where +

§

type Output = UavionixAdsbOutRfSelect

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for UavionixAdsbOutRfSelect

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
source§

impl Clone for UavionixAdsbOutRfSelect

source§

fn clone(&self) -> UavionixAdsbOutRfSelect

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for UavionixAdsbOutRfSelect

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for UavionixAdsbOutRfSelect

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for UavionixAdsbOutRfSelect

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Extend<UavionixAdsbOutRfSelect> for UavionixAdsbOutRfSelect

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<UavionixAdsbOutRfSelect> for UavionixAdsbOutRfSelect

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for UavionixAdsbOutRfSelect

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for UavionixAdsbOutRfSelect

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for UavionixAdsbOutRfSelect

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = UavionixAdsbOutRfSelect

The resulting type after applying the ! operator.
source§

impl Octal for UavionixAdsbOutRfSelect

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for UavionixAdsbOutRfSelect

source§

fn cmp(&self, other: &UavionixAdsbOutRfSelect) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for UavionixAdsbOutRfSelect

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for UavionixAdsbOutRfSelect

source§

fn not(self) -> Self

Returns the complement of this set of flags.

+
§

type Output = UavionixAdsbOutRfSelect

The resulting type after applying the ! operator.
source§

impl Octal for UavionixAdsbOutRfSelect

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for UavionixAdsbOutRfSelect

source§

fn cmp(&self, other: &UavionixAdsbOutRfSelect) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for UavionixAdsbOutRfSelect

source§

fn eq(&self, other: &UavionixAdsbOutRfSelect) -> bool

This method tests for self and other values to be equal, and is used @@ -75,7 +75,7 @@
§Safety
operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl Serialize for UavionixAdsbOutRfSelect

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Sub for UavionixAdsbOutRfSelect

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

-
§

type Output = UavionixAdsbOutRfSelect

The resulting type after applying the - operator.
source§

impl SubAssign for UavionixAdsbOutRfSelect

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

+
§

type Output = UavionixAdsbOutRfSelect

The resulting type after applying the - operator.
source§

impl SubAssign for UavionixAdsbOutRfSelect

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

source§

impl UpperHex for UavionixAdsbOutRfSelect

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for UavionixAdsbOutRfSelect

source§

impl Eq for UavionixAdsbOutRfSelect

source§

impl StructuralPartialEq for UavionixAdsbOutRfSelect

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where diff --git a/mavlink/uavionix/struct.UavionixAdsbRfHealth.html b/mavlink/uavionix/struct.UavionixAdsbRfHealth.html index 92eea4cb56..6441dbe18e 100644 --- a/mavlink/uavionix/struct.UavionixAdsbRfHealth.html +++ b/mavlink/uavionix/struct.UavionixAdsbRfHealth.html @@ -56,17 +56,17 @@
§Safety
between Self::all() and self (e.g. Self::all() - self)

This is equivalent to using the ! operator (e.g. ops::Not), as in !flags.

-

source§

impl UavionixAdsbRfHealth

source

pub const DEFAULT: Self = Self::UAVIONIX_ADSB_RF_HEALTH_INITIALIZING

Trait Implementations§

source§

impl Binary for UavionixAdsbRfHealth

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for UavionixAdsbRfHealth

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

+
source§

impl UavionixAdsbRfHealth

source

pub const DEFAULT: Self = Self::UAVIONIX_ADSB_RF_HEALTH_INITIALIZING

Trait Implementations§

source§

impl Binary for UavionixAdsbRfHealth

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for UavionixAdsbRfHealth

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

§

type Output = UavionixAdsbRfHealth

The resulting type after applying the & operator.
source§

impl BitAndAssign for UavionixAdsbRfHealth

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

source§

impl BitOr for UavionixAdsbRfHealth

source§

fn bitor(self, other: UavionixAdsbRfHealth) -> Self

Returns the union of the two sets of flags.

-
§

type Output = UavionixAdsbRfHealth

The resulting type after applying the | operator.
source§

impl BitOrAssign for UavionixAdsbRfHealth

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
§

type Output = UavionixAdsbRfHealth

The resulting type after applying the | operator.
source§

impl BitOrAssign for UavionixAdsbRfHealth

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

source§

impl BitXor for UavionixAdsbRfHealth

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

§

type Output = UavionixAdsbRfHealth

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for UavionixAdsbRfHealth

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

-
source§

impl Clone for UavionixAdsbRfHealth

source§

fn clone(&self) -> UavionixAdsbRfHealth

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for UavionixAdsbRfHealth

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for UavionixAdsbRfHealth

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for UavionixAdsbRfHealth

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where +

source§

impl Clone for UavionixAdsbRfHealth

source§

fn clone(&self) -> UavionixAdsbRfHealth

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for UavionixAdsbRfHealth

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for UavionixAdsbRfHealth

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for UavionixAdsbRfHealth

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Extend<UavionixAdsbRfHealth> for UavionixAdsbRfHealth

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<UavionixAdsbRfHealth> for UavionixAdsbRfHealth

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for UavionixAdsbRfHealth

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for UavionixAdsbRfHealth

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for UavionixAdsbRfHealth

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = UavionixAdsbRfHealth

The resulting type after applying the ! operator.
source§

impl Octal for UavionixAdsbRfHealth

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for UavionixAdsbRfHealth

source§

fn cmp(&self, other: &UavionixAdsbRfHealth) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for UavionixAdsbRfHealth

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for UavionixAdsbRfHealth

source§

fn not(self) -> Self

Returns the complement of this set of flags.

+
§

type Output = UavionixAdsbRfHealth

The resulting type after applying the ! operator.
source§

impl Octal for UavionixAdsbRfHealth

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for UavionixAdsbRfHealth

source§

fn cmp(&self, other: &UavionixAdsbRfHealth) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for UavionixAdsbRfHealth

source§

fn eq(&self, other: &UavionixAdsbRfHealth) -> bool

This method tests for self and other values to be equal, and is used @@ -75,7 +75,7 @@
§Safety
operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl Serialize for UavionixAdsbRfHealth

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Sub for UavionixAdsbRfHealth

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

-
§

type Output = UavionixAdsbRfHealth

The resulting type after applying the - operator.
source§

impl SubAssign for UavionixAdsbRfHealth

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

+
§

type Output = UavionixAdsbRfHealth

The resulting type after applying the - operator.
source§

impl SubAssign for UavionixAdsbRfHealth

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

source§

impl UpperHex for UavionixAdsbRfHealth

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for UavionixAdsbRfHealth

source§

impl Eq for UavionixAdsbRfHealth

source§

impl StructuralPartialEq for UavionixAdsbRfHealth

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where diff --git a/mavlink/uavionix/struct.UtmDataAvailFlags.html b/mavlink/uavionix/struct.UtmDataAvailFlags.html index 967ae9eec6..078923edfd 100644 --- a/mavlink/uavionix/struct.UtmDataAvailFlags.html +++ b/mavlink/uavionix/struct.UtmDataAvailFlags.html @@ -56,17 +56,17 @@
§Safety
between Self::all() and self (e.g. Self::all() - self)

This is equivalent to using the ! operator (e.g. ops::Not), as in !flags.

-

source§

impl UtmDataAvailFlags

source

pub const DEFAULT: Self = Self::UTM_DATA_AVAIL_FLAGS_TIME_VALID

Trait Implementations§

source§

impl Binary for UtmDataAvailFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for UtmDataAvailFlags

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

-
§

type Output = UtmDataAvailFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for UtmDataAvailFlags

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

+
source§

impl UtmDataAvailFlags

source

pub const DEFAULT: Self = Self::UTM_DATA_AVAIL_FLAGS_TIME_VALID

Trait Implementations§

source§

impl Binary for UtmDataAvailFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for UtmDataAvailFlags

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

+
§

type Output = UtmDataAvailFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for UtmDataAvailFlags

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

source§

impl BitOr for UtmDataAvailFlags

source§

fn bitor(self, other: UtmDataAvailFlags) -> Self

Returns the union of the two sets of flags.

-
§

type Output = UtmDataAvailFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for UtmDataAvailFlags

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
§

type Output = UtmDataAvailFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for UtmDataAvailFlags

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

source§

impl BitXor for UtmDataAvailFlags

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

-
§

type Output = UtmDataAvailFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for UtmDataAvailFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

-
source§

impl Clone for UtmDataAvailFlags

source§

fn clone(&self) -> UtmDataAvailFlags

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for UtmDataAvailFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for UtmDataAvailFlags

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for UtmDataAvailFlags

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where +

§

type Output = UtmDataAvailFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for UtmDataAvailFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
source§

impl Clone for UtmDataAvailFlags

source§

fn clone(&self) -> UtmDataAvailFlags

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for UtmDataAvailFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for UtmDataAvailFlags

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for UtmDataAvailFlags

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Extend<UtmDataAvailFlags> for UtmDataAvailFlags

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<UtmDataAvailFlags> for UtmDataAvailFlags

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for UtmDataAvailFlags

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for UtmDataAvailFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for UtmDataAvailFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = UtmDataAvailFlags

The resulting type after applying the ! operator.
source§

impl Octal for UtmDataAvailFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for UtmDataAvailFlags

source§

fn cmp(&self, other: &UtmDataAvailFlags) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for UtmDataAvailFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for UtmDataAvailFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

+
§

type Output = UtmDataAvailFlags

The resulting type after applying the ! operator.
source§

impl Octal for UtmDataAvailFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for UtmDataAvailFlags

source§

fn cmp(&self, other: &UtmDataAvailFlags) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for UtmDataAvailFlags

source§

fn eq(&self, other: &UtmDataAvailFlags) -> bool

This method tests for self and other values to be equal, and is used @@ -75,8 +75,8 @@
§Safety
operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl Serialize for UtmDataAvailFlags

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Sub for UtmDataAvailFlags

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

-
§

type Output = UtmDataAvailFlags

The resulting type after applying the - operator.
source§

impl SubAssign for UtmDataAvailFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

-
source§

impl UpperHex for UtmDataAvailFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for UtmDataAvailFlags

source§

impl Eq for UtmDataAvailFlags

source§

impl StructuralPartialEq for UtmDataAvailFlags

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

§

type Output = UtmDataAvailFlags

The resulting type after applying the - operator.
source§

impl SubAssign for UtmDataAvailFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

+
source§

impl UpperHex for UtmDataAvailFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for UtmDataAvailFlags

source§

impl Eq for UtmDataAvailFlags

source§

impl StructuralPartialEq for UtmDataAvailFlags

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/mavlink_bindgen/error/enum.BindGenError.html b/mavlink_bindgen/error/enum.BindGenError.html index 2fdea00dc6..82eda71006 100644 --- a/mavlink_bindgen/error/enum.BindGenError.html +++ b/mavlink_bindgen/error/enum.BindGenError.html @@ -1,8 +1,12 @@ -BindGenError in mavlink_bindgen::error - Rust

Enum mavlink_bindgen::error::BindGenError

source ·
pub enum BindGenError {
+BindGenError in mavlink_bindgen::error - Rust

Enum mavlink_bindgen::error::BindGenError

source ·
pub enum BindGenError {
     CouldNotReadDefinitionsDirectory {
         source: Error,
         path: PathBuf,
     },
+    CouldNotReadDefinitionFile {
+        source: Error,
+        path: PathBuf,
+    },
     CouldNotReadDirectoryEntryInDefinitionsDirectory {
         source: Error,
         path: PathBuf,
@@ -12,7 +16,8 @@
         dest_path: PathBuf,
     },
 }

Variants§

§

CouldNotReadDefinitionsDirectory

Represents a failure to read the MAVLink definitions directory.

-

Fields

§source: Error
§path: PathBuf
§

CouldNotReadDirectoryEntryInDefinitionsDirectory

Represents a failure to read a directory entry in the MAVLink definitions directory.

+

Fields

§source: Error
§path: PathBuf
§

CouldNotReadDefinitionFile

Represents a failure to read the MAVLink definitions directory.

+

Fields

§source: Error
§path: PathBuf
§

CouldNotReadDirectoryEntryInDefinitionsDirectory

Represents a failure to read a directory entry in the MAVLink definitions directory.

Fields

§source: Error
§path: PathBuf
§

CouldNotCreateRustBindingsFile

Represents a failure to create a Rust file for the generated MAVLink bindings.

Fields

§source: Error
§dest_path: PathBuf

Trait Implementations§

source§

impl Debug for BindGenError

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Display for BindGenError

source§

fn fmt(&self, __formatter: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Error for BindGenError

source§

fn source(&self) -> Option<&(dyn Error + 'static)>

The lower-level source of this error, if any. Read more
1.0.0 · source§

fn description(&self) -> &str

👎Deprecated since 1.42.0: use the Display impl or to_string()
1.0.0 · source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type based access to context intended for error reports. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where diff --git a/mavlink_bindgen/error/index.html b/mavlink_bindgen/error/index.html index b67e618715..820d3b0d79 100644 --- a/mavlink_bindgen/error/index.html +++ b/mavlink_bindgen/error/index.html @@ -1 +1 @@ -mavlink_bindgen::error - Rust

Module mavlink_bindgen::error

source ·

Enums§

\ No newline at end of file +mavlink_bindgen::error - Rust

Module mavlink_bindgen::error

source ·

Enums§

\ No newline at end of file diff --git a/mavlink_bindgen/index.html b/mavlink_bindgen/index.html index e4a42e7112..df4ea840bf 100644 --- a/mavlink_bindgen/index.html +++ b/mavlink_bindgen/index.html @@ -1 +1 @@ -mavlink_bindgen - Rust
\ No newline at end of file +mavlink_bindgen - Rust
\ No newline at end of file diff --git a/mavlink_bindgen/parser/enum.MavType.html b/mavlink_bindgen/parser/enum.MavType.html index d103c7d0ab..0e0f03b4e4 100644 --- a/mavlink_bindgen/parser/enum.MavType.html +++ b/mavlink_bindgen/parser/enum.MavType.html @@ -1,4 +1,4 @@ -MavType in mavlink_bindgen::parser - Rust

Enum mavlink_bindgen::parser::MavType

source ·
pub enum MavType {
+MavType in mavlink_bindgen::parser - Rust

Enum mavlink_bindgen::parser::MavType

source ·
pub enum MavType {
 
Show 13 variants UInt8MavlinkVersion, UInt8, UInt16, @@ -12,18 +12,18 @@ Float, Double, Array(Box<MavType>, usize), -
}

Variants§

§

UInt8MavlinkVersion

§

UInt8

§

UInt16

§

UInt32

§

UInt64

§

Int8

§

Int16

§

Int32

§

Int64

§

Char

§

Float

§

Double

§

Array(Box<MavType>, usize)

Implementations§

source§

impl MavType

source

pub fn rust_reader(&self, val: &TokenStream, buf: Ident) -> TokenStream

Emit reader of a given type

-
source

pub fn rust_writer(&self, val: &TokenStream, buf: Ident) -> TokenStream

Emit writer of a given type

-
source

pub fn primitive_type(&self) -> String

Used for crc calculation

-
source

pub fn rust_type(&self) -> String

Return rust equivalent of a given Mavtype +

}

Variants§

§

UInt8MavlinkVersion

§

UInt8

§

UInt16

§

UInt32

§

UInt64

§

Int8

§

Int16

§

Int32

§

Int64

§

Char

§

Float

§

Double

§

Array(Box<MavType>, usize)

Implementations§

source§

impl MavType

source

pub fn rust_reader(&self, val: &TokenStream, buf: Ident) -> TokenStream

Emit reader of a given type

+
source

pub fn rust_writer(&self, val: &TokenStream, buf: Ident) -> TokenStream

Emit writer of a given type

+
source

pub fn primitive_type(&self) -> String

Used for crc calculation

+
source

pub fn rust_type(&self) -> String

Return rust equivalent of a given Mavtype Used for generating struct fields.

-
source

pub fn emit_default_value(&self) -> TokenStream

source

pub fn rust_primitive_type(&self) -> String

Return rust equivalent of the primitive type of a MavType. The primitive +

source

pub fn emit_default_value(&self) -> TokenStream

source

pub fn rust_primitive_type(&self) -> String

Return rust equivalent of the primitive type of a MavType. The primitive type is the type itself for all except arrays, in which case it is the element type.

-
source

pub fn compare(&self, other: &Self) -> Ordering

Compare two MavTypes

-

Trait Implementations§

source§

impl Clone for MavType

source§

fn clone(&self) -> MavType

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for MavType

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for MavType

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl PartialEq for MavType

source§

fn eq(&self, other: &MavType) -> bool

This method tests for self and other values to be equal, and is used +
source

pub fn compare(&self, other: &Self) -> Ordering

Compare two MavTypes

+

Trait Implementations§

source§

impl Clone for MavType

source§

fn clone(&self) -> MavType

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for MavType

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for MavType

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl PartialEq for MavType

source§

fn eq(&self, other: &MavType) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
source§

impl StructuralPartialEq for MavType

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +sufficient, and should not be overridden without very good reason.

source§

impl StructuralPartialEq for MavType

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/mavlink_bindgen/parser/enum.MavXmlElement.html b/mavlink_bindgen/parser/enum.MavXmlElement.html index e917ebdb8b..5a1df57958 100644 --- a/mavlink_bindgen/parser/enum.MavXmlElement.html +++ b/mavlink_bindgen/parser/enum.MavXmlElement.html @@ -1,4 +1,4 @@ -MavXmlElement in mavlink_bindgen::parser - Rust

Enum mavlink_bindgen::parser::MavXmlElement

source ·
pub enum MavXmlElement {
+MavXmlElement in mavlink_bindgen::parser - Rust

Enum mavlink_bindgen::parser::MavXmlElement

source ·
pub enum MavXmlElement {
 
Show 15 variants Version, Mavlink, Dialect, @@ -14,9 +14,9 @@ Deprecated, Wip, Extensions, -
}

Variants§

§

Version

§

Dialect

§

Include

§

Enums

§

Enum

§

Entry

§

Description

§

Param

§

Messages

§

Message

§

Field

§

Deprecated

§

Wip

§

Extensions

Trait Implementations§

source§

impl Clone for MavXmlElement

source§

fn clone(&self) -> MavXmlElement

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for MavXmlElement

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl PartialEq for MavXmlElement

source§

fn eq(&self, other: &MavXmlElement) -> bool

This method tests for self and other values to be equal, and is used +
}

Variants§

§

Version

§

Dialect

§

Include

§

Enums

§

Enum

§

Entry

§

Description

§

Param

§

Messages

§

Message

§

Field

§

Deprecated

§

Wip

§

Extensions

Trait Implementations§

source§

impl Clone for MavXmlElement

source§

fn clone(&self) -> MavXmlElement

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for MavXmlElement

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl PartialEq for MavXmlElement

source§

fn eq(&self, other: &MavXmlElement) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
source§

impl Copy for MavXmlElement

source§

impl Eq for MavXmlElement

source§

impl StructuralPartialEq for MavXmlElement

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +sufficient, and should not be overridden without very good reason.

source§

impl Copy for MavXmlElement

source§

impl Eq for MavXmlElement

source§

impl StructuralPartialEq for MavXmlElement

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/mavlink_bindgen/parser/fn.extra_crc.html b/mavlink_bindgen/parser/fn.extra_crc.html index 2983f63be1..855310e827 100644 --- a/mavlink_bindgen/parser/fn.extra_crc.html +++ b/mavlink_bindgen/parser/fn.extra_crc.html @@ -1,4 +1,4 @@ -extra_crc in mavlink_bindgen::parser - Rust

Function mavlink_bindgen::parser::extra_crc

source ·
pub fn extra_crc(msg: &MavMessage) -> u8
Expand description

CRC operates over names of the message and names of its fields +extra_crc in mavlink_bindgen::parser - Rust

Function mavlink_bindgen::parser::extra_crc

source ·
pub fn extra_crc(msg: &MavMessage) -> u8
Expand description

CRC operates over names of the message and names of its fields Hence we have to preserve the original uppercase names delimited with an underscore For field names, we replace “type” with “mavtype” to make it rust compatible (this is needed for generating sensible rust code), but for calculating crc function we have to diff --git a/mavlink_bindgen/parser/fn.generate.html b/mavlink_bindgen/parser/fn.generate.html index 175caf9b54..2ec2cb16de 100644 --- a/mavlink_bindgen/parser/fn.generate.html +++ b/mavlink_bindgen/parser/fn.generate.html @@ -1,7 +1,7 @@ -generate in mavlink_bindgen::parser - Rust

Function mavlink_bindgen::parser::generate

source ·
pub fn generate<W: Write>(
+generate in mavlink_bindgen::parser - Rust

Function mavlink_bindgen::parser::generate

source ·
pub fn generate<W: Write>(
     definitions_dir: &Path,
     definition_file: &Path,
     output_rust: &mut W
-)
Expand description

Generate protobuf represenation of mavlink message set +) -> Result<(), BindGenError>

Expand description

Generate protobuf represenation of mavlink message set Generate rust representation of mavlink message set with appropriate conversion methods

\ No newline at end of file diff --git a/mavlink_bindgen/parser/fn.parse_profile.html b/mavlink_bindgen/parser/fn.parse_profile.html index 12b0b02561..f66925196c 100644 --- a/mavlink_bindgen/parser/fn.parse_profile.html +++ b/mavlink_bindgen/parser/fn.parse_profile.html @@ -1,5 +1,5 @@ -parse_profile in mavlink_bindgen::parser - Rust

Function mavlink_bindgen::parser::parse_profile

source ·
pub fn parse_profile(
+parse_profile in mavlink_bindgen::parser - Rust

Function mavlink_bindgen::parser::parse_profile

source ·
pub fn parse_profile(
     definitions_dir: &Path,
     definition_file: &Path,
     parsed_files: &mut HashSet<PathBuf>
-) -> MavProfile
\ No newline at end of file +) -> Result<MavProfile, BindGenError>
\ No newline at end of file diff --git a/mavlink_bindgen/parser/index.html b/mavlink_bindgen/parser/index.html index 2040f9e524..f04a553c3a 100644 --- a/mavlink_bindgen/parser/index.html +++ b/mavlink_bindgen/parser/index.html @@ -1,4 +1,4 @@ -mavlink_bindgen::parser - Rust

Module mavlink_bindgen::parser

source ·

Structs§

Enums§

Functions§

  • CRC operates over names of the message and names of its fields +mavlink_bindgen::parser - Rust

    Module mavlink_bindgen::parser

    source ·

    Structs§

    Enums§

    Functions§

    • CRC operates over names of the message and names of its fields Hence we have to preserve the original uppercase names delimited with an underscore For field names, we replace “type” with “mavtype” to make it rust compatible (this is needed for generating sensible rust code), but for calculating crc function we have to diff --git a/mavlink_bindgen/parser/struct.MavEnum.html b/mavlink_bindgen/parser/struct.MavEnum.html index eeac812872..e0856980e3 100644 --- a/mavlink_bindgen/parser/struct.MavEnum.html +++ b/mavlink_bindgen/parser/struct.MavEnum.html @@ -1,12 +1,12 @@ -MavEnum in mavlink_bindgen::parser - Rust

      Struct mavlink_bindgen::parser::MavEnum

      source ·
      pub struct MavEnum {
      +MavEnum in mavlink_bindgen::parser - Rust

      Struct mavlink_bindgen::parser::MavEnum

      source ·
      pub struct MavEnum {
           pub name: String,
           pub description: Option<String>,
           pub entries: Vec<MavEnumEntry>,
           pub bitfield: Option<String>,
       }

      Fields§

      §name: String§description: Option<String>§entries: Vec<MavEnumEntry>§bitfield: Option<String>

      If contains Some, the string represents the type witdh for bitflags

      -

      Trait Implementations§

      source§

      impl Clone for MavEnum

      source§

      fn clone(&self) -> MavEnum

      Returns a copy of the value. Read more
      1.0.0 · source§

      fn clone_from(&mut self, source: &Self)

      Performs copy-assignment from source. Read more
      source§

      impl Debug for MavEnum

      source§

      fn fmt(&self, f: &mut Formatter<'_>) -> Result

      Formats the value using the given formatter. Read more
      source§

      impl Default for MavEnum

      source§

      fn default() -> MavEnum

      Returns the “default value” for a type. Read more
      source§

      impl PartialEq for MavEnum

      source§

      fn eq(&self, other: &MavEnum) -> bool

      This method tests for self and other values to be equal, and is used +

      Trait Implementations§

      source§

      impl Clone for MavEnum

      source§

      fn clone(&self) -> MavEnum

      Returns a copy of the value. Read more
      1.0.0 · source§

      fn clone_from(&mut self, source: &Self)

      Performs copy-assignment from source. Read more
      source§

      impl Debug for MavEnum

      source§

      fn fmt(&self, f: &mut Formatter<'_>) -> Result

      Formats the value using the given formatter. Read more
      source§

      impl Default for MavEnum

      source§

      fn default() -> MavEnum

      Returns the “default value” for a type. Read more
      source§

      impl PartialEq for MavEnum

      source§

      fn eq(&self, other: &MavEnum) -> bool

      This method tests for self and other values to be equal, and is used by ==.
      1.0.0 · source§

      fn ne(&self, other: &Rhs) -> bool

      This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
      source§

      impl Eq for MavEnum

      source§

      impl StructuralPartialEq for MavEnum

      Auto Trait Implementations§

      Blanket Implementations§

      source§

      impl<T> Any for T
      where +sufficient, and should not be overridden without very good reason.

      source§

      impl Eq for MavEnum

      source§

      impl StructuralPartialEq for MavEnum

      Auto Trait Implementations§

      Blanket Implementations§

      source§

      impl<T> Any for T
      where T: 'static + ?Sized,

      source§

      fn type_id(&self) -> TypeId

      Gets the TypeId of self. Read more
      source§

      impl<T> Borrow<T> for T
      where T: ?Sized,

      source§

      fn borrow(&self) -> &T

      Immutably borrows from an owned value. Read more
      source§

      impl<T> BorrowMut<T> for T
      where T: ?Sized,

      source§

      fn borrow_mut(&mut self) -> &mut T

      Mutably borrows from an owned value. Read more
      source§

      impl<T> From<T> for T

      source§

      fn from(t: T) -> T

      Returns the argument unchanged.

      diff --git a/mavlink_bindgen/parser/struct.MavEnumEntry.html b/mavlink_bindgen/parser/struct.MavEnumEntry.html index e11502bef6..7b44e2ac94 100644 --- a/mavlink_bindgen/parser/struct.MavEnumEntry.html +++ b/mavlink_bindgen/parser/struct.MavEnumEntry.html @@ -1,11 +1,11 @@ -MavEnumEntry in mavlink_bindgen::parser - Rust

      Struct mavlink_bindgen::parser::MavEnumEntry

      source ·
      pub struct MavEnumEntry {
      +MavEnumEntry in mavlink_bindgen::parser - Rust

      Struct mavlink_bindgen::parser::MavEnumEntry

      source ·
      pub struct MavEnumEntry {
           pub value: Option<u32>,
           pub name: String,
           pub description: Option<String>,
           pub params: Option<Vec<String>>,
      -}

      Fields§

      §value: Option<u32>§name: String§description: Option<String>§params: Option<Vec<String>>

      Trait Implementations§

      source§

      impl Clone for MavEnumEntry

      source§

      fn clone(&self) -> MavEnumEntry

      Returns a copy of the value. Read more
      1.0.0 · source§

      fn clone_from(&mut self, source: &Self)

      Performs copy-assignment from source. Read more
      source§

      impl Debug for MavEnumEntry

      source§

      fn fmt(&self, f: &mut Formatter<'_>) -> Result

      Formats the value using the given formatter. Read more
      source§

      impl Default for MavEnumEntry

      source§

      fn default() -> MavEnumEntry

      Returns the “default value” for a type. Read more
      source§

      impl PartialEq for MavEnumEntry

      source§

      fn eq(&self, other: &MavEnumEntry) -> bool

      This method tests for self and other values to be equal, and is used +}

      Fields§

      §value: Option<u32>§name: String§description: Option<String>§params: Option<Vec<String>>

      Trait Implementations§

      source§

      impl Clone for MavEnumEntry

      source§

      fn clone(&self) -> MavEnumEntry

      Returns a copy of the value. Read more
      1.0.0 · source§

      fn clone_from(&mut self, source: &Self)

      Performs copy-assignment from source. Read more
      source§

      impl Debug for MavEnumEntry

      source§

      fn fmt(&self, f: &mut Formatter<'_>) -> Result

      Formats the value using the given formatter. Read more
      source§

      impl Default for MavEnumEntry

      source§

      fn default() -> MavEnumEntry

      Returns the “default value” for a type. Read more
      source§

      impl PartialEq for MavEnumEntry

      source§

      fn eq(&self, other: &MavEnumEntry) -> bool

      This method tests for self and other values to be equal, and is used by ==.
      1.0.0 · source§

      fn ne(&self, other: &Rhs) -> bool

      This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
      source§

      impl Eq for MavEnumEntry

      source§

      impl StructuralPartialEq for MavEnumEntry

      Auto Trait Implementations§

      Blanket Implementations§

      source§

      impl<T> Any for T
      where +sufficient, and should not be overridden without very good reason.

      source§

      impl Eq for MavEnumEntry

      source§

      impl StructuralPartialEq for MavEnumEntry

      Auto Trait Implementations§

      Blanket Implementations§

      source§

      impl<T> Any for T
      where T: 'static + ?Sized,

      source§

      fn type_id(&self) -> TypeId

      Gets the TypeId of self. Read more
      source§

      impl<T> Borrow<T> for T
      where T: ?Sized,

      source§

      fn borrow(&self) -> &T

      Immutably borrows from an owned value. Read more
      source§

      impl<T> BorrowMut<T> for T
      where T: ?Sized,

      source§

      fn borrow_mut(&mut self) -> &mut T

      Mutably borrows from an owned value. Read more
      source§

      impl<T> From<T> for T

      source§

      fn from(t: T) -> T

      Returns the argument unchanged.

      diff --git a/mavlink_bindgen/parser/struct.MavField.html b/mavlink_bindgen/parser/struct.MavField.html index 0163b954cc..3850a8dabd 100644 --- a/mavlink_bindgen/parser/struct.MavField.html +++ b/mavlink_bindgen/parser/struct.MavField.html @@ -1,13 +1,13 @@ -MavField in mavlink_bindgen::parser - Rust

      Struct mavlink_bindgen::parser::MavField

      source ·
      pub struct MavField {
      +MavField in mavlink_bindgen::parser - Rust

      Struct mavlink_bindgen::parser::MavField

      source ·
      pub struct MavField {
           pub mavtype: MavType,
           pub name: String,
           pub description: Option<String>,
           pub enumtype: Option<String>,
           pub display: Option<String>,
           pub is_extension: bool,
      -}

      Fields§

      §mavtype: MavType§name: String§description: Option<String>§enumtype: Option<String>§display: Option<String>§is_extension: bool

      Trait Implementations§

      source§

      impl Clone for MavField

      source§

      fn clone(&self) -> MavField

      Returns a copy of the value. Read more
      1.0.0 · source§

      fn clone_from(&mut self, source: &Self)

      Performs copy-assignment from source. Read more
      source§

      impl Debug for MavField

      source§

      fn fmt(&self, f: &mut Formatter<'_>) -> Result

      Formats the value using the given formatter. Read more
      source§

      impl Default for MavField

      source§

      fn default() -> MavField

      Returns the “default value” for a type. Read more
      source§

      impl PartialEq for MavField

      source§

      fn eq(&self, other: &MavField) -> bool

      This method tests for self and other values to be equal, and is used +}

      Fields§

      §mavtype: MavType§name: String§description: Option<String>§enumtype: Option<String>§display: Option<String>§is_extension: bool

      Trait Implementations§

      source§

      impl Clone for MavField

      source§

      fn clone(&self) -> MavField

      Returns a copy of the value. Read more
      1.0.0 · source§

      fn clone_from(&mut self, source: &Self)

      Performs copy-assignment from source. Read more
      source§

      impl Debug for MavField

      source§

      fn fmt(&self, f: &mut Formatter<'_>) -> Result

      Formats the value using the given formatter. Read more
      source§

      impl Default for MavField

      source§

      fn default() -> MavField

      Returns the “default value” for a type. Read more
      source§

      impl PartialEq for MavField

      source§

      fn eq(&self, other: &MavField) -> bool

      This method tests for self and other values to be equal, and is used by ==.
      1.0.0 · source§

      fn ne(&self, other: &Rhs) -> bool

      This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
      source§

      impl StructuralPartialEq for MavField

      Auto Trait Implementations§

      Blanket Implementations§

      source§

      impl<T> Any for T
      where +sufficient, and should not be overridden without very good reason.

      source§

      impl StructuralPartialEq for MavField

      Auto Trait Implementations§

      Blanket Implementations§

      source§

      impl<T> Any for T
      where T: 'static + ?Sized,

      source§

      fn type_id(&self) -> TypeId

      Gets the TypeId of self. Read more
      source§

      impl<T> Borrow<T> for T
      where T: ?Sized,

      source§

      fn borrow(&self) -> &T

      Immutably borrows from an owned value. Read more
      source§

      impl<T> BorrowMut<T> for T
      where T: ?Sized,

      source§

      fn borrow_mut(&mut self) -> &mut T

      Mutably borrows from an owned value. Read more
      source§

      impl<T> From<T> for T

      source§

      fn from(t: T) -> T

      Returns the argument unchanged.

      diff --git a/mavlink_bindgen/parser/struct.MavMessage.html b/mavlink_bindgen/parser/struct.MavMessage.html index 5bd6be55f2..2a166f04aa 100644 --- a/mavlink_bindgen/parser/struct.MavMessage.html +++ b/mavlink_bindgen/parser/struct.MavMessage.html @@ -1,11 +1,11 @@ -MavMessage in mavlink_bindgen::parser - Rust

      Struct mavlink_bindgen::parser::MavMessage

      source ·
      pub struct MavMessage {
      +MavMessage in mavlink_bindgen::parser - Rust

      Struct mavlink_bindgen::parser::MavMessage

      source ·
      pub struct MavMessage {
           pub id: u32,
           pub name: String,
           pub description: Option<String>,
           pub fields: Vec<MavField>,
      -}

      Fields§

      §id: u32§name: String§description: Option<String>§fields: Vec<MavField>

      Trait Implementations§

      source§

      impl Clone for MavMessage

      source§

      fn clone(&self) -> MavMessage

      Returns a copy of the value. Read more
      1.0.0 · source§

      fn clone_from(&mut self, source: &Self)

      Performs copy-assignment from source. Read more
      source§

      impl Debug for MavMessage

      source§

      fn fmt(&self, f: &mut Formatter<'_>) -> Result

      Formats the value using the given formatter. Read more
      source§

      impl Default for MavMessage

      source§

      fn default() -> MavMessage

      Returns the “default value” for a type. Read more
      source§

      impl PartialEq for MavMessage

      source§

      fn eq(&self, other: &MavMessage) -> bool

      This method tests for self and other values to be equal, and is used +}

      Fields§

      §id: u32§name: String§description: Option<String>§fields: Vec<MavField>

      Trait Implementations§

      source§

      impl Clone for MavMessage

      source§

      fn clone(&self) -> MavMessage

      Returns a copy of the value. Read more
      1.0.0 · source§

      fn clone_from(&mut self, source: &Self)

      Performs copy-assignment from source. Read more
      source§

      impl Debug for MavMessage

      source§

      fn fmt(&self, f: &mut Formatter<'_>) -> Result

      Formats the value using the given formatter. Read more
      source§

      impl Default for MavMessage

      source§

      fn default() -> MavMessage

      Returns the “default value” for a type. Read more
      source§

      impl PartialEq for MavMessage

      source§

      fn eq(&self, other: &MavMessage) -> bool

      This method tests for self and other values to be equal, and is used by ==.
      1.0.0 · source§

      fn ne(&self, other: &Rhs) -> bool

      This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
      source§

      impl StructuralPartialEq for MavMessage

      Auto Trait Implementations§

      Blanket Implementations§

      source§

      impl<T> Any for T
      where +sufficient, and should not be overridden without very good reason.

      source§

      impl StructuralPartialEq for MavMessage

      Auto Trait Implementations§

      Blanket Implementations§

      source§

      impl<T> Any for T
      where T: 'static + ?Sized,

      source§

      fn type_id(&self) -> TypeId

      Gets the TypeId of self. Read more
      source§

      impl<T> Borrow<T> for T
      where T: ?Sized,

      source§

      fn borrow(&self) -> &T

      Immutably borrows from an owned value. Read more
      source§

      impl<T> BorrowMut<T> for T
      where T: ?Sized,

      source§

      fn borrow_mut(&mut self) -> &mut T

      Mutably borrows from an owned value. Read more
      source§

      impl<T> From<T> for T

      source§

      fn from(t: T) -> T

      Returns the argument unchanged.

      diff --git a/mavlink_bindgen/parser/struct.MavProfile.html b/mavlink_bindgen/parser/struct.MavProfile.html index 7aaa1a03b5..65a5369a75 100644 --- a/mavlink_bindgen/parser/struct.MavProfile.html +++ b/mavlink_bindgen/parser/struct.MavProfile.html @@ -1,9 +1,9 @@ -MavProfile in mavlink_bindgen::parser - Rust

      Struct mavlink_bindgen::parser::MavProfile

      source ·
      pub struct MavProfile {
      +MavProfile in mavlink_bindgen::parser - Rust

      Struct mavlink_bindgen::parser::MavProfile

      source ·
      pub struct MavProfile {
           pub messages: HashMap<String, MavMessage>,
           pub enums: HashMap<String, MavEnum>,
      -}

      Fields§

      §messages: HashMap<String, MavMessage>§enums: HashMap<String, MavEnum>

      Trait Implementations§

      source§

      impl Clone for MavProfile

      source§

      fn clone(&self) -> MavProfile

      Returns a copy of the value. Read more
      1.0.0 · source§

      fn clone_from(&mut self, source: &Self)

      Performs copy-assignment from source. Read more
      source§

      impl Debug for MavProfile

      source§

      fn fmt(&self, f: &mut Formatter<'_>) -> Result

      Formats the value using the given formatter. Read more
      source§

      impl Default for MavProfile

      source§

      fn default() -> MavProfile

      Returns the “default value” for a type. Read more
      source§

      impl PartialEq for MavProfile

      source§

      fn eq(&self, other: &MavProfile) -> bool

      This method tests for self and other values to be equal, and is used +}

      Fields§

      §messages: HashMap<String, MavMessage>§enums: HashMap<String, MavEnum>

      Trait Implementations§

      source§

      impl Clone for MavProfile

      source§

      fn clone(&self) -> MavProfile

      Returns a copy of the value. Read more
      1.0.0 · source§

      fn clone_from(&mut self, source: &Self)

      Performs copy-assignment from source. Read more
      source§

      impl Debug for MavProfile

      source§

      fn fmt(&self, f: &mut Formatter<'_>) -> Result

      Formats the value using the given formatter. Read more
      source§

      impl Default for MavProfile

      source§

      fn default() -> MavProfile

      Returns the “default value” for a type. Read more
      source§

      impl PartialEq for MavProfile

      source§

      fn eq(&self, other: &MavProfile) -> bool

      This method tests for self and other values to be equal, and is used by ==.
      1.0.0 · source§

      fn ne(&self, other: &Rhs) -> bool

      This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
      source§

      impl StructuralPartialEq for MavProfile

      Auto Trait Implementations§

      Blanket Implementations§

      source§

      impl<T> Any for T
      where +sufficient, and should not be overridden without very good reason.

      source§

      impl StructuralPartialEq for MavProfile

      Auto Trait Implementations§

      Blanket Implementations§

      source§

      impl<T> Any for T
      where T: 'static + ?Sized,

      source§

      fn type_id(&self) -> TypeId

      Gets the TypeId of self. Read more
      source§

      impl<T> Borrow<T> for T
      where T: ?Sized,

      source§

      fn borrow(&self) -> &T

      Immutably borrows from an owned value. Read more
      source§

      impl<T> BorrowMut<T> for T
      where T: ?Sized,

      source§

      fn borrow_mut(&mut self) -> &mut T

      Mutably borrows from an owned value. Read more
      source§

      impl<T> From<T> for T

      source§

      fn from(t: T) -> T

      Returns the argument unchanged.

      diff --git a/search-index.js b/search-index.js index 4cf0d338b6..2efa2756f5 100644 --- a/search-index.js +++ b/search-index.js @@ -5,8 +5,8 @@ var searchIndex = new Map(JSON.parse('[\ ["ioctl_rs",{"t":"SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSHHHHHHH","n":["FIOASYNC","FIOCLEX","FIOGETOWN","FIONBIO","FIONCLEX","FIONREAD","FIOSETOWN","SIOCADDMULTI","SIOCADDRT","SIOCDARP","SIOCDELMULTI","SIOCDELRT","SIOCDRARP","SIOCGARP","SIOCGIFADDR","SIOCGIFBRDADDR","SIOCGIFCONF","SIOCGIFDSTADDR","SIOCGIFENCAP","SIOCGIFFLAGS","SIOCGIFHWADDR","SIOCGIFMAP","SIOCGIFMEM","SIOCGIFMETRIC","SIOCGIFMTU","SIOCGIFNAME","SIOCGIFNETMASK","SIOCGIFSLAVE","SIOCGPGRP","SIOCGRARP","SIOCGSTAMP","SIOCSARP","SIOCSIFADDR","SIOCSIFBRDADDR","SIOCSIFDSTADDR","SIOCSIFENCAP","SIOCSIFFLAGS","SIOCSIFHWADDR","SIOCSIFLINK","SIOCSIFMAP","SIOCSIFMEM","SIOCSIFMETRIC","SIOCSIFMTU","SIOCSIFNETMASK","SIOCSIFSLAVE","SIOCSPGRP","SIOCSRARP","TCFLSH","TCGETA","TCGETS","TCSBRK","TCSBRKP","TCSETA","TCSETAF","TCSETAW","TCSETS","TCSETSF","TCSETSW","TCXONC","TIOCCONS","TIOCEXCL","TIOCGETD","TIOCGLCKTRMIOS","TIOCGPGRP","TIOCGSERIAL","TIOCGSOFTCAR","TIOCGWINSZ","TIOCINQ","TIOCLINUX","TIOCMBIC","TIOCMBIS","TIOCMGET","TIOCMSET","TIOCM_CAR","TIOCM_CD","TIOCM_CTS","TIOCM_DSR","TIOCM_DTR","TIOCM_LE","TIOCM_RI","TIOCM_RNG","TIOCM_RTS","TIOCM_SR","TIOCM_ST","TIOCNOTTY","TIOCNXCL","TIOCOUTQ","TIOCPKT","TIOCSCTTY","TIOCSERCONFIG","TIOCSERGETLSR","TIOCSERGETMULTI","TIOCSERGSTRUCT","TIOCSERGWILD","TIOCSERSETMULTI","TIOCSERSWILD","TIOCSETD","TIOCSLCKTRMIOS","TIOCSPGRP","TIOCSSERIAL","TIOCSSOFTCAR","TIOCSTI","TIOCSWINSZ","ioctl","tiocexcl","tiocmbic","tiocmbis","tiocmget","tiocmset","tiocnxcl"],"q":[[0,"ioctl_rs"],[110,"std::os::fd::raw"],[111,"std::io::error"],[112,"libc::unix"],[113,"ioctl_rs::os::linux"]],"i":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"f":"````````````````````````````````````````````````````````````````````````````````````````````````````````{b{{f{d}}}}{{bh}{{f{d}}}}0{b{{f{h}}}}12","D":"l","p":[[8,"RawFd",110],[1,"unit"],[8,"Result",111],[8,"c_int",112]],"r":[[0,113],[1,113],[2,113],[3,113],[4,113],[5,113],[6,113],[7,113],[8,113],[9,113],[10,113],[11,113],[12,113],[13,113],[14,113],[15,113],[16,113],[17,113],[18,113],[19,113],[20,113],[21,113],[22,113],[23,113],[24,113],[25,113],[26,113],[27,113],[28,113],[29,113],[30,113],[31,113],[32,113],[33,113],[34,113],[35,113],[36,113],[37,113],[38,113],[39,113],[40,113],[41,113],[42,113],[43,113],[44,113],[45,113],[46,113],[47,113],[48,113],[49,113],[50,113],[51,113],[52,113],[53,113],[54,113],[55,113],[56,113],[57,113],[58,113],[59,113],[60,113],[61,113],[62,113],[63,113],[64,113],[65,113],[66,113],[67,113],[68,113],[69,113],[70,113],[71,113],[72,113],[73,113],[74,113],[75,113],[76,113],[77,113],[78,113],[79,113],[80,113],[81,113],[82,113],[83,113],[84,113],[85,113],[86,113],[87,113],[88,113],[89,113],[90,113],[91,113],[92,113],[93,113],[94,113],[95,113],[96,113],[97,113],[98,113],[99,113],[100,113],[101,113],[102,113]],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAGgAAQAAAGgA"}],\ ["lazy_static",{"t":"KHQ","n":["LazyStatic","initialize","lazy_static"],"q":[[0,"lazy_static"]],"i":[0,0,0],"f":"`{cbd}`","D":"f","p":[[1,"unit"],[10,"LazyStatic",0]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAEAAAAAAAAAEAAAAAMA"}],\ ["libc",{"t":"SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSHSSSSSSSSSSHSSSSSSSSHSHSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSHHHHHSSSHHHHHHHSHSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSGSSSSSSSSSSSFSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSIFFIIFIFFIIFFIIFIFIFIISSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSHHHSHSSSSSSSGSSSSSSSSSSSSSSSSSSSSSSSSSSSSSHSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSHSSHSSSSSSSSHSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSHSSSSSSSHSSSSSSSSSSSHSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSHSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSISSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSHSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSHSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSHSSSSSHSSSSSSSSSSHSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSHHHHSSSSSSSHHSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSHHSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSHSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSHSHSHHHHSSSSHHSHSHSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSUUFUFFFUFFHFIOOOOIOIIIIIOOIFIIIIOOOOOOOOOOOHOFFFOOHHOOOOOHHHHOHOOOOOOFHHOFOOOOOOOOOOHOHOOOHOOOOOOOHOOOHOOHHFHOOOOOOOOOOOOOOOOOOOOOFFFFHHHHHHOOOHOHIIINNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHHOOOOOOOIIIOOIOOOOOOIIOOOOIIIIIIIGOHOOIOFFOOOOOFIFIOHHHHHHOOOOOOOOOHOHHHOOOHHHHHHHHIOIHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFHHHHOOOOFOOOOOHOOOOHFOOHHOHHOOOOOOOOOOOOOOOOHOOOOOOOOOOOIHOFFHHHFHHHHOOOOHHHOOOOOOOOHOOOOOOOOOOOFHOHHHHOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOHOOOOOOOOOOOOHHHHHHOOOOHHHFHHHOOOOOOHOHHIHOOHHHHHHHHHOOHOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOHOOHHFHHFHHHHHHHOOOFHHHHHHFFFOOFFFFFFHHHHHHHHHFHOOOOOOOOOOOOOOOOOOHFHFHNOOHHOOHHHGGOHHHOOOHHHHOHHOOHHHONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOIHHHHHHHIFOOHHHHHHHHHHHHHHHOOHHOHHFHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHOOIOOOOOOOOHHFFHHHHHHHOOOOHIOFOOOOOOOOOOOHOOOOOOFHFOHHHIOOOOOOIIHOHOFHHOOOOOOOFOOFOOOOOOOFOOOOOOOOOOOOOOOOOOOOOFFFFFIFIOOOOHIIHFHHHFFFFFOOIIIIOOOOOOOOOINNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNIFHHHOOFOFFFFOOOOOFOOOOHHHHHHHHHHHHHOOOOFFOOOOOOFOOOHOOOOOOOIOHHOOOOOOOOOOOOHHHFOOOOOOOOOOOOHFHHHHHHOIHHHHIHHHHHHHHHOHOOHHHFHFHHHHHHOOFOOOFOOOHHHHHHHHHOHOHHHHHHHHHHHHHHHHHHFOOOOOOFOOIOOOOOHHFHOOHOOHHHHHHHIOOOOHHOOOOOOOOOOOOOOOOOOHHFFIOOOOOIHOHOOFHHHHOOOOOOOOOOOOOIHOOOHIHOOIHHFFOFOOFIOOOOOFFOOOOOOOOOOOOOOOHHHFOOOOOOIIOOOOHHFHHHHHHHFOOOOOOOOOOOOOOOOOOOOOOOOOOFOOOOFHHHOHHOOOIOOOOIOHHHFHOOHHHHHHHHHHHHHHHHHHFHHHHHHHHHHHHHHFHHOOOHHHHHHHOHOIHHHHOOOOFHHHHHHHHHHHHHHHHHHFHHFHHHHHFHHHHHFHHHHHHHHFHHHHHHHHHHHHIHHHHHFHHHHHHHHHHHHFHIHHHFHHHHHHHHHHFHHHHHHHHHHHHHIIHFFFIHHHHHHHHHOOOOOOOHHHHHHHHHOOOOOOOOHHOOOOOOOOOOOOOOOOHHHHHHHHHHHHHOOOHHHHHHFHHFIOOHHHHHHOOOOHOOOOOOOOOHHOOOOOIOOOOIFFOOHOOOOOOOOOOOOOOOOOOOFOOOOOOOOOOOOOOOOFOOOOOOOOOOOOOOOOOOIOOOOOOOOOOOOHOHFOOHHHHHHOFOOOOHOHHHHIFFFFFFFOOFOFOFFOFHHHHOHOHHOOOHOOHFHHHHOFHHFFOOOOOHOOOOHHHHHHFOOHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHOOOOOOOOOOOOOOOOOOOOOOOOOOOOHOOHHIHHHFHNOONONNNNNFHHHHHOOOOFHIFHHOHFOOHHFHHFHHOOOOOOOOOOOOOOOOOOOOOOOOIHOOOOOOOOOOOOOOHFFFFFFFFFFFFFFFHHIOOOOOOOOOIHHFHHOOOOOOOOOHOOOOOOOOOOOOOOOOOOOOIOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOFOOOOFHFHFHFHOFHFHFHFOHHHHHHHHHHHHHHHHHHHHHHHOHHHHHHHHHHHHHHHOOOOOOOOOOOOOOOOOOOOOOOOIOOOOOOHHHOOOOOOOHHHHHHHHFHHOHOOHIHHHHHHHHHHFFOOHOOOIHHHHHHIHHHHFFFGOFFFFFOOOOOOOOOOOHHHFOOOOOHOOOHOOHHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHHOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOFFOOIFFFFFIIIIIIHHHHHHHHHHOOOOIHFFFHOOOOOOOOOOOOFHHHHFHFOOOOOOOOOOHHHHHHHOIHHOOFHHHOOOOFFFFFFFFFFO","n":["ABDAY_1","ABDAY_2","ABDAY_3","ABDAY_4","ABDAY_5","ABDAY_6","ABDAY_7","ABMON_1","ABMON_10","ABMON_11","ABMON_12","ABMON_2","ABMON_3","ABMON_4","ABMON_5","ABMON_6","ABMON_7","ABMON_8","ABMON_9","ABS_CNT","ABS_MAX","ACCOUNTING","ADDR_COMPAT_LAYOUT","ADDR_LIMIT_32BIT","ADDR_LIMIT_3GB","ADDR_NO_RANDOMIZE","ADFS_SUPER_MAGIC","ADJ_ESTERROR","ADJ_FREQUENCY","ADJ_MAXERROR","ADJ_MICRO","ADJ_NANO","ADJ_OFFSET","ADJ_OFFSET_SINGLESHOT","ADJ_OFFSET_SS_READ","ADJ_SETOFFSET","ADJ_STATUS","ADJ_TAI","ADJ_TICK","ADJ_TIMECONST","AFFS_SUPER_MAGIC","AFS_SUPER_MAGIC","AF_ALG","AF_APPLETALK","AF_ASH","AF_ATMPVC","AF_ATMSVC","AF_AX25","AF_BLUETOOTH","AF_BRIDGE","AF_CAIF","AF_CAN","AF_DECnet","AF_ECONET","AF_IB","AF_IEEE802154","AF_INET","AF_INET6","AF_IPX","AF_IRDA","AF_ISDN","AF_IUCV","AF_KEY","AF_LLC","AF_LOCAL","AF_MPLS","AF_NETBEUI","AF_NETLINK","AF_NETROM","AF_NFC","AF_PACKET","AF_PHONET","AF_PPPOX","AF_RDS","AF_ROSE","AF_ROUTE","AF_RXRPC","AF_SECURITY","AF_SNA","AF_TIPC","AF_UNIX","AF_UNSPEC","AF_VSOCK","AF_WANPIPE","AF_X25","AF_XDP","AIO_ALLDONE","AIO_CANCELED","AIO_NOTCANCELED","AI_ADDRCONFIG","AI_ALL","AI_CANONNAME","AI_NUMERICHOST","AI_NUMERICSERV","AI_PASSIVE","AI_V4MAPPED","ALG_OP_DECRYPT","ALG_OP_ENCRYPT","ALG_SET_AEAD_ASSOCLEN","ALG_SET_AEAD_AUTHSIZE","ALG_SET_DRBG_ENTROPY","ALG_SET_IV","ALG_SET_KEY","ALG_SET_KEY_BY_KEY_SERIAL","ALG_SET_OP","ALT_DIGITS","AM_STR","ARPD_FLUSH","ARPD_LOOKUP","ARPD_UPDATE","ARPHRD_ADAPT","ARPHRD_APPLETLK","ARPHRD_ARCNET","ARPHRD_ASH","ARPHRD_ATM","ARPHRD_AX25","ARPHRD_BIF","ARPHRD_CAN","ARPHRD_CHAOS","ARPHRD_CISCO","ARPHRD_CSLIP","ARPHRD_CSLIP6","ARPHRD_DDCMP","ARPHRD_DLCI","ARPHRD_ECONET","ARPHRD_EETHER","ARPHRD_ETHER","ARPHRD_EUI64","ARPHRD_FCAL","ARPHRD_FCFABRIC","ARPHRD_FCPL","ARPHRD_FCPP","ARPHRD_FDDI","ARPHRD_FRAD","ARPHRD_HDLC","ARPHRD_HIPPI","ARPHRD_HWX25","ARPHRD_IEEE1394","ARPHRD_IEEE802","ARPHRD_IEEE80211","ARPHRD_IEEE80211_PRISM","ARPHRD_IEEE80211_RADIOTAP","ARPHRD_IEEE802154","ARPHRD_IEEE802_TR","ARPHRD_INFINIBAND","ARPHRD_IPDDP","ARPHRD_IPGRE","ARPHRD_IRDA","ARPHRD_LAPB","ARPHRD_LOCALTLK","ARPHRD_LOOPBACK","ARPHRD_METRICOM","ARPHRD_NETROM","ARPHRD_NONE","ARPHRD_PIMREG","ARPHRD_PPP","ARPHRD_PRONET","ARPHRD_RAWHDLC","ARPHRD_ROSE","ARPHRD_RSRVD","ARPHRD_SIT","ARPHRD_SKIP","ARPHRD_SLIP","ARPHRD_SLIP6","ARPHRD_TUNNEL","ARPHRD_TUNNEL6","ARPHRD_VOID","ARPHRD_X25","ARPOP_InREPLY","ARPOP_InREQUEST","ARPOP_NAK","ARPOP_REPLY","ARPOP_REQUEST","ARPOP_RREPLY","ARPOP_RREQUEST","ATF_COM","ATF_DONTPUB","ATF_MAGIC","ATF_NETMASK","ATF_PERM","ATF_PUBL","ATF_USETRAILERS","AT_BASE","AT_BASE_PLATFORM","AT_CLKTCK","AT_EACCESS","AT_EGID","AT_EMPTY_PATH","AT_ENTRY","AT_EUID","AT_EXECFD","AT_EXECFN","AT_FDCWD","AT_FLAGS","AT_GID","AT_HWCAP","AT_HWCAP2","AT_IGNORE","AT_MINSIGSTKSZ","AT_NOTELF","AT_NO_AUTOMOUNT","AT_NULL","AT_PAGESZ","AT_PHDR","AT_PHENT","AT_PHNUM","AT_PLATFORM","AT_RANDOM","AT_RECURSIVE","AT_REMOVEDIR","AT_SECURE","AT_STATX_DONT_SYNC","AT_STATX_FORCE_SYNC","AT_STATX_SYNC_AS_STAT","AT_STATX_SYNC_TYPE","AT_SYMLINK_FOLLOW","AT_SYMLINK_NOFOLLOW","AT_SYSINFO_EHDR","AT_UID","AUTOFS_SUPER_MAGIC","B0","B1000000","B110","B115200","B1152000","B1200","B134","B150","B1500000","B1800","B19200","B200","B2000000","B230400","B2400","B2500000","B300","B3000000","B3500000","B38400","B4000000","B460800","B4800","B50","B500000","B57600","B576000","B600","B75","B921600","B9600","BINDERFS_SUPER_MAGIC","BLKIOMIN","BLKIOOPT","BLKPBSZGET","BLKSSZGET","BOOT_TIME","BOTHER","BPF_ABS","BPF_ADD","BPF_ALU","BPF_AND","BPF_B","BPF_DIV","BPF_FS_MAGIC","BPF_H","BPF_IMM","BPF_IND","BPF_JA","BPF_JEQ","BPF_JGE","BPF_JGT","BPF_JMP","BPF_JSET","BPF_JUMP","BPF_K","BPF_LD","BPF_LDX","BPF_LEN","BPF_LL_OFF","BPF_LSH","BPF_MAXINSNS","BPF_MEM","BPF_MEMWORDS","BPF_MISC","BPF_MISCOP","BPF_MOD","BPF_MSH","BPF_MUL","BPF_NEG","BPF_NET_OFF","BPF_OR","BPF_RET","BPF_RSH","BPF_RVAL","BPF_ST","BPF_STMT","BPF_STX","BPF_SUB","BPF_W","BPF_X","BPF_XOR","BRKINT","BS0","BS1","BSDLY","BTRFS_SUPER_MAGIC","BUFSIZ","BUS_ADRALN","BUS_ADRERR","BUS_MCEERR_AO","BUS_MCEERR_AR","BUS_OBJERR","CANFD_BRS","CANFD_ESI","CANFD_MAX_DLC","CANFD_MAX_DLEN","CANFD_MTU","CANXL_HDR_SIZE","CANXL_MAX_DLC","CANXL_MAX_DLC_MASK","CANXL_MAX_DLEN","CANXL_MAX_MTU","CANXL_MIN_DLC","CANXL_MIN_DLEN","CANXL_MIN_MTU","CANXL_MTU","CANXL_PRIO_BITS","CANXL_PRIO_MASK","CANXL_SEC","CANXL_XLF","CAN_BCM","CAN_EFF_FLAG","CAN_EFF_ID_BITS","CAN_EFF_MASK","CAN_ERR_FLAG","CAN_ERR_MASK","CAN_INV_FILTER","CAN_ISOTP","CAN_J1939","CAN_MAX_DLC","CAN_MAX_DLEN","CAN_MCNET","CAN_MTU","CAN_NPROTO","CAN_RAW","CAN_RAW_ERR_FILTER","CAN_RAW_FD_FRAMES","CAN_RAW_FILTER","CAN_RAW_FILTER_MAX","CAN_RAW_JOIN_FILTERS","CAN_RAW_LOOPBACK","CAN_RAW_RECV_OWN_MSGS","CAN_RAW_XL_FRAMES","CAN_RTR_FLAG","CAN_SFF_ID_BITS","CAN_SFF_MASK","CAN_TP16","CAN_TP20","CBAUD","CBAUDEX","CGROUP2_SUPER_MAGIC","CGROUP_SUPER_MAGIC","CIBAUD","CLD_CONTINUED","CLD_DUMPED","CLD_EXITED","CLD_KILLED","CLD_STOPPED","CLD_TRAPPED","CLOCAL","CLOCK_BOOTTIME","CLOCK_BOOTTIME_ALARM","CLOCK_MONOTONIC","CLOCK_MONOTONIC_COARSE","CLOCK_MONOTONIC_RAW","CLOCK_PROCESS_CPUTIME_ID","CLOCK_REALTIME","CLOCK_REALTIME_ALARM","CLOCK_REALTIME_COARSE","CLOCK_TAI","CLOCK_THREAD_CPUTIME_ID","CLONE_CHILD_CLEARTID","CLONE_CHILD_SETTID","CLONE_CLEAR_SIGHAND","CLONE_DETACHED","CLONE_FILES","CLONE_FS","CLONE_INTO_CGROUP","CLONE_IO","CLONE_NEWCGROUP","CLONE_NEWIPC","CLONE_NEWNET","CLONE_NEWNS","CLONE_NEWPID","CLONE_NEWTIME","CLONE_NEWUSER","CLONE_NEWUTS","CLONE_PARENT","CLONE_PARENT_SETTID","CLONE_PIDFD","CLONE_PTRACE","CLONE_SETTLS","CLONE_SIGHAND","CLONE_SYSVSEM","CLONE_THREAD","CLONE_UNTRACED","CLONE_VFORK","CLONE_VM","CLOSE_RANGE_CLOEXEC","CLOSE_RANGE_UNSHARE","CMSG_DATA","CMSG_FIRSTHDR","CMSG_LEN","CMSG_NXTHDR","CMSG_SPACE","CMSPAR","CODA_SUPER_MAGIC","CODESET","CPU_ALLOC_SIZE","CPU_CLR","CPU_COUNT","CPU_COUNT_S","CPU_EQUAL","CPU_ISSET","CPU_SET","CPU_SETSIZE","CPU_ZERO","CR0","CR1","CR2","CR3","CRAMFS_MAGIC","CRDLY","CREAD","CRNCYSTR","CRTSCTS","CS","CS5","CS6","CS7","CS8","CSIGNAL","CSIZE","CSTOPB","CTL_ABI","CTL_BUS","CTL_BUS_ISA","CTL_CPU","CTL_DEBUG","CTL_DEV","CTL_FS","CTL_KERN","CTL_NET","CTL_VM","CTRL_ATTR_FAMILY_ID","CTRL_ATTR_FAMILY_NAME","CTRL_ATTR_HDRSIZE","CTRL_ATTR_MAXATTR","CTRL_ATTR_MCAST_GROUPS","CTRL_ATTR_MCAST_GRP_ID","CTRL_ATTR_MCAST_GRP_NAME","CTRL_ATTR_MCAST_GRP_UNSPEC","CTRL_ATTR_OPS","CTRL_ATTR_OP_FLAGS","CTRL_ATTR_OP_ID","CTRL_ATTR_OP_UNSPEC","CTRL_ATTR_UNSPEC","CTRL_ATTR_VERSION","CTRL_CMD_DELFAMILY","CTRL_CMD_DELMCAST_GRP","CTRL_CMD_DELOPS","CTRL_CMD_GETFAMILY","CTRL_CMD_GETMCAST_GRP","CTRL_CMD_GETOPS","CTRL_CMD_NEWFAMILY","CTRL_CMD_NEWMCAST_GRP","CTRL_CMD_NEWOPS","CTRL_CMD_UNSPEC","DAY_1","DAY_2","DAY_3","DAY_4","DAY_5","DAY_6","DAY_7","DCCP_SERVICE_LIST_MAX_LEN","DCCP_SOCKOPT_AVAILABLE_CCIDS","DCCP_SOCKOPT_CCID","DCCP_SOCKOPT_CCID_RX_INFO","DCCP_SOCKOPT_CCID_TX_INFO","DCCP_SOCKOPT_CHANGE_L","DCCP_SOCKOPT_CHANGE_R","DCCP_SOCKOPT_GET_CUR_MPS","DCCP_SOCKOPT_PACKET_SIZE","DCCP_SOCKOPT_QPOLICY_ID","DCCP_SOCKOPT_QPOLICY_TXQLEN","DCCP_SOCKOPT_RECV_CSCOV","DCCP_SOCKOPT_RX_CCID","DCCP_SOCKOPT_SEND_CSCOV","DCCP_SOCKOPT_SERVER_TIMEWAIT","DCCP_SOCKOPT_SERVICE","DCCP_SOCKOPT_TX_CCID","DEAD_PROCESS","DEBUGFS_MAGIC","DEVPTS_SUPER_MAGIC","DIR","DS","DT_BLK","DT_CHR","DT_DIR","DT_FIFO","DT_LNK","DT_REG","DT_SOCK","DT_UNKNOWN","D_FMT","D_T_FMT","Dl_info","E2BIG","EACCES","EADDRINUSE","EADDRNOTAVAIL","EADV","EAFNOSUPPORT","EAGAIN","EAI_AGAIN","EAI_BADFLAGS","EAI_FAIL","EAI_FAMILY","EAI_MEMORY","EAI_NODATA","EAI_NONAME","EAI_OVERFLOW","EAI_SERVICE","EAI_SOCKTYPE","EAI_SYSTEM","EALREADY","EBADE","EBADF","EBADFD","EBADMSG","EBADR","EBADRQC","EBADSLT","EBFONT","EBUSY","ECANCELED","ECHILD","ECHO","ECHOCTL","ECHOE","ECHOK","ECHOKE","ECHONL","ECHOPRT","ECHRNG","ECOMM","ECONNABORTED","ECONNREFUSED","ECONNRESET","ECRYPTFS_SUPER_MAGIC","EDEADLK","EDEADLOCK","EDESTADDRREQ","EDOM","EDOTDOT","EDQUOT","EEXIST","EFAULT","EFBIG","EFD_CLOEXEC","EFD_NONBLOCK","EFD_SEMAPHORE","EFLAGS","EFS_SUPER_MAGIC","EHOSTDOWN","EHOSTUNREACH","EHWPOISON","EIDRM","EILSEQ","EINPROGRESS","EINTR","EINVAL","EIO","EISCONN","EISDIR","EISNAM","EI_ABIVERSION","EI_CLASS","EI_DATA","EI_MAG0","EI_MAG1","EI_MAG2","EI_MAG3","EI_NIDENT","EI_OSABI","EI_PAD","EI_VERSION","EKEYEXPIRED","EKEYREJECTED","EKEYREVOKED","EL2HLT","EL2NSYNC","EL3HLT","EL3RST","ELFCLASS32","ELFCLASS64","ELFCLASSNONE","ELFCLASSNUM","ELFDATA2LSB","ELFDATA2MSB","ELFDATANONE","ELFDATANUM","ELFMAG0","ELFMAG1","ELFMAG2","ELFMAG3","ELFOSABI_AIX","ELFOSABI_ARM","ELFOSABI_ARM_AEABI","ELFOSABI_FREEBSD","ELFOSABI_GNU","ELFOSABI_HPUX","ELFOSABI_IRIX","ELFOSABI_LINUX","ELFOSABI_MODESTO","ELFOSABI_NETBSD","ELFOSABI_NONE","ELFOSABI_OPENBSD","ELFOSABI_SOLARIS","ELFOSABI_STANDALONE","ELFOSABI_SYSV","ELFOSABI_TRU64","ELIBACC","ELIBBAD","ELIBEXEC","ELIBMAX","ELIBSCN","ELNRNG","ELOOP","EMEDIUMTYPE","EMFILE","EMLINK","EMPTY","EMSGSIZE","EMULTIHOP","EM_386","EM_68HC05","EM_68HC08","EM_68HC11","EM_68HC12","EM_68HC16","EM_68K","EM_860","EM_88K","EM_960","EM_AARCH64","EM_ALPHA","EM_ARC","EM_ARC_A5","EM_ARM","EM_AVR","EM_COLDFIRE","EM_CRIS","EM_D10V","EM_D30V","EM_FAKE_ALPHA","EM_FIREPATH","EM_FR20","EM_FR30","EM_FX66","EM_H8S","EM_H8_300","EM_H8_300H","EM_H8_500","EM_HUANY","EM_IA_64","EM_JAVELIN","EM_M32","EM_M32R","EM_ME16","EM_MIPS","EM_MIPS_RS3_LE","EM_MIPS_X","EM_MMA","EM_MMIX","EM_MN10200","EM_MN10300","EM_NCPU","EM_NDR1","EM_NONE","EM_OPENRISC","EM_PARISC","EM_PCP","EM_PDSP","EM_PJ","EM_PPC","EM_PPC64","EM_PRISM","EM_RCE","EM_RH32","EM_S370","EM_S390","EM_SH","EM_SPARC","EM_SPARC32PLUS","EM_SPARCV9","EM_ST100","EM_ST19","EM_ST7","EM_ST9PLUS","EM_STARCORE","EM_SVX","EM_TILEGX","EM_TILEPRO","EM_TINYJ","EM_TRICORE","EM_V800","EM_V850","EM_VAX","EM_VPP500","EM_X86_64","EM_XTENSA","EM_ZSP","ENAMETOOLONG","ENAVAIL","ENETDOWN","ENETRESET","ENETUNREACH","ENFILE","ENOANO","ENOATTR","ENOBUFS","ENOCSI","ENODATA","ENODEV","ENOENT","ENOEXEC","ENOKEY","ENOLCK","ENOLINK","ENOMEDIUM","ENOMEM","ENOMSG","ENONET","ENOPKG","ENOPROTOOPT","ENOSPC","ENOSR","ENOSTR","ENOSYS","ENOTBLK","ENOTCONN","ENOTDIR","ENOTEMPTY","ENOTNAM","ENOTRECOVERABLE","ENOTSOCK","ENOTSUP","ENOTTY","ENOTUNIQ","ENXIO","EOF","EOPNOTSUPP","EOVERFLOW","EOWNERDEAD","EPERM","EPFNOSUPPORT","EPIPE","EPOLLERR","EPOLLET","EPOLLEXCLUSIVE","EPOLLHUP","EPOLLIN","EPOLLMSG","EPOLLONESHOT","EPOLLOUT","EPOLLPRI","EPOLLRDBAND","EPOLLRDHUP","EPOLLRDNORM","EPOLLWAKEUP","EPOLLWRBAND","EPOLLWRNORM","EPOLL_CLOEXEC","EPOLL_CTL_ADD","EPOLL_CTL_DEL","EPOLL_CTL_MOD","EPROTO","EPROTONOSUPPORT","EPROTOTYPE","ERA","ERANGE","ERA_D_FMT","ERA_D_T_FMT","ERA_T_FMT","EREMCHG","EREMOTE","EREMOTEIO","ERESTART","ERFKILL","EROFS","ES","ESHUTDOWN","ESOCKTNOSUPPORT","ESPIPE","ESRCH","ESRMNT","ESTALE","ESTRPIPE","ETH_ALEN","ETH_DATA_LEN","ETH_FCS_LEN","ETH_FRAME_LEN","ETH_HLEN","ETH_P_1588","ETH_P_8021AD","ETH_P_8021AH","ETH_P_8021Q","ETH_P_80221","ETH_P_802_2","ETH_P_802_3","ETH_P_802_3_MIN","ETH_P_802_EX1","ETH_P_AARP","ETH_P_AF_IUCV","ETH_P_ALL","ETH_P_AOE","ETH_P_ARCNET","ETH_P_ARP","ETH_P_ATALK","ETH_P_ATMFATE","ETH_P_ATMMPOA","ETH_P_AX25","ETH_P_BATMAN","ETH_P_BPQ","ETH_P_CAIF","ETH_P_CANFD","ETH_P_CONTROL","ETH_P_CUST","ETH_P_DDCMP","ETH_P_DEC","ETH_P_DIAG","ETH_P_DNA_DL","ETH_P_DNA_RC","ETH_P_DNA_RT","ETH_P_DSA","ETH_P_ECONET","ETH_P_EDSA","ETH_P_FCOE","ETH_P_FIP","ETH_P_HDLC","ETH_P_IEEE802154","ETH_P_IEEEPUP","ETH_P_IEEEPUPAT","ETH_P_IP","ETH_P_IPV6","ETH_P_IPX","ETH_P_IRDA","ETH_P_LAT","ETH_P_LINK_CTL","ETH_P_LOCALTALK","ETH_P_LOOP","ETH_P_LOOPBACK","ETH_P_MACSEC","ETH_P_MOBITEX","ETH_P_MPLS_MC","ETH_P_MPLS_UC","ETH_P_MVRP","ETH_P_PAE","ETH_P_PAUSE","ETH_P_PHONET","ETH_P_PPPTALK","ETH_P_PPP_DISC","ETH_P_PPP_MP","ETH_P_PPP_SES","ETH_P_PRP","ETH_P_PUP","ETH_P_PUPAT","ETH_P_QINQ1","ETH_P_QINQ2","ETH_P_QINQ3","ETH_P_RARP","ETH_P_SCA","ETH_P_SLOW","ETH_P_SNAP","ETH_P_TDLS","ETH_P_TEB","ETH_P_TIPC","ETH_P_TRAILER","ETH_P_TR_802_2","ETH_P_WAN_PPP","ETH_P_WCCP","ETH_P_X25","ETH_ZLEN","ETIME","ETIMEDOUT","ETOOMANYREFS","ETXTBSY","ET_CORE","ET_DYN","ET_EXEC","ET_HIOS","ET_HIPROC","ET_LOOS","ET_LOPROC","ET_NONE","ET_NUM","ET_REL","EUCLEAN","EUNATCH","EUSERS","EV_CNT","EV_CURRENT","EV_MAX","EV_NONE","EV_NUM","EWOULDBLOCK","EXDEV","EXFULL","EXIT_FAILURE","EXIT_SUCCESS","EXT2_SUPER_MAGIC","EXT3_SUPER_MAGIC","EXT4_SUPER_MAGIC","EXTA","EXTB","EXTPROC","Elf32_Addr","Elf32_Chdr","Elf32_Ehdr","Elf32_Half","Elf32_Off","Elf32_Phdr","Elf32_Section","Elf32_Shdr","Elf32_Sym","Elf32_Word","Elf64_Addr","Elf64_Chdr","Elf64_Ehdr","Elf64_Half","Elf64_Off","Elf64_Phdr","Elf64_Section","Elf64_Shdr","Elf64_Sxword","Elf64_Sym","Elf64_Word","Elf64_Xword","F2FS_SUPER_MAGIC","FALLOC_FL_COLLAPSE_RANGE","FALLOC_FL_INSERT_RANGE","FALLOC_FL_KEEP_SIZE","FALLOC_FL_PUNCH_HOLE","FALLOC_FL_UNSHARE_RANGE","FALLOC_FL_ZERO_RANGE","FANOTIFY_METADATA_VERSION","FAN_ACCESS","FAN_ACCESS_PERM","FAN_ALLOW","FAN_ATTRIB","FAN_AUDIT","FAN_CLASS_CONTENT","FAN_CLASS_NOTIF","FAN_CLASS_PRE_CONTENT","FAN_CLOEXEC","FAN_CLOSE","FAN_CLOSE_NOWRITE","FAN_CLOSE_WRITE","FAN_CREATE","FAN_DELETE","FAN_DELETE_SELF","FAN_DENY","FAN_ENABLE_AUDIT","FAN_EPIDFD","FAN_EVENT_INFO_TYPE_DFID","FAN_EVENT_INFO_TYPE_DFID_NAME","FAN_EVENT_INFO_TYPE_ERROR","FAN_EVENT_INFO_TYPE_FID","FAN_EVENT_INFO_TYPE_NEW_DFID_NAME","FAN_EVENT_INFO_TYPE_OLD_DFID_NAME","FAN_EVENT_INFO_TYPE_PIDFD","FAN_EVENT_ON_CHILD","FAN_FS_ERROR","FAN_INFO","FAN_MARK_ADD","FAN_MARK_DONT_FOLLOW","FAN_MARK_EVICTABLE","FAN_MARK_FILESYSTEM","FAN_MARK_FLUSH","FAN_MARK_IGNORE","FAN_MARK_IGNORED_MASK","FAN_MARK_IGNORED_SURV_MODIFY","FAN_MARK_IGNORE_SURV","FAN_MARK_INODE","FAN_MARK_MOUNT","FAN_MARK_ONLYDIR","FAN_MARK_REMOVE","FAN_MODIFY","FAN_MOVE","FAN_MOVED_FROM","FAN_MOVED_TO","FAN_MOVE_SELF","FAN_NOFD","FAN_NONBLOCK","FAN_NOPIDFD","FAN_ONDIR","FAN_OPEN","FAN_OPEN_EXEC","FAN_OPEN_EXEC_PERM","FAN_OPEN_PERM","FAN_Q_OVERFLOW","FAN_RENAME","FAN_REPORT_DFID_NAME","FAN_REPORT_DFID_NAME_TARGET","FAN_REPORT_DIR_FID","FAN_REPORT_FID","FAN_REPORT_NAME","FAN_REPORT_PIDFD","FAN_REPORT_TARGET_FID","FAN_REPORT_TID","FAN_RESPONSE_INFO_AUDIT_RULE","FAN_RESPONSE_INFO_NONE","FAN_UNLIMITED_MARKS","FAN_UNLIMITED_QUEUE","FDPIC_FUNCPTRS","FD_CLOEXEC","FD_CLR","FD_ISSET","FD_SET","FD_SETSIZE","FD_ZERO","FF0","FF1","FFDLY","FF_CNT","FF_MAX","FICLONE","FICLONERANGE","FILE","FILENAME_MAX","FIOASYNC","FIOCLEX","FIONBIO","FIONCLEX","FIONREAD","FIOQSIZE","FLUSHO","FOPEN_MAX","FS","FS_BASE","FS_IOC32_GETFLAGS","FS_IOC32_GETVERSION","FS_IOC32_SETFLAGS","FS_IOC32_SETVERSION","FS_IOC_GETFLAGS","FS_IOC_GETVERSION","FS_IOC_SETFLAGS","FS_IOC_SETVERSION","FUSE_SUPER_MAGIC","FUTEXFS_SUPER_MAGIC","FUTEX_BITSET_MATCH_ANY","FUTEX_CLOCK_REALTIME","FUTEX_CMD_MASK","FUTEX_CMP_REQUEUE","FUTEX_CMP_REQUEUE_PI","FUTEX_FD","FUTEX_LOCK_PI","FUTEX_LOCK_PI2","FUTEX_OP","FUTEX_OP_ADD","FUTEX_OP_ANDN","FUTEX_OP_CMP_EQ","FUTEX_OP_CMP_GE","FUTEX_OP_CMP_GT","FUTEX_OP_CMP_LE","FUTEX_OP_CMP_LT","FUTEX_OP_CMP_NE","FUTEX_OP_OPARG_SHIFT","FUTEX_OP_OR","FUTEX_OP_SET","FUTEX_OP_XOR","FUTEX_PRIVATE_FLAG","FUTEX_REQUEUE","FUTEX_TRYLOCK_PI","FUTEX_UNLOCK_PI","FUTEX_WAIT","FUTEX_WAIT_BITSET","FUTEX_WAIT_REQUEUE_PI","FUTEX_WAKE","FUTEX_WAKE_BITSET","FUTEX_WAKE_OP","F_ADD_SEALS","F_CANCELLK","F_DUPFD","F_DUPFD_CLOEXEC","F_GETFD","F_GETFL","F_GETLEASE","F_GETLK","F_GETOWN","F_GETPIPE_SZ","F_GET_SEALS","F_LOCK","F_NOTIFY","F_OFD_GETLK","F_OFD_SETLK","F_OFD_SETLKW","F_OK","F_RDLCK","F_SEAL_FUTURE_WRITE","F_SEAL_GROW","F_SEAL_SEAL","F_SEAL_SHRINK","F_SEAL_WRITE","F_SETFD","F_SETFL","F_SETLEASE","F_SETLK","F_SETLKW","F_SETOWN","F_SETPIPE_SZ","F_TEST","F_TLOCK","F_ULOCK","F_UNLCK","F_WRLCK","GENL_ADMIN_PERM","GENL_CMD_CAP_DO","GENL_CMD_CAP_DUMP","GENL_CMD_CAP_HASPOL","GENL_ID_CTRL","GENL_ID_PMCRAID","GENL_ID_VFS_DQUOT","GENL_MAX_ID","GENL_MIN_ID","GENL_NAMSIZ","GENL_UNS_ADMIN_PERM","GLOB_ABORTED","GLOB_ALTDIRFUNC","GLOB_APPEND","GLOB_BRACE","GLOB_DOOFFS","GLOB_ERR","GLOB_MARK","GLOB_NOCHECK","GLOB_NOESCAPE","GLOB_NOMAGIC","GLOB_NOMATCH","GLOB_NOSORT","GLOB_NOSPACE","GLOB_ONLYDIR","GLOB_PERIOD","GLOB_TILDE","GLOB_TILDE_CHECK","GRND_INSECURE","GRND_NONBLOCK","GRND_RANDOM","GRPQUOTA","GS","GS_BASE","HOSTFS_SUPER_MAGIC","HPFS_SUPER_MAGIC","HUGETLBFS_MAGIC","HUGETLB_FLAG_ENCODE_16GB","HUGETLB_FLAG_ENCODE_16MB","HUGETLB_FLAG_ENCODE_1GB","HUGETLB_FLAG_ENCODE_1MB","HUGETLB_FLAG_ENCODE_256MB","HUGETLB_FLAG_ENCODE_2GB","HUGETLB_FLAG_ENCODE_2MB","HUGETLB_FLAG_ENCODE_32MB","HUGETLB_FLAG_ENCODE_512KB","HUGETLB_FLAG_ENCODE_512MB","HUGETLB_FLAG_ENCODE_64KB","HUGETLB_FLAG_ENCODE_8MB","HUGETLB_FLAG_ENCODE_MASK","HUGETLB_FLAG_ENCODE_SHIFT","HUPCL","HWTSTAMP_FILTER_ALL","HWTSTAMP_FILTER_NONE","HWTSTAMP_FILTER_NTP_ALL","HWTSTAMP_FILTER_PTP_V1_L4_DELAY_REQ","HWTSTAMP_FILTER_PTP_V1_L4_EVENT","HWTSTAMP_FILTER_PTP_V1_L4_SYNC","HWTSTAMP_FILTER_PTP_V2_DELAY_REQ","HWTSTAMP_FILTER_PTP_V2_EVENT","HWTSTAMP_FILTER_PTP_V2_L2_DELAY_REQ","HWTSTAMP_FILTER_PTP_V2_L2_EVENT","HWTSTAMP_FILTER_PTP_V2_L2_SYNC","HWTSTAMP_FILTER_PTP_V2_L4_DELAY_REQ","HWTSTAMP_FILTER_PTP_V2_L4_EVENT","HWTSTAMP_FILTER_PTP_V2_L4_SYNC","HWTSTAMP_FILTER_PTP_V2_SYNC","HWTSTAMP_FILTER_SOME","HWTSTAMP_TX_OFF","HWTSTAMP_TX_ON","HWTSTAMP_TX_ONESTEP_P2P","HWTSTAMP_TX_ONESTEP_SYNC","IBSHIFT","ICANON","ICRNL","IEXTEN","IFA_ADDRESS","IFA_ANYCAST","IFA_BROADCAST","IFA_CACHEINFO","IFA_FLAGS","IFA_F_DADFAILED","IFA_F_DEPRECATED","IFA_F_HOMEADDRESS","IFA_F_MANAGETEMPADDR","IFA_F_MCAUTOJOIN","IFA_F_NODAD","IFA_F_NOPREFIXROUTE","IFA_F_OPTIMISTIC","IFA_F_PERMANENT","IFA_F_SECONDARY","IFA_F_STABLE_PRIVACY","IFA_F_TEMPORARY","IFA_F_TENTATIVE","IFA_LABEL","IFA_LOCAL","IFA_MULTICAST","IFA_UNSPEC","IFF_ALLMULTI","IFF_ATTACH_QUEUE","IFF_AUTOMEDIA","IFF_BROADCAST","IFF_DEBUG","IFF_DETACH_QUEUE","IFF_DORMANT","IFF_DYNAMIC","IFF_ECHO","IFF_LOOPBACK","IFF_LOWER_UP","IFF_MASTER","IFF_MULTICAST","IFF_MULTI_QUEUE","IFF_NAPI","IFF_NAPI_FRAGS","IFF_NOARP","IFF_NOFILTER","IFF_NOTRAILERS","IFF_NO_CARRIER","IFF_NO_PI","IFF_ONE_QUEUE","IFF_PERSIST","IFF_POINTOPOINT","IFF_PORTSEL","IFF_PROMISC","IFF_RUNNING","IFF_SLAVE","IFF_TAP","IFF_TUN","IFF_TUN_EXCL","IFF_UP","IFF_VNET_HDR","IFLA_ADDRESS","IFLA_AF_SPEC","IFLA_ALLMULTI","IFLA_ALT_IFNAME","IFLA_BROADCAST","IFLA_CARRIER","IFLA_CARRIER_CHANGES","IFLA_CARRIER_DOWN_COUNT","IFLA_CARRIER_UP_COUNT","IFLA_COST","IFLA_EVENT","IFLA_EXT_MASK","IFLA_GROUP","IFLA_GRO_MAX_SIZE","IFLA_GSO_MAX_SEGS","IFLA_GSO_MAX_SIZE","IFLA_IFALIAS","IFLA_IFNAME","IFLA_IF_NETNSID","IFLA_INFO_DATA","IFLA_INFO_KIND","IFLA_INFO_SLAVE_DATA","IFLA_INFO_SLAVE_KIND","IFLA_INFO_UNSPEC","IFLA_INFO_XSTATS","IFLA_LINK","IFLA_LINKINFO","IFLA_LINKMODE","IFLA_LINK_NETNSID","IFLA_MAP","IFLA_MASTER","IFLA_MAX_MTU","IFLA_MIN_MTU","IFLA_MTU","IFLA_NET_NS_FD","IFLA_NET_NS_PID","IFLA_NEW_IFINDEX","IFLA_NEW_NETNSID","IFLA_NUM_RX_QUEUES","IFLA_NUM_TX_QUEUES","IFLA_NUM_VF","IFLA_OPERSTATE","IFLA_PAD","IFLA_PARENT_DEV_BUS_NAME","IFLA_PARENT_DEV_NAME","IFLA_PERM_ADDRESS","IFLA_PHYS_PORT_ID","IFLA_PHYS_PORT_NAME","IFLA_PHYS_SWITCH_ID","IFLA_PORT_SELF","IFLA_PRIORITY","IFLA_PROMISCUITY","IFLA_PROP_LIST","IFLA_PROTINFO","IFLA_PROTO_DOWN","IFLA_PROTO_DOWN_REASON","IFLA_QDISC","IFLA_STATS","IFLA_STATS64","IFLA_TARGET_NETNSID","IFLA_TSO_MAX_SEGS","IFLA_TSO_MAX_SIZE","IFLA_TXQLEN","IFLA_UNSPEC","IFLA_VFINFO_LIST","IFLA_VF_PORTS","IFLA_WEIGHT","IFLA_WIRELESS","IFLA_XDP","IFNAMSIZ","IF_LINK_MODE_DEFAULT","IF_LINK_MODE_DORMANT","IF_LINK_MODE_TESTING","IF_NAMESIZE","IF_OPER_DORMANT","IF_OPER_DOWN","IF_OPER_LOWERLAYERDOWN","IF_OPER_NOTPRESENT","IF_OPER_TESTING","IF_OPER_UNKNOWN","IF_OPER_UP","IGNBRK","IGNCR","IGNPAR","IMAXBEL","INADDR_ANY","INADDR_BROADCAST","INADDR_LOOPBACK","INADDR_NONE","INIT_PROCESS","INLCR","INOTIFY_MAX_QUEUED_EVENTS","INOTIFY_MAX_USER_INSTANCES","INOTIFY_MAX_USER_WATCHES","INPCK","INPUT_PROP_CNT","INPUT_PROP_MAX","INT_MAX","INT_MIN","IN_ACCESS","IN_ALL_EVENTS","IN_ATTRIB","IN_CLOEXEC","IN_CLOSE","IN_CLOSE_NOWRITE","IN_CLOSE_WRITE","IN_CREATE","IN_DELETE","IN_DELETE_SELF","IN_DONT_FOLLOW","IN_EXCL_UNLINK","IN_IGNORED","IN_ISDIR","IN_MASK_ADD","IN_MASK_CREATE","IN_MODIFY","IN_MOVE","IN_MOVED_FROM","IN_MOVED_TO","IN_MOVE_SELF","IN_NONBLOCK","IN_ONESHOT","IN_ONLYDIR","IN_OPEN","IN_Q_OVERFLOW","IN_UNMOUNT","IP6T_SO_ORIGINAL_DST","IPC_CREAT","IPC_EXCL","IPC_INFO","IPC_NOWAIT","IPC_PRIVATE","IPC_RMID","IPC_SET","IPC_STAT","IPDEFTTL","IPOPT_CLASS","IPOPT_CLASS_MASK","IPOPT_CONTROL","IPOPT_COPIED","IPOPT_COPY","IPOPT_END","IPOPT_EOL","IPOPT_LSRR","IPOPT_MEASUREMENT","IPOPT_MINOFF","IPOPT_NOOP","IPOPT_NOP","IPOPT_NUMBER","IPOPT_NUMBER_MASK","IPOPT_OFFSET","IPOPT_OLEN","IPOPT_OPTVAL","IPOPT_RA","IPOPT_RESERVED1","IPOPT_RESERVED2","IPOPT_RR","IPOPT_SEC","IPOPT_SID","IPOPT_SSRR","IPOPT_TIMESTAMP","IPOPT_TS","IPOPT_TS_PRESPEC","IPOPT_TS_TSANDADDR","IPOPT_TS_TSONLY","IPPROTO_AH","IPPROTO_BEETPH","IPPROTO_COMP","IPPROTO_DCCP","IPPROTO_DSTOPTS","IPPROTO_EGP","IPPROTO_ENCAP","IPPROTO_ESP","IPPROTO_ETHERNET","IPPROTO_FRAGMENT","IPPROTO_GRE","IPPROTO_HOPOPTS","IPPROTO_ICMP","IPPROTO_ICMPV6","IPPROTO_IDP","IPPROTO_IGMP","IPPROTO_IP","IPPROTO_IPIP","IPPROTO_IPV6","IPPROTO_MAX","IPPROTO_MH","IPPROTO_MPLS","IPPROTO_MPTCP","IPPROTO_MTP","IPPROTO_NONE","IPPROTO_PIM","IPPROTO_PUP","IPPROTO_RAW","IPPROTO_ROUTING","IPPROTO_RSVP","IPPROTO_SCTP","IPPROTO_TCP","IPPROTO_TP","IPPROTO_UDP","IPPROTO_UDPLITE","IPTOS_ECN","IPTOS_ECN_CE","IPTOS_ECN_ECT0","IPTOS_ECN_ECT1","IPTOS_ECN_MASK","IPTOS_ECN_NOT_ECT","IPTOS_LOWDELAY","IPTOS_MINCOST","IPTOS_PREC","IPTOS_PREC_CRITIC_ECP","IPTOS_PREC_FLASH","IPTOS_PREC_FLASHOVERRIDE","IPTOS_PREC_IMMEDIATE","IPTOS_PREC_INTERNETCONTROL","IPTOS_PREC_MASK","IPTOS_PREC_NETCONTROL","IPTOS_PREC_PRIORITY","IPTOS_PREC_ROUTINE","IPTOS_RELIABILITY","IPTOS_THROUGHPUT","IPTOS_TOS","IPTOS_TOS_MASK","IPV6_2292DSTOPTS","IPV6_2292HOPLIMIT","IPV6_2292HOPOPTS","IPV6_2292PKTINFO","IPV6_2292PKTOPTIONS","IPV6_2292RTHDR","IPV6_ADDRFORM","IPV6_ADDR_PREFERENCES","IPV6_ADD_MEMBERSHIP","IPV6_AUTHHDR","IPV6_AUTOFLOWLABEL","IPV6_CHECKSUM","IPV6_DONTFRAG","IPV6_DROP_MEMBERSHIP","IPV6_DSTOPTS","IPV6_FLOWINFO","IPV6_FLOWINFO_FLOWLABEL","IPV6_FLOWINFO_PRIORITY","IPV6_FLOWINFO_SEND","IPV6_FLOWLABEL_MGR","IPV6_FREEBIND","IPV6_HDRINCL","IPV6_HOPLIMIT","IPV6_HOPOPTS","IPV6_IPSEC_POLICY","IPV6_JOIN_ANYCAST","IPV6_LEAVE_ANYCAST","IPV6_MINHOPCOUNT","IPV6_MTU","IPV6_MTU_DISCOVER","IPV6_MULTICAST_ALL","IPV6_MULTICAST_HOPS","IPV6_MULTICAST_IF","IPV6_MULTICAST_LOOP","IPV6_NEXTHOP","IPV6_ORIGDSTADDR","IPV6_PATHMTU","IPV6_PKTINFO","IPV6_PMTUDISC_DO","IPV6_PMTUDISC_DONT","IPV6_PMTUDISC_INTERFACE","IPV6_PMTUDISC_OMIT","IPV6_PMTUDISC_PROBE","IPV6_PMTUDISC_WANT","IPV6_PREFER_SRC_CGA","IPV6_PREFER_SRC_COA","IPV6_PREFER_SRC_HOME","IPV6_PREFER_SRC_NONCGA","IPV6_PREFER_SRC_PUBLIC","IPV6_PREFER_SRC_PUBTMP_DEFAULT","IPV6_PREFER_SRC_TMP","IPV6_RECVDSTOPTS","IPV6_RECVERR","IPV6_RECVFRAGSIZE","IPV6_RECVHOPLIMIT","IPV6_RECVHOPOPTS","IPV6_RECVORIGDSTADDR","IPV6_RECVPATHMTU","IPV6_RECVPKTINFO","IPV6_RECVRTHDR","IPV6_RECVTCLASS","IPV6_ROUTER_ALERT","IPV6_ROUTER_ALERT_ISOLATE","IPV6_RTHDR","IPV6_RTHDRDSTOPTS","IPV6_RTHDR_LOOSE","IPV6_RTHDR_STRICT","IPV6_TCLASS","IPV6_TRANSPARENT","IPV6_UNICAST_HOPS","IPV6_UNICAST_IF","IPV6_V6ONLY","IPV6_XFRM_POLICY","IPVERSION","IP_ADD_MEMBERSHIP","IP_ADD_SOURCE_MEMBERSHIP","IP_BIND_ADDRESS_NO_PORT","IP_BLOCK_SOURCE","IP_CHECKSUM","IP_DEFAULT_MULTICAST_LOOP","IP_DEFAULT_MULTICAST_TTL","IP_DROP_MEMBERSHIP","IP_DROP_SOURCE_MEMBERSHIP","IP_FREEBIND","IP_HDRINCL","IP_IPSEC_POLICY","IP_MINTTL","IP_MSFILTER","IP_MTU","IP_MTU_DISCOVER","IP_MULTICAST_ALL","IP_MULTICAST_IF","IP_MULTICAST_LOOP","IP_MULTICAST_TTL","IP_NODEFRAG","IP_OPTIONS","IP_ORIGDSTADDR","IP_PASSSEC","IP_PKTINFO","IP_PKTOPTIONS","IP_PMTUDISC_DO","IP_PMTUDISC_DONT","IP_PMTUDISC_INTERFACE","IP_PMTUDISC_OMIT","IP_PMTUDISC_PROBE","IP_PMTUDISC_WANT","IP_RECVERR","IP_RECVFRAGSIZE","IP_RECVOPTS","IP_RECVORIGDSTADDR","IP_RECVTOS","IP_RECVTTL","IP_RETOPTS","IP_ROUTER_ALERT","IP_TOS","IP_TRANSPARENT","IP_TTL","IP_UNBLOCK_SOURCE","IP_UNICAST_IF","IP_XFRM_POLICY","ISIG","ISOFS_SUPER_MAGIC","ISTRIP","ITIMER_PROF","ITIMER_REAL","ITIMER_VIRTUAL","IUTF8","IWEVASSOCREQIE","IWEVASSOCRESPIE","IWEVCUSTOM","IWEVEXPIRED","IWEVFIRST","IWEVGENIE","IWEVMICHAELMICFAILURE","IWEVPMKIDCAND","IWEVQUAL","IWEVREGISTERED","IWEVTXDROP","IW_AUTH_80211_AUTH_ALG","IW_AUTH_ALG_LEAP","IW_AUTH_ALG_OPEN_SYSTEM","IW_AUTH_ALG_SHARED_KEY","IW_AUTH_CIPHER_AES_CMAC","IW_AUTH_CIPHER_CCMP","IW_AUTH_CIPHER_GROUP","IW_AUTH_CIPHER_GROUP_MGMT","IW_AUTH_CIPHER_NONE","IW_AUTH_CIPHER_PAIRWISE","IW_AUTH_CIPHER_TKIP","IW_AUTH_CIPHER_WEP104","IW_AUTH_CIPHER_WEP40","IW_AUTH_DROP_UNENCRYPTED","IW_AUTH_FLAGS","IW_AUTH_INDEX","IW_AUTH_KEY_MGMT","IW_AUTH_KEY_MGMT_802_1X","IW_AUTH_KEY_MGMT_PSK","IW_AUTH_MFP","IW_AUTH_MFP_DISABLED","IW_AUTH_MFP_OPTIONAL","IW_AUTH_MFP_REQUIRED","IW_AUTH_PRIVACY_INVOKED","IW_AUTH_ROAMING_CONTROL","IW_AUTH_ROAMING_DISABLE","IW_AUTH_ROAMING_ENABLE","IW_AUTH_RX_UNENCRYPTED_EAPOL","IW_AUTH_TKIP_COUNTERMEASURES","IW_AUTH_WPA_ENABLED","IW_AUTH_WPA_VERSION","IW_AUTH_WPA_VERSION_DISABLED","IW_AUTH_WPA_VERSION_WPA","IW_AUTH_WPA_VERSION_WPA2","IW_CUSTOM_MAX","IW_ENCODE_ALG_AES_CMAC","IW_ENCODE_ALG_CCMP","IW_ENCODE_ALG_NONE","IW_ENCODE_ALG_PMK","IW_ENCODE_ALG_TKIP","IW_ENCODE_ALG_WEP","IW_ENCODE_DISABLED","IW_ENCODE_ENABLED","IW_ENCODE_EXT_GROUP_KEY","IW_ENCODE_EXT_RX_SEQ_VALID","IW_ENCODE_EXT_SET_TX_KEY","IW_ENCODE_EXT_TX_SEQ_VALID","IW_ENCODE_FLAGS","IW_ENCODE_INDEX","IW_ENCODE_MODE","IW_ENCODE_NOKEY","IW_ENCODE_OPEN","IW_ENCODE_RESTRICTED","IW_ENCODE_SEQ_MAX_SIZE","IW_ENCODE_TEMP","IW_ENCODING_TOKEN_MAX","IW_ENC_CAPA_4WAY_HANDSHAKE","IW_ENC_CAPA_CIPHER_CCMP","IW_ENC_CAPA_CIPHER_TKIP","IW_ENC_CAPA_WPA","IW_ENC_CAPA_WPA2","IW_ESSID_MAX_SIZE","IW_EV_CHAR_PK_LEN","IW_EV_LCP_PK_LEN","IW_EV_POINT_PK_LEN","IW_FREQ_AUTO","IW_FREQ_FIXED","IW_GENERIC_IE_MAX","IW_MAX_AP","IW_MAX_BITRATES","IW_MAX_ENCODING_SIZES","IW_MAX_FREQUENCIES","IW_MAX_SPY","IW_MAX_TXPOWER","IW_MICFAILURE_COUNT","IW_MICFAILURE_GROUP","IW_MICFAILURE_KEY_ID","IW_MICFAILURE_PAIRWISE","IW_MICFAILURE_STAKEY","IW_MLME_ASSOC","IW_MLME_AUTH","IW_MLME_DEAUTH","IW_MLME_DISASSOC","IW_MODE_ADHOC","IW_MODE_AUTO","IW_MODE_INFRA","IW_MODE_MASTER","IW_MODE_MESH","IW_MODE_MONITOR","IW_MODE_REPEAT","IW_MODE_SECOND","IW_PMKID_CAND_PREAUTH","IW_PMKID_LEN","IW_PMKSA_ADD","IW_PMKSA_FLUSH","IW_PMKSA_REMOVE","IW_POWER_ALL_R","IW_POWER_FORCE_S","IW_POWER_MAX","IW_POWER_MIN","IW_POWER_MODE","IW_POWER_MODIFIER","IW_POWER_MULTICAST_R","IW_POWER_ON","IW_POWER_PERIOD","IW_POWER_RELATIVE","IW_POWER_REPEATER","IW_POWER_TIMEOUT","IW_POWER_TYPE","IW_POWER_UNICAST_R","IW_PRIV_SIZE_FIXED","IW_PRIV_SIZE_MASK","IW_PRIV_TYPE_ADDR","IW_PRIV_TYPE_BYTE","IW_PRIV_TYPE_CHAR","IW_PRIV_TYPE_FLOAT","IW_PRIV_TYPE_INT","IW_PRIV_TYPE_MASK","IW_PRIV_TYPE_NONE","IW_QUAL_ALL_INVALID","IW_QUAL_ALL_UPDATED","IW_QUAL_DBM","IW_QUAL_LEVEL_INVALID","IW_QUAL_LEVEL_UPDATED","IW_QUAL_NOISE_INVALID","IW_QUAL_NOISE_UPDATED","IW_QUAL_QUAL_INVALID","IW_QUAL_QUAL_UPDATED","IW_QUAL_RCPI","IW_RETRY_LIFETIME","IW_RETRY_LIMIT","IW_RETRY_LONG","IW_RETRY_MAX","IW_RETRY_MIN","IW_RETRY_MODIFIER","IW_RETRY_ON","IW_RETRY_RELATIVE","IW_RETRY_SHORT","IW_RETRY_TYPE","IW_SCAN_ALL_ESSID","IW_SCAN_ALL_FREQ","IW_SCAN_ALL_MODE","IW_SCAN_ALL_RATE","IW_SCAN_CAPA_BSSID","IW_SCAN_CAPA_CHANNEL","IW_SCAN_CAPA_ESSID","IW_SCAN_CAPA_MODE","IW_SCAN_CAPA_NONE","IW_SCAN_CAPA_RATE","IW_SCAN_CAPA_TIME","IW_SCAN_CAPA_TYPE","IW_SCAN_DEFAULT","IW_SCAN_MAX_DATA","IW_SCAN_THIS_ESSID","IW_SCAN_THIS_FREQ","IW_SCAN_THIS_MODE","IW_SCAN_THIS_RATE","IW_SCAN_TYPE_ACTIVE","IW_SCAN_TYPE_PASSIVE","IW_TXPOW_DBM","IW_TXPOW_MWATT","IW_TXPOW_RANGE","IW_TXPOW_RELATIVE","IW_TXPOW_TYPE","IXANY","IXOFF","IXON","J1939_EE_INFO_NONE","J1939_EE_INFO_RX_ABORT","J1939_EE_INFO_RX_DPO","J1939_EE_INFO_RX_RTS","J1939_EE_INFO_TX_ABORT","J1939_FILTER_MAX","J1939_IDLE_ADDR","J1939_MAX_UNICAST_ADDR","J1939_NLA_BYTES_ACKED","J1939_NLA_DEST_ADDR","J1939_NLA_DEST_NAME","J1939_NLA_PAD","J1939_NLA_PGN","J1939_NLA_SRC_ADDR","J1939_NLA_SRC_NAME","J1939_NLA_TOTAL_SIZE","J1939_NO_ADDR","J1939_NO_NAME","J1939_NO_PGN","J1939_PGN_ADDRESS_CLAIMED","J1939_PGN_ADDRESS_COMMANDED","J1939_PGN_MAX","J1939_PGN_PDU1_MAX","J1939_PGN_REQUEST","JFFS2_SUPER_MAGIC","KERNEL_VERSION","KERN_ACCT","KERN_ACPI_VIDEO_FLAGS","KERN_BOOTLOADER_TYPE","KERN_CADPID","KERN_COMPAT_LOG","KERN_CORE_PATTERN","KERN_CORE_USES_PID","KERN_CTLALTDEL","KERN_DOMAINNAME","KERN_HOTPLUG","KERN_HPPA_PWRSW","KERN_HPPA_UNALIGNED","KERN_HZ_TIMER","KERN_IA64_UNALIGNED","KERN_IEEE_EMULATION_WARNINGS","KERN_MAX_LOCK_DEPTH","KERN_MAX_THREADS","KERN_MODPROBE","KERN_MSGMAX","KERN_MSGMNB","KERN_MSGMNI","KERN_MSGPOOL","KERN_NAMETRANS","KERN_NGROUPS_MAX","KERN_NMI_WATCHDOG","KERN_NODENAME","KERN_OSRELEASE","KERN_OSREV","KERN_OSTYPE","KERN_OVERFLOWGID","KERN_OVERFLOWUID","KERN_PANIC","KERN_PANIC_ON_NMI","KERN_PANIC_ON_OOPS","KERN_PIDMAX","KERN_PPC_HTABRECLAIM","KERN_PPC_L2CR","KERN_PPC_POWERSAVE_NAP","KERN_PPC_ZEROPAGED","KERN_PRINTK","KERN_PRINTK_RATELIMIT","KERN_PRINTK_RATELIMIT_BURST","KERN_PROF","KERN_PTY","KERN_RANDOM","KERN_RANDOMIZE","KERN_REALROOTDEV","KERN_RTSIGMAX","KERN_RTSIGNR","KERN_S390_USER_DEBUG_LOGGING","KERN_SECUREMASK","KERN_SEM","KERN_SETUID_DUMPABLE","KERN_SG_BIG_BUFF","KERN_SHMALL","KERN_SHMMAX","KERN_SHMMNI","KERN_SHMPATH","KERN_SPARC_REBOOT","KERN_SPARC_SCONS_PWROFF","KERN_SPARC_STOP_A","KERN_SPIN_RETRY","KERN_SYSRQ","KERN_TAINTED","KERN_UNKNOWN_NMI_PANIC","KERN_VERSION","KEXEC_ARCH_MASK","KEXEC_FILE_NO_INITRAMFS","KEXEC_FILE_ON_CRASH","KEXEC_FILE_UNLOAD","KEXEC_ON_CRASH","KEXEC_PRESERVE_CONTEXT","KEYCTL_ASSUME_AUTHORITY","KEYCTL_CAPABILITIES","KEYCTL_CAPS0_BIG_KEY","KEYCTL_CAPS0_CAPABILITIES","KEYCTL_CAPS0_DIFFIE_HELLMAN","KEYCTL_CAPS0_INVALIDATE","KEYCTL_CAPS0_MOVE","KEYCTL_CAPS0_PERSISTENT_KEYRINGS","KEYCTL_CAPS0_PUBLIC_KEY","KEYCTL_CAPS0_RESTRICT_KEYRING","KEYCTL_CAPS1_NS_KEYRING_NAME","KEYCTL_CAPS1_NS_KEY_TAG","KEYCTL_CHOWN","KEYCTL_CLEAR","KEYCTL_DESCRIBE","KEYCTL_DH_COMPUTE","KEYCTL_GET_KEYRING_ID","KEYCTL_GET_PERSISTENT","KEYCTL_GET_SECURITY","KEYCTL_INSTANTIATE","KEYCTL_INSTANTIATE_IOV","KEYCTL_INVALIDATE","KEYCTL_JOIN_SESSION_KEYRING","KEYCTL_LINK","KEYCTL_MOVE","KEYCTL_NEGATE","KEYCTL_PKEY_DECRYPT","KEYCTL_PKEY_ENCRYPT","KEYCTL_PKEY_QUERY","KEYCTL_PKEY_SIGN","KEYCTL_PKEY_VERIFY","KEYCTL_READ","KEYCTL_REJECT","KEYCTL_RESTRICT_KEYRING","KEYCTL_REVOKE","KEYCTL_SEARCH","KEYCTL_SESSION_TO_PARENT","KEYCTL_SETPERM","KEYCTL_SET_REQKEY_KEYRING","KEYCTL_SET_TIMEOUT","KEYCTL_SUPPORTS_DECRYPT","KEYCTL_SUPPORTS_ENCRYPT","KEYCTL_SUPPORTS_SIGN","KEYCTL_SUPPORTS_VERIFY","KEYCTL_UNLINK","KEYCTL_UPDATE","KEY_CNT","KEY_MAX","KEY_REQKEY_DEFL_DEFAULT","KEY_REQKEY_DEFL_GROUP_KEYRING","KEY_REQKEY_DEFL_NO_CHANGE","KEY_REQKEY_DEFL_PROCESS_KEYRING","KEY_REQKEY_DEFL_REQUESTOR_KEYRING","KEY_REQKEY_DEFL_SESSION_KEYRING","KEY_REQKEY_DEFL_THREAD_KEYRING","KEY_REQKEY_DEFL_USER_KEYRING","KEY_REQKEY_DEFL_USER_SESSION_KEYRING","KEY_SPEC_GROUP_KEYRING","KEY_SPEC_PROCESS_KEYRING","KEY_SPEC_REQKEY_AUTH_KEY","KEY_SPEC_REQUESTOR_KEYRING","KEY_SPEC_SESSION_KEYRING","KEY_SPEC_THREAD_KEYRING","KEY_SPEC_USER_KEYRING","KEY_SPEC_USER_SESSION_KEYRING","LC_ADDRESS","LC_ADDRESS_MASK","LC_ALL","LC_ALL_MASK","LC_COLLATE","LC_COLLATE_MASK","LC_CTYPE","LC_CTYPE_MASK","LC_IDENTIFICATION","LC_IDENTIFICATION_MASK","LC_MEASUREMENT","LC_MEASUREMENT_MASK","LC_MESSAGES","LC_MESSAGES_MASK","LC_MONETARY","LC_MONETARY_MASK","LC_NAME","LC_NAME_MASK","LC_NUMERIC","LC_NUMERIC_MASK","LC_PAPER","LC_PAPER_MASK","LC_TELEPHONE","LC_TELEPHONE_MASK","LC_TIME","LC_TIME_MASK","LED_CNT","LED_MAX","LINUX_REBOOT_CMD_CAD_OFF","LINUX_REBOOT_CMD_CAD_ON","LINUX_REBOOT_CMD_HALT","LINUX_REBOOT_CMD_KEXEC","LINUX_REBOOT_CMD_POWER_OFF","LINUX_REBOOT_CMD_RESTART","LINUX_REBOOT_CMD_RESTART2","LINUX_REBOOT_CMD_SW_SUSPEND","LINUX_REBOOT_MAGIC1","LINUX_REBOOT_MAGIC2","LINUX_REBOOT_MAGIC2A","LINUX_REBOOT_MAGIC2B","LINUX_REBOOT_MAGIC2C","LIO_NOP","LIO_NOWAIT","LIO_READ","LIO_WAIT","LIO_WRITE","LM_ID_BASE","LM_ID_NEWLM","LOCK_EX","LOCK_NB","LOCK_SH","LOCK_UN","LOGIN_PROCESS","LOG_ALERT","LOG_AUTH","LOG_AUTHPRIV","LOG_CONS","LOG_CRIT","LOG_CRON","LOG_DAEMON","LOG_DEBUG","LOG_EMERG","LOG_ERR","LOG_FACMASK","LOG_FTP","LOG_INFO","LOG_KERN","LOG_LOCAL0","LOG_LOCAL1","LOG_LOCAL2","LOG_LOCAL3","LOG_LOCAL4","LOG_LOCAL5","LOG_LOCAL6","LOG_LOCAL7","LOG_LPR","LOG_MAIL","LOG_NDELAY","LOG_NEWS","LOG_NFACILITIES","LOG_NOTICE","LOG_NOWAIT","LOG_ODELAY","LOG_PERROR","LOG_PID","LOG_PRIMASK","LOG_SYSLOG","LOG_USER","LOG_UUCP","LOG_WARNING","L_tmpnam","Lmid_t","MADV_COLD","MADV_COLLAPSE","MADV_DODUMP","MADV_DOFORK","MADV_DONTDUMP","MADV_DONTFORK","MADV_DONTNEED","MADV_DONTNEED_LOCKED","MADV_FREE","MADV_HUGEPAGE","MADV_HWPOISON","MADV_KEEPONFORK","MADV_MERGEABLE","MADV_NOHUGEPAGE","MADV_NORMAL","MADV_PAGEOUT","MADV_POPULATE_READ","MADV_POPULATE_WRITE","MADV_RANDOM","MADV_REMOVE","MADV_SEQUENTIAL","MADV_SOFT_OFFLINE","MADV_UNMERGEABLE","MADV_WILLNEED","MADV_WIPEONFORK","MAP_32BIT","MAP_ANON","MAP_ANONYMOUS","MAP_DENYWRITE","MAP_EXECUTABLE","MAP_FAILED","MAP_FILE","MAP_FIXED","MAP_FIXED_NOREPLACE","MAP_GROWSDOWN","MAP_HUGETLB","MAP_HUGE_16GB","MAP_HUGE_16MB","MAP_HUGE_1GB","MAP_HUGE_1MB","MAP_HUGE_256MB","MAP_HUGE_2GB","MAP_HUGE_2MB","MAP_HUGE_32MB","MAP_HUGE_512KB","MAP_HUGE_512MB","MAP_HUGE_64KB","MAP_HUGE_8MB","MAP_HUGE_MASK","MAP_HUGE_SHIFT","MAP_LOCKED","MAP_NONBLOCK","MAP_NORESERVE","MAP_POPULATE","MAP_PRIVATE","MAP_SHARED","MAP_SHARED_VALIDATE","MAP_STACK","MAP_SYNC","MAP_TYPE","MAXTC","MAXTTL","MAX_ADDR_LEN","MAX_IPOPTLEN","MAX_LINKS","MCAST_BLOCK_SOURCE","MCAST_EXCLUDE","MCAST_INCLUDE","MCAST_JOIN_GROUP","MCAST_JOIN_SOURCE_GROUP","MCAST_LEAVE_GROUP","MCAST_LEAVE_SOURCE_GROUP","MCAST_MSFILTER","MCAST_UNBLOCK_SOURCE","MCL_CURRENT","MCL_FUTURE","MCL_ONFAULT","MEMBARRIER_CMD_GLOBAL","MEMBARRIER_CMD_GLOBAL_EXPEDITED","MEMBARRIER_CMD_PRIVATE_EXPEDITED","MEMBARRIER_CMD_PRIVATE_EXPEDITED_RSEQ","MEMBARRIER_CMD_PRIVATE_EXPEDITED_SYNC_CORE","MEMBARRIER_CMD_QUERY","MEMBARRIER_CMD_REGISTER_GLOBAL_EXPEDITED","MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED","MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_RSEQ","MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_SYNC_CORE","MFD_ALLOW_SEALING","MFD_CLOEXEC","MFD_EXEC","MFD_HUGETLB","MFD_HUGE_16GB","MFD_HUGE_16MB","MFD_HUGE_1GB","MFD_HUGE_1MB","MFD_HUGE_256MB","MFD_HUGE_2GB","MFD_HUGE_2MB","MFD_HUGE_32MB","MFD_HUGE_512KB","MFD_HUGE_512MB","MFD_HUGE_64KB","MFD_HUGE_8MB","MFD_HUGE_MASK","MFD_HUGE_SHIFT","MFD_NOEXEC_SEAL","MINIX2_SUPER_MAGIC","MINIX2_SUPER_MAGIC2","MINIX3_SUPER_MAGIC","MINIX_SUPER_MAGIC","MINIX_SUPER_MAGIC2","MINSIGSTKSZ","MLOCK_ONFAULT","MMAP_PAGE_ZERO","MNT_DETACH","MNT_EXPIRE","MNT_FORCE","MODULE_INIT_IGNORE_MODVERSIONS","MODULE_INIT_IGNORE_VERMAGIC","MOD_CLKA","MOD_CLKB","MOD_ESTERROR","MOD_FREQUENCY","MOD_MAXERROR","MOD_MICRO","MOD_NANO","MOD_OFFSET","MOD_STATUS","MOD_TAI","MOD_TIMECONST","MON_1","MON_10","MON_11","MON_12","MON_2","MON_3","MON_4","MON_5","MON_6","MON_7","MON_8","MON_9","MOVE_MOUNT_BENEATH","MOVE_MOUNT_F_AUTOMOUNTS","MOVE_MOUNT_F_EMPTY_PATH","MOVE_MOUNT_F_SYMLINKS","MOVE_MOUNT_SET_GROUP","MOVE_MOUNT_T_AUTOMOUNTS","MOVE_MOUNT_T_EMPTY_PATH","MOVE_MOUNT_T_SYMLINKS","MPOL_BIND","MPOL_DEFAULT","MPOL_F_NUMA_BALANCING","MPOL_F_RELATIVE_NODES","MPOL_F_STATIC_NODES","MPOL_INTERLEAVE","MPOL_LOCAL","MPOL_PREFERRED","MREMAP_DONTUNMAP","MREMAP_FIXED","MREMAP_MAYMOVE","MSC_CNT","MSC_MAX","MSDOS_SUPER_MAGIC","MSG_CMSG_CLOEXEC","MSG_CONFIRM","MSG_COPY","MSG_CTRUNC","MSG_DONTROUTE","MSG_DONTWAIT","MSG_EOR","MSG_ERRQUEUE","MSG_EXCEPT","MSG_FASTOPEN","MSG_FIN","MSG_INFO","MSG_MORE","MSG_NOERROR","MSG_NOSIGNAL","MSG_NOTIFICATION","MSG_OOB","MSG_PEEK","MSG_RST","MSG_STAT","MSG_SYN","MSG_TRUNC","MSG_TRYHARD","MSG_WAITALL","MSG_WAITFORONE","MSG_ZEROCOPY","MS_ACTIVE","MS_ASYNC","MS_BIND","MS_DIRSYNC","MS_INVALIDATE","MS_I_VERSION","MS_KERNMOUNT","MS_LAZYTIME","MS_MANDLOCK","MS_MGC_MSK","MS_MGC_VAL","MS_MOVE","MS_NOATIME","MS_NODEV","MS_NODIRATIME","MS_NOEXEC","MS_NOSUID","MS_NOUSER","MS_POSIXACL","MS_PRIVATE","MS_RDONLY","MS_REC","MS_RELATIME","MS_REMOUNT","MS_RMT_MASK","MS_SHARED","MS_SILENT","MS_SLAVE","MS_STRICTATIME","MS_SYNC","MS_SYNCHRONOUS","MS_UNBINDABLE","M_ARENA_MAX","M_ARENA_TEST","M_CHECK_ACTION","M_GRAIN","M_KEEP","M_MMAP_MAX","M_MMAP_THRESHOLD","M_MXFAST","M_NLBLKS","M_PERTURB","M_TOP_PAD","M_TRIM_THRESHOLD","NCCS","NCP_SUPER_MAGIC","NDA_CACHEINFO","NDA_DST","NDA_IFINDEX","NDA_LINK_NETNSID","NDA_LLADDR","NDA_MASTER","NDA_PORT","NDA_PROBES","NDA_SRC_VNI","NDA_UNSPEC","NDA_VLAN","NDA_VNI","NETLINK_ADD_MEMBERSHIP","NETLINK_AUDIT","NETLINK_BROADCAST_ERROR","NETLINK_CAP_ACK","NETLINK_CONNECTOR","NETLINK_CRYPTO","NETLINK_DNRTMSG","NETLINK_DROP_MEMBERSHIP","NETLINK_ECRYPTFS","NETLINK_EXT_ACK","NETLINK_FIB_LOOKUP","NETLINK_FIREWALL","NETLINK_GENERIC","NETLINK_GET_STRICT_CHK","NETLINK_INET_DIAG","NETLINK_IP6_FW","NETLINK_ISCSI","NETLINK_KOBJECT_UEVENT","NETLINK_LISTEN_ALL_NSID","NETLINK_LIST_MEMBERSHIPS","NETLINK_NETFILTER","NETLINK_NFLOG","NETLINK_NO_ENOBUFS","NETLINK_PKTINFO","NETLINK_RDMA","NETLINK_ROUTE","NETLINK_RX_RING","NETLINK_SCSITRANSPORT","NETLINK_SELINUX","NETLINK_SOCK_DIAG","NETLINK_TX_RING","NETLINK_UNUSED","NETLINK_USERSOCK","NETLINK_XFRM","NET_802","NET_ATALK","NET_AX25","NET_BRIDGE","NET_CORE","NET_DCCP","NET_DECNET","NET_ECONET","NET_ETHER","NET_IPV4","NET_IPV6","NET_IPX","NET_IRDA","NET_LLC","NET_NETFILTER","NET_NETROM","NET_ROSE","NET_SCTP","NET_TR","NET_UNIX","NET_X25","NEW_TIME","NFNETLINK_V0","NFNLGRP_ACCT_QUOTA","NFNLGRP_CONNTRACK_DESTROY","NFNLGRP_CONNTRACK_EXP_DESTROY","NFNLGRP_CONNTRACK_EXP_NEW","NFNLGRP_CONNTRACK_EXP_UPDATE","NFNLGRP_CONNTRACK_NEW","NFNLGRP_CONNTRACK_UPDATE","NFNLGRP_NFTABLES","NFNLGRP_NFTRACE","NFNLGRP_NONE","NFNL_BATCH_GENID","NFNL_BATCH_UNSPEC","NFNL_MSG_BATCH_BEGIN","NFNL_MSG_BATCH_END","NFNL_SUBSYS_ACCT","NFNL_SUBSYS_COUNT","NFNL_SUBSYS_CTHELPER","NFNL_SUBSYS_CTNETLINK","NFNL_SUBSYS_CTNETLINK_EXP","NFNL_SUBSYS_CTNETLINK_TIMEOUT","NFNL_SUBSYS_HOOK","NFNL_SUBSYS_IPSET","NFNL_SUBSYS_NFTABLES","NFNL_SUBSYS_NFT_COMPAT","NFNL_SUBSYS_NONE","NFNL_SUBSYS_OSF","NFNL_SUBSYS_QUEUE","NFNL_SUBSYS_ULOG","NFPROTO_ARP","NFPROTO_BRIDGE","NFPROTO_DECNET","NFPROTO_INET","NFPROTO_IPV4","NFPROTO_IPV6","NFPROTO_NETDEV","NFPROTO_NUMPROTO","NFPROTO_UNSPEC","NFQA_CAP_LEN","NFQA_CFG_CMD","NFQA_CFG_FLAGS","NFQA_CFG_F_CONNTRACK","NFQA_CFG_F_FAIL_OPEN","NFQA_CFG_F_GSO","NFQA_CFG_F_MAX","NFQA_CFG_F_SECCTX","NFQA_CFG_F_UID_GID","NFQA_CFG_MASK","NFQA_CFG_PARAMS","NFQA_CFG_QUEUE_MAXLEN","NFQA_CFG_UNSPEC","NFQA_CT","NFQA_CT_INFO","NFQA_EXP","NFQA_GID","NFQA_HWADDR","NFQA_IFINDEX_INDEV","NFQA_IFINDEX_OUTDEV","NFQA_IFINDEX_PHYSINDEV","NFQA_IFINDEX_PHYSOUTDEV","NFQA_L2HDR","NFQA_MARK","NFQA_PACKET_HDR","NFQA_PAYLOAD","NFQA_PRIORITY","NFQA_SECCTX","NFQA_SKB_CSUMNOTREADY","NFQA_SKB_CSUM_NOTVERIFIED","NFQA_SKB_GSO","NFQA_SKB_INFO","NFQA_TIMESTAMP","NFQA_UID","NFQA_UNSPEC","NFQA_VERDICT_HDR","NFQA_VLAN","NFQA_VLAN_PROTO","NFQA_VLAN_TCI","NFQA_VLAN_UNSPEC","NFQNL_CFG_CMD_BIND","NFQNL_CFG_CMD_NONE","NFQNL_CFG_CMD_PF_BIND","NFQNL_CFG_CMD_PF_UNBIND","NFQNL_CFG_CMD_UNBIND","NFQNL_COPY_META","NFQNL_COPY_NONE","NFQNL_COPY_PACKET","NFQNL_MSG_CONFIG","NFQNL_MSG_PACKET","NFQNL_MSG_VERDICT","NFQNL_MSG_VERDICT_BATCH","NFS_SUPER_MAGIC","NFT_BREAK","NFT_BYTEORDER_HTON","NFT_BYTEORDER_NTOH","NFT_CHAIN_MAXNAMELEN","NFT_CMP_EQ","NFT_CMP_GT","NFT_CMP_GTE","NFT_CMP_LT","NFT_CMP_LTE","NFT_CMP_NEQ","NFT_CONTINUE","NFT_CT_BYTES","NFT_CT_DIRECTION","NFT_CT_DST","NFT_CT_EXPIRATION","NFT_CT_HELPER","NFT_CT_L3PROTOCOL","NFT_CT_LABELS","NFT_CT_MARK","NFT_CT_PKTS","NFT_CT_PROTOCOL","NFT_CT_PROTO_DST","NFT_CT_PROTO_SRC","NFT_CT_SECMARK","NFT_CT_SRC","NFT_CT_STATE","NFT_CT_STATUS","NFT_DATA_RESERVED_MASK","NFT_DATA_VALUE","NFT_DATA_VALUE_MAXLEN","NFT_DATA_VERDICT","NFT_DYNSET_F_INV","NFT_DYNSET_OP_ADD","NFT_DYNSET_OP_UPDATE","NFT_GOTO","NFT_JUMP","NFT_LIMIT_F_INV","NFT_LIMIT_PKTS","NFT_LIMIT_PKT_BYTES","NFT_LOOKUP_F_INV","NFT_META_BRI_IIFNAME","NFT_META_BRI_OIFNAME","NFT_META_CGROUP","NFT_META_CPU","NFT_META_IIF","NFT_META_IIFGROUP","NFT_META_IIFNAME","NFT_META_IIFTYPE","NFT_META_L4PROTO","NFT_META_LEN","NFT_META_MARK","NFT_META_NFPROTO","NFT_META_NFTRACE","NFT_META_OIF","NFT_META_OIFGROUP","NFT_META_OIFNAME","NFT_META_OIFTYPE","NFT_META_PKTTYPE","NFT_META_PRANDOM","NFT_META_PRIORITY","NFT_META_PROTOCOL","NFT_META_RTCLASSID","NFT_META_SECMARK","NFT_META_SKGID","NFT_META_SKUID","NFT_MSG_DELCHAIN","NFT_MSG_DELOBJ","NFT_MSG_DELRULE","NFT_MSG_DELSET","NFT_MSG_DELSETELEM","NFT_MSG_DELTABLE","NFT_MSG_GETCHAIN","NFT_MSG_GETGEN","NFT_MSG_GETOBJ","NFT_MSG_GETOBJ_RESET","NFT_MSG_GETRULE","NFT_MSG_GETSET","NFT_MSG_GETSETELEM","NFT_MSG_GETTABLE","NFT_MSG_MAX","NFT_MSG_NEWCHAIN","NFT_MSG_NEWGEN","NFT_MSG_NEWOBJ","NFT_MSG_NEWRULE","NFT_MSG_NEWSET","NFT_MSG_NEWSETELEM","NFT_MSG_NEWTABLE","NFT_MSG_TRACE","NFT_NAT_DNAT","NFT_NAT_SNAT","NFT_NG_INCREMENTAL","NFT_NG_RANDOM","NFT_OBJ_MAXNAMELEN","NFT_PAYLOAD_CSUM_INET","NFT_PAYLOAD_CSUM_NONE","NFT_PAYLOAD_LL_HEADER","NFT_PAYLOAD_NETWORK_HEADER","NFT_PAYLOAD_TRANSPORT_HEADER","NFT_QUEUE_FLAG_BYPASS","NFT_QUEUE_FLAG_CPU_FANOUT","NFT_QUEUE_FLAG_MASK","NFT_QUOTA_F_INV","NFT_RANGE_EQ","NFT_RANGE_NEQ","NFT_REG32_00","NFT_REG32_01","NFT_REG32_02","NFT_REG32_03","NFT_REG32_04","NFT_REG32_05","NFT_REG32_06","NFT_REG32_07","NFT_REG32_08","NFT_REG32_09","NFT_REG32_10","NFT_REG32_11","NFT_REG32_12","NFT_REG32_13","NFT_REG32_14","NFT_REG32_15","NFT_REG32_SIZE","NFT_REG_1","NFT_REG_2","NFT_REG_3","NFT_REG_4","NFT_REG_SIZE","NFT_REG_VERDICT","NFT_REJECT_ICMPX_ADMIN_PROHIBITED","NFT_REJECT_ICMPX_HOST_UNREACH","NFT_REJECT_ICMPX_NO_ROUTE","NFT_REJECT_ICMPX_PORT_UNREACH","NFT_REJECT_ICMPX_UNREACH","NFT_REJECT_ICMP_UNREACH","NFT_REJECT_TCP_RST","NFT_RETURN","NFT_SET_ANONYMOUS","NFT_SET_CONSTANT","NFT_SET_ELEM_INTERVAL_END","NFT_SET_EVAL","NFT_SET_INTERVAL","NFT_SET_MAP","NFT_SET_MAXNAMELEN","NFT_SET_POL_MEMORY","NFT_SET_POL_PERFORMANCE","NFT_SET_TIMEOUT","NFT_TABLE_MAXNAMELEN","NFT_TRACETYPE_POLICY","NFT_TRACETYPE_RETURN","NFT_TRACETYPE_RULE","NFT_TRACETYPE_UNSPEC","NFT_USERDATA_MAXLEN","NFULA_CFG_CMD","NFULA_CFG_FLAGS","NFULA_CFG_MODE","NFULA_CFG_NLBUFSIZ","NFULA_CFG_QTHRESH","NFULA_CFG_TIMEOUT","NFULA_CFG_UNSPEC","NFULA_CT","NFULA_CT_INFO","NFULA_GID","NFULA_HWADDR","NFULA_HWHEADER","NFULA_HWLEN","NFULA_HWTYPE","NFULA_IFINDEX_INDEV","NFULA_IFINDEX_OUTDEV","NFULA_IFINDEX_PHYSINDEV","NFULA_IFINDEX_PHYSOUTDEV","NFULA_L2HDR","NFULA_MARK","NFULA_PACKET_HDR","NFULA_PAYLOAD","NFULA_PREFIX","NFULA_SEQ","NFULA_SEQ_GLOBAL","NFULA_TIMESTAMP","NFULA_UID","NFULA_UNSPEC","NFULA_VLAN","NFULA_VLAN_PROTO","NFULA_VLAN_TCI","NFULA_VLAN_UNSPEC","NFULNL_CFG_CMD_BIND","NFULNL_CFG_CMD_NONE","NFULNL_CFG_CMD_PF_BIND","NFULNL_CFG_CMD_PF_UNBIND","NFULNL_CFG_CMD_UNBIND","NFULNL_CFG_F_CONNTRACK","NFULNL_CFG_F_SEQ","NFULNL_CFG_F_SEQ_GLOBAL","NFULNL_COPY_META","NFULNL_COPY_NONE","NFULNL_COPY_PACKET","NFULNL_MSG_CONFIG","NFULNL_MSG_PACKET","NF_ACCEPT","NF_DROP","NF_INET_FORWARD","NF_INET_LOCAL_IN","NF_INET_LOCAL_OUT","NF_INET_NUMHOOKS","NF_INET_POST_ROUTING","NF_INET_PRE_ROUTING","NF_IP6_FORWARD","NF_IP6_LOCAL_IN","NF_IP6_LOCAL_OUT","NF_IP6_NUMHOOKS","NF_IP6_POST_ROUTING","NF_IP6_PRE_ROUTING","NF_IP6_PRI_CONNTRACK","NF_IP6_PRI_CONNTRACK_DEFRAG","NF_IP6_PRI_CONNTRACK_HELPER","NF_IP6_PRI_FILTER","NF_IP6_PRI_FIRST","NF_IP6_PRI_LAST","NF_IP6_PRI_MANGLE","NF_IP6_PRI_NAT_DST","NF_IP6_PRI_NAT_SRC","NF_IP6_PRI_RAW","NF_IP6_PRI_SECURITY","NF_IP6_PRI_SELINUX_FIRST","NF_IP6_PRI_SELINUX_LAST","NF_IP_FORWARD","NF_IP_LOCAL_IN","NF_IP_LOCAL_OUT","NF_IP_NUMHOOKS","NF_IP_POST_ROUTING","NF_IP_PRE_ROUTING","NF_IP_PRI_CONNTRACK","NF_IP_PRI_CONNTRACK_CONFIRM","NF_IP_PRI_CONNTRACK_DEFRAG","NF_IP_PRI_CONNTRACK_HELPER","NF_IP_PRI_FILTER","NF_IP_PRI_FIRST","NF_IP_PRI_LAST","NF_IP_PRI_MANGLE","NF_IP_PRI_NAT_DST","NF_IP_PRI_NAT_SRC","NF_IP_PRI_RAW","NF_IP_PRI_SECURITY","NF_IP_PRI_SELINUX_FIRST","NF_IP_PRI_SELINUX_LAST","NF_MAX_VERDICT","NF_NETDEV_INGRESS","NF_NETDEV_NUMHOOKS","NF_QUEUE","NF_REPEAT","NF_STOLEN","NF_STOP","NF_VERDICT_BITS","NF_VERDICT_FLAG_QUEUE_BYPASS","NF_VERDICT_MASK","NF_VERDICT_QBITS","NF_VERDICT_QMASK","NILFS_SUPER_MAGIC","NI_DGRAM","NI_IDN","NI_MAXHOST","NI_NAMEREQD","NI_NOFQDN","NI_NUMERICHOST","NI_NUMERICSERV","NL0","NL1","NLA_ALIGN","NLA_ALIGNTO","NLA_F_NESTED","NLA_F_NET_BYTEORDER","NLA_TYPE_MASK","NLDLY","NLMSG_DONE","NLMSG_ERROR","NLMSG_MIN_TYPE","NLMSG_NOOP","NLMSG_OVERRUN","NLM_F_ACK","NLM_F_APPEND","NLM_F_ATOMIC","NLM_F_CREATE","NLM_F_DUMP","NLM_F_DUMP_FILTERED","NLM_F_DUMP_INTR","NLM_F_ECHO","NLM_F_EXCL","NLM_F_MATCH","NLM_F_MULTI","NLM_F_REPLACE","NLM_F_REQUEST","NLM_F_ROOT","NOEXPR","NOFLSH","NOSTR","NSFS_MAGIC","NTF_EXT_LEARNED","NTF_MASTER","NTF_OFFLOADED","NTF_PROXY","NTF_ROUTER","NTF_SELF","NTF_USE","NTP_API","NT_ASRS","NT_AUXV","NT_FPREGSET","NT_GWINDOWS","NT_LWPSINFO","NT_LWPSTATUS","NT_PLATFORM","NT_PRCRED","NT_PRFPREG","NT_PRFPXREG","NT_PRPSINFO","NT_PRSTATUS","NT_PRXREG","NT_PSINFO","NT_PSTATUS","NT_TASKSTRUCT","NT_UTSNAME","NUD_DELAY","NUD_FAILED","NUD_INCOMPLETE","NUD_NOARP","NUD_NONE","NUD_PERMANENT","NUD_PROBE","NUD_REACHABLE","NUD_STALE","OCFS2_SUPER_MAGIC","OCRNL","OFDEL","OFILL","OLCUC","OLD_TIME","ONLCR","ONLRET","ONOCR","OPENPROM_SUPER_MAGIC","OPEN_TREE_CLOEXEC","OPEN_TREE_CLONE","OPOST","ORIG_RAX","OVERLAYFS_SUPER_MAGIC","O_ACCMODE","O_APPEND","O_ASYNC","O_CLOEXEC","O_CREAT","O_DIRECT","O_DIRECTORY","O_DSYNC","O_EXCL","O_FSYNC","O_LARGEFILE","O_NDELAY","O_NOATIME","O_NOCTTY","O_NOFOLLOW","O_NONBLOCK","O_PATH","O_RDONLY","O_RDWR","O_RSYNC","O_SYNC","O_TMPFILE","O_TRUNC","O_WRONLY","PACKET_ADD_MEMBERSHIP","PACKET_DROP_MEMBERSHIP","PACKET_MR_ALLMULTI","PACKET_MR_MULTICAST","PACKET_MR_PROMISC","PACKET_MR_UNICAST","PARENB","PARMRK","PARODD","PATH_MAX","PENDIN","PF_ALG","PF_APPLETALK","PF_ASH","PF_ATMPVC","PF_ATMSVC","PF_AX25","PF_BLUETOOTH","PF_BRIDGE","PF_CAIF","PF_CAN","PF_DECnet","PF_DUMPCORE","PF_ECONET","PF_EXITING","PF_FORKNOEXEC","PF_IB","PF_IDLE","PF_IEEE802154","PF_INET","PF_INET6","PF_IO_WORKER","PF_IPX","PF_IRDA","PF_ISDN","PF_IUCV","PF_KEY","PF_KSWAPD","PF_KTHREAD","PF_LLC","PF_LOCAL","PF_LOCAL_THROTTLE","PF_MASKOS","PF_MASKPROC","PF_MCE_EARLY","PF_MCE_PROCESS","PF_MEMALLOC","PF_MEMALLOC_NOFS","PF_MEMALLOC_NOIO","PF_MEMALLOC_PIN","PF_MPLS","PF_NETBEUI","PF_NETLINK","PF_NETROM","PF_NFC","PF_NOFREEZE","PF_NO_SETAFFINITY","PF_NPROC_EXCEEDED","PF_PACKET","PF_PHONET","PF_POSTCOREDUMP","PF_PPPOX","PF_R","PF_RANDOMIZE","PF_RDS","PF_ROSE","PF_ROUTE","PF_RXRPC","PF_SECURITY","PF_SIGNALED","PF_SNA","PF_SUPERPRIV","PF_TIPC","PF_UNIX","PF_UNSPEC","PF_USED_MATH","PF_USER_WORKER","PF_VCPU","PF_VSOCK","PF_W","PF_WANPIPE","PF_WQ_WORKER","PF_X","PF_X25","PF_XDP","PIDFD_NONBLOCK","PIPE_BUF","PM_STR","POLLERR","POLLHUP","POLLIN","POLLNVAL","POLLOUT","POLLPRI","POLLRDBAND","POLLRDHUP","POLLRDNORM","POLLWRBAND","POLLWRNORM","POSIX_FADV_DONTNEED","POSIX_FADV_NOREUSE","POSIX_FADV_NORMAL","POSIX_FADV_RANDOM","POSIX_FADV_SEQUENTIAL","POSIX_FADV_WILLNEED","POSIX_MADV_DONTNEED","POSIX_MADV_NORMAL","POSIX_MADV_RANDOM","POSIX_MADV_SEQUENTIAL","POSIX_MADV_WILLNEED","POSIX_SPAWN_RESETIDS","POSIX_SPAWN_SETPGROUP","POSIX_SPAWN_SETSCHEDPARAM","POSIX_SPAWN_SETSCHEDULER","POSIX_SPAWN_SETSID","POSIX_SPAWN_SETSIGDEF","POSIX_SPAWN_SETSIGMASK","POSIX_SPAWN_USEVFORK","PRIO_MAX","PRIO_MIN","PRIO_PGRP","PRIO_PROCESS","PRIO_USER","PROC_SUPER_MAGIC","PROT_EXEC","PROT_GROWSDOWN","PROT_GROWSUP","PROT_NONE","PROT_READ","PROT_WRITE","PR_CAPBSET_DROP","PR_CAPBSET_READ","PR_CAP_AMBIENT","PR_CAP_AMBIENT_CLEAR_ALL","PR_CAP_AMBIENT_IS_SET","PR_CAP_AMBIENT_LOWER","PR_CAP_AMBIENT_RAISE","PR_ENDIAN_BIG","PR_ENDIAN_LITTLE","PR_ENDIAN_PPC_LITTLE","PR_FPEMU_NOPRINT","PR_FPEMU_SIGFPE","PR_FP_EXC_ASYNC","PR_FP_EXC_DISABLED","PR_FP_EXC_DIV","PR_FP_EXC_INV","PR_FP_EXC_NONRECOV","PR_FP_EXC_OVF","PR_FP_EXC_PRECISE","PR_FP_EXC_RES","PR_FP_EXC_SW_ENABLE","PR_FP_EXC_UND","PR_FP_MODE_FR","PR_FP_MODE_FRE","PR_GET_CHILD_SUBREAPER","PR_GET_DUMPABLE","PR_GET_ENDIAN","PR_GET_FPEMU","PR_GET_FPEXC","PR_GET_FP_MODE","PR_GET_KEEPCAPS","PR_GET_NAME","PR_GET_NO_NEW_PRIVS","PR_GET_PDEATHSIG","PR_GET_SECCOMP","PR_GET_SECUREBITS","PR_GET_SPECULATION_CTRL","PR_GET_THP_DISABLE","PR_GET_TID_ADDRESS","PR_GET_TIMERSLACK","PR_GET_TIMING","PR_GET_TSC","PR_GET_UNALIGN","PR_MCE_KILL","PR_MCE_KILL_CLEAR","PR_MCE_KILL_DEFAULT","PR_MCE_KILL_EARLY","PR_MCE_KILL_GET","PR_MCE_KILL_LATE","PR_MCE_KILL_SET","PR_MPX_DISABLE_MANAGEMENT","PR_MPX_ENABLE_MANAGEMENT","PR_SCHED_CORE","PR_SCHED_CORE_CREATE","PR_SCHED_CORE_GET","PR_SCHED_CORE_MAX","PR_SCHED_CORE_SCOPE_PROCESS_GROUP","PR_SCHED_CORE_SCOPE_THREAD","PR_SCHED_CORE_SCOPE_THREAD_GROUP","PR_SCHED_CORE_SHARE_FROM","PR_SCHED_CORE_SHARE_TO","PR_SET_CHILD_SUBREAPER","PR_SET_DUMPABLE","PR_SET_ENDIAN","PR_SET_FPEMU","PR_SET_FPEXC","PR_SET_FP_MODE","PR_SET_KEEPCAPS","PR_SET_MM","PR_SET_MM_ARG_END","PR_SET_MM_ARG_START","PR_SET_MM_AUXV","PR_SET_MM_BRK","PR_SET_MM_END_CODE","PR_SET_MM_END_DATA","PR_SET_MM_ENV_END","PR_SET_MM_ENV_START","PR_SET_MM_EXE_FILE","PR_SET_MM_MAP","PR_SET_MM_MAP_SIZE","PR_SET_MM_START_BRK","PR_SET_MM_START_CODE","PR_SET_MM_START_DATA","PR_SET_MM_START_STACK","PR_SET_NAME","PR_SET_NO_NEW_PRIVS","PR_SET_PDEATHSIG","PR_SET_PTRACER","PR_SET_PTRACER_ANY","PR_SET_SECCOMP","PR_SET_SECUREBITS","PR_SET_SPECULATION_CTRL","PR_SET_THP_DISABLE","PR_SET_TIMERSLACK","PR_SET_TIMING","PR_SET_TSC","PR_SET_UNALIGN","PR_SET_VMA","PR_SET_VMA_ANON_NAME","PR_SPEC_DISABLE","PR_SPEC_DISABLE_NOEXEC","PR_SPEC_ENABLE","PR_SPEC_FORCE_DISABLE","PR_SPEC_INDIRECT_BRANCH","PR_SPEC_NOT_AFFECTED","PR_SPEC_PRCTL","PR_SPEC_STORE_BYPASS","PR_TASK_PERF_EVENTS_DISABLE","PR_TASK_PERF_EVENTS_ENABLE","PR_TIMING_STATISTICAL","PR_TIMING_TIMESTAMP","PR_TSC_ENABLE","PR_TSC_SIGSEGV","PR_UNALIGN_NOPRINT","PR_UNALIGN_SIGBUS","PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP","PTHREAD_COND_INITIALIZER","PTHREAD_CREATE_DETACHED","PTHREAD_CREATE_JOINABLE","PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP","PTHREAD_EXPLICIT_SCHED","PTHREAD_INHERIT_SCHED","PTHREAD_MUTEX_ADAPTIVE_NP","PTHREAD_MUTEX_DEFAULT","PTHREAD_MUTEX_ERRORCHECK","PTHREAD_MUTEX_INITIALIZER","PTHREAD_MUTEX_NORMAL","PTHREAD_MUTEX_RECURSIVE","PTHREAD_MUTEX_ROBUST","PTHREAD_MUTEX_STALLED","PTHREAD_ONCE_INIT","PTHREAD_PRIO_INHERIT","PTHREAD_PRIO_NONE","PTHREAD_PRIO_PROTECT","PTHREAD_PROCESS_PRIVATE","PTHREAD_PROCESS_SHARED","PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP","PTHREAD_RWLOCK_INITIALIZER","PTHREAD_STACK_MIN","PTRACE_ATTACH","PTRACE_CONT","PTRACE_DETACH","PTRACE_EVENT_CLONE","PTRACE_EVENT_EXEC","PTRACE_EVENT_EXIT","PTRACE_EVENT_FORK","PTRACE_EVENT_SECCOMP","PTRACE_EVENT_STOP","PTRACE_EVENT_VFORK","PTRACE_EVENT_VFORK_DONE","PTRACE_GETEVENTMSG","PTRACE_GETFPREGS","PTRACE_GETFPXREGS","PTRACE_GETREGS","PTRACE_GETREGSET","PTRACE_GETSIGINFO","PTRACE_GETSIGMASK","PTRACE_GET_RSEQ_CONFIGURATION","PTRACE_GET_SYSCALL_INFO","PTRACE_INTERRUPT","PTRACE_KILL","PTRACE_LISTEN","PTRACE_O_EXITKILL","PTRACE_O_MASK","PTRACE_O_SUSPEND_SECCOMP","PTRACE_O_TRACECLONE","PTRACE_O_TRACEEXEC","PTRACE_O_TRACEEXIT","PTRACE_O_TRACEFORK","PTRACE_O_TRACESECCOMP","PTRACE_O_TRACESYSGOOD","PTRACE_O_TRACEVFORK","PTRACE_O_TRACEVFORKDONE","PTRACE_PEEKDATA","PTRACE_PEEKSIGINFO","PTRACE_PEEKSIGINFO_SHARED","PTRACE_PEEKTEXT","PTRACE_PEEKUSER","PTRACE_POKEDATA","PTRACE_POKETEXT","PTRACE_POKEUSER","PTRACE_SEIZE","PTRACE_SETFPREGS","PTRACE_SETFPXREGS","PTRACE_SETOPTIONS","PTRACE_SETREGS","PTRACE_SETREGSET","PTRACE_SETSIGINFO","PTRACE_SETSIGMASK","PTRACE_SINGLESTEP","PTRACE_SYSCALL","PTRACE_SYSCALL_INFO_ENTRY","PTRACE_SYSCALL_INFO_EXIT","PTRACE_SYSCALL_INFO_NONE","PTRACE_SYSCALL_INFO_SECCOMP","PTRACE_SYSEMU","PTRACE_SYSEMU_SINGLESTEP","PTRACE_TRACEME","PT_DYNAMIC","PT_GNU_EH_FRAME","PT_GNU_RELRO","PT_GNU_STACK","PT_HIOS","PT_HIPROC","PT_HISUNW","PT_INTERP","PT_LOAD","PT_LOOS","PT_LOPROC","PT_LOSUNW","PT_NOTE","PT_NULL","PT_NUM","PT_PHDR","PT_SHLIB","PT_SUNWBSS","PT_SUNWSTACK","PT_TLS","P_ALL","P_PGID","P_PID","P_PIDFD","QCMD","QFMT_VFS_OLD","QFMT_VFS_V0","QFMT_VFS_V1","QIF_ALL","QIF_BLIMITS","QIF_BTIME","QIF_ILIMITS","QIF_INODES","QIF_ITIME","QIF_LIMITS","QIF_SPACE","QIF_TIMES","QIF_USAGE","QNX4_SUPER_MAGIC","QNX6_SUPER_MAGIC","Q_GETFMT","Q_GETINFO","Q_GETQUOTA","Q_QUOTAOFF","Q_QUOTAON","Q_SETINFO","Q_SETQUOTA","Q_SYNC","R10","R11","R12","R13","R14","R15","R8","R9","RADIXCHAR","RAND_MAX","RAX","RBP","RBX","RB_AUTOBOOT","RB_DISABLE_CAD","RB_ENABLE_CAD","RB_HALT_SYSTEM","RB_KEXEC","RB_POWER_OFF","RB_SW_SUSPEND","RCX","RDI","RDTGROUP_SUPER_MAGIC","RDX","READ_IMPLIES_EXEC","REG_BADBR","REG_BADPAT","REG_BADRPT","REG_CR2","REG_CSGSFS","REG_EBRACE","REG_EBRACK","REG_ECOLLATE","REG_ECTYPE","REG_EEND","REG_EESCAPE","REG_EFL","REG_ENOSYS","REG_EPAREN","REG_ERANGE","REG_ERPAREN","REG_ERR","REG_ESIZE","REG_ESPACE","REG_ESUBREG","REG_EXTENDED","REG_ICASE","REG_NEWLINE","REG_NOMATCH","REG_NOSUB","REG_NOTBOL","REG_NOTEOL","REG_OLDMASK","REG_R10","REG_R11","REG_R12","REG_R13","REG_R14","REG_R15","REG_R8","REG_R9","REG_RAX","REG_RBP","REG_RBX","REG_RCX","REG_RDI","REG_RDX","REG_RIP","REG_RSI","REG_RSP","REG_STARTEND","REG_TRAPNO","REISERFS_SUPER_MAGIC","REL_CNT","REL_MAX","RENAME_EXCHANGE","RENAME_NOREPLACE","RENAME_WHITEOUT","REP_CNT","REP_MAX","RESOLVE_BENEATH","RESOLVE_CACHED","RESOLVE_IN_ROOT","RESOLVE_NO_MAGICLINKS","RESOLVE_NO_SYMLINKS","RESOLVE_NO_XDEV","RIP","RLIM64_INFINITY","RLIMIT_AS","RLIMIT_CORE","RLIMIT_CPU","RLIMIT_DATA","RLIMIT_FSIZE","RLIMIT_LOCKS","RLIMIT_MEMLOCK","RLIMIT_MSGQUEUE","RLIMIT_NICE","RLIMIT_NLIMITS","RLIMIT_NOFILE","RLIMIT_NPROC","RLIMIT_RSS","RLIMIT_RTPRIO","RLIMIT_RTTIME","RLIMIT_SIGPENDING","RLIMIT_STACK","RLIM_INFINITY","RLIM_NLIMITS","RLIM_SAVED_CUR","RLIM_SAVED_MAX","RSI","RSP","RTA_CACHEINFO","RTA_DST","RTA_ENCAP","RTA_ENCAP_TYPE","RTA_EXPIRES","RTA_FLOW","RTA_GATEWAY","RTA_IIF","RTA_MARK","RTA_METRICS","RTA_MFC_STATS","RTA_MP_ALGO","RTA_MULTIPATH","RTA_NEWDST","RTA_OIF","RTA_PAD","RTA_PREF","RTA_PREFSRC","RTA_PRIORITY","RTA_PROTOINFO","RTA_SESSION","RTA_SRC","RTA_TABLE","RTA_TTL_PROPAGATE","RTA_UID","RTA_UNSPEC","RTA_VIA","RTCF_DIRECTSRC","RTCF_DOREDIRECT","RTCF_LOG","RTCF_MASQ","RTCF_NAT","RTCF_VALVE","RTEXT_FILTER_BRVLAN","RTEXT_FILTER_BRVLAN_COMPRESSED","RTEXT_FILTER_CFM_CONFIG","RTEXT_FILTER_CFM_STATUS","RTEXT_FILTER_MRP","RTEXT_FILTER_SKIP_STATS","RTEXT_FILTER_VF","RTF_ADDRCLASSMASK","RTF_ADDRCONF","RTF_ALLONLINK","RTF_BROADCAST","RTF_CACHE","RTF_DEFAULT","RTF_DYNAMIC","RTF_FLOW","RTF_GATEWAY","RTF_HOST","RTF_INTERFACE","RTF_IRTT","RTF_LINKRT","RTF_LOCAL","RTF_MODIFIED","RTF_MSS","RTF_MTU","RTF_MULTICAST","RTF_NAT","RTF_NOFORWARD","RTF_NONEXTHOP","RTF_NOPMTUDISC","RTF_POLICY","RTF_REINSTATE","RTF_REJECT","RTF_STATIC","RTF_THROW","RTF_UP","RTF_WINDOW","RTF_XRESOLVE","RTLD_DEEPBIND","RTLD_DEFAULT","RTLD_DI_CONFIGADDR","RTLD_DI_LINKMAP","RTLD_DI_LMID","RTLD_DI_ORIGIN","RTLD_DI_PROFILENAME","RTLD_DI_PROFILEOUT","RTLD_DI_SERINFO","RTLD_DI_SERINFOSIZE","RTLD_DI_TLS_DATA","RTLD_DI_TLS_MODID","RTLD_GLOBAL","RTLD_LAZY","RTLD_LOCAL","RTLD_NEXT","RTLD_NODELETE","RTLD_NOLOAD","RTLD_NOW","RTMGRP_DECnet_IFADDR","RTMGRP_DECnet_ROUTE","RTMGRP_IPV4_IFADDR","RTMGRP_IPV4_MROUTE","RTMGRP_IPV4_ROUTE","RTMGRP_IPV4_RULE","RTMGRP_IPV6_IFADDR","RTMGRP_IPV6_IFINFO","RTMGRP_IPV6_MROUTE","RTMGRP_IPV6_PREFIX","RTMGRP_IPV6_ROUTE","RTMGRP_LINK","RTMGRP_NEIGH","RTMGRP_NOTIFY","RTMGRP_TC","RTMSG_AR_FAILED","RTMSG_CONTROL","RTMSG_DELDEVICE","RTMSG_DELROUTE","RTMSG_DELRULE","RTMSG_NEWDEVICE","RTMSG_NEWROUTE","RTMSG_NEWRULE","RTMSG_OVERRUN","RTM_DELACTION","RTM_DELADDR","RTM_DELADDRLABEL","RTM_DELLINK","RTM_DELMDB","RTM_DELNEIGH","RTM_DELNETCONF","RTM_DELNSID","RTM_DELQDISC","RTM_DELROUTE","RTM_DELRULE","RTM_DELTCLASS","RTM_DELTFILTER","RTM_F_CLONED","RTM_F_EQUALIZE","RTM_F_FIB_MATCH","RTM_F_LOOKUP_TABLE","RTM_F_NOTIFY","RTM_F_PREFIX","RTM_GETACTION","RTM_GETADDR","RTM_GETADDRLABEL","RTM_GETANYCAST","RTM_GETDCB","RTM_GETLINK","RTM_GETMDB","RTM_GETMULTICAST","RTM_GETNEIGH","RTM_GETNEIGHTBL","RTM_GETNETCONF","RTM_GETNSID","RTM_GETQDISC","RTM_GETROUTE","RTM_GETRULE","RTM_GETSTATS","RTM_GETTCLASS","RTM_GETTFILTER","RTM_NEWACTION","RTM_NEWADDR","RTM_NEWADDRLABEL","RTM_NEWCACHEREPORT","RTM_NEWLINK","RTM_NEWMDB","RTM_NEWNDUSEROPT","RTM_NEWNEIGH","RTM_NEWNEIGHTBL","RTM_NEWNETCONF","RTM_NEWNSID","RTM_NEWPREFIX","RTM_NEWQDISC","RTM_NEWROUTE","RTM_NEWRULE","RTM_NEWSTATS","RTM_NEWTCLASS","RTM_NEWTFILTER","RTM_SETDCB","RTM_SETLINK","RTM_SETNEIGHTBL","RTNLGRP_BRVLAN","RTNLGRP_DCB","RTNLGRP_DECnet_IFADDR","RTNLGRP_DECnet_ROUTE","RTNLGRP_DECnet_RULE","RTNLGRP_IPV4_IFADDR","RTNLGRP_IPV4_MROUTE","RTNLGRP_IPV4_MROUTE_R","RTNLGRP_IPV4_NETCONF","RTNLGRP_IPV4_ROUTE","RTNLGRP_IPV4_RULE","RTNLGRP_IPV6_IFADDR","RTNLGRP_IPV6_IFINFO","RTNLGRP_IPV6_MROUTE","RTNLGRP_IPV6_MROUTE_R","RTNLGRP_IPV6_NETCONF","RTNLGRP_IPV6_PREFIX","RTNLGRP_IPV6_ROUTE","RTNLGRP_IPV6_RULE","RTNLGRP_LINK","RTNLGRP_MCTP_IFADDR","RTNLGRP_MDB","RTNLGRP_MPLS_NETCONF","RTNLGRP_MPLS_ROUTE","RTNLGRP_ND_USEROPT","RTNLGRP_NEIGH","RTNLGRP_NEXTHOP","RTNLGRP_NONE","RTNLGRP_NOP2","RTNLGRP_NOP4","RTNLGRP_NOTIFY","RTNLGRP_NSID","RTNLGRP_PHONET_IFADDR","RTNLGRP_PHONET_ROUTE","RTNLGRP_STATS","RTNLGRP_TC","RTNLGRP_TUNNEL","RTN_ANYCAST","RTN_BLACKHOLE","RTN_BROADCAST","RTN_LOCAL","RTN_MULTICAST","RTN_NAT","RTN_PROHIBIT","RTN_THROW","RTN_UNICAST","RTN_UNREACHABLE","RTN_UNSPEC","RTN_XRESOLVE","RTPROT_BOOT","RTPROT_KERNEL","RTPROT_REDIRECT","RTPROT_STATIC","RTPROT_UNSPEC","RT_ADDRCLASS","RT_CLASS_DEFAULT","RT_CLASS_LOCAL","RT_CLASS_MAIN","RT_CLASS_MAX","RT_CLASS_UNSPEC","RT_LOCALADDR","RT_SCOPE_HOST","RT_SCOPE_LINK","RT_SCOPE_NOWHERE","RT_SCOPE_SITE","RT_SCOPE_UNIVERSE","RT_TABLE_COMPAT","RT_TABLE_DEFAULT","RT_TABLE_LOCAL","RT_TABLE_MAIN","RT_TABLE_UNSPEC","RT_TOS","RUN_LVL","RUSAGE_CHILDREN","RUSAGE_SELF","RUSAGE_THREAD","RWF_APPEND","RWF_DSYNC","RWF_HIPRI","RWF_NOWAIT","RWF_SYNC","R_OK","SA_NOCLDSTOP","SA_NOCLDWAIT","SA_NODEFER","SA_ONSTACK","SA_RESETHAND","SA_RESTART","SA_SIGINFO","SCHED_BATCH","SCHED_DEADLINE","SCHED_FIFO","SCHED_FLAG_ALL","SCHED_FLAG_DL_OVERRUN","SCHED_FLAG_KEEP_ALL","SCHED_FLAG_KEEP_PARAMS","SCHED_FLAG_KEEP_POLICY","SCHED_FLAG_RECLAIM","SCHED_FLAG_RESET_ON_FORK","SCHED_FLAG_UTIL_CLAMP","SCHED_FLAG_UTIL_CLAMP_MAX","SCHED_FLAG_UTIL_CLAMP_MIN","SCHED_IDLE","SCHED_NORMAL","SCHED_OTHER","SCHED_RESET_ON_FORK","SCHED_RR","SCM_CREDENTIALS","SCM_J1939_DEST_ADDR","SCM_J1939_DEST_NAME","SCM_J1939_ERRQUEUE","SCM_J1939_PRIO","SCM_RIGHTS","SCM_TIMESTAMP","SCM_TIMESTAMPING","SCM_TIMESTAMPING_OPT_STATS","SCM_TIMESTAMPING_PKTINFO","SCM_TIMESTAMPNS","SCM_TXTIME","SCM_WIFI_STATUS","SCTP_ABORT","SCTP_ADAPTATION_LAYER","SCTP_ADDR_OVER","SCTP_ALL_ASSOC","SCTP_ASSOCINFO","SCTP_AUTHINFO","SCTP_AUTH_ACTIVE_KEY","SCTP_AUTH_CHUNK","SCTP_AUTH_DEACTIVATE_KEY","SCTP_AUTH_DELETE_KEY","SCTP_AUTH_KEY","SCTP_AUTOCLOSE","SCTP_AUTO_ASCONF","SCTP_CONTEXT","SCTP_CURRENT_ASSOC","SCTP_DEFAULT_SEND_PARAM","SCTP_DEFAULT_SNDINFO","SCTP_DELAYED_ACK","SCTP_DELAYED_ACK_TIME","SCTP_DELAYED_SACK","SCTP_DISABLE_FRAGMENTS","SCTP_DSTADDRV4","SCTP_DSTADDRV6","SCTP_ENABLE_CHANGE_ASSOC_REQ","SCTP_ENABLE_RESET_ASSOC_REQ","SCTP_ENABLE_RESET_STREAM_REQ","SCTP_ENABLE_STRRESET_MASK","SCTP_EOF","SCTP_EVENTS","SCTP_FRAGMENT_INTERLEAVE","SCTP_FUTURE_ASSOC","SCTP_GET_ASSOC_ID_LIST","SCTP_GET_ASSOC_NUMBER","SCTP_GET_PEER_ADDR_INFO","SCTP_HMAC_IDENT","SCTP_INIT","SCTP_INITMSG","SCTP_I_WANT_MAPPED_V4_ADDR","SCTP_LOCAL_AUTH_CHUNKS","SCTP_MAXSEG","SCTP_MAX_BURST","SCTP_NODELAY","SCTP_NOTIFICATION","SCTP_NXTINFO","SCTP_PARTIAL_DELIVERY_POINT","SCTP_PEER_ADDR_PARAMS","SCTP_PEER_ADDR_THLDS","SCTP_PEER_ADDR_THLDS_V2","SCTP_PEER_AUTH_CHUNKS","SCTP_PRIMARY_ADDR","SCTP_PRINFO","SCTP_PR_INDEX","SCTP_PR_POLICY","SCTP_PR_PRIO_ENABLED","SCTP_PR_RTX_ENABLED","SCTP_PR_SCTP_ALL","SCTP_PR_SCTP_MASK","SCTP_PR_SCTP_MAX","SCTP_PR_SCTP_NONE","SCTP_PR_SCTP_PRIO","SCTP_PR_SCTP_RTX","SCTP_PR_SCTP_TTL","SCTP_PR_SET_POLICY","SCTP_PR_TTL_ENABLED","SCTP_RCVINFO","SCTP_RECVNXTINFO","SCTP_RECVRCVINFO","SCTP_REUSE_PORT","SCTP_RTOINFO","SCTP_SACK_IMMEDIATELY","SCTP_SENDALL","SCTP_SET_PEER_PRIMARY_ADDR","SCTP_SNDINFO","SCTP_SNDRCV","SCTP_STATUS","SCTP_STREAM_RESET_INCOMING","SCTP_STREAM_RESET_OUTGOING","SCTP_UNORDERED","SECCOMP_ADDFD_FLAG_SEND","SECCOMP_ADDFD_FLAG_SETFD","SECCOMP_FILTER_FLAG_LOG","SECCOMP_FILTER_FLAG_NEW_LISTENER","SECCOMP_FILTER_FLAG_SPEC_ALLOW","SECCOMP_FILTER_FLAG_TSYNC","SECCOMP_FILTER_FLAG_TSYNC_ESRCH","SECCOMP_FILTER_FLAG_WAIT_KILLABLE_RECV","SECCOMP_GET_ACTION_AVAIL","SECCOMP_GET_NOTIF_SIZES","SECCOMP_MODE_DISABLED","SECCOMP_MODE_FILTER","SECCOMP_MODE_STRICT","SECCOMP_RET_ACTION","SECCOMP_RET_ACTION_FULL","SECCOMP_RET_ALLOW","SECCOMP_RET_DATA","SECCOMP_RET_ERRNO","SECCOMP_RET_KILL","SECCOMP_RET_KILL_PROCESS","SECCOMP_RET_KILL_THREAD","SECCOMP_RET_LOG","SECCOMP_RET_TRACE","SECCOMP_RET_TRAP","SECCOMP_SET_MODE_FILTER","SECCOMP_SET_MODE_STRICT","SECCOMP_USER_NOTIF_FLAG_CONTINUE","SECURITYFS_MAGIC","SEEK_CUR","SEEK_DATA","SEEK_END","SEEK_HOLE","SEEK_SET","SELFMAG","SELINUX_MAGIC","SEM_FAILED","SFD_CLOEXEC","SFD_NONBLOCK","SHM_EXEC","SHM_HUGETLB","SHM_LOCK","SHM_NORESERVE","SHM_R","SHM_RDONLY","SHM_REMAP","SHM_RND","SHM_UNLOCK","SHM_W","SHORT_INODE","SHUT_RD","SHUT_RDWR","SHUT_WR","SIGABRT","SIGALRM","SIGBUS","SIGCHLD","SIGCONT","SIGEV_NONE","SIGEV_SIGNAL","SIGEV_THREAD","SIGEV_THREAD_ID","SIGFPE","SIGHUP","SIGILL","SIGINT","SIGIO","SIGIOT","SIGKILL","SIGPIPE","SIGPOLL","SIGPROF","SIGPWR","SIGQUIT","SIGRTMAX","SIGRTMIN","SIGSEGV","SIGSTKFLT","SIGSTKSZ","SIGSTOP","SIGSYS","SIGTERM","SIGTRAP","SIGTSTP","SIGTTIN","SIGTTOU","SIGUNUSED","SIGURG","SIGUSR1","SIGUSR2","SIGVTALRM","SIGWINCH","SIGXCPU","SIGXFSZ","SIG_BLOCK","SIG_DFL","SIG_ERR","SIG_IGN","SIG_SETMASK","SIG_UNBLOCK","SIOCADDMULTI","SIOCADDRT","SIOCDARP","SIOCDELMULTI","SIOCDELRT","SIOCDIFADDR","SIOCDRARP","SIOCETHTOOL","SIOCGARP","SIOCGHWTSTAMP","SIOCGIFADDR","SIOCGIFBR","SIOCGIFBRDADDR","SIOCGIFCONF","SIOCGIFCOUNT","SIOCGIFDSTADDR","SIOCGIFENCAP","SIOCGIFFLAGS","SIOCGIFHWADDR","SIOCGIFINDEX","SIOCGIFMAP","SIOCGIFMEM","SIOCGIFMETRIC","SIOCGIFMTU","SIOCGIFNAME","SIOCGIFNETMASK","SIOCGIFPFLAGS","SIOCGIFSLAVE","SIOCGIFTXQLEN","SIOCGIWAP","SIOCGIWAPLIST","SIOCGIWAUTH","SIOCGIWENCODE","SIOCGIWENCODEEXT","SIOCGIWESSID","SIOCGIWFRAG","SIOCGIWFREQ","SIOCGIWGENIE","SIOCGIWMODE","SIOCGIWNAME","SIOCGIWNICKN","SIOCGIWNWID","SIOCGIWPOWER","SIOCGIWPRIV","SIOCGIWRANGE","SIOCGIWRATE","SIOCGIWRETRY","SIOCGIWRTS","SIOCGIWSCAN","SIOCGIWSENS","SIOCGIWSPY","SIOCGIWSTATS","SIOCGIWTHRSPY","SIOCGIWTXPOW","SIOCGMIIPHY","SIOCGMIIREG","SIOCGRARP","SIOCGSKNS","SIOCIWFIRST","SIOCIWFIRSTPRIV","SIOCIWLAST","SIOCIWLASTPRIV","SIOCOUTQNSD","SIOCSARP","SIOCSHWTSTAMP","SIOCSIFADDR","SIOCSIFBR","SIOCSIFBRDADDR","SIOCSIFDSTADDR","SIOCSIFENCAP","SIOCSIFFLAGS","SIOCSIFHWADDR","SIOCSIFHWBROADCAST","SIOCSIFLINK","SIOCSIFMAP","SIOCSIFMEM","SIOCSIFMETRIC","SIOCSIFMTU","SIOCSIFNAME","SIOCSIFNETMASK","SIOCSIFPFLAGS","SIOCSIFSLAVE","SIOCSIFTXQLEN","SIOCSIWAP","SIOCSIWAUTH","SIOCSIWCOMMIT","SIOCSIWENCODE","SIOCSIWENCODEEXT","SIOCSIWESSID","SIOCSIWFRAG","SIOCSIWFREQ","SIOCSIWGENIE","SIOCSIWMLME","SIOCSIWMODE","SIOCSIWNICKN","SIOCSIWNWID","SIOCSIWPMKSA","SIOCSIWPOWER","SIOCSIWPRIV","SIOCSIWRANGE","SIOCSIWRATE","SIOCSIWRETRY","SIOCSIWRTS","SIOCSIWSCAN","SIOCSIWSENS","SIOCSIWSPY","SIOCSIWSTATS","SIOCSIWTHRSPY","SIOCSIWTXPOW","SIOCSMIIREG","SIOCSRARP","SIOCWANDEV","SIOGIFINDEX","SI_LOAD_SHIFT","SKF_AD_ALU_XOR_X","SKF_AD_CPU","SKF_AD_HATYPE","SKF_AD_IFINDEX","SKF_AD_MARK","SKF_AD_MAX","SKF_AD_NLATTR","SKF_AD_NLATTR_NEST","SKF_AD_OFF","SKF_AD_PAY_OFFSET","SKF_AD_PKTTYPE","SKF_AD_PROTOCOL","SKF_AD_QUEUE","SKF_AD_RANDOM","SKF_AD_RXHASH","SKF_AD_VLAN_TAG","SKF_AD_VLAN_TAG_PRESENT","SKF_AD_VLAN_TPID","SKF_LL_OFF","SKF_NET_OFF","SK_MEMINFO_BACKLOG","SK_MEMINFO_DROPS","SK_MEMINFO_FWD_ALLOC","SK_MEMINFO_OPTMEM","SK_MEMINFO_RCVBUF","SK_MEMINFO_RMEM_ALLOC","SK_MEMINFO_SNDBUF","SK_MEMINFO_WMEM_ALLOC","SK_MEMINFO_WMEM_QUEUED","SMACK_MAGIC","SMB_SUPER_MAGIC","SND_CNT","SND_MAX","SOCK_CLOEXEC","SOCK_DCCP","SOCK_DGRAM","SOCK_NONBLOCK","SOCK_PACKET","SOCK_RAW","SOCK_RDM","SOCK_SEQPACKET","SOCK_STREAM","SOF_TIMESTAMPING_OPT_CMSG","SOF_TIMESTAMPING_OPT_ID","SOF_TIMESTAMPING_OPT_PKTINFO","SOF_TIMESTAMPING_OPT_STATS","SOF_TIMESTAMPING_OPT_TSONLY","SOF_TIMESTAMPING_OPT_TX_SWHW","SOF_TIMESTAMPING_RAW_HARDWARE","SOF_TIMESTAMPING_RX_HARDWARE","SOF_TIMESTAMPING_RX_SOFTWARE","SOF_TIMESTAMPING_SOFTWARE","SOF_TIMESTAMPING_SYS_HARDWARE","SOF_TIMESTAMPING_TX_ACK","SOF_TIMESTAMPING_TX_HARDWARE","SOF_TIMESTAMPING_TX_SCHED","SOF_TIMESTAMPING_TX_SOFTWARE","SOF_TXTIME_DEADLINE_MODE","SOF_TXTIME_REPORT_ERRORS","SOL_AAL","SOL_ALG","SOL_ATM","SOL_BLUETOOTH","SOL_CAIF","SOL_CAN_BASE","SOL_CAN_J1939","SOL_CAN_RAW","SOL_DCCP","SOL_DECNET","SOL_ICMPV6","SOL_IP","SOL_IPV6","SOL_IRDA","SOL_IUCV","SOL_LLC","SOL_NETBEUI","SOL_NETLINK","SOL_NFC","SOL_PACKET","SOL_PNPIPE","SOL_PPPOL2TP","SOL_RAW","SOL_RDS","SOL_RXRPC","SOL_SOCKET","SOL_TCP","SOL_TIPC","SOL_TLS","SOL_UDP","SOL_X25","SOL_XDP","SOMAXCONN","SO_ACCEPTCONN","SO_ATTACH_BPF","SO_ATTACH_FILTER","SO_ATTACH_REUSEPORT_CBPF","SO_ATTACH_REUSEPORT_EBPF","SO_BINDTODEVICE","SO_BINDTOIFINDEX","SO_BPF_EXTENSIONS","SO_BROADCAST","SO_BSDCOMPAT","SO_BUSY_POLL","SO_CNX_ADVICE","SO_COOKIE","SO_DEBUG","SO_DETACH_BPF","SO_DETACH_FILTER","SO_DETACH_REUSEPORT_BPF","SO_DOMAIN","SO_DONTROUTE","SO_EE_OFFENDER","SO_EE_ORIGIN_ICMP","SO_EE_ORIGIN_ICMP6","SO_EE_ORIGIN_LOCAL","SO_EE_ORIGIN_NONE","SO_EE_ORIGIN_TIMESTAMPING","SO_EE_ORIGIN_TXSTATUS","SO_ERROR","SO_GET_FILTER","SO_INCOMING_CPU","SO_INCOMING_NAPI_ID","SO_J1939_ERRQUEUE","SO_J1939_FILTER","SO_J1939_PROMISC","SO_J1939_SEND_PRIO","SO_KEEPALIVE","SO_LINGER","SO_LOCK_FILTER","SO_MARK","SO_MAX_PACING_RATE","SO_MEMINFO","SO_NOFCS","SO_NO_CHECK","SO_OOBINLINE","SO_ORIGINAL_DST","SO_PASSCRED","SO_PASSSEC","SO_PEEK_OFF","SO_PEERCRED","SO_PEERGROUPS","SO_PEERNAME","SO_PEERSEC","SO_PRIORITY","SO_PROTOCOL","SO_RCVBUF","SO_RCVBUFFORCE","SO_RCVLOWAT","SO_RCVTIMEO","SO_RCVTIMEO_NEW","SO_REUSEADDR","SO_REUSEPORT","SO_RXQ_OVFL","SO_SECURITY_AUTHENTICATION","SO_SECURITY_ENCRYPTION_NETWORK","SO_SECURITY_ENCRYPTION_TRANSPORT","SO_SELECT_ERR_QUEUE","SO_SNDBUF","SO_SNDBUFFORCE","SO_SNDLOWAT","SO_SNDTIMEO","SO_SNDTIMEO_NEW","SO_TIMESTAMP","SO_TIMESTAMPING","SO_TIMESTAMPING_NEW","SO_TIMESTAMPNS","SO_TIMESTAMPNS_NEW","SO_TIMESTAMP_NEW","SO_TXTIME","SO_TYPE","SO_WIFI_STATUS","SO_ZEROCOPY","SPLICE_F_GIFT","SPLICE_F_MORE","SPLICE_F_MOVE","SPLICE_F_NONBLOCK","SS","SS_DISABLE","SS_ONSTACK","STATX_ALL","STATX_ATIME","STATX_ATTR_APPEND","STATX_ATTR_AUTOMOUNT","STATX_ATTR_COMPRESSED","STATX_ATTR_DAX","STATX_ATTR_ENCRYPTED","STATX_ATTR_IMMUTABLE","STATX_ATTR_MOUNT_ROOT","STATX_ATTR_NODUMP","STATX_ATTR_VERITY","STATX_BASIC_STATS","STATX_BLOCKS","STATX_BTIME","STATX_CTIME","STATX_DIOALIGN","STATX_GID","STATX_INO","STATX_MNT_ID","STATX_MODE","STATX_MTIME","STATX_NLINK","STATX_SIZE","STATX_TYPE","STATX_UID","STATX__RESERVED","STA_CLK","STA_CLOCKERR","STA_DEL","STA_FLL","STA_FREQHOLD","STA_INS","STA_MODE","STA_NANO","STA_PLL","STA_PPSERROR","STA_PPSFREQ","STA_PPSJITTER","STA_PPSSIGNAL","STA_PPSTIME","STA_PPSWANDER","STA_RONLY","STA_UNSYNC","STDERR_FILENO","STDIN_FILENO","STDOUT_FILENO","STICKY_TIMEOUTS","ST_APPEND","ST_IMMUTABLE","ST_MANDLOCK","ST_NOATIME","ST_NODEV","ST_NODIRATIME","ST_NOEXEC","ST_NOSUID","ST_RDONLY","ST_RELATIME","ST_SYNCHRONOUS","ST_WRITE","SW_CNT","SW_MAX","SYNC_FILE_RANGE_WAIT_AFTER","SYNC_FILE_RANGE_WAIT_BEFORE","SYNC_FILE_RANGE_WRITE","SYN_CNT","SYN_MAX","SYSFS_MAGIC","SYS__sysctl","SYS_accept","SYS_accept4","SYS_access","SYS_acct","SYS_add_key","SYS_adjtimex","SYS_afs_syscall","SYS_alarm","SYS_arch_prctl","SYS_bind","SYS_bpf","SYS_brk","SYS_capget","SYS_capset","SYS_chdir","SYS_chmod","SYS_chown","SYS_chroot","SYS_clock_adjtime","SYS_clock_getres","SYS_clock_gettime","SYS_clock_nanosleep","SYS_clock_settime","SYS_clone","SYS_clone3","SYS_close","SYS_close_range","SYS_connect","SYS_copy_file_range","SYS_creat","SYS_create_module","SYS_delete_module","SYS_dup","SYS_dup2","SYS_dup3","SYS_epoll_create","SYS_epoll_create1","SYS_epoll_ctl","SYS_epoll_ctl_old","SYS_epoll_pwait","SYS_epoll_pwait2","SYS_epoll_wait","SYS_epoll_wait_old","SYS_eventfd","SYS_eventfd2","SYS_execve","SYS_execveat","SYS_exit","SYS_exit_group","SYS_faccessat","SYS_faccessat2","SYS_fadvise64","SYS_fallocate","SYS_fanotify_init","SYS_fanotify_mark","SYS_fchdir","SYS_fchmod","SYS_fchmodat","SYS_fchown","SYS_fchownat","SYS_fcntl","SYS_fdatasync","SYS_fgetxattr","SYS_finit_module","SYS_flistxattr","SYS_flock","SYS_fork","SYS_fremovexattr","SYS_fsconfig","SYS_fsetxattr","SYS_fsmount","SYS_fsopen","SYS_fspick","SYS_fstat","SYS_fstatfs","SYS_fsync","SYS_ftruncate","SYS_futex","SYS_futex_waitv","SYS_futimesat","SYS_get_kernel_syms","SYS_get_mempolicy","SYS_get_robust_list","SYS_get_thread_area","SYS_getcpu","SYS_getcwd","SYS_getdents","SYS_getdents64","SYS_getegid","SYS_geteuid","SYS_getgid","SYS_getgroups","SYS_getitimer","SYS_getpeername","SYS_getpgid","SYS_getpgrp","SYS_getpid","SYS_getpmsg","SYS_getppid","SYS_getpriority","SYS_getrandom","SYS_getresgid","SYS_getresuid","SYS_getrlimit","SYS_getrusage","SYS_getsid","SYS_getsockname","SYS_getsockopt","SYS_gettid","SYS_gettimeofday","SYS_getuid","SYS_getxattr","SYS_init_module","SYS_inotify_add_watch","SYS_inotify_init","SYS_inotify_init1","SYS_inotify_rm_watch","SYS_io_cancel","SYS_io_destroy","SYS_io_getevents","SYS_io_setup","SYS_io_submit","SYS_io_uring_enter","SYS_io_uring_register","SYS_io_uring_setup","SYS_ioctl","SYS_ioperm","SYS_iopl","SYS_ioprio_get","SYS_ioprio_set","SYS_kcmp","SYS_kexec_file_load","SYS_kexec_load","SYS_keyctl","SYS_kill","SYS_landlock_add_rule","SYS_landlock_create_ruleset","SYS_landlock_restrict_self","SYS_lchown","SYS_lgetxattr","SYS_link","SYS_linkat","SYS_listen","SYS_listxattr","SYS_llistxattr","SYS_lookup_dcookie","SYS_lremovexattr","SYS_lseek","SYS_lsetxattr","SYS_lstat","SYS_madvise","SYS_mbind","SYS_membarrier","SYS_memfd_create","SYS_memfd_secret","SYS_migrate_pages","SYS_mincore","SYS_mkdir","SYS_mkdirat","SYS_mknod","SYS_mknodat","SYS_mlock","SYS_mlock2","SYS_mlockall","SYS_mmap","SYS_modify_ldt","SYS_mount","SYS_mount_setattr","SYS_move_mount","SYS_move_pages","SYS_mprotect","SYS_mq_getsetattr","SYS_mq_notify","SYS_mq_open","SYS_mq_timedreceive","SYS_mq_timedsend","SYS_mq_unlink","SYS_mremap","SYS_msgctl","SYS_msgget","SYS_msgrcv","SYS_msgsnd","SYS_msync","SYS_munlock","SYS_munlockall","SYS_munmap","SYS_name_to_handle_at","SYS_nanosleep","SYS_newfstatat","SYS_nfsservctl","SYS_open","SYS_open_by_handle_at","SYS_open_tree","SYS_openat","SYS_openat2","SYS_pause","SYS_perf_event_open","SYS_personality","SYS_pidfd_getfd","SYS_pidfd_open","SYS_pidfd_send_signal","SYS_pipe","SYS_pipe2","SYS_pivot_root","SYS_pkey_alloc","SYS_pkey_free","SYS_pkey_mprotect","SYS_poll","SYS_ppoll","SYS_prctl","SYS_pread64","SYS_preadv","SYS_preadv2","SYS_prlimit64","SYS_process_madvise","SYS_process_mrelease","SYS_process_vm_readv","SYS_process_vm_writev","SYS_pselect6","SYS_ptrace","SYS_putpmsg","SYS_pwrite64","SYS_pwritev","SYS_pwritev2","SYS_query_module","SYS_quotactl","SYS_quotactl_fd","SYS_read","SYS_readahead","SYS_readlink","SYS_readlinkat","SYS_readv","SYS_reboot","SYS_recvfrom","SYS_recvmmsg","SYS_recvmsg","SYS_remap_file_pages","SYS_removexattr","SYS_rename","SYS_renameat","SYS_renameat2","SYS_request_key","SYS_restart_syscall","SYS_rmdir","SYS_rseq","SYS_rt_sigaction","SYS_rt_sigpending","SYS_rt_sigprocmask","SYS_rt_sigqueueinfo","SYS_rt_sigreturn","SYS_rt_sigsuspend","SYS_rt_sigtimedwait","SYS_rt_tgsigqueueinfo","SYS_sched_get_priority_max","SYS_sched_get_priority_min","SYS_sched_getaffinity","SYS_sched_getattr","SYS_sched_getparam","SYS_sched_getscheduler","SYS_sched_rr_get_interval","SYS_sched_setaffinity","SYS_sched_setattr","SYS_sched_setparam","SYS_sched_setscheduler","SYS_sched_yield","SYS_seccomp","SYS_security","SYS_select","SYS_semctl","SYS_semget","SYS_semop","SYS_semtimedop","SYS_sendfile","SYS_sendmmsg","SYS_sendmsg","SYS_sendto","SYS_set_mempolicy","SYS_set_mempolicy_home_node","SYS_set_robust_list","SYS_set_thread_area","SYS_set_tid_address","SYS_setdomainname","SYS_setfsgid","SYS_setfsuid","SYS_setgid","SYS_setgroups","SYS_sethostname","SYS_setitimer","SYS_setns","SYS_setpgid","SYS_setpriority","SYS_setregid","SYS_setresgid","SYS_setresuid","SYS_setreuid","SYS_setrlimit","SYS_setsid","SYS_setsockopt","SYS_settimeofday","SYS_setuid","SYS_setxattr","SYS_shmat","SYS_shmctl","SYS_shmdt","SYS_shmget","SYS_shutdown","SYS_sigaltstack","SYS_signalfd","SYS_signalfd4","SYS_socket","SYS_socketpair","SYS_splice","SYS_stat","SYS_statfs","SYS_statx","SYS_swapoff","SYS_swapon","SYS_symlink","SYS_symlinkat","SYS_sync","SYS_sync_file_range","SYS_syncfs","SYS_sysfs","SYS_sysinfo","SYS_syslog","SYS_tee","SYS_tgkill","SYS_time","SYS_timer_create","SYS_timer_delete","SYS_timer_getoverrun","SYS_timer_gettime","SYS_timer_settime","SYS_timerfd_create","SYS_timerfd_gettime","SYS_timerfd_settime","SYS_times","SYS_tkill","SYS_truncate","SYS_tuxcall","SYS_umask","SYS_umount2","SYS_uname","SYS_unlink","SYS_unlinkat","SYS_unshare","SYS_uselib","SYS_userfaultfd","SYS_ustat","SYS_utime","SYS_utimensat","SYS_utimes","SYS_vfork","SYS_vhangup","SYS_vmsplice","SYS_vserver","SYS_wait4","SYS_waitid","SYS_write","SYS_writev","S_IEXEC","S_IFBLK","S_IFCHR","S_IFDIR","S_IFIFO","S_IFLNK","S_IFMT","S_IFREG","S_IFSOCK","S_IREAD","S_IRGRP","S_IROTH","S_IRUSR","S_IRWXG","S_IRWXO","S_IRWXU","S_ISGID","S_ISUID","S_ISVTX","S_IWGRP","S_IWOTH","S_IWRITE","S_IWUSR","S_IXGRP","S_IXOTH","S_IXUSR","TAB0","TAB1","TAB2","TAB3","TABDLY","TCA_CHAIN","TCA_DUMP_INVISIBLE","TCA_FCNT","TCA_HW_OFFLOAD","TCA_KIND","TCA_OPTIONS","TCA_PAD","TCA_RATE","TCA_STAB","TCA_STATS","TCA_STATS2","TCA_UNSPEC","TCA_XSTATS","TCFLSH","TCGETA","TCGETS","TCGETS2","TCGETX","TCIFLUSH","TCIOFF","TCIOFLUSH","TCION","TCOFLUSH","TCOOFF","TCOON","TCP_CC_INFO","TCP_CM_INQ","TCP_CONGESTION","TCP_COOKIE_TRANSACTIONS","TCP_CORK","TCP_DEFER_ACCEPT","TCP_FASTOPEN","TCP_FASTOPEN_CONNECT","TCP_FASTOPEN_KEY","TCP_FASTOPEN_NO_COOKIE","TCP_INFO","TCP_INQ","TCP_KEEPCNT","TCP_KEEPIDLE","TCP_KEEPINTVL","TCP_LINGER2","TCP_MAXSEG","TCP_MD5SIG","TCP_MD5SIG_EXT","TCP_MD5SIG_MAXKEYLEN","TCP_NODELAY","TCP_NOTSENT_LOWAT","TCP_QUEUE_SEQ","TCP_QUICKACK","TCP_REPAIR","TCP_REPAIR_OPTIONS","TCP_REPAIR_QUEUE","TCP_REPAIR_WINDOW","TCP_SAVED_SYN","TCP_SAVE_SYN","TCP_SYNCNT","TCP_THIN_DUPACK","TCP_THIN_LINEAR_TIMEOUTS","TCP_TIMESTAMP","TCP_ULP","TCP_USER_TIMEOUT","TCP_WINDOW_CLAMP","TCP_ZEROCOPY_RECEIVE","TCSADRAIN","TCSAFLUSH","TCSANOW","TCSBRK","TCSBRKP","TCSETA","TCSETAF","TCSETAW","TCSETS","TCSETS2","TCSETSF","TCSETSF2","TCSETSW","TCSETSW2","TCSETX","TCSETXF","TCSETXW","TCXONC","TFD_CLOEXEC","TFD_NONBLOCK","TFD_TIMER_ABSTIME","TFD_TIMER_CANCEL_ON_SET","THOUSEP","TIMER_ABSTIME","TIME_BAD","TIME_DEL","TIME_ERROR","TIME_INS","TIME_OK","TIME_OOP","TIME_WAIT","TIOCCBRK","TIOCCONS","TIOCEXCL","TIOCGDEV","TIOCGETD","TIOCGEXCL","TIOCGICOUNT","TIOCGLCKTRMIOS","TIOCGPGRP","TIOCGPKT","TIOCGPTLCK","TIOCGPTN","TIOCGPTPEER","TIOCGRS485","TIOCGSERIAL","TIOCGSID","TIOCGSOFTCAR","TIOCGWINSZ","TIOCINQ","TIOCLINUX","TIOCMBIC","TIOCMBIS","TIOCMGET","TIOCMIWAIT","TIOCMSET","TIOCM_CAR","TIOCM_CD","TIOCM_CTS","TIOCM_DSR","TIOCM_DTR","TIOCM_LE","TIOCM_RI","TIOCM_RNG","TIOCM_RTS","TIOCM_SR","TIOCM_ST","TIOCNOTTY","TIOCNXCL","TIOCOUTQ","TIOCPKT","TIOCSBRK","TIOCSCTTY","TIOCSERCONFIG","TIOCSERGETLSR","TIOCSERGETMULTI","TIOCSERGSTRUCT","TIOCSERGWILD","TIOCSERSETMULTI","TIOCSERSWILD","TIOCSETD","TIOCSIG","TIOCSLCKTRMIOS","TIOCSPGRP","TIOCSPTLCK","TIOCSRS485","TIOCSSERIAL","TIOCSSOFTCAR","TIOCSTI","TIOCSWINSZ","TIOCVHANGUP","TLS_1_2_VERSION","TLS_1_2_VERSION_MAJOR","TLS_1_2_VERSION_MINOR","TLS_1_3_VERSION","TLS_1_3_VERSION_MAJOR","TLS_1_3_VERSION_MINOR","TLS_CIPHER_AES_GCM_128","TLS_CIPHER_AES_GCM_128_IV_SIZE","TLS_CIPHER_AES_GCM_128_KEY_SIZE","TLS_CIPHER_AES_GCM_128_REC_SEQ_SIZE","TLS_CIPHER_AES_GCM_128_SALT_SIZE","TLS_CIPHER_AES_GCM_128_TAG_SIZE","TLS_CIPHER_AES_GCM_256","TLS_CIPHER_AES_GCM_256_IV_SIZE","TLS_CIPHER_AES_GCM_256_KEY_SIZE","TLS_CIPHER_AES_GCM_256_REC_SEQ_SIZE","TLS_CIPHER_AES_GCM_256_SALT_SIZE","TLS_CIPHER_AES_GCM_256_TAG_SIZE","TLS_CIPHER_CHACHA20_POLY1305","TLS_CIPHER_CHACHA20_POLY1305_IV_SIZE","TLS_CIPHER_CHACHA20_POLY1305_KEY_SIZE","TLS_CIPHER_CHACHA20_POLY1305_REC_SEQ_SIZE","TLS_CIPHER_CHACHA20_POLY1305_SALT_SIZE","TLS_CIPHER_CHACHA20_POLY1305_TAG_SIZE","TLS_GET_RECORD_TYPE","TLS_RX","TLS_SET_RECORD_TYPE","TLS_TX","TMPFS_MAGIC","TMP_MAX","TOSTOP","TRACEFS_MAGIC","TUN_FLT_ALLMULTI","TUN_F_CSUM","TUN_F_TSO4","TUN_F_TSO6","TUN_F_TSO_ECN","TUN_F_UFO","TUN_F_USO4","TUN_F_USO6","TUN_PKT_STRIP","TUN_READQ_SIZE","TUN_TAP_DEV","TUN_TUN_DEV","TUN_TX_TIMESTAMP","TUN_TYPE_MASK","T_FMT","T_FMT_AMPM","UDF_SUPER_MAGIC","UDP_CORK","UDP_ENCAP","UDP_GRO","UDP_NO_CHECK6_RX","UDP_NO_CHECK6_TX","UDP_SEGMENT","UINPUT_MAX_NAME_SIZE","UINPUT_VERSION","UIO_MAXIOV","UMOUNT_NOFOLLOW","UNAME26","USBDEVICE_SUPER_MAGIC","USER_PROCESS","USRQUOTA","UTIME_NOW","UTIME_OMIT","VDISCARD","VEOF","VEOL","VEOL2","VERASE","VINTR","VKILL","VLNEXT","VMADDR_CID_ANY","VMADDR_CID_HOST","VMADDR_CID_HYPERVISOR","VMADDR_CID_LOCAL","VMADDR_CID_RESERVED","VMADDR_PORT_ANY","VMIN","VM_BLOCK_DUMP","VM_DIRTY_BACKGROUND","VM_DIRTY_EXPIRE_CS","VM_DIRTY_RATIO","VM_DIRTY_WB_CS","VM_DROP_PAGECACHE","VM_HUGETLB_GROUP","VM_HUGETLB_PAGES","VM_LAPTOP_MODE","VM_LEGACY_VA_LAYOUT","VM_LOWMEM_RESERVE_RATIO","VM_MAX_MAP_COUNT","VM_MIN_FREE_KBYTES","VM_MIN_SLAB","VM_MIN_UNMAPPED","VM_NR_PDFLUSH_THREADS","VM_OVERCOMMIT_MEMORY","VM_OVERCOMMIT_RATIO","VM_PAGEBUF","VM_PAGE_CLUSTER","VM_PANIC_ON_OOM","VM_PERCPU_PAGELIST_FRACTION","VM_SWAPPINESS","VM_SWAP_TOKEN_TIMEOUT","VM_VDSO_ENABLED","VM_VFS_CACHE_PRESSURE","VM_ZONE_RECLAIM_MODE","VQUIT","VREPRINT","VSTART","VSTOP","VSUSP","VSWTC","VT0","VT1","VTDLY","VTIME","VWERASE","WCONTINUED","WCOREDUMP","WEXITED","WEXITSTATUS","WHOLE_SECONDS","WIFCONTINUED","WIFEXITED","WIFSIGNALED","WIFSTOPPED","WIRELESS_EXT","WNOHANG","WNOWAIT","WSTOPPED","WSTOPSIG","WTERMSIG","WUNTRACED","W_EXITCODE","W_OK","W_STOPCODE","XATTR_CREATE","XATTR_REPLACE","XDP_COPY","XDP_MMAP_OFFSETS","XDP_OPTIONS","XDP_OPTIONS_ZEROCOPY","XDP_PGOFF_RX_RING","XDP_PGOFF_TX_RING","XDP_PKT_CONTD","XDP_RING_NEED_WAKEUP","XDP_RX_RING","XDP_SHARED_UMEM","XDP_STATISTICS","XDP_TX_RING","XDP_UMEM_COMPLETION_RING","XDP_UMEM_FILL_RING","XDP_UMEM_PGOFF_COMPLETION_RING","XDP_UMEM_PGOFF_FILL_RING","XDP_UMEM_REG","XDP_UMEM_UNALIGNED_CHUNK_FLAG","XDP_USE_NEED_WAKEUP","XDP_USE_SG","XDP_ZEROCOPY","XENFS_SUPER_MAGIC","XFS_SUPER_MAGIC","XSK_UNALIGNED_BUF_ADDR_MASK","XSK_UNALIGNED_BUF_OFFSET_SHIFT","XTABS","X_OK","YESEXPR","YESSTR","_IOFBF","_IOLBF","_IONBF","_PC_2_SYMLINKS","_PC_ALLOC_SIZE_MIN","_PC_ASYNC_IO","_PC_CHOWN_RESTRICTED","_PC_FILESIZEBITS","_PC_LINK_MAX","_PC_MAX_CANON","_PC_MAX_INPUT","_PC_NAME_MAX","_PC_NO_TRUNC","_PC_PATH_MAX","_PC_PIPE_BUF","_PC_PRIO_IO","_PC_REC_INCR_XFER_SIZE","_PC_REC_MAX_XFER_SIZE","_PC_REC_MIN_XFER_SIZE","_PC_REC_XFER_ALIGN","_PC_SOCK_MAXBUF","_PC_SYMLINK_MAX","_PC_SYNC_IO","_PC_VDISABLE","_POSIX_VDISABLE","_SC_2_CHAR_TERM","_SC_2_C_BIND","_SC_2_C_DEV","_SC_2_C_VERSION","_SC_2_FORT_DEV","_SC_2_FORT_RUN","_SC_2_LOCALEDEF","_SC_2_PBS","_SC_2_PBS_ACCOUNTING","_SC_2_PBS_CHECKPOINT","_SC_2_PBS_LOCATE","_SC_2_PBS_MESSAGE","_SC_2_PBS_TRACK","_SC_2_SW_DEV","_SC_2_UPE","_SC_2_VERSION","_SC_ADVISORY_INFO","_SC_AIO_LISTIO_MAX","_SC_AIO_MAX","_SC_AIO_PRIO_DELTA_MAX","_SC_ARG_MAX","_SC_ASYNCHRONOUS_IO","_SC_ATEXIT_MAX","_SC_AVPHYS_PAGES","_SC_BARRIERS","_SC_BASE","_SC_BC_BASE_MAX","_SC_BC_DIM_MAX","_SC_BC_SCALE_MAX","_SC_BC_STRING_MAX","_SC_CHARCLASS_NAME_MAX","_SC_CHAR_BIT","_SC_CHAR_MAX","_SC_CHAR_MIN","_SC_CHILD_MAX","_SC_CLK_TCK","_SC_CLOCK_SELECTION","_SC_COLL_WEIGHTS_MAX","_SC_CPUTIME","_SC_C_LANG_SUPPORT","_SC_C_LANG_SUPPORT_R","_SC_DELAYTIMER_MAX","_SC_DEVICE_IO","_SC_DEVICE_SPECIFIC","_SC_DEVICE_SPECIFIC_R","_SC_EQUIV_CLASS_MAX","_SC_EXPR_NEST_MAX","_SC_FD_MGMT","_SC_FIFO","_SC_FILE_ATTRIBUTES","_SC_FILE_LOCKING","_SC_FILE_SYSTEM","_SC_FSYNC","_SC_GETGR_R_SIZE_MAX","_SC_GETPW_R_SIZE_MAX","_SC_HOST_NAME_MAX","_SC_INT_MAX","_SC_INT_MIN","_SC_IOV_MAX","_SC_IPV6","_SC_JOB_CONTROL","_SC_LEVEL1_DCACHE_ASSOC","_SC_LEVEL1_DCACHE_LINESIZE","_SC_LEVEL1_DCACHE_SIZE","_SC_LEVEL1_ICACHE_ASSOC","_SC_LEVEL1_ICACHE_LINESIZE","_SC_LEVEL1_ICACHE_SIZE","_SC_LEVEL2_CACHE_ASSOC","_SC_LEVEL2_CACHE_LINESIZE","_SC_LEVEL2_CACHE_SIZE","_SC_LEVEL3_CACHE_ASSOC","_SC_LEVEL3_CACHE_LINESIZE","_SC_LEVEL3_CACHE_SIZE","_SC_LEVEL4_CACHE_ASSOC","_SC_LEVEL4_CACHE_LINESIZE","_SC_LEVEL4_CACHE_SIZE","_SC_LINE_MAX","_SC_LOGIN_NAME_MAX","_SC_LONG_BIT","_SC_MAPPED_FILES","_SC_MB_LEN_MAX","_SC_MEMLOCK","_SC_MEMLOCK_RANGE","_SC_MEMORY_PROTECTION","_SC_MESSAGE_PASSING","_SC_MONOTONIC_CLOCK","_SC_MQ_OPEN_MAX","_SC_MQ_PRIO_MAX","_SC_MULTI_PROCESS","_SC_NETWORKING","_SC_NGROUPS_MAX","_SC_NL_ARGMAX","_SC_NL_LANGMAX","_SC_NL_MSGMAX","_SC_NL_NMAX","_SC_NL_SETMAX","_SC_NL_TEXTMAX","_SC_NPROCESSORS_CONF","_SC_NPROCESSORS_ONLN","_SC_NZERO","_SC_OPEN_MAX","_SC_PAGESIZE","_SC_PAGE_SIZE","_SC_PASS_MAX","_SC_PHYS_PAGES","_SC_PII","_SC_PII_INTERNET","_SC_PII_INTERNET_DGRAM","_SC_PII_INTERNET_STREAM","_SC_PII_OSI","_SC_PII_OSI_CLTS","_SC_PII_OSI_COTS","_SC_PII_OSI_M","_SC_PII_SOCKET","_SC_PII_XTI","_SC_PIPE","_SC_POLL","_SC_PRIORITIZED_IO","_SC_PRIORITY_SCHEDULING","_SC_RAW_SOCKETS","_SC_READER_WRITER_LOCKS","_SC_REALTIME_SIGNALS","_SC_REGEXP","_SC_REGEX_VERSION","_SC_RE_DUP_MAX","_SC_RTSIG_MAX","_SC_SAVED_IDS","_SC_SCHAR_MAX","_SC_SCHAR_MIN","_SC_SELECT","_SC_SEMAPHORES","_SC_SEM_NSEMS_MAX","_SC_SEM_VALUE_MAX","_SC_SHARED_MEMORY_OBJECTS","_SC_SHELL","_SC_SHRT_MAX","_SC_SHRT_MIN","_SC_SIGNALS","_SC_SIGQUEUE_MAX","_SC_SINGLE_PROCESS","_SC_SPAWN","_SC_SPIN_LOCKS","_SC_SPORADIC_SERVER","_SC_SSIZE_MAX","_SC_SS_REPL_MAX","_SC_STREAMS","_SC_STREAM_MAX","_SC_SYMLOOP_MAX","_SC_SYNCHRONIZED_IO","_SC_SYSTEM_DATABASE","_SC_SYSTEM_DATABASE_R","_SC_THREADS","_SC_THREAD_ATTR_STACKADDR","_SC_THREAD_ATTR_STACKSIZE","_SC_THREAD_CPUTIME","_SC_THREAD_DESTRUCTOR_ITERATIONS","_SC_THREAD_KEYS_MAX","_SC_THREAD_PRIORITY_SCHEDULING","_SC_THREAD_PRIO_INHERIT","_SC_THREAD_PRIO_PROTECT","_SC_THREAD_PROCESS_SHARED","_SC_THREAD_ROBUST_PRIO_INHERIT","_SC_THREAD_ROBUST_PRIO_PROTECT","_SC_THREAD_SAFE_FUNCTIONS","_SC_THREAD_SPORADIC_SERVER","_SC_THREAD_STACK_MIN","_SC_THREAD_THREADS_MAX","_SC_TIMEOUTS","_SC_TIMERS","_SC_TIMER_MAX","_SC_TRACE","_SC_TRACE_EVENT_FILTER","_SC_TRACE_EVENT_NAME_MAX","_SC_TRACE_INHERIT","_SC_TRACE_LOG","_SC_TRACE_NAME_MAX","_SC_TRACE_SYS_MAX","_SC_TRACE_USER_EVENT_MAX","_SC_TTY_NAME_MAX","_SC_TYPED_MEMORY_OBJECTS","_SC_TZNAME_MAX","_SC_T_IOV_MAX","_SC_UCHAR_MAX","_SC_UINT_MAX","_SC_UIO_MAXIOV","_SC_ULONG_MAX","_SC_USER_GROUPS","_SC_USER_GROUPS_R","_SC_USHRT_MAX","_SC_V6_ILP32_OFF32","_SC_V6_ILP32_OFFBIG","_SC_V6_LP64_OFF64","_SC_V6_LPBIG_OFFBIG","_SC_V7_ILP32_OFF32","_SC_V7_ILP32_OFFBIG","_SC_V7_LP64_OFF64","_SC_V7_LPBIG_OFFBIG","_SC_VERSION","_SC_WORD_BIT","_SC_XBS5_ILP32_OFF32","_SC_XBS5_ILP32_OFFBIG","_SC_XBS5_LP64_OFF64","_SC_XBS5_LPBIG_OFFBIG","_SC_XOPEN_CRYPT","_SC_XOPEN_ENH_I18N","_SC_XOPEN_LEGACY","_SC_XOPEN_REALTIME","_SC_XOPEN_REALTIME_THREADS","_SC_XOPEN_SHM","_SC_XOPEN_STREAMS","_SC_XOPEN_UNIX","_SC_XOPEN_VERSION","_SC_XOPEN_XCU_VERSION","_SC_XOPEN_XPG2","_SC_XOPEN_XPG3","_SC_XOPEN_XPG4","__NFT_REG_MAX","__SIZEOF_PTHREAD_BARRIERATTR_T","__SIZEOF_PTHREAD_BARRIER_T","__SIZEOF_PTHREAD_CONDATTR_T","__SIZEOF_PTHREAD_COND_T","__SIZEOF_PTHREAD_MUTEXATTR_T","__SIZEOF_PTHREAD_MUTEX_T","__SIZEOF_PTHREAD_RWLOCKATTR_T","__SIZEOF_PTHREAD_RWLOCK_T","__UT_HOSTSIZE","__UT_LINESIZE","__UT_NAMESIZE","__WALL","__WCLONE","__WNOTHREAD","__c_anonymous_ifc_ifcu","__c_anonymous_ifr_ifru","__c_anonymous_ifru_map","__c_anonymous_ptrace_syscall_info_data","__c_anonymous_ptrace_syscall_info_entry","__c_anonymous_ptrace_syscall_info_exit","__c_anonymous_ptrace_syscall_info_seccomp","__c_anonymous_sockaddr_can_can_addr","__c_anonymous_sockaddr_can_j1939","__c_anonymous_sockaddr_can_tp","__errno_location","__exit_status","__fsword_t","__glibc_reserved1","__glibc_reserved2","__glibc_reserved3","__glibc_reserved4","__kernel_rwf_t","__key","__priority_which_t","__rlimit_resource_t","__s16","__s32","__s64","__seq","__statx_timestamp_pad1","__syscall_ulong_t","__timeval","__u16","__u32","__u64","__u8","__unused1","__unused10","__unused11","__unused2","__unused3","__unused4","__unused5","__unused6","__unused7","__unused8","__unused9","_exit","_f","_libc_fpstate","_libc_fpxreg","_libc_xmmreg","_st","_xmm","abort","abs","absflat","absfuzz","absinfo","absmax","absmin","accept","accept4","access","acct","actime","addmntent","addr","addr","addr","addr","addr","addr_mask","addrinfo","adjtime","adjtimex","af","af_alg_iv","ai_addr","ai_addrlen","ai_canonname","ai_family","ai_flags","ai_next","ai_protocol","ai_socktype","aio_buf","aio_buf","aio_cancel","aio_data","aio_error","aio_fildes","aio_fildes","aio_flags","aio_fsync","aio_key","aio_lio_opcode","aio_lio_opcode","aio_nbytes","aio_nbytes","aio_offset","aio_offset","aio_read","aio_reqprio","aio_reqprio","aio_resfd","aio_return","aio_rw_flags","aio_sigevent","aio_suspend","aio_write","aiocb","alarm","ar_hln","ar_hrd","ar_op","ar_pln","ar_pro","arch","arch","arena","arena","args","args","args","arp_dev","arp_flags","arp_flags","arp_ha","arp_ha","arp_netmask","arp_netmask","arp_pa","arp_pa","arpd_request","arphdr","arpreq","arpreq_old","asctime_r","atexit","atof","atoi","atol","atoll","attack_length","attack_level","auth_keynumber","backtrace","base_addr","bind","blkcnt64_t","blkcnt_t","blksize_t","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","brk","bsearch","bufferram","bustype","button","c_cc","c_cc","c_cflag","c_cflag","c_char","c_double","c_float","c_iflag","c_iflag","c_int","c_ispeed","c_ispeed","c_lflag","c_lflag","c_line","c_line","c_long","c_longlong","c_oflag","c_oflag","c_ospeed","c_ospeed","c_schar","c_short","c_uchar","c_uint","c_ulong","c_ulonglong","c_ushort","c_void","calcnt","calloc","can_addr","can_dlc","can_err_mask_t","can_family","can_filter","can_frame","can_id","can_id","can_id","can_ifindex","can_mask","canfd_frame","canid_t","canxl_frame","cc_t","center","cfgetispeed","cfgetospeed","cfmakeraw","cfsetispeed","cfsetospeed","cfsetspeed","cgid","cgroup","ch_addralign","ch_addralign","ch_reserved","ch_size","ch_size","ch_type","ch_type","chdir","child_tid","chmod","chown","chroot","chunk_size","chunk_size","cipher_type","clearenv","clearerr","clock_adjtime","clock_getcpuclockid","clock_getres","clock_gettime","clock_nanosleep","clock_settime","clock_t","clockid","clockid_t","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone_args","close","close_range","closedir","closelog","cmd","cmsg_len","cmsg_level","cmsg_type","cmsghdr","code","code","code","codes_ptr","codes_size","connect","constant","consumer","consumer","cookie","copy_file_range","cpu_set_t","cr","cr","creat","creat64","cs","ctermid","ctime_r","cuid","currency_symbol","custom_data","custom_len","cwd","cwd","d_ino","d_ino","d_name","d_name","d_off","d_off","d_reclen","d_reclen","d_type","d_type","daemon","data","data","data","data","deadband","decimal_point","delay","desc","desc","dest_offset","dev","dev_t","difftime","direction","dirent","dirent64","dirfd","dirname","dl_iterate_phdr","dl_phdr_info","dladdr","dladdr1","dlclose","dlerror","dli_fbase","dli_fname","dli_saddr","dli_sname","dlinfo","dlmopen","dlopen","dlpi_addr","dlpi_adds","dlpi_name","dlpi_phdr","dlpi_phnum","dlpi_subs","dlpi_tls_data","dlpi_tls_modid","dlsym","dma","domainname","dqb_bhardlimit","dqb_bsoftlimit","dqb_btime","dqb_curinodes","dqb_curspace","dqb_ihardlimit","dqb_isoftlimit","dqb_itime","dqb_valid","dqblk","drand48","ds","dup","dup2","dup3","duplocale","e_ehsize","e_ehsize","e_entry","e_entry","e_exit","e_flags","e_flags","e_ident","e_ident","e_machine","e_machine","e_phentsize","e_phentsize","e_phnum","e_phnum","e_phoff","e_phoff","e_shentsize","e_shentsize","e_shnum","e_shnum","e_shoff","e_shoff","e_shstrndx","e_shstrndx","e_termination","e_type","e_type","e_version","e_version","eaccess","ee_code","ee_data","ee_errno","ee_info","ee_origin","ee_pad","ee_type","effect","effect_id","eflags","element","end_level","endgrent","endmntent","endpwent","endservent","endspent","endutxent","entry","envelope","envelope","envelope","epoll_create","epoll_create1","epoll_ctl","epoll_event","epoll_pwait","epoll_wait","erand48","errcnt","error","error","es","esterror","esterror","euidaccess","event_len","eventfd","eventfd_read","eventfd_t","eventfd_write","events","events","execl","execle","execlp","execv","execve","execveat","execvp","execvpe","exit","exit","exit_signal","explicit_bzero","exponent","f_bavail","f_bavail","f_bavail","f_bavail","f_bfree","f_bfree","f_bfree","f_bfree","f_blocks","f_blocks","f_blocks","f_blocks","f_bsize","f_bsize","f_bsize","f_bsize","f_favail","f_favail","f_ffree","f_ffree","f_ffree","f_ffree","f_files","f_files","f_files","f_files","f_flag","f_flag","f_flags","f_frsize","f_frsize","f_frsize","f_frsize","f_fsid","f_fsid","f_fsid","f_fsid","f_namelen","f_namelen","f_namemax","f_namemax","f_spare","f_type","f_type","faccessat","fade_length","fade_level","fallocate","fallocate64","fanotify_event_metadata","fanotify_init","fanotify_mark","fanotify_response","fchdir","fchmod","fchmodat","fchown","fchownat","fclose","fcntl","fd","fd","fd","fd_set","fdatasync","fdopen","fdopendir","feof","ferror","fexecve","ff_condition_effect","ff_constant_effect","ff_effect","ff_effects_max","ff_effects_max","ff_envelope","ff_periodic_effect","ff_ramp_effect","ff_replay","ff_rumble_effect","ff_trigger","fflush","fgetc","fgetgrent_r","fgetpos","fgetpos64","fgetpwent_r","fgets","fgetspent_r","fgetxattr","file_clone_range","fileno","filter","flag","flags","flags","flags","flags","flags","flags","flags","flags","flags","flags","flags","flags","flags","flags","flags","flat","flistxattr","flock","flock","flock64","fmemopen","fmt","fop","fop","fopen","fopen64","fordblks","fordblks","fork","forkpty","fpathconf","fpos64_t","fpos_t","fpregs","fprintf","fputc","fputs","fr","fr","frac_digits","fread","fread_unlocked","free","freeaddrinfo","freehigh","freeifaddrs","freelocale","freeram","freeswap","fremovexattr","freopen","freopen64","freq","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","fs","fs_base","fsblkcnt_t","fscanf","fseek","fseeko","fseeko64","fsetpos","fsetpos64","fsetxattr","fsfilcnt_t","fsid_t","fsmblks","fsmblks","fstat","fstat64","fstatat","fstatat64","fstatfs","fstatfs64","fstatvfs","fstatvfs64","fsync","ftell","ftello","ftello64","ftok","ftruncate","ftruncate64","ftw","ftw","futimens","futimes","fuzz","fwrite","gai_strerror","genlmsghdr","getaddrinfo","getauxval","getchar","getchar_unlocked","getcontext","getcwd","getdomainname","getdtablesize","getegid","getentropy","getenv","geteuid","getgid","getgrent","getgrent_r","getgrgid","getgrgid_r","getgrnam","getgrnam_r","getgrouplist","getgroups","gethostid","gethostname","getifaddrs","getline","getloadavg","getlogin","getmntent","getmntent_r","getnameinfo","getopt","getopt_long","getpeername","getpgid","getpgrp","getpid","getppid","getpriority","getprotobyname","getprotobynumber","getpt","getpwent","getpwent_r","getpwnam","getpwnam_r","getpwuid","getpwuid_r","getrandom","getresgid","getresuid","getrlimit","getrlimit64","getrusage","getservbyname","getservbyport","getservent","getsid","getsockname","getsockopt","getspent","getspent_r","getspnam","getspnam_r","gettid","gettimeofday","getuid","getutxent","getutxid","getutxline","getxattr","gid","gid","gid_t","gl_flags","gl_flags","gl_offs","gl_offs","gl_pathc","gl_pathc","gl_pathv","gl_pathv","glob","glob64","glob64_t","glob_t","globfree","globfree64","gmtime","gmtime_r","gnu_basename","gnu_get_libc_release","gnu_get_libc_version","gr_gid","gr_mem","gr_name","gr_passwd","grantpt","greg_t","gregs","group","group","grouping","gs","gs_base","h_addr_list","h_addrtype","h_aliases","h_length","h_name","ha","has_arg","hasmntopt","hblkhd","hblkhd","hblks","hblks","headroom","headroom","hostent","hstrerror","hwtstamp_config","i387","iconv","iconv_close","iconv_open","iconv_t","id","id","id","id","id","id","id_t","idtype_t","if_freenameindex","if_index","if_indextoname","if_name","if_nameindex","if_nameindex","if_nametoindex","ifa_addr","ifa_data","ifa_flags","ifa_ifu","ifa_name","ifa_netmask","ifa_next","ifaddrs","ifc_ifcu","ifc_len","ifconf","ifcu_buf","ifcu_req","ifr6_addr","ifr6_ifindex","ifr6_prefixlen","ifr_ifru","ifr_name","ifreq","ifru_addr","ifru_broadaddr","ifru_data","ifru_dstaddr","ifru_flags","ifru_hwaddr","ifru_ifindex","ifru_map","ifru_metric","ifru_mtu","ifru_netmask","ifru_newname","ifru_slave","imr_address","imr_ifindex","imr_interface","imr_interface","imr_multiaddr","imr_multiaddr","imr_multiaddr","imr_sourceaddr","in6_addr","in6_ifreq","in6_pktinfo","in6_rtmsg","in_addr","in_addr_t","in_pktinfo","in_port_t","index","info","info","info","initgroups","ino64_t","ino_t","inotify_add_watch","inotify_event","inotify_init","inotify_init1","inotify_rm_watch","input_absinfo","input_event","input_id","input_keymap_entry","input_mask","instruction_pointer","instruction_pointer","int16_t","int32_t","int64_t","int8_t","int_curr_symbol","int_frac_digits","int_n_cs_precedes","int_n_sep_by_space","int_n_sign_posn","int_p_cs_precedes","int_p_sep_by_space","int_p_sign_posn","interval","intmax_t","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","intptr_t","iocb","ioctl","ioperm","iopl","iov_base","iov_len","iovec","ip","ip_mreq","ip_mreq_source","ip_mreqn","ipc_perm","ipi6_addr","ipi6_ifindex","ipi_addr","ipi_ifindex","ipi_spec_dst","ipv6_mreq","ipv6mr_interface","ipv6mr_multiaddr","irq","is_error","isalnum","isalpha","isatty","isblank","iscntrl","isdigit","isgraph","islower","isprint","ispunct","isspace","isupper","isxdigit","it_interval","it_interval","it_value","it_value","itimerspec","itimerval","iv","iv","iv","iv","ivlen","j1939","j1939_filter","jf","jitcnt","jitter","jrand48","jt","k","keepcost","keepcost","key","key","key","key_t","keycode","kill","killpg","l_len","l_len","l_linger","l_onoff","l_pid","l_pid","l_start","l_start","l_type","l_type","l_whence","l_whence","labs","lchown","lcong48","lconv","left_coeff","left_saturation","len","len","len","len","len","len","len","len","length","level","lgetxattr","linger","link","linkat","lio_listio","listen","listxattr","llistxattr","loads","locale_t","localeconv","localtime","localtime_r","lockf","loff_t","login_tty","lrand48","lremovexattr","lseek","lseek64","lsetxattr","lstat","lstat64","lutimes","machine","madvise","magic","magnitude","major","makecontext","makedev","mallinfo","mallinfo","mallinfo2","mallinfo2","malloc","malloc_info","malloc_trim","malloc_usable_size","mallopt","mask","mask","max_align_t","maxerror","maxerror","maximum","mcontext_t","mem_end","mem_start","mem_unit","memalign","memchr","memcmp","memcpy","memfd_create","memmem","memmove","memrchr","memset","metadata_len","mincore","minimum","minor","mkdir","mkdirat","mkdtemp","mkfifo","mkfifoat","mknod","mknodat","mkostemp","mkostemps","mkstemp","mkstemps","mktime","mlock","mlock2","mlockall","mmap","mmap64","mmsghdr","mnt_dir","mnt_freq","mnt_fsname","mnt_opts","mnt_passno","mnt_type","mntent","mode","mode","mode_t","modes","modtime","mon_decimal_point","mon_grouping","mon_thousands_sep","mount","mprotect","mq_attr","mq_close","mq_curmsgs","mq_flags","mq_getattr","mq_maxmsg","mq_msgsize","mq_open","mq_receive","mq_send","mq_setattr","mq_timedreceive","mq_timedsend","mq_unlink","mqd_t","mr_address","mr_alen","mr_ifindex","mr_type","mrand48","mremap","msg","msg_control","msg_controllen","msg_ctime","msg_flags","msg_hdr","msg_iov","msg_iovlen","msg_len","msg_lrpid","msg_lspid","msg_name","msg_namelen","msg_perm","msg_qbytes","msg_qnum","msg_rtime","msg_stime","msgctl","msgget","msghdr","msginfo","msglen_t","msgmap","msgmax","msgmnb","msgmni","msgpool","msgqnum_t","msgrcv","msgseg","msgsnd","msgssz","msgtql","msqid_ds","msync","munlock","munlockall","munmap","mxcr_mask","mxcr_mask","mxcsr","mxcsr","n_cs_precedes","n_sep_by_space","n_sign_posn","name","name","name","name","name","name_mask","name_t","nanosleep","negative_sign","newfd","newfd_flags","newlocale","nfds_t","nice","nl_family","nl_groups","nl_item","nl_langinfo","nl_langinfo_l","nl_mmap_hdr","nl_mmap_req","nl_pid","nl_pktinfo","nla_len","nla_type","nlattr","nlink_t","nlmsg_flags","nlmsg_len","nlmsg_pid","nlmsg_seq","nlmsg_type","nlmsgerr","nlmsghdr","nm_block_nr","nm_block_size","nm_frame_nr","nm_frame_size","nm_gid","nm_group","nm_len","nm_pid","nm_status","nm_uid","nodename","nr","nr","nr","nr","nrand48","ntp_adjtime","ntp_gettime","ntptimeval","nxt_assoc_id","nxt_flags","nxt_length","nxt_ppid","nxt_sid","off","off64_t","off_t","offset","offset","old","op","open","open64","open_how","open_memstream","open_wmemstream","openat","openat64","opendir","openlog","openpty","option","options","ordblks","ordblks","orig_rax","p_aliases","p_align","p_align","p_cs_precedes","p_filesz","p_filesz","p_flags","p_flags","p_memsz","p_memsz","p_name","p_offset","p_offset","p_paddr","p_paddr","p_proto","p_sep_by_space","p_sign_posn","p_type","p_type","p_vaddr","p_vaddr","packet_mreq","pad","pad","pad","parent_tid","passwd","pathconf","pause","pclose","period","perror","personality","pgn","pgn","pgn_mask","pgn_t","phase","pid","pid","pid","pid_t","pidfd","pipe","pipe2","poll","pollfd","popen","port","positive_sign","posix_basename","posix_fadvise","posix_fadvise64","posix_fallocate","posix_fallocate64","posix_madvise","posix_memalign","posix_openpt","posix_spawn","posix_spawn_file_actions_addchdir_np","posix_spawn_file_actions_addclose","posix_spawn_file_actions_addclosefrom_np","posix_spawn_file_actions_adddup2","posix_spawn_file_actions_addfchdir_np","posix_spawn_file_actions_addopen","posix_spawn_file_actions_addtcsetpgrp_np","posix_spawn_file_actions_destroy","posix_spawn_file_actions_init","posix_spawn_file_actions_t","posix_spawnattr_destroy","posix_spawnattr_getflags","posix_spawnattr_getpgroup","posix_spawnattr_getschedparam","posix_spawnattr_getschedpolicy","posix_spawnattr_getsigdefault","posix_spawnattr_getsigmask","posix_spawnattr_init","posix_spawnattr_setflags","posix_spawnattr_setpgroup","posix_spawnattr_setschedparam","posix_spawnattr_setschedpolicy","posix_spawnattr_setsigdefault","posix_spawnattr_setsigmask","posix_spawnattr_t","posix_spawnp","ppoll","ppsfreq","pr_policy","pr_value","prctl","pread","pread64","preadv","preadv2","preadv64","preadv64v2","precision","printf","prio","priority_t","prlimit","prlimit64","process_vm_readv","process_vm_writev","procs","producer","producer","product","protoent","pselect","pthread_atfork","pthread_attr_destroy","pthread_attr_getaffinity_np","pthread_attr_getguardsize","pthread_attr_getinheritsched","pthread_attr_getschedparam","pthread_attr_getschedpolicy","pthread_attr_getstack","pthread_attr_getstacksize","pthread_attr_init","pthread_attr_setaffinity_np","pthread_attr_setdetachstate","pthread_attr_setguardsize","pthread_attr_setinheritsched","pthread_attr_setschedparam","pthread_attr_setschedpolicy","pthread_attr_setstacksize","pthread_attr_t","pthread_barrier_destroy","pthread_barrier_init","pthread_barrier_t","pthread_barrier_wait","pthread_barrierattr_destroy","pthread_barrierattr_getpshared","pthread_barrierattr_init","pthread_barrierattr_setpshared","pthread_barrierattr_t","pthread_cancel","pthread_cond_broadcast","pthread_cond_destroy","pthread_cond_init","pthread_cond_signal","pthread_cond_t","pthread_cond_timedwait","pthread_cond_wait","pthread_condattr_destroy","pthread_condattr_getclock","pthread_condattr_getpshared","pthread_condattr_init","pthread_condattr_setclock","pthread_condattr_setpshared","pthread_condattr_t","pthread_create","pthread_detach","pthread_exit","pthread_getaffinity_np","pthread_getattr_np","pthread_getcpuclockid","pthread_getname_np","pthread_getschedparam","pthread_getspecific","pthread_join","pthread_key_create","pthread_key_delete","pthread_key_t","pthread_kill","pthread_mutex_consistent","pthread_mutex_destroy","pthread_mutex_init","pthread_mutex_lock","pthread_mutex_t","pthread_mutex_timedlock","pthread_mutex_trylock","pthread_mutex_unlock","pthread_mutexattr_destroy","pthread_mutexattr_getprotocol","pthread_mutexattr_getpshared","pthread_mutexattr_getrobust","pthread_mutexattr_init","pthread_mutexattr_setprotocol","pthread_mutexattr_setpshared","pthread_mutexattr_setrobust","pthread_mutexattr_settype","pthread_mutexattr_t","pthread_once","pthread_once_t","pthread_rwlock_destroy","pthread_rwlock_init","pthread_rwlock_rdlock","pthread_rwlock_t","pthread_rwlock_tryrdlock","pthread_rwlock_trywrlock","pthread_rwlock_unlock","pthread_rwlock_wrlock","pthread_rwlockattr_destroy","pthread_rwlockattr_getkind_np","pthread_rwlockattr_getpshared","pthread_rwlockattr_init","pthread_rwlockattr_setkind_np","pthread_rwlockattr_setpshared","pthread_rwlockattr_t","pthread_self","pthread_setaffinity_np","pthread_setname_np","pthread_setschedparam","pthread_setschedprio","pthread_setspecific","pthread_sigmask","pthread_sigqueue","pthread_spin_destroy","pthread_spin_init","pthread_spin_lock","pthread_spin_trylock","pthread_spin_unlock","pthread_spinlock_t","pthread_t","ptrace","ptrace_peeksiginfo_args","ptrace_rseq_configuration","ptrace_syscall_info","ptrdiff_t","ptsname","ptsname_r","putchar","putchar_unlocked","putenv","putgrent","putpwent","puts","pututxline","pw_dir","pw_gecos","pw_gid","pw_name","pw_passwd","pw_shell","pw_uid","pwrite","pwrite64","pwritev","pwritev2","pwritev64","pwritev64v2","qsort","qsort_r","quotactl","r10","r11","r12","r13","r14","r15","r8","r9","raise","rand","rax","rbp","rbx","rcv_assoc_id","rcv_context","rcv_cumtsn","rcv_flags","rcv_ppid","rcv_sid","rcv_ssn","rcv_tsn","rcx","rdi","rdp","rdp","rdx","read","readahead","readdir","readdir64","readdir64_r","readdir_r","readlink","readlinkat","readv","realloc","reallocarray","realpath","reboot","rec_seq","rec_seq","rec_seq","recv","recvfrom","recvmmsg","recvmsg","regcomp","regerror","regex_t","regexec","regfree","regmatch_t","regoff_t","regs","release","remap_file_pages","remove","removexattr","rename","renameat","renameat2","replay","req","request_id","request_id","res_init","reserved","reserved","resolution","resolve","response","ret_data","retval","retval","revents","rewind","rewinddir","right_coeff","right_saturation","rip","rip","rip","rlim64_t","rlim_cur","rlim_cur","rlim_max","rlim_max","rlim_t","rlimit","rlimit64","rm_eo","rm_so","rmdir","rseq_abi_pointer","rseq_abi_size","rsi","rsp","rt_class","rt_dev","rt_dst","rt_flags","rt_gateway","rt_genmask","rt_irtt","rt_metric","rt_mtu","rt_pad1","rt_pad2","rt_pad3","rt_pad4","rt_tos","rt_window","rtentry","ru_idrss","ru_inblock","ru_isrss","ru_ixrss","ru_majflt","ru_maxrss","ru_minflt","ru_msgrcv","ru_msgsnd","ru_nivcsw","ru_nsignals","ru_nswap","ru_nvcsw","ru_oublock","ru_stime","ru_utime","rusage","rx","rx","rx_dropped","rx_dropped","rx_fill_ring_empty_descs","rx_filter","rx_id","rx_invalid_descs","rx_invalid_descs","rx_ring_full","s6_addr","s_addr","s_aliases","s_name","s_port","s_proto","sa_data","sa_family","sa_family_t","sa_flags","sa_mask","sa_restorer","sa_sigaction","salg_family","salg_feat","salg_mask","salg_name","salg_type","salt","salt","salt","sbrk","scancode","scanf","sched_attr","sched_deadline","sched_flags","sched_get_priority_max","sched_get_priority_min","sched_getaffinity","sched_getcpu","sched_getparam","sched_getscheduler","sched_nice","sched_param","sched_period","sched_policy","sched_priority","sched_priority","sched_rr_get_interval","sched_runtime","sched_setaffinity","sched_setparam","sched_setscheduler","sched_yield","sctp_assoc_t","sctp_authinfo","sctp_initmsg","sctp_nxtinfo","sctp_prinfo","sctp_rcvinfo","sctp_sndinfo","sctp_sndrcvinfo","sdt","seccomp","seccomp_data","seccomp_data","seccomp_notif","seccomp_notif","seccomp_notif_addfd","seccomp_notif_resp","seccomp_notif_resp","seccomp_notif_sizes","seed48","seekdir","select","sem_close","sem_ctime","sem_destroy","sem_flg","sem_getvalue","sem_init","sem_nsems","sem_num","sem_op","sem_open","sem_otime","sem_perm","sem_post","sem_t","sem_timedwait","sem_trywait","sem_unlink","sem_wait","semaem","sembuf","semctl","semget","semid_ds","seminfo","semmap","semmni","semmns","semmnu","semmsl","semop","semopm","semume","semusz","semvmx","send","sendfile","sendfile64","sendmmsg","sendmsg","sendto","servent","set_tid","set_tid_size","setbuf","setcontext","setdomainname","setegid","setenv","seteuid","setfsgid","setfsuid","setgid","setgrent","setgroups","sethostid","sethostname","setlocale","setlogmask","setmntent","setns","setpgid","setpriority","setpwent","setregid","setresgid","setresuid","setreuid","setrlimit","setrlimit64","setservent","setsid","setsockopt","setspent","settimeofday","setuid","setutxent","setvbuf","setxattr","sgetspent_r","sh_addr","sh_addr","sh_addralign","sh_addralign","sh_entsize","sh_entsize","sh_flags","sh_flags","sh_info","sh_info","sh_link","sh_link","sh_name","sh_name","sh_offset","sh_offset","sh_size","sh_size","sh_type","sh_type","sharedram","shift","shm_atime","shm_cpid","shm_ctime","shm_dtime","shm_lpid","shm_nattch","shm_open","shm_perm","shm_segsz","shm_unlink","shmat","shmatt_t","shmctl","shmdt","shmget","shmid_ds","shutdown","si_addr","si_code","si_errno","si_pid","si_signo","si_status","si_stime","si_uid","si_utime","si_value","sigaction","sigaction","sigaddset","sigaltstack","sigdelset","sigemptyset","sigev_notify","sigev_notify_thread_id","sigev_signo","sigev_value","sigevent","sigfillset","sighandler_t","siginfo_t","sigismember","signal","signal","signalfd","signalfd_siginfo","signature","significand","sigpending","sigprocmask","sigset_t","sigsuspend","sigtimedwait","sigval","sigwait","sigwaitinfo","sin6_addr","sin6_family","sin6_flowinfo","sin6_port","sin6_scope_id","sin_addr","sin_family","sin_port","sin_zero","sinfo_assoc_id","sinfo_context","sinfo_cumtsn","sinfo_flags","sinfo_ppid","sinfo_ssn","sinfo_stream","sinfo_timetolive","sinfo_tsn","sinit_max_attempts","sinit_max_init_timeo","sinit_max_instreams","sinit_num_ostreams","sival_ptr","size","size_t","sleep","sll_addr","sll_family","sll_halen","sll_hatype","sll_ifindex","sll_pkttype","sll_protocol","smblks","smblks","snd_assoc_id","snd_context","snd_flags","snd_ppid","snd_sid","snprintf","sock_extended_err","sock_filter","sock_fprog","sock_txtime","sockaddr","sockaddr_alg","sockaddr_can","sockaddr_in","sockaddr_in6","sockaddr_ll","sockaddr_nl","sockaddr_storage","sockaddr_un","sockaddr_vm","sockaddr_xdp","socket","socketpair","socklen_t","sp_expire","sp_flag","sp_inact","sp_lstchg","sp_max","sp_min","sp_namp","sp_pwdp","sp_warn","speed_t","splice","sprintf","spwd","srand","srand48","src_fd","src_length","src_offset","srcfd","ss","ss_family","ss_flags","ss_size","ss_sp","sscanf","ssi_addr","ssi_addr_lsb","ssi_arch","ssi_band","ssi_call_addr","ssi_code","ssi_errno","ssi_fd","ssi_int","ssi_overrun","ssi_pid","ssi_ptr","ssi_signo","ssi_status","ssi_stime","ssi_syscall","ssi_tid","ssi_trapno","ssi_uid","ssi_utime","ssize_t","st_atime","st_atime","st_atime_nsec","st_atime_nsec","st_blksize","st_blksize","st_blocks","st_blocks","st_ctime","st_ctime","st_ctime_nsec","st_ctime_nsec","st_dev","st_dev","st_gid","st_gid","st_info","st_info","st_ino","st_ino","st_mode","st_mode","st_mtime","st_mtime","st_mtime_nsec","st_mtime_nsec","st_name","st_name","st_nlink","st_nlink","st_other","st_other","st_rdev","st_rdev","st_shndx","st_shndx","st_size","st_size","st_size","st_size","st_space","st_uid","st_uid","st_value","st_value","stabil","stack","stack_pointer","stack_size","stack_t","stamp","start_code","start_level","start_stack","stat","stat","stat64","stat64","statfs","statfs","statfs64","statfs64","status","statvfs","statvfs","statvfs64","statvfs64","statx","statx","statx_timestamp","stbcnt","stpcpy","stpncpy","strcasecmp","strcasestr","strcat","strchr","strchrnul","strcmp","strcoll","strcpy","strcspn","strdup","strerror","strerror_r","strftime","strftime_l","strlen","strncasecmp","strncat","strncmp","strncpy","strndup","strnlen","strong_magnitude","strpbrk","strptime","strrchr","strsignal","strspn","strstr","strtod","strtof","strtok","strtok_r","strtol","strtoll","strtoul","strtoull","strxfrm","stx_atime","stx_attributes","stx_attributes_mask","stx_blksize","stx_blocks","stx_btime","stx_ctime","stx_dev_major","stx_dev_minor","stx_dio_mem_align","stx_dio_offset_align","stx_gid","stx_ino","stx_mask","stx_mnt_id","stx_mode","stx_mtime","stx_nlink","stx_rdev_major","stx_rdev_minor","stx_size","stx_uid","sun_family","sun_path","suseconds_t","sval","svm_cid","svm_family","svm_port","svm_reserved1","svm_zero","swapcontext","swapoff","swapon","swd","swd","sxdp_family","sxdp_flags","sxdp_ifindex","sxdp_queue_id","sxdp_shared_umem_fd","symlink","symlinkat","sync","sync_file_range","syncfs","syscall","sysconf","sysctl","sysinfo","sysinfo","syslog","sysname","system","tai","tai","tcdrain","tcflag_t","tcflow","tcflush","tcgetattr","tcgetpgrp","tcgetsid","tcsendbreak","tcsetattr","tcsetpgrp","tee","telldir","termios","termios2","thousands_sep","tick","time","time","time","time","time_t","timegm","timer_create","timer_delete","timer_getoverrun","timer_gettime","timer_settime","timer_t","timerfd_create","timerfd_gettime","timerfd_settime","times","timespec","timeval","timex","timezone","tls","tls12_crypto_info_aes_gcm_128","tls12_crypto_info_aes_gcm_256","tls12_crypto_info_chacha20_poly1305","tls_crypto_info","tm","tm_gmtoff","tm_hour","tm_isdst","tm_mday","tm_min","tm_mon","tm_sec","tm_wday","tm_yday","tm_year","tm_zone","tmpfile","tmpfile64","tmpnam","tms","tms_cstime","tms_cutime","tms_stime","tms_utime","tolerance","tolower","totalhigh","totalram","totalswap","toupper","tp","trigger","truncate","truncate64","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","ttyname","ttyname_r","tv_nsec","tv_nsec","tv_sec","tv_sec","tv_sec","tv_sec","tv_usec","tv_usec","tx","tx","tx_id","tx_invalid_descs","tx_invalid_descs","tx_ring_empty_descs","tx_type","type_","type_","type_","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","u","u","u64","u_ar0","u_comm","u_debugreg","u_dsize","u_fpstate","u_fpvalid","u_ssize","u_tsize","uc_flags","uc_link","uc_mcontext","uc_sigmask","uc_stack","ucontext_t","ucred","uid","uid","uid_t","uinput_abs_setup","uinput_ff_erase","uinput_ff_upload","uinput_setup","uinput_user_dev","uint16_t","uint32_t","uint64_t","uint8_t","uintmax_t","uintptr_t","umask","umount","umount2","uname","ungetc","unlink","unlinkat","unlockpt","unsetenv","unshare","uordblks","uordblks","updated","uptime","useconds_t","uselocale","user","user_fpregs_struct","user_regs_struct","usleep","usmblks","usmblks","ut_addr_v6","ut_exit","ut_host","ut_id","ut_line","ut_pid","ut_session","ut_tv","ut_type","ut_user","utimbuf","utime","utimensat","utimes","utmpname","utmpx","utmpxname","utsname","val","val","value","value","vendor","vers","version","version","version","version","vfork","vhangup","vmsplice","wait","wait4","waitid","waitpid","waveform","wchar_t","wcslen","wcstombs","wd","weak_magnitude","winsize","wmemchr","write","writev","ws_col","ws_row","ws_xpixel","ws_ypixel","xdp_desc","xdp_mmap_offsets","xdp_mmap_offsets_v1","xdp_options","xdp_ring_offset","xdp_ring_offset_v1","xdp_statistics","xdp_statistics_v1","xdp_umem_reg","xdp_umem_reg_v1","xmm_space"],"q":[[0,"libc"],[9188,"libc::unix::linux_like::linux"],[9189,"libc::unix::linux_like::linux::gnu"],[9190,"libc::unix"],[9191,"libc::unix::linux_like"],[9192,"libc::unix::linux_like::linux::gnu::b64"],[9193,"libc::unix::linux_like::linux::gnu::b64::x86_64"],[9194,"libc::unix::linux_like::linux::gnu::b64::x86_64::not_x32"],[9195,"libc::unix::linux_like::linux::gnu::b64::x86_64::align"],[9196,"libc::unix::linux_like::linux::gnu::align"],[9197,"libc::unix::linux_like::linux::arch::generic"],[9198,"libc::unix::linux_like::linux::non_exhaustive"],[9199,"libc::unix::align"],[9200,"core::ffi"],[9201,"core::fmt"],[9202,"core::result"],[9203,"core::any"],[9204,"libc::fixed_width_ints"]],"i":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,169,169,169,0,214,0,0,0,0,0,214,156,0,0,0,0,0,0,168,168,168,168,168,168,168,168,168,168,168,0,194,0,0,0,210,210,0,0,142,142,88,142,142,0,0,0,0,21,0,110,112,184,185,189,112,0,0,0,235,0,43,43,43,43,43,43,43,43,157,190,0,190,0,157,190,190,0,190,157,190,157,190,157,190,0,157,190,190,0,190,157,0,0,0,0,54,54,54,54,54,114,178,162,163,114,175,177,52,52,53,52,53,52,53,52,53,0,0,0,0,0,0,0,0,0,0,79,79,132,0,123,0,0,0,0,247,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,248,249,250,37,38,39,40,19,41,42,43,44,15,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,251,61,62,63,64,65,66,67,68,12,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,238,100,101,102,103,104,105,106,107,108,18,109,110,111,112,4,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,7,5,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,247,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,248,249,250,37,38,39,40,19,41,42,43,44,15,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,251,61,62,63,64,65,66,67,68,12,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,238,100,101,102,103,104,105,106,107,108,18,109,110,111,112,4,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,7,5,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,0,0,194,73,78,161,223,161,223,0,0,0,161,223,0,161,223,161,223,161,223,0,0,161,223,161,223,0,0,0,0,0,0,0,0,168,0,154,233,0,154,0,0,111,233,234,154,111,0,0,0,0,82,0,0,0,0,0,0,214,221,171,172,171,171,172,171,172,0,221,0,0,0,184,185,134,0,0,0,0,0,0,0,0,0,152,0,0,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,19,41,42,43,44,15,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,12,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,18,109,110,111,112,4,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,7,5,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,0,0,0,0,0,102,5,5,5,0,72,88,4,76,76,0,168,180,182,105,0,0,181,183,0,0,211,0,0,214,48,83,83,210,217,139,150,139,150,139,150,139,150,139,150,0,116,233,234,235,82,48,77,180,182,122,104,0,0,85,0,0,0,0,0,0,0,0,0,0,47,47,47,47,0,0,0,89,89,89,89,89,89,89,89,0,123,59,64,64,64,64,64,64,64,64,64,0,0,211,0,0,0,0,90,91,90,91,158,90,91,90,91,90,91,90,91,90,91,90,91,90,91,90,91,90,91,90,91,158,90,91,90,91,0,18,18,18,18,18,18,18,86,87,211,209,81,0,0,0,0,0,0,191,80,81,83,0,0,0,0,0,0,0,168,117,120,211,168,169,0,228,0,0,0,0,29,56,0,0,0,0,0,0,0,0,0,191,221,0,208,198,205,206,219,198,205,206,219,198,205,206,219,198,205,206,219,206,219,198,205,206,219,198,205,206,219,206,219,205,198,205,206,219,198,205,206,219,198,205,206,219,205,198,205,0,79,79,0,0,0,0,0,0,0,0,0,0,0,0,0,29,106,228,0,0,0,0,0,0,0,0,0,0,141,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,125,75,116,117,118,149,152,174,180,184,188,216,221,234,235,236,74,0,0,0,0,0,238,210,217,0,0,162,163,0,0,0,0,0,213,0,0,0,181,183,48,0,0,0,0,194,0,0,194,194,0,0,0,168,247,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,248,249,250,37,38,39,40,19,41,42,43,44,15,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,251,61,62,63,64,65,66,67,68,12,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,238,100,101,102,103,104,105,106,107,108,18,109,110,111,112,4,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,7,5,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,211,211,0,0,0,0,0,0,0,0,0,0,162,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,217,0,0,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,214,0,61,160,61,160,61,160,61,160,0,0,0,0,0,0,0,0,0,0,0,20,20,20,20,0,0,213,0,164,48,211,211,27,27,27,27,27,104,125,0,162,163,162,163,184,185,0,0,0,212,0,0,0,0,85,116,117,118,141,142,0,0,0,69,0,69,0,0,0,50,50,50,50,50,50,50,0,148,148,0,147,147,124,124,124,146,146,0,145,145,145,145,145,145,145,145,145,145,145,145,145,39,39,38,40,38,39,40,40,0,0,0,0,0,0,0,0,75,135,136,137,0,0,0,0,0,0,0,0,0,0,0,0,0,114,178,0,0,0,0,48,48,48,48,48,48,48,48,78,0,247,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,248,249,250,37,38,39,40,19,41,42,43,44,15,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,251,61,62,63,64,65,66,67,68,12,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,238,100,101,102,103,104,105,106,107,108,18,109,110,111,112,4,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,7,5,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,0,0,0,0,0,28,28,0,104,0,0,0,0,103,103,49,49,49,0,26,26,123,176,0,0,0,0,0,0,0,0,0,0,0,0,0,33,66,33,66,0,0,135,136,137,143,143,153,0,4,168,168,0,4,4,162,163,135,136,137,0,75,0,0,199,200,31,31,199,200,199,200,199,200,199,200,0,0,0,0,82,82,75,105,113,184,185,189,234,235,77,80,0,0,0,0,0,0,0,0,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,0,212,83,0,0,0,0,0,0,0,0,0,0,0,0,105,228,0,168,169,74,0,123,123,194,0,0,0,0,0,0,0,0,0,228,0,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,99,99,99,99,99,0,214,236,0,168,21,48,48,48,0,0,0,0,144,144,0,144,144,0,0,0,0,0,0,0,0,68,68,68,68,0,0,120,7,7,195,7,55,7,7,55,195,195,7,7,195,195,195,195,195,0,0,0,0,0,70,70,70,70,70,0,0,70,0,70,70,0,0,0,0,0,210,217,210,217,48,48,48,110,112,125,141,142,112,0,0,48,118,118,0,0,0,138,138,0,0,0,0,0,138,0,121,121,0,0,119,119,119,119,119,0,0,165,165,165,165,166,166,166,166,166,166,59,114,174,175,177,0,0,0,0,130,130,130,130,130,174,0,0,83,168,86,178,0,0,0,0,0,0,0,0,0,0,0,189,162,163,211,36,94,95,48,94,95,94,95,94,95,36,94,95,94,95,36,48,48,94,95,94,95,0,178,194,216,221,0,0,0,0,83,0,0,110,112,112,0,83,98,116,228,0,221,0,0,0,0,0,123,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,131,131,0,0,0,0,0,0,0,168,0,235,0,0,0,0,0,194,180,182,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,62,62,62,62,62,62,0,0,0,0,0,0,0,0,0,211,211,211,211,211,211,211,211,0,0,211,211,211,129,129,129,129,129,129,129,129,211,211,210,217,211,0,0,0,0,0,0,0,0,0,0,0,0,0,135,136,137,0,0,0,0,0,0,0,0,0,0,0,212,59,0,0,0,0,0,0,85,104,86,87,0,102,228,74,236,106,177,86,87,29,0,0,82,82,210,211,217,0,24,133,24,133,0,0,0,108,108,0,216,216,211,211,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,0,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,0,181,183,186,187,186,149,109,186,187,186,237,37,35,35,35,35,19,19,0,197,197,197,197,140,140,140,140,140,135,136,137,0,75,0,0,151,151,0,0,0,0,0,0,151,0,151,151,46,151,0,151,0,0,0,0,0,0,0,0,0,0,0,0,235,191,0,115,0,115,0,0,115,0,0,0,0,0,196,0,71,0,0,196,71,71,0,196,196,0,0,0,0,0,0,173,0,0,0,0,0,173,173,173,173,173,0,173,173,173,173,0,0,0,0,0,0,0,221,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,97,96,97,96,97,96,97,96,97,96,97,96,97,96,97,96,97,96,97,194,168,215,215,215,215,215,215,0,215,215,0,0,0,0,0,0,0,0,201,201,201,201,201,201,201,201,201,201,0,0,0,0,0,0,60,60,60,60,0,0,0,0,0,0,212,0,0,216,208,0,0,0,0,0,0,0,0,42,42,42,42,42,41,41,41,41,127,127,127,127,127,127,127,127,127,126,126,126,126,32,151,0,0,44,44,44,44,44,44,44,162,163,128,128,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,63,63,63,63,63,63,63,0,0,0,0,0,0,122,122,122,118,211,58,202,202,202,0,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,0,203,204,203,204,203,204,203,204,203,204,203,204,203,204,203,204,92,93,203,204,203,204,203,204,203,204,92,93,203,204,92,93,203,204,92,93,92,93,203,204,217,203,204,92,93,168,221,178,221,0,104,212,81,212,0,0,0,0,0,0,0,0,168,0,0,0,0,0,0,0,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,57,57,0,176,107,107,107,107,107,0,0,0,210,217,179,179,179,179,179,0,0,0,0,0,0,0,0,0,0,0,59,0,168,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,168,0,72,168,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,0,0,0,0,0,45,45,45,45,45,45,45,45,45,45,45,0,0,0,0,34,34,34,34,168,0,194,194,194,0,153,85,0,0,247,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,248,249,250,37,38,39,40,19,41,42,43,44,15,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,251,61,62,63,64,65,66,67,68,12,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,238,100,101,102,103,104,105,106,107,108,18,109,110,111,112,4,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,7,5,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,247,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,248,249,250,37,38,39,40,19,41,42,43,44,15,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,251,61,62,63,64,65,66,67,68,12,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,238,100,101,102,103,104,105,106,107,108,18,109,110,111,112,4,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,7,5,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,0,0,23,156,22,23,156,159,22,159,181,183,109,186,187,186,149,72,76,85,247,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,248,249,250,37,38,39,40,19,41,42,43,44,15,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,251,61,62,63,64,65,66,67,68,12,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,238,100,101,102,103,104,105,106,107,108,18,109,110,111,112,4,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,7,5,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,85,178,56,212,212,212,212,212,212,212,212,218,218,218,218,218,0,0,98,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,163,104,194,0,0,0,0,0,0,162,163,192,192,192,192,192,192,192,192,192,192,0,0,0,0,0,0,0,0,117,125,72,74,73,228,59,73,102,134,0,0,0,0,0,0,0,83,0,0,0,105,84,0,0,0,0,30,30,30,30,0,0,0,0,0,0,0,0,0,0,217],"f":"``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{{bdff}h}``````````{dd}````````0`{{bd}h}``````````````````````````````````````````````````````````````````````````````````````````````````````````````````{jl}{nj}{A`A`}{{nj}j}1```{AbAd}{{AfAh}Aj}{AhAb}{{AfAh}Ab}{{AhAh}Al}{{AfAh}Al}4`{AhAj}`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{{AbAn}Aj}{{AbAn}Al}1`{AnAj}`````````````````````````````````````{{AbAbAbAb}Ab}````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{B`B`}``0````````0```````````````````````````````````````````````````0```````0```````````0```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{{BbBbBb}Bb}`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{AbAb}`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{{AbAb}Ab}```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{BbBb}`````{BbAl}``````````5```````````````````````````````````````````````````````````````````````````````````````````````````33{AbAl}0```````{{AbAb}Aj}1```````````````````````````````````````````````````````````````````````````````````````{{}Ab}0`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{BdBf}```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````3`7`3333````77`6`7````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{ce{}{}}00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000````````````````````````````````````````````````````````````````````````````````````````{BhBh}{BjBj}{BlBl}{BnBn}{C`C`}{CbCb}{CdCd}{CfCf}{ChCh}{CjCj}{ClCl}{CnCn}{D`D`}{DbDb}{DdDd}{DfDf}{DhDh}{DjDj}{DlDl}{DnDn}{E`E`}{BfBf}{EbEb}{EdEd}{EfEf}{EhEh}{AnAn}{EjEj}{ElEl}{EnEn}{F`F`}{FbFb}{FdFd}{FfFf}{FhFh}{FjFj}{FlFl}{FnFn}{G`G`}{GbGb}{GdGd}{GfGf}{GhGh}{GjGj}{GlGl}{GnGn}{H`H`}{HbHb}{HdHd}{HfHf}{HhHh}{AhAh}{HjHj}{HlHl}{HnHn}{I`I`}{IbIb}{IdId}{IfIf}{IhIh}{IjIj}{IlIl}{InIn}{J`J`}{JbJb}{JdJd}{JfJf}{JhJh}{JjJj}{JlJl}{JnJn}{K`K`}{KbKb}{KdKd}{KfKf}{KhKh}{KjKj}{KlKl}{KnKn}{L`L`}{LbLb}{LdLd}{LfLf}{LhLh}{LjLj}{LlLl}{LnLn}{M`M`}{MbMb}{MdMd}{MfMf}{MhMh}{BdBd}{MjMj}{MlMl}{MnMn}{N`N`}{hh}{NbNb}{NdNd}{NfNf}{NhNh}{NjNj}{NlNl}{NnNn}{O`O`}{ObOb}{OdOd}{OfOf}{OhOh}{OjOj}{OlOl}{OnOn}{A@`A@`}{A@bA@b}{A@dA@d}{A@fA@f}{A@hA@h}{A@jA@j}{A@lA@l}{A@nA@n}{AA`AA`}{AAbAAb}{AAdAAd}{AAfAAf}{AAhAAh}{AAjAAj}{AAlAAl}{AAnAAn}{AB`AB`}{ABbABb}{ABdABd}{ABfABf}{ABhABh}{ABjABj}{ABlABl}{ABnABn}{AC`AC`}{ACbACb}{ACdACd}{ACfACf}{AChACh}{ACjACj}{AClACl}{ACnACn}{AD`AD`}{nn}{jj}{ADbADb}{ADdADd}{ADfADf}{ADhADh}{ADjADj}{ADlADl}{ADnADn}{AE`AE`}{AEbAEb}{AEdAEd}{AEfAEf}{AEhAEh}{AEjAEj}{AElAEl}{AEnAEn}{AF`AF`}{AFbAFb}{AFdAFd}{AFfAFf}{AFhAFh}{AFjAFj}{AFlAFl}{AFnAFn}{AG`AG`}{AGbAGb}{AGdAGd}{AGfAGf}{AGhAGh}{AGjAGj}{AGlAGl}{AGnAGn}{AH`AH`}{AHbAHb}{AHdAHd}{AHfAHf}{AHhAHh}{AHjAHj}{AHlAHl}{AHnAHn}{AI`AI`}{AIbAIb}{AIdAId}{AIfAIf}{AIhAIh}{AIjAIj}{AIlAIl}{AInAIn}{AJ`AJ`}{AJbAJb}{AJdAJd}{AJfAJf}{AJhAJh}{AJjAJj}{AJlAJl}{AJnAJn}{AK`AK`}{AKbAKb}{AKdAKd}{AKfAKf}{AKhAKh}{AKjAKj}{AKlAKl}{AKnAKn}{AL`AL`}{ALbALb}{ALdALd}{ALfALf}{ALhALh}{ALjALj}{ALlALl}{ALnALn}{AM`AM`}{AMbAMb}{AMdAMd}{AMfAMf}{AMhAMh}{AMjAMj}``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{{AMlAMn}{{ANb{AjAN`}}}}```````````````````````````````{cc{}}00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{ce{}{}}00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{ANdA`}`{{A`A`}ANd}```````````````````````````````1`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{AIbAMl}``{AIbANf}`{AIbAb}{AIbANh}{AIbANj}1{AIbD`}```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{c{{ANb{e}}}{}{}}00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000````````````````````{cANl{}}00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000``````````````````````````````````````````````````````````````````````````````````````````````````````````````````","D":"CMj","p":[[8,"__u16",0,9188],[8,"__u32",0,9188],[8,"__u8",0,9188],[5,"sock_filter",0,9188],[5,"cmsghdr",0,9189],[8,"c_uchar",0,9190],[5,"msghdr",0,9189],[8,"c_uint",0,9190],[8,"c_int",0,9190],[8,"size_t",0,9190],[1,"usize"],[5,"cpu_set_t",0,9188],[1,"unit"],[1,"bool"],[5,"fd_set",0,9191],[1,"u8"],[1,"u32"],[5,"sock_extended_err",0,9188],[5,"sockaddr",0,9191],[5,"group",0,9190],[5,"utimbuf",0,9190],[5,"timeval",0,9190],[5,"timespec",0,9190],[5,"rlimit",0,9190],[5,"rusage",0,9190],[5,"ipv6_mreq",0,9190],[5,"hostent",0,9190],[5,"iovec",0,9190],[5,"pollfd",0,9190],[5,"winsize",0,9190],[5,"linger",0,9190],[5,"sigval",0,9190],[5,"itimerval",0,9190],[5,"tms",0,9190],[5,"servent",0,9190],[5,"protoent",0,9190],[5,"in_addr",0,9191],[5,"ip_mreq",0,9191],[5,"ip_mreqn",0,9191],[5,"ip_mreq_source",0,9191],[5,"sockaddr_in",0,9191],[5,"sockaddr_in6",0,9191],[5,"addrinfo",0,9191],[5,"sockaddr_ll",0,9191],[5,"tm",0,9191],[5,"sched_param",0,9191],[5,"Dl_info",0,9191],[5,"lconv",0,9191],[5,"in_pktinfo",0,9191],[5,"ifaddrs",0,9191],[5,"in6_rtmsg",0,9191],[5,"arpreq",0,9191],[5,"arpreq_old",0,9191],[5,"arphdr",0,9191],[5,"mmsghdr",0,9191],[5,"epoll_event",0,9191],[5,"sockaddr_un",0,9191],[5,"sockaddr_storage",0,9191],[5,"utsname",0,9191],[5,"sigevent",0,9191],[5,"glob_t",0,9188],[5,"passwd",0,9188],[5,"spwd",0,9188],[5,"dqblk",0,9188],[5,"signalfd_siginfo",0,9188],[5,"itimerspec",0,9188],[5,"fsid_t",0,9188],[5,"packet_mreq",0,9188],[5,"if_nameindex",0,9188],[5,"msginfo",0,9188],[5,"sembuf",0,9188],[5,"input_event",0,9188],[5,"input_id",0,9188],[5,"input_absinfo",0,9188],[5,"input_keymap_entry",0,9188],[5,"input_mask",0,9188],[5,"ff_replay",0,9188],[5,"ff_trigger",0,9188],[5,"ff_envelope",0,9188],[5,"ff_constant_effect",0,9188],[5,"ff_ramp_effect",0,9188],[5,"ff_condition_effect",0,9188],[5,"ff_periodic_effect",0,9188],[5,"ff_rumble_effect",0,9188],[5,"ff_effect",0,9188],[5,"uinput_ff_upload",0,9188],[5,"uinput_ff_erase",0,9188],[5,"uinput_abs_setup",0,9188],[5,"dl_phdr_info",0,9188],[5,"Elf32_Ehdr",0,9188],[5,"Elf64_Ehdr",0,9188],[5,"Elf32_Sym",0,9188],[5,"Elf64_Sym",0,9188],[5,"Elf32_Phdr",0,9188],[5,"Elf64_Phdr",0,9188],[5,"Elf32_Shdr",0,9188],[5,"Elf64_Shdr",0,9188],[5,"ucred",0,9188],[5,"mntent",0,9188],[5,"posix_spawn_file_actions_t",0,9188],[5,"posix_spawnattr_t",0,9188],[5,"genlmsghdr",0,9188],[5,"in6_pktinfo",0,9188],[5,"arpd_request",0,9188],[5,"inotify_event",0,9188],[5,"fanotify_response",0,9188],[5,"sockaddr_vm",0,9188],[5,"regmatch_t",0,9188],[5,"__c_anonymous_sockaddr_can_tp",0,9188],[5,"__c_anonymous_sockaddr_can_j1939",0,9188],[5,"can_filter",0,9188],[5,"j1939_filter",0,9188],[5,"sock_fprog",0,9188],[5,"seccomp_data",0,9188],[5,"seccomp_notif_sizes",0,9188],[5,"seccomp_notif",0,9188],[5,"seccomp_notif_resp",0,9188],[5,"seccomp_notif_addfd",0,9188],[5,"nlmsghdr",0,9188],[5,"nlmsgerr",0,9188],[5,"nlattr",0,9188],[5,"file_clone_range",0,9188],[5,"__c_anonymous_ifru_map",0,9188],[5,"in6_ifreq",0,9188],[5,"option",0,9188],[5,"sctp_initmsg",0,9188],[5,"sctp_sndrcvinfo",0,9188],[5,"sctp_sndinfo",0,9188],[5,"sctp_rcvinfo",0,9188],[5,"sctp_nxtinfo",0,9188],[5,"sctp_prinfo",0,9188],[5,"sctp_authinfo",0,9188],[5,"rlimit64",0,9188],[5,"tls_crypto_info",0,9188],[5,"tls12_crypto_info_aes_gcm_128",0,9188],[5,"tls12_crypto_info_aes_gcm_256",0,9188],[5,"tls12_crypto_info_chacha20_poly1305",0,9188],[5,"sockaddr_nl",0,9188],[5,"dirent",0,9188],[5,"sockaddr_alg",0,9188],[5,"uinput_setup",0,9188],[5,"uinput_user_dev",0,9188],[5,"af_alg_iv",0,9188],[5,"mq_attr",0,9188],[20,"__c_anonymous_ifr_ifru",0,9188],[5,"ifreq",0,9188],[20,"__c_anonymous_ifc_ifcu",0,9188],[5,"ifconf",0,9188],[5,"hwtstamp_config",0,9188],[5,"dirent64",0,9188],[5,"sched_attr",0,9188],[5,"sock_txtime",0,9188],[20,"__c_anonymous_sockaddr_can_can_addr",0,9188],[5,"sockaddr_can",0,9188],[5,"statx",0,9189],[5,"statx_timestamp",0,9189],[5,"aiocb",0,9189],[5,"__exit_status",0,9189],[5,"__timeval",0,9189],[5,"glob64_t",0,9189],[5,"termios",0,9189],[5,"mallinfo",0,9189],[5,"mallinfo2",0,9189],[5,"nl_pktinfo",0,9189],[5,"nl_mmap_req",0,9189],[5,"nl_mmap_hdr",0,9189],[5,"rtentry",0,9189],[5,"timex",0,9189],[5,"ntptimeval",0,9189],[5,"regex_t",0,9189],[5,"Elf64_Chdr",0,9189],[5,"Elf32_Chdr",0,9189],[5,"seminfo",0,9189],[5,"ptrace_peeksiginfo_args",0,9189],[5,"__c_anonymous_ptrace_syscall_info_entry",0,9189],[5,"__c_anonymous_ptrace_syscall_info_exit",0,9189],[5,"__c_anonymous_ptrace_syscall_info_seccomp",0,9189],[5,"ptrace_syscall_info",0,9189],[5,"sockaddr_xdp",0,9189],[5,"xdp_ring_offset",0,9189],[5,"xdp_mmap_offsets",0,9189],[5,"xdp_ring_offset_v1",0,9189],[5,"xdp_mmap_offsets_v1",0,9189],[5,"xdp_umem_reg",0,9189],[5,"xdp_umem_reg_v1",0,9189],[5,"xdp_statistics",0,9189],[5,"xdp_statistics_v1",0,9189],[5,"xdp_options",0,9189],[5,"xdp_desc",0,9189],[5,"iocb",0,9189],[20,"__c_anonymous_ptrace_syscall_info_data",0,9189],[5,"utmpx",0,9189],[5,"sigset_t",0,9192],[5,"sysinfo",0,9192],[5,"msqid_ds",0,9192],[5,"semid_ds",0,9192],[5,"sigaction",0,9193],[5,"statfs",0,9193],[5,"flock",0,9193],[5,"flock64",0,9193],[5,"siginfo_t",0,9193],[5,"stack_t",0,9193],[5,"stat",0,9193],[5,"stat64",0,9193],[5,"statfs64",0,9193],[5,"statvfs64",0,9193],[5,"pthread_attr_t",0,9193],[5,"_libc_fpxreg",0,9193],[5,"_libc_xmmreg",0,9193],[5,"_libc_fpstate",0,9193],[5,"user_regs_struct",0,9193],[5,"user",0,9193],[5,"mcontext_t",0,9193],[5,"ipc_perm",0,9193],[5,"shmid_ds",0,9193],[5,"ptrace_rseq_configuration",0,9193],[5,"user_fpregs_struct",0,9193],[5,"ucontext_t",0,9193],[5,"statvfs",0,9194],[5,"max_align_t",0,9195],[5,"clone_args",0,9195],[5,"sem_t",0,9196],[5,"termios2",0,9197],[5,"pthread_mutexattr_t",0,9188],[5,"pthread_rwlockattr_t",0,9188],[5,"pthread_condattr_t",0,9188],[5,"pthread_barrierattr_t",0,9188],[5,"fanotify_event_metadata",0,9188],[5,"pthread_cond_t",0,9188],[5,"pthread_mutex_t",0,9188],[5,"pthread_rwlock_t",0,9188],[5,"pthread_barrier_t",0,9188],[5,"can_frame",0,9188],[5,"canfd_frame",0,9188],[5,"canxl_frame",0,9188],[5,"open_how",0,9198],[5,"in6_addr",0,9199],[6,"c_void",0,9200],[5,"Formatter",9201],[5,"Error",9201],[6,"Result",9202],[8,"dev_t",0,9188],[8,"pid_t",0,9190],[8,"c_long",0,9194],[8,"uid_t",0,9190],[5,"TypeId",9203],[6,"DIR",0],[6,"FILE",0],[6,"fpos_t",0],[6,"timezone",0],[6,"fpos64_t",0]],"r":[[0,9188],[1,9188],[2,9188],[3,9188],[4,9188],[5,9188],[6,9188],[7,9188],[8,9188],[9,9188],[10,9188],[11,9188],[12,9188],[13,9188],[14,9188],[15,9188],[16,9188],[17,9188],[18,9188],[19,9188],[20,9188],[21,9189],[22,9191],[23,9191],[24,9191],[25,9191],[26,9191],[27,9189],[28,9189],[29,9189],[30,9189],[31,9189],[32,9189],[33,9189],[34,9189],[35,9189],[36,9189],[37,9189],[38,9189],[39,9189],[40,9191],[41,9191],[42,9191],[43,9191],[44,9191],[45,9191],[46,9191],[47,9191],[48,9191],[49,9191],[50,9191],[51,9191],[52,9191],[53,9191],[54,9189],[55,9191],[56,9191],[57,9191],[58,9191],[59,9191],[60,9191],[61,9191],[62,9191],[63,9191],[64,9191],[65,9189],[66,9191],[67,9191],[68,9191],[69,9189],[70,9191],[71,9191],[72,9191],[73,9191],[74,9191],[75,9191],[76,9191],[77,9191],[78,9191],[79,9191],[80,9191],[81,9191],[82,9189],[83,9191],[84,9191],[85,9189],[86,9188],[87,9188],[88,9188],[89,9188],[90,9188],[91,9188],[92,9188],[93,9188],[94,9188],[95,9188],[96,9188],[97,9188],[98,9188],[99,9188],[100,9188],[101,9188],[102,9188],[103,9188],[104,9188],[105,9188],[106,9188],[107,9188],[108,9188],[109,9188],[110,9191],[111,9191],[112,9191],[113,9191],[114,9191],[115,9191],[116,9191],[117,9191],[118,9191],[119,9191],[120,9191],[121,9191],[122,9191],[123,9191],[124,9191],[125,9191],[126,9191],[127,9191],[128,9191],[129,9191],[130,9191],[131,9191],[132,9191],[133,9191],[134,9191],[135,9191],[136,9191],[137,9191],[138,9191],[139,9191],[140,9191],[141,9191],[142,9191],[143,9191],[144,9191],[145,9191],[146,9191],[147,9191],[148,9191],[149,9191],[150,9191],[151,9191],[152,9191],[153,9191],[154,9191],[155,9191],[156,9191],[157,9191],[158,9191],[159,9191],[160,9191],[161,9191],[162,9191],[163,9191],[164,9191],[165,9191],[166,9191],[167,9191],[168,9191],[169,9191],[170,9191],[171,9190],[172,9190],[173,9191],[174,9191],[175,9190],[176,9191],[177,9188],[178,9191],[179,9190],[180,9190],[181,9190],[182,9188],[183,9188],[184,9188],[185,9188],[186,9188],[187,9191],[188,9188],[189,9188],[190,9188],[191,9188],[192,9191],[193,9188],[194,9188],[195,9188],[196,9188],[197,9188],[198,9188],[199,9188],[200,9191],[201,9188],[202,9188],[203,9188],[204,9188],[205,9188],[206,9188],[207,9188],[208,9191],[209,9191],[210,9188],[211,9189],[212,9189],[213,9189],[214,9189],[215,9191],[216,9191],[217,9188],[218,9188],[219,9191],[220,9193],[221,9193],[222,9193],[223,9193],[224,9193],[225,9193],[226,9193],[227,9193],[228,9193],[229,9193],[230,9193],[231,9193],[232,9193],[233,9193],[234,9193],[235,9193],[236,9193],[237,9193],[238,9193],[239,9193],[240,9193],[241,9193],[242,9193],[243,9193],[244,9193],[245,9193],[246,9193],[247,9193],[248,9193],[249,9193],[250,9193],[251,9189],[252,9197],[253,9197],[254,9197],[255,9197],[256,9189],[257,9197],[258,9188],[259,9188],[260,9188],[261,9188],[262,9188],[263,9188],[264,9191],[265,9188],[266,9188],[267,9188],[268,9188],[269,9188],[270,9188],[271,9188],[272,9188],[273,9188],[274,9188],[275,9188],[276,9188],[277,9188],[278,9188],[279,9188],[280,9188],[281,9188],[282,9188],[283,9188],[284,9188],[285,9188],[286,9188],[287,9188],[288,9188],[289,9188],[290,9188],[291,9188],[292,9188],[293,9188],[294,9188],[295,9188],[296,9188],[297,9188],[298,9188],[299,9188],[300,9188],[301,9188],[302,9191],[303,9191],[304,9193],[305,9193],[306,9191],[307,9189],[308,9191],[309,9191],[310,9191],[311,9191],[312,9191],[313,9188],[314,9188],[315,9188],[316,9188],[317,9188],[318,9188],[319,9188],[320,9188],[321,9188],[322,9188],[323,9188],[324,9188],[325,9188],[326,9188],[327,9188],[328,9188],[329,9188],[330,9188],[331,9188],[332,9188],[333,9188],[334,9188],[335,9188],[336,9188],[337,9188],[338,9188],[339,9188],[340,9188],[341,9188],[342,9188],[343,9188],[344,9188],[345,9188],[346,9188],[347,9188],[348,9188],[349,9188],[350,9188],[351,9188],[352,9188],[353,9188],[354,9188],[355,9188],[356,9188],[357,9188],[358,9188],[359,9193],[360,9193],[361,9191],[362,9191],[363,9193],[364,9191],[365,9191],[366,9191],[367,9191],[368,9191],[369,9191],[370,9193],[371,9191],[372,9191],[373,9191],[374,9191],[375,9191],[376,9191],[377,9191],[378,9191],[379,9191],[380,9191],[381,9191],[382,9191],[383,9191],[384,9189],[385,9191],[386,9191],[387,9191],[388,9189],[389,9191],[390,9191],[391,9191],[392,9191],[393,9191],[394,9191],[395,9189],[396,9191],[397,9191],[398,9191],[399,9191],[400,9188],[401,9191],[402,9191],[403,9191],[404,9191],[405,9191],[406,9191],[407,9191],[408,9191],[409,9188],[410,9188],[411,9191],[412,9191],[413,9191],[414,9188],[415,9191],[416,9188],[417,9191],[418,9188],[419,9188],[420,9188],[421,9188],[422,9188],[423,9188],[424,9188],[425,9188],[426,9189],[427,9188],[428,9191],[429,9193],[430,9193],[431,9193],[432,9191],[433,9193],[434,9193],[435,9188],[436,9191],[437,9193],[438,9191],[439,9193],[440,9193],[441,9193],[442,9188],[443,9193],[444,9193],[445,9188],[446,9188],[447,9188],[448,9188],[449,9188],[450,9188],[451,9188],[452,9188],[453,9188],[454,9188],[455,9188],[456,9188],[457,9188],[458,9188],[459,9188],[460,9188],[461,9188],[462,9188],[463,9188],[464,9188],[465,9188],[466,9188],[467,9188],[468,9188],[469,9188],[470,9188],[471,9188],[472,9188],[473,9188],[474,9188],[475,9188],[476,9188],[477,9188],[478,9188],[479,9188],[480,9188],[481,9188],[482,9188],[483,9188],[484,9188],[485,9188],[486,9188],[487,9188],[488,9188],[489,9188],[490,9188],[491,9188],[492,9188],[493,9188],[494,9188],[495,9188],[496,9188],[497,9188],[498,9188],[499,9188],[500,9188],[501,9188],[502,9188],[503,9189],[504,9191],[505,9191],[506,9190],[507,9193],[508,9190],[509,9190],[510,9190],[511,9190],[512,9190],[513,9190],[514,9190],[515,9190],[516,9188],[517,9188],[518,9191],[519,9188],[520,9188],[521,9193],[522,9193],[523,9193],[524,9193],[525,9188],[526,9188],[527,9188],[528,9188],[529,9188],[530,9188],[531,9188],[532,9188],[533,9188],[534,9188],[535,9188],[536,9188],[537,9193],[538,9193],[539,9188],[540,9193],[541,9193],[542,9193],[543,9193],[544,9193],[545,9193],[546,9188],[547,9193],[548,9188],[549,9191],[550,9193],[551,9193],[552,9193],[553,9193],[554,9193],[555,9193],[556,9193],[557,9193],[558,9193],[559,9193],[560,9193],[561,9191],[562,9193],[563,9193],[564,9193],[565,9188],[566,9193],[567,9193],[568,9188],[569,9188],[570,9188],[571,9193],[572,9193],[573,9188],[574,9193],[575,9191],[576,9193],[577,9193],[578,9193],[579,9193],[580,9193],[581,9193],[582,9188],[583,9188],[584,9188],[585,9193],[586,9188],[587,9193],[588,9188],[589,9188],[590,9188],[591,9188],[592,9188],[593,9188],[594,9188],[595,9188],[596,9188],[597,9188],[598,9188],[599,9193],[600,9193],[601,9193],[602,9193],[603,9193],[604,9193],[605,9193],[606,9188],[607,9188],[608,9188],[609,9188],[610,9188],[611,9188],[612,9188],[613,9188],[614,9188],[615,9188],[616,9188],[617,9188],[618,9188],[619,9188],[620,9189],[621,9188],[622,9188],[623,9188],[624,9188],[625,9188],[626,9188],[627,9188],[628,9188],[629,9188],[630,9188],[631,9188],[632,9188],[633,9188],[634,9193],[635,9193],[636,9193],[637,9193],[638,9193],[639,9193],[640,9193],[641,9193],[642,9188],[643,9188],[644,9189],[645,9193],[646,9193],[647,9188],[648,9188],[649,9188],[650,9188],[651,9188],[652,9188],[653,9188],[654,9188],[655,9188],[656,9188],[657,9188],[658,9188],[659,9188],[660,9188],[661,9188],[662,9188],[663,9188],[664,9188],[665,9188],[666,9188],[667,9188],[668,9188],[669,9188],[670,9188],[671,9188],[672,9188],[673,9188],[674,9188],[675,9188],[676,9188],[677,9188],[678,9188],[679,9188],[680,9188],[681,9188],[682,9188],[683,9188],[684,9188],[685,9188],[686,9188],[687,9188],[688,9188],[689,9188],[690,9188],[691,9188],[692,9188],[693,9188],[694,9188],[695,9188],[696,9188],[697,9188],[698,9188],[699,9188],[700,9188],[701,9188],[702,9188],[703,9188],[704,9188],[705,9188],[706,9188],[707,9188],[708,9188],[709,9188],[710,9188],[711,9188],[712,9188],[713,9188],[714,9188],[715,9188],[716,9188],[717,9188],[718,9188],[719,9188],[720,9188],[721,9188],[722,9188],[723,9188],[724,9188],[725,9193],[726,9193],[727,9193],[728,9193],[729,9193],[730,9188],[731,9193],[732,9188],[733,9193],[734,9193],[735,9193],[736,9188],[737,9188],[738,9188],[739,9193],[740,9193],[741,9193],[742,9193],[743,9188],[744,9193],[745,9193],[746,9193],[747,9193],[748,9188],[749,9193],[750,9193],[751,9193],[752,9188],[753,9193],[754,9188],[755,9193],[756,9193],[757,9193],[758,9193],[759,9189],[760,9188],[761,9193],[762,9188],[763,9191],[764,9193],[765,9193],[766,9193],[767,9188],[768,9193],[769,9188],[770,9191],[771,9191],[772,9191],[773,9191],[774,9191],[775,9191],[776,9191],[777,9191],[778,9191],[779,9191],[780,9191],[781,9191],[782,9191],[783,9191],[784,9191],[785,9193],[786,9191],[787,9191],[788,9191],[789,9193],[790,9193],[791,9193],[792,9188],[793,9188],[794,9188],[795,9188],[796,9188],[797,9193],[798,9193],[799,9193],[800,9193],[801,9193],[802,9188],[803,9193],[804,9193],[805,9193],[806,9188],[807,9188],[808,9193],[809,9193],[810,9193],[811,9188],[812,9188],[813,9188],[814,9188],[815,9188],[816,9188],[817,9188],[818,9188],[819,9188],[820,9188],[821,9188],[822,9188],[823,9188],[824,9188],[825,9188],[826,9188],[827,9188],[828,9188],[829,9188],[830,9188],[831,9188],[832,9188],[833,9188],[834,9188],[835,9188],[836,9188],[837,9188],[838,9188],[839,9188],[840,9188],[841,9188],[842,9188],[843,9188],[844,9188],[845,9188],[846,9188],[847,9188],[848,9188],[849,9188],[850,9188],[851,9188],[852,9188],[853,9188],[854,9188],[855,9188],[856,9188],[857,9188],[858,9188],[859,9188],[860,9188],[861,9188],[862,9188],[863,9188],[864,9188],[865,9188],[866,9188],[867,9188],[868,9188],[869,9188],[870,9188],[871,9188],[872,9188],[873,9188],[874,9188],[875,9188],[876,9188],[877,9188],[878,9188],[879,9188],[880,9188],[881,9188],[882,9188],[883,9188],[884,9188],[885,9188],[886,9188],[887,9188],[888,9188],[889,9188],[890,9188],[891,9188],[892,9188],[893,9188],[894,9188],[895,9188],[896,9193],[897,9193],[898,9193],[899,9188],[900,9188],[901,9188],[902,9188],[903,9188],[904,9188],[905,9188],[906,9188],[907,9188],[908,9188],[909,9188],[910,9193],[911,9193],[912,9193],[913,9188],[914,9188],[915,9188],[916,9188],[917,9188],[918,9188],[919,9188],[920,9193],[921,9191],[922,9191],[923,9191],[924,9191],[925,9191],[926,9193],[927,9193],[928,9193],[929,9188],[930,9189],[931,9188],[932,9188],[933,9188],[934,9188],[935,9188],[936,9188],[937,9188],[938,9188],[939,9188],[940,9189],[941,9188],[942,9188],[943,9188],[944,9188],[945,9188],[946,9188],[947,9188],[948,9188],[949,9188],[950,9188],[951,9191],[952,9188],[953,9188],[954,9188],[955,9188],[956,9188],[957,9188],[958,9188],[959,9188],[960,9188],[961,9188],[962,9188],[963,9188],[964,9188],[965,9188],[966,9188],[967,9188],[968,9188],[969,9188],[970,9188],[971,9188],[972,9188],[973,9188],[974,9188],[975,9188],[976,9188],[977,9188],[978,9188],[979,9188],[980,9188],[981,9188],[982,9188],[983,9188],[984,9188],[985,9188],[986,9188],[987,9188],[988,9188],[989,9188],[990,9188],[991,9188],[992,9188],[993,9188],[994,9188],[995,9188],[996,9188],[997,9188],[998,9188],[999,9188],[1000,9188],[1001,9188],[1002,9188],[1003,9188],[1004,9188],[1005,9188],[1006,9188],[1007,9188],[1008,9188],[1009,9188],[1010,9188],[1011,9188],[1012,9188],[1013,9188],[1014,9188],[1015,9188],[1016,9188],[1017,9188],[1018,9188],[1019,9188],[1020,9188],[1021,9188],[1022,9188],[1023,9188],[1024,9188],[1025,9188],[1026,9188],[1027,9189],[1028,9190],[1029,9191],[1030,9191],[1031,9191],[1032,9191],[1033,9191],[1034,9191],[1035,9193],[1036,9193],[1037,9188],[1038,9188],[1039,9197],[1040,9197],[1041,9190],[1042,9189],[1043,9197],[1044,9197],[1045,9197],[1046,9197],[1047,9197],[1048,9197],[1049,9193],[1050,9189],[1051,9193],[1052,9193],[1053,9197],[1054,9197],[1055,9197],[1056,9197],[1057,9197],[1058,9197],[1059,9197],[1060,9197],[1061,9191],[1062,9191],[1063,9188],[1064,9188],[1065,9188],[1066,9188],[1067,9188],[1068,9188],[1069,9188],[1070,9188],[1071,9188],[1072,9188],[1073,9188],[1074,9188],[1075,9188],[1076,9188],[1077,9188],[1078,9188],[1079,9188],[1080,9188],[1081,9188],[1082,9188],[1083,9188],[1084,9188],[1085,9188],[1086,9188],[1087,9188],[1088,9188],[1089,9188],[1090,9188],[1091,9188],[1092,9188],[1093,9188],[1094,9191],[1095,9191],[1096,9191],[1097,9191],[1098,9191],[1099,9191],[1100,9191],[1101,9193],[1102,9193],[1103,9191],[1104,9191],[1105,9188],[1106,9191],[1107,9193],[1108,9193],[1109,9193],[1110,9191],[1111,9193],[1112,9188],[1113,9191],[1114,9191],[1115,9191],[1116,9191],[1117,9191],[1118,9191],[1119,9191],[1120,9193],[1121,9193],[1122,9193],[1123,9191],[1124,9188],[1125,9188],[1126,9188],[1127,9193],[1128,9193],[1129,9188],[1130,9188],[1131,9188],[1132,9188],[1133,9188],[1134,9189],[1135,9189],[1136,9188],[1137,9188],[1138,9188],[1139,9189],[1140,9188],[1141,9189],[1142,9188],[1143,9189],[1144,9188],[1145,9188],[1146,9188],[1147,9188],[1148,9188],[1149,9189],[1150,9188],[1151,9188],[1152,9188],[1153,9189],[1154,9189],[1155,9189],[1156,9189],[1157,9188],[1158,9188],[1159,9188],[1160,9190],[1161,9193],[1162,9193],[1163,9191],[1164,9191],[1165,9191],[1166,9189],[1167,9189],[1168,9189],[1169,9189],[1170,9189],[1171,9189],[1172,9189],[1173,9189],[1174,9189],[1175,9189],[1176,9189],[1177,9189],[1178,9189],[1179,9189],[1180,9193],[1181,9188],[1182,9188],[1183,9188],[1184,9188],[1185,9188],[1186,9188],[1187,9188],[1188,9188],[1189,9188],[1190,9188],[1191,9188],[1192,9188],[1193,9188],[1194,9188],[1195,9188],[1196,9188],[1197,9188],[1198,9188],[1199,9188],[1200,9188],[1201,9197],[1202,9193],[1203,9191],[1204,9193],[1205,9188],[1206,9188],[1207,9188],[1208,9188],[1209,9189],[1210,9188],[1211,9188],[1212,9188],[1213,9189],[1214,9189],[1215,9188],[1216,9189],[1217,9188],[1218,9188],[1219,9188],[1220,9189],[1221,9188],[1222,9188],[1223,9188],[1224,9188],[1225,9188],[1226,9188],[1227,9191],[1228,9188],[1229,9191],[1230,9191],[1231,9191],[1232,9188],[1233,9188],[1234,9191],[1235,9188],[1236,9191],[1237,9188],[1238,9191],[1239,9191],[1240,9188],[1241,9188],[1242,9188],[1243,9191],[1244,9188],[1245,9191],[1246,9188],[1247,9188],[1248,9188],[1249,9188],[1250,9191],[1251,9191],[1252,9191],[1253,9191],[1254,9191],[1255,9188],[1256,9188],[1257,9188],[1258,9191],[1259,9188],[1260,9188],[1261,9188],[1262,9188],[1263,9188],[1264,9188],[1265,9188],[1266,9188],[1267,9188],[1268,9188],[1269,9188],[1270,9188],[1271,9188],[1272,9188],[1273,9188],[1274,9188],[1275,9188],[1276,9188],[1277,9188],[1278,9188],[1279,9188],[1280,9188],[1281,9188],[1282,9188],[1283,9188],[1284,9188],[1285,9188],[1286,9188],[1287,9188],[1288,9188],[1289,9188],[1290,9188],[1291,9188],[1292,9188],[1293,9188],[1294,9188],[1295,9188],[1296,9188],[1297,9188],[1298,9188],[1299,9188],[1300,9188],[1301,9188],[1302,9188],[1303,9188],[1304,9188],[1305,9188],[1306,9188],[1307,9188],[1308,9188],[1309,9188],[1310,9188],[1311,9188],[1312,9188],[1313,9188],[1314,9188],[1315,9188],[1316,9188],[1317,9188],[1318,9188],[1319,9188],[1320,9188],[1321,9188],[1322,9188],[1323,9188],[1324,9188],[1325,9188],[1326,9188],[1327,9188],[1328,9188],[1329,9190],[1330,9188],[1331,9188],[1332,9188],[1333,9190],[1334,9188],[1335,9188],[1336,9188],[1337,9188],[1338,9188],[1339,9188],[1340,9188],[1341,9191],[1342,9191],[1343,9191],[1344,9191],[1345,9190],[1346,9190],[1347,9190],[1348,9190],[1349,9189],[1350,9191],[1351,9188],[1352,9188],[1353,9188],[1354,9191],[1355,9188],[1356,9188],[1357,9190],[1358,9190],[1359,9188],[1360,9188],[1361,9188],[1362,9188],[1363,9188],[1364,9188],[1365,9188],[1366,9188],[1367,9188],[1368,9188],[1369,9188],[1370,9188],[1371,9188],[1372,9188],[1373,9188],[1374,9188],[1375,9188],[1376,9188],[1377,9188],[1378,9188],[1379,9188],[1380,9188],[1381,9188],[1382,9188],[1383,9188],[1384,9188],[1385,9188],[1386,9188],[1387,9188],[1388,9188],[1389,9188],[1390,9188],[1391,9188],[1392,9188],[1393,9188],[1394,9188],[1395,9191],[1396,9191],[1397,9191],[1398,9191],[1399,9191],[1400,9191],[1401,9191],[1402,9191],[1403,9191],[1404,9191],[1405,9191],[1406,9191],[1407,9191],[1408,9191],[1409,9191],[1410,9191],[1411,9191],[1412,9191],[1413,9191],[1414,9191],[1415,9191],[1416,9191],[1417,9191],[1418,9191],[1419,9191],[1420,9191],[1421,9191],[1422,9191],[1423,9191],[1424,9191],[1425,9191],[1426,9191],[1427,9191],[1428,9191],[1429,9191],[1430,9191],[1431,9191],[1432,9191],[1433,9191],[1434,9191],[1435,9191],[1436,9191],[1437,9190],[1438,9190],[1439,9191],[1440,9191],[1441,9190],[1442,9191],[1443,9190],[1444,9188],[1445,9191],[1446,9191],[1447,9191],[1448,9191],[1449,9191],[1450,9191],[1451,9191],[1452,9191],[1453,9191],[1454,9191],[1455,9191],[1456,9190],[1457,9191],[1458,9190],[1459,9191],[1460,9191],[1461,9191],[1462,9191],[1463,9191],[1464,9191],[1465,9188],[1466,9191],[1467,9191],[1468,9188],[1469,9191],[1470,9191],[1471,9191],[1472,9191],[1473,9191],[1474,9188],[1475,9191],[1476,9191],[1477,9191],[1478,9191],[1479,9191],[1480,9188],[1481,9188],[1482,9191],[1483,9191],[1484,9191],[1485,9191],[1486,9191],[1487,9191],[1488,9191],[1489,9191],[1490,9191],[1491,9191],[1492,9191],[1493,9191],[1494,9191],[1495,9191],[1496,9191],[1497,9188],[1498,9188],[1499,9188],[1500,9188],[1501,9188],[1502,9188],[1503,9191],[1504,9191],[1505,9191],[1506,9191],[1507,9191],[1508,9191],[1509,9191],[1510,9191],[1511,9191],[1512,9188],[1513,9191],[1514,9191],[1515,9191],[1516,9191],[1517,9191],[1518,9191],[1519,9191],[1520,9191],[1521,9191],[1522,9191],[1523,9191],[1524,9191],[1525,9191],[1526,9191],[1527,9191],[1528,9191],[1529,9191],[1530,9191],[1531,9191],[1532,9191],[1533,9191],[1534,9191],[1535,9188],[1536,9191],[1537,9191],[1538,9191],[1539,9191],[1540,9191],[1541,9191],[1542,9191],[1543,9191],[1544,9188],[1545,9191],[1546,9191],[1547,9188],[1548,9188],[1549,9191],[1550,9191],[1551,9191],[1552,9191],[1553,9191],[1554,9191],[1555,9191],[1556,9191],[1557,9191],[1558,9191],[1559,9191],[1560,9191],[1561,9191],[1562,9191],[1563,9191],[1564,9191],[1565,9191],[1566,9191],[1567,9191],[1568,9191],[1569,9191],[1570,9191],[1571,9191],[1572,9191],[1573,9191],[1574,9191],[1575,9191],[1576,9191],[1577,9191],[1578,9191],[1579,9191],[1580,9191],[1581,9191],[1582,9191],[1583,9191],[1584,9191],[1585,9191],[1586,9191],[1587,9191],[1588,9191],[1589,9188],[1590,9191],[1591,9191],[1592,9191],[1593,9191],[1594,9191],[1595,9191],[1596,9191],[1597,9191],[1598,9191],[1599,9191],[1600,9191],[1601,9191],[1602,9193],[1603,9191],[1604,9191],[1605,9188],[1606,9188],[1607,9188],[1608,9188],[1609,9188],[1610,9188],[1611,9188],[1612,9188],[1613,9188],[1614,9188],[1615,9188],[1616,9188],[1617,9188],[1618,9188],[1619,9188],[1620,9188],[1621,9188],[1622,9188],[1623,9188],[1624,9188],[1625,9188],[1626,9188],[1627,9188],[1628,9188],[1629,9188],[1630,9188],[1631,9188],[1632,9188],[1633,9188],[1634,9188],[1635,9188],[1636,9188],[1637,9188],[1638,9188],[1639,9188],[1640,9188],[1641,9188],[1642,9188],[1643,9188],[1644,9188],[1645,9188],[1646,9188],[1647,9188],[1648,9188],[1649,9188],[1650,9188],[1651,9188],[1652,9188],[1653,9188],[1654,9188],[1655,9188],[1656,9188],[1657,9188],[1658,9188],[1659,9188],[1660,9188],[1661,9188],[1662,9188],[1663,9188],[1664,9188],[1665,9188],[1666,9188],[1667,9188],[1668,9188],[1669,9188],[1670,9188],[1671,9188],[1672,9188],[1673,9188],[1674,9188],[1675,9188],[1676,9188],[1677,9188],[1678,9188],[1679,9188],[1680,9188],[1681,9188],[1682,9188],[1683,9188],[1684,9188],[1685,9188],[1686,9188],[1687,9188],[1688,9188],[1689,9188],[1690,9188],[1691,9188],[1692,9188],[1693,9188],[1694,9188],[1695,9188],[1696,9188],[1697,9188],[1698,9188],[1699,9188],[1700,9188],[1701,9188],[1702,9188],[1703,9188],[1704,9188],[1705,9188],[1706,9188],[1707,9188],[1708,9188],[1709,9188],[1710,9188],[1711,9188],[1712,9188],[1713,9188],[1714,9188],[1715,9188],[1716,9188],[1717,9188],[1718,9188],[1719,9188],[1720,9188],[1721,9188],[1722,9188],[1723,9188],[1724,9188],[1725,9188],[1726,9188],[1727,9188],[1728,9188],[1729,9188],[1730,9188],[1731,9188],[1732,9188],[1733,9188],[1734,9188],[1735,9188],[1736,9188],[1737,9188],[1738,9188],[1739,9188],[1740,9188],[1741,9188],[1742,9188],[1743,9188],[1744,9188],[1745,9188],[1746,9188],[1747,9188],[1748,9188],[1749,9188],[1750,9188],[1751,9188],[1752,9188],[1753,9188],[1754,9188],[1755,9188],[1756,9188],[1757,9188],[1758,9188],[1759,9188],[1760,9188],[1761,9188],[1762,9188],[1763,9188],[1764,9188],[1765,9188],[1766,9188],[1767,9188],[1768,9188],[1769,9188],[1770,9188],[1771,9188],[1772,9188],[1773,9188],[1774,9188],[1775,9188],[1776,9188],[1777,9188],[1778,9188],[1779,9188],[1780,9188],[1781,9188],[1782,9188],[1783,9188],[1784,9191],[1785,9193],[1786,9193],[1787,9188],[1788,9188],[1789,9188],[1790,9188],[1791,9188],[1792,9188],[1793,9188],[1794,9188],[1795,9188],[1796,9188],[1797,9188],[1798,9188],[1799,9188],[1800,9188],[1801,9188],[1802,9188],[1803,9188],[1804,9188],[1805,9188],[1806,9188],[1807,9188],[1808,9188],[1809,9188],[1810,9188],[1811,9191],[1812,9191],[1813,9188],[1814,9188],[1815,9188],[1816,9188],[1817,9188],[1818,9188],[1819,9188],[1820,9188],[1821,9188],[1822,9188],[1823,9188],[1824,9188],[1825,9188],[1826,9188],[1827,9188],[1828,9188],[1829,9188],[1830,9188],[1831,9188],[1832,9188],[1833,9188],[1834,9188],[1835,9188],[1836,9188],[1837,9188],[1838,9188],[1839,9188],[1840,9188],[1841,9188],[1842,9188],[1843,9188],[1844,9188],[1845,9188],[1846,9188],[1847,9188],[1848,9188],[1849,9188],[1850,9188],[1851,9188],[1852,9188],[1853,9188],[1854,9188],[1855,9188],[1856,9188],[1857,9188],[1858,9188],[1859,9188],[1860,9188],[1861,9188],[1862,9188],[1863,9188],[1864,9188],[1865,9188],[1866,9188],[1867,9188],[1868,9188],[1869,9188],[1870,9188],[1871,9188],[1872,9188],[1873,9188],[1874,9188],[1875,9188],[1876,9188],[1877,9188],[1878,9188],[1879,9188],[1880,9188],[1881,9188],[1882,9188],[1883,9188],[1884,9188],[1885,9188],[1886,9189],[1887,9189],[1888,9189],[1889,9189],[1890,9189],[1891,9189],[1892,9189],[1893,9189],[1894,9189],[1895,9189],[1896,9189],[1897,9188],[1898,9188],[1899,9188],[1900,9189],[1901,9188],[1902,9188],[1903,9188],[1904,9188],[1905,9188],[1906,9188],[1907,9188],[1908,9188],[1909,9189],[1910,9188],[1911,9189],[1912,9189],[1913,9189],[1914,9189],[1915,9189],[1916,9188],[1917,9188],[1918,9189],[1919,9188],[1920,9188],[1921,9188],[1922,9188],[1923,9188],[1924,9188],[1925,9189],[1926,9189],[1927,9189],[1928,9189],[1929,9188],[1930,9188],[1931,9188],[1932,9188],[1933,9188],[1934,9188],[1935,9188],[1936,9188],[1937,9188],[1938,9188],[1939,9188],[1940,9188],[1941,9188],[1942,9188],[1943,9188],[1944,9188],[1945,9188],[1946,9188],[1947,9188],[1948,9188],[1949,9188],[1950,9189],[1951,9189],[1952,9191],[1953,9189],[1954,9191],[1955,9191],[1956,9191],[1957,9191],[1958,9189],[1959,9189],[1960,9189],[1961,9189],[1962,9191],[1963,9191],[1964,9191],[1965,9191],[1966,9189],[1967,9189],[1968,9191],[1969,9191],[1970,9189],[1971,9189],[1972,9189],[1973,9189],[1974,9191],[1975,9191],[1976,9188],[1977,9188],[1978,9188],[1979,9188],[1980,9188],[1981,9188],[1982,9188],[1983,9188],[1984,9188],[1985,9188],[1986,9188],[1987,9188],[1988,9188],[1989,9188],[1990,9188],[1991,9188],[1992,9188],[1993,9188],[1994,9188],[1995,9188],[1996,9189],[1997,9189],[1998,9191],[1999,9191],[2000,9191],[2001,9191],[2002,9189],[2003,9190],[2004,9190],[2005,9191],[2006,9190],[2007,9190],[2008,9191],[2009,9190],[2010,9190],[2011,9190],[2012,9190],[2013,9190],[2014,9191],[2015,9190],[2016,9190],[2017,9190],[2018,9190],[2019,9190],[2020,9190],[2021,9190],[2022,9190],[2023,9190],[2024,9190],[2025,9190],[2026,9190],[2027,9190],[2028,9190],[2029,9188],[2030,9190],[2031,9190],[2032,9190],[2033,9191],[2034,9190],[2035,9190],[2036,9190],[2037,9190],[2038,9190],[2039,9190],[2040,9188],[2041,9189],[2042,9191],[2043,9189],[2044,9191],[2045,9191],[2046,9191],[2047,9191],[2048,9191],[2049,9191],[2050,9191],[2051,9191],[2052,9191],[2053,9191],[2054,9191],[2055,9191],[2056,9191],[2057,9191],[2058,9191],[2059,9191],[2060,9191],[2061,9191],[2062,9191],[2063,9193],[2064,9191],[2065,9191],[2066,9191],[2067,9193],[2068,9193],[2069,9193],[2070,9193],[2071,9193],[2072,9191],[2073,9191],[2074,9191],[2075,9188],[2076,9193],[2077,9193],[2078,9189],[2079,9189],[2080,9189],[2081,9189],[2082,9189],[2083,9189],[2084,9189],[2085,9189],[2086,9189],[2087,9189],[2088,9189],[2089,9189],[2090,9189],[2091,9189],[2092,9193],[2093,9193],[2094,9193],[2095,9193],[2096,9191],[2097,9191],[2098,9188],[2099,9193],[2100,9193],[2101,9191],[2102,9189],[2103,9191],[2104,9188],[2105,9191],[2106,9189],[2107,9191],[2108,9191],[2109,9191],[2110,9191],[2111,9191],[2112,9191],[2113,9191],[2114,9191],[2115,9191],[2116,9193],[2117,9193],[2118,9193],[2119,9188],[2120,9188],[2121,9188],[2122,9188],[2123,9188],[2124,9188],[2125,9188],[2126,9188],[2127,9188],[2128,9188],[2129,9188],[2130,9188],[2131,9188],[2132,9188],[2133,9188],[2134,9188],[2135,9188],[2136,9188],[2137,9188],[2138,9188],[2139,9188],[2140,9188],[2141,9188],[2142,9188],[2143,9188],[2144,9188],[2145,9188],[2146,9188],[2147,9188],[2148,9191],[2149,9191],[2150,9191],[2151,9191],[2152,9191],[2153,9193],[2154,9188],[2155,9191],[2156,9191],[2157,9191],[2158,9191],[2159,9188],[2160,9188],[2161,9189],[2162,9189],[2163,9189],[2164,9189],[2165,9189],[2166,9189],[2167,9189],[2168,9189],[2169,9189],[2170,9189],[2171,9189],[2172,9188],[2173,9188],[2174,9188],[2175,9188],[2176,9188],[2177,9188],[2178,9188],[2179,9188],[2180,9188],[2181,9188],[2182,9188],[2183,9188],[2184,9189],[2185,9189],[2186,9189],[2187,9189],[2188,9189],[2189,9189],[2190,9189],[2191,9189],[2192,9188],[2193,9188],[2194,9188],[2195,9188],[2196,9188],[2197,9188],[2198,9188],[2199,9188],[2200,9188],[2201,9188],[2202,9188],[2203,9188],[2204,9188],[2205,9191],[2206,9191],[2207,9191],[2208,9188],[2209,9191],[2210,9191],[2211,9191],[2212,9191],[2213,9191],[2214,9188],[2215,9191],[2216,9191],[2217,9188],[2218,9191],[2219,9188],[2220,9191],[2221,9188],[2222,9191],[2223,9191],[2224,9191],[2225,9188],[2226,9191],[2227,9191],[2228,9189],[2229,9191],[2230,9191],[2231,9188],[2232,9191],[2233,9191],[2234,9191],[2235,9191],[2236,9191],[2237,9191],[2238,9191],[2239,9191],[2240,9191],[2241,9191],[2242,9191],[2243,9191],[2244,9191],[2245,9191],[2246,9191],[2247,9191],[2248,9191],[2249,9188],[2250,9191],[2251,9191],[2252,9191],[2253,9191],[2254,9191],[2255,9191],[2256,9189],[2257,9191],[2258,9191],[2259,9191],[2260,9191],[2261,9191],[2262,9191],[2263,9191],[2264,9189],[2265,9189],[2266,9189],[2267,9189],[2268,9189],[2269,9189],[2270,9189],[2271,9189],[2272,9189],[2273,9189],[2274,9189],[2275,9189],[2276,9193],[2277,9191],[2278,9188],[2279,9188],[2280,9188],[2281,9189],[2282,9188],[2283,9189],[2284,9188],[2285,9188],[2286,9189],[2287,9188],[2288,9188],[2289,9188],[2290,9188],[2291,9188],[2292,9188],[2293,9188],[2294,9188],[2295,9188],[2296,9188],[2297,9188],[2298,9188],[2299,9188],[2300,9188],[2301,9188],[2302,9188],[2303,9188],[2304,9188],[2305,9188],[2306,9188],[2307,9188],[2308,9188],[2309,9188],[2310,9188],[2311,9188],[2312,9188],[2313,9188],[2314,9188],[2315,9188],[2316,9188],[2317,9188],[2318,9188],[2319,9188],[2320,9188],[2321,9188],[2322,9188],[2323,9188],[2324,9188],[2325,9188],[2326,9188],[2327,9188],[2328,9188],[2329,9188],[2330,9188],[2331,9188],[2332,9188],[2333,9188],[2334,9188],[2335,9188],[2336,9188],[2337,9188],[2338,9188],[2339,9188],[2340,9188],[2341,9188],[2342,9188],[2343,9188],[2344,9188],[2345,9189],[2346,9188],[2347,9188],[2348,9188],[2349,9188],[2350,9188],[2351,9188],[2352,9188],[2353,9188],[2354,9188],[2355,9188],[2356,9188],[2357,9188],[2358,9188],[2359,9188],[2360,9188],[2361,9188],[2362,9188],[2363,9188],[2364,9188],[2365,9188],[2366,9188],[2367,9188],[2368,9188],[2369,9188],[2370,9188],[2371,9188],[2372,9188],[2373,9188],[2374,9188],[2375,9188],[2376,9188],[2377,9188],[2378,9188],[2379,9188],[2380,9188],[2381,9188],[2382,9188],[2383,9188],[2384,9188],[2385,9188],[2386,9188],[2387,9188],[2388,9188],[2389,9188],[2390,9188],[2391,9188],[2392,9188],[2393,9188],[2394,9188],[2395,9188],[2396,9188],[2397,9188],[2398,9188],[2399,9188],[2400,9188],[2401,9188],[2402,9188],[2403,9188],[2404,9188],[2405,9188],[2406,9188],[2407,9188],[2408,9188],[2409,9188],[2410,9188],[2411,9188],[2412,9188],[2413,9188],[2414,9188],[2415,9188],[2416,9188],[2417,9188],[2418,9188],[2419,9188],[2420,9188],[2421,9188],[2422,9188],[2423,9188],[2424,9188],[2425,9188],[2426,9188],[2427,9188],[2428,9188],[2429,9188],[2430,9188],[2431,9188],[2432,9188],[2433,9188],[2434,9188],[2435,9188],[2436,9191],[2437,9188],[2438,9188],[2439,9188],[2440,9188],[2441,9188],[2442,9188],[2443,9188],[2444,9188],[2445,9188],[2446,9188],[2447,9188],[2448,9188],[2449,9188],[2450,9188],[2451,9188],[2452,9188],[2453,9188],[2454,9188],[2455,9188],[2456,9188],[2457,9188],[2458,9188],[2459,9188],[2460,9188],[2461,9188],[2462,9188],[2463,9188],[2464,9188],[2465,9188],[2466,9188],[2467,9188],[2468,9188],[2469,9188],[2470,9188],[2471,9188],[2472,9188],[2473,9188],[2474,9188],[2475,9188],[2476,9188],[2477,9188],[2478,9188],[2479,9188],[2480,9188],[2481,9188],[2482,9188],[2483,9188],[2484,9188],[2485,9188],[2486,9188],[2487,9188],[2488,9188],[2489,9188],[2490,9188],[2491,9188],[2492,9188],[2493,9188],[2494,9188],[2495,9188],[2496,9188],[2497,9188],[2498,9188],[2499,9188],[2500,9188],[2501,9188],[2502,9188],[2503,9188],[2504,9188],[2505,9188],[2506,9188],[2507,9188],[2508,9188],[2509,9188],[2510,9188],[2511,9188],[2512,9188],[2513,9188],[2514,9188],[2515,9188],[2516,9188],[2517,9188],[2518,9188],[2519,9188],[2520,9188],[2521,9188],[2522,9188],[2523,9188],[2524,9188],[2525,9188],[2526,9188],[2527,9188],[2528,9188],[2529,9188],[2530,9188],[2531,9188],[2532,9188],[2533,9188],[2534,9188],[2535,9188],[2536,9188],[2537,9188],[2538,9188],[2539,9188],[2540,9188],[2541,9188],[2542,9188],[2543,9188],[2544,9188],[2545,9188],[2546,9188],[2547,9188],[2548,9188],[2549,9188],[2550,9188],[2551,9188],[2552,9188],[2553,9188],[2554,9188],[2555,9188],[2556,9188],[2557,9188],[2558,9188],[2559,9188],[2560,9188],[2561,9188],[2562,9188],[2563,9188],[2564,9188],[2565,9188],[2566,9188],[2567,9188],[2568,9188],[2569,9188],[2570,9188],[2571,9188],[2572,9188],[2573,9188],[2574,9188],[2575,9188],[2576,9188],[2577,9188],[2578,9188],[2579,9188],[2580,9188],[2581,9188],[2582,9188],[2583,9188],[2584,9188],[2585,9188],[2586,9188],[2587,9188],[2588,9188],[2589,9188],[2590,9188],[2591,9188],[2592,9188],[2593,9188],[2594,9188],[2595,9188],[2596,9188],[2597,9188],[2598,9188],[2599,9188],[2600,9188],[2601,9188],[2602,9188],[2603,9188],[2604,9188],[2605,9188],[2606,9188],[2607,9188],[2608,9188],[2609,9188],[2610,9188],[2611,9188],[2612,9188],[2613,9188],[2614,9188],[2615,9188],[2616,9188],[2617,9188],[2618,9188],[2619,9188],[2620,9188],[2621,9188],[2622,9188],[2623,9188],[2624,9188],[2625,9188],[2626,9188],[2627,9188],[2628,9188],[2629,9188],[2630,9188],[2631,9188],[2632,9188],[2633,9188],[2634,9188],[2635,9188],[2636,9188],[2637,9188],[2638,9188],[2639,9188],[2640,9188],[2641,9188],[2642,9188],[2643,9188],[2644,9188],[2645,9188],[2646,9188],[2647,9188],[2648,9188],[2649,9188],[2650,9188],[2651,9188],[2652,9188],[2653,9188],[2654,9188],[2655,9188],[2656,9188],[2657,9188],[2658,9188],[2659,9188],[2660,9188],[2661,9188],[2662,9188],[2663,9188],[2664,9188],[2665,9188],[2666,9188],[2667,9188],[2668,9188],[2669,9188],[2670,9188],[2671,9188],[2672,9188],[2673,9188],[2674,9188],[2675,9188],[2676,9188],[2677,9188],[2678,9188],[2679,9188],[2680,9188],[2681,9188],[2682,9188],[2683,9188],[2684,9188],[2685,9188],[2686,9188],[2687,9188],[2688,9188],[2689,9188],[2690,9188],[2691,9188],[2692,9191],[2693,9188],[2694,9188],[2695,9189],[2696,9188],[2697,9188],[2698,9188],[2699,9188],[2700,9191],[2701,9191],[2702,9188],[2703,9188],[2704,9188],[2705,9188],[2706,9188],[2707,9193],[2708,9188],[2709,9188],[2710,9188],[2711,9188],[2712,9188],[2713,9188],[2714,9188],[2715,9188],[2716,9188],[2717,9188],[2718,9188],[2719,9188],[2720,9188],[2721,9188],[2722,9188],[2723,9188],[2724,9188],[2725,9188],[2726,9188],[2727,9188],[2728,9193],[2729,9188],[2730,9191],[2731,9189],[2732,9188],[2733,9189],[2734,9188],[2735,9188],[2736,9188],[2737,9188],[2738,9189],[2739,9189],[2740,9189],[2741,9189],[2742,9189],[2743,9189],[2744,9189],[2745,9189],[2746,9189],[2747,9189],[2748,9189],[2749,9189],[2750,9189],[2751,9189],[2752,9189],[2753,9189],[2754,9189],[2755,9189],[2756,9188],[2757,9188],[2758,9188],[2759,9188],[2760,9188],[2761,9188],[2762,9188],[2763,9188],[2764,9188],[2765,9191],[2766,9191],[2767,9191],[2768,9191],[2769,9193],[2770,9189],[2771,9193],[2772,9191],[2773,9191],[2774,9191],[2775,9188],[2776,9188],[2777,9191],[2778,9193],[2779,9191],[2780,9189],[2781,9193],[2782,9193],[2783,9193],[2784,9193],[2785,9193],[2786,9193],[2787,9193],[2788,9193],[2789,9193],[2790,9192],[2791,9193],[2792,9193],[2793,9193],[2794,9193],[2795,9193],[2796,9193],[2797,9191],[2798,9191],[2799,9193],[2800,9193],[2801,9193],[2802,9193],[2803,9191],[2804,9188],[2805,9188],[2806,9188],[2807,9188],[2808,9188],[2809,9188],[2810,9193],[2811,9191],[2812,9193],[2813,9191],[2814,9193],[2815,9191],[2816,9191],[2817,9191],[2818,9191],[2819,9191],[2820,9191],[2821,9191],[2822,9191],[2823,9191],[2824,9191],[2825,9191],[2826,9188],[2827,9191],[2828,9188],[2829,9188],[2830,9189],[2831,9188],[2832,9191],[2833,9191],[2834,9191],[2835,9188],[2836,9191],[2837,9191],[2838,9191],[2839,9191],[2840,9191],[2841,9188],[2842,9188],[2843,9191],[2844,9191],[2845,9188],[2846,9188],[2847,9188],[2848,9188],[2849,9188],[2850,9188],[2851,9188],[2852,9188],[2853,9188],[2854,9189],[2855,9191],[2856,9191],[2857,9191],[2858,9189],[2859,9188],[2860,9188],[2861,9188],[2862,9191],[2863,9191],[2864,9188],[2865,9191],[2866,9188],[2867,9188],[2868,9191],[2869,9191],[2870,9191],[2871,9191],[2872,9191],[2873,9188],[2874,9191],[2875,9188],[2876,9191],[2877,9191],[2878,9191],[2879,9188],[2880,9188],[2881,9188],[2882,9189],[2883,9188],[2884,9191],[2885,9188],[2886,9188],[2887,9191],[2888,9189],[2889,9189],[2890,9191],[2891,9188],[2892,9191],[2893,9191],[2894,9191],[2895,9191],[2896,9191],[2897,9191],[2898,9191],[2899,9191],[2900,9191],[2901,9193],[2902,9193],[2903,9193],[2904,9193],[2905,9191],[2906,9191],[2907,9191],[2908,9191],[2909,9189],[2910,9188],[2911,9188],[2912,9188],[2913,9188],[2914,9188],[2915,9188],[2916,9188],[2917,9188],[2918,9188],[2919,9188],[2920,9188],[2921,9188],[2922,9190],[2923,9190],[2924,9189],[2925,9189],[2926,9189],[2927,9191],[2928,9191],[2929,9191],[2930,9191],[2931,9191],[2932,9191],[2933,9191],[2934,9188],[2935,9188],[2936,9188],[2937,9188],[2938,9188],[2939,9188],[2940,9188],[2941,9188],[2942,9188],[2943,9188],[2944,9188],[2945,9188],[2946,9188],[2947,9188],[2948,9188],[2949,9188],[2950,9188],[2951,9188],[2952,9188],[2953,9188],[2954,9188],[2955,9188],[2956,9188],[2957,9188],[2958,9188],[2959,9188],[2960,9188],[2961,9188],[2962,9188],[2963,9188],[2964,9188],[2965,9188],[2966,9188],[2967,9188],[2968,9188],[2969,9188],[2970,9193],[2971,9188],[2972,9188],[2973,9188],[2974,9188],[2975,9188],[2976,9188],[2977,9188],[2978,9188],[2979,9188],[2980,9188],[2981,9188],[2982,9188],[2983,9188],[2984,9188],[2985,9188],[2986,9188],[2987,9188],[2988,9188],[2989,9188],[2990,9188],[2991,9188],[2992,9188],[2993,9188],[2994,9188],[2995,9188],[2996,9188],[2997,9188],[2998,9188],[2999,9188],[3000,9188],[3001,9188],[3002,9188],[3003,9188],[3004,9188],[3005,9188],[3006,9188],[3007,9188],[3008,9188],[3009,9188],[3010,9188],[3011,9188],[3012,9188],[3013,9188],[3014,9188],[3015,9188],[3016,9188],[3017,9188],[3018,9188],[3019,9188],[3020,9188],[3021,9188],[3022,9188],[3023,9188],[3024,9188],[3025,9193],[3026,9188],[3027,9188],[3028,9188],[3029,9188],[3030,9188],[3031,9188],[3032,9188],[3033,9193],[3034,9193],[3035,9193],[3036,9193],[3037,9193],[3038,9193],[3039,9193],[3040,9193],[3041,9188],[3042,9188],[3043,9188],[3044,9188],[3045,9188],[3046,9188],[3047,9188],[3048,9188],[3049,9194],[3050,9188],[3051,9191],[3052,9191],[3053,9194],[3054,9188],[3055,9188],[3056,9189],[3057,9188],[3058,9188],[3059,9188],[3060,9188],[3061,9188],[3062,9188],[3063,9188],[3064,9188],[3065,9188],[3066,9188],[3067,9188],[3068,9188],[3069,9188],[3070,9194],[3071,9188],[3072,9189],[3073,9189],[3074,9189],[3075,9193],[3076,9191],[3077,9191],[3078,9191],[3079,9191],[3080,9191],[3081,9188],[3082,9191],[3083,9191],[3084,9189],[3085,9193],[3086,9193],[3087,9193],[3088,9189],[3089,9189],[3090,9189],[3091,9193],[3092,9189],[3093,9189],[3094,9189],[3095,9189],[3096,9191],[3097,9191],[3098,9191],[3099,9191],[3100,9191],[3101,9191],[3102,9191],[3103,9191],[3104,9191],[3105,9191],[3106,9191],[3107,9189],[3108,9189],[3109,9193],[3110,9189],[3111,9189],[3112,9189],[3113,9189],[3114,9189],[3115,9189],[3116,9193],[3117,9193],[3118,9189],[3119,9193],[3120,9189],[3121,9189],[3122,9189],[3123,9189],[3124,9189],[3125,9189],[3126,9189],[3127,9189],[3128,9189],[3129,9193],[3130,9193],[3131,9189],[3132,9188],[3133,9188],[3134,9188],[3135,9188],[3136,9188],[3137,9188],[3138,9188],[3139,9188],[3140,9188],[3141,9188],[3142,9188],[3143,9188],[3144,9188],[3145,9188],[3146,9188],[3147,9188],[3148,9188],[3149,9188],[3150,9188],[3151,9188],[3152,9191],[3153,9191],[3154,9191],[3155,9191],[3156,9191],[3157,9188],[3158,9188],[3159,9188],[3160,9191],[3161,9191],[3162,9191],[3163,9191],[3164,9191],[3165,9191],[3166,9191],[3167,9191],[3168,9191],[3169,9191],[3170,9191],[3171,9191],[3172,9191],[3173,9191],[3174,9191],[3175,9191],[3176,9191],[3177,9191],[3178,9191],[3179,9191],[3180,9193],[3181,9193],[3182,9193],[3183,9193],[3184,9193],[3185,9193],[3186,9193],[3187,9193],[3188,9188],[3189,9191],[3190,9193],[3191,9193],[3192,9193],[3193,9188],[3194,9188],[3195,9188],[3196,9188],[3197,9188],[3198,9188],[3199,9188],[3200,9193],[3201,9193],[3202,9191],[3203,9193],[3204,9191],[3205,9188],[3206,9188],[3207,9188],[3208,9193],[3209,9193],[3210,9188],[3211,9188],[3212,9188],[3213,9188],[3214,9189],[3215,9188],[3216,9193],[3217,9188],[3218,9188],[3219,9188],[3220,9189],[3221,9193],[3222,9189],[3223,9188],[3224,9188],[3225,9188],[3226,9188],[3227,9188],[3228,9188],[3229,9188],[3230,9188],[3231,9188],[3232,9193],[3233,9193],[3234,9193],[3235,9193],[3236,9193],[3237,9193],[3238,9193],[3239,9193],[3240,9193],[3241,9193],[3242,9193],[3243,9193],[3244,9193],[3245,9193],[3246,9193],[3247,9193],[3248,9193],[3249,9193],[3250,9189],[3251,9193],[3252,9191],[3253,9188],[3254,9188],[3255,9188],[3256,9188],[3257,9188],[3258,9188],[3259,9188],[3260,9188],[3261,9188],[3262,9188],[3263,9188],[3264,9188],[3265,9188],[3266,9193],[3267,9191],[3268,9197],[3269,9197],[3270,9197],[3271,9197],[3272,9197],[3273,9197],[3274,9197],[3275,9197],[3276,9197],[3277,9197],[3278,9197],[3279,9197],[3280,9197],[3281,9197],[3282,9197],[3283,9197],[3284,9197],[3285,9197],[3286,9197],[3287,9188],[3288,9188],[3289,9193],[3290,9193],[3291,9188],[3292,9188],[3293,9189],[3294,9189],[3295,9189],[3296,9188],[3297,9188],[3298,9188],[3299,9188],[3300,9188],[3301,9188],[3302,9188],[3303,9188],[3304,9189],[3305,9188],[3306,9189],[3307,9189],[3308,9188],[3309,9188],[3310,9188],[3311,9188],[3312,9188],[3313,9188],[3314,9189],[3315,9189],[3316,9188],[3317,9189],[3318,9188],[3319,9188],[3320,9188],[3321,9188],[3322,9188],[3323,9188],[3324,9188],[3325,9188],[3326,9188],[3327,9188],[3328,9188],[3329,9188],[3330,9188],[3331,9188],[3332,9188],[3333,9188],[3334,9188],[3335,9188],[3336,9188],[3337,9188],[3338,9188],[3339,9188],[3340,9188],[3341,9188],[3342,9188],[3343,9188],[3344,9188],[3345,9188],[3346,9188],[3347,9188],[3348,9188],[3349,9188],[3350,9188],[3351,9188],[3352,9188],[3353,9188],[3354,9188],[3355,9188],[3356,9188],[3357,9188],[3358,9188],[3359,9188],[3360,9188],[3361,9193],[3362,9188],[3363,9189],[3364,9189],[3365,9189],[3366,9189],[3367,9189],[3368,9189],[3369,9189],[3370,9189],[3371,9189],[3372,9189],[3373,9193],[3374,9191],[3375,9191],[3376,9188],[3377,9188],[3378,9193],[3379,9188],[3380,9188],[3381,9188],[3382,9188],[3383,9188],[3384,9188],[3385,9188],[3386,9188],[3387,9188],[3388,9188],[3389,9188],[3390,9188],[3391,9188],[3392,9188],[3393,9188],[3394,9188],[3395,9188],[3396,9188],[3397,9188],[3398,9188],[3399,9188],[3400,9188],[3401,9188],[3402,9188],[3403,9188],[3404,9188],[3405,9188],[3406,9188],[3407,9188],[3408,9188],[3409,9188],[3410,9189],[3411,9188],[3412,9188],[3413,9188],[3414,9188],[3415,9188],[3416,9188],[3417,9188],[3418,9188],[3419,9189],[3420,9189],[3421,9188],[3422,9188],[3423,9188],[3424,9188],[3425,9188],[3426,9188],[3427,9188],[3428,9188],[3429,9188],[3430,9188],[3431,9188],[3432,9188],[3433,9188],[3434,9188],[3435,9188],[3436,9188],[3437,9188],[3438,9189],[3439,9188],[3440,9188],[3441,9188],[3442,9188],[3443,9188],[3444,9189],[3445,9188],[3446,9188],[3447,9188],[3448,9188],[3449,9188],[3450,9188],[3451,9188],[3452,9188],[3453,9188],[3454,9188],[3455,9188],[3456,9189],[3457,9188],[3458,9188],[3459,9188],[3460,9188],[3461,9188],[3462,9188],[3463,9188],[3464,9188],[3465,9188],[3466,9188],[3467,9188],[3468,9188],[3469,9188],[3470,9188],[3471,9188],[3472,9188],[3473,9188],[3474,9188],[3475,9188],[3476,9188],[3477,9188],[3478,9188],[3479,9188],[3480,9188],[3481,9188],[3482,9188],[3483,9188],[3484,9188],[3485,9188],[3486,9188],[3487,9188],[3488,9188],[3489,9188],[3490,9188],[3491,9188],[3492,9188],[3493,9188],[3494,9188],[3495,9188],[3496,9188],[3497,9188],[3498,9188],[3499,9188],[3500,9188],[3501,9188],[3502,9188],[3503,9188],[3504,9188],[3505,9188],[3506,9188],[3507,9188],[3508,9188],[3509,9188],[3510,9188],[3511,9188],[3512,9188],[3513,9188],[3514,9188],[3515,9188],[3516,9188],[3517,9188],[3518,9188],[3519,9188],[3520,9188],[3521,9188],[3522,9188],[3523,9188],[3524,9188],[3525,9188],[3526,9188],[3527,9188],[3528,9188],[3529,9188],[3530,9188],[3531,9188],[3532,9188],[3533,9188],[3534,9189],[3535,9188],[3536,9191],[3537,9188],[3538,9189],[3539,9189],[3540,9189],[3541,9189],[3542,9189],[3543,9191],[3544,9193],[3545,9193],[3546,9193],[3547,9193],[3548,9193],[3549,9193],[3550,9193],[3551,9188],[3552,9188],[3553,9188],[3554,9188],[3555,9188],[3556,9188],[3557,9188],[3558,9188],[3559,9188],[3560,9188],[3561,9188],[3562,9188],[3563,9188],[3564,9188],[3565,9188],[3566,9188],[3567,9188],[3568,9188],[3569,9191],[3570,9188],[3571,9188],[3572,9188],[3573,9188],[3574,9191],[3575,9191],[3576,9197],[3577,9197],[3578,9197],[3579,9197],[3580,9197],[3581,9197],[3582,9188],[3583,9188],[3584,9188],[3585,9188],[3586,9188],[3587,9188],[3588,9188],[3589,9188],[3590,9188],[3591,9188],[3592,9188],[3593,9188],[3594,9188],[3595,9188],[3596,9188],[3597,9188],[3598,9188],[3599,9188],[3600,9188],[3601,9188],[3602,9188],[3603,9188],[3604,9188],[3605,9188],[3606,9188],[3607,9188],[3608,9188],[3609,9188],[3610,9188],[3611,9188],[3612,9188],[3613,9188],[3614,9188],[3615,9188],[3616,9188],[3617,9188],[3618,9188],[3619,9188],[3620,9188],[3621,9188],[3622,9188],[3623,9188],[3624,9188],[3625,9188],[3626,9188],[3627,9188],[3628,9188],[3629,9188],[3630,9188],[3631,9188],[3632,9188],[3633,9188],[3634,9188],[3635,9188],[3636,9188],[3637,9188],[3638,9188],[3639,9188],[3640,9188],[3641,9188],[3642,9188],[3643,9188],[3644,9188],[3645,9188],[3646,9188],[3647,9188],[3648,9188],[3649,9188],[3650,9188],[3651,9188],[3652,9188],[3653,9188],[3654,9188],[3655,9188],[3656,9188],[3657,9188],[3658,9188],[3659,9188],[3660,9188],[3661,9188],[3662,9188],[3663,9188],[3664,9188],[3665,9188],[3666,9188],[3667,9188],[3668,9188],[3669,9188],[3670,9188],[3671,9188],[3672,9188],[3673,9188],[3674,9188],[3675,9188],[3676,9188],[3677,9188],[3678,9188],[3679,9188],[3680,9188],[3681,9188],[3682,9188],[3683,9188],[3684,9188],[3685,9188],[3686,9188],[3687,9191],[3688,9191],[3689,9188],[3690,9191],[3691,9188],[3692,9191],[3693,9188],[3694,9191],[3695,9188],[3696,9193],[3697,9193],[3698,9188],[3699,9188],[3700,9188],[3701,9188],[3702,9188],[3703,9188],[3704,9188],[3705,9188],[3706,9188],[3707,9188],[3708,9191],[3709,9191],[3710,9191],[3711,9191],[3712,9191],[3713,9191],[3714,9193],[3715,9193],[3716,9193],[3717,9191],[3718,9191],[3719,9191],[3720,9189],[3721,9191],[3722,9191],[3723,9191],[3724,9191],[3725,9193],[3726,9190],[3727,9191],[3728,9191],[3729,9193],[3730,9193],[3731,9193],[3732,9191],[3733,9191],[3734,9191],[3735,9191],[3736,9193],[3737,9193],[3738,9193],[3739,9193],[3740,9191],[3741,9191],[3742,9193],[3743,9193],[3744,9193],[3745,9193],[3746,9193],[3747,9193],[3748,9193],[3749,9193],[3750,9193],[3751,9193],[3752,9193],[3753,9193],[3754,9190],[3755,9190],[3756,9190],[3757,9193],[3758,9193],[3759,9188],[3760,9188],[3761,9188],[3762,9188],[3763,9188],[3764,9188],[3765,9188],[3766,9188],[3767,9188],[3768,9188],[3769,9188],[3770,9188],[3771,9188],[3772,9188],[3773,9188],[3774,9188],[3775,9188],[3776,9188],[3777,9188],[3778,9188],[3779,9188],[3780,9188],[3781,9188],[3782,9188],[3783,9188],[3784,9188],[3785,9188],[3786,9188],[3787,9188],[3788,9188],[3789,9188],[3790,9188],[3791,9188],[3792,9188],[3793,9188],[3794,9188],[3795,9188],[3796,9188],[3797,9188],[3798,9188],[3799,9188],[3800,9188],[3801,9188],[3802,9188],[3803,9188],[3804,9188],[3805,9188],[3806,9188],[3807,9188],[3808,9188],[3809,9188],[3810,9188],[3811,9188],[3812,9188],[3813,9188],[3814,9188],[3815,9188],[3816,9188],[3817,9188],[3818,9188],[3819,9188],[3820,9188],[3821,9188],[3822,9188],[3823,9188],[3824,9188],[3825,9188],[3826,9188],[3827,9188],[3828,9188],[3829,9188],[3830,9188],[3831,9188],[3832,9188],[3833,9188],[3834,9188],[3835,9188],[3836,9188],[3837,9188],[3838,9188],[3839,9188],[3840,9188],[3841,9188],[3842,9188],[3843,9188],[3844,9188],[3845,9188],[3846,9188],[3847,9188],[3848,9188],[3849,9188],[3850,9188],[3851,9188],[3852,9188],[3853,9188],[3854,9188],[3855,9188],[3856,9188],[3857,9188],[3858,9188],[3859,9188],[3860,9188],[3861,9188],[3862,9188],[3863,9188],[3864,9188],[3865,9188],[3866,9188],[3867,9188],[3868,9188],[3869,9188],[3870,9188],[3871,9188],[3872,9191],[3873,9188],[3874,9188],[3875,9188],[3876,9188],[3877,9188],[3878,9188],[3879,9188],[3880,9188],[3881,9188],[3882,9188],[3883,9188],[3884,9188],[3885,9188],[3886,9188],[3887,9188],[3888,9188],[3889,9188],[3890,9188],[3891,9188],[3892,9188],[3893,9188],[3894,9188],[3895,9188],[3896,9188],[3897,9188],[3898,9188],[3899,9188],[3900,9188],[3901,9188],[3902,9191],[3903,9191],[3904,9188],[3905,9188],[3906,9191],[3907,9189],[3908,9193],[3909,9189],[3910,9189],[3911,9191],[3912,9191],[3913,9189],[3914,9193],[3915,9188],[3916,9188],[3917,9188],[3918,9188],[3919,9188],[3920,9188],[3921,9188],[3922,9188],[3923,9188],[3924,9188],[3925,9188],[3926,9188],[3927,9188],[3928,9188],[3929,9188],[3930,9188],[3931,9188],[3932,9191],[3933,9191],[3934,9191],[3935,9191],[3936,9189],[3937,9188],[3938,9188],[3939,9188],[3940,9191],[3941,9191],[3942,9191],[3943,9191],[3944,9191],[3945,9191],[3946,9189],[3947,9191],[3948,9191],[3949,9191],[3950,9189],[3951,9191],[3952,9189],[3953,9189],[3954,9191],[3955,9189],[3956,9189],[3957,9197],[3958,9191],[3959,9191],[3960,9188],[3961,9191],[3962,9191],[3963,9189],[3964,9189],[3965,9197],[3966,9197],[3967,9197],[3968,9197],[3969,9197],[3970,9197],[3971,9197],[3972,9197],[3973,9197],[3974,9197],[3975,9197],[3976,9197],[3977,9197],[3978,9191],[3979,9197],[3980,9197],[3981,9197],[3982,9197],[3983,9197],[3984,9188],[3985,9188],[3986,9188],[3987,9188],[3988,9188],[3989,9188],[3990,9188],[3991,9197],[3992,9197],[3993,9197],[3994,9197],[3995,9188],[3996,9188],[3997,9188],[3998,9188],[3999,9197],[4000,9197],[4001,9197],[4002,9197],[4003,9197],[4004,9197],[4005,9197],[4006,9197],[4007,9197],[4008,9188],[4009,9197],[4010,9197],[4011,9197],[4012,9197],[4013,9197],[4014,9197],[4015,9197],[4016,9197],[4017,9197],[4018,9197],[4019,9197],[4020,9197],[4021,9197],[4022,9197],[4023,9197],[4024,9197],[4025,9197],[4026,9197],[4027,9197],[4028,9197],[4029,9197],[4030,9197],[4031,9197],[4032,9197],[4033,9197],[4034,9197],[4035,9197],[4036,9197],[4037,9197],[4038,9197],[4039,9197],[4040,9197],[4041,9197],[4042,9197],[4043,9197],[4044,9197],[4045,9191],[4046,9191],[4047,9191],[4048,9191],[4049,9193],[4050,9191],[4051,9191],[4052,9189],[4053,9189],[4054,9189],[4055,9189],[4056,9189],[4057,9189],[4058,9189],[4059,9189],[4060,9189],[4061,9189],[4062,9189],[4063,9189],[4064,9189],[4065,9189],[4066,9189],[4067,9189],[4068,9189],[4069,9189],[4070,9189],[4071,9189],[4072,9189],[4073,9189],[4074,9189],[4075,9189],[4076,9189],[4077,9189],[4078,9189],[4079,9189],[4080,9189],[4081,9189],[4082,9189],[4083,9189],[4084,9189],[4085,9189],[4086,9189],[4087,9189],[4088,9189],[4089,9189],[4090,9189],[4091,9189],[4092,9189],[4093,9189],[4094,9189],[4095,9191],[4096,9191],[4097,9191],[4098,9191],[4099,9188],[4100,9188],[4101,9188],[4102,9188],[4103,9188],[4104,9188],[4105,9188],[4106,9188],[4107,9188],[4108,9189],[4109,9188],[4110,9188],[4111,9188],[4112,9188],[4113,9188],[4114,9188],[4115,9188],[4116,9188],[4117,9188],[4118,9191],[4119,9194],[4120,9194],[4121,9194],[4122,9194],[4123,9194],[4124,9194],[4125,9194],[4126,9194],[4127,9194],[4128,9194],[4129,9194],[4130,9194],[4131,9194],[4132,9194],[4133,9194],[4134,9194],[4135,9194],[4136,9194],[4137,9194],[4138,9194],[4139,9194],[4140,9194],[4141,9194],[4142,9194],[4143,9194],[4144,9194],[4145,9194],[4146,9194],[4147,9194],[4148,9194],[4149,9194],[4150,9194],[4151,9194],[4152,9194],[4153,9194],[4154,9194],[4155,9194],[4156,9194],[4157,9194],[4158,9194],[4159,9194],[4160,9194],[4161,9194],[4162,9194],[4163,9194],[4164,9194],[4165,9194],[4166,9194],[4167,9194],[4168,9194],[4169,9194],[4170,9194],[4171,9194],[4172,9194],[4173,9194],[4174,9194],[4175,9194],[4176,9194],[4177,9194],[4178,9194],[4179,9194],[4180,9194],[4181,9194],[4182,9194],[4183,9194],[4184,9194],[4185,9194],[4186,9194],[4187,9194],[4188,9194],[4189,9194],[4190,9194],[4191,9194],[4192,9194],[4193,9194],[4194,9194],[4195,9194],[4196,9194],[4197,9194],[4198,9194],[4199,9194],[4200,9194],[4201,9194],[4202,9194],[4203,9194],[4204,9194],[4205,9194],[4206,9194],[4207,9194],[4208,9194],[4209,9194],[4210,9194],[4211,9194],[4212,9194],[4213,9194],[4214,9194],[4215,9194],[4216,9194],[4217,9194],[4218,9194],[4219,9194],[4220,9194],[4221,9194],[4222,9194],[4223,9194],[4224,9194],[4225,9194],[4226,9194],[4227,9194],[4228,9194],[4229,9194],[4230,9194],[4231,9194],[4232,9194],[4233,9194],[4234,9194],[4235,9194],[4236,9194],[4237,9194],[4238,9194],[4239,9194],[4240,9194],[4241,9194],[4242,9194],[4243,9194],[4244,9194],[4245,9194],[4246,9194],[4247,9194],[4248,9194],[4249,9194],[4250,9194],[4251,9194],[4252,9194],[4253,9194],[4254,9194],[4255,9194],[4256,9194],[4257,9194],[4258,9194],[4259,9194],[4260,9194],[4261,9194],[4262,9194],[4263,9194],[4264,9194],[4265,9194],[4266,9194],[4267,9194],[4268,9194],[4269,9194],[4270,9194],[4271,9194],[4272,9194],[4273,9194],[4274,9194],[4275,9194],[4276,9194],[4277,9194],[4278,9194],[4279,9194],[4280,9194],[4281,9194],[4282,9194],[4283,9194],[4284,9194],[4285,9194],[4286,9194],[4287,9194],[4288,9194],[4289,9194],[4290,9194],[4291,9194],[4292,9194],[4293,9194],[4294,9194],[4295,9194],[4296,9194],[4297,9194],[4298,9194],[4299,9194],[4300,9194],[4301,9194],[4302,9194],[4303,9194],[4304,9194],[4305,9194],[4306,9194],[4307,9194],[4308,9194],[4309,9194],[4310,9194],[4311,9194],[4312,9194],[4313,9194],[4314,9194],[4315,9194],[4316,9194],[4317,9194],[4318,9194],[4319,9194],[4320,9194],[4321,9194],[4322,9194],[4323,9194],[4324,9194],[4325,9194],[4326,9194],[4327,9194],[4328,9194],[4329,9194],[4330,9194],[4331,9194],[4332,9194],[4333,9194],[4334,9194],[4335,9194],[4336,9194],[4337,9194],[4338,9194],[4339,9194],[4340,9194],[4341,9194],[4342,9194],[4343,9194],[4344,9194],[4345,9194],[4346,9194],[4347,9194],[4348,9194],[4349,9194],[4350,9194],[4351,9194],[4352,9194],[4353,9194],[4354,9194],[4355,9194],[4356,9194],[4357,9194],[4358,9194],[4359,9194],[4360,9194],[4361,9194],[4362,9194],[4363,9194],[4364,9194],[4365,9194],[4366,9194],[4367,9194],[4368,9194],[4369,9194],[4370,9194],[4371,9194],[4372,9194],[4373,9194],[4374,9194],[4375,9194],[4376,9194],[4377,9194],[4378,9194],[4379,9194],[4380,9194],[4381,9194],[4382,9194],[4383,9194],[4384,9194],[4385,9194],[4386,9194],[4387,9194],[4388,9194],[4389,9194],[4390,9194],[4391,9194],[4392,9194],[4393,9194],[4394,9194],[4395,9194],[4396,9194],[4397,9194],[4398,9194],[4399,9194],[4400,9194],[4401,9194],[4402,9194],[4403,9194],[4404,9194],[4405,9194],[4406,9194],[4407,9194],[4408,9194],[4409,9194],[4410,9194],[4411,9194],[4412,9194],[4413,9194],[4414,9194],[4415,9194],[4416,9194],[4417,9194],[4418,9194],[4419,9194],[4420,9194],[4421,9194],[4422,9194],[4423,9194],[4424,9194],[4425,9194],[4426,9194],[4427,9194],[4428,9194],[4429,9194],[4430,9194],[4431,9194],[4432,9194],[4433,9194],[4434,9194],[4435,9194],[4436,9194],[4437,9194],[4438,9194],[4439,9194],[4440,9194],[4441,9194],[4442,9194],[4443,9194],[4444,9194],[4445,9194],[4446,9194],[4447,9194],[4448,9194],[4449,9194],[4450,9194],[4451,9194],[4452,9194],[4453,9194],[4454,9194],[4455,9194],[4456,9194],[4457,9194],[4458,9194],[4459,9194],[4460,9194],[4461,9194],[4462,9194],[4463,9194],[4464,9194],[4465,9194],[4466,9194],[4467,9194],[4468,9194],[4469,9194],[4470,9194],[4471,9194],[4472,9194],[4473,9194],[4474,9194],[4475,9194],[4476,9194],[4477,9194],[4478,9194],[4479,9194],[4480,9188],[4481,9191],[4482,9191],[4483,9191],[4484,9191],[4485,9191],[4486,9191],[4487,9191],[4488,9191],[4489,9188],[4490,9191],[4491,9191],[4492,9191],[4493,9191],[4494,9191],[4495,9191],[4496,9190],[4497,9190],[4498,9190],[4499,9191],[4500,9191],[4501,9188],[4502,9191],[4503,9191],[4504,9191],[4505,9191],[4506,9191],[4507,9193],[4508,9193],[4509,9193],[4510,9193],[4511,9189],[4512,9189],[4513,9188],[4514,9189],[4515,9188],[4516,9188],[4517,9189],[4518,9188],[4519,9188],[4520,9188],[4521,9188],[4522,9188],[4523,9188],[4524,9197],[4525,9197],[4526,9197],[4527,9197],[4528,9197],[4529,9191],[4530,9191],[4531,9191],[4532,9191],[4533,9191],[4534,9191],[4535,9191],[4536,9191],[4537,9191],[4538,9191],[4539,9191],[4540,9191],[4541,9191],[4542,9191],[4543,9191],[4544,9191],[4545,9191],[4546,9191],[4547,9191],[4548,9191],[4549,9191],[4550,9191],[4551,9191],[4552,9191],[4553,9191],[4554,9191],[4555,9191],[4556,9191],[4557,9191],[4558,9191],[4559,9191],[4560,9191],[4561,9191],[4562,9191],[4563,9191],[4564,9191],[4565,9191],[4566,9191],[4567,9191],[4568,9191],[4569,9191],[4570,9191],[4571,9191],[4572,9191],[4573,9191],[4574,9193],[4575,9193],[4576,9193],[4577,9197],[4578,9197],[4579,9197],[4580,9197],[4581,9197],[4582,9197],[4583,9197],[4584,9197],[4585,9197],[4586,9197],[4587,9197],[4588,9197],[4589,9197],[4590,9197],[4591,9197],[4592,9188],[4593,9188],[4594,9188],[4595,9188],[4596,9188],[4597,9191],[4598,9189],[4599,9189],[4600,9189],[4601,9189],[4602,9189],[4603,9189],[4604,9189],[4605,9197],[4606,9197],[4607,9197],[4608,9197],[4609,9197],[4610,9197],[4611,9197],[4612,9197],[4613,9197],[4614,9197],[4615,9197],[4616,9197],[4617,9197],[4618,9197],[4619,9197],[4620,9197],[4621,9197],[4622,9197],[4623,9197],[4624,9197],[4625,9197],[4626,9197],[4627,9197],[4628,9197],[4629,9197],[4630,9197],[4631,9197],[4632,9197],[4633,9197],[4634,9197],[4635,9197],[4636,9197],[4637,9197],[4638,9197],[4639,9197],[4640,9197],[4641,9197],[4642,9197],[4643,9197],[4644,9197],[4645,9197],[4646,9197],[4647,9197],[4648,9197],[4649,9197],[4650,9197],[4651,9197],[4652,9197],[4653,9197],[4654,9197],[4655,9197],[4656,9197],[4657,9197],[4658,9197],[4659,9197],[4660,9197],[4661,9197],[4662,9197],[4663,9197],[4664,9197],[4665,9188],[4666,9188],[4667,9188],[4668,9188],[4669,9188],[4670,9188],[4671,9188],[4672,9188],[4673,9188],[4674,9188],[4675,9188],[4676,9188],[4677,9188],[4678,9188],[4679,9188],[4680,9188],[4681,9188],[4682,9188],[4683,9188],[4684,9188],[4685,9188],[4686,9188],[4687,9188],[4688,9188],[4689,9188],[4690,9188],[4691,9188],[4692,9188],[4693,9191],[4694,9189],[4695,9193],[4696,9191],[4697,9188],[4698,9188],[4699,9188],[4700,9188],[4701,9188],[4702,9188],[4703,9188],[4704,9188],[4705,9188],[4706,9188],[4707,9188],[4708,9188],[4709,9188],[4710,9188],[4711,9188],[4712,9188],[4713,9191],[4714,9188],[4715,9188],[4716,9188],[4717,9188],[4718,9188],[4719,9188],[4720,9188],[4721,9188],[4722,9191],[4723,9191],[4724,9189],[4725,9191],[4726,9189],[4727,9190],[4728,9191],[4729,9191],[4730,9193],[4731,9193],[4732,9193],[4733,9193],[4734,9191],[4735,9191],[4736,9191],[4737,9191],[4738,9188],[4739,9188],[4740,9188],[4741,9188],[4742,9188],[4743,9188],[4744,9193],[4745,9188],[4746,9188],[4747,9188],[4748,9188],[4749,9188],[4750,9188],[4751,9188],[4752,9188],[4753,9188],[4754,9188],[4755,9188],[4756,9188],[4757,9188],[4758,9188],[4759,9188],[4760,9188],[4761,9188],[4762,9188],[4763,9188],[4764,9188],[4765,9188],[4766,9188],[4767,9188],[4768,9188],[4769,9188],[4770,9188],[4771,9188],[4772,9191],[4773,9193],[4774,9193],[4775,9193],[4776,9193],[4777,9193],[4778,9191],[4779,9193],[4780,9193],[4781,9193],[4782,9193],[4783,9191],[4784,9191],[4785,9191],[4786,9191],[4787,9191],[4788,9191],[4789,9191],[4790,9191],[4791,9191],[4792,9188],[4793,9191],[4794,9191],[4795,9191],[4796,9191],[4797,9191],[4798,9191],[4799,9191],[4800,9191],[4801,9191],[4802,9191],[4803,9191],[4804,9189],[4805,9189],[4806,9189],[4807,9189],[4808,9189],[4809,9189],[4810,9189],[4811,9189],[4812,9189],[4813,9189],[4814,9189],[4815,9189],[4816,9189],[4817,9189],[4818,9189],[4819,9189],[4820,9189],[4821,9189],[4822,9189],[4823,9189],[4824,9189],[4825,9191],[4826,9189],[4827,9189],[4828,9189],[4829,9193],[4830,9191],[4831,9188],[4832,9188],[4833,9191],[4834,9191],[4835,9191],[4836,9188],[4837,9188],[4838,9188],[4839,9188],[4840,9188],[4841,9188],[4842,9188],[4843,9188],[4844,9188],[4845,9188],[4846,9188],[4847,9188],[4848,9188],[4849,9188],[4850,9188],[4851,9188],[4852,9188],[4853,9188],[4854,9188],[4855,9188],[4856,9188],[4857,9188],[4858,9188],[4859,9188],[4860,9188],[4861,9189],[4862,9188],[4863,9188],[4864,9188],[4865,9188],[4866,9188],[4867,9188],[4868,9188],[4869,9188],[4870,9188],[4871,9188],[4872,9188],[4873,9188],[4874,9188],[4875,9188],[4876,9188],[4877,9188],[4878,9188],[4879,9188],[4880,9188],[4881,9188],[4882,9188],[4883,9189],[4884,9188],[4885,9188],[4886,9188],[4887,9188],[4888,9189],[4889,9189],[4890,9189],[4891,9189],[4892,9188],[4893,9188],[4894,9188],[4895,9188],[4896,9188],[4897,9189],[4898,9189],[4899,9188],[4900,9189],[4901,9189],[4902,9189],[4903,9189],[4904,9188],[4905,9189],[4906,9189],[4907,9189],[4908,9189],[4909,9189],[4910,9188],[4911,9188],[4912,9188],[4913,9188],[4914,9189],[4915,9189],[4916,9188],[4917,9188],[4918,9188],[4919,9189],[4920,9189],[4921,9189],[4922,9189],[4923,9189],[4924,9189],[4925,9189],[4926,9189],[4927,9189],[4928,9189],[4929,9189],[4930,9189],[4931,9189],[4932,9189],[4933,9189],[4934,9188],[4935,9188],[4936,9189],[4937,9188],[4938,9189],[4939,9188],[4940,9188],[4941,9188],[4942,9188],[4943,9188],[4944,9188],[4945,9188],[4946,9189],[4947,9189],[4948,9188],[4949,9189],[4950,9189],[4951,9189],[4952,9189],[4953,9189],[4954,9189],[4955,9188],[4956,9188],[4957,9188],[4958,9188],[4959,9188],[4960,9188],[4961,9188],[4962,9188],[4963,9189],[4964,9189],[4965,9189],[4966,9189],[4967,9189],[4968,9189],[4969,9189],[4970,9189],[4971,9189],[4972,9189],[4973,9189],[4974,9189],[4975,9188],[4976,9188],[4977,9188],[4978,9188],[4979,9188],[4980,9188],[4981,9189],[4982,9188],[4983,9188],[4984,9188],[4985,9189],[4986,9189],[4987,9189],[4988,9188],[4989,9188],[4990,9188],[4991,9188],[4992,9188],[4993,9189],[4994,9189],[4995,9189],[4996,9188],[4997,9189],[4998,9188],[4999,9188],[5000,9188],[5001,9189],[5002,9188],[5003,9188],[5004,9188],[5005,9188],[5006,9188],[5007,9189],[5008,9189],[5009,9188],[5010,9188],[5011,9188],[5012,9188],[5013,9188],[5014,9188],[5015,9188],[5016,9188],[5017,9188],[5018,9188],[5019,9188],[5020,9188],[5021,9188],[5022,9188],[5023,9188],[5024,9188],[5025,9188],[5026,9188],[5027,9188],[5028,9188],[5029,9188],[5030,9188],[5031,9188],[5032,9188],[5033,9188],[5034,9188],[5035,9188],[5036,9188],[5037,9188],[5038,9188],[5039,9189],[5040,9189],[5041,9189],[5042,9188],[5043,9189],[5044,9189],[5045,9189],[5046,9189],[5047,9188],[5048,9188],[5049,9188],[5050,9188],[5051,9188],[5052,9188],[5053,9188],[5054,9188],[5055,9188],[5056,9189],[5057,9188],[5058,9188],[5059,9188],[5060,9188],[5061,9188],[5062,9188],[5063,9188],[5064,9188],[5065,9188],[5066,9188],[5067,9188],[5068,9188],[5069,9188],[5070,9188],[5071,9188],[5072,9188],[5073,9188],[5074,9188],[5075,9193],[5076,9194],[5077,9193],[5078,9188],[5079,9193],[5080,9194],[5081,9192],[5082,9194],[5083,9189],[5084,9189],[5085,9189],[5086,9191],[5087,9191],[5088,9191],[5089,9188],[5090,9188],[5091,9188],[5092,9189],[5093,9189],[5094,9189],[5095,9189],[5096,9188],[5097,9188],[5098,9188],[5100,9189],[5101,9192],[5106,9189],[5108,9189],[5109,9189],[5110,9188],[5111,9188],[5112,9193],[5115,9192],[5116,9189],[5117,9188],[5118,9188],[5119,9193],[5120,9188],[5134,9193],[5135,9193],[5136,9193],[5158,9191],[5162,9188],[5196,9189],[5219,9188],[5220,9191],[5221,9191],[5222,9191],[5235,9188],[5236,9192],[5237,9193],[5709,9193],[5710,9190],[5711,9190],[5714,9190],[5721,9194],[5722,9190],[5727,9190],[5728,9190],[5729,9190],[5730,9190],[5731,9194],[5732,9190],[5733,9190],[5734,9200],[5739,9188],[5741,9188],[5742,9188],[5748,9188],[5749,9188],[5750,9188],[5751,9190],[5784,9192],[5786,9191],[6013,9195],[6022,9189],[6034,9188],[6070,9188],[6073,9188],[6074,9188],[6078,9188],[6110,9188],[6173,9191],[6187,9188],[6253,9188],[6256,9188],[6267,9191],[6274,9188],[6275,9188],[6276,9188],[6279,9188],[6280,9188],[6281,9188],[6282,9188],[6283,9188],[6284,9188],[6294,9188],[6315,9193],[6317,9193],[6329,9188],[6330,9190],[6584,9192],[6592,9192],[6593,9188],[6618,9188],[6691,9190],[6702,9189],[6703,9188],[6716,9193],[6718,9190],[6737,9190],[6739,9188],[6744,9188],[6751,9191],[6752,9188],[6757,9188],[6767,9191],[6770,9188],[6778,9188],[6800,9199],[6801,9188],[6802,9188],[6803,9191],[6804,9191],[6805,9190],[6806,9191],[6807,9190],[6813,9188],[6814,9192],[6816,9188],[6820,9188],[6821,9188],[6822,9188],[6823,9188],[6824,9188],[6827,9204],[6828,9204],[6829,9204],[6830,9204],[6840,9190],[7072,9190],[7073,9189],[7079,9190],[7081,9191],[7082,9191],[7083,9191],[7084,9193],[7090,9190],[7112,9188],[7113,9190],[7120,9188],[7132,9191],[7151,9191],[7165,9190],[7173,9190],[7178,9188],[7192,9188],[7194,9188],[7195,9189],[7197,9189],[7206,9195],[7210,9193],[7226,9188],[7244,9191],[7251,9188],[7254,9188],[7262,9188],[7276,9188],[7303,9189],[7304,9188],[7305,9192],[7311,9192],[7317,9192],[7335,9188],[7341,9188],[7345,9188],[7348,9189],[7349,9189],[7351,9189],[7354,9188],[7355,9193],[7361,9188],[7362,9188],[7381,9189],[7388,9188],[7389,9192],[7396,9198],[7404,9188],[7431,9188],[7436,9188],[7446,9188],[7451,9190],[7456,9190],[7478,9188],[7493,9188],[7509,9188],[7518,9190],[7537,9193],[7540,9188],[7546,9188],[7552,9188],[7561,9188],[7574,9188],[7580,9188],[7593,9188],[7595,9188],[7599,9188],[7610,9188],[7624,9188],[7625,9189],[7627,9189],[7628,9193],[7629,9189],[7630,9190],[7704,9189],[7707,9188],[7708,9189],[7738,9188],[7743,9192],[7744,9190],[7745,9188],[7768,9189],[7785,9190],[7804,9191],[7820,9188],[7830,9191],[7841,9188],[7842,9188],[7843,9188],[7844,9188],[7845,9188],[7846,9188],[7847,9188],[7848,9188],[7851,9188],[7853,9188],[7855,9188],[7856,9188],[7858,9188],[7875,9196],[7881,9188],[7884,9192],[7885,9189],[7902,9190],[7974,9192],[7978,9193],[7990,9193],[8000,9191],[8002,9190],[8003,9193],[8008,9188],[8013,9192],[8016,9190],[8043,9190],[8060,9188],[8061,9188],[8062,9188],[8063,9188],[8064,9191],[8065,9188],[8066,9188],[8067,9191],[8068,9191],[8069,9191],[8070,9188],[8071,9191],[8072,9191],[8073,9188],[8074,9189],[8077,9188],[8087,9191],[8090,9188],[8123,9190],[8173,9193],[8178,9193],[8180,9193],[8182,9193],[8184,9193],[8187,9194],[8189,9193],[8191,9189],[8193,9189],[8258,9193],[8283,9192],[8291,9191],[8302,9189],[8303,9197],[8310,9192],[8317,9191],[8322,9190],[8323,9190],[8324,9189],[8325,9191],[8327,9188],[8328,9188],[8329,9188],[8330,9188],[8331,9191],[8346,9190],[9090,9193],[9091,9188],[9094,9190],[9095,9188],[9096,9188],[9097,9188],[9098,9188],[9099,9188],[9100,9204],[9101,9204],[9102,9204],[9103,9204],[9104,9190],[9105,9190],[9120,9188],[9122,9193],[9123,9193],[9124,9193],[9138,9190],[9143,9189],[9145,9191],[9164,9193],[9169,9190],[9177,9189],[9178,9189],[9179,9189],[9180,9189],[9181,9189],[9182,9189],[9183,9189],[9184,9189],[9185,9189],[9186,9189]],"b":[],"c":"OjAAAAEAAAAAABEAEAAAAN0CpQXODNcMog6HEisUrBqtGq4arxrOG88bjSOOI48jkCPFIw==","e":"OzAAAAEAAPchEQABAOUB6AGpA5MFAACeBQEAogUAAKQFAwCpBQAAsQUAALMFdw4sFDoCaBZnArcZfQA2GkMAexo+AKEbgwEmHeEACR7bBQ=="}],\ -["mavlink",{"t":"TTTFFSSSKFFGKRKTPPCNNNNNNNNNNCCHNNNNNNNNNNNNCNNNOHNNNMMNNNNNNCMNNNNNNNNNNMNNNNNOCNNNNNNMNNMMONNMNNNNCONNHHHHHMNMNNNNOMMNNNNNNNNMNNONNNNNNNNNNNNNNNNNNNNCCHHHPPPPPPPPPPPPPPPFPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPFPFPPPPPPPPPPPPPPPPPPPPPPTTTTTTTTTTPFPPFPFFPFTTTTTTTTTTTTTPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPFPFOPFPFPFPPFFPFTTTTTTPFPFPFPFPFPPPPGGGGGFFGGFGPFPPFPFPFTTTTTTTTTTTTPPPFPPPPFPFPFPPPPFPFPPPPPPPPFPFPPPPPPPPPPPFPFPPFPPPFPPFPPPPPPPPPPPPPPFPPPPPPPPPPPPPPPFFOPFPFPFPFPFPFPFPFPPPPPPPFPPPPPPPPPPPPPPPPPPPPPPPPPPFPFPFPFFGGGGGGGGGGGGGOOOGOPFPFPFPFPFPFPFPFPFPFPPPPPPPTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTPPPFPFPFPFPFPFPFGGOPFTTTTTTTTPFTTTPFTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTPPPPPPTTTTTTTTPFPFPFPFPFTTTTTTTTTTPFTTPFPFFGFFPPPPPPPPPPPPPPPPPPPPPPPTPPPPPPPPPPPPPFPPPPFPFOPFPPPPPPFPPPPPPPPFGGGGGGPFPPPPPPPPPPFPFTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTPFPFTTTTTTTTTTTTTTTTPPPPPPPPPPPFPFPFPFPFPFPFPPFFPFPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPTPPPPPPPPPPPPPPPFPFPFPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPFPFPPFPFPPPPPPPPPPFPFPFTTTTTTTTPFPFPFPFPPGGGFFFFGGGGGGGFGGGGGGGGGGGGFGPPPFPFPFPFTTTTTTTTTTTTTTTPPFFPFPFPFPFPFPFTTTTTTTTTTTTTTTPFPFTTTTTTTTTTTTTTPFPFPFGFFFOOOOPPPPPPPFPFPPPPFGGPFPPPPTPFPPPPPPPPPFPTTTPFPPFFPFPFPPFFPFPFPFPFPFPFGGFGPPPPPFPFPPPPPFPFPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPTPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPTTTTTTTTTTTTTTTTTTTTTTTPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPTTPPPPPPPPTTTTTTPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPTTTTTTTTTTTTTTTTTTTTTTTTPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPTTTTTTPTTTTTTTTTTTTTTTTTTTTTTTTTTPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPTTTTTTTTTTTTTTPFOOOOPFPFPFPFPFPFPFPFPFPFPPFPFPFPFPPFPPPPPPPFPOPPPPPPPPFPFPFPFGGGGGGGGGGGGGGGGGGGFGGGGFGGGGGGFGGGGGGGGGGGGGGGGGGGGGFFGGGGGGGFGGGGFGGGGPFPFPFPPPGPPFFPFPFPFPFPFPFPFPFPFPFPFPFPFPFPPPPPPPFPFPPPPPPPPPPPPFPFPGGGOPPPPPPPPFPFPFPFPFPFPPFPFPPPPFPFPPPFPPPPPPFPPPPPPPPPPPPPPPPPPPPPPPPPFPFPFPFTTTTTTTTTTTTPFPPPPFGGOOOGGFGGGPFPFPFPFPFPFPFPFPFPFPFPFPPPFPFPFPFPFPFPPPPPPPPPPPPPFPPFGGGPFPFPPFPFFPPFPFFPPPPPFPFPPPPPTTTTTPPPPPPPPPPPFPFPFPFPFPFPFPFPFPFPFPFPFPPOPFPFPPPPPPPPPPPPPPPPPPPPPPPPPPPFPFPFGGFGGGGGGPFPFPFPFPFPFPPPPPPPFPFTTPFGFPPPPPFPPPPPPFPPPPPPPPPPPPPPPPPFPPPPPPPPPPPPFPPPPPPTTTTTPPPPPPTTTPTTTTPFPTTTTTTTTPPPPPPFGGGGGGGFFFFGPFPFPFPFPFPFPPPPPPPFPFPFPPPPPOOOGGOGPFPFPFPPPPPPPPPPPPPPPPPPPPPFPPFFGGGPPPPOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONONNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOFNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNNNNNNPPPPPPPFPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPFPPPPPPPPPPPPPPPPPPPPPPTTTTTTTTTTPFTTTTTTTTTTTTTPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPFPFPFPPFFPFTTTTTTPFPFPFPFPPPPGGGGFFGGFGPPFPFPFTTTTTTTTTTTTPFPFPFPPPPFPFPFPPPPPPPPPPPFPFPPFPPPFPPFPPPPPPPPPPPPPPFPPPPPPPPPPPPPPPFFOPFPFPFPFPFPFPFPPPPPPPFPFFGGGGGGGGGGGPFPFPFPFPFTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTPFPFPFTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTPPPPPPTTTTTTTTPFPFTTTTTTTTTTPFTTPFPFGFFPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPFPFPPPPPPFPPPPPPPPFGGGGGGPFPFTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTPFPFTTTTTTTTTTTTTTTTPPPPPPPPPPPFPFPFPFPFPPFFPFPFPFPPPPPPPPPPFPFPFTTTTTTTTPFPFPFPFPPFFFFGGFGPFPFTTTTTTTTTTTTTTTPPFFPFPFPFPFPFPFTTTTTTTTTTTTTTTPFPFTTTTTTTTTTTTTTPFPFFFFOPFPFPPPPPFPPFFPFPFPPFFPFPFPFPFPFPFGPPPPPFPPPPPFPFPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPTPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPTTTTTTTTTTTTTTTTTTTTTTTPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPTTPPPPPPPPTTTTTTPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPTTTTTTTTTTTTTTTTTTTTTTTTPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPTTTTTTPTTTTTTTTTTTTTTTTTTTTTTTTTTPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPTTTTTTTTTTTTTTPFPFPFPFPFPFPFPFPFPPFPFPFPFPPFPPPPPPPFPOPPPPPPPPFGGGGGGGGGGGGGGGGGGFGGGGFGGGGGGFGGGGGGGGGGGGGGGGGGGGFFGGGGGFGGGGFGGGGPFPFPFPPPGPFPFPFPFPFPFPFPFPFPFPFPFPFPFPFPPPPPGPPPPPPPPFPFPFPFPFPFPPFPFPPPPFPFPPFPFPFPFPFTTTTTTTTTTTTPFPPPPFGGFGGGPFPFPFPFPFPFPFPFPPPFPFPFPFPPGGPFPFPPFPFFPPFPFFPFPPPPPTTTTTPPPPPPPPPPPFPFPFPFPFPFPFPFPFPFPFPFPFPPPPPPPPPPPPPPPPPPFPFPFGFGGGGPFPFPFPFPFPFPFPFTTPFFPPPPPFPPPPPPFPTTTTTTTTPPPPPPFGGFGPFPFPFPFPFPFPPPPPPPFPFPPPPPOGGOGPFPFPPPPPPPPPPPPPPPPPPPPPFPFGGGPPPPOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONONNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOONNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPGGPGPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOTTTTTTPPPPPPPFPFPPPGGGNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOONNNOOOOOONNNNNNNNNONNNNNNNNNNNNNNNNNNNOOOOONNNNNFNNNNNNNNNNNNNNPPPPPPPFPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPFPPPPPPPPPPPPPPPPPPPPPPTTTTTTTTTTPFTTTTTTTTTTTTTPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPFPFPFPPFFPFTTTTTTPFPFPFPFPPPPGGGGFFGGFGPPFPFPFTTTTTTTTTTTTPFPFPFPPPPFPFPFPPPPPPPPPPPFPFPPFPPPFPPFPPPPPPPPPPPPPPFPPPPPPPPPPPPPPPFFOPFPFPFPFPFPFPFPPPPPPPFPFFGGGGGGGGGGGPFPFPFPFPFTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTPFPFPFTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTPPPPPPTTTTTTTTPFPFTTTTTTTTTTPFTTPFPFGFFPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPFPFPPPPPPFPPPPPPPPFGGGGGGPFPFTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTPFPFTTTTTTTTTTTTTTTTPPPPPPPPPPPFPFPFPFPFPPFFPFPFPFPPPPPPPPPPFPFPFTTTTTTTTPFPFPFPFPPFFFFGGFGPFPFTTTTTTTTTTTTTTTPPFFPFPFPFPFPFPFTTTTTTTTTTTTTTTPFPFTTTTTTTTTTTTTTPFPFFFFOOPFPFPPPPPFPPFFPFPFPPFFPFPFPFPFPFPFGPPPPPFPPPPPFPFPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPTPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPTTTTTTTTTTTTTTTTTTTTTTTPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPTTPPPPPPPPTTTTTTPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPTTTTTTTTTTTTTTTTTTTTTTTTPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPTTTTTTPTTTTTTTTTTTTTTTTTTTTTTTTTTPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPTTTTTTTTTTTTTTPFPFPFPFPFPFPFPFPFPPFPFPFPFPPFPPPPPPPFPOPPPPPPPPFGGGGGGGGGGGGGGGGGGFGGGGFGGGGGGFGGGGGGGGGGGGGGGGGGGGFFGGGGGFGGGGFGGGGPFPFPFPPPGPFPFPFPFPFPFPFPFPFPFPFPFPFPFPFPPPPPGPPPPPPPPFPFPFPFPFPFPPFPFPPPPFPFPPFPFPFPFPFTTTTTTTTTTTTPFPPPPFGGFGGGPFPFPFPFPFPFPFPFPPPFPFPFPFPPGGPFPFPPFPFFPPFPFFPFPPPPPTTTTTPPPPPPPPPPPFPFPFPFPFPFPFPFPFPFPFPFPFPPPPPPPPPPPPPPPPPPFPFPFGFGGGGPFPFPFPFPFPFPFPFTTPFFPPPPPFPPPPPPFPPPPPPPPPPPPPPPPPFPPPPPPPPPPPPFPPPPPPTTTTTPPPPPPTTTPTTTTPFPTTTTTTTTPPPPPPFGGGGGGGFFFFGPFPFPFPFPFPFPPPPPPPFPFPPPPPOOGGOGPFPFPPPPPPPPPPPPPPPPPPPPPFPFGGGPPPPOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONONNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOH","n":["ENCODED_LEN","EXTRA_CRC","ID","MAVLinkV1MessageRaw","MAVLinkV2MessageRaw","MAV_STX","MAV_STX_V2","MAX_FRAME_SIZE","MavConnection","MavFrame","MavHeader","MavlinkVersion","Message","Message","MessageData","NAME","V1","V2","ardupilotmega","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","bytes","bytes_mut","calculate_crc","checksum","checksum","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","common","compatibility_flags","component_id","component_id","component_id","connect","default","default","default","default_message_from_id","deser","deser","deserialize","eq","eq","eq","eq","error","extra_crc","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","get_protocol_version","has_valid_crc","has_valid_crc","header","header","header","header","icarous","incompatibility_flags","into","into","into","into","into","message_id","message_id","message_id","message_id_from_name","message_name","msg","new","new","parse","payload","payload","payload_length","payload_length","peek_reader","protocol_version","raw_bytes","raw_bytes","read_v1_msg","read_v1_raw_message","read_v2_msg","read_v2_raw_message","read_versioned_msg","recv","recv_frame","send","send_default","send_frame","sequence","sequence","sequence","ser","ser","ser","serialize","serialize","serialize","serialize_message","serialize_message","serialize_message_data","serialize_message_data","set_protocol_version","system_id","system_id","system_id","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","uavionix","utils","write_v1_msg","write_v2_msg","write_versioned_msg","ACCELCAL_VEHICLE_POS_BACK","ACCELCAL_VEHICLE_POS_FAILED","ACCELCAL_VEHICLE_POS_LEFT","ACCELCAL_VEHICLE_POS_LEVEL","ACCELCAL_VEHICLE_POS_NOSEDOWN","ACCELCAL_VEHICLE_POS_NOSEUP","ACCELCAL_VEHICLE_POS_RIGHT","ACCELCAL_VEHICLE_POS_SUCCESS","ACTUATOR_CONFIGURATION_3D_MODE_OFF","ACTUATOR_CONFIGURATION_3D_MODE_ON","ACTUATOR_CONFIGURATION_BEEP","ACTUATOR_CONFIGURATION_NONE","ACTUATOR_CONFIGURATION_SPIN_DIRECTION1","ACTUATOR_CONFIGURATION_SPIN_DIRECTION2","ACTUATOR_CONTROL_TARGET","ACTUATOR_CONTROL_TARGET_DATA","ACTUATOR_OUTPUT_FUNCTION_MOTOR1","ACTUATOR_OUTPUT_FUNCTION_MOTOR10","ACTUATOR_OUTPUT_FUNCTION_MOTOR11","ACTUATOR_OUTPUT_FUNCTION_MOTOR12","ACTUATOR_OUTPUT_FUNCTION_MOTOR13","ACTUATOR_OUTPUT_FUNCTION_MOTOR14","ACTUATOR_OUTPUT_FUNCTION_MOTOR15","ACTUATOR_OUTPUT_FUNCTION_MOTOR16","ACTUATOR_OUTPUT_FUNCTION_MOTOR2","ACTUATOR_OUTPUT_FUNCTION_MOTOR3","ACTUATOR_OUTPUT_FUNCTION_MOTOR4","ACTUATOR_OUTPUT_FUNCTION_MOTOR5","ACTUATOR_OUTPUT_FUNCTION_MOTOR6","ACTUATOR_OUTPUT_FUNCTION_MOTOR7","ACTUATOR_OUTPUT_FUNCTION_MOTOR8","ACTUATOR_OUTPUT_FUNCTION_MOTOR9","ACTUATOR_OUTPUT_FUNCTION_NONE","ACTUATOR_OUTPUT_FUNCTION_SERVO1","ACTUATOR_OUTPUT_FUNCTION_SERVO10","ACTUATOR_OUTPUT_FUNCTION_SERVO11","ACTUATOR_OUTPUT_FUNCTION_SERVO12","ACTUATOR_OUTPUT_FUNCTION_SERVO13","ACTUATOR_OUTPUT_FUNCTION_SERVO14","ACTUATOR_OUTPUT_FUNCTION_SERVO15","ACTUATOR_OUTPUT_FUNCTION_SERVO16","ACTUATOR_OUTPUT_FUNCTION_SERVO2","ACTUATOR_OUTPUT_FUNCTION_SERVO3","ACTUATOR_OUTPUT_FUNCTION_SERVO4","ACTUATOR_OUTPUT_FUNCTION_SERVO5","ACTUATOR_OUTPUT_FUNCTION_SERVO6","ACTUATOR_OUTPUT_FUNCTION_SERVO7","ACTUATOR_OUTPUT_FUNCTION_SERVO8","ACTUATOR_OUTPUT_FUNCTION_SERVO9","ACTUATOR_OUTPUT_STATUS","ACTUATOR_OUTPUT_STATUS_DATA","ADAP_TUNING","ADAP_TUNING_DATA","ADSB_ALTITUDE_TYPE_GEOMETRIC","ADSB_ALTITUDE_TYPE_PRESSURE_QNH","ADSB_EMITTER_TYPE_EMERGENCY_SURFACE","ADSB_EMITTER_TYPE_GLIDER","ADSB_EMITTER_TYPE_HEAVY","ADSB_EMITTER_TYPE_HIGHLY_MANUV","ADSB_EMITTER_TYPE_HIGH_VORTEX_LARGE","ADSB_EMITTER_TYPE_LARGE","ADSB_EMITTER_TYPE_LIGHT","ADSB_EMITTER_TYPE_LIGHTER_AIR","ADSB_EMITTER_TYPE_NO_INFO","ADSB_EMITTER_TYPE_PARACHUTE","ADSB_EMITTER_TYPE_POINT_OBSTACLE","ADSB_EMITTER_TYPE_ROTOCRAFT","ADSB_EMITTER_TYPE_SERVICE_SURFACE","ADSB_EMITTER_TYPE_SMALL","ADSB_EMITTER_TYPE_SPACE","ADSB_EMITTER_TYPE_UAV","ADSB_EMITTER_TYPE_ULTRA_LIGHT","ADSB_EMITTER_TYPE_UNASSGINED3","ADSB_EMITTER_TYPE_UNASSIGNED","ADSB_EMITTER_TYPE_UNASSIGNED2","ADSB_FLAGS_BARO_VALID","ADSB_FLAGS_SIMULATED","ADSB_FLAGS_SOURCE_UAT","ADSB_FLAGS_VALID_ALTITUDE","ADSB_FLAGS_VALID_CALLSIGN","ADSB_FLAGS_VALID_COORDS","ADSB_FLAGS_VALID_HEADING","ADSB_FLAGS_VALID_SQUAWK","ADSB_FLAGS_VALID_VELOCITY","ADSB_FLAGS_VERTICAL_VELOCITY_VALID","ADSB_VEHICLE","ADSB_VEHICLE_DATA","AHRS","AHRS2","AHRS2_DATA","AHRS3","AHRS3_DATA","AHRS_DATA","AIRSPEED_AUTOCAL","AIRSPEED_AUTOCAL_DATA","AIS_FLAGS_HIGH_VELOCITY","AIS_FLAGS_LARGE_BOW_DIMENSION","AIS_FLAGS_LARGE_PORT_DIMENSION","AIS_FLAGS_LARGE_STARBOARD_DIMENSION","AIS_FLAGS_LARGE_STERN_DIMENSION","AIS_FLAGS_POSITION_ACCURACY","AIS_FLAGS_TURN_RATE_SIGN_ONLY","AIS_FLAGS_VALID_CALLSIGN","AIS_FLAGS_VALID_COG","AIS_FLAGS_VALID_DIMENSIONS","AIS_FLAGS_VALID_NAME","AIS_FLAGS_VALID_TURN_RATE","AIS_FLAGS_VALID_VELOCITY","AIS_NAV_AGROUND","AIS_NAV_AIS_SART","AIS_NAV_ANCHORED","AIS_NAV_DRAUGHT_CONSTRAINED","AIS_NAV_FISHING","AIS_NAV_MOORED","AIS_NAV_RESERVED_1","AIS_NAV_RESERVED_2","AIS_NAV_RESERVED_3","AIS_NAV_RESERVED_HSC","AIS_NAV_RESERVED_WIG","AIS_NAV_RESTRICTED_MANOEUVERABILITY","AIS_NAV_SAILING","AIS_NAV_UNKNOWN","AIS_NAV_UN_COMMANDED","AIS_TYPE_ANTI_POLLUTION","AIS_TYPE_CARGO","AIS_TYPE_CARGO_HAZARDOUS_A","AIS_TYPE_CARGO_HAZARDOUS_B","AIS_TYPE_CARGO_HAZARDOUS_C","AIS_TYPE_CARGO_HAZARDOUS_D","AIS_TYPE_CARGO_RESERVED_1","AIS_TYPE_CARGO_RESERVED_2","AIS_TYPE_CARGO_RESERVED_3","AIS_TYPE_CARGO_RESERVED_4","AIS_TYPE_CARGO_UNKNOWN","AIS_TYPE_DIVING","AIS_TYPE_DREDGING","AIS_TYPE_FISHING","AIS_TYPE_HSC","AIS_TYPE_HSC_HAZARDOUS_A","AIS_TYPE_HSC_HAZARDOUS_B","AIS_TYPE_HSC_HAZARDOUS_C","AIS_TYPE_HSC_HAZARDOUS_D","AIS_TYPE_HSC_RESERVED_1","AIS_TYPE_HSC_RESERVED_2","AIS_TYPE_HSC_RESERVED_3","AIS_TYPE_HSC_RESERVED_4","AIS_TYPE_HSC_UNKNOWN","AIS_TYPE_LAW_ENFORCEMENT","AIS_TYPE_MEDICAL_TRANSPORT","AIS_TYPE_MILITARY","AIS_TYPE_NONECOMBATANT","AIS_TYPE_OTHER","AIS_TYPE_OTHER_HAZARDOUS_A","AIS_TYPE_OTHER_HAZARDOUS_B","AIS_TYPE_OTHER_HAZARDOUS_C","AIS_TYPE_OTHER_HAZARDOUS_D","AIS_TYPE_OTHER_RESERVED_1","AIS_TYPE_OTHER_RESERVED_2","AIS_TYPE_OTHER_RESERVED_3","AIS_TYPE_OTHER_RESERVED_4","AIS_TYPE_OTHER_UNKNOWN","AIS_TYPE_PASSENGER","AIS_TYPE_PASSENGER_HAZARDOUS_A","AIS_TYPE_PASSENGER_HAZARDOUS_B","AIS_TYPE_PASSENGER_HAZARDOUS_C","AIS_TYPE_PASSENGER_HAZARDOUS_D","AIS_TYPE_PASSENGER_RESERVED_1","AIS_TYPE_PASSENGER_RESERVED_2","AIS_TYPE_PASSENGER_RESERVED_3","AIS_TYPE_PASSENGER_RESERVED_4","AIS_TYPE_PASSENGER_UNKNOWN","AIS_TYPE_PILOT","AIS_TYPE_PLEASURE","AIS_TYPE_PORT_TENDER","AIS_TYPE_RESERVED_1","AIS_TYPE_RESERVED_10","AIS_TYPE_RESERVED_11","AIS_TYPE_RESERVED_12","AIS_TYPE_RESERVED_13","AIS_TYPE_RESERVED_14","AIS_TYPE_RESERVED_15","AIS_TYPE_RESERVED_16","AIS_TYPE_RESERVED_17","AIS_TYPE_RESERVED_18","AIS_TYPE_RESERVED_19","AIS_TYPE_RESERVED_2","AIS_TYPE_RESERVED_20","AIS_TYPE_RESERVED_21","AIS_TYPE_RESERVED_3","AIS_TYPE_RESERVED_4","AIS_TYPE_RESERVED_5","AIS_TYPE_RESERVED_6","AIS_TYPE_RESERVED_7","AIS_TYPE_RESERVED_8","AIS_TYPE_RESERVED_9","AIS_TYPE_SAILING","AIS_TYPE_SAR","AIS_TYPE_SPARE_LOCAL_1","AIS_TYPE_SPARE_LOCAL_2","AIS_TYPE_TANKER","AIS_TYPE_TANKER_HAZARDOUS_A","AIS_TYPE_TANKER_HAZARDOUS_B","AIS_TYPE_TANKER_HAZARDOUS_C","AIS_TYPE_TANKER_HAZARDOUS_D","AIS_TYPE_TANKER_RESERVED_1","AIS_TYPE_TANKER_RESERVED_2","AIS_TYPE_TANKER_RESERVED_3","AIS_TYPE_TANKER_RESERVED_4","AIS_TYPE_TANKER_UNKNOWN","AIS_TYPE_TOWING","AIS_TYPE_TOWING_LARGE","AIS_TYPE_TUG","AIS_TYPE_UNKNOWN","AIS_TYPE_WIG","AIS_TYPE_WIG_HAZARDOUS_A","AIS_TYPE_WIG_HAZARDOUS_B","AIS_TYPE_WIG_HAZARDOUS_C","AIS_TYPE_WIG_HAZARDOUS_D","AIS_TYPE_WIG_RESERVED_1","AIS_TYPE_WIG_RESERVED_2","AIS_TYPE_WIG_RESERVED_3","AIS_TYPE_WIG_RESERVED_4","AIS_TYPE_WIG_RESERVED_5","AIS_VESSEL","AIS_VESSEL_DATA","ALTITUDE","ALTITUDE_DATA","AOA","AOA_SSA","AOA_SSA_DATA","AP_ADC","AP_ADC_DATA","ATTITUDE","ATTITUDE_DATA","ATTITUDE_QUATERNION","ATTITUDE_QUATERNION_COV","ATTITUDE_QUATERNION_COV_DATA","ATTITUDE_QUATERNION_DATA","ATTITUDE_TARGET","ATTITUDE_TARGET_DATA","ATTITUDE_TARGET_TYPEMASK_ATTITUDE_IGNORE","ATTITUDE_TARGET_TYPEMASK_BODY_PITCH_RATE_IGNORE","ATTITUDE_TARGET_TYPEMASK_BODY_ROLL_RATE_IGNORE","ATTITUDE_TARGET_TYPEMASK_BODY_YAW_RATE_IGNORE","ATTITUDE_TARGET_TYPEMASK_THROTTLE_IGNORE","ATTITUDE_TARGET_TYPEMASK_THRUST_BODY_SET","ATT_POS_MOCAP","ATT_POS_MOCAP_DATA","AUTH_KEY","AUTH_KEY_DATA","AUTOPILOT_STATE_FOR_GIMBAL_DEVICE","AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA","AUTOPILOT_VERSION","AUTOPILOT_VERSION_DATA","AUTOPILOT_VERSION_REQUEST","AUTOPILOT_VERSION_REQUEST_DATA","AUTOTUNE_AXIS_DEFAULT","AUTOTUNE_AXIS_PITCH","AUTOTUNE_AXIS_ROLL","AUTOTUNE_AXIS_YAW","AccelcalVehiclePos","ActuatorConfiguration","ActuatorOutputFunction","AdsbAltitudeType","AdsbEmitterType","AdsbFlags","AisFlags","AisNavStatus","AisType","AttitudeTargetTypemask","AutotuneAxis","BATTERY2","BATTERY2_DATA","BATTERY_FAULT_INCOMPATIBLE_CELLS_CONFIGURATION","BATTERY_STATUS","BATTERY_STATUS_DATA","BUTTON_CHANGE","BUTTON_CHANGE_DATA","CAMERA_CAPTURE_STATUS","CAMERA_CAPTURE_STATUS_DATA","CAMERA_CAP_FLAGS_CAN_CAPTURE_IMAGE_IN_VIDEO_MODE","CAMERA_CAP_FLAGS_CAN_CAPTURE_VIDEO_IN_IMAGE_MODE","CAMERA_CAP_FLAGS_CAPTURE_IMAGE","CAMERA_CAP_FLAGS_CAPTURE_VIDEO","CAMERA_CAP_FLAGS_HAS_BASIC_FOCUS","CAMERA_CAP_FLAGS_HAS_BASIC_ZOOM","CAMERA_CAP_FLAGS_HAS_IMAGE_SURVEY_MODE","CAMERA_CAP_FLAGS_HAS_MODES","CAMERA_CAP_FLAGS_HAS_TRACKING_GEO_STATUS","CAMERA_CAP_FLAGS_HAS_TRACKING_POINT","CAMERA_CAP_FLAGS_HAS_TRACKING_RECTANGLE","CAMERA_CAP_FLAGS_HAS_VIDEO_STREAM","CAMERA_FEEDBACK","CAMERA_FEEDBACK_BADEXPOSURE","CAMERA_FEEDBACK_CLOSEDLOOP","CAMERA_FEEDBACK_DATA","CAMERA_FEEDBACK_OPENLOOP","CAMERA_FEEDBACK_PHOTO","CAMERA_FEEDBACK_VIDEO","CAMERA_FOV_STATUS","CAMERA_FOV_STATUS_DATA","CAMERA_IMAGE_CAPTURED","CAMERA_IMAGE_CAPTURED_DATA","CAMERA_INFORMATION","CAMERA_INFORMATION_DATA","CAMERA_MODE_IMAGE","CAMERA_MODE_IMAGE_SURVEY","CAMERA_MODE_VIDEO","CAMERA_SETTINGS","CAMERA_SETTINGS_DATA","CAMERA_STATUS","CAMERA_STATUS_DATA","CAMERA_STATUS_TYPE_DISCONNECT","CAMERA_STATUS_TYPE_ERROR","CAMERA_STATUS_TYPE_HEARTBEAT","CAMERA_STATUS_TYPE_LOWBATT","CAMERA_STATUS_TYPE_LOWSTORE","CAMERA_STATUS_TYPE_LOWSTOREV","CAMERA_STATUS_TYPE_TRIGGER","CAMERA_TRACKING_GEO_STATUS","CAMERA_TRACKING_GEO_STATUS_DATA","CAMERA_TRACKING_IMAGE_STATUS","CAMERA_TRACKING_IMAGE_STATUS_DATA","CAMERA_TRACKING_MODE_NONE","CAMERA_TRACKING_MODE_POINT","CAMERA_TRACKING_MODE_RECTANGLE","CAMERA_TRACKING_STATUS_FLAGS_ACTIVE","CAMERA_TRACKING_STATUS_FLAGS_ERROR","CAMERA_TRACKING_STATUS_FLAGS_IDLE","CAMERA_TRACKING_TARGET_DATA_EMBEDDED","CAMERA_TRACKING_TARGET_DATA_IN_STATUS","CAMERA_TRACKING_TARGET_DATA_NONE","CAMERA_TRACKING_TARGET_DATA_RENDERED","CAMERA_TRIGGER","CAMERA_TRIGGER_DATA","CANFD_FRAME","CANFD_FRAME_DATA","CAN_FILTER_ADD","CAN_FILTER_MODIFY","CAN_FILTER_MODIFY_DATA","CAN_FILTER_REMOVE","CAN_FILTER_REPLACE","CAN_FRAME","CAN_FRAME_DATA","CELLULAR_CONFIG","CELLULAR_CONFIG_BLOCKED_PUK_REQUIRED","CELLULAR_CONFIG_DATA","CELLULAR_CONFIG_RESPONSE_ACCEPTED","CELLULAR_CONFIG_RESPONSE_APN_ERROR","CELLULAR_CONFIG_RESPONSE_PIN_ERROR","CELLULAR_CONFIG_RESPONSE_REJECTED","CELLULAR_NETWORK_FAILED_REASON_NONE","CELLULAR_NETWORK_FAILED_REASON_SIM_ERROR","CELLULAR_NETWORK_FAILED_REASON_SIM_MISSING","CELLULAR_NETWORK_FAILED_REASON_UNKNOWN","CELLULAR_NETWORK_RADIO_TYPE_CDMA","CELLULAR_NETWORK_RADIO_TYPE_GSM","CELLULAR_NETWORK_RADIO_TYPE_LTE","CELLULAR_NETWORK_RADIO_TYPE_NONE","CELLULAR_NETWORK_RADIO_TYPE_WCDMA","CELLULAR_STATUS","CELLULAR_STATUS_DATA","CELLULAR_STATUS_FLAG_CONNECTED","CELLULAR_STATUS_FLAG_CONNECTING","CELLULAR_STATUS_FLAG_DISABLED","CELLULAR_STATUS_FLAG_DISABLING","CELLULAR_STATUS_FLAG_DISCONNECTING","CELLULAR_STATUS_FLAG_ENABLED","CELLULAR_STATUS_FLAG_ENABLING","CELLULAR_STATUS_FLAG_FAILED","CELLULAR_STATUS_FLAG_INITIALIZING","CELLULAR_STATUS_FLAG_LOCKED","CELLULAR_STATUS_FLAG_REGISTERED","CELLULAR_STATUS_FLAG_SEARCHING","CELLULAR_STATUS_FLAG_UNKNOWN","CHANGE_OPERATOR_CONTROL","CHANGE_OPERATOR_CONTROL_ACK","CHANGE_OPERATOR_CONTROL_ACK_DATA","CHANGE_OPERATOR_CONTROL_DATA","COG","COLLISION","COLLISION_DATA","COMMAND_ACK","COMMAND_ACK_DATA","COMMAND_CANCEL","COMMAND_CANCEL_DATA","COMMAND_INT","COMMAND_INT_DATA","COMMAND_LONG","COMMAND_LONG_DATA","COMPASSMOT_STATUS","COMPASSMOT_STATUS_DATA","COMPONENT_INFORMATION","COMPONENT_INFORMATION_DATA","COMPONENT_METADATA","COMPONENT_METADATA_DATA","COMP_METADATA_TYPE_ACTUATORS","COMP_METADATA_TYPE_COMMANDS","COMP_METADATA_TYPE_EVENTS","COMP_METADATA_TYPE_GENERAL","COMP_METADATA_TYPE_PARAMETER","COMP_METADATA_TYPE_PERIPHERALS","CONTROL_SYSTEM_STATE","CONTROL_SYSTEM_STATE_DATA","COPTER_MODE_ACRO","COPTER_MODE_ALT_HOLD","COPTER_MODE_AUTO","COPTER_MODE_AUTOROTATE","COPTER_MODE_AUTOTUNE","COPTER_MODE_AUTO_RTL","COPTER_MODE_AVOID_ADSB","COPTER_MODE_BRAKE","COPTER_MODE_CIRCLE","COPTER_MODE_DRIFT","COPTER_MODE_FLIP","COPTER_MODE_FLOWHOLD","COPTER_MODE_FOLLOW","COPTER_MODE_GUIDED","COPTER_MODE_GUIDED_NOGPS","COPTER_MODE_LAND","COPTER_MODE_LOITER","COPTER_MODE_POSHOLD","COPTER_MODE_RTL","COPTER_MODE_SMART_RTL","COPTER_MODE_SPORT","COPTER_MODE_STABILIZE","COPTER_MODE_SYSTEMID","COPTER_MODE_THROW","COPTER_MODE_ZIGZAG","CUBEPILOT_FIRMWARE_UPDATE_RESP","CUBEPILOT_FIRMWARE_UPDATE_RESP_DATA","CUBEPILOT_FIRMWARE_UPDATE_START","CUBEPILOT_FIRMWARE_UPDATE_START_DATA","CUBEPILOT_RAW_RC","CUBEPILOT_RAW_RC_DATA","CURRENT_EVENT_SEQUENCE","CURRENT_EVENT_SEQUENCE_DATA","CameraCapFlags","CameraFeedbackFlags","CameraMode","CameraStatusTypes","CameraTrackingMode","CameraTrackingStatusFlags","CameraTrackingTargetData","CameraZoomType","CanFilterOp","CellularConfigResponse","CellularNetworkFailedReason","CellularNetworkRadioType","CellularStatusFlag","CompMetadataType","CompensationX","CompensationY","CompensationZ","CopterMode","D","DATA16","DATA16_DATA","DATA32","DATA32_DATA","DATA64","DATA64_DATA","DATA96","DATA96_DATA","DATA_STREAM","DATA_STREAM_DATA","DATA_TRANSMISSION_HANDSHAKE","DATA_TRANSMISSION_HANDSHAKE_DATA","DEBUG","DEBUG_DATA","DEBUG_FLOAT_ARRAY","DEBUG_FLOAT_ARRAY_DATA","DEBUG_VECT","DEBUG_VECT_DATA","DEEPSTALL","DEEPSTALL_DATA","DEEPSTALL_STAGE_APPROACH","DEEPSTALL_STAGE_ARC","DEEPSTALL_STAGE_ESTIMATE_WIND","DEEPSTALL_STAGE_FLY_TO_ARC","DEEPSTALL_STAGE_FLY_TO_LANDING","DEEPSTALL_STAGE_LAND","DEEPSTALL_STAGE_WAIT_FOR_BREAKOUT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEVICE_OP_BUSTYPE_I2C","DEVICE_OP_BUSTYPE_SPI","DEVICE_OP_READ","DEVICE_OP_READ_DATA","DEVICE_OP_READ_REPLY","DEVICE_OP_READ_REPLY_DATA","DEVICE_OP_WRITE","DEVICE_OP_WRITE_DATA","DEVICE_OP_WRITE_REPLY","DEVICE_OP_WRITE_REPLY_DATA","DIGICAM_CONFIGURE","DIGICAM_CONFIGURE_DATA","DIGICAM_CONTROL","DIGICAM_CONTROL_DATA","DISTANCE_SENSOR","DISTANCE_SENSOR_DATA","DeepstallStage","DeviceOpBustype","EAS2TAS","EFI_STATUS","EFI_STATUS_DATA","EKF_ATTITUDE","EKF_CONST_POS_MODE","EKF_POS_HORIZ_ABS","EKF_POS_HORIZ_REL","EKF_POS_VERT_ABS","EKF_POS_VERT_AGL","EKF_PRED_POS_HORIZ_ABS","EKF_PRED_POS_HORIZ_REL","EKF_STATUS_REPORT","EKF_STATUS_REPORT_DATA","EKF_UNINITIALIZED","EKF_VELOCITY_HORIZ","EKF_VELOCITY_VERT","ENCAPSULATED_DATA","ENCAPSULATED_DATA_DATA","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ESC_CONNECTION_TYPE_CAN","ESC_CONNECTION_TYPE_DSHOT","ESC_CONNECTION_TYPE_I2C","ESC_CONNECTION_TYPE_ONESHOT","ESC_CONNECTION_TYPE_PPM","ESC_CONNECTION_TYPE_SERIAL","ESC_FAILURE_GENERIC","ESC_FAILURE_INCONSISTENT_CMD","ESC_FAILURE_MOTOR_STUCK","ESC_FAILURE_NONE","ESC_FAILURE_OVER_CURRENT","ESC_FAILURE_OVER_RPM","ESC_FAILURE_OVER_TEMPERATURE","ESC_FAILURE_OVER_VOLTAGE","ESC_INFO","ESC_INFO_DATA","ESC_STATUS","ESC_STATUS_DATA","ESC_TELEMETRY_1_TO_4","ESC_TELEMETRY_1_TO_4_DATA","ESC_TELEMETRY_5_TO_8","ESC_TELEMETRY_5_TO_8_DATA","ESC_TELEMETRY_9_TO_12","ESC_TELEMETRY_9_TO_12_DATA","ESTIMATOR_ACCEL_ERROR","ESTIMATOR_ATTITUDE","ESTIMATOR_CONST_POS_MODE","ESTIMATOR_GPS_GLITCH","ESTIMATOR_POS_HORIZ_ABS","ESTIMATOR_POS_HORIZ_REL","ESTIMATOR_POS_VERT_ABS","ESTIMATOR_POS_VERT_AGL","ESTIMATOR_PRED_POS_HORIZ_ABS","ESTIMATOR_PRED_POS_HORIZ_REL","ESTIMATOR_STATUS","ESTIMATOR_STATUS_DATA","ESTIMATOR_VELOCITY_HORIZ","ESTIMATOR_VELOCITY_VERT","EVENT","EVENT_DATA","EXTENDED_SYS_STATE","EXTENDED_SYS_STATE_DATA","EkfStatusFlags","EscConnectionType","EscFailureFlags","EstimatorStatusFlags","FAILURE_TYPE_DELAYED","FAILURE_TYPE_GARBAGE","FAILURE_TYPE_INTERMITTENT","FAILURE_TYPE_OFF","FAILURE_TYPE_OK","FAILURE_TYPE_SLOW","FAILURE_TYPE_STUCK","FAILURE_TYPE_WRONG","FAILURE_UNIT_SENSOR_ACCEL","FAILURE_UNIT_SENSOR_AIRSPEED","FAILURE_UNIT_SENSOR_BARO","FAILURE_UNIT_SENSOR_DISTANCE_SENSOR","FAILURE_UNIT_SENSOR_GPS","FAILURE_UNIT_SENSOR_GYRO","FAILURE_UNIT_SENSOR_MAG","FAILURE_UNIT_SENSOR_OPTICAL_FLOW","FAILURE_UNIT_SENSOR_VIO","FAILURE_UNIT_SYSTEM_AVOIDANCE","FAILURE_UNIT_SYSTEM_BATTERY","FAILURE_UNIT_SYSTEM_MAVLINK_SIGNAL","FAILURE_UNIT_SYSTEM_MOTOR","FAILURE_UNIT_SYSTEM_RC_SIGNAL","FAILURE_UNIT_SYSTEM_SERVO","FAVORABLE_WIND","FENCE_ACTION_GUIDED","FENCE_ACTION_GUIDED_THR_PASS","FENCE_ACTION_HOLD","FENCE_ACTION_LAND","FENCE_ACTION_NONE","FENCE_ACTION_REPORT","FENCE_ACTION_RTL","FENCE_ACTION_TERMINATE","FENCE_BREACH_BOUNDARY","FENCE_BREACH_MAXALT","FENCE_BREACH_MINALT","FENCE_BREACH_NONE","FENCE_FETCH_POINT","FENCE_FETCH_POINT_DATA","FENCE_MITIGATE_NONE","FENCE_MITIGATE_UNKNOWN","FENCE_MITIGATE_VEL_LIMIT","FENCE_POINT","FENCE_POINT_DATA","FENCE_STATUS","FENCE_STATUS_DATA","FF","FILE_TRANSFER_PROTOCOL","FILE_TRANSFER_PROTOCOL_DATA","FIRMWARE_VERSION_TYPE_ALPHA","FIRMWARE_VERSION_TYPE_BETA","FIRMWARE_VERSION_TYPE_DEV","FIRMWARE_VERSION_TYPE_OFFICIAL","FIRMWARE_VERSION_TYPE_RC","FLIGHT_INFORMATION","FLIGHT_INFORMATION_DATA","FOCUS_TYPE_AUTO","FOCUS_TYPE_AUTO_CONTINUOUS","FOCUS_TYPE_AUTO_SINGLE","FOCUS_TYPE_CONTINUOUS","FOCUS_TYPE_METERS","FOCUS_TYPE_RANGE","FOCUS_TYPE_STEP","FOLLOW_TARGET","FOLLOW_TARGET_DATA","FailureType","FailureUnit","FenceAction","FenceBreach","FenceMitigate","FirmwareVersionType","GENERATOR_STATUS","GENERATOR_STATUS_DATA","GIMBAL_AXIS_CALIBRATION_REQUIRED_FALSE","GIMBAL_AXIS_CALIBRATION_REQUIRED_TRUE","GIMBAL_AXIS_CALIBRATION_REQUIRED_UNKNOWN","GIMBAL_AXIS_CALIBRATION_STATUS_FAILED","GIMBAL_AXIS_CALIBRATION_STATUS_IN_PROGRESS","GIMBAL_AXIS_CALIBRATION_STATUS_SUCCEEDED","GIMBAL_AXIS_PITCH","GIMBAL_AXIS_ROLL","GIMBAL_AXIS_YAW","GIMBAL_CONTROL","GIMBAL_CONTROL_DATA","GIMBAL_DEVICE_ATTITUDE_STATUS","GIMBAL_DEVICE_ATTITUDE_STATUS_DATA","GIMBAL_DEVICE_CAP_FLAGS_HAS_NEUTRAL","GIMBAL_DEVICE_CAP_FLAGS_HAS_PITCH_AXIS","GIMBAL_DEVICE_CAP_FLAGS_HAS_PITCH_FOLLOW","GIMBAL_DEVICE_CAP_FLAGS_HAS_PITCH_LOCK","GIMBAL_DEVICE_CAP_FLAGS_HAS_RC_INPUTS","GIMBAL_DEVICE_CAP_FLAGS_HAS_RETRACT","GIMBAL_DEVICE_CAP_FLAGS_HAS_ROLL_AXIS","GIMBAL_DEVICE_CAP_FLAGS_HAS_ROLL_FOLLOW","GIMBAL_DEVICE_CAP_FLAGS_HAS_ROLL_LOCK","GIMBAL_DEVICE_CAP_FLAGS_HAS_YAW_AXIS","GIMBAL_DEVICE_CAP_FLAGS_HAS_YAW_FOLLOW","GIMBAL_DEVICE_CAP_FLAGS_HAS_YAW_LOCK","GIMBAL_DEVICE_CAP_FLAGS_SUPPORTS_INFINITE_YAW","GIMBAL_DEVICE_CAP_FLAGS_SUPPORTS_YAW_IN_EARTH_FRAME","GIMBAL_DEVICE_ERROR_FLAGS_AT_PITCH_LIMIT","GIMBAL_DEVICE_ERROR_FLAGS_AT_ROLL_LIMIT","GIMBAL_DEVICE_ERROR_FLAGS_AT_YAW_LIMIT","GIMBAL_DEVICE_ERROR_FLAGS_CALIBRATION_RUNNING","GIMBAL_DEVICE_ERROR_FLAGS_COMMS_ERROR","GIMBAL_DEVICE_ERROR_FLAGS_ENCODER_ERROR","GIMBAL_DEVICE_ERROR_FLAGS_MOTOR_ERROR","GIMBAL_DEVICE_ERROR_FLAGS_NO_MANAGER","GIMBAL_DEVICE_ERROR_FLAGS_POWER_ERROR","GIMBAL_DEVICE_ERROR_FLAGS_SOFTWARE_ERROR","GIMBAL_DEVICE_FLAGS_ACCEPTS_YAW_IN_EARTH_FRAME","GIMBAL_DEVICE_FLAGS_NEUTRAL","GIMBAL_DEVICE_FLAGS_PITCH_LOCK","GIMBAL_DEVICE_FLAGS_RC_EXCLUSIVE","GIMBAL_DEVICE_FLAGS_RC_MIXED","GIMBAL_DEVICE_FLAGS_RETRACT","GIMBAL_DEVICE_FLAGS_ROLL_LOCK","GIMBAL_DEVICE_FLAGS_YAW_IN_EARTH_FRAME","GIMBAL_DEVICE_FLAGS_YAW_IN_VEHICLE_FRAME","GIMBAL_DEVICE_FLAGS_YAW_LOCK","GIMBAL_DEVICE_INFORMATION","GIMBAL_DEVICE_INFORMATION_DATA","GIMBAL_DEVICE_SET_ATTITUDE","GIMBAL_DEVICE_SET_ATTITUDE_DATA","GIMBAL_MANAGER_CAP_FLAGS_CAN_POINT_LOCATION_GLOBAL","GIMBAL_MANAGER_CAP_FLAGS_CAN_POINT_LOCATION_LOCAL","GIMBAL_MANAGER_CAP_FLAGS_HAS_NEUTRAL","GIMBAL_MANAGER_CAP_FLAGS_HAS_PITCH_AXIS","GIMBAL_MANAGER_CAP_FLAGS_HAS_PITCH_FOLLOW","GIMBAL_MANAGER_CAP_FLAGS_HAS_PITCH_LOCK","GIMBAL_MANAGER_CAP_FLAGS_HAS_RC_INPUTS","GIMBAL_MANAGER_CAP_FLAGS_HAS_RETRACT","GIMBAL_MANAGER_CAP_FLAGS_HAS_ROLL_AXIS","GIMBAL_MANAGER_CAP_FLAGS_HAS_ROLL_FOLLOW","GIMBAL_MANAGER_CAP_FLAGS_HAS_ROLL_LOCK","GIMBAL_MANAGER_CAP_FLAGS_HAS_YAW_AXIS","GIMBAL_MANAGER_CAP_FLAGS_HAS_YAW_FOLLOW","GIMBAL_MANAGER_CAP_FLAGS_HAS_YAW_LOCK","GIMBAL_MANAGER_CAP_FLAGS_SUPPORTS_INFINITE_YAW","GIMBAL_MANAGER_CAP_FLAGS_SUPPORTS_YAW_IN_EARTH_FRAME","GIMBAL_MANAGER_FLAGS_ACCEPTS_YAW_IN_EARTH_FRAME","GIMBAL_MANAGER_FLAGS_NEUTRAL","GIMBAL_MANAGER_FLAGS_PITCH_LOCK","GIMBAL_MANAGER_FLAGS_RC_EXCLUSIVE","GIMBAL_MANAGER_FLAGS_RC_MIXED","GIMBAL_MANAGER_FLAGS_RETRACT","GIMBAL_MANAGER_FLAGS_ROLL_LOCK","GIMBAL_MANAGER_FLAGS_YAW_IN_EARTH_FRAME","GIMBAL_MANAGER_FLAGS_YAW_IN_VEHICLE_FRAME","GIMBAL_MANAGER_FLAGS_YAW_LOCK","GIMBAL_MANAGER_INFORMATION","GIMBAL_MANAGER_INFORMATION_DATA","GIMBAL_MANAGER_SET_ATTITUDE","GIMBAL_MANAGER_SET_ATTITUDE_DATA","GIMBAL_MANAGER_SET_MANUAL_CONTROL","GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA","GIMBAL_MANAGER_SET_PITCHYAW","GIMBAL_MANAGER_SET_PITCHYAW_DATA","GIMBAL_MANAGER_STATUS","GIMBAL_MANAGER_STATUS_DATA","GIMBAL_REPORT","GIMBAL_REPORT_DATA","GIMBAL_TORQUE_CMD_REPORT","GIMBAL_TORQUE_CMD_REPORT_DATA","GLOBAL_POSITION_INT","GLOBAL_POSITION_INT_COV","GLOBAL_POSITION_INT_COV_DATA","GLOBAL_POSITION_INT_DATA","GLOBAL_VISION_POSITION_ESTIMATE","GLOBAL_VISION_POSITION_ESTIMATE_DATA","GOPRO_BURST_RATE_10_IN_1_SECOND","GOPRO_BURST_RATE_10_IN_2_SECOND","GOPRO_BURST_RATE_10_IN_3_SECOND","GOPRO_BURST_RATE_30_IN_1_SECOND","GOPRO_BURST_RATE_30_IN_2_SECOND","GOPRO_BURST_RATE_30_IN_3_SECOND","GOPRO_BURST_RATE_30_IN_6_SECOND","GOPRO_BURST_RATE_3_IN_1_SECOND","GOPRO_BURST_RATE_5_IN_1_SECOND","GOPRO_CAPTURE_MODE_BURST","GOPRO_CAPTURE_MODE_MULTI_SHOT","GOPRO_CAPTURE_MODE_PHOTO","GOPRO_CAPTURE_MODE_PLAYBACK","GOPRO_CAPTURE_MODE_SETUP","GOPRO_CAPTURE_MODE_TIME_LAPSE","GOPRO_CAPTURE_MODE_UNKNOWN","GOPRO_CAPTURE_MODE_VIDEO","GOPRO_CHARGING_DISABLED","GOPRO_CHARGING_ENABLED","GOPRO_COMMAND_BATTERY","GOPRO_COMMAND_CAPTURE_MODE","GOPRO_COMMAND_CHARGING","GOPRO_COMMAND_LOW_LIGHT","GOPRO_COMMAND_MODEL","GOPRO_COMMAND_PHOTO_BURST_RATE","GOPRO_COMMAND_PHOTO_RESOLUTION","GOPRO_COMMAND_POWER","GOPRO_COMMAND_PROTUNE","GOPRO_COMMAND_PROTUNE_COLOUR","GOPRO_COMMAND_PROTUNE_EXPOSURE","GOPRO_COMMAND_PROTUNE_GAIN","GOPRO_COMMAND_PROTUNE_SHARPNESS","GOPRO_COMMAND_PROTUNE_WHITE_BALANCE","GOPRO_COMMAND_SHUTTER","GOPRO_COMMAND_TIME","GOPRO_COMMAND_VIDEO_SETTINGS","GOPRO_FIELD_OF_VIEW_MEDIUM","GOPRO_FIELD_OF_VIEW_NARROW","GOPRO_FIELD_OF_VIEW_WIDE","GOPRO_FLAG_RECORDING","GOPRO_FRAME_RATE_100","GOPRO_FRAME_RATE_12","GOPRO_FRAME_RATE_120","GOPRO_FRAME_RATE_12_5","GOPRO_FRAME_RATE_15","GOPRO_FRAME_RATE_24","GOPRO_FRAME_RATE_240","GOPRO_FRAME_RATE_25","GOPRO_FRAME_RATE_30","GOPRO_FRAME_RATE_48","GOPRO_FRAME_RATE_50","GOPRO_FRAME_RATE_60","GOPRO_FRAME_RATE_80","GOPRO_FRAME_RATE_90","GOPRO_GET_REQUEST","GOPRO_GET_REQUEST_DATA","GOPRO_GET_RESPONSE","GOPRO_GET_RESPONSE_DATA","GOPRO_HEARTBEAT","GOPRO_HEARTBEAT_DATA","GOPRO_HEARTBEAT_STATUS_CONNECTED","GOPRO_HEARTBEAT_STATUS_DISCONNECTED","GOPRO_HEARTBEAT_STATUS_ERROR","GOPRO_HEARTBEAT_STATUS_INCOMPATIBLE","GOPRO_MODEL_HERO_3_PLUS_BLACK","GOPRO_MODEL_HERO_3_PLUS_SILVER","GOPRO_MODEL_HERO_4_BLACK","GOPRO_MODEL_HERO_4_SILVER","GOPRO_MODEL_UNKNOWN","GOPRO_PHOTO_RESOLUTION_10MP_WIDE","GOPRO_PHOTO_RESOLUTION_12MP_WIDE","GOPRO_PHOTO_RESOLUTION_5MP_MEDIUM","GOPRO_PHOTO_RESOLUTION_7MP_MEDIUM","GOPRO_PHOTO_RESOLUTION_7MP_WIDE","GOPRO_PROTUNE_COLOUR_NEUTRAL","GOPRO_PROTUNE_COLOUR_STANDARD","GOPRO_PROTUNE_EXPOSURE_NEG_0_5","GOPRO_PROTUNE_EXPOSURE_NEG_1_0","GOPRO_PROTUNE_EXPOSURE_NEG_1_5","GOPRO_PROTUNE_EXPOSURE_NEG_2_0","GOPRO_PROTUNE_EXPOSURE_NEG_2_5","GOPRO_PROTUNE_EXPOSURE_NEG_3_0","GOPRO_PROTUNE_EXPOSURE_NEG_3_5","GOPRO_PROTUNE_EXPOSURE_NEG_4_0","GOPRO_PROTUNE_EXPOSURE_NEG_4_5","GOPRO_PROTUNE_EXPOSURE_NEG_5_0","GOPRO_PROTUNE_EXPOSURE_POS_0_5","GOPRO_PROTUNE_EXPOSURE_POS_1_0","GOPRO_PROTUNE_EXPOSURE_POS_1_5","GOPRO_PROTUNE_EXPOSURE_POS_2_0","GOPRO_PROTUNE_EXPOSURE_POS_2_5","GOPRO_PROTUNE_EXPOSURE_POS_3_0","GOPRO_PROTUNE_EXPOSURE_POS_3_5","GOPRO_PROTUNE_EXPOSURE_POS_4_0","GOPRO_PROTUNE_EXPOSURE_POS_4_5","GOPRO_PROTUNE_EXPOSURE_POS_5_0","GOPRO_PROTUNE_EXPOSURE_ZERO","GOPRO_PROTUNE_GAIN_1600","GOPRO_PROTUNE_GAIN_3200","GOPRO_PROTUNE_GAIN_400","GOPRO_PROTUNE_GAIN_6400","GOPRO_PROTUNE_GAIN_800","GOPRO_PROTUNE_SHARPNESS_HIGH","GOPRO_PROTUNE_SHARPNESS_LOW","GOPRO_PROTUNE_SHARPNESS_MEDIUM","GOPRO_PROTUNE_WHITE_BALANCE_3000K","GOPRO_PROTUNE_WHITE_BALANCE_5500K","GOPRO_PROTUNE_WHITE_BALANCE_6500K","GOPRO_PROTUNE_WHITE_BALANCE_AUTO","GOPRO_PROTUNE_WHITE_BALANCE_RAW","GOPRO_REQUEST_FAILED","GOPRO_REQUEST_SUCCESS","GOPRO_RESOLUTION_1080p","GOPRO_RESOLUTION_1080p_SUPERVIEW","GOPRO_RESOLUTION_1440p","GOPRO_RESOLUTION_2_7k_16_9","GOPRO_RESOLUTION_2_7k_17_9","GOPRO_RESOLUTION_2_7k_4_3","GOPRO_RESOLUTION_2_7k_SUPERVIEW","GOPRO_RESOLUTION_480p","GOPRO_RESOLUTION_4k_16_9","GOPRO_RESOLUTION_4k_17_9","GOPRO_RESOLUTION_4k_SUPERVIEW","GOPRO_RESOLUTION_720p","GOPRO_RESOLUTION_720p_SUPERVIEW","GOPRO_RESOLUTION_960p","GOPRO_SET_REQUEST","GOPRO_SET_REQUEST_DATA","GOPRO_SET_RESPONSE","GOPRO_SET_RESPONSE_DATA","GOPRO_VIDEO_SETTINGS_TV_MODE","GPS2_RAW","GPS2_RAW_DATA","GPS2_RTK","GPS2_RTK_DATA","GPS_FIX_TYPE_2D_FIX","GPS_FIX_TYPE_3D_FIX","GPS_FIX_TYPE_DGPS","GPS_FIX_TYPE_NO_FIX","GPS_FIX_TYPE_NO_GPS","GPS_FIX_TYPE_PPP","GPS_FIX_TYPE_RTK_FIXED","GPS_FIX_TYPE_RTK_FLOAT","GPS_FIX_TYPE_STATIC","GPS_GLOBAL_ORIGIN","GPS_GLOBAL_ORIGIN_DATA","GPS_INJECT_DATA","GPS_INJECT_DATA_DATA","GPS_INPUT","GPS_INPUT_DATA","GPS_INPUT_IGNORE_FLAG_ALT","GPS_INPUT_IGNORE_FLAG_HDOP","GPS_INPUT_IGNORE_FLAG_HORIZONTAL_ACCURACY","GPS_INPUT_IGNORE_FLAG_SPEED_ACCURACY","GPS_INPUT_IGNORE_FLAG_VDOP","GPS_INPUT_IGNORE_FLAG_VEL_HORIZ","GPS_INPUT_IGNORE_FLAG_VEL_VERT","GPS_INPUT_IGNORE_FLAG_VERTICAL_ACCURACY","GPS_RAW_INT","GPS_RAW_INT_DATA","GPS_RTCM_DATA","GPS_RTCM_DATA_DATA","GPS_RTK","GPS_RTK_DATA","GPS_STATUS","GPS_STATUS_DATA","GRIPPER_ACTION_GRAB","GRIPPER_ACTION_RELEASE","GimbalAxis","GimbalAxisCalibrationRequired","GimbalAxisCalibrationStatus","GimbalDeviceCapFlags","GimbalDeviceErrorFlags","GimbalDeviceFlags","GimbalManagerCapFlags","GimbalManagerFlags","GoproBurstRate","GoproCaptureMode","GoproCharging","GoproCommand","GoproFieldOfView","GoproFrameRate","GoproHeartbeatFlags","GoproHeartbeatStatus","GoproModel","GoproPhotoResolution","GoproProtuneColour","GoproProtuneExposure","GoproProtuneGain","GoproProtuneSharpness","GoproProtuneWhiteBalance","GoproRequestStatus","GoproResolution","GoproVideoSettingsFlags","GpsFixType","GpsInputIgnoreFlags","GripperActions","HEADING_TYPE_COURSE_OVER_GROUND","HEADING_TYPE_HEADING","HEARTBEAT","HEARTBEAT_DATA","HERELINK_TELEM","HERELINK_TELEM_DATA","HERELINK_VIDEO_STREAM_INFORMATION","HERELINK_VIDEO_STREAM_INFORMATION_DATA","HIGHRES_IMU","HIGHRES_IMU_DATA","HIGHRES_IMU_UPDATED_ABS_PRESSURE","HIGHRES_IMU_UPDATED_ALL","HIGHRES_IMU_UPDATED_DIFF_PRESSURE","HIGHRES_IMU_UPDATED_NONE","HIGHRES_IMU_UPDATED_PRESSURE_ALT","HIGHRES_IMU_UPDATED_TEMPERATURE","HIGHRES_IMU_UPDATED_XACC","HIGHRES_IMU_UPDATED_XGYRO","HIGHRES_IMU_UPDATED_XMAG","HIGHRES_IMU_UPDATED_YACC","HIGHRES_IMU_UPDATED_YGYRO","HIGHRES_IMU_UPDATED_YMAG","HIGHRES_IMU_UPDATED_ZACC","HIGHRES_IMU_UPDATED_ZGYRO","HIGHRES_IMU_UPDATED_ZMAG","HIGH_LATENCY","HIGH_LATENCY2","HIGH_LATENCY2_DATA","HIGH_LATENCY_DATA","HIL_ACTUATOR_CONTROLS","HIL_ACTUATOR_CONTROLS_DATA","HIL_CONTROLS","HIL_CONTROLS_DATA","HIL_GPS","HIL_GPS_DATA","HIL_OPTICAL_FLOW","HIL_OPTICAL_FLOW_DATA","HIL_RC_INPUTS_RAW","HIL_RC_INPUTS_RAW_DATA","HIL_SENSOR","HIL_SENSOR_DATA","HIL_SENSOR_UPDATED_ABS_PRESSURE","HIL_SENSOR_UPDATED_DIFF_PRESSURE","HIL_SENSOR_UPDATED_NONE","HIL_SENSOR_UPDATED_PRESSURE_ALT","HIL_SENSOR_UPDATED_RESET","HIL_SENSOR_UPDATED_TEMPERATURE","HIL_SENSOR_UPDATED_XACC","HIL_SENSOR_UPDATED_XGYRO","HIL_SENSOR_UPDATED_XMAG","HIL_SENSOR_UPDATED_YACC","HIL_SENSOR_UPDATED_YGYRO","HIL_SENSOR_UPDATED_YMAG","HIL_SENSOR_UPDATED_ZACC","HIL_SENSOR_UPDATED_ZGYRO","HIL_SENSOR_UPDATED_ZMAG","HIL_STATE","HIL_STATE_DATA","HIL_STATE_QUATERNION","HIL_STATE_QUATERNION_DATA","HL_FAILURE_FLAG_3D_ACCEL","HL_FAILURE_FLAG_3D_GYRO","HL_FAILURE_FLAG_3D_MAG","HL_FAILURE_FLAG_ABSOLUTE_PRESSURE","HL_FAILURE_FLAG_BATTERY","HL_FAILURE_FLAG_DIFFERENTIAL_PRESSURE","HL_FAILURE_FLAG_ENGINE","HL_FAILURE_FLAG_ESTIMATOR","HL_FAILURE_FLAG_GEOFENCE","HL_FAILURE_FLAG_GPS","HL_FAILURE_FLAG_MISSION","HL_FAILURE_FLAG_OFFBOARD_LINK","HL_FAILURE_FLAG_RC_RECEIVER","HL_FAILURE_FLAG_TERRAIN","HOME_POSITION","HOME_POSITION_DATA","HWSTATUS","HWSTATUS_DATA","HYGROMETER_SENSOR","HYGROMETER_SENSOR_DATA","HeadingType","HighresImuUpdatedFlags","HilSensorUpdatedFlags","HlFailureFlag","I","I2Cerr","ICAO","ICAO_address","ICAROUS_FMS_STATE_APPROACH","ICAROUS_FMS_STATE_CLIMB","ICAROUS_FMS_STATE_CRUISE","ICAROUS_FMS_STATE_IDLE","ICAROUS_FMS_STATE_LAND","ICAROUS_FMS_STATE_TAKEOFF","ICAROUS_HEARTBEAT","ICAROUS_HEARTBEAT_DATA","ICAROUS_KINEMATIC_BANDS","ICAROUS_KINEMATIC_BANDS_DATA","ICAROUS_TRACK_BAND_TYPE_NEAR","ICAROUS_TRACK_BAND_TYPE_NONE","ICAROUS_TRACK_BAND_TYPE_RECOVERY","ISBD_LINK_STATUS","ISBD_LINK_STATUS_DATA","IcarousFmsState","IcarousTrackBandTypes","LANDING_TARGET","LANDING_TARGET_DATA","LANDING_TARGET_TYPE_LIGHT_BEACON","LANDING_TARGET_TYPE_RADIO_BEACON","LANDING_TARGET_TYPE_VISION_FIDUCIAL","LANDING_TARGET_TYPE_VISION_OTHER","LAND_IMMEDIATELY","LED_CONTROL","LED_CONTROL_DATA","LED_CONTROL_PATTERN_CUSTOM","LED_CONTROL_PATTERN_FIRMWAREUPDATE","LED_CONTROL_PATTERN_OFF","LIMITS_DISABLED","LIMITS_ENABLED","LIMITS_INIT","LIMITS_RECOVERED","LIMITS_RECOVERING","LIMITS_STATUS","LIMITS_STATUS_DATA","LIMITS_TRIGGERED","LIMIT_ALTITUDE","LIMIT_GEOFENCE","LIMIT_GPSLOCK","LINK_NODE_STATUS","LINK_NODE_STATUS_DATA","LOCAL_POSITION_NED","LOCAL_POSITION_NED_COV","LOCAL_POSITION_NED_COV_DATA","LOCAL_POSITION_NED_DATA","LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET","LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA","LOGGING_ACK","LOGGING_ACK_DATA","LOGGING_DATA","LOGGING_DATA_ACKED","LOGGING_DATA_ACKED_DATA","LOGGING_DATA_DATA","LOG_DATA","LOG_DATA_DATA","LOG_ENTRY","LOG_ENTRY_DATA","LOG_ERASE","LOG_ERASE_DATA","LOG_REQUEST_DATA","LOG_REQUEST_DATA_DATA","LOG_REQUEST_END","LOG_REQUEST_END_DATA","LOG_REQUEST_LIST","LOG_REQUEST_LIST_DATA","LandingTargetType","LedControlPattern","LimitModule","LimitsState","MAG_CAL_BAD_ORIENTATION","MAG_CAL_BAD_RADIUS","MAG_CAL_FAILED","MAG_CAL_NOT_STARTED","MAG_CAL_PROGRESS","MAG_CAL_PROGRESS_DATA","MAG_CAL_REPORT","MAG_CAL_REPORT_DATA","MAG_CAL_RUNNING_STEP_ONE","MAG_CAL_RUNNING_STEP_TWO","MAG_CAL_SUCCESS","MAG_CAL_WAITING_TO_START","MANUAL_CONTROL","MANUAL_CONTROL_DATA","MANUAL_SETPOINT","MANUAL_SETPOINT_DATA","MAVLINK_DATA_STREAM_IMG_BMP","MAVLINK_DATA_STREAM_IMG_JPEG","MAVLINK_DATA_STREAM_IMG_PGM","MAVLINK_DATA_STREAM_IMG_PNG","MAVLINK_DATA_STREAM_IMG_RAW32U","MAVLINK_DATA_STREAM_IMG_RAW8U","MAV_ARM_AUTH_DENIED_REASON_AIRSPACE_IN_USE","MAV_ARM_AUTH_DENIED_REASON_BAD_WEATHER","MAV_ARM_AUTH_DENIED_REASON_GENERIC","MAV_ARM_AUTH_DENIED_REASON_INVALID_WAYPOINT","MAV_ARM_AUTH_DENIED_REASON_NONE","MAV_ARM_AUTH_DENIED_REASON_TIMEOUT","MAV_AUTOPILOT_AEROB","MAV_AUTOPILOT_AIRRAILS","MAV_AUTOPILOT_ARDUPILOTMEGA","MAV_AUTOPILOT_ARMAZILA","MAV_AUTOPILOT_ASLUAV","MAV_AUTOPILOT_AUTOQUAD","MAV_AUTOPILOT_FP","MAV_AUTOPILOT_GENERIC","MAV_AUTOPILOT_GENERIC_MISSION_FULL","MAV_AUTOPILOT_GENERIC_WAYPOINTS_AND_SIMPLE_NAVIGATION_ONLY","MAV_AUTOPILOT_GENERIC_WAYPOINTS_ONLY","MAV_AUTOPILOT_INVALID","MAV_AUTOPILOT_OPENPILOT","MAV_AUTOPILOT_PPZ","MAV_AUTOPILOT_PX4","MAV_AUTOPILOT_REFLEX","MAV_AUTOPILOT_RESERVED","MAV_AUTOPILOT_SLUGS","MAV_AUTOPILOT_SMACCMPILOT","MAV_AUTOPILOT_SMARTAP","MAV_AUTOPILOT_UDB","MAV_BATTERY_CHARGE_STATE_CHARGING","MAV_BATTERY_CHARGE_STATE_CRITICAL","MAV_BATTERY_CHARGE_STATE_EMERGENCY","MAV_BATTERY_CHARGE_STATE_FAILED","MAV_BATTERY_CHARGE_STATE_LOW","MAV_BATTERY_CHARGE_STATE_OK","MAV_BATTERY_CHARGE_STATE_UNDEFINED","MAV_BATTERY_CHARGE_STATE_UNHEALTHY","MAV_BATTERY_FAULT_CELL_FAIL","MAV_BATTERY_FAULT_DEEP_DISCHARGE","MAV_BATTERY_FAULT_INCOMPATIBLE_FIRMWARE","MAV_BATTERY_FAULT_INCOMPATIBLE_VOLTAGE","MAV_BATTERY_FAULT_OVER_CURRENT","MAV_BATTERY_FAULT_OVER_TEMPERATURE","MAV_BATTERY_FAULT_SPIKES","MAV_BATTERY_FAULT_UNDER_TEMPERATURE","MAV_BATTERY_FUNCTION_ALL","MAV_BATTERY_FUNCTION_AVIONICS","MAV_BATTERY_FUNCTION_PAYLOAD","MAV_BATTERY_FUNCTION_PROPULSION","MAV_BATTERY_FUNCTION_UNKNOWN","MAV_BATTERY_MODE_AUTO_DISCHARGING","MAV_BATTERY_MODE_HOT_SWAP","MAV_BATTERY_MODE_UNKNOWN","MAV_BATTERY_TYPE_LIFE","MAV_BATTERY_TYPE_LION","MAV_BATTERY_TYPE_LIPO","MAV_BATTERY_TYPE_NIMH","MAV_BATTERY_TYPE_UNKNOWN","MAV_CMD_ACCELCAL_VEHICLE_POS","MAV_CMD_ACK_ERR_ACCESS_DENIED","MAV_CMD_ACK_ERR_COORDINATES_OUT_OF_RANGE","MAV_CMD_ACK_ERR_COORDINATE_FRAME_NOT_SUPPORTED","MAV_CMD_ACK_ERR_FAIL","MAV_CMD_ACK_ERR_NOT_SUPPORTED","MAV_CMD_ACK_ERR_X_LAT_OUT_OF_RANGE","MAV_CMD_ACK_ERR_Y_LON_OUT_OF_RANGE","MAV_CMD_ACK_ERR_Z_ALT_OUT_OF_RANGE","MAV_CMD_ACK_OK","MAV_CMD_ACTUATOR_TEST","MAV_CMD_AIRFRAME_CONFIGURATION","MAV_CMD_ARM_AUTHORIZATION_REQUEST","MAV_CMD_BATTERY_RESET","MAV_CMD_CAMERA_STOP_TRACKING","MAV_CMD_CAMERA_TRACK_POINT","MAV_CMD_CAMERA_TRACK_RECTANGLE","MAV_CMD_CAN_FORWARD","MAV_CMD_COMPONENT_ARM_DISARM","MAV_CMD_CONDITION_CHANGE_ALT","MAV_CMD_CONDITION_DELAY","MAV_CMD_CONDITION_DISTANCE","MAV_CMD_CONDITION_GATE","MAV_CMD_CONDITION_LAST","MAV_CMD_CONDITION_YAW","MAV_CMD_CONFIGURE_ACTUATOR","MAV_CMD_CONTROL_HIGH_LATENCY","MAV_CMD_DEBUG_TRAP","MAV_CMD_DO_ACCEPT_MAG_CAL","MAV_CMD_DO_ADSB_OUT_IDENT","MAV_CMD_DO_AUTOTUNE_ENABLE","MAV_CMD_DO_AUX_FUNCTION","MAV_CMD_DO_AUX_FUNCTION_SWITCH_LEVEL_HIGH","MAV_CMD_DO_AUX_FUNCTION_SWITCH_LEVEL_LOW","MAV_CMD_DO_AUX_FUNCTION_SWITCH_LEVEL_MIDDLE","MAV_CMD_DO_CANCEL_MAG_CAL","MAV_CMD_DO_CHANGE_ALTITUDE","MAV_CMD_DO_CHANGE_SPEED","MAV_CMD_DO_CONTROL_VIDEO","MAV_CMD_DO_DIGICAM_CONFIGURE","MAV_CMD_DO_DIGICAM_CONTROL","MAV_CMD_DO_ENGINE_CONTROL","MAV_CMD_DO_FENCE_ENABLE","MAV_CMD_DO_FLIGHTTERMINATION","MAV_CMD_DO_FOLLOW","MAV_CMD_DO_FOLLOW_REPOSITION","MAV_CMD_DO_GIMBAL_MANAGER_CONFIGURE","MAV_CMD_DO_GIMBAL_MANAGER_PITCHYAW","MAV_CMD_DO_GO_AROUND","MAV_CMD_DO_GRIPPER","MAV_CMD_DO_GUIDED_LIMITS","MAV_CMD_DO_GUIDED_MASTER","MAV_CMD_DO_INVERTED_FLIGHT","MAV_CMD_DO_JUMP","MAV_CMD_DO_JUMP_TAG","MAV_CMD_DO_LAND_START","MAV_CMD_DO_LAST","MAV_CMD_DO_MOTOR_TEST","MAV_CMD_DO_MOUNT_CONFIGURE","MAV_CMD_DO_MOUNT_CONTROL","MAV_CMD_DO_MOUNT_CONTROL_QUAT","MAV_CMD_DO_ORBIT","MAV_CMD_DO_PARACHUTE","MAV_CMD_DO_PAUSE_CONTINUE","MAV_CMD_DO_RALLY_LAND","MAV_CMD_DO_REPEAT_RELAY","MAV_CMD_DO_REPEAT_SERVO","MAV_CMD_DO_REPOSITION","MAV_CMD_DO_SEND_BANNER","MAV_CMD_DO_SEND_SCRIPT_MESSAGE","MAV_CMD_DO_SET_ACTUATOR","MAV_CMD_DO_SET_CAM_TRIGG_DIST","MAV_CMD_DO_SET_CAM_TRIGG_INTERVAL","MAV_CMD_DO_SET_HOME","MAV_CMD_DO_SET_MISSION_CURRENT","MAV_CMD_DO_SET_MODE","MAV_CMD_DO_SET_PARAMETER","MAV_CMD_DO_SET_RELAY","MAV_CMD_DO_SET_RESUME_REPEAT_DIST","MAV_CMD_DO_SET_REVERSE","MAV_CMD_DO_SET_ROI","MAV_CMD_DO_SET_ROI_LOCATION","MAV_CMD_DO_SET_ROI_NONE","MAV_CMD_DO_SET_ROI_SYSID","MAV_CMD_DO_SET_ROI_WPNEXT_OFFSET","MAV_CMD_DO_SET_SERVO","MAV_CMD_DO_SPRAYER","MAV_CMD_DO_START_MAG_CAL","MAV_CMD_DO_TRIGGER_CONTROL","MAV_CMD_DO_VTOL_TRANSITION","MAV_CMD_DO_WINCH","MAV_CMD_FIXED_MAG_CAL","MAV_CMD_FIXED_MAG_CAL_FIELD","MAV_CMD_FIXED_MAG_CAL_YAW","MAV_CMD_FLASH_BOOTLOADER","MAV_CMD_GET_HOME_POSITION","MAV_CMD_GET_MESSAGE_INTERVAL","MAV_CMD_GIMBAL_AXIS_CALIBRATION_STATUS","MAV_CMD_GIMBAL_FULL_RESET","MAV_CMD_GIMBAL_REQUEST_AXIS_CALIBRATION","MAV_CMD_GIMBAL_RESET","MAV_CMD_GUIDED_CHANGE_ALTITUDE","MAV_CMD_GUIDED_CHANGE_HEADING","MAV_CMD_GUIDED_CHANGE_SPEED","MAV_CMD_ILLUMINATOR_ON_OFF","MAV_CMD_IMAGE_START_CAPTURE","MAV_CMD_IMAGE_STOP_CAPTURE","MAV_CMD_INJECT_FAILURE","MAV_CMD_JUMP_TAG","MAV_CMD_LOGGING_START","MAV_CMD_LOGGING_STOP","MAV_CMD_MISSION_START","MAV_CMD_NAV_ALTITUDE_WAIT","MAV_CMD_NAV_ATTITUDE_TIME","MAV_CMD_NAV_CONTINUE_AND_CHANGE_ALT","MAV_CMD_NAV_DELAY","MAV_CMD_NAV_FENCE_CIRCLE_EXCLUSION","MAV_CMD_NAV_FENCE_CIRCLE_INCLUSION","MAV_CMD_NAV_FENCE_POLYGON_VERTEX_EXCLUSION","MAV_CMD_NAV_FENCE_POLYGON_VERTEX_INCLUSION","MAV_CMD_NAV_FENCE_RETURN_POINT","MAV_CMD_NAV_FOLLOW","MAV_CMD_NAV_GUIDED_ENABLE","MAV_CMD_NAV_LAND","MAV_CMD_NAV_LAND_LOCAL","MAV_CMD_NAV_LAST","MAV_CMD_NAV_LOITER_TIME","MAV_CMD_NAV_LOITER_TO_ALT","MAV_CMD_NAV_LOITER_TURNS","MAV_CMD_NAV_LOITER_UNLIM","MAV_CMD_NAV_PATHPLANNING","MAV_CMD_NAV_PAYLOAD_PLACE","MAV_CMD_NAV_RALLY_POINT","MAV_CMD_NAV_RETURN_TO_LAUNCH","MAV_CMD_NAV_ROI","MAV_CMD_NAV_SCRIPT_TIME","MAV_CMD_NAV_SET_YAW_SPEED","MAV_CMD_NAV_SPLINE_WAYPOINT","MAV_CMD_NAV_TAKEOFF","MAV_CMD_NAV_TAKEOFF_LOCAL","MAV_CMD_NAV_VTOL_LAND","MAV_CMD_NAV_VTOL_TAKEOFF","MAV_CMD_NAV_WAYPOINT","MAV_CMD_OBLIQUE_SURVEY","MAV_CMD_OVERRIDE_GOTO","MAV_CMD_PANORAMA_CREATE","MAV_CMD_PAYLOAD_CONTROL_DEPLOY","MAV_CMD_PAYLOAD_PREPARE_DEPLOY","MAV_CMD_POWER_OFF_INITIATED","MAV_CMD_PREFLIGHT_CALIBRATION","MAV_CMD_PREFLIGHT_REBOOT_SHUTDOWN","MAV_CMD_PREFLIGHT_SET_SENSOR_OFFSETS","MAV_CMD_PREFLIGHT_STORAGE","MAV_CMD_PREFLIGHT_UAVCAN","MAV_CMD_REQUEST_AUTOPILOT_CAPABILITIES","MAV_CMD_REQUEST_CAMERA_CAPTURE_STATUS","MAV_CMD_REQUEST_CAMERA_IMAGE_CAPTURE","MAV_CMD_REQUEST_CAMERA_INFORMATION","MAV_CMD_REQUEST_CAMERA_SETTINGS","MAV_CMD_REQUEST_FLIGHT_INFORMATION","MAV_CMD_REQUEST_MESSAGE","MAV_CMD_REQUEST_PROTOCOL_VERSION","MAV_CMD_REQUEST_STORAGE_INFORMATION","MAV_CMD_REQUEST_VIDEO_STREAM_INFORMATION","MAV_CMD_REQUEST_VIDEO_STREAM_STATUS","MAV_CMD_RESET_CAMERA_SETTINGS","MAV_CMD_RUN_PREARM_CHECKS","MAV_CMD_SCRIPTING","MAV_CMD_SET_CAMERA_FOCUS","MAV_CMD_SET_CAMERA_MODE","MAV_CMD_SET_CAMERA_ZOOM","MAV_CMD_SET_EKF_SOURCE_SET","MAV_CMD_SET_FACTORY_TEST_MODE","MAV_CMD_SET_GUIDED_SUBMODE_CIRCLE","MAV_CMD_SET_GUIDED_SUBMODE_STANDARD","MAV_CMD_SET_MESSAGE_INTERVAL","MAV_CMD_SET_STORAGE_USAGE","MAV_CMD_SOLO_BTN_FLY_CLICK","MAV_CMD_SOLO_BTN_FLY_HOLD","MAV_CMD_SOLO_BTN_PAUSE_CLICK","MAV_CMD_SPATIAL_USER_1","MAV_CMD_SPATIAL_USER_2","MAV_CMD_SPATIAL_USER_3","MAV_CMD_SPATIAL_USER_4","MAV_CMD_SPATIAL_USER_5","MAV_CMD_START_RX_PAIR","MAV_CMD_STORAGE_FORMAT","MAV_CMD_UAVCAN_GET_NODE_INFO","MAV_CMD_USER_1","MAV_CMD_USER_2","MAV_CMD_USER_3","MAV_CMD_USER_4","MAV_CMD_USER_5","MAV_CMD_VIDEO_START_CAPTURE","MAV_CMD_VIDEO_START_STREAMING","MAV_CMD_VIDEO_STOP_CAPTURE","MAV_CMD_VIDEO_STOP_STREAMING","MAV_CMD_WAYPOINT_USER_1","MAV_CMD_WAYPOINT_USER_2","MAV_CMD_WAYPOINT_USER_3","MAV_CMD_WAYPOINT_USER_4","MAV_CMD_WAYPOINT_USER_5","MAV_COLLISION_ACTION_ASCEND_OR_DESCEND","MAV_COLLISION_ACTION_HOVER","MAV_COLLISION_ACTION_MOVE_HORIZONTALLY","MAV_COLLISION_ACTION_MOVE_PERPENDICULAR","MAV_COLLISION_ACTION_NONE","MAV_COLLISION_ACTION_REPORT","MAV_COLLISION_ACTION_RTL","MAV_COLLISION_SRC_ADSB","MAV_COLLISION_SRC_MAVLINK_GPS_GLOBAL_INT","MAV_COLLISION_THREAT_LEVEL_HIGH","MAV_COLLISION_THREAT_LEVEL_LOW","MAV_COLLISION_THREAT_LEVEL_NONE","MAV_COMP_ID_ADSB","MAV_COMP_ID_ALL","MAV_COMP_ID_AUTOPILOT1","MAV_COMP_ID_BATTERY","MAV_COMP_ID_BATTERY2","MAV_COMP_ID_CAMERA","MAV_COMP_ID_CAMERA2","MAV_COMP_ID_CAMERA3","MAV_COMP_ID_CAMERA4","MAV_COMP_ID_CAMERA5","MAV_COMP_ID_CAMERA6","MAV_COMP_ID_FLARM","MAV_COMP_ID_GIMBAL","MAV_COMP_ID_GIMBAL2","MAV_COMP_ID_GIMBAL3","MAV_COMP_ID_GIMBAL4","MAV_COMP_ID_GIMBAL5","MAV_COMP_ID_GIMBAL6","MAV_COMP_ID_GPS","MAV_COMP_ID_GPS2","MAV_COMP_ID_IMU","MAV_COMP_ID_IMU_2","MAV_COMP_ID_IMU_3","MAV_COMP_ID_LOG","MAV_COMP_ID_MAVCAN","MAV_COMP_ID_MISSIONPLANNER","MAV_COMP_ID_OBSTACLE_AVOIDANCE","MAV_COMP_ID_ODID_TXRX_1","MAV_COMP_ID_ODID_TXRX_2","MAV_COMP_ID_ODID_TXRX_3","MAV_COMP_ID_ONBOARD_COMPUTER","MAV_COMP_ID_ONBOARD_COMPUTER2","MAV_COMP_ID_ONBOARD_COMPUTER3","MAV_COMP_ID_ONBOARD_COMPUTER4","MAV_COMP_ID_OSD","MAV_COMP_ID_PAIRING_MANAGER","MAV_COMP_ID_PARACHUTE","MAV_COMP_ID_PATHPLANNER","MAV_COMP_ID_PERIPHERAL","MAV_COMP_ID_QX1_GIMBAL","MAV_COMP_ID_SERVO1","MAV_COMP_ID_SERVO10","MAV_COMP_ID_SERVO11","MAV_COMP_ID_SERVO12","MAV_COMP_ID_SERVO13","MAV_COMP_ID_SERVO14","MAV_COMP_ID_SERVO2","MAV_COMP_ID_SERVO3","MAV_COMP_ID_SERVO4","MAV_COMP_ID_SERVO5","MAV_COMP_ID_SERVO6","MAV_COMP_ID_SERVO7","MAV_COMP_ID_SERVO8","MAV_COMP_ID_SERVO9","MAV_COMP_ID_SYSTEM_CONTROL","MAV_COMP_ID_TELEMETRY_RADIO","MAV_COMP_ID_TUNNEL_NODE","MAV_COMP_ID_UART_BRIDGE","MAV_COMP_ID_UDP_BRIDGE","MAV_COMP_ID_USER1","MAV_COMP_ID_USER10","MAV_COMP_ID_USER11","MAV_COMP_ID_USER12","MAV_COMP_ID_USER13","MAV_COMP_ID_USER14","MAV_COMP_ID_USER15","MAV_COMP_ID_USER16","MAV_COMP_ID_USER17","MAV_COMP_ID_USER18","MAV_COMP_ID_USER19","MAV_COMP_ID_USER2","MAV_COMP_ID_USER20","MAV_COMP_ID_USER21","MAV_COMP_ID_USER22","MAV_COMP_ID_USER23","MAV_COMP_ID_USER24","MAV_COMP_ID_USER25","MAV_COMP_ID_USER26","MAV_COMP_ID_USER27","MAV_COMP_ID_USER28","MAV_COMP_ID_USER29","MAV_COMP_ID_USER3","MAV_COMP_ID_USER30","MAV_COMP_ID_USER31","MAV_COMP_ID_USER32","MAV_COMP_ID_USER33","MAV_COMP_ID_USER34","MAV_COMP_ID_USER35","MAV_COMP_ID_USER36","MAV_COMP_ID_USER37","MAV_COMP_ID_USER38","MAV_COMP_ID_USER39","MAV_COMP_ID_USER4","MAV_COMP_ID_USER40","MAV_COMP_ID_USER41","MAV_COMP_ID_USER42","MAV_COMP_ID_USER43","MAV_COMP_ID_USER45","MAV_COMP_ID_USER46","MAV_COMP_ID_USER47","MAV_COMP_ID_USER48","MAV_COMP_ID_USER49","MAV_COMP_ID_USER5","MAV_COMP_ID_USER50","MAV_COMP_ID_USER51","MAV_COMP_ID_USER52","MAV_COMP_ID_USER53","MAV_COMP_ID_USER54","MAV_COMP_ID_USER55","MAV_COMP_ID_USER56","MAV_COMP_ID_USER57","MAV_COMP_ID_USER58","MAV_COMP_ID_USER59","MAV_COMP_ID_USER6","MAV_COMP_ID_USER60","MAV_COMP_ID_USER61","MAV_COMP_ID_USER62","MAV_COMP_ID_USER63","MAV_COMP_ID_USER64","MAV_COMP_ID_USER65","MAV_COMP_ID_USER66","MAV_COMP_ID_USER67","MAV_COMP_ID_USER68","MAV_COMP_ID_USER69","MAV_COMP_ID_USER7","MAV_COMP_ID_USER70","MAV_COMP_ID_USER71","MAV_COMP_ID_USER72","MAV_COMP_ID_USER73","MAV_COMP_ID_USER74","MAV_COMP_ID_USER75","MAV_COMP_ID_USER8","MAV_COMP_ID_USER9","MAV_COMP_ID_VISUAL_INERTIAL_ODOMETRY","MAV_COMP_ID_WINCH","MAV_DATA_STREAM_ALL","MAV_DATA_STREAM_EXTENDED_STATUS","MAV_DATA_STREAM_EXTRA1","MAV_DATA_STREAM_EXTRA2","MAV_DATA_STREAM_EXTRA3","MAV_DATA_STREAM_POSITION","MAV_DATA_STREAM_RAW_CONTROLLER","MAV_DATA_STREAM_RAW_SENSORS","MAV_DATA_STREAM_RC_CHANNELS","MAV_DISTANCE_SENSOR_INFRARED","MAV_DISTANCE_SENSOR_LASER","MAV_DISTANCE_SENSOR_RADAR","MAV_DISTANCE_SENSOR_ULTRASOUND","MAV_DISTANCE_SENSOR_UNKNOWN","MAV_DO_REPOSITION_FLAGS_CHANGE_MODE","MAV_ESTIMATOR_TYPE_AUTOPILOT","MAV_ESTIMATOR_TYPE_GPS","MAV_ESTIMATOR_TYPE_GPS_INS","MAV_ESTIMATOR_TYPE_LIDAR","MAV_ESTIMATOR_TYPE_MOCAP","MAV_ESTIMATOR_TYPE_NAIVE","MAV_ESTIMATOR_TYPE_UNKNOWN","MAV_ESTIMATOR_TYPE_VIO","MAV_ESTIMATOR_TYPE_VISION","MAV_EVENT_CURRENT_SEQUENCE_FLAGS_RESET","MAV_EVENT_ERROR_REASON_UNAVAILABLE","MAV_FRAME_BODY_FRD","MAV_FRAME_BODY_NED","MAV_FRAME_BODY_OFFSET_NED","MAV_FRAME_GLOBAL","MAV_FRAME_GLOBAL_INT","MAV_FRAME_GLOBAL_RELATIVE_ALT","MAV_FRAME_GLOBAL_RELATIVE_ALT_INT","MAV_FRAME_GLOBAL_TERRAIN_ALT","MAV_FRAME_GLOBAL_TERRAIN_ALT_INT","MAV_FRAME_LOCAL_ENU","MAV_FRAME_LOCAL_FLU","MAV_FRAME_LOCAL_FRD","MAV_FRAME_LOCAL_NED","MAV_FRAME_LOCAL_OFFSET_NED","MAV_FRAME_MISSION","MAV_FRAME_RESERVED_13","MAV_FRAME_RESERVED_14","MAV_FRAME_RESERVED_15","MAV_FRAME_RESERVED_16","MAV_FRAME_RESERVED_17","MAV_FRAME_RESERVED_18","MAV_FRAME_RESERVED_19","MAV_FTP_ERR_EOF","MAV_FTP_ERR_FAIL","MAV_FTP_ERR_FAILERRNO","MAV_FTP_ERR_FILEEXISTS","MAV_FTP_ERR_FILENOTFOUND","MAV_FTP_ERR_FILEPROTECTED","MAV_FTP_ERR_INVALIDDATASIZE","MAV_FTP_ERR_INVALIDSESSION","MAV_FTP_ERR_NONE","MAV_FTP_ERR_NOSESSIONSAVAILABLE","MAV_FTP_ERR_UNKNOWNCOMMAND","MAV_FTP_OPCODE_ACK","MAV_FTP_OPCODE_BURSTREADFILE","MAV_FTP_OPCODE_CALCFILECRC","MAV_FTP_OPCODE_CREATEDIRECTORY","MAV_FTP_OPCODE_CREATEFILE","MAV_FTP_OPCODE_LISTDIRECTORY","MAV_FTP_OPCODE_NAK","MAV_FTP_OPCODE_NONE","MAV_FTP_OPCODE_OPENFILERO","MAV_FTP_OPCODE_OPENFILEWO","MAV_FTP_OPCODE_READFILE","MAV_FTP_OPCODE_REMOVEDIRECTORY","MAV_FTP_OPCODE_REMOVEFILE","MAV_FTP_OPCODE_RENAME","MAV_FTP_OPCODE_RESETSESSION","MAV_FTP_OPCODE_TERMINATESESSION","MAV_FTP_OPCODE_TRUNCATEFILE","MAV_FTP_OPCODE_WRITEFILE","MAV_GENERATOR_STATUS_FLAG_BATTERY_OVERCHARGE_CURRENT_FAULT","MAV_GENERATOR_STATUS_FLAG_BATTERY_UNDERVOLT_FAULT","MAV_GENERATOR_STATUS_FLAG_CHARGING","MAV_GENERATOR_STATUS_FLAG_COMMUNICATION_WARNING","MAV_GENERATOR_STATUS_FLAG_COOLING_WARNING","MAV_GENERATOR_STATUS_FLAG_ELECTRONICS_FAULT","MAV_GENERATOR_STATUS_FLAG_ELECTRONICS_OVERTEMP_FAULT","MAV_GENERATOR_STATUS_FLAG_ELECTRONICS_OVERTEMP_WARNING","MAV_GENERATOR_STATUS_FLAG_GENERATING","MAV_GENERATOR_STATUS_FLAG_IDLE","MAV_GENERATOR_STATUS_FLAG_MAINTENANCE_REQUIRED","MAV_GENERATOR_STATUS_FLAG_MAXPOWER","MAV_GENERATOR_STATUS_FLAG_OFF","MAV_GENERATOR_STATUS_FLAG_OVERCURRENT_FAULT","MAV_GENERATOR_STATUS_FLAG_OVERTEMP_FAULT","MAV_GENERATOR_STATUS_FLAG_OVERTEMP_WARNING","MAV_GENERATOR_STATUS_FLAG_OVERVOLTAGE_FAULT","MAV_GENERATOR_STATUS_FLAG_POWERSOURCE_FAULT","MAV_GENERATOR_STATUS_FLAG_POWER_RAIL_FAULT","MAV_GENERATOR_STATUS_FLAG_READY","MAV_GENERATOR_STATUS_FLAG_REDUCED_POWER","MAV_GENERATOR_STATUS_FLAG_START_INHIBITED","MAV_GENERATOR_STATUS_FLAG_WARMING_UP","MAV_GOTO_DO_CONTINUE","MAV_GOTO_DO_HOLD","MAV_GOTO_HOLD_AT_CURRENT_POSITION","MAV_GOTO_HOLD_AT_SPECIFIED_POSITION","MAV_LANDED_STATE_IN_AIR","MAV_LANDED_STATE_LANDING","MAV_LANDED_STATE_ON_GROUND","MAV_LANDED_STATE_TAKEOFF","MAV_LANDED_STATE_UNDEFINED","MAV_MISSION_ACCEPTED","MAV_MISSION_DENIED","MAV_MISSION_ERROR","MAV_MISSION_INVALID","MAV_MISSION_INVALID_PARAM1","MAV_MISSION_INVALID_PARAM2","MAV_MISSION_INVALID_PARAM3","MAV_MISSION_INVALID_PARAM4","MAV_MISSION_INVALID_PARAM5_X","MAV_MISSION_INVALID_PARAM6_Y","MAV_MISSION_INVALID_PARAM7","MAV_MISSION_INVALID_SEQUENCE","MAV_MISSION_NO_SPACE","MAV_MISSION_OPERATION_CANCELLED","MAV_MISSION_TYPE_ALL","MAV_MISSION_TYPE_FENCE","MAV_MISSION_TYPE_MISSION","MAV_MISSION_TYPE_RALLY","MAV_MISSION_UNSUPPORTED","MAV_MISSION_UNSUPPORTED_FRAME","MAV_MODE_AUTO_ARMED","MAV_MODE_AUTO_DISARMED","MAV_MODE_FLAG_AUTO_ENABLED","MAV_MODE_FLAG_CUSTOM_MODE_ENABLED","MAV_MODE_FLAG_DECODE_POSITION_AUTO","MAV_MODE_FLAG_DECODE_POSITION_CUSTOM_MODE","MAV_MODE_FLAG_DECODE_POSITION_GUIDED","MAV_MODE_FLAG_DECODE_POSITION_HIL","MAV_MODE_FLAG_DECODE_POSITION_MANUAL","MAV_MODE_FLAG_DECODE_POSITION_SAFETY","MAV_MODE_FLAG_DECODE_POSITION_STABILIZE","MAV_MODE_FLAG_DECODE_POSITION_TEST","MAV_MODE_FLAG_GUIDED_ENABLED","MAV_MODE_FLAG_HIL_ENABLED","MAV_MODE_FLAG_MANUAL_INPUT_ENABLED","MAV_MODE_FLAG_SAFETY_ARMED","MAV_MODE_FLAG_STABILIZE_ENABLED","MAV_MODE_FLAG_TEST_ENABLED","MAV_MODE_GIMBAL_ACTIVE","MAV_MODE_GIMBAL_CALIBRATING_PITCH","MAV_MODE_GIMBAL_CALIBRATING_ROLL","MAV_MODE_GIMBAL_CALIBRATING_YAW","MAV_MODE_GIMBAL_INITIALIZED","MAV_MODE_GIMBAL_RATE_CMD_TIMEOUT","MAV_MODE_GIMBAL_UNINITIALIZED","MAV_MODE_GUIDED_ARMED","MAV_MODE_GUIDED_DISARMED","MAV_MODE_MANUAL_ARMED","MAV_MODE_MANUAL_DISARMED","MAV_MODE_PREFLIGHT","MAV_MODE_STABILIZE_ARMED","MAV_MODE_STABILIZE_DISARMED","MAV_MODE_TEST_ARMED","MAV_MODE_TEST_DISARMED","MAV_MOUNT_MODE_GPS_POINT","MAV_MOUNT_MODE_HOME_LOCATION","MAV_MOUNT_MODE_MAVLINK_TARGETING","MAV_MOUNT_MODE_NEUTRAL","MAV_MOUNT_MODE_RC_TARGETING","MAV_MOUNT_MODE_RETRACT","MAV_MOUNT_MODE_SYSID_TARGET","MAV_ODID_ARM_STATUS_GOOD_TO_ARM","MAV_ODID_ARM_STATUS_PRE_ARM_FAIL_GENERIC","MAV_ODID_AUTH_TYPE_MESSAGE_SET_SIGNATURE","MAV_ODID_AUTH_TYPE_NETWORK_REMOTE_ID","MAV_ODID_AUTH_TYPE_NONE","MAV_ODID_AUTH_TYPE_OPERATOR_ID_SIGNATURE","MAV_ODID_AUTH_TYPE_SPECIFIC_AUTHENTICATION","MAV_ODID_AUTH_TYPE_UAS_ID_SIGNATURE","MAV_ODID_CATEGORY_EU_CERTIFIED","MAV_ODID_CATEGORY_EU_OPEN","MAV_ODID_CATEGORY_EU_SPECIFIC","MAV_ODID_CATEGORY_EU_UNDECLARED","MAV_ODID_CLASSIFICATION_TYPE_EU","MAV_ODID_CLASSIFICATION_TYPE_UNDECLARED","MAV_ODID_CLASS_EU_CLASS_0","MAV_ODID_CLASS_EU_CLASS_1","MAV_ODID_CLASS_EU_CLASS_2","MAV_ODID_CLASS_EU_CLASS_3","MAV_ODID_CLASS_EU_CLASS_4","MAV_ODID_CLASS_EU_CLASS_5","MAV_ODID_CLASS_EU_CLASS_6","MAV_ODID_CLASS_EU_UNDECLARED","MAV_ODID_DESC_TYPE_EMERGENCY","MAV_ODID_DESC_TYPE_EXTENDED_STATUS","MAV_ODID_DESC_TYPE_TEXT","MAV_ODID_HEIGHT_REF_OVER_GROUND","MAV_ODID_HEIGHT_REF_OVER_TAKEOFF","MAV_ODID_HOR_ACC_0_05NM","MAV_ODID_HOR_ACC_0_1NM","MAV_ODID_HOR_ACC_0_3NM","MAV_ODID_HOR_ACC_0_5NM","MAV_ODID_HOR_ACC_10NM","MAV_ODID_HOR_ACC_10_METER","MAV_ODID_HOR_ACC_1NM","MAV_ODID_HOR_ACC_1_METER","MAV_ODID_HOR_ACC_2NM","MAV_ODID_HOR_ACC_30_METER","MAV_ODID_HOR_ACC_3_METER","MAV_ODID_HOR_ACC_4NM","MAV_ODID_HOR_ACC_UNKNOWN","MAV_ODID_ID_TYPE_CAA_REGISTRATION_ID","MAV_ODID_ID_TYPE_NONE","MAV_ODID_ID_TYPE_SERIAL_NUMBER","MAV_ODID_ID_TYPE_SPECIFIC_SESSION_ID","MAV_ODID_ID_TYPE_UTM_ASSIGNED_UUID","MAV_ODID_OPERATOR_ID_TYPE_CAA","MAV_ODID_OPERATOR_LOCATION_TYPE_FIXED","MAV_ODID_OPERATOR_LOCATION_TYPE_LIVE_GNSS","MAV_ODID_OPERATOR_LOCATION_TYPE_TAKEOFF","MAV_ODID_SPEED_ACC_0_3_METERS_PER_SECOND","MAV_ODID_SPEED_ACC_10_METERS_PER_SECOND","MAV_ODID_SPEED_ACC_1_METERS_PER_SECOND","MAV_ODID_SPEED_ACC_3_METERS_PER_SECOND","MAV_ODID_SPEED_ACC_UNKNOWN","MAV_ODID_STATUS_AIRBORNE","MAV_ODID_STATUS_EMERGENCY","MAV_ODID_STATUS_GROUND","MAV_ODID_STATUS_REMOTE_ID_SYSTEM_FAILURE","MAV_ODID_STATUS_UNDECLARED","MAV_ODID_TIME_ACC_0_1_SECOND","MAV_ODID_TIME_ACC_0_2_SECOND","MAV_ODID_TIME_ACC_0_3_SECOND","MAV_ODID_TIME_ACC_0_4_SECOND","MAV_ODID_TIME_ACC_0_5_SECOND","MAV_ODID_TIME_ACC_0_6_SECOND","MAV_ODID_TIME_ACC_0_7_SECOND","MAV_ODID_TIME_ACC_0_8_SECOND","MAV_ODID_TIME_ACC_0_9_SECOND","MAV_ODID_TIME_ACC_1_0_SECOND","MAV_ODID_TIME_ACC_1_1_SECOND","MAV_ODID_TIME_ACC_1_2_SECOND","MAV_ODID_TIME_ACC_1_3_SECOND","MAV_ODID_TIME_ACC_1_4_SECOND","MAV_ODID_TIME_ACC_1_5_SECOND","MAV_ODID_TIME_ACC_UNKNOWN","MAV_ODID_UA_TYPE_AEROPLANE","MAV_ODID_UA_TYPE_AIRSHIP","MAV_ODID_UA_TYPE_CAPTIVE_BALLOON","MAV_ODID_UA_TYPE_FREE_BALLOON","MAV_ODID_UA_TYPE_FREE_FALL_PARACHUTE","MAV_ODID_UA_TYPE_GLIDER","MAV_ODID_UA_TYPE_GROUND_OBSTACLE","MAV_ODID_UA_TYPE_GYROPLANE","MAV_ODID_UA_TYPE_HELICOPTER_OR_MULTIROTOR","MAV_ODID_UA_TYPE_HYBRID_LIFT","MAV_ODID_UA_TYPE_KITE","MAV_ODID_UA_TYPE_NONE","MAV_ODID_UA_TYPE_ORNITHOPTER","MAV_ODID_UA_TYPE_OTHER","MAV_ODID_UA_TYPE_ROCKET","MAV_ODID_UA_TYPE_TETHERED_POWERED_AIRCRAFT","MAV_ODID_VER_ACC_10_METER","MAV_ODID_VER_ACC_150_METER","MAV_ODID_VER_ACC_1_METER","MAV_ODID_VER_ACC_25_METER","MAV_ODID_VER_ACC_3_METER","MAV_ODID_VER_ACC_45_METER","MAV_ODID_VER_ACC_UNKNOWN","MAV_PARAM_EXT_TYPE_CUSTOM","MAV_PARAM_EXT_TYPE_INT16","MAV_PARAM_EXT_TYPE_INT32","MAV_PARAM_EXT_TYPE_INT64","MAV_PARAM_EXT_TYPE_INT8","MAV_PARAM_EXT_TYPE_REAL32","MAV_PARAM_EXT_TYPE_REAL64","MAV_PARAM_EXT_TYPE_UINT16","MAV_PARAM_EXT_TYPE_UINT32","MAV_PARAM_EXT_TYPE_UINT64","MAV_PARAM_EXT_TYPE_UINT8","MAV_PARAM_TYPE_INT16","MAV_PARAM_TYPE_INT32","MAV_PARAM_TYPE_INT64","MAV_PARAM_TYPE_INT8","MAV_PARAM_TYPE_REAL32","MAV_PARAM_TYPE_REAL64","MAV_PARAM_TYPE_UINT16","MAV_PARAM_TYPE_UINT32","MAV_PARAM_TYPE_UINT64","MAV_PARAM_TYPE_UINT8","MAV_POWER_STATUS_BRICK_VALID","MAV_POWER_STATUS_CHANGED","MAV_POWER_STATUS_PERIPH_HIPOWER_OVERCURRENT","MAV_POWER_STATUS_PERIPH_OVERCURRENT","MAV_POWER_STATUS_SERVO_VALID","MAV_POWER_STATUS_USB_CONNECTED","MAV_PROTOCOL_CAPABILITY_COMMAND_INT","MAV_PROTOCOL_CAPABILITY_COMPASS_CALIBRATION","MAV_PROTOCOL_CAPABILITY_FLIGHT_TERMINATION","MAV_PROTOCOL_CAPABILITY_FTP","MAV_PROTOCOL_CAPABILITY_MAVLINK2","MAV_PROTOCOL_CAPABILITY_MISSION_FENCE","MAV_PROTOCOL_CAPABILITY_MISSION_FLOAT","MAV_PROTOCOL_CAPABILITY_MISSION_INT","MAV_PROTOCOL_CAPABILITY_MISSION_RALLY","MAV_PROTOCOL_CAPABILITY_PARAM_ENCODE_BYTEWISE","MAV_PROTOCOL_CAPABILITY_PARAM_ENCODE_C_CAST","MAV_PROTOCOL_CAPABILITY_PARAM_FLOAT","MAV_PROTOCOL_CAPABILITY_RESERVED2","MAV_PROTOCOL_CAPABILITY_SET_ACTUATOR_TARGET","MAV_PROTOCOL_CAPABILITY_SET_ATTITUDE_TARGET","MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_GLOBAL_INT","MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_LOCAL_NED","MAV_PROTOCOL_CAPABILITY_TERRAIN","MAV_REMOTE_LOG_DATA_BLOCK_ACK","MAV_REMOTE_LOG_DATA_BLOCK_NACK","MAV_REMOTE_LOG_DATA_BLOCK_START","MAV_REMOTE_LOG_DATA_BLOCK_STOP","MAV_RESULT_ACCEPTED","MAV_RESULT_CANCELLED","MAV_RESULT_DENIED","MAV_RESULT_FAILED","MAV_RESULT_IN_PROGRESS","MAV_RESULT_TEMPORARILY_REJECTED","MAV_RESULT_UNSUPPORTED","MAV_ROI_LOCATION","MAV_ROI_NONE","MAV_ROI_TARGET","MAV_ROI_WPINDEX","MAV_ROI_WPNEXT","MAV_SENSOR_ROTATION_CUSTOM","MAV_SENSOR_ROTATION_NONE","MAV_SENSOR_ROTATION_PITCH_180","MAV_SENSOR_ROTATION_PITCH_180_YAW_270","MAV_SENSOR_ROTATION_PITCH_180_YAW_90","MAV_SENSOR_ROTATION_PITCH_270","MAV_SENSOR_ROTATION_PITCH_315","MAV_SENSOR_ROTATION_PITCH_90","MAV_SENSOR_ROTATION_ROLL_180","MAV_SENSOR_ROTATION_ROLL_180_PITCH_270","MAV_SENSOR_ROTATION_ROLL_180_PITCH_90","MAV_SENSOR_ROTATION_ROLL_180_YAW_135","MAV_SENSOR_ROTATION_ROLL_180_YAW_225","MAV_SENSOR_ROTATION_ROLL_180_YAW_270","MAV_SENSOR_ROTATION_ROLL_180_YAW_315","MAV_SENSOR_ROTATION_ROLL_180_YAW_45","MAV_SENSOR_ROTATION_ROLL_180_YAW_90","MAV_SENSOR_ROTATION_ROLL_270","MAV_SENSOR_ROTATION_ROLL_270_PITCH_180","MAV_SENSOR_ROTATION_ROLL_270_PITCH_270","MAV_SENSOR_ROTATION_ROLL_270_PITCH_90","MAV_SENSOR_ROTATION_ROLL_270_YAW_135","MAV_SENSOR_ROTATION_ROLL_270_YAW_45","MAV_SENSOR_ROTATION_ROLL_270_YAW_90","MAV_SENSOR_ROTATION_ROLL_90","MAV_SENSOR_ROTATION_ROLL_90_PITCH_180","MAV_SENSOR_ROTATION_ROLL_90_PITCH_180_YAW_90","MAV_SENSOR_ROTATION_ROLL_90_PITCH_270","MAV_SENSOR_ROTATION_ROLL_90_PITCH_315","MAV_SENSOR_ROTATION_ROLL_90_PITCH_68_YAW_293","MAV_SENSOR_ROTATION_ROLL_90_PITCH_90","MAV_SENSOR_ROTATION_ROLL_90_YAW_135","MAV_SENSOR_ROTATION_ROLL_90_YAW_270","MAV_SENSOR_ROTATION_ROLL_90_YAW_45","MAV_SENSOR_ROTATION_ROLL_90_YAW_90","MAV_SENSOR_ROTATION_YAW_135","MAV_SENSOR_ROTATION_YAW_180","MAV_SENSOR_ROTATION_YAW_225","MAV_SENSOR_ROTATION_YAW_270","MAV_SENSOR_ROTATION_YAW_315","MAV_SENSOR_ROTATION_YAW_45","MAV_SENSOR_ROTATION_YAW_90","MAV_SEVERITY_ALERT","MAV_SEVERITY_CRITICAL","MAV_SEVERITY_DEBUG","MAV_SEVERITY_EMERGENCY","MAV_SEVERITY_ERROR","MAV_SEVERITY_INFO","MAV_SEVERITY_NOTICE","MAV_SEVERITY_WARNING","MAV_STATE_ACTIVE","MAV_STATE_BOOT","MAV_STATE_CALIBRATING","MAV_STATE_CRITICAL","MAV_STATE_EMERGENCY","MAV_STATE_FLIGHT_TERMINATION","MAV_STATE_POWEROFF","MAV_STATE_STANDBY","MAV_STATE_UNINIT","MAV_SYS_STATUS_AHRS","MAV_SYS_STATUS_EXTENSION_USED","MAV_SYS_STATUS_GEOFENCE","MAV_SYS_STATUS_LOGGING","MAV_SYS_STATUS_OBSTACLE_AVOIDANCE","MAV_SYS_STATUS_PREARM_CHECK","MAV_SYS_STATUS_RECOVERY_SYSTEM","MAV_SYS_STATUS_REVERSE_MOTOR","MAV_SYS_STATUS_SENSOR_3D_ACCEL","MAV_SYS_STATUS_SENSOR_3D_ACCEL2","MAV_SYS_STATUS_SENSOR_3D_GYRO","MAV_SYS_STATUS_SENSOR_3D_GYRO2","MAV_SYS_STATUS_SENSOR_3D_MAG","MAV_SYS_STATUS_SENSOR_3D_MAG2","MAV_SYS_STATUS_SENSOR_ABSOLUTE_PRESSURE","MAV_SYS_STATUS_SENSOR_ANGULAR_RATE_CONTROL","MAV_SYS_STATUS_SENSOR_ATTITUDE_STABILIZATION","MAV_SYS_STATUS_SENSOR_BATTERY","MAV_SYS_STATUS_SENSOR_DIFFERENTIAL_PRESSURE","MAV_SYS_STATUS_SENSOR_EXTERNAL_GROUND_TRUTH","MAV_SYS_STATUS_SENSOR_GPS","MAV_SYS_STATUS_SENSOR_LASER_POSITION","MAV_SYS_STATUS_SENSOR_MOTOR_OUTPUTS","MAV_SYS_STATUS_SENSOR_OPTICAL_FLOW","MAV_SYS_STATUS_SENSOR_PROPULSION","MAV_SYS_STATUS_SENSOR_PROXIMITY","MAV_SYS_STATUS_SENSOR_RC_RECEIVER","MAV_SYS_STATUS_SENSOR_SATCOM","MAV_SYS_STATUS_SENSOR_VISION_POSITION","MAV_SYS_STATUS_SENSOR_XY_POSITION_CONTROL","MAV_SYS_STATUS_SENSOR_YAW_POSITION","MAV_SYS_STATUS_SENSOR_Z_ALTITUDE_CONTROL","MAV_SYS_STATUS_TERRAIN","MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED0","MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED1","MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED2","MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED3","MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED4","MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED5","MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED6","MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED7","MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED8","MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED9","MAV_TUNNEL_PAYLOAD_TYPE_UNKNOWN","MAV_TYPE_ADSB","MAV_TYPE_AIRSHIP","MAV_TYPE_ANTENNA_TRACKER","MAV_TYPE_BATTERY","MAV_TYPE_CAMERA","MAV_TYPE_CHARGING_STATION","MAV_TYPE_COAXIAL","MAV_TYPE_DECAROTOR","MAV_TYPE_DODECAROTOR","MAV_TYPE_FIXED_WING","MAV_TYPE_FLAPPING_WING","MAV_TYPE_FLARM","MAV_TYPE_FREE_BALLOON","MAV_TYPE_GCS","MAV_TYPE_GENERIC","MAV_TYPE_GIMBAL","MAV_TYPE_GPS","MAV_TYPE_GROUND_ROVER","MAV_TYPE_HELICOPTER","MAV_TYPE_HEXAROTOR","MAV_TYPE_IMU","MAV_TYPE_KITE","MAV_TYPE_LOG","MAV_TYPE_OCTOROTOR","MAV_TYPE_ODID","MAV_TYPE_ONBOARD_CONTROLLER","MAV_TYPE_OSD","MAV_TYPE_PARACHUTE","MAV_TYPE_PARAFOIL","MAV_TYPE_QUADROTOR","MAV_TYPE_ROCKET","MAV_TYPE_SERVO","MAV_TYPE_SUBMARINE","MAV_TYPE_SURFACE_BOAT","MAV_TYPE_TRICOPTER","MAV_TYPE_VTOL_FIXEDROTOR","MAV_TYPE_VTOL_RESERVED5","MAV_TYPE_VTOL_TAILSITTER","MAV_TYPE_VTOL_TAILSITTER_DUOROTOR","MAV_TYPE_VTOL_TAILSITTER_QUADROTOR","MAV_TYPE_VTOL_TILTROTOR","MAV_TYPE_VTOL_TILTWING","MAV_TYPE_WINCH","MAV_VTOL_STATE_FW","MAV_VTOL_STATE_MC","MAV_VTOL_STATE_TRANSITION_TO_FW","MAV_VTOL_STATE_TRANSITION_TO_MC","MAV_VTOL_STATE_UNDEFINED","MAV_WINCH_STATUS_ABANDON_LINE","MAV_WINCH_STATUS_ARRESTING","MAV_WINCH_STATUS_CLUTCH_ENGAGED","MAV_WINCH_STATUS_DROPPING","MAV_WINCH_STATUS_FULLY_RETRACTED","MAV_WINCH_STATUS_GROUND_SENSE","MAV_WINCH_STATUS_HEALTHY","MAV_WINCH_STATUS_LOAD_LINE","MAV_WINCH_STATUS_LOAD_PAYLOAD","MAV_WINCH_STATUS_LOCKED","MAV_WINCH_STATUS_LOCKING","MAV_WINCH_STATUS_MOVING","MAV_WINCH_STATUS_REDELIVER","MAV_WINCH_STATUS_RETRACTING","MCU_STATUS","MCU_STATUS_DATA","MCU_temperature","MCU_voltage","MCU_voltage_max","MCU_voltage_min","MEMINFO","MEMINFO_DATA","MEMORY_VECT","MEMORY_VECT_DATA","MESSAGE_INTERVAL","MESSAGE_INTERVAL_DATA","MISSION_ACK","MISSION_ACK_DATA","MISSION_CLEAR_ALL","MISSION_CLEAR_ALL_DATA","MISSION_COUNT","MISSION_COUNT_DATA","MISSION_CURRENT","MISSION_CURRENT_DATA","MISSION_ITEM","MISSION_ITEM_DATA","MISSION_ITEM_INT","MISSION_ITEM_INT_DATA","MISSION_ITEM_REACHED","MISSION_ITEM_REACHED_DATA","MISSION_READ_PERSISTENT","MISSION_REQUEST","MISSION_REQUEST_DATA","MISSION_REQUEST_INT","MISSION_REQUEST_INT_DATA","MISSION_REQUEST_LIST","MISSION_REQUEST_LIST_DATA","MISSION_REQUEST_PARTIAL_LIST","MISSION_REQUEST_PARTIAL_LIST_DATA","MISSION_RESET_DEFAULT","MISSION_SET_CURRENT","MISSION_SET_CURRENT_DATA","MISSION_STATE_ACTIVE","MISSION_STATE_COMPLETE","MISSION_STATE_NOT_STARTED","MISSION_STATE_NO_MISSION","MISSION_STATE_PAUSED","MISSION_STATE_UNKNOWN","MISSION_WRITE_PARTIAL_LIST","MISSION_WRITE_PARTIAL_LIST_DATA","MISSION_WRITE_PERSISTENT","MMSI","MOTOR_TEST_COMPASS_CAL","MOTOR_TEST_ORDER_BOARD","MOTOR_TEST_ORDER_DEFAULT","MOTOR_TEST_ORDER_SEQUENCE","MOTOR_TEST_THROTTLE_PERCENT","MOTOR_TEST_THROTTLE_PILOT","MOTOR_TEST_THROTTLE_PWM","MOUNT_CONFIGURE","MOUNT_CONFIGURE_DATA","MOUNT_CONTROL","MOUNT_CONTROL_DATA","MOUNT_ORIENTATION","MOUNT_ORIENTATION_DATA","MOUNT_STATUS","MOUNT_STATUS_DATA","MagCalStatus","MavArmAuthDeniedReason","MavAutopilot","MavBatteryChargeState","MavBatteryFault","MavBatteryFunction","MavBatteryMode","MavBatteryType","MavCmd","MavCmdAck","MavCmdDoAuxFunctionSwitchLevel","MavCollisionAction","MavCollisionSrc","MavCollisionThreatLevel","MavComponent","MavDataStream","MavDistanceSensor","MavDoRepositionFlags","MavEstimatorType","MavEventCurrentSequenceFlags","MavEventErrorReason","MavFrame","MavFtpErr","MavFtpOpcode","MavGeneratorStatusFlag","MavGoto","MavLandedState","MavMessage","MavMissionResult","MavMissionType","MavMode","MavModeFlag","MavModeFlagDecodePosition","MavModeGimbal","MavMountMode","MavOdidArmStatus","MavOdidAuthType","MavOdidCategoryEu","MavOdidClassEu","MavOdidClassificationType","MavOdidDescType","MavOdidHeightRef","MavOdidHorAcc","MavOdidIdType","MavOdidOperatorIdType","MavOdidOperatorLocationType","MavOdidSpeedAcc","MavOdidStatus","MavOdidTimeAcc","MavOdidUaType","MavOdidVerAcc","MavParamExtType","MavParamType","MavPowerStatus","MavProtocolCapability","MavRemoteLogDataBlockCommands","MavRemoteLogDataBlockStatuses","MavResult","MavRoi","MavSensorOrientation","MavSeverity","MavState","MavSysStatusSensor","MavSysStatusSensorExtended","MavTunnelPayloadType","MavType","MavVtolState","MavWinchStatusFlag","MavlinkDataStreamType","MissionState","MotorTestOrder","MotorTestThrottleType","NAMED_VALUE_FLOAT","NAMED_VALUE_FLOAT_DATA","NAMED_VALUE_INT","NAMED_VALUE_INT_DATA","NAV_CONTROLLER_OUTPUT","NAV_CONTROLLER_OUTPUT_DATA","NAV_VTOL_LAND_OPTIONS_DEFAULT","NAV_VTOL_LAND_OPTIONS_FW_DESCENT","NAV_VTOL_LAND_OPTIONS_HOVER_DESCENT","NavVtolLandOptions","OBSTACLE_DISTANCE","OBSTACLE_DISTANCE_3D","OBSTACLE_DISTANCE_3D_DATA","OBSTACLE_DISTANCE_DATA","ODOMETRY","ODOMETRY_DATA","ONBOARD_COMPUTER_STATUS","ONBOARD_COMPUTER_STATUS_DATA","OPEN_DRONE_ID_ARM_STATUS","OPEN_DRONE_ID_ARM_STATUS_DATA","OPEN_DRONE_ID_AUTHENTICATION","OPEN_DRONE_ID_AUTHENTICATION_DATA","OPEN_DRONE_ID_BASIC_ID","OPEN_DRONE_ID_BASIC_ID_DATA","OPEN_DRONE_ID_LOCATION","OPEN_DRONE_ID_LOCATION_DATA","OPEN_DRONE_ID_MESSAGE_PACK","OPEN_DRONE_ID_MESSAGE_PACK_DATA","OPEN_DRONE_ID_OPERATOR_ID","OPEN_DRONE_ID_OPERATOR_ID_DATA","OPEN_DRONE_ID_SELF_ID","OPEN_DRONE_ID_SELF_ID_DATA","OPEN_DRONE_ID_SYSTEM","OPEN_DRONE_ID_SYSTEM_DATA","OPEN_DRONE_ID_SYSTEM_UPDATE","OPEN_DRONE_ID_SYSTEM_UPDATE_DATA","OPTICAL_FLOW","OPTICAL_FLOW_DATA","OPTICAL_FLOW_RAD","OPTICAL_FLOW_RAD_DATA","ORBIT_EXECUTION_STATUS","ORBIT_EXECUTION_STATUS_DATA","ORBIT_YAW_BEHAVIOUR_HOLD_FRONT_TANGENT_TO_CIRCLE","ORBIT_YAW_BEHAVIOUR_HOLD_FRONT_TO_CIRCLE_CENTER","ORBIT_YAW_BEHAVIOUR_HOLD_INITIAL_HEADING","ORBIT_YAW_BEHAVIOUR_RC_CONTROLLED","ORBIT_YAW_BEHAVIOUR_UNCONTROLLED","OSD_PARAM_AUX_FUNCTION","OSD_PARAM_CONFIG","OSD_PARAM_CONFIG_DATA","OSD_PARAM_CONFIG_REPLY","OSD_PARAM_CONFIG_REPLY_DATA","OSD_PARAM_FAILSAFE_ACTION","OSD_PARAM_FAILSAFE_ACTION_1","OSD_PARAM_FAILSAFE_ACTION_2","OSD_PARAM_FLIGHT_MODE","OSD_PARAM_INVALID_PARAMETER","OSD_PARAM_INVALID_PARAMETER_INDEX","OSD_PARAM_INVALID_SCREEN","OSD_PARAM_NONE","OSD_PARAM_NUM_TYPES","OSD_PARAM_SERIAL_PROTOCOL","OSD_PARAM_SERVO_FUNCTION","OSD_PARAM_SHOW_CONFIG","OSD_PARAM_SHOW_CONFIG_DATA","OSD_PARAM_SHOW_CONFIG_REPLY","OSD_PARAM_SHOW_CONFIG_REPLY_DATA","OSD_PARAM_SUCCESS","OrbitYawBehaviour","OsdParamConfigError","OsdParamConfigType","P","PARACHUTE_DISABLE","PARACHUTE_ENABLE","PARACHUTE_RELEASE","PARAM_ACK_ACCEPTED","PARAM_ACK_FAILED","PARAM_ACK_IN_PROGRESS","PARAM_ACK_VALUE_UNSUPPORTED","PARAM_EXT_ACK","PARAM_EXT_ACK_DATA","PARAM_EXT_REQUEST_LIST","PARAM_EXT_REQUEST_LIST_DATA","PARAM_EXT_REQUEST_READ","PARAM_EXT_REQUEST_READ_DATA","PARAM_EXT_SET","PARAM_EXT_SET_DATA","PARAM_EXT_VALUE","PARAM_EXT_VALUE_DATA","PARAM_MAP_RC","PARAM_MAP_RC_DATA","PARAM_READ_PERSISTENT","PARAM_REQUEST_LIST","PARAM_REQUEST_LIST_DATA","PARAM_REQUEST_READ","PARAM_REQUEST_READ_DATA","PARAM_RESET_ALL_DEFAULT","PARAM_RESET_CONFIG_DEFAULT","PARAM_RESET_SENSOR_DEFAULT","PARAM_SET","PARAM_SET_DATA","PARAM_VALUE","PARAM_VALUE_DATA","PARAM_WRITE_PERSISTENT","PID_TUNING","PID_TUNING_ACCZ","PID_TUNING_DATA","PID_TUNING_LANDING","PID_TUNING_PITCH","PID_TUNING_ROLL","PID_TUNING_STEER","PID_TUNING_YAW","PING","PING_DATA","PLANE_MODE_ACRO","PLANE_MODE_AUTO","PLANE_MODE_AUTOTUNE","PLANE_MODE_AVOID_ADSB","PLANE_MODE_CIRCLE","PLANE_MODE_CRUISE","PLANE_MODE_FLY_BY_WIRE_A","PLANE_MODE_FLY_BY_WIRE_B","PLANE_MODE_GUIDED","PLANE_MODE_INITIALIZING","PLANE_MODE_LOITER","PLANE_MODE_MANUAL","PLANE_MODE_QACRO","PLANE_MODE_QAUTOTUNE","PLANE_MODE_QHOVER","PLANE_MODE_QLAND","PLANE_MODE_QLOITER","PLANE_MODE_QRTL","PLANE_MODE_QSTABILIZE","PLANE_MODE_RTL","PLANE_MODE_STABILIZE","PLANE_MODE_TAKEOFF","PLANE_MODE_THERMAL","PLANE_MODE_TRAINING","PLAY_TUNE","PLAY_TUNE_DATA","PLAY_TUNE_V2","PLAY_TUNE_V2_DATA","POSITION_TARGET_GLOBAL_INT","POSITION_TARGET_GLOBAL_INT_DATA","POSITION_TARGET_LOCAL_NED","POSITION_TARGET_LOCAL_NED_DATA","POSITION_TARGET_TYPEMASK_AX_IGNORE","POSITION_TARGET_TYPEMASK_AY_IGNORE","POSITION_TARGET_TYPEMASK_AZ_IGNORE","POSITION_TARGET_TYPEMASK_FORCE_SET","POSITION_TARGET_TYPEMASK_VX_IGNORE","POSITION_TARGET_TYPEMASK_VY_IGNORE","POSITION_TARGET_TYPEMASK_VZ_IGNORE","POSITION_TARGET_TYPEMASK_X_IGNORE","POSITION_TARGET_TYPEMASK_YAW_IGNORE","POSITION_TARGET_TYPEMASK_YAW_RATE_IGNORE","POSITION_TARGET_TYPEMASK_Y_IGNORE","POSITION_TARGET_TYPEMASK_Z_IGNORE","POWER_STATUS","POWER_STATUS_DATA","PRECISION_LAND_MODE_DISABLED","PRECISION_LAND_MODE_OPPORTUNISTIC","PRECISION_LAND_MODE_REQUIRED","PROTOCOL_VERSION","PROTOCOL_VERSION_DATA","ParachuteAction","ParamAck","Pax","Pby","Pcz","PidTuningAxis","PlaneMode","PositionTargetTypemask","PrecisionLandMode","PreflightStorageMissionAction","PreflightStorageParameterAction","RADIO","RADIO_DATA","RADIO_STATUS","RADIO_STATUS_DATA","RALLY_FETCH_POINT","RALLY_FETCH_POINT_DATA","RALLY_POINT","RALLY_POINT_DATA","RANGEFINDER","RANGEFINDER_DATA","RAW_IMU","RAW_IMU_DATA","RAW_PRESSURE","RAW_PRESSURE_DATA","RAW_RPM","RAW_RPM_DATA","RC_CHANNELS","RC_CHANNELS_DATA","RC_CHANNELS_OVERRIDE","RC_CHANNELS_OVERRIDE_DATA","RC_CHANNELS_RAW","RC_CHANNELS_RAW_DATA","RC_CHANNELS_SCALED","RC_CHANNELS_SCALED_DATA","RC_TYPE_SPEKTRUM_DSM2","RC_TYPE_SPEKTRUM_DSMX","REMOTE_LOG_BLOCK_STATUS","REMOTE_LOG_BLOCK_STATUS_DATA","REMOTE_LOG_DATA_BLOCK","REMOTE_LOG_DATA_BLOCK_DATA","REQUEST_DATA_STREAM","REQUEST_DATA_STREAM_DATA","REQUEST_EVENT","REQUEST_EVENT_DATA","RESOURCE_REQUEST","RESOURCE_REQUEST_DATA","RESPONSE_EVENT_ERROR","RESPONSE_EVENT_ERROR_DATA","ROVER_MODE_ACRO","ROVER_MODE_AUTO","ROVER_MODE_FOLLOW","ROVER_MODE_GUIDED","ROVER_MODE_HOLD","ROVER_MODE_INITIALIZING","ROVER_MODE_LOITER","ROVER_MODE_MANUAL","ROVER_MODE_RTL","ROVER_MODE_SIMPLE","ROVER_MODE_SMART_RTL","ROVER_MODE_STEERING","RPM","RPM_DATA","RTK_BASELINE_COORDINATE_SYSTEM_ECEF","RTK_BASELINE_COORDINATE_SYSTEM_NED","RallyFlags","RcType","RoverMode","RtkBaselineCoordinateSystem","SAFETY_ALLOWED_AREA","SAFETY_ALLOWED_AREA_DATA","SAFETY_SET_ALLOWED_AREA","SAFETY_SET_ALLOWED_AREA_DATA","SCALED_IMU","SCALED_IMU2","SCALED_IMU2_DATA","SCALED_IMU3","SCALED_IMU3_DATA","SCALED_IMU_DATA","SCALED_PRESSURE","SCALED_PRESSURE2","SCALED_PRESSURE2_DATA","SCALED_PRESSURE3","SCALED_PRESSURE3_DATA","SCALED_PRESSURE_DATA","SCRIPTING_CMD_REPL_START","SCRIPTING_CMD_REPL_STOP","SCRIPTING_CMD_STOP","SCRIPTING_CMD_STOP_AND_RESTART","SENSOR_OFFSETS","SENSOR_OFFSETS_DATA","SERIAL_CONTROL","SERIAL_CONTROL_DATA","SERIAL_CONTROL_DEV_GPS1","SERIAL_CONTROL_DEV_GPS2","SERIAL_CONTROL_DEV_SHELL","SERIAL_CONTROL_DEV_TELEM1","SERIAL_CONTROL_DEV_TELEM2","SERIAL_CONTROL_FLAG_BLOCKING","SERIAL_CONTROL_FLAG_EXCLUSIVE","SERIAL_CONTROL_FLAG_MULTI","SERIAL_CONTROL_FLAG_REPLY","SERIAL_CONTROL_FLAG_RESPOND","SERIAL_CONTROL_SERIAL0","SERIAL_CONTROL_SERIAL1","SERIAL_CONTROL_SERIAL2","SERIAL_CONTROL_SERIAL3","SERIAL_CONTROL_SERIAL4","SERIAL_CONTROL_SERIAL5","SERIAL_CONTROL_SERIAL6","SERIAL_CONTROL_SERIAL7","SERIAL_CONTROL_SERIAL8","SERIAL_CONTROL_SERIAL9","SERVO_OUTPUT_RAW","SERVO_OUTPUT_RAW_DATA","SETUP_SIGNING","SETUP_SIGNING_DATA","SET_ACTUATOR_CONTROL_TARGET","SET_ACTUATOR_CONTROL_TARGET_DATA","SET_ATTITUDE_TARGET","SET_ATTITUDE_TARGET_DATA","SET_GPS_GLOBAL_ORIGIN","SET_GPS_GLOBAL_ORIGIN_DATA","SET_HOME_POSITION","SET_HOME_POSITION_DATA","SET_MAG_OFFSETS","SET_MAG_OFFSETS_DATA","SET_MODE","SET_MODE_DATA","SET_POSITION_TARGET_GLOBAL_INT","SET_POSITION_TARGET_GLOBAL_INT_DATA","SET_POSITION_TARGET_LOCAL_NED","SET_POSITION_TARGET_LOCAL_NED_DATA","SIMSTATE","SIMSTATE_DATA","SIM_STATE","SIM_STATE_DATA","SMART_BATTERY_INFO","SMART_BATTERY_INFO_DATA","SPEED_TYPE_AIRSPEED","SPEED_TYPE_GROUNDSPEED","SSA","STATUSTEXT","STATUSTEXT_DATA","STORAGE_INFORMATION","STORAGE_INFORMATION_DATA","STORAGE_STATUS_EMPTY","STORAGE_STATUS_NOT_SUPPORTED","STORAGE_STATUS_READY","STORAGE_STATUS_UNFORMATTED","STORAGE_TYPE_CF","STORAGE_TYPE_CFE","STORAGE_TYPE_HD","STORAGE_TYPE_MICROSD","STORAGE_TYPE_OTHER","STORAGE_TYPE_SD","STORAGE_TYPE_UNKNOWN","STORAGE_TYPE_USB_STICK","STORAGE_TYPE_XQD","STORAGE_USAGE_FLAG_LOGS","STORAGE_USAGE_FLAG_PHOTO","STORAGE_USAGE_FLAG_SET","STORAGE_USAGE_FLAG_VIDEO","SUB_MODE_ACRO","SUB_MODE_ALT_HOLD","SUB_MODE_AUTO","SUB_MODE_CIRCLE","SUB_MODE_GUIDED","SUB_MODE_MANUAL","SUB_MODE_POSHOLD","SUB_MODE_STABILIZE","SUB_MODE_SURFACE","SUPPORTED_TUNES","SUPPORTED_TUNES_DATA","SYSTEM_TIME","SYSTEM_TIME_DATA","SYS_STATUS","SYS_STATUS_DATA","ScriptingCmd","SerialControlDev","SerialControlFlag","SetFocusType","SpeedType","StorageStatus","StorageType","StorageUsageFlag","SubMode","TERRAIN_CHECK","TERRAIN_CHECK_DATA","TERRAIN_DATA","TERRAIN_DATA_DATA","TERRAIN_REPORT","TERRAIN_REPORT_DATA","TERRAIN_REQUEST","TERRAIN_REQUEST_DATA","TIMESYNC","TIMESYNC_DATA","TIME_ESTIMATE_TO_TARGET","TIME_ESTIMATE_TO_TARGET_DATA","TRACKER_MODE_AUTO","TRACKER_MODE_INITIALIZING","TRACKER_MODE_MANUAL","TRACKER_MODE_SCAN","TRACKER_MODE_SERVO_TEST","TRACKER_MODE_STOP","TRAJECTORY_REPRESENTATION_BEZIER","TRAJECTORY_REPRESENTATION_BEZIER_DATA","TRAJECTORY_REPRESENTATION_WAYPOINTS","TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA","TUNE_FORMAT_MML_MODERN","TUNE_FORMAT_QBASIC1_1","TUNNEL","TUNNEL_DATA","TrackerMode","TuneFormat","UAVCAN_NODE_HEALTH_CRITICAL","UAVCAN_NODE_HEALTH_ERROR","UAVCAN_NODE_HEALTH_OK","UAVCAN_NODE_HEALTH_WARNING","UAVCAN_NODE_INFO","UAVCAN_NODE_INFO_DATA","UAVCAN_NODE_MODE_INITIALIZATION","UAVCAN_NODE_MODE_MAINTENANCE","UAVCAN_NODE_MODE_OFFLINE","UAVCAN_NODE_MODE_OPERATIONAL","UAVCAN_NODE_MODE_SOFTWARE_UPDATE","UAVCAN_NODE_STATUS","UAVCAN_NODE_STATUS_DATA","UAVIONIX_ADSB_OUT_CFG","UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L15M_W23M","UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L25M_W28P5M","UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L25_34M","UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L35_33M","UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L35_38M","UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L45_39P5M","UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L45_45M","UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L55_45M","UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L55_52M","UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L65_59P5M","UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L65_67M","UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L75_W72P5M","UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L75_W80M","UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L85_W80M","UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L85_W90M","UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_NO_DATA","UAVIONIX_ADSB_OUT_CFG_DATA","UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_LEFT_2M","UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_LEFT_4M","UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_LEFT_6M","UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_NO_DATA","UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_RIGHT_0M","UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_RIGHT_2M","UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_RIGHT_4M","UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_RIGHT_6M","UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LON_APPLIED_BY_SENSOR","UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LON_NO_DATA","UAVIONIX_ADSB_OUT_DOWNED_AIRCRAFT_EMERGENCY","UAVIONIX_ADSB_OUT_DYNAMIC","UAVIONIX_ADSB_OUT_DYNAMIC_DATA","UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX_2D","UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX_3D","UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX_DGPS","UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX_NONE_0","UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX_NONE_1","UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX_RTK","UAVIONIX_ADSB_OUT_DYNAMIC_STATE_AUTOPILOT_ENABLED","UAVIONIX_ADSB_OUT_DYNAMIC_STATE_IDENT","UAVIONIX_ADSB_OUT_DYNAMIC_STATE_INTENT_CHANGE","UAVIONIX_ADSB_OUT_DYNAMIC_STATE_NICBARO_CROSSCHECKED","UAVIONIX_ADSB_OUT_DYNAMIC_STATE_ON_GROUND","UAVIONIX_ADSB_OUT_GENERAL_EMERGENCY","UAVIONIX_ADSB_OUT_LIFEGUARD_EMERGENCY","UAVIONIX_ADSB_OUT_MINIMUM_FUEL_EMERGENCY","UAVIONIX_ADSB_OUT_NO_COMM_EMERGENCY","UAVIONIX_ADSB_OUT_NO_EMERGENCY","UAVIONIX_ADSB_OUT_RESERVED","UAVIONIX_ADSB_OUT_RF_SELECT_RX_ENABLED","UAVIONIX_ADSB_OUT_RF_SELECT_STANDBY","UAVIONIX_ADSB_OUT_RF_SELECT_TX_ENABLED","UAVIONIX_ADSB_OUT_UNLAWFUL_INTERFERANCE_EMERGENCY","UAVIONIX_ADSB_RF_HEALTH_FAIL_RX","UAVIONIX_ADSB_RF_HEALTH_FAIL_TX","UAVIONIX_ADSB_RF_HEALTH_INITIALIZING","UAVIONIX_ADSB_RF_HEALTH_OK","UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT","UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA","UNDER_WAY","UTM_DATA_AVAIL_FLAGS_ALTITUDE_AVAILABLE","UTM_DATA_AVAIL_FLAGS_HORIZONTAL_VELO_AVAILABLE","UTM_DATA_AVAIL_FLAGS_NEXT_WAYPOINT_AVAILABLE","UTM_DATA_AVAIL_FLAGS_POSITION_AVAILABLE","UTM_DATA_AVAIL_FLAGS_RELATIVE_ALTITUDE_AVAILABLE","UTM_DATA_AVAIL_FLAGS_TIME_VALID","UTM_DATA_AVAIL_FLAGS_UAS_ID_AVAILABLE","UTM_DATA_AVAIL_FLAGS_VERTICAL_VELO_AVAILABLE","UTM_FLIGHT_STATE_AIRBORNE","UTM_FLIGHT_STATE_EMERGENCY","UTM_FLIGHT_STATE_GROUND","UTM_FLIGHT_STATE_NOCTRL","UTM_FLIGHT_STATE_UNKNOWN","UTM_GLOBAL_POSITION","UTM_GLOBAL_POSITION_DATA","UavcanNodeHealth","UavcanNodeMode","UavionixAdsbEmergencyStatus","UavionixAdsbOutCfgAircraftSize","UavionixAdsbOutCfgGpsOffsetLat","UavionixAdsbOutCfgGpsOffsetLon","UavionixAdsbOutDynamicGpsFix","UavionixAdsbOutDynamicState","UavionixAdsbOutRfSelect","UavionixAdsbRfHealth","UtmDataAvailFlags","UtmFlightState","V2_EXTENSION","V2_EXTENSION_DATA","VFR_HUD","VFR_HUD_DATA","VIBRATION","VIBRATION_DATA","VICON_POSITION_ESTIMATE","VICON_POSITION_ESTIMATE_DATA","VIDEO_STREAM_INFORMATION","VIDEO_STREAM_INFORMATION_DATA","VIDEO_STREAM_STATUS","VIDEO_STREAM_STATUS_DATA","VIDEO_STREAM_STATUS_FLAGS_RUNNING","VIDEO_STREAM_STATUS_FLAGS_THERMAL","VIDEO_STREAM_TYPE_MPEG_TS_H264","VIDEO_STREAM_TYPE_RTPUDP","VIDEO_STREAM_TYPE_RTSP","VIDEO_STREAM_TYPE_TCP_MPEG","VISION_POSITION_DELTA","VISION_POSITION_DELTA_DATA","VISION_POSITION_ESTIMATE","VISION_POSITION_ESTIMATE_DATA","VISION_SPEED_ESTIMATE","VISION_SPEED_ESTIMATE_DATA","VTOL_TRANSITION_HEADING_ANY","VTOL_TRANSITION_HEADING_NEXT_WAYPOINT","VTOL_TRANSITION_HEADING_SPECIFIED","VTOL_TRANSITION_HEADING_TAKEOFF","VTOL_TRANSITION_HEADING_VEHICLE_DEFAULT","Vcc","Vcc","VelEW","VideoStreamStatusFlags","VideoStreamType","Vservo","VtolTransitionHeading","WATER_DEPTH","WATER_DEPTH_DATA","WHEEL_DISTANCE","WHEEL_DISTANCE_DATA","WIFI_CONFIG_AP","WIFI_CONFIG_AP_DATA","WIFI_CONFIG_AP_MODE_AP","WIFI_CONFIG_AP_MODE_DISABLED","WIFI_CONFIG_AP_MODE_STATION","WIFI_CONFIG_AP_MODE_UNDEFINED","WIFI_CONFIG_AP_RESPONSE_ACCEPTED","WIFI_CONFIG_AP_RESPONSE_MODE_ERROR","WIFI_CONFIG_AP_RESPONSE_PASSWORD_ERROR","WIFI_CONFIG_AP_RESPONSE_REJECTED","WIFI_CONFIG_AP_RESPONSE_SSID_ERROR","WIFI_CONFIG_AP_RESPONSE_UNDEFINED","WINCH_ABANDON_LINE","WINCH_DELIVER","WINCH_HOLD","WINCH_LOAD_LINE","WINCH_LOAD_PAYLOAD","WINCH_LOCK","WINCH_RATE_CONTROL","WINCH_RELATIVE_LENGTH_CONTROL","WINCH_RELAXED","WINCH_RETRACT","WINCH_STATUS","WINCH_STATUS_DATA","WIND","WIND_COV","WIND_COV_DATA","WIND_DATA","WifiConfigApMode","WifiConfigApResponse","WinchActions","ZOOM_TYPE_CONTINUOUS","ZOOM_TYPE_FOCAL_LENGTH","ZOOM_TYPE_RANGE","ZOOM_TYPE_STEP","abs_pressure","abs_pressure","acc","acc_x","acc_y","acc_z","accel_cal_x","accel_cal_y","accel_cal_z","accel_weight","accuracy","accuracy","accuracyHor","accuracyVel","accuracyVert","achieved","achieved","ack","action","active","actuator","adc1","adc2","adc3","adc4","adc5","adc6","address","address","address","afx","afx","afx","afx","afy","afy","afy","afy","afz","afz","afz","afz","aircraftSize","airspeed","airspeed","airspeed","airspeed","airspeed_sp","airspeed_sp","all","all","all","all","all","all","all","all","all","all","all","all","all","all","all","all","all","all","all","all","all","all","all","all","all","all","all","all","all","all","all","all","alt","alt","alt","alt","alt","alt","alt","alt","alt","alt","alt","alt","alt","alt","alt","alt","alt","alt","alt_camera","alt_error","alt_image","alt_msl","alt_rel","altitude","altitude","altitude","altitude","altitude","altitude","altitude","altitude","altitude","altitude_amsl","altitude_amsl","altitude_barometric","altitude_geodetic","altitude_local","altitude_minimum_delta","altitude_monotonic","altitude_relative","altitude_sp","altitude_terrain","altitude_type","angle_delta","angle_x","angle_y","angular_velocity_x","angular_velocity_x","angular_velocity_x","angular_velocity_y","angular_velocity_y","angular_velocity_y","angular_velocity_z","angular_velocity_z","angular_velocity_z","aperture","apn","approach_x","approach_x","approach_y","approach_y","approach_z","approach_z","arc_entry_lat","arc_entry_lon","area_ceiling","area_count","area_floor","area_radius","arguments","arming_time_utc","array_id","aspd_error","attempt","attitude_q","attitude_quaternion","authentication_data","authentication_type","autocontinue","autocontinue","autocontinue","autopilot","autopilot","autosaved","aux1","aux2","aux3","aux4","available_capacity","available_capacity","ax","axis","axis","ay","az","az_torque_cmd","baroAltMSL","barometer_accuracy","barometric_pressure","base_mode","base_mode","base_mode","baseline_a_mm","baseline_a_mm","baseline_b_mm","baseline_b_mm","baseline_c_mm","baseline_c_mm","baseline_coords_type","baseline_coords_type","bat_current_setpoint","battery","battery_current","battery_function","battery_function","battery_remaining","battery_remaining","battery_remaining","baudrate","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitrate","bitrate","bitrate","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","board_version","body_pitch_rate","body_pitch_rate","body_roll_rate","body_roll_rate","body_yaw_rate","body_yaw_rate","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","bottom_clearance","breach_count","breach_count","breach_status","breach_time","breach_type","break_alt","brkval","bus","bus","bus","bus","bus","bus_voltage","busname","busname","bustype","bustype","buttons","cal_mask","cal_mask","cal_status","cal_status","callsign","callsign","callsign","cam_definition_uri","cam_definition_version","cam_idx","cam_idx","camera_id","camera_id","cap_flags","cap_flags","capabilities","capacity_full","capacity_full_specification","capture_mode","capture_result","category_eu","chan10_raw","chan10_raw","chan11_raw","chan11_raw","chan12_raw","chan12_raw","chan13_raw","chan14_raw","chan15_raw","chan16_raw","chan17_raw","chan18_raw","chan1_raw","chan1_raw","chan1_raw","chan1_raw","chan1_scaled","chan2_raw","chan2_raw","chan2_raw","chan2_raw","chan2_scaled","chan3_raw","chan3_raw","chan3_raw","chan3_raw","chan3_scaled","chan4_raw","chan4_raw","chan4_raw","chan4_raw","chan4_scaled","chan5_raw","chan5_raw","chan5_raw","chan5_raw","chan5_scaled","chan6_raw","chan6_raw","chan6_raw","chan6_raw","chan6_scaled","chan7_raw","chan7_raw","chan7_raw","chan7_raw","chan7_scaled","chan8_raw","chan8_raw","chan8_raw","chan8_raw","chan8_scaled","chan9_raw","chan9_raw","chancount","charging_minimum_voltage","child_frame_id","class_eu","classification_type","climb","climb_rate","climb_rate","clipping_0","clipping_1","clipping_2","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","cmd_id","cmd_id","cmd_id","cmd_id","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cog","cog","cog","command","command","command","command","command","command","command","command_id","command_id","commanded_action","compass_id","compass_id","compass_variance","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","completion_mask","completion_pct","confidence","config_type","config_type","confirmation","connection_type","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","control_request","control_request","controls","controls","controls","coordinate_frame","coordinate_frame","coordinate_frame","coordinate_frame","count","count","count","count","count","count","count","count","count","count","count","count","count","count","count","counter","covariance","covariance","covariance","covariance","cpu_combined","cpu_cores","crc","cross_track_error","current","current","current","current","current","current","current","current","current","current_battery","current_battery","current_battery","current_consumed","current_distance","current_height","custom0","custom1","custom2","custom_bytes","custom_cap_flags","custom_len","custom_mode","custom_mode","custom_mode","custom_mode","custom_name","custom_state","cycle_count","cylinder_head_temperature","data","data","data","data","data","data","data","data","data","data","data","data","data","data","data","data","data","data_page","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default_message_from_id","delta","delta_angle_x","delta_angle_y","delta_angle_z","delta_time","delta_velocity_x","delta_velocity_y","delta_velocity_z","demanded_rate_x","demanded_rate_y","demanded_rate_z","description","description_type","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","desired","desired","destination_component","destination_system","device","device_name","dgps_age","dgps_numch","diag_x","diag_y","diag_z","diff_pressure","diff_pressure","diff_pressure","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","dimension_bow","dimension_port","dimension_starboard","dimension_stern","direction","direction","direction_x","direction_y","direction_z","discharge_minimum_voltage","dist","distance","distance","distance","distance","distance","distance","distances","drop_rate_comm","ecu_index","el_torque_cmd","emergencyStatus","emitterType","emitter_type","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","enable_lte","enable_pin","end","end_index","end_index","energy_consumed","engine_cut_off","engine_load","eph","eph","eph","eph","epv","epv","epv","epv","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","error","error","error_count","error_rp","error_yaw","errors_comm","errors_count1","errors_count2","errors_count3","errors_count4","est_capabilities","estimator_status","estimator_type","estimator_type","event_id","event_time_boot_ms","exhaust_gas_temperature","expected_travel_distance","exposure_type","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extra_crc","extra_param","extra_param","extra_value","extra_value","f","f_dot","failed_sessions","failsafe","failure_flags","failure_flags","failure_flags","failure_reason","fan_speed","feed_forward_angular_velocity_z","fields_updated","fields_updated","file_crc","file_url","firmware_version","firmware_version","first_message_offset","first_message_offset","first_sequence","fitness","fix_type","fix_type","fix_type","fix_type","fixed","fixed","flags","flags","flags","flags","flags","flags","flags","flags","flags","flags","flags","flags","flags","flags","flags","flags","flags","flags","flags","flags","flags","flags","flight_custom_version","flight_state","flight_sw_version","flight_uuid","flow_comp_m_x","flow_comp_m_y","flow_x","flow_y","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","foc_len","focal_length","focus_lock","format","format","frame","frame","frame","frame","frame","frame","frame","frame","frame_id","framerate","framerate","framerate","freemem","frequency","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","fuel_consumed","fuel_flow","gcs_system_id","general_metadata_file_crc","general_metadata_uri","generator_speed","generator_temperature","gimbal_device_id","gimbal_device_id","gimbal_device_id","gimbal_device_id","gimbal_device_id","gpsAlt","gpsFix","gpsLat","gpsLon","gpsOffsetLat","gpsOffsetLon","gps_fix_type","gps_id","gps_nsat","gpu_combined","gpu_cores","grid_spacing","grid_spacing","gridbit","ground_distance","groundspeed","groundspeed","groundspeed","group_mlx","group_mlx","gyro_cal_x","gyro_cal_y","gyro_cal_z","h_acc","h_acc","hagl_ratio","hardware_version","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hdg","hdg","hdg_acc","hdop","heading","heading","heading","heading","heading","heading_sp","health","health","healthy","height","height","height_reference","hfov","hfov","hfov","hor_velocity","horiz_accuracy","horiz_accuracy","horizontal_accuracy","horizontal_minimum_delta","humidity","hw_unique_id","hw_version_major","hw_version_minor","iar_num_hypotheses","iar_num_hypotheses","id","id","id","id","id","id","id","id","id","id","id","id","id","id_or_mac","id_or_mac","id_or_mac","id_or_mac","id_or_mac","id_or_mac","id_or_mac","id_type","ids","idx","idx","idx","idx","ignition_timing","ignore_flags","image_index","image_interval","image_status","img_idx","img_idx","increment","increment","increment","ind","ind_airspeed","index","index","index","info","initial_timestamp","injection_time","input_a","input_b","input_c","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","instance","intake_manifold_pressure","intake_manifold_temperature","integrated_x","integrated_x","integrated_xgyro","integrated_xgyro","integrated_y","integrated_y","integrated_ygyro","integrated_ygyro","integrated_zgyro","integrated_zgyro","integration_time_us","integration_time_us","interference","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","interval_us","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","iso","joint_az","joint_el","joint_roll","jpg_quality","key","lac","land","land_dir","landed_state","landed_state","landed_state","landing_lat","landing_lon","last_action","last_change_ms","last_clear","last_heartbeat","last_log_num","last_page_index","last_recovery","last_sequence","last_trigger","lat","lat","lat","lat","lat","lat","lat","lat","lat","lat","lat","lat","lat","lat","lat","lat","lat","lat","lat","lat","lat","lat","lat","lat","lat","lat","lat_camera","lat_image","lat_int","lat_int","latitude","latitude","latitude","latitude","latitude","latitude","latitude","len","len","len","len","len","len","len","len","length","length","length","lens_id","library_version_hash","limits_state","line_length","link_rx_max","link_rx_rate","link_tx_max","link_tx_rate","link_type","lng","lng","lng","lng","lng","lng","lng","load","load_current","loaded","log_levels","lon","lon","lon","lon","lon","lon","lon","lon","lon","lon","lon","lon","lon","lon","lon","lon","lon","lon","lon","lon_camera","lon_image","lon_int","lon_int","longitude","longitude","longitude","longitude","longitude","longitude","longitude","mag_declination","mag_ofs_x","mag_ofs_x","mag_ofs_y","mag_ofs_y","mag_ofs_z","mag_ofs_z","mag_ratio","manual_override_switch","mask","mavlink_version","mavtype","mavtype","mavtype","mavtype","mavtype","mavtype","mavtype","mavtype","mavtype","mavtype","mavtype","mavtype","mavtype","mavtype","mavtype","mavtype","max1","max2","max3","max4","max5","max_distance","max_distance","max_distance","max_value","max_value","max_version","mcc","message_id","message_id","message_id_from_name","message_name","message_rate","message_type","messages","messages_lost","messages_received","messages_sent","middleware_custom_version","middleware_sw_version","min1","min2","min3","min4","min5","min_distance","min_distance","min_distance","min_value","min_value","min_version","mission_end","mission_next_item","mnc","mode","mode","mode","mode","mode_id","mode_switch","model_name","model_name","mods_enabled","mods_required","mods_triggered","mount_mode","msg_pack_size","name","name","name","name","name","name","name","nav_bearing","nav_mode","nav_pitch","nav_roll","navigational_status","new_pin","next_alt","next_lat","next_lon","noise","noise","not","not","not","not","not","not","not","not","not","not","not","not","not","not","not","not","not","not","not","not","not","not","not","not","not","not","not","not","not","not","not","not","nsats","nsats","numBands","numSats","num_ids","num_logs","obstacle_id","offdiag_x","offdiag_y","offdiag_z","offset","ofs","ofs","ofs_x","ofs_y","ofs_z","omega","omegaIx","omegaIy","omegaIz","omega_dot","on_off","onboard_control_sensors_enabled","onboard_control_sensors_health","onboard_control_sensors_present","operation","operator_altitude_geo","operator_altitude_geo","operator_id","operator_id_type","operator_latitude","operator_latitude","operator_location_type","operator_longitude","operator_longitude","orientation","os_custom_version","os_sw_version","osd_index","osd_index","osd_screen","osd_screen","p1","p1x","p1x","p1y","p1y","p1z","p1z","p2","p2x","p2x","p2y","p2y","p2z","p2z","p3","p4","packets","param1","param1","param1","param1","param2","param2","param2","param2","param3","param3","param3","param3","param4","param4","param4","param4","param5","param6","param7","param_count","param_count","param_id","param_id","param_id","param_id","param_id","param_id","param_id","param_id","param_id","param_id","param_index","param_index","param_index","param_index","param_index","param_result","param_type","param_type","param_type","param_type","param_type","param_value","param_value","param_value","param_value","param_value","param_value0","param_value_max","param_value_min","parameter_rc_channel_index","parse","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","passkey","password","path_lat","path_lon","pattern","payload","payload","payload","payload","payload_length","payload_type","pending","peripherals_metadata_file_crc","peripherals_metadata_uri","pin","pitch","pitch","pitch","pitch","pitch","pitch","pitch","pitch","pitch","pitch","pitch","pitch","pitch","pitch","pitch","pitch","pitch","pitch_elevator","pitch_max","pitch_max","pitch_min","pitch_min","pitch_rate","pitch_rate","pitch_rate","pitchspeed","pitchspeed","pitchspeed","pitchspeed","pitchspeed","pitchspeed","point_x","point_y","pointing_a","pointing_b","pointing_c","port","port","port","pos_horiz_accuracy","pos_horiz_ratio","pos_horiz_variance","pos_variance","pos_vert_accuracy","pos_vert_ratio","pos_vert_variance","pos_x","pos_x","pos_y","pos_y","pos_yaw","pos_yaw","pos_z","pos_z","pose_covariance","position_cov","position_delta","power_generated","press_abs","press_abs","press_abs","press_abs","press_diff","press_diff","press_diff","press_diff1","press_diff2","pressure_alt","pressure_alt","primary_control_compid","primary_control_sysid","product_id","pt_compensation","puk","q","q","q","q","q","q","q","q","q","q","q","q","q","q","q1","q1","q2","q2","q3","q3","q4","q4","q_estimated_delay_us","quality","quality","quality","quality","r","radius","radius","ram_total","ram_usage","rates","ratio","raw_press","raw_temp","read_speed","reason","rec_bottom_x","rec_bottom_y","rec_top_x","rec_top_y","recording_time_ms","rectifier_temperature","regstart","regstart","regstart","relative_alt","relative_alt","relative_alt","relative_alt","remnoise","remnoise","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remrssi","remrssi","renorm_val","req_message_rate","req_stream_id","request_id","request_id","request_id","request_id","request_id","request_id","request_id","request_id","request_id","resolution_h","resolution_h","resolution_h","resolution_h","resolution_v","resolution_v","resolution_v","resolution_v","response","resting_minimum_voltage","result","result","result","result","result","rfHealth","rfSelect","ring_pending","rl_torque_cmd","roaming","roll","roll","roll","roll","roll","roll","roll","roll","roll","roll","roll","roll","roll","roll","roll","roll_ailerons","roll_max","roll_max","roll_min","roll_min","roll_rate","rollspeed","rollspeed","rollspeed","rollspeed","rollspeed","rollspeed","rotation","rotation","rotation","rpm","rpm","rpm","rpm","rpm","rpm1","rpm2","rssi","rssi","rssi","rssi","rssi","rssi","rtk_health","rtk_health","rtk_rate","rtk_rate","rtk_receiver_id","rtk_receiver_id","runtime","rx_buf","rx_overflows","rx_parse_err","rx_rate","rx_session_pending","rxerrors","rxerrors","safe_return","satellite_azimuth","satellite_elevation","satellite_prn","satellite_snr","satellite_used","satellites_visible","satellites_visible","satellites_visible","satellites_visible","satellites_visible","save_position","scale","secondary_control_compid","secondary_control_sysid","secret_key","sensor_id","sensor_id","sensor_id","sensor_size_h","sensor_size_v","sensor_type","sensor_type","seq","seq","seq","seq","seq","seq","seq","seq","seq","seqno","seqno","seqnr","sequence","sequence","sequence","sequence","sequence","sequence","sequence_oldest_available","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","serial_number","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","servo1_raw","servo2_raw","servo3_raw","servo4_raw","servo5_raw","servo6_raw","servo7_raw","servo8_raw","session","set","set","set","set","set","set","set","set","set","set","set","set","set","set","set","set","set","set","set","set","set","set","set","set","set","set","set","set","set","set","set","set","severity","shot","shutter_speed","sigma","sigma_dot","signal_quality","single_message_size","size","size","size","size_x","size_y","spacing","spark_dwell_time","spec_version_hash","speed","speed","speed_accuracy","speed_accuracy","speed_horizontal","speed_vertical","speed_z","squawk","squawk","src","ssid","stab_pitch","stab_roll","stab_yaw","stage","stallSpeed","start","start_index","start_index","start_stop","state","state","state_x","state_y","state_z","status","status","status","status","status","status","status","status","status","status","status","status","std_dev_horz","std_dev_vert","storage","storage_count","storage_id","storage_total","storage_type","storage_usage","stream_id","stream_id","stream_id","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_mode","successful_sessions","sw_vcs_commit","sw_version_major","sw_version_minor","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","system_status","takeoff_time_utc","target","target_altitude","target_bearing","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_data","target_distance","target_heading","target_network","target_network","target_num","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","tas_ratio","tc1","temperature","temperature","temperature","temperature","temperature","temperature","temperature","temperature","temperature","temperature","temperature","temperature","temperature","temperature","temperature","temperature","temperature","temperature_air","temperature_air","temperature_board","temperature_core","tension","terrain_alt_variance","terrain_height","text","theta","theta_dot","threat_level","throttle","throttle","throttle","throttle","throttle","throttle_out","throttle_position","thrust","thrust","thrust","time","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_us","time_delta_distance_us","time_delta_distance_us","time_delta_usec","time_last_baseline_ms","time_last_baseline_ms","time_to_minimum_delta","time_unix_usec","time_until_maintenance","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_utc","time_utc","time_week","time_week_ms","timeout","timestamp","timestamp","timestamp","timestamp","timestamp","timestamp","timestamp","timestamp","timestamp_accuracy","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","total_capacity","totalcurrent","totalcurrent","totalcurrent","tow","tow","tracking_mode","tracking_status","tracking_status","transfer_type","true_airspeed","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","ts1","tslc","tslc","tune","tune","turn_rate","tx_buf","tx_overflows","tx_rate","tx_session_pending","txbuf","txbuf","type1","type2","type3","type4","type5","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_mask","type_mask","type_mask","type_mask","type_mask","type_mask","u","ua_type","uas_id","uas_id","uid","uid","union","union","union","union","union","union","union","union","union","union","union","union","union","union","union","union","union","union","union","union","union","union","union","union","union","union","union","union","union","union","union","union","update_rate","uptime","uptime_sec","uptime_sec","uri","uri","uri","uri","uri_type","usec","usec","usec","usec","used_capacity","utcTime","v1","v2","v3","v4","v_acc","v_acc","v_estimated_delay_us","valid_points","valid_points","value","value","value","value","value","value","var_horiz","var_vert","vd","vd","vd","vdop","ve","ve","ve","vel","vel","vel","vel","velNS","velVert","vel_acc","vel_acc","vel_d","vel_e","vel_n","vel_ratio","vel_variance","vel_x","vel_y","vel_yaw","vel_z","velocity","velocity_covariance","velocity_variance","vendor_id","vendor_name","vendor_name","vendor_specific_status_code","ver","ver_velocity","version","version","vert_accuracy","vert_accuracy","vertical_accuracy","vfov","vibration_x","vibration_y","vibration_z","video_status","vn","vn","vn","voltage","voltage","voltage","voltage","voltage","voltage","voltage","voltage_battery","voltages","vtol_state","vx","vx","vx","vx","vx","vx","vx","vx","vx","vx","vx","vx","vx","vx","vy","vy","vy","vy","vy","vy","vy","vy","vy","vy","vy","vy","vy","vy","vz","vz","vz","vz","vz","vz","vz","vz","vz","vz","vz","vz","vz","vz","weight","width","wind_alt","wind_heading","wind_x","wind_y","wind_z","windspeed","wn","wn","wp_dist","wp_distance","wp_num","wp_num","write_speed","x","x","x","x","x","x","x","x","x","x","x","x","x","x","x","x","x","x","x","x","x_acc","x_pos","x_vel","xacc","xacc","xacc","xacc","xacc","xacc","xacc","xacc","xacc","xacc","xgyro","xgyro","xgyro","xgyro","xgyro","xgyro","xgyro","xgyro","xmag","xmag","xmag","xmag","xmag","xmag","xtrack_error","y","y","y","y","y","y","y","y","y","y","y","y","y","y","y","y","y","y","y","y","y_acc","y_pos","y_vel","yacc","yacc","yacc","yacc","yacc","yacc","yacc","yacc","yacc","yacc","yaw","yaw","yaw","yaw","yaw","yaw","yaw","yaw","yaw","yaw","yaw","yaw","yaw","yaw","yaw","yaw","yaw","yaw","yaw","yaw","yaw_max","yaw_max","yaw_min","yaw_min","yaw_rate","yaw_rate","yaw_rate","yaw_rate","yaw_rate","yaw_rate","yaw_rate","yaw_rudder","yawspeed","yawspeed","yawspeed","yawspeed","yawspeed","yawspeed","ygyro","ygyro","ygyro","ygyro","ygyro","ygyro","ygyro","ygyro","ymag","ymag","ymag","ymag","ymag","ymag","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z_acc","z_pos","z_vel","zacc","zacc","zacc","zacc","zacc","zacc","zacc","zacc","zacc","zacc","zgyro","zgyro","zgyro","zgyro","zgyro","zgyro","zgyro","zgyro","zmag","zmag","zmag","zmag","zmag","zmag","zoom_pos","zoom_step","Bytes","borrow","borrow_mut","from","get_array","get_bytes","get_f32_le","get_f64_le","get_i16_le","get_i24_le","get_i32_le","get_i64_le","get_i8","get_u16_le","get_u24_le","get_u32_le","get_u64_le","get_u8","into","new","remaining_bytes","try_from","try_into","type_id","BytesMut","borrow","borrow_mut","from","into","is_empty","len","new","put_f32_le","put_f64_le","put_i16_le","put_i24_le","put_i32_le","put_i64_le","put_i8","put_slice","put_u16_le","put_u24_le","put_u32_le","put_u64_le","put_u8","remaining","try_from","try_into","type_id","ACTUATOR_CONFIGURATION_3D_MODE_OFF","ACTUATOR_CONFIGURATION_3D_MODE_ON","ACTUATOR_CONFIGURATION_BEEP","ACTUATOR_CONFIGURATION_NONE","ACTUATOR_CONFIGURATION_SPIN_DIRECTION1","ACTUATOR_CONFIGURATION_SPIN_DIRECTION2","ACTUATOR_CONTROL_TARGET","ACTUATOR_CONTROL_TARGET_DATA","ACTUATOR_OUTPUT_FUNCTION_MOTOR1","ACTUATOR_OUTPUT_FUNCTION_MOTOR10","ACTUATOR_OUTPUT_FUNCTION_MOTOR11","ACTUATOR_OUTPUT_FUNCTION_MOTOR12","ACTUATOR_OUTPUT_FUNCTION_MOTOR13","ACTUATOR_OUTPUT_FUNCTION_MOTOR14","ACTUATOR_OUTPUT_FUNCTION_MOTOR15","ACTUATOR_OUTPUT_FUNCTION_MOTOR16","ACTUATOR_OUTPUT_FUNCTION_MOTOR2","ACTUATOR_OUTPUT_FUNCTION_MOTOR3","ACTUATOR_OUTPUT_FUNCTION_MOTOR4","ACTUATOR_OUTPUT_FUNCTION_MOTOR5","ACTUATOR_OUTPUT_FUNCTION_MOTOR6","ACTUATOR_OUTPUT_FUNCTION_MOTOR7","ACTUATOR_OUTPUT_FUNCTION_MOTOR8","ACTUATOR_OUTPUT_FUNCTION_MOTOR9","ACTUATOR_OUTPUT_FUNCTION_NONE","ACTUATOR_OUTPUT_FUNCTION_SERVO1","ACTUATOR_OUTPUT_FUNCTION_SERVO10","ACTUATOR_OUTPUT_FUNCTION_SERVO11","ACTUATOR_OUTPUT_FUNCTION_SERVO12","ACTUATOR_OUTPUT_FUNCTION_SERVO13","ACTUATOR_OUTPUT_FUNCTION_SERVO14","ACTUATOR_OUTPUT_FUNCTION_SERVO15","ACTUATOR_OUTPUT_FUNCTION_SERVO16","ACTUATOR_OUTPUT_FUNCTION_SERVO2","ACTUATOR_OUTPUT_FUNCTION_SERVO3","ACTUATOR_OUTPUT_FUNCTION_SERVO4","ACTUATOR_OUTPUT_FUNCTION_SERVO5","ACTUATOR_OUTPUT_FUNCTION_SERVO6","ACTUATOR_OUTPUT_FUNCTION_SERVO7","ACTUATOR_OUTPUT_FUNCTION_SERVO8","ACTUATOR_OUTPUT_FUNCTION_SERVO9","ACTUATOR_OUTPUT_STATUS","ACTUATOR_OUTPUT_STATUS_DATA","ADSB_ALTITUDE_TYPE_GEOMETRIC","ADSB_ALTITUDE_TYPE_PRESSURE_QNH","ADSB_EMITTER_TYPE_EMERGENCY_SURFACE","ADSB_EMITTER_TYPE_GLIDER","ADSB_EMITTER_TYPE_HEAVY","ADSB_EMITTER_TYPE_HIGHLY_MANUV","ADSB_EMITTER_TYPE_HIGH_VORTEX_LARGE","ADSB_EMITTER_TYPE_LARGE","ADSB_EMITTER_TYPE_LIGHT","ADSB_EMITTER_TYPE_LIGHTER_AIR","ADSB_EMITTER_TYPE_NO_INFO","ADSB_EMITTER_TYPE_PARACHUTE","ADSB_EMITTER_TYPE_POINT_OBSTACLE","ADSB_EMITTER_TYPE_ROTOCRAFT","ADSB_EMITTER_TYPE_SERVICE_SURFACE","ADSB_EMITTER_TYPE_SMALL","ADSB_EMITTER_TYPE_SPACE","ADSB_EMITTER_TYPE_UAV","ADSB_EMITTER_TYPE_ULTRA_LIGHT","ADSB_EMITTER_TYPE_UNASSGINED3","ADSB_EMITTER_TYPE_UNASSIGNED","ADSB_EMITTER_TYPE_UNASSIGNED2","ADSB_FLAGS_BARO_VALID","ADSB_FLAGS_SIMULATED","ADSB_FLAGS_SOURCE_UAT","ADSB_FLAGS_VALID_ALTITUDE","ADSB_FLAGS_VALID_CALLSIGN","ADSB_FLAGS_VALID_COORDS","ADSB_FLAGS_VALID_HEADING","ADSB_FLAGS_VALID_SQUAWK","ADSB_FLAGS_VALID_VELOCITY","ADSB_FLAGS_VERTICAL_VELOCITY_VALID","ADSB_VEHICLE","ADSB_VEHICLE_DATA","AIS_FLAGS_HIGH_VELOCITY","AIS_FLAGS_LARGE_BOW_DIMENSION","AIS_FLAGS_LARGE_PORT_DIMENSION","AIS_FLAGS_LARGE_STARBOARD_DIMENSION","AIS_FLAGS_LARGE_STERN_DIMENSION","AIS_FLAGS_POSITION_ACCURACY","AIS_FLAGS_TURN_RATE_SIGN_ONLY","AIS_FLAGS_VALID_CALLSIGN","AIS_FLAGS_VALID_COG","AIS_FLAGS_VALID_DIMENSIONS","AIS_FLAGS_VALID_NAME","AIS_FLAGS_VALID_TURN_RATE","AIS_FLAGS_VALID_VELOCITY","AIS_NAV_AGROUND","AIS_NAV_AIS_SART","AIS_NAV_ANCHORED","AIS_NAV_DRAUGHT_CONSTRAINED","AIS_NAV_FISHING","AIS_NAV_MOORED","AIS_NAV_RESERVED_1","AIS_NAV_RESERVED_2","AIS_NAV_RESERVED_3","AIS_NAV_RESERVED_HSC","AIS_NAV_RESERVED_WIG","AIS_NAV_RESTRICTED_MANOEUVERABILITY","AIS_NAV_SAILING","AIS_NAV_UNKNOWN","AIS_NAV_UN_COMMANDED","AIS_TYPE_ANTI_POLLUTION","AIS_TYPE_CARGO","AIS_TYPE_CARGO_HAZARDOUS_A","AIS_TYPE_CARGO_HAZARDOUS_B","AIS_TYPE_CARGO_HAZARDOUS_C","AIS_TYPE_CARGO_HAZARDOUS_D","AIS_TYPE_CARGO_RESERVED_1","AIS_TYPE_CARGO_RESERVED_2","AIS_TYPE_CARGO_RESERVED_3","AIS_TYPE_CARGO_RESERVED_4","AIS_TYPE_CARGO_UNKNOWN","AIS_TYPE_DIVING","AIS_TYPE_DREDGING","AIS_TYPE_FISHING","AIS_TYPE_HSC","AIS_TYPE_HSC_HAZARDOUS_A","AIS_TYPE_HSC_HAZARDOUS_B","AIS_TYPE_HSC_HAZARDOUS_C","AIS_TYPE_HSC_HAZARDOUS_D","AIS_TYPE_HSC_RESERVED_1","AIS_TYPE_HSC_RESERVED_2","AIS_TYPE_HSC_RESERVED_3","AIS_TYPE_HSC_RESERVED_4","AIS_TYPE_HSC_UNKNOWN","AIS_TYPE_LAW_ENFORCEMENT","AIS_TYPE_MEDICAL_TRANSPORT","AIS_TYPE_MILITARY","AIS_TYPE_NONECOMBATANT","AIS_TYPE_OTHER","AIS_TYPE_OTHER_HAZARDOUS_A","AIS_TYPE_OTHER_HAZARDOUS_B","AIS_TYPE_OTHER_HAZARDOUS_C","AIS_TYPE_OTHER_HAZARDOUS_D","AIS_TYPE_OTHER_RESERVED_1","AIS_TYPE_OTHER_RESERVED_2","AIS_TYPE_OTHER_RESERVED_3","AIS_TYPE_OTHER_RESERVED_4","AIS_TYPE_OTHER_UNKNOWN","AIS_TYPE_PASSENGER","AIS_TYPE_PASSENGER_HAZARDOUS_A","AIS_TYPE_PASSENGER_HAZARDOUS_B","AIS_TYPE_PASSENGER_HAZARDOUS_C","AIS_TYPE_PASSENGER_HAZARDOUS_D","AIS_TYPE_PASSENGER_RESERVED_1","AIS_TYPE_PASSENGER_RESERVED_2","AIS_TYPE_PASSENGER_RESERVED_3","AIS_TYPE_PASSENGER_RESERVED_4","AIS_TYPE_PASSENGER_UNKNOWN","AIS_TYPE_PILOT","AIS_TYPE_PLEASURE","AIS_TYPE_PORT_TENDER","AIS_TYPE_RESERVED_1","AIS_TYPE_RESERVED_10","AIS_TYPE_RESERVED_11","AIS_TYPE_RESERVED_12","AIS_TYPE_RESERVED_13","AIS_TYPE_RESERVED_14","AIS_TYPE_RESERVED_15","AIS_TYPE_RESERVED_16","AIS_TYPE_RESERVED_17","AIS_TYPE_RESERVED_18","AIS_TYPE_RESERVED_19","AIS_TYPE_RESERVED_2","AIS_TYPE_RESERVED_20","AIS_TYPE_RESERVED_21","AIS_TYPE_RESERVED_3","AIS_TYPE_RESERVED_4","AIS_TYPE_RESERVED_5","AIS_TYPE_RESERVED_6","AIS_TYPE_RESERVED_7","AIS_TYPE_RESERVED_8","AIS_TYPE_RESERVED_9","AIS_TYPE_SAILING","AIS_TYPE_SAR","AIS_TYPE_SPARE_LOCAL_1","AIS_TYPE_SPARE_LOCAL_2","AIS_TYPE_TANKER","AIS_TYPE_TANKER_HAZARDOUS_A","AIS_TYPE_TANKER_HAZARDOUS_B","AIS_TYPE_TANKER_HAZARDOUS_C","AIS_TYPE_TANKER_HAZARDOUS_D","AIS_TYPE_TANKER_RESERVED_1","AIS_TYPE_TANKER_RESERVED_2","AIS_TYPE_TANKER_RESERVED_3","AIS_TYPE_TANKER_RESERVED_4","AIS_TYPE_TANKER_UNKNOWN","AIS_TYPE_TOWING","AIS_TYPE_TOWING_LARGE","AIS_TYPE_TUG","AIS_TYPE_UNKNOWN","AIS_TYPE_WIG","AIS_TYPE_WIG_HAZARDOUS_A","AIS_TYPE_WIG_HAZARDOUS_B","AIS_TYPE_WIG_HAZARDOUS_C","AIS_TYPE_WIG_HAZARDOUS_D","AIS_TYPE_WIG_RESERVED_1","AIS_TYPE_WIG_RESERVED_2","AIS_TYPE_WIG_RESERVED_3","AIS_TYPE_WIG_RESERVED_4","AIS_TYPE_WIG_RESERVED_5","AIS_VESSEL","AIS_VESSEL_DATA","ALTITUDE","ALTITUDE_DATA","ATTITUDE","ATTITUDE_DATA","ATTITUDE_QUATERNION","ATTITUDE_QUATERNION_COV","ATTITUDE_QUATERNION_COV_DATA","ATTITUDE_QUATERNION_DATA","ATTITUDE_TARGET","ATTITUDE_TARGET_DATA","ATTITUDE_TARGET_TYPEMASK_ATTITUDE_IGNORE","ATTITUDE_TARGET_TYPEMASK_BODY_PITCH_RATE_IGNORE","ATTITUDE_TARGET_TYPEMASK_BODY_ROLL_RATE_IGNORE","ATTITUDE_TARGET_TYPEMASK_BODY_YAW_RATE_IGNORE","ATTITUDE_TARGET_TYPEMASK_THROTTLE_IGNORE","ATTITUDE_TARGET_TYPEMASK_THRUST_BODY_SET","ATT_POS_MOCAP","ATT_POS_MOCAP_DATA","AUTH_KEY","AUTH_KEY_DATA","AUTOPILOT_STATE_FOR_GIMBAL_DEVICE","AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA","AUTOPILOT_VERSION","AUTOPILOT_VERSION_DATA","AUTOTUNE_AXIS_DEFAULT","AUTOTUNE_AXIS_PITCH","AUTOTUNE_AXIS_ROLL","AUTOTUNE_AXIS_YAW","ActuatorConfiguration","ActuatorOutputFunction","AdsbAltitudeType","AdsbEmitterType","AdsbFlags","AisFlags","AisNavStatus","AisType","AttitudeTargetTypemask","AutotuneAxis","BATTERY_FAULT_INCOMPATIBLE_CELLS_CONFIGURATION","BATTERY_STATUS","BATTERY_STATUS_DATA","BUTTON_CHANGE","BUTTON_CHANGE_DATA","CAMERA_CAPTURE_STATUS","CAMERA_CAPTURE_STATUS_DATA","CAMERA_CAP_FLAGS_CAN_CAPTURE_IMAGE_IN_VIDEO_MODE","CAMERA_CAP_FLAGS_CAN_CAPTURE_VIDEO_IN_IMAGE_MODE","CAMERA_CAP_FLAGS_CAPTURE_IMAGE","CAMERA_CAP_FLAGS_CAPTURE_VIDEO","CAMERA_CAP_FLAGS_HAS_BASIC_FOCUS","CAMERA_CAP_FLAGS_HAS_BASIC_ZOOM","CAMERA_CAP_FLAGS_HAS_IMAGE_SURVEY_MODE","CAMERA_CAP_FLAGS_HAS_MODES","CAMERA_CAP_FLAGS_HAS_TRACKING_GEO_STATUS","CAMERA_CAP_FLAGS_HAS_TRACKING_POINT","CAMERA_CAP_FLAGS_HAS_TRACKING_RECTANGLE","CAMERA_CAP_FLAGS_HAS_VIDEO_STREAM","CAMERA_FOV_STATUS","CAMERA_FOV_STATUS_DATA","CAMERA_IMAGE_CAPTURED","CAMERA_IMAGE_CAPTURED_DATA","CAMERA_INFORMATION","CAMERA_INFORMATION_DATA","CAMERA_MODE_IMAGE","CAMERA_MODE_IMAGE_SURVEY","CAMERA_MODE_VIDEO","CAMERA_SETTINGS","CAMERA_SETTINGS_DATA","CAMERA_TRACKING_GEO_STATUS","CAMERA_TRACKING_GEO_STATUS_DATA","CAMERA_TRACKING_IMAGE_STATUS","CAMERA_TRACKING_IMAGE_STATUS_DATA","CAMERA_TRACKING_MODE_NONE","CAMERA_TRACKING_MODE_POINT","CAMERA_TRACKING_MODE_RECTANGLE","CAMERA_TRACKING_STATUS_FLAGS_ACTIVE","CAMERA_TRACKING_STATUS_FLAGS_ERROR","CAMERA_TRACKING_STATUS_FLAGS_IDLE","CAMERA_TRACKING_TARGET_DATA_EMBEDDED","CAMERA_TRACKING_TARGET_DATA_IN_STATUS","CAMERA_TRACKING_TARGET_DATA_NONE","CAMERA_TRACKING_TARGET_DATA_RENDERED","CAMERA_TRIGGER","CAMERA_TRIGGER_DATA","CANFD_FRAME","CANFD_FRAME_DATA","CAN_FILTER_ADD","CAN_FILTER_MODIFY","CAN_FILTER_MODIFY_DATA","CAN_FILTER_REMOVE","CAN_FILTER_REPLACE","CAN_FRAME","CAN_FRAME_DATA","CELLULAR_CONFIG","CELLULAR_CONFIG_BLOCKED_PUK_REQUIRED","CELLULAR_CONFIG_DATA","CELLULAR_CONFIG_RESPONSE_ACCEPTED","CELLULAR_CONFIG_RESPONSE_APN_ERROR","CELLULAR_CONFIG_RESPONSE_PIN_ERROR","CELLULAR_CONFIG_RESPONSE_REJECTED","CELLULAR_NETWORK_FAILED_REASON_NONE","CELLULAR_NETWORK_FAILED_REASON_SIM_ERROR","CELLULAR_NETWORK_FAILED_REASON_SIM_MISSING","CELLULAR_NETWORK_FAILED_REASON_UNKNOWN","CELLULAR_NETWORK_RADIO_TYPE_CDMA","CELLULAR_NETWORK_RADIO_TYPE_GSM","CELLULAR_NETWORK_RADIO_TYPE_LTE","CELLULAR_NETWORK_RADIO_TYPE_NONE","CELLULAR_NETWORK_RADIO_TYPE_WCDMA","CELLULAR_STATUS","CELLULAR_STATUS_DATA","CELLULAR_STATUS_FLAG_CONNECTED","CELLULAR_STATUS_FLAG_CONNECTING","CELLULAR_STATUS_FLAG_DISABLED","CELLULAR_STATUS_FLAG_DISABLING","CELLULAR_STATUS_FLAG_DISCONNECTING","CELLULAR_STATUS_FLAG_ENABLED","CELLULAR_STATUS_FLAG_ENABLING","CELLULAR_STATUS_FLAG_FAILED","CELLULAR_STATUS_FLAG_INITIALIZING","CELLULAR_STATUS_FLAG_LOCKED","CELLULAR_STATUS_FLAG_REGISTERED","CELLULAR_STATUS_FLAG_SEARCHING","CELLULAR_STATUS_FLAG_UNKNOWN","CHANGE_OPERATOR_CONTROL","CHANGE_OPERATOR_CONTROL_ACK","CHANGE_OPERATOR_CONTROL_ACK_DATA","CHANGE_OPERATOR_CONTROL_DATA","COG","COLLISION","COLLISION_DATA","COMMAND_ACK","COMMAND_ACK_DATA","COMMAND_CANCEL","COMMAND_CANCEL_DATA","COMMAND_INT","COMMAND_INT_DATA","COMMAND_LONG","COMMAND_LONG_DATA","COMPONENT_INFORMATION","COMPONENT_INFORMATION_DATA","COMPONENT_METADATA","COMPONENT_METADATA_DATA","COMP_METADATA_TYPE_ACTUATORS","COMP_METADATA_TYPE_COMMANDS","COMP_METADATA_TYPE_EVENTS","COMP_METADATA_TYPE_GENERAL","COMP_METADATA_TYPE_PARAMETER","COMP_METADATA_TYPE_PERIPHERALS","CONTROL_SYSTEM_STATE","CONTROL_SYSTEM_STATE_DATA","CURRENT_EVENT_SEQUENCE","CURRENT_EVENT_SEQUENCE_DATA","CameraCapFlags","CameraMode","CameraTrackingMode","CameraTrackingStatusFlags","CameraTrackingTargetData","CameraZoomType","CanFilterOp","CellularConfigResponse","CellularNetworkFailedReason","CellularNetworkRadioType","CellularStatusFlag","CompMetadataType","DATA_STREAM","DATA_STREAM_DATA","DATA_TRANSMISSION_HANDSHAKE","DATA_TRANSMISSION_HANDSHAKE_DATA","DEBUG","DEBUG_DATA","DEBUG_FLOAT_ARRAY","DEBUG_FLOAT_ARRAY_DATA","DEBUG_VECT","DEBUG_VECT_DATA","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DISTANCE_SENSOR","DISTANCE_SENSOR_DATA","EFI_STATUS","EFI_STATUS_DATA","ENCAPSULATED_DATA","ENCAPSULATED_DATA_DATA","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ESC_CONNECTION_TYPE_CAN","ESC_CONNECTION_TYPE_DSHOT","ESC_CONNECTION_TYPE_I2C","ESC_CONNECTION_TYPE_ONESHOT","ESC_CONNECTION_TYPE_PPM","ESC_CONNECTION_TYPE_SERIAL","ESC_FAILURE_GENERIC","ESC_FAILURE_INCONSISTENT_CMD","ESC_FAILURE_MOTOR_STUCK","ESC_FAILURE_NONE","ESC_FAILURE_OVER_CURRENT","ESC_FAILURE_OVER_RPM","ESC_FAILURE_OVER_TEMPERATURE","ESC_FAILURE_OVER_VOLTAGE","ESC_INFO","ESC_INFO_DATA","ESC_STATUS","ESC_STATUS_DATA","ESTIMATOR_ACCEL_ERROR","ESTIMATOR_ATTITUDE","ESTIMATOR_CONST_POS_MODE","ESTIMATOR_GPS_GLITCH","ESTIMATOR_POS_HORIZ_ABS","ESTIMATOR_POS_HORIZ_REL","ESTIMATOR_POS_VERT_ABS","ESTIMATOR_POS_VERT_AGL","ESTIMATOR_PRED_POS_HORIZ_ABS","ESTIMATOR_PRED_POS_HORIZ_REL","ESTIMATOR_STATUS","ESTIMATOR_STATUS_DATA","ESTIMATOR_VELOCITY_HORIZ","ESTIMATOR_VELOCITY_VERT","EVENT","EVENT_DATA","EXTENDED_SYS_STATE","EXTENDED_SYS_STATE_DATA","EscConnectionType","EscFailureFlags","EstimatorStatusFlags","FAILURE_TYPE_DELAYED","FAILURE_TYPE_GARBAGE","FAILURE_TYPE_INTERMITTENT","FAILURE_TYPE_OFF","FAILURE_TYPE_OK","FAILURE_TYPE_SLOW","FAILURE_TYPE_STUCK","FAILURE_TYPE_WRONG","FAILURE_UNIT_SENSOR_ACCEL","FAILURE_UNIT_SENSOR_AIRSPEED","FAILURE_UNIT_SENSOR_BARO","FAILURE_UNIT_SENSOR_DISTANCE_SENSOR","FAILURE_UNIT_SENSOR_GPS","FAILURE_UNIT_SENSOR_GYRO","FAILURE_UNIT_SENSOR_MAG","FAILURE_UNIT_SENSOR_OPTICAL_FLOW","FAILURE_UNIT_SENSOR_VIO","FAILURE_UNIT_SYSTEM_AVOIDANCE","FAILURE_UNIT_SYSTEM_BATTERY","FAILURE_UNIT_SYSTEM_MAVLINK_SIGNAL","FAILURE_UNIT_SYSTEM_MOTOR","FAILURE_UNIT_SYSTEM_RC_SIGNAL","FAILURE_UNIT_SYSTEM_SERVO","FENCE_ACTION_GUIDED","FENCE_ACTION_GUIDED_THR_PASS","FENCE_ACTION_HOLD","FENCE_ACTION_LAND","FENCE_ACTION_NONE","FENCE_ACTION_REPORT","FENCE_ACTION_RTL","FENCE_ACTION_TERMINATE","FENCE_BREACH_BOUNDARY","FENCE_BREACH_MAXALT","FENCE_BREACH_MINALT","FENCE_BREACH_NONE","FENCE_MITIGATE_NONE","FENCE_MITIGATE_UNKNOWN","FENCE_MITIGATE_VEL_LIMIT","FENCE_STATUS","FENCE_STATUS_DATA","FILE_TRANSFER_PROTOCOL","FILE_TRANSFER_PROTOCOL_DATA","FIRMWARE_VERSION_TYPE_ALPHA","FIRMWARE_VERSION_TYPE_BETA","FIRMWARE_VERSION_TYPE_DEV","FIRMWARE_VERSION_TYPE_OFFICIAL","FIRMWARE_VERSION_TYPE_RC","FLIGHT_INFORMATION","FLIGHT_INFORMATION_DATA","FOCUS_TYPE_AUTO","FOCUS_TYPE_AUTO_CONTINUOUS","FOCUS_TYPE_AUTO_SINGLE","FOCUS_TYPE_CONTINUOUS","FOCUS_TYPE_METERS","FOCUS_TYPE_RANGE","FOCUS_TYPE_STEP","FOLLOW_TARGET","FOLLOW_TARGET_DATA","FailureType","FailureUnit","FenceAction","FenceBreach","FenceMitigate","FirmwareVersionType","GENERATOR_STATUS","GENERATOR_STATUS_DATA","GIMBAL_DEVICE_ATTITUDE_STATUS","GIMBAL_DEVICE_ATTITUDE_STATUS_DATA","GIMBAL_DEVICE_CAP_FLAGS_HAS_NEUTRAL","GIMBAL_DEVICE_CAP_FLAGS_HAS_PITCH_AXIS","GIMBAL_DEVICE_CAP_FLAGS_HAS_PITCH_FOLLOW","GIMBAL_DEVICE_CAP_FLAGS_HAS_PITCH_LOCK","GIMBAL_DEVICE_CAP_FLAGS_HAS_RC_INPUTS","GIMBAL_DEVICE_CAP_FLAGS_HAS_RETRACT","GIMBAL_DEVICE_CAP_FLAGS_HAS_ROLL_AXIS","GIMBAL_DEVICE_CAP_FLAGS_HAS_ROLL_FOLLOW","GIMBAL_DEVICE_CAP_FLAGS_HAS_ROLL_LOCK","GIMBAL_DEVICE_CAP_FLAGS_HAS_YAW_AXIS","GIMBAL_DEVICE_CAP_FLAGS_HAS_YAW_FOLLOW","GIMBAL_DEVICE_CAP_FLAGS_HAS_YAW_LOCK","GIMBAL_DEVICE_CAP_FLAGS_SUPPORTS_INFINITE_YAW","GIMBAL_DEVICE_CAP_FLAGS_SUPPORTS_YAW_IN_EARTH_FRAME","GIMBAL_DEVICE_ERROR_FLAGS_AT_PITCH_LIMIT","GIMBAL_DEVICE_ERROR_FLAGS_AT_ROLL_LIMIT","GIMBAL_DEVICE_ERROR_FLAGS_AT_YAW_LIMIT","GIMBAL_DEVICE_ERROR_FLAGS_CALIBRATION_RUNNING","GIMBAL_DEVICE_ERROR_FLAGS_COMMS_ERROR","GIMBAL_DEVICE_ERROR_FLAGS_ENCODER_ERROR","GIMBAL_DEVICE_ERROR_FLAGS_MOTOR_ERROR","GIMBAL_DEVICE_ERROR_FLAGS_NO_MANAGER","GIMBAL_DEVICE_ERROR_FLAGS_POWER_ERROR","GIMBAL_DEVICE_ERROR_FLAGS_SOFTWARE_ERROR","GIMBAL_DEVICE_FLAGS_ACCEPTS_YAW_IN_EARTH_FRAME","GIMBAL_DEVICE_FLAGS_NEUTRAL","GIMBAL_DEVICE_FLAGS_PITCH_LOCK","GIMBAL_DEVICE_FLAGS_RC_EXCLUSIVE","GIMBAL_DEVICE_FLAGS_RC_MIXED","GIMBAL_DEVICE_FLAGS_RETRACT","GIMBAL_DEVICE_FLAGS_ROLL_LOCK","GIMBAL_DEVICE_FLAGS_YAW_IN_EARTH_FRAME","GIMBAL_DEVICE_FLAGS_YAW_IN_VEHICLE_FRAME","GIMBAL_DEVICE_FLAGS_YAW_LOCK","GIMBAL_DEVICE_INFORMATION","GIMBAL_DEVICE_INFORMATION_DATA","GIMBAL_DEVICE_SET_ATTITUDE","GIMBAL_DEVICE_SET_ATTITUDE_DATA","GIMBAL_MANAGER_CAP_FLAGS_CAN_POINT_LOCATION_GLOBAL","GIMBAL_MANAGER_CAP_FLAGS_CAN_POINT_LOCATION_LOCAL","GIMBAL_MANAGER_CAP_FLAGS_HAS_NEUTRAL","GIMBAL_MANAGER_CAP_FLAGS_HAS_PITCH_AXIS","GIMBAL_MANAGER_CAP_FLAGS_HAS_PITCH_FOLLOW","GIMBAL_MANAGER_CAP_FLAGS_HAS_PITCH_LOCK","GIMBAL_MANAGER_CAP_FLAGS_HAS_RC_INPUTS","GIMBAL_MANAGER_CAP_FLAGS_HAS_RETRACT","GIMBAL_MANAGER_CAP_FLAGS_HAS_ROLL_AXIS","GIMBAL_MANAGER_CAP_FLAGS_HAS_ROLL_FOLLOW","GIMBAL_MANAGER_CAP_FLAGS_HAS_ROLL_LOCK","GIMBAL_MANAGER_CAP_FLAGS_HAS_YAW_AXIS","GIMBAL_MANAGER_CAP_FLAGS_HAS_YAW_FOLLOW","GIMBAL_MANAGER_CAP_FLAGS_HAS_YAW_LOCK","GIMBAL_MANAGER_CAP_FLAGS_SUPPORTS_INFINITE_YAW","GIMBAL_MANAGER_CAP_FLAGS_SUPPORTS_YAW_IN_EARTH_FRAME","GIMBAL_MANAGER_FLAGS_ACCEPTS_YAW_IN_EARTH_FRAME","GIMBAL_MANAGER_FLAGS_NEUTRAL","GIMBAL_MANAGER_FLAGS_PITCH_LOCK","GIMBAL_MANAGER_FLAGS_RC_EXCLUSIVE","GIMBAL_MANAGER_FLAGS_RC_MIXED","GIMBAL_MANAGER_FLAGS_RETRACT","GIMBAL_MANAGER_FLAGS_ROLL_LOCK","GIMBAL_MANAGER_FLAGS_YAW_IN_EARTH_FRAME","GIMBAL_MANAGER_FLAGS_YAW_IN_VEHICLE_FRAME","GIMBAL_MANAGER_FLAGS_YAW_LOCK","GIMBAL_MANAGER_INFORMATION","GIMBAL_MANAGER_INFORMATION_DATA","GIMBAL_MANAGER_SET_ATTITUDE","GIMBAL_MANAGER_SET_ATTITUDE_DATA","GIMBAL_MANAGER_SET_MANUAL_CONTROL","GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA","GIMBAL_MANAGER_SET_PITCHYAW","GIMBAL_MANAGER_SET_PITCHYAW_DATA","GIMBAL_MANAGER_STATUS","GIMBAL_MANAGER_STATUS_DATA","GLOBAL_POSITION_INT","GLOBAL_POSITION_INT_COV","GLOBAL_POSITION_INT_COV_DATA","GLOBAL_POSITION_INT_DATA","GLOBAL_VISION_POSITION_ESTIMATE","GLOBAL_VISION_POSITION_ESTIMATE_DATA","GPS2_RAW","GPS2_RAW_DATA","GPS2_RTK","GPS2_RTK_DATA","GPS_FIX_TYPE_2D_FIX","GPS_FIX_TYPE_3D_FIX","GPS_FIX_TYPE_DGPS","GPS_FIX_TYPE_NO_FIX","GPS_FIX_TYPE_NO_GPS","GPS_FIX_TYPE_PPP","GPS_FIX_TYPE_RTK_FIXED","GPS_FIX_TYPE_RTK_FLOAT","GPS_FIX_TYPE_STATIC","GPS_GLOBAL_ORIGIN","GPS_GLOBAL_ORIGIN_DATA","GPS_INJECT_DATA","GPS_INJECT_DATA_DATA","GPS_INPUT","GPS_INPUT_DATA","GPS_INPUT_IGNORE_FLAG_ALT","GPS_INPUT_IGNORE_FLAG_HDOP","GPS_INPUT_IGNORE_FLAG_HORIZONTAL_ACCURACY","GPS_INPUT_IGNORE_FLAG_SPEED_ACCURACY","GPS_INPUT_IGNORE_FLAG_VDOP","GPS_INPUT_IGNORE_FLAG_VEL_HORIZ","GPS_INPUT_IGNORE_FLAG_VEL_VERT","GPS_INPUT_IGNORE_FLAG_VERTICAL_ACCURACY","GPS_RAW_INT","GPS_RAW_INT_DATA","GPS_RTCM_DATA","GPS_RTCM_DATA_DATA","GPS_RTK","GPS_RTK_DATA","GPS_STATUS","GPS_STATUS_DATA","GRIPPER_ACTION_GRAB","GRIPPER_ACTION_RELEASE","GimbalDeviceCapFlags","GimbalDeviceErrorFlags","GimbalDeviceFlags","GimbalManagerCapFlags","GimbalManagerFlags","GpsFixType","GpsInputIgnoreFlags","GripperActions","HEARTBEAT","HEARTBEAT_DATA","HIGHRES_IMU","HIGHRES_IMU_DATA","HIGHRES_IMU_UPDATED_ABS_PRESSURE","HIGHRES_IMU_UPDATED_ALL","HIGHRES_IMU_UPDATED_DIFF_PRESSURE","HIGHRES_IMU_UPDATED_NONE","HIGHRES_IMU_UPDATED_PRESSURE_ALT","HIGHRES_IMU_UPDATED_TEMPERATURE","HIGHRES_IMU_UPDATED_XACC","HIGHRES_IMU_UPDATED_XGYRO","HIGHRES_IMU_UPDATED_XMAG","HIGHRES_IMU_UPDATED_YACC","HIGHRES_IMU_UPDATED_YGYRO","HIGHRES_IMU_UPDATED_YMAG","HIGHRES_IMU_UPDATED_ZACC","HIGHRES_IMU_UPDATED_ZGYRO","HIGHRES_IMU_UPDATED_ZMAG","HIGH_LATENCY","HIGH_LATENCY2","HIGH_LATENCY2_DATA","HIGH_LATENCY_DATA","HIL_ACTUATOR_CONTROLS","HIL_ACTUATOR_CONTROLS_DATA","HIL_CONTROLS","HIL_CONTROLS_DATA","HIL_GPS","HIL_GPS_DATA","HIL_OPTICAL_FLOW","HIL_OPTICAL_FLOW_DATA","HIL_RC_INPUTS_RAW","HIL_RC_INPUTS_RAW_DATA","HIL_SENSOR","HIL_SENSOR_DATA","HIL_SENSOR_UPDATED_ABS_PRESSURE","HIL_SENSOR_UPDATED_DIFF_PRESSURE","HIL_SENSOR_UPDATED_NONE","HIL_SENSOR_UPDATED_PRESSURE_ALT","HIL_SENSOR_UPDATED_RESET","HIL_SENSOR_UPDATED_TEMPERATURE","HIL_SENSOR_UPDATED_XACC","HIL_SENSOR_UPDATED_XGYRO","HIL_SENSOR_UPDATED_XMAG","HIL_SENSOR_UPDATED_YACC","HIL_SENSOR_UPDATED_YGYRO","HIL_SENSOR_UPDATED_YMAG","HIL_SENSOR_UPDATED_ZACC","HIL_SENSOR_UPDATED_ZGYRO","HIL_SENSOR_UPDATED_ZMAG","HIL_STATE","HIL_STATE_DATA","HIL_STATE_QUATERNION","HIL_STATE_QUATERNION_DATA","HL_FAILURE_FLAG_3D_ACCEL","HL_FAILURE_FLAG_3D_GYRO","HL_FAILURE_FLAG_3D_MAG","HL_FAILURE_FLAG_ABSOLUTE_PRESSURE","HL_FAILURE_FLAG_BATTERY","HL_FAILURE_FLAG_DIFFERENTIAL_PRESSURE","HL_FAILURE_FLAG_ENGINE","HL_FAILURE_FLAG_ESTIMATOR","HL_FAILURE_FLAG_GEOFENCE","HL_FAILURE_FLAG_GPS","HL_FAILURE_FLAG_MISSION","HL_FAILURE_FLAG_OFFBOARD_LINK","HL_FAILURE_FLAG_RC_RECEIVER","HL_FAILURE_FLAG_TERRAIN","HOME_POSITION","HOME_POSITION_DATA","HYGROMETER_SENSOR","HYGROMETER_SENSOR_DATA","HighresImuUpdatedFlags","HilSensorUpdatedFlags","HlFailureFlag","ICAO_address","ISBD_LINK_STATUS","ISBD_LINK_STATUS_DATA","LANDING_TARGET","LANDING_TARGET_DATA","LANDING_TARGET_TYPE_LIGHT_BEACON","LANDING_TARGET_TYPE_RADIO_BEACON","LANDING_TARGET_TYPE_VISION_FIDUCIAL","LANDING_TARGET_TYPE_VISION_OTHER","LINK_NODE_STATUS","LINK_NODE_STATUS_DATA","LOCAL_POSITION_NED","LOCAL_POSITION_NED_COV","LOCAL_POSITION_NED_COV_DATA","LOCAL_POSITION_NED_DATA","LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET","LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA","LOGGING_ACK","LOGGING_ACK_DATA","LOGGING_DATA","LOGGING_DATA_ACKED","LOGGING_DATA_ACKED_DATA","LOGGING_DATA_DATA","LOG_DATA","LOG_DATA_DATA","LOG_ENTRY","LOG_ENTRY_DATA","LOG_ERASE","LOG_ERASE_DATA","LOG_REQUEST_DATA","LOG_REQUEST_DATA_DATA","LOG_REQUEST_END","LOG_REQUEST_END_DATA","LOG_REQUEST_LIST","LOG_REQUEST_LIST_DATA","LandingTargetType","MAG_CAL_BAD_ORIENTATION","MAG_CAL_BAD_RADIUS","MAG_CAL_FAILED","MAG_CAL_NOT_STARTED","MAG_CAL_REPORT","MAG_CAL_REPORT_DATA","MAG_CAL_RUNNING_STEP_ONE","MAG_CAL_RUNNING_STEP_TWO","MAG_CAL_SUCCESS","MAG_CAL_WAITING_TO_START","MANUAL_CONTROL","MANUAL_CONTROL_DATA","MANUAL_SETPOINT","MANUAL_SETPOINT_DATA","MAVLINK_DATA_STREAM_IMG_BMP","MAVLINK_DATA_STREAM_IMG_JPEG","MAVLINK_DATA_STREAM_IMG_PGM","MAVLINK_DATA_STREAM_IMG_PNG","MAVLINK_DATA_STREAM_IMG_RAW32U","MAVLINK_DATA_STREAM_IMG_RAW8U","MAV_ARM_AUTH_DENIED_REASON_AIRSPACE_IN_USE","MAV_ARM_AUTH_DENIED_REASON_BAD_WEATHER","MAV_ARM_AUTH_DENIED_REASON_GENERIC","MAV_ARM_AUTH_DENIED_REASON_INVALID_WAYPOINT","MAV_ARM_AUTH_DENIED_REASON_NONE","MAV_ARM_AUTH_DENIED_REASON_TIMEOUT","MAV_AUTOPILOT_AEROB","MAV_AUTOPILOT_AIRRAILS","MAV_AUTOPILOT_ARDUPILOTMEGA","MAV_AUTOPILOT_ARMAZILA","MAV_AUTOPILOT_ASLUAV","MAV_AUTOPILOT_AUTOQUAD","MAV_AUTOPILOT_FP","MAV_AUTOPILOT_GENERIC","MAV_AUTOPILOT_GENERIC_MISSION_FULL","MAV_AUTOPILOT_GENERIC_WAYPOINTS_AND_SIMPLE_NAVIGATION_ONLY","MAV_AUTOPILOT_GENERIC_WAYPOINTS_ONLY","MAV_AUTOPILOT_INVALID","MAV_AUTOPILOT_OPENPILOT","MAV_AUTOPILOT_PPZ","MAV_AUTOPILOT_PX4","MAV_AUTOPILOT_REFLEX","MAV_AUTOPILOT_RESERVED","MAV_AUTOPILOT_SLUGS","MAV_AUTOPILOT_SMACCMPILOT","MAV_AUTOPILOT_SMARTAP","MAV_AUTOPILOT_UDB","MAV_BATTERY_CHARGE_STATE_CHARGING","MAV_BATTERY_CHARGE_STATE_CRITICAL","MAV_BATTERY_CHARGE_STATE_EMERGENCY","MAV_BATTERY_CHARGE_STATE_FAILED","MAV_BATTERY_CHARGE_STATE_LOW","MAV_BATTERY_CHARGE_STATE_OK","MAV_BATTERY_CHARGE_STATE_UNDEFINED","MAV_BATTERY_CHARGE_STATE_UNHEALTHY","MAV_BATTERY_FAULT_CELL_FAIL","MAV_BATTERY_FAULT_DEEP_DISCHARGE","MAV_BATTERY_FAULT_INCOMPATIBLE_FIRMWARE","MAV_BATTERY_FAULT_INCOMPATIBLE_VOLTAGE","MAV_BATTERY_FAULT_OVER_CURRENT","MAV_BATTERY_FAULT_OVER_TEMPERATURE","MAV_BATTERY_FAULT_SPIKES","MAV_BATTERY_FAULT_UNDER_TEMPERATURE","MAV_BATTERY_FUNCTION_ALL","MAV_BATTERY_FUNCTION_AVIONICS","MAV_BATTERY_FUNCTION_PAYLOAD","MAV_BATTERY_FUNCTION_PROPULSION","MAV_BATTERY_FUNCTION_UNKNOWN","MAV_BATTERY_MODE_AUTO_DISCHARGING","MAV_BATTERY_MODE_HOT_SWAP","MAV_BATTERY_MODE_UNKNOWN","MAV_BATTERY_TYPE_LIFE","MAV_BATTERY_TYPE_LION","MAV_BATTERY_TYPE_LIPO","MAV_BATTERY_TYPE_NIMH","MAV_BATTERY_TYPE_UNKNOWN","MAV_CMD_ACK_ERR_ACCESS_DENIED","MAV_CMD_ACK_ERR_COORDINATES_OUT_OF_RANGE","MAV_CMD_ACK_ERR_COORDINATE_FRAME_NOT_SUPPORTED","MAV_CMD_ACK_ERR_FAIL","MAV_CMD_ACK_ERR_NOT_SUPPORTED","MAV_CMD_ACK_ERR_X_LAT_OUT_OF_RANGE","MAV_CMD_ACK_ERR_Y_LON_OUT_OF_RANGE","MAV_CMD_ACK_ERR_Z_ALT_OUT_OF_RANGE","MAV_CMD_ACK_OK","MAV_CMD_ACTUATOR_TEST","MAV_CMD_AIRFRAME_CONFIGURATION","MAV_CMD_ARM_AUTHORIZATION_REQUEST","MAV_CMD_CAMERA_STOP_TRACKING","MAV_CMD_CAMERA_TRACK_POINT","MAV_CMD_CAMERA_TRACK_RECTANGLE","MAV_CMD_CAN_FORWARD","MAV_CMD_COMPONENT_ARM_DISARM","MAV_CMD_CONDITION_CHANGE_ALT","MAV_CMD_CONDITION_DELAY","MAV_CMD_CONDITION_DISTANCE","MAV_CMD_CONDITION_GATE","MAV_CMD_CONDITION_LAST","MAV_CMD_CONDITION_YAW","MAV_CMD_CONFIGURE_ACTUATOR","MAV_CMD_CONTROL_HIGH_LATENCY","MAV_CMD_DO_ADSB_OUT_IDENT","MAV_CMD_DO_AUTOTUNE_ENABLE","MAV_CMD_DO_CHANGE_ALTITUDE","MAV_CMD_DO_CHANGE_SPEED","MAV_CMD_DO_CONTROL_VIDEO","MAV_CMD_DO_DIGICAM_CONFIGURE","MAV_CMD_DO_DIGICAM_CONTROL","MAV_CMD_DO_ENGINE_CONTROL","MAV_CMD_DO_FENCE_ENABLE","MAV_CMD_DO_FLIGHTTERMINATION","MAV_CMD_DO_FOLLOW","MAV_CMD_DO_FOLLOW_REPOSITION","MAV_CMD_DO_GIMBAL_MANAGER_CONFIGURE","MAV_CMD_DO_GIMBAL_MANAGER_PITCHYAW","MAV_CMD_DO_GO_AROUND","MAV_CMD_DO_GRIPPER","MAV_CMD_DO_GUIDED_LIMITS","MAV_CMD_DO_GUIDED_MASTER","MAV_CMD_DO_INVERTED_FLIGHT","MAV_CMD_DO_JUMP","MAV_CMD_DO_JUMP_TAG","MAV_CMD_DO_LAND_START","MAV_CMD_DO_LAST","MAV_CMD_DO_MOTOR_TEST","MAV_CMD_DO_MOUNT_CONFIGURE","MAV_CMD_DO_MOUNT_CONTROL","MAV_CMD_DO_MOUNT_CONTROL_QUAT","MAV_CMD_DO_ORBIT","MAV_CMD_DO_PARACHUTE","MAV_CMD_DO_PAUSE_CONTINUE","MAV_CMD_DO_RALLY_LAND","MAV_CMD_DO_REPEAT_RELAY","MAV_CMD_DO_REPEAT_SERVO","MAV_CMD_DO_REPOSITION","MAV_CMD_DO_SET_ACTUATOR","MAV_CMD_DO_SET_CAM_TRIGG_DIST","MAV_CMD_DO_SET_CAM_TRIGG_INTERVAL","MAV_CMD_DO_SET_HOME","MAV_CMD_DO_SET_MISSION_CURRENT","MAV_CMD_DO_SET_MODE","MAV_CMD_DO_SET_PARAMETER","MAV_CMD_DO_SET_RELAY","MAV_CMD_DO_SET_REVERSE","MAV_CMD_DO_SET_ROI","MAV_CMD_DO_SET_ROI_LOCATION","MAV_CMD_DO_SET_ROI_NONE","MAV_CMD_DO_SET_ROI_SYSID","MAV_CMD_DO_SET_ROI_WPNEXT_OFFSET","MAV_CMD_DO_SET_SERVO","MAV_CMD_DO_TRIGGER_CONTROL","MAV_CMD_DO_VTOL_TRANSITION","MAV_CMD_DO_WINCH","MAV_CMD_FIXED_MAG_CAL_YAW","MAV_CMD_GET_HOME_POSITION","MAV_CMD_GET_MESSAGE_INTERVAL","MAV_CMD_ILLUMINATOR_ON_OFF","MAV_CMD_IMAGE_START_CAPTURE","MAV_CMD_IMAGE_STOP_CAPTURE","MAV_CMD_INJECT_FAILURE","MAV_CMD_JUMP_TAG","MAV_CMD_LOGGING_START","MAV_CMD_LOGGING_STOP","MAV_CMD_MISSION_START","MAV_CMD_NAV_CONTINUE_AND_CHANGE_ALT","MAV_CMD_NAV_DELAY","MAV_CMD_NAV_FENCE_CIRCLE_EXCLUSION","MAV_CMD_NAV_FENCE_CIRCLE_INCLUSION","MAV_CMD_NAV_FENCE_POLYGON_VERTEX_EXCLUSION","MAV_CMD_NAV_FENCE_POLYGON_VERTEX_INCLUSION","MAV_CMD_NAV_FENCE_RETURN_POINT","MAV_CMD_NAV_FOLLOW","MAV_CMD_NAV_GUIDED_ENABLE","MAV_CMD_NAV_LAND","MAV_CMD_NAV_LAND_LOCAL","MAV_CMD_NAV_LAST","MAV_CMD_NAV_LOITER_TIME","MAV_CMD_NAV_LOITER_TO_ALT","MAV_CMD_NAV_LOITER_TURNS","MAV_CMD_NAV_LOITER_UNLIM","MAV_CMD_NAV_PATHPLANNING","MAV_CMD_NAV_PAYLOAD_PLACE","MAV_CMD_NAV_RALLY_POINT","MAV_CMD_NAV_RETURN_TO_LAUNCH","MAV_CMD_NAV_ROI","MAV_CMD_NAV_SET_YAW_SPEED","MAV_CMD_NAV_SPLINE_WAYPOINT","MAV_CMD_NAV_TAKEOFF","MAV_CMD_NAV_TAKEOFF_LOCAL","MAV_CMD_NAV_VTOL_LAND","MAV_CMD_NAV_VTOL_TAKEOFF","MAV_CMD_NAV_WAYPOINT","MAV_CMD_OBLIQUE_SURVEY","MAV_CMD_OVERRIDE_GOTO","MAV_CMD_PANORAMA_CREATE","MAV_CMD_PAYLOAD_CONTROL_DEPLOY","MAV_CMD_PAYLOAD_PREPARE_DEPLOY","MAV_CMD_PREFLIGHT_CALIBRATION","MAV_CMD_PREFLIGHT_REBOOT_SHUTDOWN","MAV_CMD_PREFLIGHT_SET_SENSOR_OFFSETS","MAV_CMD_PREFLIGHT_STORAGE","MAV_CMD_PREFLIGHT_UAVCAN","MAV_CMD_REQUEST_AUTOPILOT_CAPABILITIES","MAV_CMD_REQUEST_CAMERA_CAPTURE_STATUS","MAV_CMD_REQUEST_CAMERA_IMAGE_CAPTURE","MAV_CMD_REQUEST_CAMERA_INFORMATION","MAV_CMD_REQUEST_CAMERA_SETTINGS","MAV_CMD_REQUEST_FLIGHT_INFORMATION","MAV_CMD_REQUEST_MESSAGE","MAV_CMD_REQUEST_PROTOCOL_VERSION","MAV_CMD_REQUEST_STORAGE_INFORMATION","MAV_CMD_REQUEST_VIDEO_STREAM_INFORMATION","MAV_CMD_REQUEST_VIDEO_STREAM_STATUS","MAV_CMD_RESET_CAMERA_SETTINGS","MAV_CMD_RUN_PREARM_CHECKS","MAV_CMD_SET_CAMERA_FOCUS","MAV_CMD_SET_CAMERA_MODE","MAV_CMD_SET_CAMERA_ZOOM","MAV_CMD_SET_GUIDED_SUBMODE_CIRCLE","MAV_CMD_SET_GUIDED_SUBMODE_STANDARD","MAV_CMD_SET_MESSAGE_INTERVAL","MAV_CMD_SET_STORAGE_USAGE","MAV_CMD_SPATIAL_USER_1","MAV_CMD_SPATIAL_USER_2","MAV_CMD_SPATIAL_USER_3","MAV_CMD_SPATIAL_USER_4","MAV_CMD_SPATIAL_USER_5","MAV_CMD_START_RX_PAIR","MAV_CMD_STORAGE_FORMAT","MAV_CMD_UAVCAN_GET_NODE_INFO","MAV_CMD_USER_1","MAV_CMD_USER_2","MAV_CMD_USER_3","MAV_CMD_USER_4","MAV_CMD_USER_5","MAV_CMD_VIDEO_START_CAPTURE","MAV_CMD_VIDEO_START_STREAMING","MAV_CMD_VIDEO_STOP_CAPTURE","MAV_CMD_VIDEO_STOP_STREAMING","MAV_CMD_WAYPOINT_USER_1","MAV_CMD_WAYPOINT_USER_2","MAV_CMD_WAYPOINT_USER_3","MAV_CMD_WAYPOINT_USER_4","MAV_CMD_WAYPOINT_USER_5","MAV_COLLISION_ACTION_ASCEND_OR_DESCEND","MAV_COLLISION_ACTION_HOVER","MAV_COLLISION_ACTION_MOVE_HORIZONTALLY","MAV_COLLISION_ACTION_MOVE_PERPENDICULAR","MAV_COLLISION_ACTION_NONE","MAV_COLLISION_ACTION_REPORT","MAV_COLLISION_ACTION_RTL","MAV_COLLISION_SRC_ADSB","MAV_COLLISION_SRC_MAVLINK_GPS_GLOBAL_INT","MAV_COLLISION_THREAT_LEVEL_HIGH","MAV_COLLISION_THREAT_LEVEL_LOW","MAV_COLLISION_THREAT_LEVEL_NONE","MAV_COMP_ID_ADSB","MAV_COMP_ID_ALL","MAV_COMP_ID_AUTOPILOT1","MAV_COMP_ID_BATTERY","MAV_COMP_ID_BATTERY2","MAV_COMP_ID_CAMERA","MAV_COMP_ID_CAMERA2","MAV_COMP_ID_CAMERA3","MAV_COMP_ID_CAMERA4","MAV_COMP_ID_CAMERA5","MAV_COMP_ID_CAMERA6","MAV_COMP_ID_FLARM","MAV_COMP_ID_GIMBAL","MAV_COMP_ID_GIMBAL2","MAV_COMP_ID_GIMBAL3","MAV_COMP_ID_GIMBAL4","MAV_COMP_ID_GIMBAL5","MAV_COMP_ID_GIMBAL6","MAV_COMP_ID_GPS","MAV_COMP_ID_GPS2","MAV_COMP_ID_IMU","MAV_COMP_ID_IMU_2","MAV_COMP_ID_IMU_3","MAV_COMP_ID_LOG","MAV_COMP_ID_MAVCAN","MAV_COMP_ID_MISSIONPLANNER","MAV_COMP_ID_OBSTACLE_AVOIDANCE","MAV_COMP_ID_ODID_TXRX_1","MAV_COMP_ID_ODID_TXRX_2","MAV_COMP_ID_ODID_TXRX_3","MAV_COMP_ID_ONBOARD_COMPUTER","MAV_COMP_ID_ONBOARD_COMPUTER2","MAV_COMP_ID_ONBOARD_COMPUTER3","MAV_COMP_ID_ONBOARD_COMPUTER4","MAV_COMP_ID_OSD","MAV_COMP_ID_PAIRING_MANAGER","MAV_COMP_ID_PARACHUTE","MAV_COMP_ID_PATHPLANNER","MAV_COMP_ID_PERIPHERAL","MAV_COMP_ID_QX1_GIMBAL","MAV_COMP_ID_SERVO1","MAV_COMP_ID_SERVO10","MAV_COMP_ID_SERVO11","MAV_COMP_ID_SERVO12","MAV_COMP_ID_SERVO13","MAV_COMP_ID_SERVO14","MAV_COMP_ID_SERVO2","MAV_COMP_ID_SERVO3","MAV_COMP_ID_SERVO4","MAV_COMP_ID_SERVO5","MAV_COMP_ID_SERVO6","MAV_COMP_ID_SERVO7","MAV_COMP_ID_SERVO8","MAV_COMP_ID_SERVO9","MAV_COMP_ID_SYSTEM_CONTROL","MAV_COMP_ID_TELEMETRY_RADIO","MAV_COMP_ID_TUNNEL_NODE","MAV_COMP_ID_UART_BRIDGE","MAV_COMP_ID_UDP_BRIDGE","MAV_COMP_ID_USER1","MAV_COMP_ID_USER10","MAV_COMP_ID_USER11","MAV_COMP_ID_USER12","MAV_COMP_ID_USER13","MAV_COMP_ID_USER14","MAV_COMP_ID_USER15","MAV_COMP_ID_USER16","MAV_COMP_ID_USER17","MAV_COMP_ID_USER18","MAV_COMP_ID_USER19","MAV_COMP_ID_USER2","MAV_COMP_ID_USER20","MAV_COMP_ID_USER21","MAV_COMP_ID_USER22","MAV_COMP_ID_USER23","MAV_COMP_ID_USER24","MAV_COMP_ID_USER25","MAV_COMP_ID_USER26","MAV_COMP_ID_USER27","MAV_COMP_ID_USER28","MAV_COMP_ID_USER29","MAV_COMP_ID_USER3","MAV_COMP_ID_USER30","MAV_COMP_ID_USER31","MAV_COMP_ID_USER32","MAV_COMP_ID_USER33","MAV_COMP_ID_USER34","MAV_COMP_ID_USER35","MAV_COMP_ID_USER36","MAV_COMP_ID_USER37","MAV_COMP_ID_USER38","MAV_COMP_ID_USER39","MAV_COMP_ID_USER4","MAV_COMP_ID_USER40","MAV_COMP_ID_USER41","MAV_COMP_ID_USER42","MAV_COMP_ID_USER43","MAV_COMP_ID_USER45","MAV_COMP_ID_USER46","MAV_COMP_ID_USER47","MAV_COMP_ID_USER48","MAV_COMP_ID_USER49","MAV_COMP_ID_USER5","MAV_COMP_ID_USER50","MAV_COMP_ID_USER51","MAV_COMP_ID_USER52","MAV_COMP_ID_USER53","MAV_COMP_ID_USER54","MAV_COMP_ID_USER55","MAV_COMP_ID_USER56","MAV_COMP_ID_USER57","MAV_COMP_ID_USER58","MAV_COMP_ID_USER59","MAV_COMP_ID_USER6","MAV_COMP_ID_USER60","MAV_COMP_ID_USER61","MAV_COMP_ID_USER62","MAV_COMP_ID_USER63","MAV_COMP_ID_USER64","MAV_COMP_ID_USER65","MAV_COMP_ID_USER66","MAV_COMP_ID_USER67","MAV_COMP_ID_USER68","MAV_COMP_ID_USER69","MAV_COMP_ID_USER7","MAV_COMP_ID_USER70","MAV_COMP_ID_USER71","MAV_COMP_ID_USER72","MAV_COMP_ID_USER73","MAV_COMP_ID_USER74","MAV_COMP_ID_USER75","MAV_COMP_ID_USER8","MAV_COMP_ID_USER9","MAV_COMP_ID_VISUAL_INERTIAL_ODOMETRY","MAV_COMP_ID_WINCH","MAV_DATA_STREAM_ALL","MAV_DATA_STREAM_EXTENDED_STATUS","MAV_DATA_STREAM_EXTRA1","MAV_DATA_STREAM_EXTRA2","MAV_DATA_STREAM_EXTRA3","MAV_DATA_STREAM_POSITION","MAV_DATA_STREAM_RAW_CONTROLLER","MAV_DATA_STREAM_RAW_SENSORS","MAV_DATA_STREAM_RC_CHANNELS","MAV_DISTANCE_SENSOR_INFRARED","MAV_DISTANCE_SENSOR_LASER","MAV_DISTANCE_SENSOR_RADAR","MAV_DISTANCE_SENSOR_ULTRASOUND","MAV_DISTANCE_SENSOR_UNKNOWN","MAV_DO_REPOSITION_FLAGS_CHANGE_MODE","MAV_ESTIMATOR_TYPE_AUTOPILOT","MAV_ESTIMATOR_TYPE_GPS","MAV_ESTIMATOR_TYPE_GPS_INS","MAV_ESTIMATOR_TYPE_LIDAR","MAV_ESTIMATOR_TYPE_MOCAP","MAV_ESTIMATOR_TYPE_NAIVE","MAV_ESTIMATOR_TYPE_UNKNOWN","MAV_ESTIMATOR_TYPE_VIO","MAV_ESTIMATOR_TYPE_VISION","MAV_EVENT_CURRENT_SEQUENCE_FLAGS_RESET","MAV_EVENT_ERROR_REASON_UNAVAILABLE","MAV_FRAME_BODY_FRD","MAV_FRAME_BODY_NED","MAV_FRAME_BODY_OFFSET_NED","MAV_FRAME_GLOBAL","MAV_FRAME_GLOBAL_INT","MAV_FRAME_GLOBAL_RELATIVE_ALT","MAV_FRAME_GLOBAL_RELATIVE_ALT_INT","MAV_FRAME_GLOBAL_TERRAIN_ALT","MAV_FRAME_GLOBAL_TERRAIN_ALT_INT","MAV_FRAME_LOCAL_ENU","MAV_FRAME_LOCAL_FLU","MAV_FRAME_LOCAL_FRD","MAV_FRAME_LOCAL_NED","MAV_FRAME_LOCAL_OFFSET_NED","MAV_FRAME_MISSION","MAV_FRAME_RESERVED_13","MAV_FRAME_RESERVED_14","MAV_FRAME_RESERVED_15","MAV_FRAME_RESERVED_16","MAV_FRAME_RESERVED_17","MAV_FRAME_RESERVED_18","MAV_FRAME_RESERVED_19","MAV_FTP_ERR_EOF","MAV_FTP_ERR_FAIL","MAV_FTP_ERR_FAILERRNO","MAV_FTP_ERR_FILEEXISTS","MAV_FTP_ERR_FILENOTFOUND","MAV_FTP_ERR_FILEPROTECTED","MAV_FTP_ERR_INVALIDDATASIZE","MAV_FTP_ERR_INVALIDSESSION","MAV_FTP_ERR_NONE","MAV_FTP_ERR_NOSESSIONSAVAILABLE","MAV_FTP_ERR_UNKNOWNCOMMAND","MAV_FTP_OPCODE_ACK","MAV_FTP_OPCODE_BURSTREADFILE","MAV_FTP_OPCODE_CALCFILECRC","MAV_FTP_OPCODE_CREATEDIRECTORY","MAV_FTP_OPCODE_CREATEFILE","MAV_FTP_OPCODE_LISTDIRECTORY","MAV_FTP_OPCODE_NAK","MAV_FTP_OPCODE_NONE","MAV_FTP_OPCODE_OPENFILERO","MAV_FTP_OPCODE_OPENFILEWO","MAV_FTP_OPCODE_READFILE","MAV_FTP_OPCODE_REMOVEDIRECTORY","MAV_FTP_OPCODE_REMOVEFILE","MAV_FTP_OPCODE_RENAME","MAV_FTP_OPCODE_RESETSESSION","MAV_FTP_OPCODE_TERMINATESESSION","MAV_FTP_OPCODE_TRUNCATEFILE","MAV_FTP_OPCODE_WRITEFILE","MAV_GENERATOR_STATUS_FLAG_BATTERY_OVERCHARGE_CURRENT_FAULT","MAV_GENERATOR_STATUS_FLAG_BATTERY_UNDERVOLT_FAULT","MAV_GENERATOR_STATUS_FLAG_CHARGING","MAV_GENERATOR_STATUS_FLAG_COMMUNICATION_WARNING","MAV_GENERATOR_STATUS_FLAG_COOLING_WARNING","MAV_GENERATOR_STATUS_FLAG_ELECTRONICS_FAULT","MAV_GENERATOR_STATUS_FLAG_ELECTRONICS_OVERTEMP_FAULT","MAV_GENERATOR_STATUS_FLAG_ELECTRONICS_OVERTEMP_WARNING","MAV_GENERATOR_STATUS_FLAG_GENERATING","MAV_GENERATOR_STATUS_FLAG_IDLE","MAV_GENERATOR_STATUS_FLAG_MAINTENANCE_REQUIRED","MAV_GENERATOR_STATUS_FLAG_MAXPOWER","MAV_GENERATOR_STATUS_FLAG_OFF","MAV_GENERATOR_STATUS_FLAG_OVERCURRENT_FAULT","MAV_GENERATOR_STATUS_FLAG_OVERTEMP_FAULT","MAV_GENERATOR_STATUS_FLAG_OVERTEMP_WARNING","MAV_GENERATOR_STATUS_FLAG_OVERVOLTAGE_FAULT","MAV_GENERATOR_STATUS_FLAG_POWERSOURCE_FAULT","MAV_GENERATOR_STATUS_FLAG_POWER_RAIL_FAULT","MAV_GENERATOR_STATUS_FLAG_READY","MAV_GENERATOR_STATUS_FLAG_REDUCED_POWER","MAV_GENERATOR_STATUS_FLAG_START_INHIBITED","MAV_GENERATOR_STATUS_FLAG_WARMING_UP","MAV_GOTO_DO_CONTINUE","MAV_GOTO_DO_HOLD","MAV_GOTO_HOLD_AT_CURRENT_POSITION","MAV_GOTO_HOLD_AT_SPECIFIED_POSITION","MAV_LANDED_STATE_IN_AIR","MAV_LANDED_STATE_LANDING","MAV_LANDED_STATE_ON_GROUND","MAV_LANDED_STATE_TAKEOFF","MAV_LANDED_STATE_UNDEFINED","MAV_MISSION_ACCEPTED","MAV_MISSION_DENIED","MAV_MISSION_ERROR","MAV_MISSION_INVALID","MAV_MISSION_INVALID_PARAM1","MAV_MISSION_INVALID_PARAM2","MAV_MISSION_INVALID_PARAM3","MAV_MISSION_INVALID_PARAM4","MAV_MISSION_INVALID_PARAM5_X","MAV_MISSION_INVALID_PARAM6_Y","MAV_MISSION_INVALID_PARAM7","MAV_MISSION_INVALID_SEQUENCE","MAV_MISSION_NO_SPACE","MAV_MISSION_OPERATION_CANCELLED","MAV_MISSION_TYPE_ALL","MAV_MISSION_TYPE_FENCE","MAV_MISSION_TYPE_MISSION","MAV_MISSION_TYPE_RALLY","MAV_MISSION_UNSUPPORTED","MAV_MISSION_UNSUPPORTED_FRAME","MAV_MODE_AUTO_ARMED","MAV_MODE_AUTO_DISARMED","MAV_MODE_FLAG_AUTO_ENABLED","MAV_MODE_FLAG_CUSTOM_MODE_ENABLED","MAV_MODE_FLAG_DECODE_POSITION_AUTO","MAV_MODE_FLAG_DECODE_POSITION_CUSTOM_MODE","MAV_MODE_FLAG_DECODE_POSITION_GUIDED","MAV_MODE_FLAG_DECODE_POSITION_HIL","MAV_MODE_FLAG_DECODE_POSITION_MANUAL","MAV_MODE_FLAG_DECODE_POSITION_SAFETY","MAV_MODE_FLAG_DECODE_POSITION_STABILIZE","MAV_MODE_FLAG_DECODE_POSITION_TEST","MAV_MODE_FLAG_GUIDED_ENABLED","MAV_MODE_FLAG_HIL_ENABLED","MAV_MODE_FLAG_MANUAL_INPUT_ENABLED","MAV_MODE_FLAG_SAFETY_ARMED","MAV_MODE_FLAG_STABILIZE_ENABLED","MAV_MODE_FLAG_TEST_ENABLED","MAV_MODE_GUIDED_ARMED","MAV_MODE_GUIDED_DISARMED","MAV_MODE_MANUAL_ARMED","MAV_MODE_MANUAL_DISARMED","MAV_MODE_PREFLIGHT","MAV_MODE_STABILIZE_ARMED","MAV_MODE_STABILIZE_DISARMED","MAV_MODE_TEST_ARMED","MAV_MODE_TEST_DISARMED","MAV_MOUNT_MODE_GPS_POINT","MAV_MOUNT_MODE_HOME_LOCATION","MAV_MOUNT_MODE_MAVLINK_TARGETING","MAV_MOUNT_MODE_NEUTRAL","MAV_MOUNT_MODE_RC_TARGETING","MAV_MOUNT_MODE_RETRACT","MAV_MOUNT_MODE_SYSID_TARGET","MAV_ODID_ARM_STATUS_GOOD_TO_ARM","MAV_ODID_ARM_STATUS_PRE_ARM_FAIL_GENERIC","MAV_ODID_AUTH_TYPE_MESSAGE_SET_SIGNATURE","MAV_ODID_AUTH_TYPE_NETWORK_REMOTE_ID","MAV_ODID_AUTH_TYPE_NONE","MAV_ODID_AUTH_TYPE_OPERATOR_ID_SIGNATURE","MAV_ODID_AUTH_TYPE_SPECIFIC_AUTHENTICATION","MAV_ODID_AUTH_TYPE_UAS_ID_SIGNATURE","MAV_ODID_CATEGORY_EU_CERTIFIED","MAV_ODID_CATEGORY_EU_OPEN","MAV_ODID_CATEGORY_EU_SPECIFIC","MAV_ODID_CATEGORY_EU_UNDECLARED","MAV_ODID_CLASSIFICATION_TYPE_EU","MAV_ODID_CLASSIFICATION_TYPE_UNDECLARED","MAV_ODID_CLASS_EU_CLASS_0","MAV_ODID_CLASS_EU_CLASS_1","MAV_ODID_CLASS_EU_CLASS_2","MAV_ODID_CLASS_EU_CLASS_3","MAV_ODID_CLASS_EU_CLASS_4","MAV_ODID_CLASS_EU_CLASS_5","MAV_ODID_CLASS_EU_CLASS_6","MAV_ODID_CLASS_EU_UNDECLARED","MAV_ODID_DESC_TYPE_EMERGENCY","MAV_ODID_DESC_TYPE_EXTENDED_STATUS","MAV_ODID_DESC_TYPE_TEXT","MAV_ODID_HEIGHT_REF_OVER_GROUND","MAV_ODID_HEIGHT_REF_OVER_TAKEOFF","MAV_ODID_HOR_ACC_0_05NM","MAV_ODID_HOR_ACC_0_1NM","MAV_ODID_HOR_ACC_0_3NM","MAV_ODID_HOR_ACC_0_5NM","MAV_ODID_HOR_ACC_10NM","MAV_ODID_HOR_ACC_10_METER","MAV_ODID_HOR_ACC_1NM","MAV_ODID_HOR_ACC_1_METER","MAV_ODID_HOR_ACC_2NM","MAV_ODID_HOR_ACC_30_METER","MAV_ODID_HOR_ACC_3_METER","MAV_ODID_HOR_ACC_4NM","MAV_ODID_HOR_ACC_UNKNOWN","MAV_ODID_ID_TYPE_CAA_REGISTRATION_ID","MAV_ODID_ID_TYPE_NONE","MAV_ODID_ID_TYPE_SERIAL_NUMBER","MAV_ODID_ID_TYPE_SPECIFIC_SESSION_ID","MAV_ODID_ID_TYPE_UTM_ASSIGNED_UUID","MAV_ODID_OPERATOR_ID_TYPE_CAA","MAV_ODID_OPERATOR_LOCATION_TYPE_FIXED","MAV_ODID_OPERATOR_LOCATION_TYPE_LIVE_GNSS","MAV_ODID_OPERATOR_LOCATION_TYPE_TAKEOFF","MAV_ODID_SPEED_ACC_0_3_METERS_PER_SECOND","MAV_ODID_SPEED_ACC_10_METERS_PER_SECOND","MAV_ODID_SPEED_ACC_1_METERS_PER_SECOND","MAV_ODID_SPEED_ACC_3_METERS_PER_SECOND","MAV_ODID_SPEED_ACC_UNKNOWN","MAV_ODID_STATUS_AIRBORNE","MAV_ODID_STATUS_EMERGENCY","MAV_ODID_STATUS_GROUND","MAV_ODID_STATUS_REMOTE_ID_SYSTEM_FAILURE","MAV_ODID_STATUS_UNDECLARED","MAV_ODID_TIME_ACC_0_1_SECOND","MAV_ODID_TIME_ACC_0_2_SECOND","MAV_ODID_TIME_ACC_0_3_SECOND","MAV_ODID_TIME_ACC_0_4_SECOND","MAV_ODID_TIME_ACC_0_5_SECOND","MAV_ODID_TIME_ACC_0_6_SECOND","MAV_ODID_TIME_ACC_0_7_SECOND","MAV_ODID_TIME_ACC_0_8_SECOND","MAV_ODID_TIME_ACC_0_9_SECOND","MAV_ODID_TIME_ACC_1_0_SECOND","MAV_ODID_TIME_ACC_1_1_SECOND","MAV_ODID_TIME_ACC_1_2_SECOND","MAV_ODID_TIME_ACC_1_3_SECOND","MAV_ODID_TIME_ACC_1_4_SECOND","MAV_ODID_TIME_ACC_1_5_SECOND","MAV_ODID_TIME_ACC_UNKNOWN","MAV_ODID_UA_TYPE_AEROPLANE","MAV_ODID_UA_TYPE_AIRSHIP","MAV_ODID_UA_TYPE_CAPTIVE_BALLOON","MAV_ODID_UA_TYPE_FREE_BALLOON","MAV_ODID_UA_TYPE_FREE_FALL_PARACHUTE","MAV_ODID_UA_TYPE_GLIDER","MAV_ODID_UA_TYPE_GROUND_OBSTACLE","MAV_ODID_UA_TYPE_GYROPLANE","MAV_ODID_UA_TYPE_HELICOPTER_OR_MULTIROTOR","MAV_ODID_UA_TYPE_HYBRID_LIFT","MAV_ODID_UA_TYPE_KITE","MAV_ODID_UA_TYPE_NONE","MAV_ODID_UA_TYPE_ORNITHOPTER","MAV_ODID_UA_TYPE_OTHER","MAV_ODID_UA_TYPE_ROCKET","MAV_ODID_UA_TYPE_TETHERED_POWERED_AIRCRAFT","MAV_ODID_VER_ACC_10_METER","MAV_ODID_VER_ACC_150_METER","MAV_ODID_VER_ACC_1_METER","MAV_ODID_VER_ACC_25_METER","MAV_ODID_VER_ACC_3_METER","MAV_ODID_VER_ACC_45_METER","MAV_ODID_VER_ACC_UNKNOWN","MAV_PARAM_EXT_TYPE_CUSTOM","MAV_PARAM_EXT_TYPE_INT16","MAV_PARAM_EXT_TYPE_INT32","MAV_PARAM_EXT_TYPE_INT64","MAV_PARAM_EXT_TYPE_INT8","MAV_PARAM_EXT_TYPE_REAL32","MAV_PARAM_EXT_TYPE_REAL64","MAV_PARAM_EXT_TYPE_UINT16","MAV_PARAM_EXT_TYPE_UINT32","MAV_PARAM_EXT_TYPE_UINT64","MAV_PARAM_EXT_TYPE_UINT8","MAV_PARAM_TYPE_INT16","MAV_PARAM_TYPE_INT32","MAV_PARAM_TYPE_INT64","MAV_PARAM_TYPE_INT8","MAV_PARAM_TYPE_REAL32","MAV_PARAM_TYPE_REAL64","MAV_PARAM_TYPE_UINT16","MAV_PARAM_TYPE_UINT32","MAV_PARAM_TYPE_UINT64","MAV_PARAM_TYPE_UINT8","MAV_POWER_STATUS_BRICK_VALID","MAV_POWER_STATUS_CHANGED","MAV_POWER_STATUS_PERIPH_HIPOWER_OVERCURRENT","MAV_POWER_STATUS_PERIPH_OVERCURRENT","MAV_POWER_STATUS_SERVO_VALID","MAV_POWER_STATUS_USB_CONNECTED","MAV_PROTOCOL_CAPABILITY_COMMAND_INT","MAV_PROTOCOL_CAPABILITY_COMPASS_CALIBRATION","MAV_PROTOCOL_CAPABILITY_FLIGHT_TERMINATION","MAV_PROTOCOL_CAPABILITY_FTP","MAV_PROTOCOL_CAPABILITY_MAVLINK2","MAV_PROTOCOL_CAPABILITY_MISSION_FENCE","MAV_PROTOCOL_CAPABILITY_MISSION_FLOAT","MAV_PROTOCOL_CAPABILITY_MISSION_INT","MAV_PROTOCOL_CAPABILITY_MISSION_RALLY","MAV_PROTOCOL_CAPABILITY_PARAM_ENCODE_BYTEWISE","MAV_PROTOCOL_CAPABILITY_PARAM_ENCODE_C_CAST","MAV_PROTOCOL_CAPABILITY_PARAM_FLOAT","MAV_PROTOCOL_CAPABILITY_RESERVED2","MAV_PROTOCOL_CAPABILITY_SET_ACTUATOR_TARGET","MAV_PROTOCOL_CAPABILITY_SET_ATTITUDE_TARGET","MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_GLOBAL_INT","MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_LOCAL_NED","MAV_PROTOCOL_CAPABILITY_TERRAIN","MAV_RESULT_ACCEPTED","MAV_RESULT_CANCELLED","MAV_RESULT_DENIED","MAV_RESULT_FAILED","MAV_RESULT_IN_PROGRESS","MAV_RESULT_TEMPORARILY_REJECTED","MAV_RESULT_UNSUPPORTED","MAV_ROI_LOCATION","MAV_ROI_NONE","MAV_ROI_TARGET","MAV_ROI_WPINDEX","MAV_ROI_WPNEXT","MAV_SENSOR_ROTATION_CUSTOM","MAV_SENSOR_ROTATION_NONE","MAV_SENSOR_ROTATION_PITCH_180","MAV_SENSOR_ROTATION_PITCH_180_YAW_270","MAV_SENSOR_ROTATION_PITCH_180_YAW_90","MAV_SENSOR_ROTATION_PITCH_270","MAV_SENSOR_ROTATION_PITCH_315","MAV_SENSOR_ROTATION_PITCH_90","MAV_SENSOR_ROTATION_ROLL_180","MAV_SENSOR_ROTATION_ROLL_180_PITCH_270","MAV_SENSOR_ROTATION_ROLL_180_PITCH_90","MAV_SENSOR_ROTATION_ROLL_180_YAW_135","MAV_SENSOR_ROTATION_ROLL_180_YAW_225","MAV_SENSOR_ROTATION_ROLL_180_YAW_270","MAV_SENSOR_ROTATION_ROLL_180_YAW_315","MAV_SENSOR_ROTATION_ROLL_180_YAW_45","MAV_SENSOR_ROTATION_ROLL_180_YAW_90","MAV_SENSOR_ROTATION_ROLL_270","MAV_SENSOR_ROTATION_ROLL_270_PITCH_180","MAV_SENSOR_ROTATION_ROLL_270_PITCH_270","MAV_SENSOR_ROTATION_ROLL_270_PITCH_90","MAV_SENSOR_ROTATION_ROLL_270_YAW_135","MAV_SENSOR_ROTATION_ROLL_270_YAW_45","MAV_SENSOR_ROTATION_ROLL_270_YAW_90","MAV_SENSOR_ROTATION_ROLL_90","MAV_SENSOR_ROTATION_ROLL_90_PITCH_180","MAV_SENSOR_ROTATION_ROLL_90_PITCH_180_YAW_90","MAV_SENSOR_ROTATION_ROLL_90_PITCH_270","MAV_SENSOR_ROTATION_ROLL_90_PITCH_315","MAV_SENSOR_ROTATION_ROLL_90_PITCH_68_YAW_293","MAV_SENSOR_ROTATION_ROLL_90_PITCH_90","MAV_SENSOR_ROTATION_ROLL_90_YAW_135","MAV_SENSOR_ROTATION_ROLL_90_YAW_270","MAV_SENSOR_ROTATION_ROLL_90_YAW_45","MAV_SENSOR_ROTATION_ROLL_90_YAW_90","MAV_SENSOR_ROTATION_YAW_135","MAV_SENSOR_ROTATION_YAW_180","MAV_SENSOR_ROTATION_YAW_225","MAV_SENSOR_ROTATION_YAW_270","MAV_SENSOR_ROTATION_YAW_315","MAV_SENSOR_ROTATION_YAW_45","MAV_SENSOR_ROTATION_YAW_90","MAV_SEVERITY_ALERT","MAV_SEVERITY_CRITICAL","MAV_SEVERITY_DEBUG","MAV_SEVERITY_EMERGENCY","MAV_SEVERITY_ERROR","MAV_SEVERITY_INFO","MAV_SEVERITY_NOTICE","MAV_SEVERITY_WARNING","MAV_STATE_ACTIVE","MAV_STATE_BOOT","MAV_STATE_CALIBRATING","MAV_STATE_CRITICAL","MAV_STATE_EMERGENCY","MAV_STATE_FLIGHT_TERMINATION","MAV_STATE_POWEROFF","MAV_STATE_STANDBY","MAV_STATE_UNINIT","MAV_SYS_STATUS_AHRS","MAV_SYS_STATUS_EXTENSION_USED","MAV_SYS_STATUS_GEOFENCE","MAV_SYS_STATUS_LOGGING","MAV_SYS_STATUS_OBSTACLE_AVOIDANCE","MAV_SYS_STATUS_PREARM_CHECK","MAV_SYS_STATUS_RECOVERY_SYSTEM","MAV_SYS_STATUS_REVERSE_MOTOR","MAV_SYS_STATUS_SENSOR_3D_ACCEL","MAV_SYS_STATUS_SENSOR_3D_ACCEL2","MAV_SYS_STATUS_SENSOR_3D_GYRO","MAV_SYS_STATUS_SENSOR_3D_GYRO2","MAV_SYS_STATUS_SENSOR_3D_MAG","MAV_SYS_STATUS_SENSOR_3D_MAG2","MAV_SYS_STATUS_SENSOR_ABSOLUTE_PRESSURE","MAV_SYS_STATUS_SENSOR_ANGULAR_RATE_CONTROL","MAV_SYS_STATUS_SENSOR_ATTITUDE_STABILIZATION","MAV_SYS_STATUS_SENSOR_BATTERY","MAV_SYS_STATUS_SENSOR_DIFFERENTIAL_PRESSURE","MAV_SYS_STATUS_SENSOR_EXTERNAL_GROUND_TRUTH","MAV_SYS_STATUS_SENSOR_GPS","MAV_SYS_STATUS_SENSOR_LASER_POSITION","MAV_SYS_STATUS_SENSOR_MOTOR_OUTPUTS","MAV_SYS_STATUS_SENSOR_OPTICAL_FLOW","MAV_SYS_STATUS_SENSOR_PROPULSION","MAV_SYS_STATUS_SENSOR_PROXIMITY","MAV_SYS_STATUS_SENSOR_RC_RECEIVER","MAV_SYS_STATUS_SENSOR_SATCOM","MAV_SYS_STATUS_SENSOR_VISION_POSITION","MAV_SYS_STATUS_SENSOR_XY_POSITION_CONTROL","MAV_SYS_STATUS_SENSOR_YAW_POSITION","MAV_SYS_STATUS_SENSOR_Z_ALTITUDE_CONTROL","MAV_SYS_STATUS_TERRAIN","MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED0","MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED1","MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED2","MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED3","MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED4","MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED5","MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED6","MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED7","MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED8","MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED9","MAV_TUNNEL_PAYLOAD_TYPE_UNKNOWN","MAV_TYPE_ADSB","MAV_TYPE_AIRSHIP","MAV_TYPE_ANTENNA_TRACKER","MAV_TYPE_BATTERY","MAV_TYPE_CAMERA","MAV_TYPE_CHARGING_STATION","MAV_TYPE_COAXIAL","MAV_TYPE_DECAROTOR","MAV_TYPE_DODECAROTOR","MAV_TYPE_FIXED_WING","MAV_TYPE_FLAPPING_WING","MAV_TYPE_FLARM","MAV_TYPE_FREE_BALLOON","MAV_TYPE_GCS","MAV_TYPE_GENERIC","MAV_TYPE_GIMBAL","MAV_TYPE_GPS","MAV_TYPE_GROUND_ROVER","MAV_TYPE_HELICOPTER","MAV_TYPE_HEXAROTOR","MAV_TYPE_IMU","MAV_TYPE_KITE","MAV_TYPE_LOG","MAV_TYPE_OCTOROTOR","MAV_TYPE_ODID","MAV_TYPE_ONBOARD_CONTROLLER","MAV_TYPE_OSD","MAV_TYPE_PARACHUTE","MAV_TYPE_PARAFOIL","MAV_TYPE_QUADROTOR","MAV_TYPE_ROCKET","MAV_TYPE_SERVO","MAV_TYPE_SUBMARINE","MAV_TYPE_SURFACE_BOAT","MAV_TYPE_TRICOPTER","MAV_TYPE_VTOL_FIXEDROTOR","MAV_TYPE_VTOL_RESERVED5","MAV_TYPE_VTOL_TAILSITTER","MAV_TYPE_VTOL_TAILSITTER_DUOROTOR","MAV_TYPE_VTOL_TAILSITTER_QUADROTOR","MAV_TYPE_VTOL_TILTROTOR","MAV_TYPE_VTOL_TILTWING","MAV_TYPE_WINCH","MAV_VTOL_STATE_FW","MAV_VTOL_STATE_MC","MAV_VTOL_STATE_TRANSITION_TO_FW","MAV_VTOL_STATE_TRANSITION_TO_MC","MAV_VTOL_STATE_UNDEFINED","MAV_WINCH_STATUS_ABANDON_LINE","MAV_WINCH_STATUS_ARRESTING","MAV_WINCH_STATUS_CLUTCH_ENGAGED","MAV_WINCH_STATUS_DROPPING","MAV_WINCH_STATUS_FULLY_RETRACTED","MAV_WINCH_STATUS_GROUND_SENSE","MAV_WINCH_STATUS_HEALTHY","MAV_WINCH_STATUS_LOAD_LINE","MAV_WINCH_STATUS_LOAD_PAYLOAD","MAV_WINCH_STATUS_LOCKED","MAV_WINCH_STATUS_LOCKING","MAV_WINCH_STATUS_MOVING","MAV_WINCH_STATUS_REDELIVER","MAV_WINCH_STATUS_RETRACTING","MEMORY_VECT","MEMORY_VECT_DATA","MESSAGE_INTERVAL","MESSAGE_INTERVAL_DATA","MISSION_ACK","MISSION_ACK_DATA","MISSION_CLEAR_ALL","MISSION_CLEAR_ALL_DATA","MISSION_COUNT","MISSION_COUNT_DATA","MISSION_CURRENT","MISSION_CURRENT_DATA","MISSION_ITEM","MISSION_ITEM_DATA","MISSION_ITEM_INT","MISSION_ITEM_INT_DATA","MISSION_ITEM_REACHED","MISSION_ITEM_REACHED_DATA","MISSION_READ_PERSISTENT","MISSION_REQUEST","MISSION_REQUEST_DATA","MISSION_REQUEST_INT","MISSION_REQUEST_INT_DATA","MISSION_REQUEST_LIST","MISSION_REQUEST_LIST_DATA","MISSION_REQUEST_PARTIAL_LIST","MISSION_REQUEST_PARTIAL_LIST_DATA","MISSION_RESET_DEFAULT","MISSION_SET_CURRENT","MISSION_SET_CURRENT_DATA","MISSION_STATE_ACTIVE","MISSION_STATE_COMPLETE","MISSION_STATE_NOT_STARTED","MISSION_STATE_NO_MISSION","MISSION_STATE_PAUSED","MISSION_STATE_UNKNOWN","MISSION_WRITE_PARTIAL_LIST","MISSION_WRITE_PARTIAL_LIST_DATA","MISSION_WRITE_PERSISTENT","MMSI","MOTOR_TEST_COMPASS_CAL","MOTOR_TEST_ORDER_BOARD","MOTOR_TEST_ORDER_DEFAULT","MOTOR_TEST_ORDER_SEQUENCE","MOTOR_TEST_THROTTLE_PERCENT","MOTOR_TEST_THROTTLE_PILOT","MOTOR_TEST_THROTTLE_PWM","MOUNT_ORIENTATION","MOUNT_ORIENTATION_DATA","MagCalStatus","MavArmAuthDeniedReason","MavAutopilot","MavBatteryChargeState","MavBatteryFault","MavBatteryFunction","MavBatteryMode","MavBatteryType","MavCmd","MavCmdAck","MavCollisionAction","MavCollisionSrc","MavCollisionThreatLevel","MavComponent","MavDataStream","MavDistanceSensor","MavDoRepositionFlags","MavEstimatorType","MavEventCurrentSequenceFlags","MavEventErrorReason","MavFrame","MavFtpErr","MavFtpOpcode","MavGeneratorStatusFlag","MavGoto","MavLandedState","MavMessage","MavMissionResult","MavMissionType","MavMode","MavModeFlag","MavModeFlagDecodePosition","MavMountMode","MavOdidArmStatus","MavOdidAuthType","MavOdidCategoryEu","MavOdidClassEu","MavOdidClassificationType","MavOdidDescType","MavOdidHeightRef","MavOdidHorAcc","MavOdidIdType","MavOdidOperatorIdType","MavOdidOperatorLocationType","MavOdidSpeedAcc","MavOdidStatus","MavOdidTimeAcc","MavOdidUaType","MavOdidVerAcc","MavParamExtType","MavParamType","MavPowerStatus","MavProtocolCapability","MavResult","MavRoi","MavSensorOrientation","MavSeverity","MavState","MavSysStatusSensor","MavSysStatusSensorExtended","MavTunnelPayloadType","MavType","MavVtolState","MavWinchStatusFlag","MavlinkDataStreamType","MissionState","MotorTestOrder","MotorTestThrottleType","NAMED_VALUE_FLOAT","NAMED_VALUE_FLOAT_DATA","NAMED_VALUE_INT","NAMED_VALUE_INT_DATA","NAV_CONTROLLER_OUTPUT","NAV_CONTROLLER_OUTPUT_DATA","NAV_VTOL_LAND_OPTIONS_DEFAULT","NAV_VTOL_LAND_OPTIONS_FW_DESCENT","NAV_VTOL_LAND_OPTIONS_HOVER_DESCENT","NavVtolLandOptions","OBSTACLE_DISTANCE","OBSTACLE_DISTANCE_DATA","ODOMETRY","ODOMETRY_DATA","ONBOARD_COMPUTER_STATUS","ONBOARD_COMPUTER_STATUS_DATA","OPEN_DRONE_ID_ARM_STATUS","OPEN_DRONE_ID_ARM_STATUS_DATA","OPEN_DRONE_ID_AUTHENTICATION","OPEN_DRONE_ID_AUTHENTICATION_DATA","OPEN_DRONE_ID_BASIC_ID","OPEN_DRONE_ID_BASIC_ID_DATA","OPEN_DRONE_ID_LOCATION","OPEN_DRONE_ID_LOCATION_DATA","OPEN_DRONE_ID_MESSAGE_PACK","OPEN_DRONE_ID_MESSAGE_PACK_DATA","OPEN_DRONE_ID_OPERATOR_ID","OPEN_DRONE_ID_OPERATOR_ID_DATA","OPEN_DRONE_ID_SELF_ID","OPEN_DRONE_ID_SELF_ID_DATA","OPEN_DRONE_ID_SYSTEM","OPEN_DRONE_ID_SYSTEM_DATA","OPEN_DRONE_ID_SYSTEM_UPDATE","OPEN_DRONE_ID_SYSTEM_UPDATE_DATA","OPTICAL_FLOW","OPTICAL_FLOW_DATA","OPTICAL_FLOW_RAD","OPTICAL_FLOW_RAD_DATA","ORBIT_EXECUTION_STATUS","ORBIT_EXECUTION_STATUS_DATA","ORBIT_YAW_BEHAVIOUR_HOLD_FRONT_TANGENT_TO_CIRCLE","ORBIT_YAW_BEHAVIOUR_HOLD_FRONT_TO_CIRCLE_CENTER","ORBIT_YAW_BEHAVIOUR_HOLD_INITIAL_HEADING","ORBIT_YAW_BEHAVIOUR_RC_CONTROLLED","ORBIT_YAW_BEHAVIOUR_UNCONTROLLED","OrbitYawBehaviour","PARACHUTE_DISABLE","PARACHUTE_ENABLE","PARACHUTE_RELEASE","PARAM_ACK_ACCEPTED","PARAM_ACK_FAILED","PARAM_ACK_IN_PROGRESS","PARAM_ACK_VALUE_UNSUPPORTED","PARAM_EXT_ACK","PARAM_EXT_ACK_DATA","PARAM_EXT_REQUEST_LIST","PARAM_EXT_REQUEST_LIST_DATA","PARAM_EXT_REQUEST_READ","PARAM_EXT_REQUEST_READ_DATA","PARAM_EXT_SET","PARAM_EXT_SET_DATA","PARAM_EXT_VALUE","PARAM_EXT_VALUE_DATA","PARAM_MAP_RC","PARAM_MAP_RC_DATA","PARAM_READ_PERSISTENT","PARAM_REQUEST_LIST","PARAM_REQUEST_LIST_DATA","PARAM_REQUEST_READ","PARAM_REQUEST_READ_DATA","PARAM_RESET_ALL_DEFAULT","PARAM_RESET_CONFIG_DEFAULT","PARAM_RESET_SENSOR_DEFAULT","PARAM_SET","PARAM_SET_DATA","PARAM_VALUE","PARAM_VALUE_DATA","PARAM_WRITE_PERSISTENT","PING","PING_DATA","PLAY_TUNE","PLAY_TUNE_DATA","PLAY_TUNE_V2","PLAY_TUNE_V2_DATA","POSITION_TARGET_GLOBAL_INT","POSITION_TARGET_GLOBAL_INT_DATA","POSITION_TARGET_LOCAL_NED","POSITION_TARGET_LOCAL_NED_DATA","POSITION_TARGET_TYPEMASK_AX_IGNORE","POSITION_TARGET_TYPEMASK_AY_IGNORE","POSITION_TARGET_TYPEMASK_AZ_IGNORE","POSITION_TARGET_TYPEMASK_FORCE_SET","POSITION_TARGET_TYPEMASK_VX_IGNORE","POSITION_TARGET_TYPEMASK_VY_IGNORE","POSITION_TARGET_TYPEMASK_VZ_IGNORE","POSITION_TARGET_TYPEMASK_X_IGNORE","POSITION_TARGET_TYPEMASK_YAW_IGNORE","POSITION_TARGET_TYPEMASK_YAW_RATE_IGNORE","POSITION_TARGET_TYPEMASK_Y_IGNORE","POSITION_TARGET_TYPEMASK_Z_IGNORE","POWER_STATUS","POWER_STATUS_DATA","PRECISION_LAND_MODE_DISABLED","PRECISION_LAND_MODE_OPPORTUNISTIC","PRECISION_LAND_MODE_REQUIRED","PROTOCOL_VERSION","PROTOCOL_VERSION_DATA","ParachuteAction","ParamAck","PositionTargetTypemask","PrecisionLandMode","PreflightStorageMissionAction","PreflightStorageParameterAction","RADIO_STATUS","RADIO_STATUS_DATA","RAW_IMU","RAW_IMU_DATA","RAW_PRESSURE","RAW_PRESSURE_DATA","RAW_RPM","RAW_RPM_DATA","RC_CHANNELS","RC_CHANNELS_DATA","RC_CHANNELS_OVERRIDE","RC_CHANNELS_OVERRIDE_DATA","RC_CHANNELS_RAW","RC_CHANNELS_RAW_DATA","RC_CHANNELS_SCALED","RC_CHANNELS_SCALED_DATA","RC_TYPE_SPEKTRUM_DSM2","RC_TYPE_SPEKTRUM_DSMX","REQUEST_DATA_STREAM","REQUEST_DATA_STREAM_DATA","REQUEST_EVENT","REQUEST_EVENT_DATA","RESOURCE_REQUEST","RESOURCE_REQUEST_DATA","RESPONSE_EVENT_ERROR","RESPONSE_EVENT_ERROR_DATA","RTK_BASELINE_COORDINATE_SYSTEM_ECEF","RTK_BASELINE_COORDINATE_SYSTEM_NED","RcType","RtkBaselineCoordinateSystem","SAFETY_ALLOWED_AREA","SAFETY_ALLOWED_AREA_DATA","SAFETY_SET_ALLOWED_AREA","SAFETY_SET_ALLOWED_AREA_DATA","SCALED_IMU","SCALED_IMU2","SCALED_IMU2_DATA","SCALED_IMU3","SCALED_IMU3_DATA","SCALED_IMU_DATA","SCALED_PRESSURE","SCALED_PRESSURE2","SCALED_PRESSURE2_DATA","SCALED_PRESSURE3","SCALED_PRESSURE3_DATA","SCALED_PRESSURE_DATA","SERIAL_CONTROL","SERIAL_CONTROL_DATA","SERIAL_CONTROL_DEV_GPS1","SERIAL_CONTROL_DEV_GPS2","SERIAL_CONTROL_DEV_SHELL","SERIAL_CONTROL_DEV_TELEM1","SERIAL_CONTROL_DEV_TELEM2","SERIAL_CONTROL_FLAG_BLOCKING","SERIAL_CONTROL_FLAG_EXCLUSIVE","SERIAL_CONTROL_FLAG_MULTI","SERIAL_CONTROL_FLAG_REPLY","SERIAL_CONTROL_FLAG_RESPOND","SERIAL_CONTROL_SERIAL0","SERIAL_CONTROL_SERIAL1","SERIAL_CONTROL_SERIAL2","SERIAL_CONTROL_SERIAL3","SERIAL_CONTROL_SERIAL4","SERIAL_CONTROL_SERIAL5","SERIAL_CONTROL_SERIAL6","SERIAL_CONTROL_SERIAL7","SERIAL_CONTROL_SERIAL8","SERIAL_CONTROL_SERIAL9","SERVO_OUTPUT_RAW","SERVO_OUTPUT_RAW_DATA","SETUP_SIGNING","SETUP_SIGNING_DATA","SET_ACTUATOR_CONTROL_TARGET","SET_ACTUATOR_CONTROL_TARGET_DATA","SET_ATTITUDE_TARGET","SET_ATTITUDE_TARGET_DATA","SET_GPS_GLOBAL_ORIGIN","SET_GPS_GLOBAL_ORIGIN_DATA","SET_HOME_POSITION","SET_HOME_POSITION_DATA","SET_MODE","SET_MODE_DATA","SET_POSITION_TARGET_GLOBAL_INT","SET_POSITION_TARGET_GLOBAL_INT_DATA","SET_POSITION_TARGET_LOCAL_NED","SET_POSITION_TARGET_LOCAL_NED_DATA","SIM_STATE","SIM_STATE_DATA","SMART_BATTERY_INFO","SMART_BATTERY_INFO_DATA","STATUSTEXT","STATUSTEXT_DATA","STORAGE_INFORMATION","STORAGE_INFORMATION_DATA","STORAGE_STATUS_EMPTY","STORAGE_STATUS_NOT_SUPPORTED","STORAGE_STATUS_READY","STORAGE_STATUS_UNFORMATTED","STORAGE_TYPE_CF","STORAGE_TYPE_CFE","STORAGE_TYPE_HD","STORAGE_TYPE_MICROSD","STORAGE_TYPE_OTHER","STORAGE_TYPE_SD","STORAGE_TYPE_UNKNOWN","STORAGE_TYPE_USB_STICK","STORAGE_TYPE_XQD","STORAGE_USAGE_FLAG_LOGS","STORAGE_USAGE_FLAG_PHOTO","STORAGE_USAGE_FLAG_SET","STORAGE_USAGE_FLAG_VIDEO","SUPPORTED_TUNES","SUPPORTED_TUNES_DATA","SYSTEM_TIME","SYSTEM_TIME_DATA","SYS_STATUS","SYS_STATUS_DATA","SerialControlDev","SerialControlFlag","SetFocusType","StorageStatus","StorageType","StorageUsageFlag","TERRAIN_CHECK","TERRAIN_CHECK_DATA","TERRAIN_DATA","TERRAIN_DATA_DATA","TERRAIN_REPORT","TERRAIN_REPORT_DATA","TERRAIN_REQUEST","TERRAIN_REQUEST_DATA","TIMESYNC","TIMESYNC_DATA","TIME_ESTIMATE_TO_TARGET","TIME_ESTIMATE_TO_TARGET_DATA","TRAJECTORY_REPRESENTATION_BEZIER","TRAJECTORY_REPRESENTATION_BEZIER_DATA","TRAJECTORY_REPRESENTATION_WAYPOINTS","TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA","TUNE_FORMAT_MML_MODERN","TUNE_FORMAT_QBASIC1_1","TUNNEL","TUNNEL_DATA","TuneFormat","UAVCAN_NODE_HEALTH_CRITICAL","UAVCAN_NODE_HEALTH_ERROR","UAVCAN_NODE_HEALTH_OK","UAVCAN_NODE_HEALTH_WARNING","UAVCAN_NODE_INFO","UAVCAN_NODE_INFO_DATA","UAVCAN_NODE_MODE_INITIALIZATION","UAVCAN_NODE_MODE_MAINTENANCE","UAVCAN_NODE_MODE_OFFLINE","UAVCAN_NODE_MODE_OPERATIONAL","UAVCAN_NODE_MODE_SOFTWARE_UPDATE","UAVCAN_NODE_STATUS","UAVCAN_NODE_STATUS_DATA","UNDER_WAY","UTM_DATA_AVAIL_FLAGS_ALTITUDE_AVAILABLE","UTM_DATA_AVAIL_FLAGS_HORIZONTAL_VELO_AVAILABLE","UTM_DATA_AVAIL_FLAGS_NEXT_WAYPOINT_AVAILABLE","UTM_DATA_AVAIL_FLAGS_POSITION_AVAILABLE","UTM_DATA_AVAIL_FLAGS_RELATIVE_ALTITUDE_AVAILABLE","UTM_DATA_AVAIL_FLAGS_TIME_VALID","UTM_DATA_AVAIL_FLAGS_UAS_ID_AVAILABLE","UTM_DATA_AVAIL_FLAGS_VERTICAL_VELO_AVAILABLE","UTM_FLIGHT_STATE_AIRBORNE","UTM_FLIGHT_STATE_EMERGENCY","UTM_FLIGHT_STATE_GROUND","UTM_FLIGHT_STATE_NOCTRL","UTM_FLIGHT_STATE_UNKNOWN","UTM_GLOBAL_POSITION","UTM_GLOBAL_POSITION_DATA","UavcanNodeHealth","UavcanNodeMode","UtmDataAvailFlags","UtmFlightState","V2_EXTENSION","V2_EXTENSION_DATA","VFR_HUD","VFR_HUD_DATA","VIBRATION","VIBRATION_DATA","VICON_POSITION_ESTIMATE","VICON_POSITION_ESTIMATE_DATA","VIDEO_STREAM_INFORMATION","VIDEO_STREAM_INFORMATION_DATA","VIDEO_STREAM_STATUS","VIDEO_STREAM_STATUS_DATA","VIDEO_STREAM_STATUS_FLAGS_RUNNING","VIDEO_STREAM_STATUS_FLAGS_THERMAL","VIDEO_STREAM_TYPE_MPEG_TS_H264","VIDEO_STREAM_TYPE_RTPUDP","VIDEO_STREAM_TYPE_RTSP","VIDEO_STREAM_TYPE_TCP_MPEG","VISION_POSITION_ESTIMATE","VISION_POSITION_ESTIMATE_DATA","VISION_SPEED_ESTIMATE","VISION_SPEED_ESTIMATE_DATA","VTOL_TRANSITION_HEADING_ANY","VTOL_TRANSITION_HEADING_NEXT_WAYPOINT","VTOL_TRANSITION_HEADING_SPECIFIED","VTOL_TRANSITION_HEADING_TAKEOFF","VTOL_TRANSITION_HEADING_VEHICLE_DEFAULT","Vcc","VideoStreamStatusFlags","VideoStreamType","Vservo","VtolTransitionHeading","WHEEL_DISTANCE","WHEEL_DISTANCE_DATA","WIFI_CONFIG_AP","WIFI_CONFIG_AP_DATA","WIFI_CONFIG_AP_MODE_AP","WIFI_CONFIG_AP_MODE_DISABLED","WIFI_CONFIG_AP_MODE_STATION","WIFI_CONFIG_AP_MODE_UNDEFINED","WIFI_CONFIG_AP_RESPONSE_ACCEPTED","WIFI_CONFIG_AP_RESPONSE_MODE_ERROR","WIFI_CONFIG_AP_RESPONSE_PASSWORD_ERROR","WIFI_CONFIG_AP_RESPONSE_REJECTED","WIFI_CONFIG_AP_RESPONSE_SSID_ERROR","WIFI_CONFIG_AP_RESPONSE_UNDEFINED","WINCH_ABANDON_LINE","WINCH_DELIVER","WINCH_HOLD","WINCH_LOAD_LINE","WINCH_LOAD_PAYLOAD","WINCH_LOCK","WINCH_RATE_CONTROL","WINCH_RELATIVE_LENGTH_CONTROL","WINCH_RELAXED","WINCH_RETRACT","WINCH_STATUS","WINCH_STATUS_DATA","WIND_COV","WIND_COV_DATA","WifiConfigApMode","WifiConfigApResponse","WinchActions","ZOOM_TYPE_CONTINUOUS","ZOOM_TYPE_FOCAL_LENGTH","ZOOM_TYPE_RANGE","ZOOM_TYPE_STEP","abs_pressure","abs_pressure","acc","acc_x","acc_y","acc_z","accuracy","accuracy","ack","action","active","actuator","address","afx","afx","afx","afx","afy","afy","afy","afy","afz","afz","afz","afz","airspeed","airspeed","airspeed","airspeed","airspeed_sp","airspeed_sp","all","all","all","all","all","all","all","all","all","all","all","all","all","all","all","all","all","all","all","all","all","all","all","all","all","alt","alt","alt","alt","alt","alt","alt","alt","alt","alt","alt","alt","alt","alt","alt","alt","alt_camera","alt_error","alt_image","altitude","altitude","altitude","altitude","altitude","altitude","altitude_amsl","altitude_amsl","altitude_barometric","altitude_geodetic","altitude_local","altitude_minimum_delta","altitude_monotonic","altitude_relative","altitude_sp","altitude_terrain","altitude_type","angle_x","angle_y","angular_velocity_x","angular_velocity_x","angular_velocity_x","angular_velocity_y","angular_velocity_y","angular_velocity_y","angular_velocity_z","angular_velocity_z","angular_velocity_z","apn","approach_x","approach_x","approach_y","approach_y","approach_z","approach_z","area_ceiling","area_count","area_floor","area_radius","arguments","arming_time_utc","array_id","aspd_error","attitude_q","attitude_quaternion","authentication_data","authentication_type","autocontinue","autocontinue","autocontinue","autopilot","autopilot","autosaved","aux1","aux2","aux3","aux4","available_capacity","available_capacity","ax","ay","az","barometer_accuracy","barometric_pressure","base_mode","base_mode","base_mode","baseline_a_mm","baseline_a_mm","baseline_b_mm","baseline_b_mm","baseline_c_mm","baseline_c_mm","baseline_coords_type","baseline_coords_type","bat_current_setpoint","battery","battery_current","battery_function","battery_function","battery_remaining","battery_remaining","battery_remaining","baudrate","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitrate","bitrate","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","board_version","body_pitch_rate","body_pitch_rate","body_roll_rate","body_roll_rate","body_yaw_rate","body_yaw_rate","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","bottom_clearance","breach_count","breach_status","breach_time","breach_type","bus","bus","bus","bus_voltage","buttons","cal_mask","cal_status","callsign","callsign","cam_definition_uri","cam_definition_version","camera_id","cap_flags","cap_flags","capabilities","capacity_full","capacity_full_specification","capture_result","category_eu","chan10_raw","chan10_raw","chan11_raw","chan11_raw","chan12_raw","chan12_raw","chan13_raw","chan14_raw","chan15_raw","chan16_raw","chan17_raw","chan18_raw","chan1_raw","chan1_raw","chan1_raw","chan1_raw","chan1_scaled","chan2_raw","chan2_raw","chan2_raw","chan2_raw","chan2_scaled","chan3_raw","chan3_raw","chan3_raw","chan3_raw","chan3_scaled","chan4_raw","chan4_raw","chan4_raw","chan4_raw","chan4_scaled","chan5_raw","chan5_raw","chan5_raw","chan5_raw","chan5_scaled","chan6_raw","chan6_raw","chan6_raw","chan6_raw","chan6_scaled","chan7_raw","chan7_raw","chan7_raw","chan7_raw","chan7_scaled","chan8_raw","chan8_raw","chan8_raw","chan8_raw","chan8_scaled","chan9_raw","chan9_raw","chancount","charging_minimum_voltage","child_frame_id","class_eu","classification_type","climb","climb_rate","climb_rate","clipping_0","clipping_1","clipping_2","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cog","cog","cog","command","command","command","command","command","command","command","commanded_action","compass_id","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","confirmation","connection_type","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","control_request","control_request","controls","controls","controls","coordinate_frame","coordinate_frame","coordinate_frame","coordinate_frame","count","count","count","count","count","count","count","counter","covariance","covariance","covariance","covariance","cpu_combined","cpu_cores","current","current","current","current","current","current_battery","current_battery","current_consumed","current_distance","current_height","custom0","custom1","custom2","custom_cap_flags","custom_mode","custom_mode","custom_mode","custom_mode","custom_name","custom_state","cycle_count","cylinder_head_temperature","data","data","data","data","data","data","data","data","data","data","data_page","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default_message_from_id","delta","description","description_type","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","destination_component","destination_system","device","device_name","dgps_age","dgps_numch","diag_x","diag_y","diag_z","diff_pressure","diff_pressure","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","dimension_bow","dimension_port","dimension_starboard","dimension_stern","direction","discharge_minimum_voltage","dist","distance","distance","distance","distance","distances","drop_rate_comm","ecu_index","emitter_type","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","enable_lte","enable_pin","end","end_index","end_index","energy_consumed","engine_load","eph","eph","eph","eph","epv","epv","epv","epv","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","error","error_count","errors_comm","errors_count1","errors_count2","errors_count3","errors_count4","est_capabilities","estimator_status","estimator_type","estimator_type","event_time_boot_ms","exhaust_gas_temperature","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extra_crc","failed_sessions","failsafe","failure_flags","failure_flags","failure_flags","failure_reason","fan_speed","feed_forward_angular_velocity_z","fields_updated","fields_updated","file_crc","file_url","firmware_version","firmware_version","first_message_offset","first_message_offset","first_sequence","fitness","fix_type","fix_type","fix_type","fix_type","fixed","flags","flags","flags","flags","flags","flags","flags","flags","flags","flags","flags","flags","flags","flags","flags","flags","flags","flags","flight_custom_version","flight_state","flight_sw_version","flight_uuid","flow_comp_m_x","flow_comp_m_y","flow_x","flow_y","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","focal_length","format","format","frame","frame","frame","frame","frame","frame","frame","frame_id","framerate","framerate","frequency","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","fuel_consumed","fuel_flow","gcs_system_id","general_metadata_file_crc","general_metadata_uri","generator_speed","generator_temperature","gimbal_device_id","gimbal_device_id","gimbal_device_id","gimbal_device_id","gimbal_device_id","gps_fix_type","gps_id","gps_nsat","gpu_combined","gpu_cores","grid_spacing","grid_spacing","gridbit","ground_distance","groundspeed","groundspeed","groundspeed","group_mlx","group_mlx","h_acc","h_acc","hagl_ratio","hardware_version","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hdg","hdg","hdg_acc","hdop","heading","heading","heading","heading","heading","heading_sp","health","health","height","height","height_reference","hfov","hfov","hfov","hor_velocity","horiz_accuracy","horiz_accuracy","horizontal_accuracy","horizontal_minimum_delta","humidity","hw_unique_id","hw_version_major","hw_version_minor","iar_num_hypotheses","iar_num_hypotheses","id","id","id","id","id","id","id","id","id","id","id","id_or_mac","id_or_mac","id_or_mac","id_or_mac","id_or_mac","id_or_mac","id_or_mac","id_type","ids","ignition_timing","ignore_flags","image_index","image_interval","image_status","increment","ind","ind_airspeed","index","index","index","info","initial_timestamp","injection_time","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","intake_manifold_pressure","intake_manifold_temperature","integrated_x","integrated_x","integrated_xgyro","integrated_xgyro","integrated_y","integrated_y","integrated_ygyro","integrated_ygyro","integrated_zgyro","integrated_zgyro","integration_time_us","integration_time_us","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","interval_us","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","jpg_quality","key","lac","land","landed_state","landed_state","landed_state","last_change_ms","last_heartbeat","last_log_num","last_page_index","last_sequence","lat","lat","lat","lat","lat","lat","lat","lat","lat","lat","lat","lat","lat","lat","lat","lat","lat","lat","lat","lat_camera","lat_image","lat_int","lat_int","latitude","latitude","latitude","latitude","latitude","latitude","latitude","len","len","len","len","length","length","length","lens_id","library_version_hash","line_length","link_rx_max","link_rx_rate","link_tx_max","link_tx_rate","link_type","load","load_current","loaded","log_levels","lon","lon","lon","lon","lon","lon","lon","lon","lon","lon","lon","lon","lon","lon","lon","lon","lon","lon","lon","lon_camera","lon_image","lon_int","lon_int","longitude","longitude","longitude","longitude","longitude","longitude","longitude","mag_ratio","manual_override_switch","mask","mavlink_version","mavtype","mavtype","mavtype","mavtype","mavtype","mavtype","mavtype","mavtype","mavtype","mavtype","mavtype","mavtype","max_distance","max_distance","max_version","mcc","message_id","message_id","message_id_from_name","message_name","message_rate","message_type","messages","messages_lost","messages_received","messages_sent","middleware_custom_version","middleware_sw_version","min_distance","min_distance","min_version","mission_end","mission_next_item","mnc","mode","mode","mode","mode_id","mode_switch","model_name","model_name","msg_pack_size","name","name","name","name","name","name","name","nav_bearing","nav_mode","nav_pitch","nav_roll","navigational_status","new_pin","next_alt","next_lat","next_lon","noise","not","not","not","not","not","not","not","not","not","not","not","not","not","not","not","not","not","not","not","not","not","not","not","not","not","nsats","nsats","num_ids","num_logs","offdiag_x","offdiag_y","offdiag_z","ofs","ofs","ofs_x","ofs_y","ofs_z","on_off","onboard_control_sensors_enabled","onboard_control_sensors_health","onboard_control_sensors_present","operation","operator_altitude_geo","operator_altitude_geo","operator_id","operator_id_type","operator_latitude","operator_latitude","operator_location_type","operator_longitude","operator_longitude","orientation","os_custom_version","os_sw_version","p1x","p1x","p1y","p1y","p1z","p1z","p2x","p2x","p2y","p2y","p2z","p2z","packets","param1","param1","param1","param1","param2","param2","param2","param2","param3","param3","param3","param3","param4","param4","param4","param4","param5","param6","param7","param_count","param_count","param_id","param_id","param_id","param_id","param_id","param_id","param_id","param_id","param_index","param_index","param_index","param_index","param_index","param_result","param_type","param_type","param_type","param_type","param_type","param_value","param_value","param_value","param_value","param_value","param_value0","param_value_max","param_value_min","parameter_rc_channel_index","parse","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","passkey","password","payload","payload","payload","payload","payload_length","payload_type","pending","peripherals_metadata_file_crc","peripherals_metadata_uri","pin","pitch","pitch","pitch","pitch","pitch","pitch","pitch","pitch","pitch","pitch","pitch","pitch","pitch_elevator","pitch_max","pitch_max","pitch_min","pitch_min","pitch_rate","pitch_rate","pitch_rate","pitchspeed","pitchspeed","pitchspeed","pitchspeed","pitchspeed","pitchspeed","point_x","point_y","port","port","port","pos_horiz_accuracy","pos_horiz_ratio","pos_variance","pos_vert_accuracy","pos_vert_ratio","pos_x","pos_x","pos_y","pos_y","pos_yaw","pos_yaw","pos_z","pos_z","pose_covariance","position_cov","power_generated","press_abs","press_abs","press_abs","press_abs","press_diff","press_diff","press_diff","press_diff1","press_diff2","pressure_alt","pressure_alt","primary_control_compid","primary_control_sysid","product_id","pt_compensation","puk","q","q","q","q","q","q","q","q","q","q","q","q","q","q","q1","q1","q2","q2","q3","q3","q4","q4","q_estimated_delay_us","quality","quality","quality","quality","r","radius","radius","ram_total","ram_usage","rates","read_speed","reason","rec_bottom_x","rec_bottom_y","rec_top_x","rec_top_y","recording_time_ms","rectifier_temperature","relative_alt","relative_alt","relative_alt","relative_alt","remnoise","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remrssi","req_message_rate","req_stream_id","request_id","resolution_h","resolution_h","resolution_h","resolution_v","resolution_v","resolution_v","response","resting_minimum_voltage","result","ring_pending","roaming","roll","roll","roll","roll","roll","roll","roll","roll","roll","roll","roll_ailerons","roll_max","roll_max","roll_min","roll_min","roll_rate","rollspeed","rollspeed","rollspeed","rollspeed","rollspeed","rollspeed","rotation","rotation","rpm","rpm","rssi","rssi","rssi","rssi","rssi","rtk_health","rtk_health","rtk_rate","rtk_rate","rtk_receiver_id","rtk_receiver_id","runtime","rx_buf","rx_overflows","rx_parse_err","rx_rate","rx_session_pending","rxerrors","safe_return","satellite_azimuth","satellite_elevation","satellite_prn","satellite_snr","satellite_used","satellites_visible","satellites_visible","satellites_visible","satellites_visible","satellites_visible","scale","secondary_control_compid","secondary_control_sysid","secret_key","sensor_id","sensor_id","sensor_id","sensor_size_h","sensor_size_v","sensor_type","seq","seq","seq","seq","seq","seq","seq","seq","seq","seqnr","sequence","sequence","sequence","sequence","sequence","sequence","sequence_oldest_available","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","serial_number","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","servo1_raw","servo2_raw","servo3_raw","servo4_raw","servo5_raw","servo6_raw","servo7_raw","servo8_raw","set","set","set","set","set","set","set","set","set","set","set","set","set","set","set","set","set","set","set","set","set","set","set","set","set","severity","signal_quality","single_message_size","size","size","size_x","size_y","spacing","spark_dwell_time","spec_version_hash","speed","speed_accuracy","speed_accuracy","speed_horizontal","speed_vertical","squawk","src","ssid","start","start_index","start_index","start_stop","state","status","status","status","status","status","status","std_dev_horz","std_dev_vert","storage","storage_count","storage_id","storage_total","storage_type","storage_usage","stream_id","stream_id","stream_id","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_mode","successful_sessions","sw_vcs_commit","sw_version_major","sw_version_minor","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","system_status","takeoff_time_utc","target","target_altitude","target_bearing","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_data","target_distance","target_heading","target_network","target_network","target_num","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","tas_ratio","tc1","temperature","temperature","temperature","temperature","temperature","temperature","temperature","temperature","temperature","temperature","temperature","temperature","temperature","temperature_air","temperature_air","temperature_board","temperature_core","tension","terrain_height","text","threat_level","throttle","throttle","throttle","throttle","throttle_out","throttle_position","thrust","thrust","thrust","time","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_us","time_delta_distance_us","time_delta_distance_us","time_last_baseline_ms","time_last_baseline_ms","time_to_minimum_delta","time_unix_usec","time_until_maintenance","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_utc","time_utc","time_week","time_week_ms","timeout","timestamp","timestamp","timestamp","timestamp","timestamp","timestamp","timestamp","timestamp","timestamp_accuracy","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","total_capacity","tow","tow","tracking_mode","tracking_status","tracking_status","transfer_type","true_airspeed","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","ts1","tslc","tslc","tune","tune","turn_rate","tx_buf","tx_overflows","tx_rate","tx_session_pending","txbuf","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_mask","type_mask","type_mask","type_mask","type_mask","type_mask","ua_type","uas_id","uas_id","uid","uid","union","union","union","union","union","union","union","union","union","union","union","union","union","union","union","union","union","union","union","union","union","union","union","union","union","update_rate","uptime","uptime_sec","uptime_sec","uri","uri","uri","uri_type","usec","usec","usec","usec","used_capacity","v_acc","v_acc","v_estimated_delay_us","valid_points","valid_points","value","value","value","value","var_horiz","var_vert","vd","vd","vd","vdop","ve","ve","ve","vel","vel","vel","vel","vel_acc","vel_acc","vel_d","vel_e","vel_n","vel_ratio","vel_variance","vel_x","vel_y","vel_yaw","vel_z","velocity","velocity_covariance","vendor_id","vendor_name","vendor_name","vendor_specific_status_code","ver","ver_velocity","version","version","vert_accuracy","vert_accuracy","vertical_accuracy","vfov","vibration_x","vibration_y","vibration_z","video_status","vn","vn","vn","voltage","voltage","voltage_battery","voltages","vtol_state","vx","vx","vx","vx","vx","vx","vx","vx","vx","vx","vx","vx","vx","vy","vy","vy","vy","vy","vy","vy","vy","vy","vy","vy","vy","vy","vz","vz","vz","vz","vz","vz","vz","vz","vz","vz","vz","vz","vz","weight","width","wind_alt","wind_heading","wind_x","wind_y","wind_z","windspeed","wn","wn","wp_dist","wp_distance","wp_num","wp_num","write_speed","x","x","x","x","x","x","x","x","x","x","x","x","x","x","x","x","x","x","x","x_acc","x_pos","x_vel","xacc","xacc","xacc","xacc","xacc","xacc","xacc","xacc","xacc","xgyro","xgyro","xgyro","xgyro","xgyro","xgyro","xgyro","xmag","xmag","xmag","xmag","xmag","xmag","xtrack_error","y","y","y","y","y","y","y","y","y","y","y","y","y","y","y","y","y","y","y","y_acc","y_pos","y_vel","yacc","yacc","yacc","yacc","yacc","yacc","yacc","yacc","yacc","yaw","yaw","yaw","yaw","yaw","yaw","yaw","yaw","yaw","yaw","yaw","yaw","yaw","yaw","yaw","yaw_max","yaw_max","yaw_min","yaw_min","yaw_rate","yaw_rate","yaw_rate","yaw_rate","yaw_rate","yaw_rate","yaw_rate","yaw_rudder","yawspeed","yawspeed","yawspeed","yawspeed","yawspeed","yawspeed","ygyro","ygyro","ygyro","ygyro","ygyro","ygyro","ygyro","ymag","ymag","ymag","ymag","ymag","ymag","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z_acc","z_pos","z_vel","zacc","zacc","zacc","zacc","zacc","zacc","zacc","zacc","zacc","zgyro","zgyro","zgyro","zgyro","zgyro","zgyro","zgyro","zmag","zmag","zmag","zmag","zmag","zmag","InvalidEnum","InvalidFlag","Io","Io","MessageReadError","MessageWriteError","Parse","ParserError","UnknownMessage","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","into","into","into","to_string","to_string","to_string","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","enum_type","flag_type","id","value","value","DEFAULT","DEFAULT","DEFAULT","DEFAULT","ENCODED_LEN","ENCODED_LEN","ICAROUS_FMS_STATE_APPROACH","ICAROUS_FMS_STATE_CLIMB","ICAROUS_FMS_STATE_CRUISE","ICAROUS_FMS_STATE_IDLE","ICAROUS_FMS_STATE_LAND","ICAROUS_FMS_STATE_TAKEOFF","ICAROUS_HEARTBEAT","ICAROUS_HEARTBEAT_DATA","ICAROUS_KINEMATIC_BANDS","ICAROUS_KINEMATIC_BANDS_DATA","ICAROUS_TRACK_BAND_TYPE_NEAR","ICAROUS_TRACK_BAND_TYPE_NONE","ICAROUS_TRACK_BAND_TYPE_RECOVERY","IcarousFmsState","IcarousTrackBandTypes","MavMessage","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","default","default","default","default","default_message_from_id","deser","deser","deserialize","deserialize","deserialize","deserialize","deserialize","eq","eq","eq","eq","eq","extra_crc","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from_i64","from_i64","from_u64","from_u64","into","into","into","into","into","max1","max2","max3","max4","max5","message_id","message_id_from_name","message_name","min1","min2","min3","min4","min5","numBands","parse","ser","ser","ser","serialize","serialize","serialize","serialize","serialize","status","to_i64","to_i64","to_owned","to_owned","to_owned","to_owned","to_owned","to_u64","to_u64","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type1","type2","type3","type4","type5","type_id","type_id","type_id","type_id","type_id","PeekReader","borrow","borrow_mut","consume","from","into","new","peek_exact","read_exact","read_u8","reader_mut","reader_ref","try_from","try_into","type_id","ACTUATOR_CONFIGURATION_3D_MODE_OFF","ACTUATOR_CONFIGURATION_3D_MODE_ON","ACTUATOR_CONFIGURATION_BEEP","ACTUATOR_CONFIGURATION_NONE","ACTUATOR_CONFIGURATION_SPIN_DIRECTION1","ACTUATOR_CONFIGURATION_SPIN_DIRECTION2","ACTUATOR_CONTROL_TARGET","ACTUATOR_CONTROL_TARGET_DATA","ACTUATOR_OUTPUT_FUNCTION_MOTOR1","ACTUATOR_OUTPUT_FUNCTION_MOTOR10","ACTUATOR_OUTPUT_FUNCTION_MOTOR11","ACTUATOR_OUTPUT_FUNCTION_MOTOR12","ACTUATOR_OUTPUT_FUNCTION_MOTOR13","ACTUATOR_OUTPUT_FUNCTION_MOTOR14","ACTUATOR_OUTPUT_FUNCTION_MOTOR15","ACTUATOR_OUTPUT_FUNCTION_MOTOR16","ACTUATOR_OUTPUT_FUNCTION_MOTOR2","ACTUATOR_OUTPUT_FUNCTION_MOTOR3","ACTUATOR_OUTPUT_FUNCTION_MOTOR4","ACTUATOR_OUTPUT_FUNCTION_MOTOR5","ACTUATOR_OUTPUT_FUNCTION_MOTOR6","ACTUATOR_OUTPUT_FUNCTION_MOTOR7","ACTUATOR_OUTPUT_FUNCTION_MOTOR8","ACTUATOR_OUTPUT_FUNCTION_MOTOR9","ACTUATOR_OUTPUT_FUNCTION_NONE","ACTUATOR_OUTPUT_FUNCTION_SERVO1","ACTUATOR_OUTPUT_FUNCTION_SERVO10","ACTUATOR_OUTPUT_FUNCTION_SERVO11","ACTUATOR_OUTPUT_FUNCTION_SERVO12","ACTUATOR_OUTPUT_FUNCTION_SERVO13","ACTUATOR_OUTPUT_FUNCTION_SERVO14","ACTUATOR_OUTPUT_FUNCTION_SERVO15","ACTUATOR_OUTPUT_FUNCTION_SERVO16","ACTUATOR_OUTPUT_FUNCTION_SERVO2","ACTUATOR_OUTPUT_FUNCTION_SERVO3","ACTUATOR_OUTPUT_FUNCTION_SERVO4","ACTUATOR_OUTPUT_FUNCTION_SERVO5","ACTUATOR_OUTPUT_FUNCTION_SERVO6","ACTUATOR_OUTPUT_FUNCTION_SERVO7","ACTUATOR_OUTPUT_FUNCTION_SERVO8","ACTUATOR_OUTPUT_FUNCTION_SERVO9","ACTUATOR_OUTPUT_STATUS","ACTUATOR_OUTPUT_STATUS_DATA","ADSB_ALTITUDE_TYPE_GEOMETRIC","ADSB_ALTITUDE_TYPE_PRESSURE_QNH","ADSB_EMITTER_TYPE_EMERGENCY_SURFACE","ADSB_EMITTER_TYPE_GLIDER","ADSB_EMITTER_TYPE_HEAVY","ADSB_EMITTER_TYPE_HIGHLY_MANUV","ADSB_EMITTER_TYPE_HIGH_VORTEX_LARGE","ADSB_EMITTER_TYPE_LARGE","ADSB_EMITTER_TYPE_LIGHT","ADSB_EMITTER_TYPE_LIGHTER_AIR","ADSB_EMITTER_TYPE_NO_INFO","ADSB_EMITTER_TYPE_PARACHUTE","ADSB_EMITTER_TYPE_POINT_OBSTACLE","ADSB_EMITTER_TYPE_ROTOCRAFT","ADSB_EMITTER_TYPE_SERVICE_SURFACE","ADSB_EMITTER_TYPE_SMALL","ADSB_EMITTER_TYPE_SPACE","ADSB_EMITTER_TYPE_UAV","ADSB_EMITTER_TYPE_ULTRA_LIGHT","ADSB_EMITTER_TYPE_UNASSGINED3","ADSB_EMITTER_TYPE_UNASSIGNED","ADSB_EMITTER_TYPE_UNASSIGNED2","ADSB_FLAGS_BARO_VALID","ADSB_FLAGS_SIMULATED","ADSB_FLAGS_SOURCE_UAT","ADSB_FLAGS_VALID_ALTITUDE","ADSB_FLAGS_VALID_CALLSIGN","ADSB_FLAGS_VALID_COORDS","ADSB_FLAGS_VALID_HEADING","ADSB_FLAGS_VALID_SQUAWK","ADSB_FLAGS_VALID_VELOCITY","ADSB_FLAGS_VERTICAL_VELOCITY_VALID","ADSB_VEHICLE","ADSB_VEHICLE_DATA","AIS_FLAGS_HIGH_VELOCITY","AIS_FLAGS_LARGE_BOW_DIMENSION","AIS_FLAGS_LARGE_PORT_DIMENSION","AIS_FLAGS_LARGE_STARBOARD_DIMENSION","AIS_FLAGS_LARGE_STERN_DIMENSION","AIS_FLAGS_POSITION_ACCURACY","AIS_FLAGS_TURN_RATE_SIGN_ONLY","AIS_FLAGS_VALID_CALLSIGN","AIS_FLAGS_VALID_COG","AIS_FLAGS_VALID_DIMENSIONS","AIS_FLAGS_VALID_NAME","AIS_FLAGS_VALID_TURN_RATE","AIS_FLAGS_VALID_VELOCITY","AIS_NAV_AGROUND","AIS_NAV_AIS_SART","AIS_NAV_ANCHORED","AIS_NAV_DRAUGHT_CONSTRAINED","AIS_NAV_FISHING","AIS_NAV_MOORED","AIS_NAV_RESERVED_1","AIS_NAV_RESERVED_2","AIS_NAV_RESERVED_3","AIS_NAV_RESERVED_HSC","AIS_NAV_RESERVED_WIG","AIS_NAV_RESTRICTED_MANOEUVERABILITY","AIS_NAV_SAILING","AIS_NAV_UNKNOWN","AIS_NAV_UN_COMMANDED","AIS_TYPE_ANTI_POLLUTION","AIS_TYPE_CARGO","AIS_TYPE_CARGO_HAZARDOUS_A","AIS_TYPE_CARGO_HAZARDOUS_B","AIS_TYPE_CARGO_HAZARDOUS_C","AIS_TYPE_CARGO_HAZARDOUS_D","AIS_TYPE_CARGO_RESERVED_1","AIS_TYPE_CARGO_RESERVED_2","AIS_TYPE_CARGO_RESERVED_3","AIS_TYPE_CARGO_RESERVED_4","AIS_TYPE_CARGO_UNKNOWN","AIS_TYPE_DIVING","AIS_TYPE_DREDGING","AIS_TYPE_FISHING","AIS_TYPE_HSC","AIS_TYPE_HSC_HAZARDOUS_A","AIS_TYPE_HSC_HAZARDOUS_B","AIS_TYPE_HSC_HAZARDOUS_C","AIS_TYPE_HSC_HAZARDOUS_D","AIS_TYPE_HSC_RESERVED_1","AIS_TYPE_HSC_RESERVED_2","AIS_TYPE_HSC_RESERVED_3","AIS_TYPE_HSC_RESERVED_4","AIS_TYPE_HSC_UNKNOWN","AIS_TYPE_LAW_ENFORCEMENT","AIS_TYPE_MEDICAL_TRANSPORT","AIS_TYPE_MILITARY","AIS_TYPE_NONECOMBATANT","AIS_TYPE_OTHER","AIS_TYPE_OTHER_HAZARDOUS_A","AIS_TYPE_OTHER_HAZARDOUS_B","AIS_TYPE_OTHER_HAZARDOUS_C","AIS_TYPE_OTHER_HAZARDOUS_D","AIS_TYPE_OTHER_RESERVED_1","AIS_TYPE_OTHER_RESERVED_2","AIS_TYPE_OTHER_RESERVED_3","AIS_TYPE_OTHER_RESERVED_4","AIS_TYPE_OTHER_UNKNOWN","AIS_TYPE_PASSENGER","AIS_TYPE_PASSENGER_HAZARDOUS_A","AIS_TYPE_PASSENGER_HAZARDOUS_B","AIS_TYPE_PASSENGER_HAZARDOUS_C","AIS_TYPE_PASSENGER_HAZARDOUS_D","AIS_TYPE_PASSENGER_RESERVED_1","AIS_TYPE_PASSENGER_RESERVED_2","AIS_TYPE_PASSENGER_RESERVED_3","AIS_TYPE_PASSENGER_RESERVED_4","AIS_TYPE_PASSENGER_UNKNOWN","AIS_TYPE_PILOT","AIS_TYPE_PLEASURE","AIS_TYPE_PORT_TENDER","AIS_TYPE_RESERVED_1","AIS_TYPE_RESERVED_10","AIS_TYPE_RESERVED_11","AIS_TYPE_RESERVED_12","AIS_TYPE_RESERVED_13","AIS_TYPE_RESERVED_14","AIS_TYPE_RESERVED_15","AIS_TYPE_RESERVED_16","AIS_TYPE_RESERVED_17","AIS_TYPE_RESERVED_18","AIS_TYPE_RESERVED_19","AIS_TYPE_RESERVED_2","AIS_TYPE_RESERVED_20","AIS_TYPE_RESERVED_21","AIS_TYPE_RESERVED_3","AIS_TYPE_RESERVED_4","AIS_TYPE_RESERVED_5","AIS_TYPE_RESERVED_6","AIS_TYPE_RESERVED_7","AIS_TYPE_RESERVED_8","AIS_TYPE_RESERVED_9","AIS_TYPE_SAILING","AIS_TYPE_SAR","AIS_TYPE_SPARE_LOCAL_1","AIS_TYPE_SPARE_LOCAL_2","AIS_TYPE_TANKER","AIS_TYPE_TANKER_HAZARDOUS_A","AIS_TYPE_TANKER_HAZARDOUS_B","AIS_TYPE_TANKER_HAZARDOUS_C","AIS_TYPE_TANKER_HAZARDOUS_D","AIS_TYPE_TANKER_RESERVED_1","AIS_TYPE_TANKER_RESERVED_2","AIS_TYPE_TANKER_RESERVED_3","AIS_TYPE_TANKER_RESERVED_4","AIS_TYPE_TANKER_UNKNOWN","AIS_TYPE_TOWING","AIS_TYPE_TOWING_LARGE","AIS_TYPE_TUG","AIS_TYPE_UNKNOWN","AIS_TYPE_WIG","AIS_TYPE_WIG_HAZARDOUS_A","AIS_TYPE_WIG_HAZARDOUS_B","AIS_TYPE_WIG_HAZARDOUS_C","AIS_TYPE_WIG_HAZARDOUS_D","AIS_TYPE_WIG_RESERVED_1","AIS_TYPE_WIG_RESERVED_2","AIS_TYPE_WIG_RESERVED_3","AIS_TYPE_WIG_RESERVED_4","AIS_TYPE_WIG_RESERVED_5","AIS_VESSEL","AIS_VESSEL_DATA","ALTITUDE","ALTITUDE_DATA","ATTITUDE","ATTITUDE_DATA","ATTITUDE_QUATERNION","ATTITUDE_QUATERNION_COV","ATTITUDE_QUATERNION_COV_DATA","ATTITUDE_QUATERNION_DATA","ATTITUDE_TARGET","ATTITUDE_TARGET_DATA","ATTITUDE_TARGET_TYPEMASK_ATTITUDE_IGNORE","ATTITUDE_TARGET_TYPEMASK_BODY_PITCH_RATE_IGNORE","ATTITUDE_TARGET_TYPEMASK_BODY_ROLL_RATE_IGNORE","ATTITUDE_TARGET_TYPEMASK_BODY_YAW_RATE_IGNORE","ATTITUDE_TARGET_TYPEMASK_THROTTLE_IGNORE","ATTITUDE_TARGET_TYPEMASK_THRUST_BODY_SET","ATT_POS_MOCAP","ATT_POS_MOCAP_DATA","AUTH_KEY","AUTH_KEY_DATA","AUTOPILOT_STATE_FOR_GIMBAL_DEVICE","AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA","AUTOPILOT_VERSION","AUTOPILOT_VERSION_DATA","AUTOTUNE_AXIS_DEFAULT","AUTOTUNE_AXIS_PITCH","AUTOTUNE_AXIS_ROLL","AUTOTUNE_AXIS_YAW","ActuatorConfiguration","ActuatorOutputFunction","AdsbAltitudeType","AdsbEmitterType","AdsbFlags","AisFlags","AisNavStatus","AisType","AttitudeTargetTypemask","AutotuneAxis","BATTERY_FAULT_INCOMPATIBLE_CELLS_CONFIGURATION","BATTERY_STATUS","BATTERY_STATUS_DATA","BUTTON_CHANGE","BUTTON_CHANGE_DATA","CAMERA_CAPTURE_STATUS","CAMERA_CAPTURE_STATUS_DATA","CAMERA_CAP_FLAGS_CAN_CAPTURE_IMAGE_IN_VIDEO_MODE","CAMERA_CAP_FLAGS_CAN_CAPTURE_VIDEO_IN_IMAGE_MODE","CAMERA_CAP_FLAGS_CAPTURE_IMAGE","CAMERA_CAP_FLAGS_CAPTURE_VIDEO","CAMERA_CAP_FLAGS_HAS_BASIC_FOCUS","CAMERA_CAP_FLAGS_HAS_BASIC_ZOOM","CAMERA_CAP_FLAGS_HAS_IMAGE_SURVEY_MODE","CAMERA_CAP_FLAGS_HAS_MODES","CAMERA_CAP_FLAGS_HAS_TRACKING_GEO_STATUS","CAMERA_CAP_FLAGS_HAS_TRACKING_POINT","CAMERA_CAP_FLAGS_HAS_TRACKING_RECTANGLE","CAMERA_CAP_FLAGS_HAS_VIDEO_STREAM","CAMERA_FOV_STATUS","CAMERA_FOV_STATUS_DATA","CAMERA_IMAGE_CAPTURED","CAMERA_IMAGE_CAPTURED_DATA","CAMERA_INFORMATION","CAMERA_INFORMATION_DATA","CAMERA_MODE_IMAGE","CAMERA_MODE_IMAGE_SURVEY","CAMERA_MODE_VIDEO","CAMERA_SETTINGS","CAMERA_SETTINGS_DATA","CAMERA_TRACKING_GEO_STATUS","CAMERA_TRACKING_GEO_STATUS_DATA","CAMERA_TRACKING_IMAGE_STATUS","CAMERA_TRACKING_IMAGE_STATUS_DATA","CAMERA_TRACKING_MODE_NONE","CAMERA_TRACKING_MODE_POINT","CAMERA_TRACKING_MODE_RECTANGLE","CAMERA_TRACKING_STATUS_FLAGS_ACTIVE","CAMERA_TRACKING_STATUS_FLAGS_ERROR","CAMERA_TRACKING_STATUS_FLAGS_IDLE","CAMERA_TRACKING_TARGET_DATA_EMBEDDED","CAMERA_TRACKING_TARGET_DATA_IN_STATUS","CAMERA_TRACKING_TARGET_DATA_NONE","CAMERA_TRACKING_TARGET_DATA_RENDERED","CAMERA_TRIGGER","CAMERA_TRIGGER_DATA","CANFD_FRAME","CANFD_FRAME_DATA","CAN_FILTER_ADD","CAN_FILTER_MODIFY","CAN_FILTER_MODIFY_DATA","CAN_FILTER_REMOVE","CAN_FILTER_REPLACE","CAN_FRAME","CAN_FRAME_DATA","CELLULAR_CONFIG","CELLULAR_CONFIG_BLOCKED_PUK_REQUIRED","CELLULAR_CONFIG_DATA","CELLULAR_CONFIG_RESPONSE_ACCEPTED","CELLULAR_CONFIG_RESPONSE_APN_ERROR","CELLULAR_CONFIG_RESPONSE_PIN_ERROR","CELLULAR_CONFIG_RESPONSE_REJECTED","CELLULAR_NETWORK_FAILED_REASON_NONE","CELLULAR_NETWORK_FAILED_REASON_SIM_ERROR","CELLULAR_NETWORK_FAILED_REASON_SIM_MISSING","CELLULAR_NETWORK_FAILED_REASON_UNKNOWN","CELLULAR_NETWORK_RADIO_TYPE_CDMA","CELLULAR_NETWORK_RADIO_TYPE_GSM","CELLULAR_NETWORK_RADIO_TYPE_LTE","CELLULAR_NETWORK_RADIO_TYPE_NONE","CELLULAR_NETWORK_RADIO_TYPE_WCDMA","CELLULAR_STATUS","CELLULAR_STATUS_DATA","CELLULAR_STATUS_FLAG_CONNECTED","CELLULAR_STATUS_FLAG_CONNECTING","CELLULAR_STATUS_FLAG_DISABLED","CELLULAR_STATUS_FLAG_DISABLING","CELLULAR_STATUS_FLAG_DISCONNECTING","CELLULAR_STATUS_FLAG_ENABLED","CELLULAR_STATUS_FLAG_ENABLING","CELLULAR_STATUS_FLAG_FAILED","CELLULAR_STATUS_FLAG_INITIALIZING","CELLULAR_STATUS_FLAG_LOCKED","CELLULAR_STATUS_FLAG_REGISTERED","CELLULAR_STATUS_FLAG_SEARCHING","CELLULAR_STATUS_FLAG_UNKNOWN","CHANGE_OPERATOR_CONTROL","CHANGE_OPERATOR_CONTROL_ACK","CHANGE_OPERATOR_CONTROL_ACK_DATA","CHANGE_OPERATOR_CONTROL_DATA","COG","COLLISION","COLLISION_DATA","COMMAND_ACK","COMMAND_ACK_DATA","COMMAND_CANCEL","COMMAND_CANCEL_DATA","COMMAND_INT","COMMAND_INT_DATA","COMMAND_LONG","COMMAND_LONG_DATA","COMPONENT_INFORMATION","COMPONENT_INFORMATION_DATA","COMPONENT_METADATA","COMPONENT_METADATA_DATA","COMP_METADATA_TYPE_ACTUATORS","COMP_METADATA_TYPE_COMMANDS","COMP_METADATA_TYPE_EVENTS","COMP_METADATA_TYPE_GENERAL","COMP_METADATA_TYPE_PARAMETER","COMP_METADATA_TYPE_PERIPHERALS","CONTROL_SYSTEM_STATE","CONTROL_SYSTEM_STATE_DATA","CURRENT_EVENT_SEQUENCE","CURRENT_EVENT_SEQUENCE_DATA","CameraCapFlags","CameraMode","CameraTrackingMode","CameraTrackingStatusFlags","CameraTrackingTargetData","CameraZoomType","CanFilterOp","CellularConfigResponse","CellularNetworkFailedReason","CellularNetworkRadioType","CellularStatusFlag","CompMetadataType","DATA_STREAM","DATA_STREAM_DATA","DATA_TRANSMISSION_HANDSHAKE","DATA_TRANSMISSION_HANDSHAKE_DATA","DEBUG","DEBUG_DATA","DEBUG_FLOAT_ARRAY","DEBUG_FLOAT_ARRAY_DATA","DEBUG_VECT","DEBUG_VECT_DATA","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DISTANCE_SENSOR","DISTANCE_SENSOR_DATA","EFI_STATUS","EFI_STATUS_DATA","ENCAPSULATED_DATA","ENCAPSULATED_DATA_DATA","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ESC_CONNECTION_TYPE_CAN","ESC_CONNECTION_TYPE_DSHOT","ESC_CONNECTION_TYPE_I2C","ESC_CONNECTION_TYPE_ONESHOT","ESC_CONNECTION_TYPE_PPM","ESC_CONNECTION_TYPE_SERIAL","ESC_FAILURE_GENERIC","ESC_FAILURE_INCONSISTENT_CMD","ESC_FAILURE_MOTOR_STUCK","ESC_FAILURE_NONE","ESC_FAILURE_OVER_CURRENT","ESC_FAILURE_OVER_RPM","ESC_FAILURE_OVER_TEMPERATURE","ESC_FAILURE_OVER_VOLTAGE","ESC_INFO","ESC_INFO_DATA","ESC_STATUS","ESC_STATUS_DATA","ESTIMATOR_ACCEL_ERROR","ESTIMATOR_ATTITUDE","ESTIMATOR_CONST_POS_MODE","ESTIMATOR_GPS_GLITCH","ESTIMATOR_POS_HORIZ_ABS","ESTIMATOR_POS_HORIZ_REL","ESTIMATOR_POS_VERT_ABS","ESTIMATOR_POS_VERT_AGL","ESTIMATOR_PRED_POS_HORIZ_ABS","ESTIMATOR_PRED_POS_HORIZ_REL","ESTIMATOR_STATUS","ESTIMATOR_STATUS_DATA","ESTIMATOR_VELOCITY_HORIZ","ESTIMATOR_VELOCITY_VERT","EVENT","EVENT_DATA","EXTENDED_SYS_STATE","EXTENDED_SYS_STATE_DATA","EscConnectionType","EscFailureFlags","EstimatorStatusFlags","FAILURE_TYPE_DELAYED","FAILURE_TYPE_GARBAGE","FAILURE_TYPE_INTERMITTENT","FAILURE_TYPE_OFF","FAILURE_TYPE_OK","FAILURE_TYPE_SLOW","FAILURE_TYPE_STUCK","FAILURE_TYPE_WRONG","FAILURE_UNIT_SENSOR_ACCEL","FAILURE_UNIT_SENSOR_AIRSPEED","FAILURE_UNIT_SENSOR_BARO","FAILURE_UNIT_SENSOR_DISTANCE_SENSOR","FAILURE_UNIT_SENSOR_GPS","FAILURE_UNIT_SENSOR_GYRO","FAILURE_UNIT_SENSOR_MAG","FAILURE_UNIT_SENSOR_OPTICAL_FLOW","FAILURE_UNIT_SENSOR_VIO","FAILURE_UNIT_SYSTEM_AVOIDANCE","FAILURE_UNIT_SYSTEM_BATTERY","FAILURE_UNIT_SYSTEM_MAVLINK_SIGNAL","FAILURE_UNIT_SYSTEM_MOTOR","FAILURE_UNIT_SYSTEM_RC_SIGNAL","FAILURE_UNIT_SYSTEM_SERVO","FENCE_ACTION_GUIDED","FENCE_ACTION_GUIDED_THR_PASS","FENCE_ACTION_HOLD","FENCE_ACTION_LAND","FENCE_ACTION_NONE","FENCE_ACTION_REPORT","FENCE_ACTION_RTL","FENCE_ACTION_TERMINATE","FENCE_BREACH_BOUNDARY","FENCE_BREACH_MAXALT","FENCE_BREACH_MINALT","FENCE_BREACH_NONE","FENCE_MITIGATE_NONE","FENCE_MITIGATE_UNKNOWN","FENCE_MITIGATE_VEL_LIMIT","FENCE_STATUS","FENCE_STATUS_DATA","FILE_TRANSFER_PROTOCOL","FILE_TRANSFER_PROTOCOL_DATA","FIRMWARE_VERSION_TYPE_ALPHA","FIRMWARE_VERSION_TYPE_BETA","FIRMWARE_VERSION_TYPE_DEV","FIRMWARE_VERSION_TYPE_OFFICIAL","FIRMWARE_VERSION_TYPE_RC","FLIGHT_INFORMATION","FLIGHT_INFORMATION_DATA","FOCUS_TYPE_AUTO","FOCUS_TYPE_AUTO_CONTINUOUS","FOCUS_TYPE_AUTO_SINGLE","FOCUS_TYPE_CONTINUOUS","FOCUS_TYPE_METERS","FOCUS_TYPE_RANGE","FOCUS_TYPE_STEP","FOLLOW_TARGET","FOLLOW_TARGET_DATA","FailureType","FailureUnit","FenceAction","FenceBreach","FenceMitigate","FirmwareVersionType","GENERATOR_STATUS","GENERATOR_STATUS_DATA","GIMBAL_DEVICE_ATTITUDE_STATUS","GIMBAL_DEVICE_ATTITUDE_STATUS_DATA","GIMBAL_DEVICE_CAP_FLAGS_HAS_NEUTRAL","GIMBAL_DEVICE_CAP_FLAGS_HAS_PITCH_AXIS","GIMBAL_DEVICE_CAP_FLAGS_HAS_PITCH_FOLLOW","GIMBAL_DEVICE_CAP_FLAGS_HAS_PITCH_LOCK","GIMBAL_DEVICE_CAP_FLAGS_HAS_RC_INPUTS","GIMBAL_DEVICE_CAP_FLAGS_HAS_RETRACT","GIMBAL_DEVICE_CAP_FLAGS_HAS_ROLL_AXIS","GIMBAL_DEVICE_CAP_FLAGS_HAS_ROLL_FOLLOW","GIMBAL_DEVICE_CAP_FLAGS_HAS_ROLL_LOCK","GIMBAL_DEVICE_CAP_FLAGS_HAS_YAW_AXIS","GIMBAL_DEVICE_CAP_FLAGS_HAS_YAW_FOLLOW","GIMBAL_DEVICE_CAP_FLAGS_HAS_YAW_LOCK","GIMBAL_DEVICE_CAP_FLAGS_SUPPORTS_INFINITE_YAW","GIMBAL_DEVICE_CAP_FLAGS_SUPPORTS_YAW_IN_EARTH_FRAME","GIMBAL_DEVICE_ERROR_FLAGS_AT_PITCH_LIMIT","GIMBAL_DEVICE_ERROR_FLAGS_AT_ROLL_LIMIT","GIMBAL_DEVICE_ERROR_FLAGS_AT_YAW_LIMIT","GIMBAL_DEVICE_ERROR_FLAGS_CALIBRATION_RUNNING","GIMBAL_DEVICE_ERROR_FLAGS_COMMS_ERROR","GIMBAL_DEVICE_ERROR_FLAGS_ENCODER_ERROR","GIMBAL_DEVICE_ERROR_FLAGS_MOTOR_ERROR","GIMBAL_DEVICE_ERROR_FLAGS_NO_MANAGER","GIMBAL_DEVICE_ERROR_FLAGS_POWER_ERROR","GIMBAL_DEVICE_ERROR_FLAGS_SOFTWARE_ERROR","GIMBAL_DEVICE_FLAGS_ACCEPTS_YAW_IN_EARTH_FRAME","GIMBAL_DEVICE_FLAGS_NEUTRAL","GIMBAL_DEVICE_FLAGS_PITCH_LOCK","GIMBAL_DEVICE_FLAGS_RC_EXCLUSIVE","GIMBAL_DEVICE_FLAGS_RC_MIXED","GIMBAL_DEVICE_FLAGS_RETRACT","GIMBAL_DEVICE_FLAGS_ROLL_LOCK","GIMBAL_DEVICE_FLAGS_YAW_IN_EARTH_FRAME","GIMBAL_DEVICE_FLAGS_YAW_IN_VEHICLE_FRAME","GIMBAL_DEVICE_FLAGS_YAW_LOCK","GIMBAL_DEVICE_INFORMATION","GIMBAL_DEVICE_INFORMATION_DATA","GIMBAL_DEVICE_SET_ATTITUDE","GIMBAL_DEVICE_SET_ATTITUDE_DATA","GIMBAL_MANAGER_CAP_FLAGS_CAN_POINT_LOCATION_GLOBAL","GIMBAL_MANAGER_CAP_FLAGS_CAN_POINT_LOCATION_LOCAL","GIMBAL_MANAGER_CAP_FLAGS_HAS_NEUTRAL","GIMBAL_MANAGER_CAP_FLAGS_HAS_PITCH_AXIS","GIMBAL_MANAGER_CAP_FLAGS_HAS_PITCH_FOLLOW","GIMBAL_MANAGER_CAP_FLAGS_HAS_PITCH_LOCK","GIMBAL_MANAGER_CAP_FLAGS_HAS_RC_INPUTS","GIMBAL_MANAGER_CAP_FLAGS_HAS_RETRACT","GIMBAL_MANAGER_CAP_FLAGS_HAS_ROLL_AXIS","GIMBAL_MANAGER_CAP_FLAGS_HAS_ROLL_FOLLOW","GIMBAL_MANAGER_CAP_FLAGS_HAS_ROLL_LOCK","GIMBAL_MANAGER_CAP_FLAGS_HAS_YAW_AXIS","GIMBAL_MANAGER_CAP_FLAGS_HAS_YAW_FOLLOW","GIMBAL_MANAGER_CAP_FLAGS_HAS_YAW_LOCK","GIMBAL_MANAGER_CAP_FLAGS_SUPPORTS_INFINITE_YAW","GIMBAL_MANAGER_CAP_FLAGS_SUPPORTS_YAW_IN_EARTH_FRAME","GIMBAL_MANAGER_FLAGS_ACCEPTS_YAW_IN_EARTH_FRAME","GIMBAL_MANAGER_FLAGS_NEUTRAL","GIMBAL_MANAGER_FLAGS_PITCH_LOCK","GIMBAL_MANAGER_FLAGS_RC_EXCLUSIVE","GIMBAL_MANAGER_FLAGS_RC_MIXED","GIMBAL_MANAGER_FLAGS_RETRACT","GIMBAL_MANAGER_FLAGS_ROLL_LOCK","GIMBAL_MANAGER_FLAGS_YAW_IN_EARTH_FRAME","GIMBAL_MANAGER_FLAGS_YAW_IN_VEHICLE_FRAME","GIMBAL_MANAGER_FLAGS_YAW_LOCK","GIMBAL_MANAGER_INFORMATION","GIMBAL_MANAGER_INFORMATION_DATA","GIMBAL_MANAGER_SET_ATTITUDE","GIMBAL_MANAGER_SET_ATTITUDE_DATA","GIMBAL_MANAGER_SET_MANUAL_CONTROL","GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA","GIMBAL_MANAGER_SET_PITCHYAW","GIMBAL_MANAGER_SET_PITCHYAW_DATA","GIMBAL_MANAGER_STATUS","GIMBAL_MANAGER_STATUS_DATA","GLOBAL_POSITION_INT","GLOBAL_POSITION_INT_COV","GLOBAL_POSITION_INT_COV_DATA","GLOBAL_POSITION_INT_DATA","GLOBAL_VISION_POSITION_ESTIMATE","GLOBAL_VISION_POSITION_ESTIMATE_DATA","GPS2_RAW","GPS2_RAW_DATA","GPS2_RTK","GPS2_RTK_DATA","GPS_FIX_TYPE_2D_FIX","GPS_FIX_TYPE_3D_FIX","GPS_FIX_TYPE_DGPS","GPS_FIX_TYPE_NO_FIX","GPS_FIX_TYPE_NO_GPS","GPS_FIX_TYPE_PPP","GPS_FIX_TYPE_RTK_FIXED","GPS_FIX_TYPE_RTK_FLOAT","GPS_FIX_TYPE_STATIC","GPS_GLOBAL_ORIGIN","GPS_GLOBAL_ORIGIN_DATA","GPS_INJECT_DATA","GPS_INJECT_DATA_DATA","GPS_INPUT","GPS_INPUT_DATA","GPS_INPUT_IGNORE_FLAG_ALT","GPS_INPUT_IGNORE_FLAG_HDOP","GPS_INPUT_IGNORE_FLAG_HORIZONTAL_ACCURACY","GPS_INPUT_IGNORE_FLAG_SPEED_ACCURACY","GPS_INPUT_IGNORE_FLAG_VDOP","GPS_INPUT_IGNORE_FLAG_VEL_HORIZ","GPS_INPUT_IGNORE_FLAG_VEL_VERT","GPS_INPUT_IGNORE_FLAG_VERTICAL_ACCURACY","GPS_RAW_INT","GPS_RAW_INT_DATA","GPS_RTCM_DATA","GPS_RTCM_DATA_DATA","GPS_RTK","GPS_RTK_DATA","GPS_STATUS","GPS_STATUS_DATA","GRIPPER_ACTION_GRAB","GRIPPER_ACTION_RELEASE","GimbalDeviceCapFlags","GimbalDeviceErrorFlags","GimbalDeviceFlags","GimbalManagerCapFlags","GimbalManagerFlags","GpsFixType","GpsInputIgnoreFlags","GripperActions","HEARTBEAT","HEARTBEAT_DATA","HIGHRES_IMU","HIGHRES_IMU_DATA","HIGHRES_IMU_UPDATED_ABS_PRESSURE","HIGHRES_IMU_UPDATED_ALL","HIGHRES_IMU_UPDATED_DIFF_PRESSURE","HIGHRES_IMU_UPDATED_NONE","HIGHRES_IMU_UPDATED_PRESSURE_ALT","HIGHRES_IMU_UPDATED_TEMPERATURE","HIGHRES_IMU_UPDATED_XACC","HIGHRES_IMU_UPDATED_XGYRO","HIGHRES_IMU_UPDATED_XMAG","HIGHRES_IMU_UPDATED_YACC","HIGHRES_IMU_UPDATED_YGYRO","HIGHRES_IMU_UPDATED_YMAG","HIGHRES_IMU_UPDATED_ZACC","HIGHRES_IMU_UPDATED_ZGYRO","HIGHRES_IMU_UPDATED_ZMAG","HIGH_LATENCY","HIGH_LATENCY2","HIGH_LATENCY2_DATA","HIGH_LATENCY_DATA","HIL_ACTUATOR_CONTROLS","HIL_ACTUATOR_CONTROLS_DATA","HIL_CONTROLS","HIL_CONTROLS_DATA","HIL_GPS","HIL_GPS_DATA","HIL_OPTICAL_FLOW","HIL_OPTICAL_FLOW_DATA","HIL_RC_INPUTS_RAW","HIL_RC_INPUTS_RAW_DATA","HIL_SENSOR","HIL_SENSOR_DATA","HIL_SENSOR_UPDATED_ABS_PRESSURE","HIL_SENSOR_UPDATED_DIFF_PRESSURE","HIL_SENSOR_UPDATED_NONE","HIL_SENSOR_UPDATED_PRESSURE_ALT","HIL_SENSOR_UPDATED_RESET","HIL_SENSOR_UPDATED_TEMPERATURE","HIL_SENSOR_UPDATED_XACC","HIL_SENSOR_UPDATED_XGYRO","HIL_SENSOR_UPDATED_XMAG","HIL_SENSOR_UPDATED_YACC","HIL_SENSOR_UPDATED_YGYRO","HIL_SENSOR_UPDATED_YMAG","HIL_SENSOR_UPDATED_ZACC","HIL_SENSOR_UPDATED_ZGYRO","HIL_SENSOR_UPDATED_ZMAG","HIL_STATE","HIL_STATE_DATA","HIL_STATE_QUATERNION","HIL_STATE_QUATERNION_DATA","HL_FAILURE_FLAG_3D_ACCEL","HL_FAILURE_FLAG_3D_GYRO","HL_FAILURE_FLAG_3D_MAG","HL_FAILURE_FLAG_ABSOLUTE_PRESSURE","HL_FAILURE_FLAG_BATTERY","HL_FAILURE_FLAG_DIFFERENTIAL_PRESSURE","HL_FAILURE_FLAG_ENGINE","HL_FAILURE_FLAG_ESTIMATOR","HL_FAILURE_FLAG_GEOFENCE","HL_FAILURE_FLAG_GPS","HL_FAILURE_FLAG_MISSION","HL_FAILURE_FLAG_OFFBOARD_LINK","HL_FAILURE_FLAG_RC_RECEIVER","HL_FAILURE_FLAG_TERRAIN","HOME_POSITION","HOME_POSITION_DATA","HYGROMETER_SENSOR","HYGROMETER_SENSOR_DATA","HighresImuUpdatedFlags","HilSensorUpdatedFlags","HlFailureFlag","ICAO","ICAO_address","ISBD_LINK_STATUS","ISBD_LINK_STATUS_DATA","LANDING_TARGET","LANDING_TARGET_DATA","LANDING_TARGET_TYPE_LIGHT_BEACON","LANDING_TARGET_TYPE_RADIO_BEACON","LANDING_TARGET_TYPE_VISION_FIDUCIAL","LANDING_TARGET_TYPE_VISION_OTHER","LINK_NODE_STATUS","LINK_NODE_STATUS_DATA","LOCAL_POSITION_NED","LOCAL_POSITION_NED_COV","LOCAL_POSITION_NED_COV_DATA","LOCAL_POSITION_NED_DATA","LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET","LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA","LOGGING_ACK","LOGGING_ACK_DATA","LOGGING_DATA","LOGGING_DATA_ACKED","LOGGING_DATA_ACKED_DATA","LOGGING_DATA_DATA","LOG_DATA","LOG_DATA_DATA","LOG_ENTRY","LOG_ENTRY_DATA","LOG_ERASE","LOG_ERASE_DATA","LOG_REQUEST_DATA","LOG_REQUEST_DATA_DATA","LOG_REQUEST_END","LOG_REQUEST_END_DATA","LOG_REQUEST_LIST","LOG_REQUEST_LIST_DATA","LandingTargetType","MAG_CAL_BAD_ORIENTATION","MAG_CAL_BAD_RADIUS","MAG_CAL_FAILED","MAG_CAL_NOT_STARTED","MAG_CAL_REPORT","MAG_CAL_REPORT_DATA","MAG_CAL_RUNNING_STEP_ONE","MAG_CAL_RUNNING_STEP_TWO","MAG_CAL_SUCCESS","MAG_CAL_WAITING_TO_START","MANUAL_CONTROL","MANUAL_CONTROL_DATA","MANUAL_SETPOINT","MANUAL_SETPOINT_DATA","MAVLINK_DATA_STREAM_IMG_BMP","MAVLINK_DATA_STREAM_IMG_JPEG","MAVLINK_DATA_STREAM_IMG_PGM","MAVLINK_DATA_STREAM_IMG_PNG","MAVLINK_DATA_STREAM_IMG_RAW32U","MAVLINK_DATA_STREAM_IMG_RAW8U","MAV_ARM_AUTH_DENIED_REASON_AIRSPACE_IN_USE","MAV_ARM_AUTH_DENIED_REASON_BAD_WEATHER","MAV_ARM_AUTH_DENIED_REASON_GENERIC","MAV_ARM_AUTH_DENIED_REASON_INVALID_WAYPOINT","MAV_ARM_AUTH_DENIED_REASON_NONE","MAV_ARM_AUTH_DENIED_REASON_TIMEOUT","MAV_AUTOPILOT_AEROB","MAV_AUTOPILOT_AIRRAILS","MAV_AUTOPILOT_ARDUPILOTMEGA","MAV_AUTOPILOT_ARMAZILA","MAV_AUTOPILOT_ASLUAV","MAV_AUTOPILOT_AUTOQUAD","MAV_AUTOPILOT_FP","MAV_AUTOPILOT_GENERIC","MAV_AUTOPILOT_GENERIC_MISSION_FULL","MAV_AUTOPILOT_GENERIC_WAYPOINTS_AND_SIMPLE_NAVIGATION_ONLY","MAV_AUTOPILOT_GENERIC_WAYPOINTS_ONLY","MAV_AUTOPILOT_INVALID","MAV_AUTOPILOT_OPENPILOT","MAV_AUTOPILOT_PPZ","MAV_AUTOPILOT_PX4","MAV_AUTOPILOT_REFLEX","MAV_AUTOPILOT_RESERVED","MAV_AUTOPILOT_SLUGS","MAV_AUTOPILOT_SMACCMPILOT","MAV_AUTOPILOT_SMARTAP","MAV_AUTOPILOT_UDB","MAV_BATTERY_CHARGE_STATE_CHARGING","MAV_BATTERY_CHARGE_STATE_CRITICAL","MAV_BATTERY_CHARGE_STATE_EMERGENCY","MAV_BATTERY_CHARGE_STATE_FAILED","MAV_BATTERY_CHARGE_STATE_LOW","MAV_BATTERY_CHARGE_STATE_OK","MAV_BATTERY_CHARGE_STATE_UNDEFINED","MAV_BATTERY_CHARGE_STATE_UNHEALTHY","MAV_BATTERY_FAULT_CELL_FAIL","MAV_BATTERY_FAULT_DEEP_DISCHARGE","MAV_BATTERY_FAULT_INCOMPATIBLE_FIRMWARE","MAV_BATTERY_FAULT_INCOMPATIBLE_VOLTAGE","MAV_BATTERY_FAULT_OVER_CURRENT","MAV_BATTERY_FAULT_OVER_TEMPERATURE","MAV_BATTERY_FAULT_SPIKES","MAV_BATTERY_FAULT_UNDER_TEMPERATURE","MAV_BATTERY_FUNCTION_ALL","MAV_BATTERY_FUNCTION_AVIONICS","MAV_BATTERY_FUNCTION_PAYLOAD","MAV_BATTERY_FUNCTION_PROPULSION","MAV_BATTERY_FUNCTION_UNKNOWN","MAV_BATTERY_MODE_AUTO_DISCHARGING","MAV_BATTERY_MODE_HOT_SWAP","MAV_BATTERY_MODE_UNKNOWN","MAV_BATTERY_TYPE_LIFE","MAV_BATTERY_TYPE_LION","MAV_BATTERY_TYPE_LIPO","MAV_BATTERY_TYPE_NIMH","MAV_BATTERY_TYPE_UNKNOWN","MAV_CMD_ACK_ERR_ACCESS_DENIED","MAV_CMD_ACK_ERR_COORDINATES_OUT_OF_RANGE","MAV_CMD_ACK_ERR_COORDINATE_FRAME_NOT_SUPPORTED","MAV_CMD_ACK_ERR_FAIL","MAV_CMD_ACK_ERR_NOT_SUPPORTED","MAV_CMD_ACK_ERR_X_LAT_OUT_OF_RANGE","MAV_CMD_ACK_ERR_Y_LON_OUT_OF_RANGE","MAV_CMD_ACK_ERR_Z_ALT_OUT_OF_RANGE","MAV_CMD_ACK_OK","MAV_CMD_ACTUATOR_TEST","MAV_CMD_AIRFRAME_CONFIGURATION","MAV_CMD_ARM_AUTHORIZATION_REQUEST","MAV_CMD_CAMERA_STOP_TRACKING","MAV_CMD_CAMERA_TRACK_POINT","MAV_CMD_CAMERA_TRACK_RECTANGLE","MAV_CMD_CAN_FORWARD","MAV_CMD_COMPONENT_ARM_DISARM","MAV_CMD_CONDITION_CHANGE_ALT","MAV_CMD_CONDITION_DELAY","MAV_CMD_CONDITION_DISTANCE","MAV_CMD_CONDITION_GATE","MAV_CMD_CONDITION_LAST","MAV_CMD_CONDITION_YAW","MAV_CMD_CONFIGURE_ACTUATOR","MAV_CMD_CONTROL_HIGH_LATENCY","MAV_CMD_DO_ADSB_OUT_IDENT","MAV_CMD_DO_AUTOTUNE_ENABLE","MAV_CMD_DO_CHANGE_ALTITUDE","MAV_CMD_DO_CHANGE_SPEED","MAV_CMD_DO_CONTROL_VIDEO","MAV_CMD_DO_DIGICAM_CONFIGURE","MAV_CMD_DO_DIGICAM_CONTROL","MAV_CMD_DO_ENGINE_CONTROL","MAV_CMD_DO_FENCE_ENABLE","MAV_CMD_DO_FLIGHTTERMINATION","MAV_CMD_DO_FOLLOW","MAV_CMD_DO_FOLLOW_REPOSITION","MAV_CMD_DO_GIMBAL_MANAGER_CONFIGURE","MAV_CMD_DO_GIMBAL_MANAGER_PITCHYAW","MAV_CMD_DO_GO_AROUND","MAV_CMD_DO_GRIPPER","MAV_CMD_DO_GUIDED_LIMITS","MAV_CMD_DO_GUIDED_MASTER","MAV_CMD_DO_INVERTED_FLIGHT","MAV_CMD_DO_JUMP","MAV_CMD_DO_JUMP_TAG","MAV_CMD_DO_LAND_START","MAV_CMD_DO_LAST","MAV_CMD_DO_MOTOR_TEST","MAV_CMD_DO_MOUNT_CONFIGURE","MAV_CMD_DO_MOUNT_CONTROL","MAV_CMD_DO_MOUNT_CONTROL_QUAT","MAV_CMD_DO_ORBIT","MAV_CMD_DO_PARACHUTE","MAV_CMD_DO_PAUSE_CONTINUE","MAV_CMD_DO_RALLY_LAND","MAV_CMD_DO_REPEAT_RELAY","MAV_CMD_DO_REPEAT_SERVO","MAV_CMD_DO_REPOSITION","MAV_CMD_DO_SET_ACTUATOR","MAV_CMD_DO_SET_CAM_TRIGG_DIST","MAV_CMD_DO_SET_CAM_TRIGG_INTERVAL","MAV_CMD_DO_SET_HOME","MAV_CMD_DO_SET_MISSION_CURRENT","MAV_CMD_DO_SET_MODE","MAV_CMD_DO_SET_PARAMETER","MAV_CMD_DO_SET_RELAY","MAV_CMD_DO_SET_REVERSE","MAV_CMD_DO_SET_ROI","MAV_CMD_DO_SET_ROI_LOCATION","MAV_CMD_DO_SET_ROI_NONE","MAV_CMD_DO_SET_ROI_SYSID","MAV_CMD_DO_SET_ROI_WPNEXT_OFFSET","MAV_CMD_DO_SET_SERVO","MAV_CMD_DO_TRIGGER_CONTROL","MAV_CMD_DO_VTOL_TRANSITION","MAV_CMD_DO_WINCH","MAV_CMD_FIXED_MAG_CAL_YAW","MAV_CMD_GET_HOME_POSITION","MAV_CMD_GET_MESSAGE_INTERVAL","MAV_CMD_ILLUMINATOR_ON_OFF","MAV_CMD_IMAGE_START_CAPTURE","MAV_CMD_IMAGE_STOP_CAPTURE","MAV_CMD_INJECT_FAILURE","MAV_CMD_JUMP_TAG","MAV_CMD_LOGGING_START","MAV_CMD_LOGGING_STOP","MAV_CMD_MISSION_START","MAV_CMD_NAV_CONTINUE_AND_CHANGE_ALT","MAV_CMD_NAV_DELAY","MAV_CMD_NAV_FENCE_CIRCLE_EXCLUSION","MAV_CMD_NAV_FENCE_CIRCLE_INCLUSION","MAV_CMD_NAV_FENCE_POLYGON_VERTEX_EXCLUSION","MAV_CMD_NAV_FENCE_POLYGON_VERTEX_INCLUSION","MAV_CMD_NAV_FENCE_RETURN_POINT","MAV_CMD_NAV_FOLLOW","MAV_CMD_NAV_GUIDED_ENABLE","MAV_CMD_NAV_LAND","MAV_CMD_NAV_LAND_LOCAL","MAV_CMD_NAV_LAST","MAV_CMD_NAV_LOITER_TIME","MAV_CMD_NAV_LOITER_TO_ALT","MAV_CMD_NAV_LOITER_TURNS","MAV_CMD_NAV_LOITER_UNLIM","MAV_CMD_NAV_PATHPLANNING","MAV_CMD_NAV_PAYLOAD_PLACE","MAV_CMD_NAV_RALLY_POINT","MAV_CMD_NAV_RETURN_TO_LAUNCH","MAV_CMD_NAV_ROI","MAV_CMD_NAV_SET_YAW_SPEED","MAV_CMD_NAV_SPLINE_WAYPOINT","MAV_CMD_NAV_TAKEOFF","MAV_CMD_NAV_TAKEOFF_LOCAL","MAV_CMD_NAV_VTOL_LAND","MAV_CMD_NAV_VTOL_TAKEOFF","MAV_CMD_NAV_WAYPOINT","MAV_CMD_OBLIQUE_SURVEY","MAV_CMD_OVERRIDE_GOTO","MAV_CMD_PANORAMA_CREATE","MAV_CMD_PAYLOAD_CONTROL_DEPLOY","MAV_CMD_PAYLOAD_PREPARE_DEPLOY","MAV_CMD_PREFLIGHT_CALIBRATION","MAV_CMD_PREFLIGHT_REBOOT_SHUTDOWN","MAV_CMD_PREFLIGHT_SET_SENSOR_OFFSETS","MAV_CMD_PREFLIGHT_STORAGE","MAV_CMD_PREFLIGHT_UAVCAN","MAV_CMD_REQUEST_AUTOPILOT_CAPABILITIES","MAV_CMD_REQUEST_CAMERA_CAPTURE_STATUS","MAV_CMD_REQUEST_CAMERA_IMAGE_CAPTURE","MAV_CMD_REQUEST_CAMERA_INFORMATION","MAV_CMD_REQUEST_CAMERA_SETTINGS","MAV_CMD_REQUEST_FLIGHT_INFORMATION","MAV_CMD_REQUEST_MESSAGE","MAV_CMD_REQUEST_PROTOCOL_VERSION","MAV_CMD_REQUEST_STORAGE_INFORMATION","MAV_CMD_REQUEST_VIDEO_STREAM_INFORMATION","MAV_CMD_REQUEST_VIDEO_STREAM_STATUS","MAV_CMD_RESET_CAMERA_SETTINGS","MAV_CMD_RUN_PREARM_CHECKS","MAV_CMD_SET_CAMERA_FOCUS","MAV_CMD_SET_CAMERA_MODE","MAV_CMD_SET_CAMERA_ZOOM","MAV_CMD_SET_GUIDED_SUBMODE_CIRCLE","MAV_CMD_SET_GUIDED_SUBMODE_STANDARD","MAV_CMD_SET_MESSAGE_INTERVAL","MAV_CMD_SET_STORAGE_USAGE","MAV_CMD_SPATIAL_USER_1","MAV_CMD_SPATIAL_USER_2","MAV_CMD_SPATIAL_USER_3","MAV_CMD_SPATIAL_USER_4","MAV_CMD_SPATIAL_USER_5","MAV_CMD_START_RX_PAIR","MAV_CMD_STORAGE_FORMAT","MAV_CMD_UAVCAN_GET_NODE_INFO","MAV_CMD_USER_1","MAV_CMD_USER_2","MAV_CMD_USER_3","MAV_CMD_USER_4","MAV_CMD_USER_5","MAV_CMD_VIDEO_START_CAPTURE","MAV_CMD_VIDEO_START_STREAMING","MAV_CMD_VIDEO_STOP_CAPTURE","MAV_CMD_VIDEO_STOP_STREAMING","MAV_CMD_WAYPOINT_USER_1","MAV_CMD_WAYPOINT_USER_2","MAV_CMD_WAYPOINT_USER_3","MAV_CMD_WAYPOINT_USER_4","MAV_CMD_WAYPOINT_USER_5","MAV_COLLISION_ACTION_ASCEND_OR_DESCEND","MAV_COLLISION_ACTION_HOVER","MAV_COLLISION_ACTION_MOVE_HORIZONTALLY","MAV_COLLISION_ACTION_MOVE_PERPENDICULAR","MAV_COLLISION_ACTION_NONE","MAV_COLLISION_ACTION_REPORT","MAV_COLLISION_ACTION_RTL","MAV_COLLISION_SRC_ADSB","MAV_COLLISION_SRC_MAVLINK_GPS_GLOBAL_INT","MAV_COLLISION_THREAT_LEVEL_HIGH","MAV_COLLISION_THREAT_LEVEL_LOW","MAV_COLLISION_THREAT_LEVEL_NONE","MAV_COMP_ID_ADSB","MAV_COMP_ID_ALL","MAV_COMP_ID_AUTOPILOT1","MAV_COMP_ID_BATTERY","MAV_COMP_ID_BATTERY2","MAV_COMP_ID_CAMERA","MAV_COMP_ID_CAMERA2","MAV_COMP_ID_CAMERA3","MAV_COMP_ID_CAMERA4","MAV_COMP_ID_CAMERA5","MAV_COMP_ID_CAMERA6","MAV_COMP_ID_FLARM","MAV_COMP_ID_GIMBAL","MAV_COMP_ID_GIMBAL2","MAV_COMP_ID_GIMBAL3","MAV_COMP_ID_GIMBAL4","MAV_COMP_ID_GIMBAL5","MAV_COMP_ID_GIMBAL6","MAV_COMP_ID_GPS","MAV_COMP_ID_GPS2","MAV_COMP_ID_IMU","MAV_COMP_ID_IMU_2","MAV_COMP_ID_IMU_3","MAV_COMP_ID_LOG","MAV_COMP_ID_MAVCAN","MAV_COMP_ID_MISSIONPLANNER","MAV_COMP_ID_OBSTACLE_AVOIDANCE","MAV_COMP_ID_ODID_TXRX_1","MAV_COMP_ID_ODID_TXRX_2","MAV_COMP_ID_ODID_TXRX_3","MAV_COMP_ID_ONBOARD_COMPUTER","MAV_COMP_ID_ONBOARD_COMPUTER2","MAV_COMP_ID_ONBOARD_COMPUTER3","MAV_COMP_ID_ONBOARD_COMPUTER4","MAV_COMP_ID_OSD","MAV_COMP_ID_PAIRING_MANAGER","MAV_COMP_ID_PARACHUTE","MAV_COMP_ID_PATHPLANNER","MAV_COMP_ID_PERIPHERAL","MAV_COMP_ID_QX1_GIMBAL","MAV_COMP_ID_SERVO1","MAV_COMP_ID_SERVO10","MAV_COMP_ID_SERVO11","MAV_COMP_ID_SERVO12","MAV_COMP_ID_SERVO13","MAV_COMP_ID_SERVO14","MAV_COMP_ID_SERVO2","MAV_COMP_ID_SERVO3","MAV_COMP_ID_SERVO4","MAV_COMP_ID_SERVO5","MAV_COMP_ID_SERVO6","MAV_COMP_ID_SERVO7","MAV_COMP_ID_SERVO8","MAV_COMP_ID_SERVO9","MAV_COMP_ID_SYSTEM_CONTROL","MAV_COMP_ID_TELEMETRY_RADIO","MAV_COMP_ID_TUNNEL_NODE","MAV_COMP_ID_UART_BRIDGE","MAV_COMP_ID_UDP_BRIDGE","MAV_COMP_ID_USER1","MAV_COMP_ID_USER10","MAV_COMP_ID_USER11","MAV_COMP_ID_USER12","MAV_COMP_ID_USER13","MAV_COMP_ID_USER14","MAV_COMP_ID_USER15","MAV_COMP_ID_USER16","MAV_COMP_ID_USER17","MAV_COMP_ID_USER18","MAV_COMP_ID_USER19","MAV_COMP_ID_USER2","MAV_COMP_ID_USER20","MAV_COMP_ID_USER21","MAV_COMP_ID_USER22","MAV_COMP_ID_USER23","MAV_COMP_ID_USER24","MAV_COMP_ID_USER25","MAV_COMP_ID_USER26","MAV_COMP_ID_USER27","MAV_COMP_ID_USER28","MAV_COMP_ID_USER29","MAV_COMP_ID_USER3","MAV_COMP_ID_USER30","MAV_COMP_ID_USER31","MAV_COMP_ID_USER32","MAV_COMP_ID_USER33","MAV_COMP_ID_USER34","MAV_COMP_ID_USER35","MAV_COMP_ID_USER36","MAV_COMP_ID_USER37","MAV_COMP_ID_USER38","MAV_COMP_ID_USER39","MAV_COMP_ID_USER4","MAV_COMP_ID_USER40","MAV_COMP_ID_USER41","MAV_COMP_ID_USER42","MAV_COMP_ID_USER43","MAV_COMP_ID_USER45","MAV_COMP_ID_USER46","MAV_COMP_ID_USER47","MAV_COMP_ID_USER48","MAV_COMP_ID_USER49","MAV_COMP_ID_USER5","MAV_COMP_ID_USER50","MAV_COMP_ID_USER51","MAV_COMP_ID_USER52","MAV_COMP_ID_USER53","MAV_COMP_ID_USER54","MAV_COMP_ID_USER55","MAV_COMP_ID_USER56","MAV_COMP_ID_USER57","MAV_COMP_ID_USER58","MAV_COMP_ID_USER59","MAV_COMP_ID_USER6","MAV_COMP_ID_USER60","MAV_COMP_ID_USER61","MAV_COMP_ID_USER62","MAV_COMP_ID_USER63","MAV_COMP_ID_USER64","MAV_COMP_ID_USER65","MAV_COMP_ID_USER66","MAV_COMP_ID_USER67","MAV_COMP_ID_USER68","MAV_COMP_ID_USER69","MAV_COMP_ID_USER7","MAV_COMP_ID_USER70","MAV_COMP_ID_USER71","MAV_COMP_ID_USER72","MAV_COMP_ID_USER73","MAV_COMP_ID_USER74","MAV_COMP_ID_USER75","MAV_COMP_ID_USER8","MAV_COMP_ID_USER9","MAV_COMP_ID_VISUAL_INERTIAL_ODOMETRY","MAV_COMP_ID_WINCH","MAV_DATA_STREAM_ALL","MAV_DATA_STREAM_EXTENDED_STATUS","MAV_DATA_STREAM_EXTRA1","MAV_DATA_STREAM_EXTRA2","MAV_DATA_STREAM_EXTRA3","MAV_DATA_STREAM_POSITION","MAV_DATA_STREAM_RAW_CONTROLLER","MAV_DATA_STREAM_RAW_SENSORS","MAV_DATA_STREAM_RC_CHANNELS","MAV_DISTANCE_SENSOR_INFRARED","MAV_DISTANCE_SENSOR_LASER","MAV_DISTANCE_SENSOR_RADAR","MAV_DISTANCE_SENSOR_ULTRASOUND","MAV_DISTANCE_SENSOR_UNKNOWN","MAV_DO_REPOSITION_FLAGS_CHANGE_MODE","MAV_ESTIMATOR_TYPE_AUTOPILOT","MAV_ESTIMATOR_TYPE_GPS","MAV_ESTIMATOR_TYPE_GPS_INS","MAV_ESTIMATOR_TYPE_LIDAR","MAV_ESTIMATOR_TYPE_MOCAP","MAV_ESTIMATOR_TYPE_NAIVE","MAV_ESTIMATOR_TYPE_UNKNOWN","MAV_ESTIMATOR_TYPE_VIO","MAV_ESTIMATOR_TYPE_VISION","MAV_EVENT_CURRENT_SEQUENCE_FLAGS_RESET","MAV_EVENT_ERROR_REASON_UNAVAILABLE","MAV_FRAME_BODY_FRD","MAV_FRAME_BODY_NED","MAV_FRAME_BODY_OFFSET_NED","MAV_FRAME_GLOBAL","MAV_FRAME_GLOBAL_INT","MAV_FRAME_GLOBAL_RELATIVE_ALT","MAV_FRAME_GLOBAL_RELATIVE_ALT_INT","MAV_FRAME_GLOBAL_TERRAIN_ALT","MAV_FRAME_GLOBAL_TERRAIN_ALT_INT","MAV_FRAME_LOCAL_ENU","MAV_FRAME_LOCAL_FLU","MAV_FRAME_LOCAL_FRD","MAV_FRAME_LOCAL_NED","MAV_FRAME_LOCAL_OFFSET_NED","MAV_FRAME_MISSION","MAV_FRAME_RESERVED_13","MAV_FRAME_RESERVED_14","MAV_FRAME_RESERVED_15","MAV_FRAME_RESERVED_16","MAV_FRAME_RESERVED_17","MAV_FRAME_RESERVED_18","MAV_FRAME_RESERVED_19","MAV_FTP_ERR_EOF","MAV_FTP_ERR_FAIL","MAV_FTP_ERR_FAILERRNO","MAV_FTP_ERR_FILEEXISTS","MAV_FTP_ERR_FILENOTFOUND","MAV_FTP_ERR_FILEPROTECTED","MAV_FTP_ERR_INVALIDDATASIZE","MAV_FTP_ERR_INVALIDSESSION","MAV_FTP_ERR_NONE","MAV_FTP_ERR_NOSESSIONSAVAILABLE","MAV_FTP_ERR_UNKNOWNCOMMAND","MAV_FTP_OPCODE_ACK","MAV_FTP_OPCODE_BURSTREADFILE","MAV_FTP_OPCODE_CALCFILECRC","MAV_FTP_OPCODE_CREATEDIRECTORY","MAV_FTP_OPCODE_CREATEFILE","MAV_FTP_OPCODE_LISTDIRECTORY","MAV_FTP_OPCODE_NAK","MAV_FTP_OPCODE_NONE","MAV_FTP_OPCODE_OPENFILERO","MAV_FTP_OPCODE_OPENFILEWO","MAV_FTP_OPCODE_READFILE","MAV_FTP_OPCODE_REMOVEDIRECTORY","MAV_FTP_OPCODE_REMOVEFILE","MAV_FTP_OPCODE_RENAME","MAV_FTP_OPCODE_RESETSESSION","MAV_FTP_OPCODE_TERMINATESESSION","MAV_FTP_OPCODE_TRUNCATEFILE","MAV_FTP_OPCODE_WRITEFILE","MAV_GENERATOR_STATUS_FLAG_BATTERY_OVERCHARGE_CURRENT_FAULT","MAV_GENERATOR_STATUS_FLAG_BATTERY_UNDERVOLT_FAULT","MAV_GENERATOR_STATUS_FLAG_CHARGING","MAV_GENERATOR_STATUS_FLAG_COMMUNICATION_WARNING","MAV_GENERATOR_STATUS_FLAG_COOLING_WARNING","MAV_GENERATOR_STATUS_FLAG_ELECTRONICS_FAULT","MAV_GENERATOR_STATUS_FLAG_ELECTRONICS_OVERTEMP_FAULT","MAV_GENERATOR_STATUS_FLAG_ELECTRONICS_OVERTEMP_WARNING","MAV_GENERATOR_STATUS_FLAG_GENERATING","MAV_GENERATOR_STATUS_FLAG_IDLE","MAV_GENERATOR_STATUS_FLAG_MAINTENANCE_REQUIRED","MAV_GENERATOR_STATUS_FLAG_MAXPOWER","MAV_GENERATOR_STATUS_FLAG_OFF","MAV_GENERATOR_STATUS_FLAG_OVERCURRENT_FAULT","MAV_GENERATOR_STATUS_FLAG_OVERTEMP_FAULT","MAV_GENERATOR_STATUS_FLAG_OVERTEMP_WARNING","MAV_GENERATOR_STATUS_FLAG_OVERVOLTAGE_FAULT","MAV_GENERATOR_STATUS_FLAG_POWERSOURCE_FAULT","MAV_GENERATOR_STATUS_FLAG_POWER_RAIL_FAULT","MAV_GENERATOR_STATUS_FLAG_READY","MAV_GENERATOR_STATUS_FLAG_REDUCED_POWER","MAV_GENERATOR_STATUS_FLAG_START_INHIBITED","MAV_GENERATOR_STATUS_FLAG_WARMING_UP","MAV_GOTO_DO_CONTINUE","MAV_GOTO_DO_HOLD","MAV_GOTO_HOLD_AT_CURRENT_POSITION","MAV_GOTO_HOLD_AT_SPECIFIED_POSITION","MAV_LANDED_STATE_IN_AIR","MAV_LANDED_STATE_LANDING","MAV_LANDED_STATE_ON_GROUND","MAV_LANDED_STATE_TAKEOFF","MAV_LANDED_STATE_UNDEFINED","MAV_MISSION_ACCEPTED","MAV_MISSION_DENIED","MAV_MISSION_ERROR","MAV_MISSION_INVALID","MAV_MISSION_INVALID_PARAM1","MAV_MISSION_INVALID_PARAM2","MAV_MISSION_INVALID_PARAM3","MAV_MISSION_INVALID_PARAM4","MAV_MISSION_INVALID_PARAM5_X","MAV_MISSION_INVALID_PARAM6_Y","MAV_MISSION_INVALID_PARAM7","MAV_MISSION_INVALID_SEQUENCE","MAV_MISSION_NO_SPACE","MAV_MISSION_OPERATION_CANCELLED","MAV_MISSION_TYPE_ALL","MAV_MISSION_TYPE_FENCE","MAV_MISSION_TYPE_MISSION","MAV_MISSION_TYPE_RALLY","MAV_MISSION_UNSUPPORTED","MAV_MISSION_UNSUPPORTED_FRAME","MAV_MODE_AUTO_ARMED","MAV_MODE_AUTO_DISARMED","MAV_MODE_FLAG_AUTO_ENABLED","MAV_MODE_FLAG_CUSTOM_MODE_ENABLED","MAV_MODE_FLAG_DECODE_POSITION_AUTO","MAV_MODE_FLAG_DECODE_POSITION_CUSTOM_MODE","MAV_MODE_FLAG_DECODE_POSITION_GUIDED","MAV_MODE_FLAG_DECODE_POSITION_HIL","MAV_MODE_FLAG_DECODE_POSITION_MANUAL","MAV_MODE_FLAG_DECODE_POSITION_SAFETY","MAV_MODE_FLAG_DECODE_POSITION_STABILIZE","MAV_MODE_FLAG_DECODE_POSITION_TEST","MAV_MODE_FLAG_GUIDED_ENABLED","MAV_MODE_FLAG_HIL_ENABLED","MAV_MODE_FLAG_MANUAL_INPUT_ENABLED","MAV_MODE_FLAG_SAFETY_ARMED","MAV_MODE_FLAG_STABILIZE_ENABLED","MAV_MODE_FLAG_TEST_ENABLED","MAV_MODE_GUIDED_ARMED","MAV_MODE_GUIDED_DISARMED","MAV_MODE_MANUAL_ARMED","MAV_MODE_MANUAL_DISARMED","MAV_MODE_PREFLIGHT","MAV_MODE_STABILIZE_ARMED","MAV_MODE_STABILIZE_DISARMED","MAV_MODE_TEST_ARMED","MAV_MODE_TEST_DISARMED","MAV_MOUNT_MODE_GPS_POINT","MAV_MOUNT_MODE_HOME_LOCATION","MAV_MOUNT_MODE_MAVLINK_TARGETING","MAV_MOUNT_MODE_NEUTRAL","MAV_MOUNT_MODE_RC_TARGETING","MAV_MOUNT_MODE_RETRACT","MAV_MOUNT_MODE_SYSID_TARGET","MAV_ODID_ARM_STATUS_GOOD_TO_ARM","MAV_ODID_ARM_STATUS_PRE_ARM_FAIL_GENERIC","MAV_ODID_AUTH_TYPE_MESSAGE_SET_SIGNATURE","MAV_ODID_AUTH_TYPE_NETWORK_REMOTE_ID","MAV_ODID_AUTH_TYPE_NONE","MAV_ODID_AUTH_TYPE_OPERATOR_ID_SIGNATURE","MAV_ODID_AUTH_TYPE_SPECIFIC_AUTHENTICATION","MAV_ODID_AUTH_TYPE_UAS_ID_SIGNATURE","MAV_ODID_CATEGORY_EU_CERTIFIED","MAV_ODID_CATEGORY_EU_OPEN","MAV_ODID_CATEGORY_EU_SPECIFIC","MAV_ODID_CATEGORY_EU_UNDECLARED","MAV_ODID_CLASSIFICATION_TYPE_EU","MAV_ODID_CLASSIFICATION_TYPE_UNDECLARED","MAV_ODID_CLASS_EU_CLASS_0","MAV_ODID_CLASS_EU_CLASS_1","MAV_ODID_CLASS_EU_CLASS_2","MAV_ODID_CLASS_EU_CLASS_3","MAV_ODID_CLASS_EU_CLASS_4","MAV_ODID_CLASS_EU_CLASS_5","MAV_ODID_CLASS_EU_CLASS_6","MAV_ODID_CLASS_EU_UNDECLARED","MAV_ODID_DESC_TYPE_EMERGENCY","MAV_ODID_DESC_TYPE_EXTENDED_STATUS","MAV_ODID_DESC_TYPE_TEXT","MAV_ODID_HEIGHT_REF_OVER_GROUND","MAV_ODID_HEIGHT_REF_OVER_TAKEOFF","MAV_ODID_HOR_ACC_0_05NM","MAV_ODID_HOR_ACC_0_1NM","MAV_ODID_HOR_ACC_0_3NM","MAV_ODID_HOR_ACC_0_5NM","MAV_ODID_HOR_ACC_10NM","MAV_ODID_HOR_ACC_10_METER","MAV_ODID_HOR_ACC_1NM","MAV_ODID_HOR_ACC_1_METER","MAV_ODID_HOR_ACC_2NM","MAV_ODID_HOR_ACC_30_METER","MAV_ODID_HOR_ACC_3_METER","MAV_ODID_HOR_ACC_4NM","MAV_ODID_HOR_ACC_UNKNOWN","MAV_ODID_ID_TYPE_CAA_REGISTRATION_ID","MAV_ODID_ID_TYPE_NONE","MAV_ODID_ID_TYPE_SERIAL_NUMBER","MAV_ODID_ID_TYPE_SPECIFIC_SESSION_ID","MAV_ODID_ID_TYPE_UTM_ASSIGNED_UUID","MAV_ODID_OPERATOR_ID_TYPE_CAA","MAV_ODID_OPERATOR_LOCATION_TYPE_FIXED","MAV_ODID_OPERATOR_LOCATION_TYPE_LIVE_GNSS","MAV_ODID_OPERATOR_LOCATION_TYPE_TAKEOFF","MAV_ODID_SPEED_ACC_0_3_METERS_PER_SECOND","MAV_ODID_SPEED_ACC_10_METERS_PER_SECOND","MAV_ODID_SPEED_ACC_1_METERS_PER_SECOND","MAV_ODID_SPEED_ACC_3_METERS_PER_SECOND","MAV_ODID_SPEED_ACC_UNKNOWN","MAV_ODID_STATUS_AIRBORNE","MAV_ODID_STATUS_EMERGENCY","MAV_ODID_STATUS_GROUND","MAV_ODID_STATUS_REMOTE_ID_SYSTEM_FAILURE","MAV_ODID_STATUS_UNDECLARED","MAV_ODID_TIME_ACC_0_1_SECOND","MAV_ODID_TIME_ACC_0_2_SECOND","MAV_ODID_TIME_ACC_0_3_SECOND","MAV_ODID_TIME_ACC_0_4_SECOND","MAV_ODID_TIME_ACC_0_5_SECOND","MAV_ODID_TIME_ACC_0_6_SECOND","MAV_ODID_TIME_ACC_0_7_SECOND","MAV_ODID_TIME_ACC_0_8_SECOND","MAV_ODID_TIME_ACC_0_9_SECOND","MAV_ODID_TIME_ACC_1_0_SECOND","MAV_ODID_TIME_ACC_1_1_SECOND","MAV_ODID_TIME_ACC_1_2_SECOND","MAV_ODID_TIME_ACC_1_3_SECOND","MAV_ODID_TIME_ACC_1_4_SECOND","MAV_ODID_TIME_ACC_1_5_SECOND","MAV_ODID_TIME_ACC_UNKNOWN","MAV_ODID_UA_TYPE_AEROPLANE","MAV_ODID_UA_TYPE_AIRSHIP","MAV_ODID_UA_TYPE_CAPTIVE_BALLOON","MAV_ODID_UA_TYPE_FREE_BALLOON","MAV_ODID_UA_TYPE_FREE_FALL_PARACHUTE","MAV_ODID_UA_TYPE_GLIDER","MAV_ODID_UA_TYPE_GROUND_OBSTACLE","MAV_ODID_UA_TYPE_GYROPLANE","MAV_ODID_UA_TYPE_HELICOPTER_OR_MULTIROTOR","MAV_ODID_UA_TYPE_HYBRID_LIFT","MAV_ODID_UA_TYPE_KITE","MAV_ODID_UA_TYPE_NONE","MAV_ODID_UA_TYPE_ORNITHOPTER","MAV_ODID_UA_TYPE_OTHER","MAV_ODID_UA_TYPE_ROCKET","MAV_ODID_UA_TYPE_TETHERED_POWERED_AIRCRAFT","MAV_ODID_VER_ACC_10_METER","MAV_ODID_VER_ACC_150_METER","MAV_ODID_VER_ACC_1_METER","MAV_ODID_VER_ACC_25_METER","MAV_ODID_VER_ACC_3_METER","MAV_ODID_VER_ACC_45_METER","MAV_ODID_VER_ACC_UNKNOWN","MAV_PARAM_EXT_TYPE_CUSTOM","MAV_PARAM_EXT_TYPE_INT16","MAV_PARAM_EXT_TYPE_INT32","MAV_PARAM_EXT_TYPE_INT64","MAV_PARAM_EXT_TYPE_INT8","MAV_PARAM_EXT_TYPE_REAL32","MAV_PARAM_EXT_TYPE_REAL64","MAV_PARAM_EXT_TYPE_UINT16","MAV_PARAM_EXT_TYPE_UINT32","MAV_PARAM_EXT_TYPE_UINT64","MAV_PARAM_EXT_TYPE_UINT8","MAV_PARAM_TYPE_INT16","MAV_PARAM_TYPE_INT32","MAV_PARAM_TYPE_INT64","MAV_PARAM_TYPE_INT8","MAV_PARAM_TYPE_REAL32","MAV_PARAM_TYPE_REAL64","MAV_PARAM_TYPE_UINT16","MAV_PARAM_TYPE_UINT32","MAV_PARAM_TYPE_UINT64","MAV_PARAM_TYPE_UINT8","MAV_POWER_STATUS_BRICK_VALID","MAV_POWER_STATUS_CHANGED","MAV_POWER_STATUS_PERIPH_HIPOWER_OVERCURRENT","MAV_POWER_STATUS_PERIPH_OVERCURRENT","MAV_POWER_STATUS_SERVO_VALID","MAV_POWER_STATUS_USB_CONNECTED","MAV_PROTOCOL_CAPABILITY_COMMAND_INT","MAV_PROTOCOL_CAPABILITY_COMPASS_CALIBRATION","MAV_PROTOCOL_CAPABILITY_FLIGHT_TERMINATION","MAV_PROTOCOL_CAPABILITY_FTP","MAV_PROTOCOL_CAPABILITY_MAVLINK2","MAV_PROTOCOL_CAPABILITY_MISSION_FENCE","MAV_PROTOCOL_CAPABILITY_MISSION_FLOAT","MAV_PROTOCOL_CAPABILITY_MISSION_INT","MAV_PROTOCOL_CAPABILITY_MISSION_RALLY","MAV_PROTOCOL_CAPABILITY_PARAM_ENCODE_BYTEWISE","MAV_PROTOCOL_CAPABILITY_PARAM_ENCODE_C_CAST","MAV_PROTOCOL_CAPABILITY_PARAM_FLOAT","MAV_PROTOCOL_CAPABILITY_RESERVED2","MAV_PROTOCOL_CAPABILITY_SET_ACTUATOR_TARGET","MAV_PROTOCOL_CAPABILITY_SET_ATTITUDE_TARGET","MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_GLOBAL_INT","MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_LOCAL_NED","MAV_PROTOCOL_CAPABILITY_TERRAIN","MAV_RESULT_ACCEPTED","MAV_RESULT_CANCELLED","MAV_RESULT_DENIED","MAV_RESULT_FAILED","MAV_RESULT_IN_PROGRESS","MAV_RESULT_TEMPORARILY_REJECTED","MAV_RESULT_UNSUPPORTED","MAV_ROI_LOCATION","MAV_ROI_NONE","MAV_ROI_TARGET","MAV_ROI_WPINDEX","MAV_ROI_WPNEXT","MAV_SENSOR_ROTATION_CUSTOM","MAV_SENSOR_ROTATION_NONE","MAV_SENSOR_ROTATION_PITCH_180","MAV_SENSOR_ROTATION_PITCH_180_YAW_270","MAV_SENSOR_ROTATION_PITCH_180_YAW_90","MAV_SENSOR_ROTATION_PITCH_270","MAV_SENSOR_ROTATION_PITCH_315","MAV_SENSOR_ROTATION_PITCH_90","MAV_SENSOR_ROTATION_ROLL_180","MAV_SENSOR_ROTATION_ROLL_180_PITCH_270","MAV_SENSOR_ROTATION_ROLL_180_PITCH_90","MAV_SENSOR_ROTATION_ROLL_180_YAW_135","MAV_SENSOR_ROTATION_ROLL_180_YAW_225","MAV_SENSOR_ROTATION_ROLL_180_YAW_270","MAV_SENSOR_ROTATION_ROLL_180_YAW_315","MAV_SENSOR_ROTATION_ROLL_180_YAW_45","MAV_SENSOR_ROTATION_ROLL_180_YAW_90","MAV_SENSOR_ROTATION_ROLL_270","MAV_SENSOR_ROTATION_ROLL_270_PITCH_180","MAV_SENSOR_ROTATION_ROLL_270_PITCH_270","MAV_SENSOR_ROTATION_ROLL_270_PITCH_90","MAV_SENSOR_ROTATION_ROLL_270_YAW_135","MAV_SENSOR_ROTATION_ROLL_270_YAW_45","MAV_SENSOR_ROTATION_ROLL_270_YAW_90","MAV_SENSOR_ROTATION_ROLL_90","MAV_SENSOR_ROTATION_ROLL_90_PITCH_180","MAV_SENSOR_ROTATION_ROLL_90_PITCH_180_YAW_90","MAV_SENSOR_ROTATION_ROLL_90_PITCH_270","MAV_SENSOR_ROTATION_ROLL_90_PITCH_315","MAV_SENSOR_ROTATION_ROLL_90_PITCH_68_YAW_293","MAV_SENSOR_ROTATION_ROLL_90_PITCH_90","MAV_SENSOR_ROTATION_ROLL_90_YAW_135","MAV_SENSOR_ROTATION_ROLL_90_YAW_270","MAV_SENSOR_ROTATION_ROLL_90_YAW_45","MAV_SENSOR_ROTATION_ROLL_90_YAW_90","MAV_SENSOR_ROTATION_YAW_135","MAV_SENSOR_ROTATION_YAW_180","MAV_SENSOR_ROTATION_YAW_225","MAV_SENSOR_ROTATION_YAW_270","MAV_SENSOR_ROTATION_YAW_315","MAV_SENSOR_ROTATION_YAW_45","MAV_SENSOR_ROTATION_YAW_90","MAV_SEVERITY_ALERT","MAV_SEVERITY_CRITICAL","MAV_SEVERITY_DEBUG","MAV_SEVERITY_EMERGENCY","MAV_SEVERITY_ERROR","MAV_SEVERITY_INFO","MAV_SEVERITY_NOTICE","MAV_SEVERITY_WARNING","MAV_STATE_ACTIVE","MAV_STATE_BOOT","MAV_STATE_CALIBRATING","MAV_STATE_CRITICAL","MAV_STATE_EMERGENCY","MAV_STATE_FLIGHT_TERMINATION","MAV_STATE_POWEROFF","MAV_STATE_STANDBY","MAV_STATE_UNINIT","MAV_SYS_STATUS_AHRS","MAV_SYS_STATUS_EXTENSION_USED","MAV_SYS_STATUS_GEOFENCE","MAV_SYS_STATUS_LOGGING","MAV_SYS_STATUS_OBSTACLE_AVOIDANCE","MAV_SYS_STATUS_PREARM_CHECK","MAV_SYS_STATUS_RECOVERY_SYSTEM","MAV_SYS_STATUS_REVERSE_MOTOR","MAV_SYS_STATUS_SENSOR_3D_ACCEL","MAV_SYS_STATUS_SENSOR_3D_ACCEL2","MAV_SYS_STATUS_SENSOR_3D_GYRO","MAV_SYS_STATUS_SENSOR_3D_GYRO2","MAV_SYS_STATUS_SENSOR_3D_MAG","MAV_SYS_STATUS_SENSOR_3D_MAG2","MAV_SYS_STATUS_SENSOR_ABSOLUTE_PRESSURE","MAV_SYS_STATUS_SENSOR_ANGULAR_RATE_CONTROL","MAV_SYS_STATUS_SENSOR_ATTITUDE_STABILIZATION","MAV_SYS_STATUS_SENSOR_BATTERY","MAV_SYS_STATUS_SENSOR_DIFFERENTIAL_PRESSURE","MAV_SYS_STATUS_SENSOR_EXTERNAL_GROUND_TRUTH","MAV_SYS_STATUS_SENSOR_GPS","MAV_SYS_STATUS_SENSOR_LASER_POSITION","MAV_SYS_STATUS_SENSOR_MOTOR_OUTPUTS","MAV_SYS_STATUS_SENSOR_OPTICAL_FLOW","MAV_SYS_STATUS_SENSOR_PROPULSION","MAV_SYS_STATUS_SENSOR_PROXIMITY","MAV_SYS_STATUS_SENSOR_RC_RECEIVER","MAV_SYS_STATUS_SENSOR_SATCOM","MAV_SYS_STATUS_SENSOR_VISION_POSITION","MAV_SYS_STATUS_SENSOR_XY_POSITION_CONTROL","MAV_SYS_STATUS_SENSOR_YAW_POSITION","MAV_SYS_STATUS_SENSOR_Z_ALTITUDE_CONTROL","MAV_SYS_STATUS_TERRAIN","MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED0","MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED1","MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED2","MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED3","MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED4","MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED5","MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED6","MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED7","MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED8","MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED9","MAV_TUNNEL_PAYLOAD_TYPE_UNKNOWN","MAV_TYPE_ADSB","MAV_TYPE_AIRSHIP","MAV_TYPE_ANTENNA_TRACKER","MAV_TYPE_BATTERY","MAV_TYPE_CAMERA","MAV_TYPE_CHARGING_STATION","MAV_TYPE_COAXIAL","MAV_TYPE_DECAROTOR","MAV_TYPE_DODECAROTOR","MAV_TYPE_FIXED_WING","MAV_TYPE_FLAPPING_WING","MAV_TYPE_FLARM","MAV_TYPE_FREE_BALLOON","MAV_TYPE_GCS","MAV_TYPE_GENERIC","MAV_TYPE_GIMBAL","MAV_TYPE_GPS","MAV_TYPE_GROUND_ROVER","MAV_TYPE_HELICOPTER","MAV_TYPE_HEXAROTOR","MAV_TYPE_IMU","MAV_TYPE_KITE","MAV_TYPE_LOG","MAV_TYPE_OCTOROTOR","MAV_TYPE_ODID","MAV_TYPE_ONBOARD_CONTROLLER","MAV_TYPE_OSD","MAV_TYPE_PARACHUTE","MAV_TYPE_PARAFOIL","MAV_TYPE_QUADROTOR","MAV_TYPE_ROCKET","MAV_TYPE_SERVO","MAV_TYPE_SUBMARINE","MAV_TYPE_SURFACE_BOAT","MAV_TYPE_TRICOPTER","MAV_TYPE_VTOL_FIXEDROTOR","MAV_TYPE_VTOL_RESERVED5","MAV_TYPE_VTOL_TAILSITTER","MAV_TYPE_VTOL_TAILSITTER_DUOROTOR","MAV_TYPE_VTOL_TAILSITTER_QUADROTOR","MAV_TYPE_VTOL_TILTROTOR","MAV_TYPE_VTOL_TILTWING","MAV_TYPE_WINCH","MAV_VTOL_STATE_FW","MAV_VTOL_STATE_MC","MAV_VTOL_STATE_TRANSITION_TO_FW","MAV_VTOL_STATE_TRANSITION_TO_MC","MAV_VTOL_STATE_UNDEFINED","MAV_WINCH_STATUS_ABANDON_LINE","MAV_WINCH_STATUS_ARRESTING","MAV_WINCH_STATUS_CLUTCH_ENGAGED","MAV_WINCH_STATUS_DROPPING","MAV_WINCH_STATUS_FULLY_RETRACTED","MAV_WINCH_STATUS_GROUND_SENSE","MAV_WINCH_STATUS_HEALTHY","MAV_WINCH_STATUS_LOAD_LINE","MAV_WINCH_STATUS_LOAD_PAYLOAD","MAV_WINCH_STATUS_LOCKED","MAV_WINCH_STATUS_LOCKING","MAV_WINCH_STATUS_MOVING","MAV_WINCH_STATUS_REDELIVER","MAV_WINCH_STATUS_RETRACTING","MEMORY_VECT","MEMORY_VECT_DATA","MESSAGE_INTERVAL","MESSAGE_INTERVAL_DATA","MISSION_ACK","MISSION_ACK_DATA","MISSION_CLEAR_ALL","MISSION_CLEAR_ALL_DATA","MISSION_COUNT","MISSION_COUNT_DATA","MISSION_CURRENT","MISSION_CURRENT_DATA","MISSION_ITEM","MISSION_ITEM_DATA","MISSION_ITEM_INT","MISSION_ITEM_INT_DATA","MISSION_ITEM_REACHED","MISSION_ITEM_REACHED_DATA","MISSION_READ_PERSISTENT","MISSION_REQUEST","MISSION_REQUEST_DATA","MISSION_REQUEST_INT","MISSION_REQUEST_INT_DATA","MISSION_REQUEST_LIST","MISSION_REQUEST_LIST_DATA","MISSION_REQUEST_PARTIAL_LIST","MISSION_REQUEST_PARTIAL_LIST_DATA","MISSION_RESET_DEFAULT","MISSION_SET_CURRENT","MISSION_SET_CURRENT_DATA","MISSION_STATE_ACTIVE","MISSION_STATE_COMPLETE","MISSION_STATE_NOT_STARTED","MISSION_STATE_NO_MISSION","MISSION_STATE_PAUSED","MISSION_STATE_UNKNOWN","MISSION_WRITE_PARTIAL_LIST","MISSION_WRITE_PARTIAL_LIST_DATA","MISSION_WRITE_PERSISTENT","MMSI","MOTOR_TEST_COMPASS_CAL","MOTOR_TEST_ORDER_BOARD","MOTOR_TEST_ORDER_DEFAULT","MOTOR_TEST_ORDER_SEQUENCE","MOTOR_TEST_THROTTLE_PERCENT","MOTOR_TEST_THROTTLE_PILOT","MOTOR_TEST_THROTTLE_PWM","MOUNT_ORIENTATION","MOUNT_ORIENTATION_DATA","MagCalStatus","MavArmAuthDeniedReason","MavAutopilot","MavBatteryChargeState","MavBatteryFault","MavBatteryFunction","MavBatteryMode","MavBatteryType","MavCmd","MavCmdAck","MavCollisionAction","MavCollisionSrc","MavCollisionThreatLevel","MavComponent","MavDataStream","MavDistanceSensor","MavDoRepositionFlags","MavEstimatorType","MavEventCurrentSequenceFlags","MavEventErrorReason","MavFrame","MavFtpErr","MavFtpOpcode","MavGeneratorStatusFlag","MavGoto","MavLandedState","MavMessage","MavMissionResult","MavMissionType","MavMode","MavModeFlag","MavModeFlagDecodePosition","MavMountMode","MavOdidArmStatus","MavOdidAuthType","MavOdidCategoryEu","MavOdidClassEu","MavOdidClassificationType","MavOdidDescType","MavOdidHeightRef","MavOdidHorAcc","MavOdidIdType","MavOdidOperatorIdType","MavOdidOperatorLocationType","MavOdidSpeedAcc","MavOdidStatus","MavOdidTimeAcc","MavOdidUaType","MavOdidVerAcc","MavParamExtType","MavParamType","MavPowerStatus","MavProtocolCapability","MavResult","MavRoi","MavSensorOrientation","MavSeverity","MavState","MavSysStatusSensor","MavSysStatusSensorExtended","MavTunnelPayloadType","MavType","MavVtolState","MavWinchStatusFlag","MavlinkDataStreamType","MissionState","MotorTestOrder","MotorTestThrottleType","NAMED_VALUE_FLOAT","NAMED_VALUE_FLOAT_DATA","NAMED_VALUE_INT","NAMED_VALUE_INT_DATA","NAV_CONTROLLER_OUTPUT","NAV_CONTROLLER_OUTPUT_DATA","NAV_VTOL_LAND_OPTIONS_DEFAULT","NAV_VTOL_LAND_OPTIONS_FW_DESCENT","NAV_VTOL_LAND_OPTIONS_HOVER_DESCENT","NavVtolLandOptions","OBSTACLE_DISTANCE","OBSTACLE_DISTANCE_DATA","ODOMETRY","ODOMETRY_DATA","ONBOARD_COMPUTER_STATUS","ONBOARD_COMPUTER_STATUS_DATA","OPEN_DRONE_ID_ARM_STATUS","OPEN_DRONE_ID_ARM_STATUS_DATA","OPEN_DRONE_ID_AUTHENTICATION","OPEN_DRONE_ID_AUTHENTICATION_DATA","OPEN_DRONE_ID_BASIC_ID","OPEN_DRONE_ID_BASIC_ID_DATA","OPEN_DRONE_ID_LOCATION","OPEN_DRONE_ID_LOCATION_DATA","OPEN_DRONE_ID_MESSAGE_PACK","OPEN_DRONE_ID_MESSAGE_PACK_DATA","OPEN_DRONE_ID_OPERATOR_ID","OPEN_DRONE_ID_OPERATOR_ID_DATA","OPEN_DRONE_ID_SELF_ID","OPEN_DRONE_ID_SELF_ID_DATA","OPEN_DRONE_ID_SYSTEM","OPEN_DRONE_ID_SYSTEM_DATA","OPEN_DRONE_ID_SYSTEM_UPDATE","OPEN_DRONE_ID_SYSTEM_UPDATE_DATA","OPTICAL_FLOW","OPTICAL_FLOW_DATA","OPTICAL_FLOW_RAD","OPTICAL_FLOW_RAD_DATA","ORBIT_EXECUTION_STATUS","ORBIT_EXECUTION_STATUS_DATA","ORBIT_YAW_BEHAVIOUR_HOLD_FRONT_TANGENT_TO_CIRCLE","ORBIT_YAW_BEHAVIOUR_HOLD_FRONT_TO_CIRCLE_CENTER","ORBIT_YAW_BEHAVIOUR_HOLD_INITIAL_HEADING","ORBIT_YAW_BEHAVIOUR_RC_CONTROLLED","ORBIT_YAW_BEHAVIOUR_UNCONTROLLED","OrbitYawBehaviour","PARACHUTE_DISABLE","PARACHUTE_ENABLE","PARACHUTE_RELEASE","PARAM_ACK_ACCEPTED","PARAM_ACK_FAILED","PARAM_ACK_IN_PROGRESS","PARAM_ACK_VALUE_UNSUPPORTED","PARAM_EXT_ACK","PARAM_EXT_ACK_DATA","PARAM_EXT_REQUEST_LIST","PARAM_EXT_REQUEST_LIST_DATA","PARAM_EXT_REQUEST_READ","PARAM_EXT_REQUEST_READ_DATA","PARAM_EXT_SET","PARAM_EXT_SET_DATA","PARAM_EXT_VALUE","PARAM_EXT_VALUE_DATA","PARAM_MAP_RC","PARAM_MAP_RC_DATA","PARAM_READ_PERSISTENT","PARAM_REQUEST_LIST","PARAM_REQUEST_LIST_DATA","PARAM_REQUEST_READ","PARAM_REQUEST_READ_DATA","PARAM_RESET_ALL_DEFAULT","PARAM_RESET_CONFIG_DEFAULT","PARAM_RESET_SENSOR_DEFAULT","PARAM_SET","PARAM_SET_DATA","PARAM_VALUE","PARAM_VALUE_DATA","PARAM_WRITE_PERSISTENT","PING","PING_DATA","PLAY_TUNE","PLAY_TUNE_DATA","PLAY_TUNE_V2","PLAY_TUNE_V2_DATA","POSITION_TARGET_GLOBAL_INT","POSITION_TARGET_GLOBAL_INT_DATA","POSITION_TARGET_LOCAL_NED","POSITION_TARGET_LOCAL_NED_DATA","POSITION_TARGET_TYPEMASK_AX_IGNORE","POSITION_TARGET_TYPEMASK_AY_IGNORE","POSITION_TARGET_TYPEMASK_AZ_IGNORE","POSITION_TARGET_TYPEMASK_FORCE_SET","POSITION_TARGET_TYPEMASK_VX_IGNORE","POSITION_TARGET_TYPEMASK_VY_IGNORE","POSITION_TARGET_TYPEMASK_VZ_IGNORE","POSITION_TARGET_TYPEMASK_X_IGNORE","POSITION_TARGET_TYPEMASK_YAW_IGNORE","POSITION_TARGET_TYPEMASK_YAW_RATE_IGNORE","POSITION_TARGET_TYPEMASK_Y_IGNORE","POSITION_TARGET_TYPEMASK_Z_IGNORE","POWER_STATUS","POWER_STATUS_DATA","PRECISION_LAND_MODE_DISABLED","PRECISION_LAND_MODE_OPPORTUNISTIC","PRECISION_LAND_MODE_REQUIRED","PROTOCOL_VERSION","PROTOCOL_VERSION_DATA","ParachuteAction","ParamAck","PositionTargetTypemask","PrecisionLandMode","PreflightStorageMissionAction","PreflightStorageParameterAction","RADIO_STATUS","RADIO_STATUS_DATA","RAW_IMU","RAW_IMU_DATA","RAW_PRESSURE","RAW_PRESSURE_DATA","RAW_RPM","RAW_RPM_DATA","RC_CHANNELS","RC_CHANNELS_DATA","RC_CHANNELS_OVERRIDE","RC_CHANNELS_OVERRIDE_DATA","RC_CHANNELS_RAW","RC_CHANNELS_RAW_DATA","RC_CHANNELS_SCALED","RC_CHANNELS_SCALED_DATA","RC_TYPE_SPEKTRUM_DSM2","RC_TYPE_SPEKTRUM_DSMX","REQUEST_DATA_STREAM","REQUEST_DATA_STREAM_DATA","REQUEST_EVENT","REQUEST_EVENT_DATA","RESOURCE_REQUEST","RESOURCE_REQUEST_DATA","RESPONSE_EVENT_ERROR","RESPONSE_EVENT_ERROR_DATA","RTK_BASELINE_COORDINATE_SYSTEM_ECEF","RTK_BASELINE_COORDINATE_SYSTEM_NED","RcType","RtkBaselineCoordinateSystem","SAFETY_ALLOWED_AREA","SAFETY_ALLOWED_AREA_DATA","SAFETY_SET_ALLOWED_AREA","SAFETY_SET_ALLOWED_AREA_DATA","SCALED_IMU","SCALED_IMU2","SCALED_IMU2_DATA","SCALED_IMU3","SCALED_IMU3_DATA","SCALED_IMU_DATA","SCALED_PRESSURE","SCALED_PRESSURE2","SCALED_PRESSURE2_DATA","SCALED_PRESSURE3","SCALED_PRESSURE3_DATA","SCALED_PRESSURE_DATA","SERIAL_CONTROL","SERIAL_CONTROL_DATA","SERIAL_CONTROL_DEV_GPS1","SERIAL_CONTROL_DEV_GPS2","SERIAL_CONTROL_DEV_SHELL","SERIAL_CONTROL_DEV_TELEM1","SERIAL_CONTROL_DEV_TELEM2","SERIAL_CONTROL_FLAG_BLOCKING","SERIAL_CONTROL_FLAG_EXCLUSIVE","SERIAL_CONTROL_FLAG_MULTI","SERIAL_CONTROL_FLAG_REPLY","SERIAL_CONTROL_FLAG_RESPOND","SERIAL_CONTROL_SERIAL0","SERIAL_CONTROL_SERIAL1","SERIAL_CONTROL_SERIAL2","SERIAL_CONTROL_SERIAL3","SERIAL_CONTROL_SERIAL4","SERIAL_CONTROL_SERIAL5","SERIAL_CONTROL_SERIAL6","SERIAL_CONTROL_SERIAL7","SERIAL_CONTROL_SERIAL8","SERIAL_CONTROL_SERIAL9","SERVO_OUTPUT_RAW","SERVO_OUTPUT_RAW_DATA","SETUP_SIGNING","SETUP_SIGNING_DATA","SET_ACTUATOR_CONTROL_TARGET","SET_ACTUATOR_CONTROL_TARGET_DATA","SET_ATTITUDE_TARGET","SET_ATTITUDE_TARGET_DATA","SET_GPS_GLOBAL_ORIGIN","SET_GPS_GLOBAL_ORIGIN_DATA","SET_HOME_POSITION","SET_HOME_POSITION_DATA","SET_MODE","SET_MODE_DATA","SET_POSITION_TARGET_GLOBAL_INT","SET_POSITION_TARGET_GLOBAL_INT_DATA","SET_POSITION_TARGET_LOCAL_NED","SET_POSITION_TARGET_LOCAL_NED_DATA","SIM_STATE","SIM_STATE_DATA","SMART_BATTERY_INFO","SMART_BATTERY_INFO_DATA","STATUSTEXT","STATUSTEXT_DATA","STORAGE_INFORMATION","STORAGE_INFORMATION_DATA","STORAGE_STATUS_EMPTY","STORAGE_STATUS_NOT_SUPPORTED","STORAGE_STATUS_READY","STORAGE_STATUS_UNFORMATTED","STORAGE_TYPE_CF","STORAGE_TYPE_CFE","STORAGE_TYPE_HD","STORAGE_TYPE_MICROSD","STORAGE_TYPE_OTHER","STORAGE_TYPE_SD","STORAGE_TYPE_UNKNOWN","STORAGE_TYPE_USB_STICK","STORAGE_TYPE_XQD","STORAGE_USAGE_FLAG_LOGS","STORAGE_USAGE_FLAG_PHOTO","STORAGE_USAGE_FLAG_SET","STORAGE_USAGE_FLAG_VIDEO","SUPPORTED_TUNES","SUPPORTED_TUNES_DATA","SYSTEM_TIME","SYSTEM_TIME_DATA","SYS_STATUS","SYS_STATUS_DATA","SerialControlDev","SerialControlFlag","SetFocusType","StorageStatus","StorageType","StorageUsageFlag","TERRAIN_CHECK","TERRAIN_CHECK_DATA","TERRAIN_DATA","TERRAIN_DATA_DATA","TERRAIN_REPORT","TERRAIN_REPORT_DATA","TERRAIN_REQUEST","TERRAIN_REQUEST_DATA","TIMESYNC","TIMESYNC_DATA","TIME_ESTIMATE_TO_TARGET","TIME_ESTIMATE_TO_TARGET_DATA","TRAJECTORY_REPRESENTATION_BEZIER","TRAJECTORY_REPRESENTATION_BEZIER_DATA","TRAJECTORY_REPRESENTATION_WAYPOINTS","TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA","TUNE_FORMAT_MML_MODERN","TUNE_FORMAT_QBASIC1_1","TUNNEL","TUNNEL_DATA","TuneFormat","UAVCAN_NODE_HEALTH_CRITICAL","UAVCAN_NODE_HEALTH_ERROR","UAVCAN_NODE_HEALTH_OK","UAVCAN_NODE_HEALTH_WARNING","UAVCAN_NODE_INFO","UAVCAN_NODE_INFO_DATA","UAVCAN_NODE_MODE_INITIALIZATION","UAVCAN_NODE_MODE_MAINTENANCE","UAVCAN_NODE_MODE_OFFLINE","UAVCAN_NODE_MODE_OPERATIONAL","UAVCAN_NODE_MODE_SOFTWARE_UPDATE","UAVCAN_NODE_STATUS","UAVCAN_NODE_STATUS_DATA","UAVIONIX_ADSB_OUT_CFG","UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L15M_W23M","UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L25M_W28P5M","UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L25_34M","UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L35_33M","UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L35_38M","UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L45_39P5M","UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L45_45M","UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L55_45M","UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L55_52M","UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L65_59P5M","UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L65_67M","UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L75_W72P5M","UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L75_W80M","UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L85_W80M","UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L85_W90M","UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_NO_DATA","UAVIONIX_ADSB_OUT_CFG_DATA","UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_LEFT_2M","UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_LEFT_4M","UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_LEFT_6M","UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_NO_DATA","UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_RIGHT_0M","UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_RIGHT_2M","UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_RIGHT_4M","UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_RIGHT_6M","UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LON_APPLIED_BY_SENSOR","UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LON_NO_DATA","UAVIONIX_ADSB_OUT_DOWNED_AIRCRAFT_EMERGENCY","UAVIONIX_ADSB_OUT_DYNAMIC","UAVIONIX_ADSB_OUT_DYNAMIC_DATA","UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX_2D","UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX_3D","UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX_DGPS","UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX_NONE_0","UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX_NONE_1","UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX_RTK","UAVIONIX_ADSB_OUT_DYNAMIC_STATE_AUTOPILOT_ENABLED","UAVIONIX_ADSB_OUT_DYNAMIC_STATE_IDENT","UAVIONIX_ADSB_OUT_DYNAMIC_STATE_INTENT_CHANGE","UAVIONIX_ADSB_OUT_DYNAMIC_STATE_NICBARO_CROSSCHECKED","UAVIONIX_ADSB_OUT_DYNAMIC_STATE_ON_GROUND","UAVIONIX_ADSB_OUT_GENERAL_EMERGENCY","UAVIONIX_ADSB_OUT_LIFEGUARD_EMERGENCY","UAVIONIX_ADSB_OUT_MINIMUM_FUEL_EMERGENCY","UAVIONIX_ADSB_OUT_NO_COMM_EMERGENCY","UAVIONIX_ADSB_OUT_NO_EMERGENCY","UAVIONIX_ADSB_OUT_RESERVED","UAVIONIX_ADSB_OUT_RF_SELECT_RX_ENABLED","UAVIONIX_ADSB_OUT_RF_SELECT_STANDBY","UAVIONIX_ADSB_OUT_RF_SELECT_TX_ENABLED","UAVIONIX_ADSB_OUT_UNLAWFUL_INTERFERANCE_EMERGENCY","UAVIONIX_ADSB_RF_HEALTH_FAIL_RX","UAVIONIX_ADSB_RF_HEALTH_FAIL_TX","UAVIONIX_ADSB_RF_HEALTH_INITIALIZING","UAVIONIX_ADSB_RF_HEALTH_OK","UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT","UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA","UNDER_WAY","UTM_DATA_AVAIL_FLAGS_ALTITUDE_AVAILABLE","UTM_DATA_AVAIL_FLAGS_HORIZONTAL_VELO_AVAILABLE","UTM_DATA_AVAIL_FLAGS_NEXT_WAYPOINT_AVAILABLE","UTM_DATA_AVAIL_FLAGS_POSITION_AVAILABLE","UTM_DATA_AVAIL_FLAGS_RELATIVE_ALTITUDE_AVAILABLE","UTM_DATA_AVAIL_FLAGS_TIME_VALID","UTM_DATA_AVAIL_FLAGS_UAS_ID_AVAILABLE","UTM_DATA_AVAIL_FLAGS_VERTICAL_VELO_AVAILABLE","UTM_FLIGHT_STATE_AIRBORNE","UTM_FLIGHT_STATE_EMERGENCY","UTM_FLIGHT_STATE_GROUND","UTM_FLIGHT_STATE_NOCTRL","UTM_FLIGHT_STATE_UNKNOWN","UTM_GLOBAL_POSITION","UTM_GLOBAL_POSITION_DATA","UavcanNodeHealth","UavcanNodeMode","UavionixAdsbEmergencyStatus","UavionixAdsbOutCfgAircraftSize","UavionixAdsbOutCfgGpsOffsetLat","UavionixAdsbOutCfgGpsOffsetLon","UavionixAdsbOutDynamicGpsFix","UavionixAdsbOutDynamicState","UavionixAdsbOutRfSelect","UavionixAdsbRfHealth","UtmDataAvailFlags","UtmFlightState","V2_EXTENSION","V2_EXTENSION_DATA","VFR_HUD","VFR_HUD_DATA","VIBRATION","VIBRATION_DATA","VICON_POSITION_ESTIMATE","VICON_POSITION_ESTIMATE_DATA","VIDEO_STREAM_INFORMATION","VIDEO_STREAM_INFORMATION_DATA","VIDEO_STREAM_STATUS","VIDEO_STREAM_STATUS_DATA","VIDEO_STREAM_STATUS_FLAGS_RUNNING","VIDEO_STREAM_STATUS_FLAGS_THERMAL","VIDEO_STREAM_TYPE_MPEG_TS_H264","VIDEO_STREAM_TYPE_RTPUDP","VIDEO_STREAM_TYPE_RTSP","VIDEO_STREAM_TYPE_TCP_MPEG","VISION_POSITION_ESTIMATE","VISION_POSITION_ESTIMATE_DATA","VISION_SPEED_ESTIMATE","VISION_SPEED_ESTIMATE_DATA","VTOL_TRANSITION_HEADING_ANY","VTOL_TRANSITION_HEADING_NEXT_WAYPOINT","VTOL_TRANSITION_HEADING_SPECIFIED","VTOL_TRANSITION_HEADING_TAKEOFF","VTOL_TRANSITION_HEADING_VEHICLE_DEFAULT","Vcc","VelEW","VideoStreamStatusFlags","VideoStreamType","Vservo","VtolTransitionHeading","WHEEL_DISTANCE","WHEEL_DISTANCE_DATA","WIFI_CONFIG_AP","WIFI_CONFIG_AP_DATA","WIFI_CONFIG_AP_MODE_AP","WIFI_CONFIG_AP_MODE_DISABLED","WIFI_CONFIG_AP_MODE_STATION","WIFI_CONFIG_AP_MODE_UNDEFINED","WIFI_CONFIG_AP_RESPONSE_ACCEPTED","WIFI_CONFIG_AP_RESPONSE_MODE_ERROR","WIFI_CONFIG_AP_RESPONSE_PASSWORD_ERROR","WIFI_CONFIG_AP_RESPONSE_REJECTED","WIFI_CONFIG_AP_RESPONSE_SSID_ERROR","WIFI_CONFIG_AP_RESPONSE_UNDEFINED","WINCH_ABANDON_LINE","WINCH_DELIVER","WINCH_HOLD","WINCH_LOAD_LINE","WINCH_LOAD_PAYLOAD","WINCH_LOCK","WINCH_RATE_CONTROL","WINCH_RELATIVE_LENGTH_CONTROL","WINCH_RELAXED","WINCH_RETRACT","WINCH_STATUS","WINCH_STATUS_DATA","WIND_COV","WIND_COV_DATA","WifiConfigApMode","WifiConfigApResponse","WinchActions","ZOOM_TYPE_CONTINUOUS","ZOOM_TYPE_FOCAL_LENGTH","ZOOM_TYPE_RANGE","ZOOM_TYPE_STEP","abs_pressure","abs_pressure","acc","acc_x","acc_y","acc_z","accuracy","accuracy","accuracyHor","accuracyVel","accuracyVert","ack","action","active","actuator","address","afx","afx","afx","afx","afy","afy","afy","afy","afz","afz","afz","afz","aircraftSize","airspeed","airspeed","airspeed","airspeed","airspeed_sp","airspeed_sp","all","all","all","all","all","all","all","all","all","all","all","all","all","all","all","all","all","all","all","all","all","all","all","all","all","all","all","all","alt","alt","alt","alt","alt","alt","alt","alt","alt","alt","alt","alt","alt","alt","alt","alt","alt_camera","alt_error","alt_image","altitude","altitude","altitude","altitude","altitude","altitude","altitude_amsl","altitude_amsl","altitude_barometric","altitude_geodetic","altitude_local","altitude_minimum_delta","altitude_monotonic","altitude_relative","altitude_sp","altitude_terrain","altitude_type","angle_x","angle_y","angular_velocity_x","angular_velocity_x","angular_velocity_x","angular_velocity_y","angular_velocity_y","angular_velocity_y","angular_velocity_z","angular_velocity_z","angular_velocity_z","apn","approach_x","approach_x","approach_y","approach_y","approach_z","approach_z","area_ceiling","area_count","area_floor","area_radius","arguments","arming_time_utc","array_id","aspd_error","attitude_q","attitude_quaternion","authentication_data","authentication_type","autocontinue","autocontinue","autocontinue","autopilot","autopilot","autosaved","aux1","aux2","aux3","aux4","available_capacity","available_capacity","ax","ay","az","baroAltMSL","barometer_accuracy","barometric_pressure","base_mode","base_mode","base_mode","baseline_a_mm","baseline_a_mm","baseline_b_mm","baseline_b_mm","baseline_c_mm","baseline_c_mm","baseline_coords_type","baseline_coords_type","bat_current_setpoint","battery","battery_current","battery_function","battery_function","battery_remaining","battery_remaining","battery_remaining","baudrate","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitrate","bitrate","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","board_version","body_pitch_rate","body_pitch_rate","body_roll_rate","body_roll_rate","body_yaw_rate","body_yaw_rate","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","bottom_clearance","breach_count","breach_status","breach_time","breach_type","bus","bus","bus","bus_voltage","buttons","cal_mask","cal_status","callsign","callsign","callsign","cam_definition_uri","cam_definition_version","camera_id","cap_flags","cap_flags","capabilities","capacity_full","capacity_full_specification","capture_result","category_eu","chan10_raw","chan10_raw","chan11_raw","chan11_raw","chan12_raw","chan12_raw","chan13_raw","chan14_raw","chan15_raw","chan16_raw","chan17_raw","chan18_raw","chan1_raw","chan1_raw","chan1_raw","chan1_raw","chan1_scaled","chan2_raw","chan2_raw","chan2_raw","chan2_raw","chan2_scaled","chan3_raw","chan3_raw","chan3_raw","chan3_raw","chan3_scaled","chan4_raw","chan4_raw","chan4_raw","chan4_raw","chan4_scaled","chan5_raw","chan5_raw","chan5_raw","chan5_raw","chan5_scaled","chan6_raw","chan6_raw","chan6_raw","chan6_raw","chan6_scaled","chan7_raw","chan7_raw","chan7_raw","chan7_raw","chan7_scaled","chan8_raw","chan8_raw","chan8_raw","chan8_raw","chan8_scaled","chan9_raw","chan9_raw","chancount","charging_minimum_voltage","child_frame_id","class_eu","classification_type","climb","climb_rate","climb_rate","clipping_0","clipping_1","clipping_2","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cog","cog","cog","command","command","command","command","command","command","command","commanded_action","compass_id","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","confirmation","connection_type","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","control_request","control_request","controls","controls","controls","coordinate_frame","coordinate_frame","coordinate_frame","coordinate_frame","count","count","count","count","count","count","count","counter","covariance","covariance","covariance","covariance","cpu_combined","cpu_cores","current","current","current","current","current","current_battery","current_battery","current_consumed","current_distance","current_height","custom0","custom1","custom2","custom_cap_flags","custom_mode","custom_mode","custom_mode","custom_mode","custom_name","custom_state","cycle_count","cylinder_head_temperature","data","data","data","data","data","data","data","data","data","data","data_page","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default_message_from_id","delta","description","description_type","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","destination_component","destination_system","device","device_name","dgps_age","dgps_numch","diag_x","diag_y","diag_z","diff_pressure","diff_pressure","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","dimension_bow","dimension_port","dimension_starboard","dimension_stern","direction","discharge_minimum_voltage","dist","distance","distance","distance","distance","distances","drop_rate_comm","ecu_index","emergencyStatus","emitterType","emitter_type","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","enable_lte","enable_pin","end","end_index","end_index","energy_consumed","engine_load","eph","eph","eph","eph","epv","epv","epv","epv","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","error","error_count","errors_comm","errors_count1","errors_count2","errors_count3","errors_count4","est_capabilities","estimator_status","estimator_type","estimator_type","event_time_boot_ms","exhaust_gas_temperature","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extra_crc","failed_sessions","failsafe","failure_flags","failure_flags","failure_flags","failure_reason","fan_speed","feed_forward_angular_velocity_z","fields_updated","fields_updated","file_crc","file_url","firmware_version","firmware_version","first_message_offset","first_message_offset","first_sequence","fitness","fix_type","fix_type","fix_type","fix_type","fixed","flags","flags","flags","flags","flags","flags","flags","flags","flags","flags","flags","flags","flags","flags","flags","flags","flags","flags","flight_custom_version","flight_state","flight_sw_version","flight_uuid","flow_comp_m_x","flow_comp_m_y","flow_x","flow_y","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","focal_length","format","format","frame","frame","frame","frame","frame","frame","frame","frame_id","framerate","framerate","frequency","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","fuel_consumed","fuel_flow","gcs_system_id","general_metadata_file_crc","general_metadata_uri","generator_speed","generator_temperature","gimbal_device_id","gimbal_device_id","gimbal_device_id","gimbal_device_id","gimbal_device_id","gpsAlt","gpsFix","gpsLat","gpsLon","gpsOffsetLat","gpsOffsetLon","gps_fix_type","gps_id","gps_nsat","gpu_combined","gpu_cores","grid_spacing","grid_spacing","gridbit","ground_distance","groundspeed","groundspeed","groundspeed","group_mlx","group_mlx","h_acc","h_acc","hagl_ratio","hardware_version","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hdg","hdg","hdg_acc","hdop","heading","heading","heading","heading","heading","heading_sp","health","health","height","height","height_reference","hfov","hfov","hfov","hor_velocity","horiz_accuracy","horiz_accuracy","horizontal_accuracy","horizontal_minimum_delta","humidity","hw_unique_id","hw_version_major","hw_version_minor","iar_num_hypotheses","iar_num_hypotheses","id","id","id","id","id","id","id","id","id","id","id","id_or_mac","id_or_mac","id_or_mac","id_or_mac","id_or_mac","id_or_mac","id_or_mac","id_type","ids","ignition_timing","ignore_flags","image_index","image_interval","image_status","increment","ind","ind_airspeed","index","index","index","info","initial_timestamp","injection_time","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","intake_manifold_pressure","intake_manifold_temperature","integrated_x","integrated_x","integrated_xgyro","integrated_xgyro","integrated_y","integrated_y","integrated_ygyro","integrated_ygyro","integrated_zgyro","integrated_zgyro","integration_time_us","integration_time_us","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","interval_us","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","jpg_quality","key","lac","land","landed_state","landed_state","landed_state","last_change_ms","last_heartbeat","last_log_num","last_page_index","last_sequence","lat","lat","lat","lat","lat","lat","lat","lat","lat","lat","lat","lat","lat","lat","lat","lat","lat","lat","lat","lat_camera","lat_image","lat_int","lat_int","latitude","latitude","latitude","latitude","latitude","latitude","latitude","len","len","len","len","length","length","length","lens_id","library_version_hash","line_length","link_rx_max","link_rx_rate","link_tx_max","link_tx_rate","link_type","load","load_current","loaded","log_levels","lon","lon","lon","lon","lon","lon","lon","lon","lon","lon","lon","lon","lon","lon","lon","lon","lon","lon","lon","lon_camera","lon_image","lon_int","lon_int","longitude","longitude","longitude","longitude","longitude","longitude","longitude","mag_ratio","manual_override_switch","mask","mavlink_version","mavtype","mavtype","mavtype","mavtype","mavtype","mavtype","mavtype","mavtype","mavtype","mavtype","mavtype","mavtype","max_distance","max_distance","max_version","mcc","message_id","message_id","message_id_from_name","message_name","message_rate","message_type","messages","messages_lost","messages_received","messages_sent","middleware_custom_version","middleware_sw_version","min_distance","min_distance","min_version","mission_end","mission_next_item","mnc","mode","mode","mode","mode_id","mode_switch","model_name","model_name","msg_pack_size","name","name","name","name","name","name","name","nav_bearing","nav_mode","nav_pitch","nav_roll","navigational_status","new_pin","next_alt","next_lat","next_lon","noise","not","not","not","not","not","not","not","not","not","not","not","not","not","not","not","not","not","not","not","not","not","not","not","not","not","not","not","not","nsats","nsats","numSats","num_ids","num_logs","offdiag_x","offdiag_y","offdiag_z","ofs","ofs","ofs_x","ofs_y","ofs_z","on_off","onboard_control_sensors_enabled","onboard_control_sensors_health","onboard_control_sensors_present","operation","operator_altitude_geo","operator_altitude_geo","operator_id","operator_id_type","operator_latitude","operator_latitude","operator_location_type","operator_longitude","operator_longitude","orientation","os_custom_version","os_sw_version","p1x","p1x","p1y","p1y","p1z","p1z","p2x","p2x","p2y","p2y","p2z","p2z","packets","param1","param1","param1","param1","param2","param2","param2","param2","param3","param3","param3","param3","param4","param4","param4","param4","param5","param6","param7","param_count","param_count","param_id","param_id","param_id","param_id","param_id","param_id","param_id","param_id","param_index","param_index","param_index","param_index","param_index","param_result","param_type","param_type","param_type","param_type","param_type","param_value","param_value","param_value","param_value","param_value","param_value0","param_value_max","param_value_min","parameter_rc_channel_index","parse","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","passkey","password","payload","payload","payload","payload","payload_length","payload_type","pending","peripherals_metadata_file_crc","peripherals_metadata_uri","pin","pitch","pitch","pitch","pitch","pitch","pitch","pitch","pitch","pitch","pitch","pitch","pitch","pitch_elevator","pitch_max","pitch_max","pitch_min","pitch_min","pitch_rate","pitch_rate","pitch_rate","pitchspeed","pitchspeed","pitchspeed","pitchspeed","pitchspeed","pitchspeed","point_x","point_y","port","port","port","pos_horiz_accuracy","pos_horiz_ratio","pos_variance","pos_vert_accuracy","pos_vert_ratio","pos_x","pos_x","pos_y","pos_y","pos_yaw","pos_yaw","pos_z","pos_z","pose_covariance","position_cov","power_generated","press_abs","press_abs","press_abs","press_abs","press_diff","press_diff","press_diff","press_diff1","press_diff2","pressure_alt","pressure_alt","primary_control_compid","primary_control_sysid","product_id","pt_compensation","puk","q","q","q","q","q","q","q","q","q","q","q","q","q","q","q1","q1","q2","q2","q3","q3","q4","q4","q_estimated_delay_us","quality","quality","quality","quality","r","radius","radius","ram_total","ram_usage","rates","read_speed","reason","rec_bottom_x","rec_bottom_y","rec_top_x","rec_top_y","recording_time_ms","rectifier_temperature","relative_alt","relative_alt","relative_alt","relative_alt","remnoise","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remrssi","req_message_rate","req_stream_id","request_id","resolution_h","resolution_h","resolution_h","resolution_v","resolution_v","resolution_v","response","resting_minimum_voltage","result","rfHealth","rfSelect","ring_pending","roaming","roll","roll","roll","roll","roll","roll","roll","roll","roll","roll","roll_ailerons","roll_max","roll_max","roll_min","roll_min","roll_rate","rollspeed","rollspeed","rollspeed","rollspeed","rollspeed","rollspeed","rotation","rotation","rpm","rpm","rssi","rssi","rssi","rssi","rssi","rtk_health","rtk_health","rtk_rate","rtk_rate","rtk_receiver_id","rtk_receiver_id","runtime","rx_buf","rx_overflows","rx_parse_err","rx_rate","rx_session_pending","rxerrors","safe_return","satellite_azimuth","satellite_elevation","satellite_prn","satellite_snr","satellite_used","satellites_visible","satellites_visible","satellites_visible","satellites_visible","satellites_visible","scale","secondary_control_compid","secondary_control_sysid","secret_key","sensor_id","sensor_id","sensor_id","sensor_size_h","sensor_size_v","sensor_type","seq","seq","seq","seq","seq","seq","seq","seq","seq","seqnr","sequence","sequence","sequence","sequence","sequence","sequence","sequence_oldest_available","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","serial_number","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","servo1_raw","servo2_raw","servo3_raw","servo4_raw","servo5_raw","servo6_raw","servo7_raw","servo8_raw","set","set","set","set","set","set","set","set","set","set","set","set","set","set","set","set","set","set","set","set","set","set","set","set","set","set","set","set","severity","signal_quality","single_message_size","size","size","size_x","size_y","spacing","spark_dwell_time","spec_version_hash","speed","speed_accuracy","speed_accuracy","speed_horizontal","speed_vertical","squawk","squawk","src","ssid","stallSpeed","start","start_index","start_index","start_stop","state","state","status","status","status","status","status","status","std_dev_horz","std_dev_vert","storage","storage_count","storage_id","storage_total","storage_type","storage_usage","stream_id","stream_id","stream_id","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_mode","successful_sessions","sw_vcs_commit","sw_version_major","sw_version_minor","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","system_status","takeoff_time_utc","target","target_altitude","target_bearing","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_data","target_distance","target_heading","target_network","target_network","target_num","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","tas_ratio","tc1","temperature","temperature","temperature","temperature","temperature","temperature","temperature","temperature","temperature","temperature","temperature","temperature","temperature","temperature_air","temperature_air","temperature_board","temperature_core","tension","terrain_height","text","threat_level","throttle","throttle","throttle","throttle","throttle_out","throttle_position","thrust","thrust","thrust","time","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_us","time_delta_distance_us","time_delta_distance_us","time_last_baseline_ms","time_last_baseline_ms","time_to_minimum_delta","time_unix_usec","time_until_maintenance","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_utc","time_utc","time_week","time_week_ms","timeout","timestamp","timestamp","timestamp","timestamp","timestamp","timestamp","timestamp","timestamp","timestamp_accuracy","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","total_capacity","tow","tow","tracking_mode","tracking_status","tracking_status","transfer_type","true_airspeed","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","ts1","tslc","tslc","tune","tune","turn_rate","tx_buf","tx_overflows","tx_rate","tx_session_pending","txbuf","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_mask","type_mask","type_mask","type_mask","type_mask","type_mask","ua_type","uas_id","uas_id","uid","uid","union","union","union","union","union","union","union","union","union","union","union","union","union","union","union","union","union","union","union","union","union","union","union","union","union","union","union","union","update_rate","uptime","uptime_sec","uptime_sec","uri","uri","uri","uri_type","usec","usec","usec","usec","used_capacity","utcTime","v_acc","v_acc","v_estimated_delay_us","valid_points","valid_points","value","value","value","value","var_horiz","var_vert","vd","vd","vd","vdop","ve","ve","ve","vel","vel","vel","vel","velNS","velVert","vel_acc","vel_acc","vel_d","vel_e","vel_n","vel_ratio","vel_variance","vel_x","vel_y","vel_yaw","vel_z","velocity","velocity_covariance","vendor_id","vendor_name","vendor_name","vendor_specific_status_code","ver","ver_velocity","version","version","vert_accuracy","vert_accuracy","vertical_accuracy","vfov","vibration_x","vibration_y","vibration_z","video_status","vn","vn","vn","voltage","voltage","voltage_battery","voltages","vtol_state","vx","vx","vx","vx","vx","vx","vx","vx","vx","vx","vx","vx","vx","vy","vy","vy","vy","vy","vy","vy","vy","vy","vy","vy","vy","vy","vz","vz","vz","vz","vz","vz","vz","vz","vz","vz","vz","vz","vz","weight","width","wind_alt","wind_heading","wind_x","wind_y","wind_z","windspeed","wn","wn","wp_dist","wp_distance","wp_num","wp_num","write_speed","x","x","x","x","x","x","x","x","x","x","x","x","x","x","x","x","x","x","x","x_acc","x_pos","x_vel","xacc","xacc","xacc","xacc","xacc","xacc","xacc","xacc","xacc","xgyro","xgyro","xgyro","xgyro","xgyro","xgyro","xgyro","xmag","xmag","xmag","xmag","xmag","xmag","xtrack_error","y","y","y","y","y","y","y","y","y","y","y","y","y","y","y","y","y","y","y","y_acc","y_pos","y_vel","yacc","yacc","yacc","yacc","yacc","yacc","yacc","yacc","yacc","yaw","yaw","yaw","yaw","yaw","yaw","yaw","yaw","yaw","yaw","yaw","yaw","yaw","yaw","yaw","yaw_max","yaw_max","yaw_min","yaw_min","yaw_rate","yaw_rate","yaw_rate","yaw_rate","yaw_rate","yaw_rate","yaw_rate","yaw_rudder","yawspeed","yawspeed","yawspeed","yawspeed","yawspeed","yawspeed","ygyro","ygyro","ygyro","ygyro","ygyro","ygyro","ygyro","ymag","ymag","ymag","ymag","ymag","ymag","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z_acc","z_pos","z_vel","zacc","zacc","zacc","zacc","zacc","zacc","zacc","zacc","zacc","zgyro","zgyro","zgyro","zgyro","zgyro","zgyro","zgyro","zmag","zmag","zmag","zmag","zmag","zmag","remove_trailing_zeroes"],"q":[[0,"mavlink"],[156,"mavlink::ardupilotmega"],[15498,"mavlink::bytes"],[15522,"mavlink::bytes_mut"],[15547,"mavlink::common"],[27060,"mavlink::error"],[27102,"mavlink::error::ParserError"],[27107,"mavlink::icarous"],[27239,"mavlink::peek_reader"],[27254,"mavlink::uavionix"],[39174,"mavlink::utils"],[39175,"mavlink_core"],[39176,"core::clone"],[39177,"mavlink_core::connection"],[39178,"alloc::boxed"],[39179,"std::io::error"],[39180,"core::result"],[39181,"mavlink_core::error"],[39182,"serde::de"],[39183,"core::fmt"],[39184,"mavlink_core::peek_reader"],[39185,"std::io"],[39186,"serde::ser"],[39187,"core::any"],[39188,"core::cmp"],[39189,"core::iter::traits::collect"],[39190,"core::option"],[39191,"core::hash"],[39192,"mavlink_core::bytes"],[39193,"mavlink_core::bytes_mut"],[39194,"alloc::string"],[39195,"mavlink_core::utils"]],"i":[19,19,19,0,0,0,0,0,0,0,0,0,0,19,0,19,7,7,0,6,7,8,4,5,6,7,8,4,5,0,0,0,4,5,6,7,8,4,5,6,7,8,4,5,0,5,4,5,6,0,6,4,5,10,19,8,6,6,7,4,5,0,10,6,7,8,4,5,6,7,8,4,5,13,4,5,8,4,5,8,0,5,6,7,8,4,5,10,4,5,10,10,8,4,5,10,4,5,4,5,0,8,4,5,0,0,0,0,0,13,13,13,13,13,4,5,6,10,19,8,6,7,8,4,5,4,5,13,4,5,6,6,7,8,4,5,6,7,8,4,5,6,7,8,4,5,6,7,8,4,5,0,0,0,0,0,420,420,420,420,420,420,420,420,385,385,385,385,385,385,69,0,492,492,492,492,492,492,492,492,492,492,492,492,492,492,492,492,492,492,492,492,492,492,492,492,492,492,492,492,492,492,492,492,492,69,0,69,0,374,374,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,47,47,47,47,47,47,47,47,47,47,69,0,69,69,0,69,0,0,69,0,37,37,37,37,37,37,37,37,37,37,37,37,37,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,69,0,69,0,73,69,0,69,0,69,0,69,69,0,0,69,0,52,52,52,52,52,52,69,0,69,0,69,0,69,0,69,0,458,458,458,458,0,0,0,0,0,0,0,0,0,0,0,69,0,418,69,0,69,0,69,0,65,65,65,65,65,65,65,65,65,65,65,65,69,396,396,0,396,396,396,69,0,69,0,69,0,438,438,438,69,0,69,0,400,400,400,400,400,400,400,69,0,69,0,414,414,414,428,428,428,518,518,518,518,69,0,69,0,413,69,0,413,413,69,0,69,471,0,471,471,471,471,457,457,457,457,477,477,477,477,477,69,0,490,490,490,490,490,490,490,490,490,490,490,490,490,69,69,0,0,111,69,0,69,0,69,0,69,0,69,0,69,0,69,0,69,0,370,370,370,370,370,370,69,0,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,69,0,69,0,69,0,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,217,217,0,162,69,0,69,0,69,0,69,0,69,0,69,0,69,0,69,0,69,0,69,0,403,403,403,403,403,403,403,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,36,370,371,372,37,373,374,375,38,39,376,377,378,379,380,381,382,383,384,385,40,386,387,41,388,389,390,391,392,393,394,395,396,42,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,43,44,418,419,420,421,422,423,45,424,425,426,427,428,429,430,46,431,432,433,47,434,435,436,437,438,439,440,441,442,443,48,444,445,446,447,448,449,49,450,50,451,452,453,454,51,455,456,457,52,458,459,53,460,461,462,463,464,465,466,467,468,54,469,470,471,472,473,474,475,476,477,478,479,480,481,55,482,56,483,484,485,486,487,488,489,490,491,492,493,57,58,59,494,495,496,497,498,499,500,501,502,503,504,505,506,60,507,508,61,509,510,62,511,512,513,514,515,516,63,517,518,64,65,519,66,520,67,521,522,523,524,525,526,504,504,69,0,69,0,69,0,69,0,69,0,69,0,69,0,0,0,119,69,0,55,55,55,55,55,55,55,55,69,0,55,55,55,69,0,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,444,444,444,444,444,444,59,59,59,59,59,59,59,59,69,0,69,0,69,0,69,0,69,0,62,62,62,62,62,62,62,62,62,62,69,0,62,62,69,0,69,0,0,0,0,0,379,379,379,379,379,379,379,379,417,417,417,417,417,417,417,417,417,417,417,417,417,417,417,39,408,408,408,408,408,408,408,408,455,455,455,455,69,0,519,519,519,69,0,69,0,162,69,0,441,441,441,441,441,69,0,522,522,522,522,522,522,522,69,0,0,0,0,0,0,0,69,0,475,475,475,461,461,461,371,371,371,69,0,69,0,48,48,48,48,48,48,48,48,48,48,48,48,48,48,46,46,46,46,46,46,46,46,46,46,49,49,49,49,49,49,49,49,49,49,69,0,69,0,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,427,427,427,427,427,427,427,427,427,427,69,0,69,0,69,0,69,0,69,0,69,0,69,0,69,69,0,0,69,0,386,386,386,386,386,386,386,386,386,486,486,486,486,486,486,486,486,510,510,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,485,485,485,66,505,505,505,505,505,505,505,505,505,505,505,505,505,505,69,0,69,0,69,0,478,478,478,478,464,464,464,464,464,369,369,369,369,369,463,463,525,525,525,525,525,525,525,525,525,525,525,525,525,525,525,525,525,525,525,525,525,498,498,498,498,498,368,368,368,479,479,479,479,479,411,411,433,433,433,433,433,433,433,433,433,433,433,433,433,433,69,0,69,0,431,69,0,69,0,456,456,456,456,456,456,456,456,456,69,0,69,0,69,0,38,38,38,38,38,38,38,38,69,0,69,0,69,0,69,0,454,454,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,377,377,69,0,69,0,69,0,69,0,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,69,69,0,0,69,0,69,0,69,0,69,0,69,0,69,0,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,69,0,69,0,50,50,50,50,50,50,50,50,50,50,50,50,50,50,69,0,69,0,69,0,0,0,0,0,162,281,343,107,383,383,383,383,383,383,69,0,69,0,467,467,467,69,0,0,0,69,0,381,381,381,381,39,69,0,398,398,398,412,412,412,412,412,69,0,412,51,51,51,69,0,69,69,0,0,69,0,69,0,69,69,0,0,69,0,69,0,69,0,69,0,69,0,69,0,0,0,0,0,437,437,437,437,69,0,69,0,437,437,437,437,69,0,69,0,473,473,473,473,473,473,501,501,501,501,501,501,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,375,375,375,375,375,375,375,375,418,418,418,418,418,418,418,418,526,526,526,526,526,373,373,373,488,488,488,488,488,508,407,407,407,407,407,407,407,407,407,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,482,482,482,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,432,432,432,432,432,432,432,402,402,405,405,405,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,399,399,399,399,399,399,399,399,399,380,380,380,380,380,397,434,434,434,434,434,434,434,434,434,64,423,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,367,367,367,367,367,367,367,367,367,367,367,387,387,387,387,387,387,387,387,387,387,387,387,387,387,387,387,387,387,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,491,491,491,491,515,515,515,515,515,509,509,509,509,509,509,509,509,509,509,509,509,509,509,487,487,487,487,509,509,391,391,44,44,507,507,507,507,507,507,507,507,44,44,44,44,44,44,489,489,489,489,489,489,489,391,391,391,391,391,391,391,391,391,511,511,511,511,511,511,511,422,422,514,514,514,514,514,514,426,426,426,426,503,503,372,372,372,372,372,372,372,372,448,448,448,459,459,415,415,415,415,415,415,415,415,415,415,415,415,415,419,419,419,419,419,521,512,512,512,389,389,389,389,389,500,500,500,500,500,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,394,394,394,394,394,394,394,394,394,394,394,394,394,394,394,394,480,480,480,480,480,480,480,506,506,506,506,506,506,506,506,506,506,506,495,495,495,495,495,495,495,495,495,495,63,63,63,63,63,63,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,513,513,484,484,462,462,462,462,462,462,462,406,406,406,406,406,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,465,465,465,465,465,465,465,465,466,466,466,466,466,466,466,466,466,43,43,43,43,43,43,436,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,494,494,494,494,494,494,494,494,494,494,494,393,393,393,393,393,393,393,393,393,393,393,393,393,393,393,393,393,393,393,393,393,393,393,393,393,393,393,393,393,393,393,393,393,393,393,393,393,393,393,393,393,393,393,474,474,474,474,474,67,67,67,67,67,67,67,67,67,67,67,67,67,67,69,0,351,351,351,351,69,0,69,0,69,0,69,0,69,0,69,0,69,0,69,0,69,0,69,0,470,69,0,69,0,69,0,69,0,470,69,0,453,453,453,453,453,453,69,0,470,111,421,468,468,468,421,421,421,69,0,69,0,69,0,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,0,69,0,69,0,429,429,429,0,69,69,0,0,69,0,69,0,69,0,69,0,69,0,69,0,69,0,69,0,69,0,69,0,69,0,69,0,69,0,69,0,443,443,443,443,443,502,69,0,69,0,502,502,502,502,516,516,516,502,502,502,502,69,0,69,0,516,0,0,0,162,497,497,497,469,469,469,469,69,0,69,0,69,0,69,0,69,0,69,0,442,69,0,69,0,442,442,442,69,0,69,0,442,69,401,0,401,401,401,401,401,69,0,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,69,0,69,0,69,0,69,0,61,61,61,61,61,61,61,61,61,61,61,61,69,0,390,390,390,69,0,0,0,119,119,119,0,0,0,0,0,0,69,0,69,0,69,0,69,0,69,0,69,0,69,0,69,0,69,0,69,0,69,0,69,0,440,440,69,0,69,0,69,0,69,0,69,0,69,0,445,445,445,445,445,445,445,445,445,445,445,445,69,0,452,452,0,0,0,0,69,0,69,0,69,69,0,69,0,0,69,69,0,69,0,0,376,376,376,376,69,0,69,0,366,366,366,366,366,58,58,58,58,58,366,366,366,366,366,366,366,366,366,366,69,0,69,0,69,0,69,0,69,0,69,0,69,0,69,0,69,0,69,0,69,0,69,0,69,0,384,384,73,69,0,69,0,382,382,382,382,476,476,476,476,476,476,476,476,476,424,424,424,424,523,523,523,523,523,523,523,523,523,69,0,69,0,69,0,0,0,0,0,0,0,0,0,0,69,0,69,0,69,0,69,0,69,0,69,0,481,481,481,481,481,481,69,0,69,0,41,41,69,0,0,0,520,520,520,520,69,0,435,435,435,435,435,69,0,69,404,404,404,404,404,404,404,404,404,404,404,404,404,404,404,404,0,499,499,499,499,499,499,499,499,378,378,447,69,0,493,493,493,493,493,493,57,57,57,57,57,447,447,447,447,447,447,45,45,45,447,36,36,36,36,69,0,439,53,53,53,53,53,53,53,53,472,472,472,472,472,69,0,0,0,0,0,0,0,0,0,0,0,0,0,69,0,69,0,69,0,69,0,69,0,69,0,392,392,395,395,395,395,69,0,69,0,69,0,496,496,496,496,496,281,287,221,0,0,287,0,69,0,69,0,69,0,449,449,449,449,388,388,388,388,388,388,416,416,416,416,416,416,416,416,416,416,69,0,69,69,0,0,0,0,0,430,430,430,430,123,338,105,128,128,128,124,124,124,308,100,331,221,221,221,162,340,102,328,224,224,230,230,230,230,230,230,160,188,212,210,303,318,347,210,303,318,347,210,303,318,347,343,93,214,345,360,93,214,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,92,105,110,130,134,144,167,182,210,219,249,257,276,278,319,332,347,360,226,251,226,216,216,76,107,122,214,234,244,265,317,362,93,321,198,198,321,328,321,321,93,321,107,199,166,166,260,294,320,260,294,320,260,294,320,103,81,265,362,265,362,265,362,76,76,307,307,307,307,282,344,245,251,163,105,130,267,267,209,232,264,214,327,168,98,98,98,98,192,263,311,162,340,311,311,353,221,198,132,93,148,327,100,331,100,331,100,331,100,331,364,214,364,74,195,74,93,352,204,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,181,220,363,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,237,152,285,152,285,152,285,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,36,370,371,372,37,373,374,375,38,39,376,377,378,379,380,381,382,383,384,385,40,386,387,41,388,389,390,391,392,393,394,395,396,42,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,43,44,418,419,420,421,422,423,45,424,425,426,427,428,429,430,46,431,432,433,47,434,435,436,437,438,439,440,441,442,443,48,444,445,446,447,448,449,49,450,50,451,452,453,454,51,455,456,457,52,458,459,53,460,461,462,463,464,465,466,467,468,54,469,470,471,472,473,474,475,476,477,478,479,480,481,55,482,56,483,484,485,486,487,488,489,490,491,492,493,57,58,59,494,495,496,497,498,499,500,501,502,503,504,505,506,60,507,508,61,509,510,62,511,512,513,514,515,516,63,517,518,64,65,519,66,520,67,521,522,523,524,525,526,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,36,370,371,372,37,373,374,375,38,39,376,377,378,379,380,381,382,383,384,385,40,386,387,41,388,389,390,391,392,393,394,395,396,42,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,43,44,418,419,420,421,422,423,45,424,425,426,427,428,429,430,46,431,432,433,47,434,435,436,437,438,439,440,441,442,443,48,444,445,446,447,448,449,49,450,50,451,452,453,454,51,455,456,457,52,458,459,53,460,461,462,463,464,465,466,467,468,54,469,470,471,472,473,474,475,476,477,478,479,480,481,55,482,56,483,484,485,486,487,488,489,490,491,492,493,57,58,59,494,495,496,497,498,499,500,501,502,503,504,505,506,60,507,508,61,509,510,62,511,512,513,514,515,516,63,517,518,64,65,519,66,520,67,521,522,523,524,525,526,321,75,334,75,75,75,219,116,88,160,188,239,277,364,160,188,160,188,341,163,168,163,168,107,111,343,271,271,113,216,220,276,291,300,237,195,195,213,276,307,314,350,314,350,314,350,314,314,314,314,314,314,77,82,314,350,158,77,82,314,350,158,77,82,314,350,158,77,82,314,350,158,77,82,314,350,158,77,82,314,350,158,77,82,314,350,158,77,82,314,350,158,314,350,314,195,118,307,307,360,93,214,157,157,157,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,36,370,371,372,37,373,374,375,38,39,376,377,378,379,380,381,382,383,384,385,40,386,387,41,388,389,390,391,392,393,394,395,396,42,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,43,44,418,419,420,421,422,423,45,424,425,426,427,428,429,430,46,431,432,433,47,434,435,436,437,438,439,440,441,442,443,48,444,445,446,447,448,449,49,450,50,451,452,453,454,51,455,456,457,52,458,459,53,460,461,462,463,464,465,466,467,468,54,469,470,471,472,473,474,475,476,477,478,479,480,481,55,482,56,483,484,485,486,487,488,489,490,491,492,493,57,58,59,494,495,496,497,498,499,500,501,502,503,504,505,506,60,507,508,61,509,510,62,511,512,513,514,515,516,63,517,518,64,65,519,66,520,67,521,522,523,524,525,526,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,36,370,371,372,37,373,374,375,38,39,376,377,378,379,380,381,382,383,384,385,40,386,387,41,388,389,390,391,392,393,394,395,396,42,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,43,44,418,419,420,421,422,423,45,424,425,426,427,428,429,430,46,431,432,433,47,434,435,436,437,438,439,440,441,442,443,48,444,445,446,447,448,449,49,450,50,451,452,453,454,51,455,456,457,52,458,459,53,460,461,462,463,464,465,466,467,468,54,469,470,471,472,473,474,475,476,477,478,479,480,481,55,482,56,483,484,485,486,487,488,489,490,491,492,493,57,58,59,494,495,496,497,498,499,500,501,502,503,504,505,506,60,507,508,61,509,510,62,511,512,513,514,515,516,63,517,518,64,65,519,66,520,67,521,522,523,524,525,526,145,197,201,292,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,134,278,319,128,131,161,209,232,264,284,103,176,141,163,168,297,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,163,163,199,155,296,131,193,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,102,206,90,173,359,210,303,318,347,154,160,181,184,188,190,193,204,219,238,293,323,326,339,356,193,70,121,144,311,222,222,231,76,142,151,154,184,209,217,232,264,326,74,186,352,74,70,225,214,214,214,138,300,138,93,148,214,327,300,105,195,132,80,97,99,147,160,175,204,207,235,239,247,277,279,289,293,323,354,267,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,36,370,371,372,37,373,374,375,38,39,376,377,378,379,380,381,382,383,384,385,40,386,387,41,388,389,390,391,392,393,394,395,396,42,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,43,44,418,419,420,421,422,423,45,424,425,426,427,428,429,430,46,431,432,433,47,434,435,436,437,438,439,440,441,442,443,48,444,445,446,447,448,449,49,450,50,451,452,453,454,51,455,456,457,52,458,459,53,460,461,462,463,464,465,466,467,468,54,469,470,471,472,473,474,475,476,477,478,479,480,481,55,482,56,483,484,485,486,487,488,489,490,491,492,493,57,58,59,494,495,496,497,498,499,500,501,502,503,504,505,506,60,507,508,61,509,510,62,511,512,513,514,515,516,63,517,518,64,65,519,66,520,67,521,522,523,524,525,526,69,114,329,329,329,329,329,329,329,298,298,298,268,268,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,36,370,371,372,37,373,374,375,38,39,376,377,378,379,380,381,382,383,384,385,40,386,387,41,388,389,390,391,392,393,394,395,396,42,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,43,44,418,419,420,421,422,423,45,424,425,426,427,428,429,430,46,431,432,433,47,434,435,436,437,438,439,440,441,442,443,48,444,445,446,447,448,449,49,450,50,451,452,453,454,51,455,456,457,52,458,459,53,460,461,462,463,464,465,466,467,468,54,469,470,471,472,473,474,475,476,477,478,479,480,481,55,482,56,483,484,485,486,487,488,489,490,491,492,493,57,58,59,494,495,496,497,498,499,500,501,502,503,504,505,506,60,507,508,61,509,510,62,511,512,513,514,515,516,63,517,518,64,65,519,66,520,67,521,522,523,524,525,526,162,340,282,282,204,195,319,319,168,168,168,119,123,338,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,111,111,111,111,198,333,163,163,163,195,332,164,166,183,185,190,257,89,352,132,353,221,343,107,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,81,81,361,165,205,74,103,132,134,214,278,319,134,214,278,319,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,36,370,371,372,37,373,374,375,38,39,376,377,378,379,380,381,382,383,384,385,40,386,387,41,388,389,390,391,392,393,394,395,396,42,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,43,44,418,419,420,421,422,423,45,424,425,426,427,428,429,430,46,431,432,433,47,434,435,436,437,438,439,440,441,442,443,48,444,445,446,447,448,449,49,450,50,451,452,453,454,51,455,456,457,52,458,459,53,460,461,462,463,464,465,466,467,468,54,469,470,471,472,473,474,475,476,477,478,479,480,481,55,482,56,483,484,485,486,487,488,489,490,491,492,493,57,58,59,494,495,496,497,498,499,500,501,502,503,504,505,506,60,507,508,61,509,510,62,511,512,513,514,515,516,63,517,518,64,65,519,66,520,67,521,522,523,524,525,526,243,340,193,308,308,352,352,352,352,352,105,299,144,311,113,282,132,76,103,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,69,103,176,103,176,340,340,171,93,193,214,260,280,222,299,123,338,288,276,271,300,235,279,256,168,110,134,278,319,137,191,80,107,111,133,140,146,150,167,181,204,213,216,219,233,260,271,287,294,297,320,359,363,237,167,237,344,315,315,315,315,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,36,36,36,36,36,370,371,372,37,37,37,37,37,373,374,375,38,38,38,38,38,39,39,39,39,39,376,377,378,379,380,381,382,383,384,385,40,40,40,40,40,386,387,41,41,41,41,41,388,389,390,391,392,393,394,395,396,42,42,42,42,42,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,43,43,43,43,43,44,44,44,44,44,418,419,420,421,422,423,45,45,45,45,45,424,425,426,427,428,429,430,46,46,46,46,46,431,432,433,47,47,47,47,47,434,435,436,437,438,439,440,441,442,443,48,48,48,48,48,444,445,446,447,448,449,49,49,49,49,49,450,50,50,50,50,50,451,452,453,454,51,51,51,51,51,455,456,457,52,52,52,52,52,458,459,53,53,53,53,53,460,461,462,463,464,465,466,467,468,54,54,54,54,54,469,470,471,472,473,474,475,476,477,478,479,480,481,55,55,55,55,55,482,56,56,56,56,56,483,484,485,486,487,488,489,490,491,492,493,57,57,57,57,57,58,58,58,58,58,59,59,59,59,59,494,495,496,497,498,499,500,501,502,503,504,505,506,60,60,60,60,60,507,508,61,61,61,61,61,509,510,62,62,62,62,62,511,512,513,514,515,516,63,63,63,63,63,517,518,64,64,64,64,64,65,65,65,65,65,519,66,66,66,66,66,520,67,67,67,67,67,521,522,523,524,525,526,216,271,176,241,342,166,209,232,242,264,274,290,324,118,181,220,363,116,127,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,36,370,371,372,37,373,374,375,38,39,376,377,378,379,380,381,382,383,384,385,40,386,387,41,388,389,390,391,392,393,394,395,396,42,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,43,44,418,419,420,421,422,423,45,424,425,426,427,428,429,430,46,431,432,433,47,434,435,436,437,438,439,440,441,442,443,48,444,445,446,447,448,449,49,450,50,451,452,453,454,51,455,456,457,52,458,459,53,460,461,462,463,464,465,466,467,468,54,469,470,471,472,473,474,475,476,477,478,479,480,481,55,482,56,483,484,485,486,487,488,489,490,491,492,493,57,58,59,494,495,496,497,498,499,500,501,502,503,504,505,506,60,507,508,61,509,510,62,511,512,513,514,515,516,63,517,518,64,65,519,66,520,67,521,522,523,524,525,526,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526,132,132,102,180,180,364,364,133,146,233,291,320,221,221,221,221,343,343,93,110,93,222,222,207,310,207,315,93,214,360,90,173,124,124,124,167,332,140,300,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,92,332,332,110,93,107,111,214,360,93,132,218,257,198,309,198,181,226,363,107,110,112,198,328,177,357,357,357,100,331,70,74,177,195,239,257,277,282,283,323,328,339,351,194,198,236,267,268,307,312,312,88,202,215,219,356,132,110,276,263,263,113,216,89,155,296,106,130,127,151,193,193,208,132,187,187,187,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,138,132,132,183,185,183,185,183,185,183,185,183,185,183,185,217,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,223,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,36,370,371,372,37,373,374,375,38,39,376,377,378,379,380,381,382,383,384,385,40,386,387,41,388,389,390,391,392,393,394,395,396,42,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,43,44,418,419,420,421,422,423,45,424,425,426,427,428,429,430,46,431,432,433,47,434,435,436,437,438,439,440,441,442,443,48,444,445,446,447,448,449,49,450,50,451,452,453,454,51,455,456,457,52,458,459,53,460,461,462,463,464,465,466,467,468,54,469,470,471,472,473,474,475,476,477,478,479,480,481,55,482,56,483,484,485,486,487,488,489,490,491,492,493,57,58,59,494,495,496,497,498,499,500,501,502,503,504,505,506,60,507,508,61,509,510,62,511,512,513,514,515,516,63,517,518,64,65,519,66,520,67,521,522,523,524,525,526,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,103,329,329,329,309,79,280,141,219,93,115,299,76,76,334,129,334,171,283,267,334,256,334,92,105,107,110,111,122,130,134,136,144,167,182,207,216,219,225,240,244,249,257,276,278,310,319,332,356,226,226,210,347,93,198,214,234,265,317,362,80,97,99,147,239,277,289,354,235,267,279,271,273,334,142,222,222,222,222,222,122,216,219,240,244,257,356,352,364,225,282,92,105,107,110,111,130,134,136,144,167,182,207,225,249,276,278,310,319,332,226,226,210,347,93,198,214,234,265,317,362,124,124,295,124,295,124,295,140,259,310,327,70,74,97,99,111,181,195,212,214,222,261,280,289,309,327,354,335,335,335,335,335,70,89,242,155,296,273,280,69,223,69,69,95,275,236,229,229,229,237,237,335,335,335,335,335,70,89,242,155,296,273,141,141,280,98,103,218,359,149,259,271,300,334,334,334,143,236,111,181,245,252,255,346,357,251,98,251,251,111,81,167,167,167,137,191,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,100,331,335,221,88,283,242,168,168,168,211,323,339,168,168,168,340,308,308,308,340,95,352,352,352,88,270,307,194,194,270,307,307,270,307,70,237,237,155,348,155,348,113,274,324,274,324,274,324,113,274,324,274,324,274,324,113,113,309,131,209,232,264,131,209,232,264,131,209,232,264,131,209,232,264,131,131,131,316,336,84,153,155,228,246,296,301,316,336,337,153,246,316,336,337,228,84,228,301,316,336,84,228,301,316,336,246,246,246,246,69,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,206,174,76,76,138,83,189,275,309,83,83,225,180,180,81,87,93,94,122,133,146,169,182,216,227,240,244,249,257,259,306,358,98,291,300,291,300,133,146,345,85,118,121,130,169,249,304,304,101,101,101,82,158,178,140,140,297,345,140,140,297,114,128,114,128,114,128,114,128,118,105,199,364,71,126,196,262,71,126,196,262,262,123,338,233,233,237,132,81,118,121,152,226,260,265,266,276,285,294,299,320,345,362,85,182,85,182,85,182,85,182,299,183,185,280,315,341,290,304,222,222,105,119,124,124,192,325,304,304,304,304,263,364,160,188,293,92,144,167,276,137,191,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,137,191,308,269,269,91,155,156,160,188,286,293,296,348,181,220,271,363,181,220,271,363,81,195,91,156,284,293,296,125,343,171,353,81,87,93,94,122,169,182,216,227,240,244,249,257,259,306,358,98,291,300,291,300,345,85,118,121,130,169,249,181,220,363,132,151,154,184,326,258,258,82,137,158,191,314,350,100,331,100,331,100,331,364,229,229,229,229,171,137,191,141,78,78,78,78,78,78,110,134,278,319,187,246,233,233,208,183,185,315,271,271,89,242,120,135,139,200,209,232,253,302,355,247,254,175,150,235,279,282,325,365,325,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,195,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,36,370,371,372,37,373,374,375,38,39,376,377,378,379,380,381,382,383,384,385,40,386,387,41,388,389,390,391,392,393,394,395,396,42,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,43,44,418,419,420,421,422,423,45,424,425,426,427,428,429,430,46,431,432,433,47,434,435,436,437,438,439,440,441,442,443,48,444,445,446,447,448,449,49,450,50,451,452,453,454,51,455,456,457,52,458,459,53,460,461,462,463,464,465,466,467,468,54,469,470,471,472,473,474,475,476,477,478,479,480,481,55,482,56,483,484,485,486,487,488,489,490,491,492,493,57,58,59,494,495,496,497,498,499,500,501,502,503,504,505,506,60,507,508,61,509,510,62,511,512,513,514,515,516,63,517,518,64,65,519,66,520,67,521,522,523,524,525,526,178,178,178,178,178,178,178,178,176,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,86,176,103,340,340,171,236,231,283,309,166,166,225,132,273,142,333,110,198,198,198,333,107,221,328,174,143,143,143,76,343,361,165,205,269,129,221,119,119,119,117,142,192,197,198,201,213,220,243,254,280,364,182,182,286,192,192,222,222,222,95,181,363,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,218,171,357,357,357,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,327,344,341,214,251,72,77,83,84,88,101,103,131,133,138,139,143,145,146,147,153,155,160,161,165,170,173,176,179,187,188,189,194,198,202,205,208,209,210,211,215,219,231,232,235,236,238,239,241,246,247,248,250,253,254,256,260,261,264,267,268,269,270,275,277,279,285,292,294,295,298,299,301,302,305,307,312,313,318,320,324,325,329,337,339,342,348,349,353,355,356,361,365,304,214,214,189,275,166,72,77,83,84,88,101,103,113,131,133,138,139,143,145,146,147,148,153,155,160,161,165,170,173,176,179,187,188,189,194,198,202,205,206,208,209,210,211,215,216,219,231,232,235,236,238,239,241,246,247,248,250,253,254,256,260,261,264,267,268,269,270,275,277,279,285,292,294,295,298,299,301,302,305,307,312,313,317,318,320,324,325,329,337,339,342,348,349,353,355,356,361,362,365,140,109,71,74,93,123,126,142,154,177,183,184,185,193,196,257,262,326,338,93,214,222,222,142,297,225,86,340,340,328,93,98,214,217,360,132,132,152,259,285,167,70,71,82,85,92,94,96,106,108,126,129,149,152,158,159,169,172,180,192,196,210,226,233,242,252,257,259,260,263,271,276,285,288,291,300,303,306,314,318,322,344,346,347,299,183,185,199,100,331,328,172,364,73,89,90,98,110,112,113,114,118,121,123,128,130,134,140,142,144,151,157,166,173,178,183,185,190,193,199,200,216,218,222,224,245,249,255,262,266,272,278,290,302,311,315,319,321,338,345,350,357,359,276,283,110,110,204,105,171,198,214,229,267,270,307,198,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,36,370,371,372,37,373,374,375,38,39,376,377,378,379,380,381,382,383,384,385,40,386,387,41,388,389,390,391,392,393,394,395,396,42,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,43,44,418,419,420,421,422,423,45,424,425,426,427,428,429,430,46,431,432,433,47,434,435,436,437,438,439,440,441,442,443,48,444,445,446,447,448,449,49,450,50,451,452,453,454,51,455,456,457,52,458,459,53,460,461,462,463,464,465,466,467,468,54,469,470,471,472,473,474,475,476,477,478,479,480,481,55,482,56,483,484,485,486,487,488,489,490,491,492,493,57,58,59,494,495,496,497,498,499,500,501,502,503,504,505,506,60,507,508,61,509,510,62,511,512,513,514,515,516,63,517,518,64,65,519,66,520,67,521,522,523,524,525,526,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,192,154,184,326,100,331,304,304,332,286,130,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,36,370,371,372,37,373,374,375,38,39,376,377,378,379,380,381,382,383,384,385,40,386,387,41,388,389,390,391,392,393,394,395,396,42,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,43,44,418,419,420,421,422,423,45,424,425,426,427,428,429,430,46,431,432,433,47,434,435,436,437,438,439,440,441,442,443,48,444,445,446,447,448,449,49,450,50,451,452,453,454,51,455,456,457,52,458,459,53,460,461,462,463,464,465,466,467,468,54,469,470,471,472,473,474,475,476,477,478,479,480,481,55,482,56,483,484,485,486,487,488,489,490,491,492,493,57,58,59,494,495,496,497,498,499,500,501,502,503,504,505,506,60,507,508,61,509,510,62,511,512,513,514,515,516,63,517,518,64,65,519,66,520,67,521,522,523,524,525,526,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,36,370,371,372,37,373,374,375,38,39,376,377,378,379,380,381,382,383,384,385,40,386,387,41,388,389,390,391,392,393,394,395,396,42,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,43,44,418,419,420,421,422,423,45,424,425,426,427,428,429,430,46,431,432,433,47,434,435,436,437,438,439,440,441,442,443,48,444,445,446,447,448,449,49,450,50,451,452,453,454,51,455,456,457,52,458,459,53,460,461,462,463,464,465,466,467,468,54,469,470,471,472,473,474,475,476,477,478,479,480,481,55,482,56,483,484,485,486,487,488,489,490,491,492,493,57,58,59,494,495,496,497,498,499,500,501,502,503,504,505,506,60,507,508,61,509,510,62,511,512,513,514,515,516,63,517,518,64,65,519,66,520,67,521,522,523,524,525,526,109,107,111,170,342,111,229,229,229,171,137,191,335,335,335,335,335,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,36,370,371,372,37,373,374,375,38,39,376,377,378,379,380,381,382,383,384,385,40,386,387,41,388,389,390,391,392,393,394,395,396,42,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,43,44,418,419,420,421,422,423,45,424,425,426,427,428,429,430,46,431,432,433,47,434,435,436,437,438,439,440,441,442,443,48,444,445,446,447,448,449,49,450,50,451,452,453,454,51,455,456,457,52,458,459,53,460,461,462,463,464,465,466,467,468,54,469,470,471,472,473,474,475,476,477,478,479,480,481,55,482,56,483,484,485,486,487,488,489,490,491,492,493,57,58,59,494,495,496,497,498,499,500,501,502,503,504,505,506,60,507,508,61,509,510,62,511,512,513,514,515,516,63,517,518,64,65,519,66,520,67,521,522,523,524,525,526,152,210,285,303,318,347,340,312,167,312,237,300,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,167,222,218,357,181,220,286,288,286,87,104,227,358,192,221,244,244,244,244,167,332,299,114,128,106,197,212,252,292,346,112,112,110,182,278,110,110,182,278,105,134,278,319,221,221,167,332,332,332,332,140,345,128,128,128,128,111,118,297,237,271,300,218,212,107,206,273,110,112,198,226,157,157,157,263,110,182,278,142,151,154,164,184,186,326,352,74,115,92,118,119,130,144,167,210,249,299,303,311,318,322,347,92,118,119,130,144,167,210,249,299,303,311,318,322,347,92,118,119,130,144,167,210,249,299,303,311,318,322,347,195,309,112,214,112,112,112,214,100,331,251,93,93,214,192,87,104,118,209,227,232,242,255,264,265,266,290,303,306,311,318,322,341,358,362,345,345,345,96,108,123,130,159,182,240,249,272,338,96,108,123,159,182,240,272,338,96,108,123,159,272,338,251,87,104,118,209,227,232,242,255,264,265,266,290,303,306,311,318,322,341,358,362,345,345,345,96,108,123,130,159,182,240,249,272,338,87,94,122,133,146,169,182,210,216,227,240,244,249,257,259,303,306,318,347,358,291,300,291,300,133,146,210,303,318,345,347,98,85,118,121,130,169,249,96,108,123,159,182,240,272,338,96,108,123,159,272,338,87,104,118,209,227,232,242,255,264,265,266,290,303,306,311,318,322,341,358,362,345,345,345,96,108,123,130,159,182,240,249,272,338,96,108,123,159,182,240,272,338,96,108,123,159,272,338,176,176,0,534,534,534,534,534,534,534,534,534,534,534,534,534,534,534,534,534,534,534,534,534,534,534,0,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,805,805,805,805,805,805,567,0,833,833,833,833,833,833,833,833,833,833,833,833,833,833,833,833,833,833,833,833,833,833,833,833,833,833,833,833,833,833,833,833,833,567,0,871,871,847,847,847,847,847,847,847,847,847,847,847,847,847,847,847,847,847,847,847,847,549,549,549,549,549,549,549,549,549,549,567,0,548,548,548,548,548,548,548,548,548,548,548,548,548,887,887,887,887,887,887,887,887,887,887,887,887,887,887,887,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,567,0,567,0,567,0,567,567,0,0,567,0,557,557,557,557,557,557,567,0,567,0,567,0,567,0,848,848,848,848,0,0,0,0,0,0,0,0,0,0,846,567,0,567,0,567,0,552,552,552,552,552,552,552,552,552,552,552,552,567,0,567,0,567,0,895,895,895,567,0,567,0,567,0,858,858,858,797,797,797,817,817,817,817,567,0,567,0,876,567,0,876,876,567,0,567,841,0,841,841,841,841,820,820,820,820,798,798,798,798,798,567,0,793,793,793,793,793,793,793,793,793,793,793,793,793,567,567,0,0,706,567,0,567,0,567,0,567,0,567,0,567,0,567,0,873,873,873,873,873,873,567,0,567,0,0,0,0,0,0,0,0,0,0,0,0,0,567,0,567,0,567,0,567,0,567,0,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,660,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,699,700,701,702,703,704,705,706,707,708,709,710,711,712,713,714,715,716,717,718,719,720,721,722,723,724,725,726,727,728,729,730,731,732,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,788,789,790,791,542,792,793,794,795,796,797,798,799,800,801,802,543,803,804,805,544,806,807,808,809,810,545,811,812,546,813,814,547,815,816,548,817,818,819,549,820,821,822,823,824,825,826,550,827,828,829,830,831,832,551,833,834,835,836,837,552,838,553,839,840,841,554,842,843,844,555,845,846,847,556,557,848,849,850,851,852,853,854,855,856,857,858,859,558,860,861,862,863,864,559,865,866,867,868,869,870,871,872,873,874,560,875,876,877,878,879,880,881,882,561,883,884,885,886,887,888,889,890,891,892,893,894,895,562,896,563,564,897,898,565,566,899,900,567,0,567,0,567,0,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,660,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,699,700,701,702,703,704,705,706,707,708,709,710,711,712,713,714,715,716,717,718,719,720,721,722,723,724,725,726,727,728,729,730,731,732,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,788,868,868,868,868,868,868,558,558,558,558,558,558,558,558,567,0,567,0,550,550,550,550,550,550,550,550,550,550,567,0,550,550,567,0,567,0,0,0,0,811,811,811,811,811,811,811,811,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,844,844,844,844,844,844,844,844,884,884,884,884,838,838,838,567,0,567,0,860,860,860,860,860,567,0,801,801,801,801,801,801,801,567,0,0,0,0,0,0,0,567,0,567,0,560,560,560,560,560,560,560,560,560,560,560,560,560,560,556,556,556,556,556,556,556,556,556,556,553,553,553,553,553,553,553,553,553,553,567,0,567,0,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,808,808,808,808,808,808,808,808,808,808,567,0,567,0,567,0,567,0,567,0,567,567,0,0,567,0,567,0,567,0,818,818,818,818,818,818,818,818,818,567,0,567,0,567,0,545,545,545,545,545,545,545,545,567,0,567,0,567,0,567,0,790,790,0,0,0,0,0,0,0,0,567,0,567,0,544,544,544,544,544,544,544,544,544,544,544,544,544,544,544,567,567,0,0,567,0,567,0,567,0,567,0,567,0,567,0,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,567,0,567,0,562,562,562,562,562,562,562,562,562,562,562,562,562,562,567,0,567,0,0,0,0,779,567,0,567,0,883,883,883,883,567,0,567,567,0,0,567,0,567,0,567,567,0,0,567,0,567,0,567,0,567,0,567,0,567,0,0,837,837,837,837,567,0,837,837,837,837,567,0,567,0,893,893,893,893,893,893,878,878,878,878,878,878,881,881,881,881,881,881,881,881,881,881,881,881,881,881,881,881,881,881,881,881,881,821,821,821,821,821,821,821,821,846,846,846,846,846,846,846,846,856,856,856,856,856,840,840,840,832,832,832,832,832,791,791,791,791,791,791,791,791,791,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,834,834,834,834,834,834,834,807,807,795,795,795,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,803,803,803,803,803,803,803,803,803,857,857,857,857,857,849,879,879,879,879,879,879,879,879,879,563,853,861,861,861,861,861,861,861,861,861,861,861,861,861,861,861,861,861,861,861,861,861,861,870,870,870,870,870,870,870,870,870,870,870,822,822,822,822,822,822,822,822,822,822,822,822,822,822,822,822,822,822,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,810,810,810,810,889,889,889,889,889,842,842,842,842,842,842,842,842,842,842,842,842,842,842,813,813,813,813,842,842,864,864,551,551,819,819,819,819,819,819,819,819,551,551,551,551,551,551,864,864,864,864,864,864,864,864,864,894,894,894,894,894,894,894,815,815,888,888,888,888,888,888,823,823,823,823,865,865,835,835,835,835,835,835,835,835,845,845,845,800,800,804,804,804,804,804,804,804,804,804,804,804,804,804,877,877,877,877,877,886,854,854,854,869,869,869,869,869,897,897,897,897,897,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,862,831,831,831,831,831,831,831,831,831,831,831,831,831,831,831,831,814,814,814,814,814,814,814,806,806,806,806,806,806,806,806,806,806,806,891,891,891,891,891,891,891,891,891,891,566,566,566,566,566,566,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,796,796,796,796,796,796,796,875,875,875,875,875,882,882,882,882,882,882,882,882,882,882,882,882,882,882,882,882,882,882,882,882,882,882,882,882,882,882,882,882,882,882,882,882,882,882,882,882,882,882,882,882,882,882,836,836,836,836,836,836,836,836,855,855,855,855,855,855,855,855,855,543,543,543,543,543,543,812,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,863,863,863,863,863,863,863,863,863,863,863,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,829,829,829,829,829,555,555,555,555,555,555,555,555,555,555,555,555,555,555,567,0,567,0,567,0,567,0,567,0,567,0,567,0,567,0,567,0,852,567,0,567,0,567,0,567,0,852,567,0,826,826,826,826,826,826,567,0,852,706,874,900,900,900,874,874,874,567,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,567,0,567,0,567,0,830,830,830,0,567,0,567,0,567,0,567,0,567,0,567,0,567,0,567,0,567,0,567,0,567,0,567,0,567,0,567,0,567,0,809,809,809,809,809,0,890,890,890,794,794,794,794,567,0,567,0,567,0,567,0,567,0,567,0,843,567,0,567,0,843,843,843,567,0,567,0,843,567,0,567,0,567,0,567,0,567,0,561,561,561,561,561,561,561,561,561,561,561,561,567,0,872,872,872,567,0,0,0,0,0,0,0,567,0,567,0,567,0,567,0,567,0,567,0,567,0,567,0,899,899,567,0,567,0,567,0,567,0,802,802,0,0,567,0,567,0,567,567,0,567,0,0,567,567,0,567,0,0,567,0,896,896,896,896,896,564,564,564,564,564,896,896,896,896,896,896,896,896,896,896,567,0,567,0,567,0,567,0,567,0,567,0,567,0,567,0,567,0,567,0,567,0,567,0,567,0,839,839,839,839,792,792,792,792,792,792,792,792,792,867,867,867,867,567,0,567,0,567,0,0,0,0,0,0,0,567,0,567,0,567,0,567,0,567,0,567,0,567,0,567,0,542,542,567,0,0,825,825,825,825,567,0,828,828,828,828,828,567,0,887,565,565,565,565,565,565,565,565,866,866,866,866,866,567,0,0,0,0,0,567,0,567,0,567,0,567,0,567,0,567,0,789,789,892,892,892,892,567,0,567,0,885,885,885,885,885,634,0,0,634,0,567,0,567,0,827,827,827,827,898,898,898,898,898,898,816,816,816,816,816,816,816,816,816,816,567,0,567,0,0,0,0,880,880,880,880,708,730,787,778,778,778,679,680,703,613,775,775,675,600,659,728,758,600,659,728,758,600,659,728,758,619,678,710,724,619,678,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,571,606,659,673,676,681,707,710,715,716,728,747,752,755,766,787,592,751,592,583,608,619,732,733,779,574,678,631,631,574,613,574,574,678,574,779,630,630,582,609,629,582,609,629,582,609,629,575,583,608,583,608,583,608,607,607,607,607,611,765,616,751,787,752,769,769,620,643,737,619,658,591,604,604,604,604,662,785,666,666,666,631,748,658,678,738,679,680,679,680,679,680,679,680,665,619,665,572,668,626,668,678,718,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,669,742,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,782,756,767,756,767,756,767,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,660,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,699,700,701,702,703,704,705,706,707,708,709,710,711,712,713,714,715,716,717,718,719,720,721,722,723,724,725,726,727,728,729,730,731,732,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,788,789,790,791,542,792,793,794,795,796,797,798,799,800,801,802,543,803,804,805,544,806,807,808,809,810,545,811,812,546,813,814,547,815,816,548,817,818,819,549,820,821,822,823,824,825,826,550,827,828,829,830,831,832,551,833,834,835,836,837,552,838,553,839,840,841,554,842,843,844,555,845,846,847,556,557,848,849,850,851,852,853,854,855,856,857,858,859,558,860,861,862,863,864,559,865,866,867,868,869,870,871,872,873,874,560,875,876,877,878,879,880,881,882,561,883,884,885,886,887,888,889,890,891,892,893,894,895,562,896,563,564,897,898,565,566,899,900,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,660,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,699,700,701,702,703,704,705,706,707,708,709,710,711,712,713,714,715,716,717,718,719,720,721,722,723,724,725,726,727,728,729,730,731,732,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,788,789,790,791,542,792,793,794,795,796,797,798,799,800,801,802,543,803,804,805,544,806,807,808,809,810,545,811,812,546,813,814,547,815,816,548,817,818,819,549,820,821,822,823,824,825,826,550,827,828,829,830,831,832,551,833,834,835,836,837,552,838,553,839,840,841,554,842,843,844,555,845,846,847,556,557,848,849,850,851,852,853,854,855,856,857,858,859,558,860,861,862,863,864,559,865,866,867,868,869,870,871,872,873,874,560,875,876,877,878,879,880,881,882,561,883,884,885,886,887,888,889,890,891,892,893,894,895,562,896,563,564,897,898,565,566,899,900,574,647,647,647,647,610,664,694,665,585,591,591,706,779,721,721,747,683,741,782,572,572,747,607,603,781,603,781,603,781,781,781,781,781,781,781,603,655,750,781,586,603,655,750,781,586,603,655,750,781,586,603,655,750,781,586,603,655,750,781,586,603,655,750,781,586,603,655,750,781,586,603,655,750,781,586,603,781,781,572,699,607,607,710,619,678,714,714,714,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,660,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,699,700,701,702,703,704,705,706,707,708,709,710,711,712,713,714,715,716,717,718,719,720,721,722,723,724,725,726,727,728,729,730,731,732,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,788,789,790,791,542,792,793,794,795,796,797,798,799,800,801,802,543,803,804,805,544,806,807,808,809,810,545,811,812,546,813,814,547,815,816,548,817,818,819,549,820,821,822,823,824,825,826,550,827,828,829,830,831,832,551,833,834,835,836,837,552,838,553,839,840,841,554,842,843,844,555,845,846,847,556,557,848,849,850,851,852,853,854,855,856,857,858,859,558,860,861,862,863,864,559,865,866,867,868,869,870,871,872,873,874,560,875,876,877,878,879,880,881,882,561,883,884,885,886,887,888,889,890,891,892,893,894,895,562,896,563,564,897,898,565,566,899,900,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,660,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,699,700,701,702,703,704,705,706,707,708,709,710,711,712,713,714,715,716,717,718,719,720,721,722,723,724,725,726,727,728,729,730,731,732,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,788,789,790,791,542,792,793,794,795,796,797,798,799,800,801,802,543,803,804,805,544,806,807,808,809,810,545,811,812,546,813,814,547,815,816,548,817,818,819,549,820,821,822,823,824,825,826,550,827,828,829,830,831,832,551,833,834,835,836,837,552,838,553,839,840,841,554,842,843,844,555,845,846,847,556,557,848,849,850,851,852,853,854,855,856,857,858,859,558,860,861,862,863,864,559,865,866,867,868,869,870,871,872,873,874,560,875,876,877,878,879,880,881,882,561,883,884,885,886,887,888,889,890,891,892,893,894,895,562,896,563,564,897,898,565,566,899,900,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,606,755,766,620,638,643,704,737,745,778,598,591,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,745,588,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,685,703,578,579,717,600,659,728,758,588,625,669,689,718,764,777,588,666,707,729,771,646,646,620,628,643,682,737,626,668,668,771,677,619,619,619,683,619,658,678,738,683,787,572,748,589,610,622,664,689,705,718,726,743,746,769,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,660,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,699,700,701,702,703,704,705,706,707,708,709,710,711,712,713,714,715,716,717,718,719,720,721,722,723,724,725,726,727,728,729,730,731,732,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,788,789,790,791,542,792,793,794,795,796,797,798,799,800,801,802,543,803,804,805,544,806,807,808,809,810,545,811,812,546,813,814,547,815,816,548,817,818,819,549,820,821,822,823,824,825,826,550,827,828,829,830,831,832,551,833,834,835,836,837,552,838,553,839,840,841,554,842,843,844,555,845,846,847,556,557,848,849,850,851,852,853,854,855,856,857,858,859,558,860,861,862,863,864,559,865,866,867,868,869,870,871,872,873,874,560,875,876,877,878,879,880,881,882,561,883,884,885,886,887,888,889,890,891,892,893,894,895,562,896,563,564,897,898,565,566,899,900,567,696,772,772,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,660,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,699,700,701,702,703,704,705,706,707,708,709,710,711,712,713,714,715,716,717,718,719,720,721,722,723,724,725,726,727,728,729,730,731,732,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,788,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,660,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,699,700,701,702,703,704,705,706,707,708,709,710,711,712,713,714,715,716,717,718,719,720,721,722,723,724,725,726,727,728,729,730,731,732,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,788,789,790,791,542,792,793,794,795,796,797,798,799,800,801,802,543,803,804,805,544,806,807,808,809,810,545,811,812,546,813,814,547,815,816,548,817,818,819,549,820,821,822,823,824,825,826,550,827,828,829,830,831,832,551,833,834,835,836,837,552,838,553,839,840,841,554,842,843,844,555,845,846,847,556,557,848,849,850,851,852,853,854,855,856,857,858,859,558,860,861,862,863,864,559,865,866,867,868,869,870,871,872,873,874,560,875,876,877,878,879,880,881,882,561,883,884,885,886,887,888,889,890,891,892,893,894,895,562,896,563,564,897,898,565,566,899,900,611,611,718,572,766,766,591,591,591,708,730,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,706,706,706,706,631,572,673,569,630,653,777,719,626,748,779,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,575,575,623,594,759,668,748,606,619,755,766,606,619,755,766,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,660,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,699,700,701,702,703,704,705,706,707,708,709,710,711,712,713,714,715,716,717,718,719,720,721,722,723,724,725,726,727,728,729,730,731,732,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,788,789,790,791,542,792,793,794,795,796,797,798,799,800,801,802,543,803,804,805,544,806,807,808,809,810,545,811,812,546,813,814,547,815,816,548,817,818,819,549,820,821,822,823,824,825,826,550,827,828,829,830,831,832,551,833,834,835,836,837,552,838,553,839,840,841,554,842,843,844,555,845,846,847,556,557,848,849,850,851,852,853,854,855,856,857,858,859,558,860,861,862,863,864,559,865,866,867,868,869,870,871,872,873,874,560,875,876,877,878,879,880,881,882,561,883,884,885,886,887,888,889,890,891,892,893,894,895,562,896,563,564,897,898,565,566,899,900,687,588,626,626,626,626,626,787,739,666,707,611,748,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,654,678,588,609,619,587,646,739,708,730,615,747,683,721,589,743,695,591,606,715,755,766,657,571,578,582,609,629,634,645,669,701,705,706,718,720,721,742,761,779,780,782,571,782,765,786,786,786,786,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,660,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,699,700,701,702,703,704,705,706,707,708,709,710,711,712,713,714,715,716,717,718,719,720,721,722,723,724,725,726,727,728,729,730,731,732,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,788,789,790,791,542,542,542,542,542,792,793,794,795,796,797,798,799,800,801,802,543,543,543,543,543,803,804,805,544,544,544,544,544,806,807,808,809,810,545,545,545,545,545,811,812,546,546,546,546,546,813,814,547,547,547,547,547,815,816,548,548,548,548,548,817,818,819,549,549,549,549,549,820,821,822,823,824,825,826,550,550,550,550,550,827,828,829,830,831,832,551,551,551,551,551,833,834,835,836,837,552,552,552,552,552,838,553,553,553,553,553,839,840,841,554,554,554,554,554,842,843,844,555,555,555,555,555,845,846,847,556,556,556,556,556,557,557,557,557,557,848,849,850,851,852,853,854,855,856,857,858,859,558,558,558,558,558,860,861,862,863,864,559,559,559,559,559,865,866,867,868,869,870,871,872,873,874,560,560,560,560,560,875,876,877,878,879,880,881,882,561,561,561,561,561,883,884,885,886,887,888,889,890,891,892,893,894,895,562,562,562,562,562,896,563,563,563,563,563,564,564,564,564,564,897,898,565,565,565,565,565,566,566,566,566,566,899,900,721,570,612,620,627,630,643,737,763,784,699,669,742,632,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,660,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,699,700,701,702,703,704,705,706,707,708,709,710,711,712,713,714,715,716,717,718,719,720,721,722,723,724,725,726,727,728,729,730,731,732,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,788,789,790,791,542,792,793,794,795,796,797,798,799,800,801,802,543,803,804,805,544,806,807,808,809,810,545,811,812,546,813,814,547,815,816,548,817,818,819,549,820,821,822,823,824,825,826,550,827,828,829,830,831,832,551,833,834,835,836,837,552,838,553,839,840,841,554,842,843,844,555,845,846,847,556,557,848,849,850,851,852,853,854,855,856,857,858,859,558,860,861,862,863,864,559,865,866,867,868,869,870,871,872,873,874,560,875,876,877,878,879,880,881,882,561,883,884,885,886,887,888,889,890,891,892,893,894,895,562,896,563,564,897,898,565,566,899,900,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,789,790,791,792,793,794,795,796,797,798,799,800,801,802,803,804,805,806,807,808,809,810,811,812,813,814,815,816,817,818,819,820,821,822,823,824,825,826,827,828,829,830,831,832,833,834,835,836,837,838,839,840,841,842,843,844,845,846,847,848,849,850,851,852,853,854,855,856,857,858,859,860,861,862,863,864,865,866,867,868,869,870,871,872,873,874,875,876,877,878,879,880,881,882,883,884,885,886,887,888,889,890,891,892,893,894,895,896,897,898,899,900,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,789,790,791,792,793,794,795,796,797,798,799,800,801,802,803,804,805,806,807,808,809,810,811,812,813,814,815,816,817,818,819,820,821,822,823,824,825,826,827,828,829,830,831,832,833,834,835,836,837,838,839,840,841,842,843,844,845,846,847,848,849,850,851,852,853,854,855,856,857,858,859,860,861,862,863,864,865,866,867,868,869,870,871,872,873,874,875,876,877,878,879,880,881,882,883,884,885,886,887,888,889,890,891,892,893,894,895,896,897,898,899,900,748,748,703,580,580,665,665,629,701,720,741,761,678,715,678,646,646,726,727,726,786,619,678,710,579,717,571,673,780,683,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,673,716,673,715,619,678,706,710,779,678,671,748,596,631,631,592,669,742,779,715,722,631,613,693,661,661,661,679,680,572,573,610,611,613,625,664,668,689,693,771,595,607,631,691,769,772,774,774,694,748,715,747,662,662,719,697,752,588,628,632,588,684,748,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,748,748,569,653,569,653,569,653,569,653,569,653,569,653,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,744,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,660,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,699,700,701,702,703,704,705,706,707,708,709,710,711,712,713,714,715,716,717,718,719,720,721,722,723,724,725,726,727,728,729,730,731,732,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,788,789,790,791,542,792,793,794,795,796,797,798,799,800,801,802,543,803,804,805,544,806,807,808,809,810,545,811,812,546,813,814,547,815,816,548,817,818,819,549,820,821,822,823,824,825,826,550,827,828,829,830,831,832,551,833,834,835,836,837,552,838,553,839,840,841,554,842,843,844,555,845,846,847,556,557,848,849,850,851,852,853,854,855,856,857,858,859,558,860,861,862,863,864,559,865,866,867,868,869,870,871,872,873,874,560,875,876,877,878,879,880,881,882,561,883,884,885,886,887,888,889,890,891,892,893,894,895,562,896,563,564,897,898,565,566,899,900,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,596,624,587,598,678,712,739,618,654,573,769,695,571,606,663,673,676,677,681,706,707,715,716,726,727,747,752,755,766,779,787,592,592,659,728,583,608,619,631,678,732,733,610,622,664,705,589,743,769,721,736,682,646,646,646,646,646,626,665,677,611,571,606,663,673,676,677,681,706,707,715,716,726,727,747,752,755,766,779,787,592,592,659,728,583,608,619,631,678,732,733,780,783,727,658,572,587,596,619,646,658,668,669,675,706,734,771,719,771,736,587,567,744,567,567,584,593,691,639,639,639,782,782,719,771,736,598,598,587,578,604,671,617,783,683,721,691,616,661,669,692,698,706,776,751,604,751,751,706,575,571,571,571,657,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,679,680,694,573,591,591,591,625,689,591,591,591,584,626,626,626,694,607,633,595,595,607,633,607,607,633,771,782,782,763,784,763,784,763,784,763,784,763,784,763,784,596,620,643,737,745,620,643,737,745,620,643,737,745,620,643,737,745,745,745,745,601,656,576,601,641,651,652,656,770,773,601,651,652,656,773,641,576,601,641,656,770,576,601,641,656,770,652,652,652,652,567,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,685,740,581,593,596,749,581,581,677,580,580,575,637,642,648,649,674,676,678,681,720,760,761,783,604,683,741,683,741,720,724,761,676,686,699,729,752,760,762,762,586,636,655,780,780,724,780,780,696,778,696,778,696,778,696,778,699,787,665,590,660,670,688,590,670,688,660,660,708,730,701,701,782,748,575,582,583,592,608,609,629,699,724,725,729,739,747,756,767,681,686,681,686,681,686,681,686,739,569,587,653,786,585,627,762,646,646,787,785,650,762,762,762,762,662,665,571,707,716,747,657,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,657,568,568,577,669,721,742,669,721,742,575,572,704,654,575,637,642,648,649,674,676,678,681,760,783,604,683,741,683,741,724,676,686,699,729,752,760,669,742,628,748,586,603,655,657,781,679,680,679,680,679,680,665,639,639,639,639,654,657,598,757,757,757,757,757,606,715,755,757,766,652,701,701,684,569,653,786,721,721,719,599,605,621,643,644,690,735,737,768,746,589,611,645,650,672,743,650,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,660,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,699,700,701,702,703,704,705,706,707,708,709,710,711,712,713,714,715,716,717,718,719,720,721,722,723,724,725,726,727,728,729,730,731,732,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,788,572,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,660,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,699,700,701,702,703,704,705,706,707,708,709,710,711,712,713,714,715,716,717,718,719,720,721,722,723,724,725,726,727,728,729,730,731,732,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,788,789,790,791,542,792,793,794,795,796,797,798,799,800,801,802,543,803,804,805,544,806,807,808,809,810,545,811,812,546,813,814,547,815,816,548,817,818,819,549,820,821,822,823,824,825,826,550,827,828,829,830,831,832,551,833,834,835,836,837,552,838,553,839,840,841,554,842,843,844,555,845,846,847,556,557,848,849,850,851,852,853,854,855,856,857,858,859,558,860,861,862,863,864,559,865,866,867,868,869,870,871,872,873,874,560,875,876,877,878,879,880,881,882,561,883,884,885,886,887,888,889,890,891,892,893,894,895,562,896,563,564,897,898,565,566,899,900,636,636,636,636,636,636,636,636,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,602,654,691,573,596,630,630,677,748,736,682,631,715,631,631,779,613,740,623,594,759,568,618,587,631,665,682,687,785,681,681,577,785,785,646,646,646,584,669,742,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,671,654,661,661,661,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,658,765,585,619,751,568,570,576,579,581,582,589,593,594,595,599,600,605,607,609,610,612,614,620,621,622,623,625,629,631,633,638,643,644,650,651,652,664,672,684,691,694,695,700,709,711,713,720,728,731,734,737,739,743,745,749,750,754,756,759,761,763,764,769,770,772,773,774,762,619,619,593,749,630,568,570,576,579,581,582,583,589,593,594,595,599,600,605,607,609,610,612,614,620,621,622,623,625,629,631,633,638,643,644,650,651,652,664,672,684,685,691,694,695,700,709,711,713,720,728,731,733,734,737,738,739,743,745,749,750,754,756,759,761,763,764,769,770,772,773,774,780,635,569,588,590,653,660,668,670,678,682,688,693,708,730,619,678,646,646,682,677,602,613,604,619,678,710,748,748,756,767,783,571,580,586,590,592,600,609,615,617,618,640,649,655,659,662,667,670,674,683,686,688,692,697,701,702,716,721,723,728,741,747,756,758,760,765,767,771,776,781,783,785,788,739,569,653,679,680,613,640,665,569,574,578,579,588,597,603,604,605,606,616,627,628,630,636,646,653,660,661,666,671,676,682,690,696,698,699,707,708,714,715,717,719,722,724,725,729,730,752,755,766,775,777,778,780,786,573,747,715,715,718,607,619,631,633,639,654,769,787,631,789,790,791,792,793,794,795,796,797,798,799,800,801,802,803,804,805,806,807,808,809,810,811,812,813,814,815,816,817,818,819,820,821,822,823,824,825,826,827,828,829,830,831,832,833,834,835,836,837,838,839,840,841,842,843,844,845,846,847,848,849,850,851,852,853,854,855,856,857,858,859,860,861,862,863,864,865,866,867,868,869,870,871,872,873,874,875,876,877,878,879,880,881,882,883,884,885,886,887,888,889,890,891,892,893,894,895,896,897,898,899,900,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,660,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,699,700,701,702,703,704,705,706,707,708,709,710,711,712,713,714,715,716,717,718,719,720,721,722,723,724,725,726,727,728,729,730,731,732,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,788,789,790,791,542,792,793,794,795,796,797,798,799,800,801,802,543,803,804,805,544,806,807,808,809,810,545,811,812,546,813,814,547,815,816,548,817,818,819,549,820,821,822,823,824,825,826,550,827,828,829,830,831,832,551,833,834,835,836,837,552,838,553,839,840,841,554,842,843,844,555,845,846,847,556,557,848,849,850,851,852,853,854,855,856,857,858,859,558,860,861,862,863,864,559,865,866,867,868,869,870,871,872,873,874,560,875,876,877,878,879,880,881,882,561,883,884,885,886,887,888,889,890,891,892,893,894,895,562,896,563,564,897,898,565,566,899,900,789,790,791,792,793,794,795,796,797,798,799,800,801,802,803,804,805,806,807,808,809,810,811,812,813,814,815,816,817,818,819,820,821,822,823,824,825,826,827,828,829,830,831,832,833,834,835,836,837,838,839,840,841,842,843,844,845,846,847,848,849,850,851,852,853,854,855,856,857,858,859,860,861,862,863,864,865,866,867,868,869,870,871,872,873,874,875,876,877,878,879,880,881,882,883,884,885,886,887,888,889,890,891,892,893,894,895,896,897,898,899,900,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,785,679,680,762,673,762,577,752,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,660,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,699,700,701,702,703,704,705,706,707,708,709,710,711,712,713,714,715,716,717,718,719,720,721,722,723,724,725,726,727,728,729,730,731,732,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,788,789,790,791,542,792,793,794,795,796,797,798,799,800,801,802,543,803,804,805,544,806,807,808,809,810,545,811,812,546,813,814,547,815,816,548,817,818,819,549,820,821,822,823,824,825,826,550,827,828,829,830,831,832,551,833,834,835,836,837,552,838,553,839,840,841,554,842,843,844,555,845,846,847,556,557,848,849,850,851,852,853,854,855,856,857,858,859,558,860,861,862,863,864,559,865,866,867,868,869,870,871,872,873,874,560,875,876,877,878,879,880,881,882,561,883,884,885,886,887,888,889,890,891,892,893,894,895,562,896,563,564,897,898,565,566,899,900,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,660,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,699,700,701,702,703,704,705,706,707,708,709,710,711,712,713,714,715,716,717,718,719,720,721,722,723,724,725,726,727,728,729,730,731,732,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,788,789,790,791,542,792,793,794,795,796,797,798,799,800,801,802,543,803,804,805,544,806,807,808,809,810,545,811,812,546,813,814,547,815,816,548,817,818,819,549,820,821,822,823,824,825,826,550,827,828,829,830,831,832,551,833,834,835,836,837,552,838,553,839,840,841,554,842,843,844,555,845,846,847,556,557,848,849,850,851,852,853,854,855,856,857,858,859,558,860,861,862,863,864,559,865,866,867,868,869,870,871,872,873,874,560,875,876,877,878,879,880,881,882,561,883,884,885,886,887,888,889,890,891,892,893,894,895,562,896,563,564,897,898,565,566,899,900,635,706,779,570,711,706,639,639,639,654,657,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,660,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,699,700,701,702,703,704,705,706,707,708,709,710,711,712,713,714,715,716,717,718,719,720,721,722,723,724,725,726,727,728,729,730,731,732,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,788,789,790,791,542,792,793,794,795,796,797,798,799,800,801,802,543,803,804,805,544,806,807,808,809,810,545,811,812,546,813,814,547,815,816,548,817,818,819,549,820,821,822,823,824,825,826,550,827,828,829,830,831,832,551,833,834,835,836,837,552,838,553,839,840,841,554,842,843,844,555,845,846,847,556,557,848,849,850,851,852,853,854,855,856,857,858,859,558,860,861,862,863,864,559,865,866,867,868,869,870,871,872,873,874,560,875,876,877,878,879,880,881,882,561,883,884,885,886,887,888,889,890,891,892,893,894,895,562,896,563,564,897,898,565,566,899,900,600,659,728,756,758,767,774,571,774,683,782,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,571,646,661,671,577,615,669,577,637,642,648,753,785,571,673,739,696,778,675,692,697,776,722,722,681,715,755,715,681,715,755,606,755,766,787,571,673,673,673,673,780,724,778,778,778,778,706,699,782,683,721,671,675,779,685,736,715,722,631,592,714,714,714,662,681,715,755,628,682,626,668,712,571,600,659,666,676,699,707,716,728,739,752,758,788,571,600,659,666,676,699,707,716,728,739,752,758,788,571,600,659,666,676,699,707,716,728,739,752,758,788,572,596,722,619,722,722,722,619,679,680,751,678,619,678,785,583,585,600,608,620,627,637,642,643,648,649,666,698,699,725,737,753,758,788,724,724,724,597,667,676,681,702,708,723,730,752,597,667,681,702,708,723,730,597,667,702,708,723,730,751,583,585,600,608,620,627,637,642,643,648,649,666,698,699,725,737,753,758,788,724,724,724,597,667,676,681,702,708,723,730,752,600,637,642,648,649,659,674,676,681,720,728,758,760,761,783,683,741,683,741,600,659,720,724,728,758,761,604,676,686,699,729,752,760,597,667,681,702,708,723,730,597,667,702,708,723,730,583,585,600,608,620,627,637,642,643,648,649,666,698,699,725,737,753,758,788,724,724,724,597,667,676,681,702,708,723,730,752,597,667,681,702,708,723,730,597,667,702,708,723,730,20,20,28,31,0,0,28,0,20,20,28,31,20,28,31,20,20,28,28,31,31,20,28,28,28,31,31,20,28,31,20,28,31,20,28,31,20,28,31,20,28,31,1277,1278,1279,1278,1277,903,904,905,906,903,904,906,906,906,906,906,906,902,0,902,0,905,905,905,0,0,0,902,903,904,905,906,902,903,904,905,906,902,903,904,905,906,902,903,904,905,906,903,904,905,906,902,903,904,902,903,904,905,906,902,903,904,905,906,902,902,903,904,905,906,902,903,904,905,906,905,906,905,906,902,903,904,905,906,903,903,903,903,903,902,902,902,903,903,903,903,903,903,902,902,903,904,902,903,904,905,906,904,905,906,902,903,904,905,906,905,906,902,903,904,905,906,902,903,904,905,906,903,903,903,903,903,902,903,904,905,906,0,26,26,26,26,26,26,26,26,26,26,26,26,26,26,1162,1162,1162,1162,1162,1162,935,0,1174,1174,1174,1174,1174,1174,1174,1174,1174,1174,1174,1174,1174,1174,1174,1174,1174,1174,1174,1174,1174,1174,1174,1174,1174,1174,1174,1174,1174,1174,1174,1174,1174,935,0,1204,1204,1221,1221,1221,1221,1221,1221,1221,1221,1221,1221,1221,1221,1221,1221,1221,1221,1221,1221,1221,1221,913,913,913,913,913,913,913,913,913,913,935,0,923,923,923,923,923,923,923,923,923,923,923,923,923,1276,1276,1276,1276,1276,1276,1276,1276,1276,1276,1276,1276,1276,1276,1276,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,1212,935,0,935,0,935,0,935,935,0,0,935,0,929,929,929,929,929,929,935,0,935,0,935,0,935,0,1168,1168,1168,1168,0,0,0,0,0,0,0,0,0,0,1184,935,0,935,0,935,0,922,922,922,922,922,922,922,922,922,922,922,922,935,0,935,0,935,0,1201,1201,1201,935,0,935,0,935,0,1210,1210,1210,1200,1200,1200,1242,1242,1242,1242,935,0,935,0,1252,935,0,1252,1252,935,0,935,1261,0,1261,1261,1261,1261,1206,1206,1206,1206,1177,1177,1177,1177,1177,935,0,1248,1248,1248,1248,1248,1248,1248,1248,1248,1248,1248,1248,1248,935,935,0,0,1042,935,0,935,0,935,0,935,0,935,0,935,0,935,0,1178,1178,1178,1178,1178,1178,935,0,935,0,0,0,0,0,0,0,0,0,0,0,0,0,935,0,935,0,935,0,935,0,935,0,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,975,976,977,978,979,980,981,982,983,984,985,986,987,988,989,990,991,992,993,994,995,996,997,998,999,1000,1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1011,1012,1013,1014,1015,1016,1017,1018,1019,1020,1021,1022,1023,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1120,1121,1122,1123,1124,1125,1126,1127,1128,1129,1130,1131,1132,1133,1134,1135,1136,1137,1138,1139,1140,1141,1142,1143,1144,1145,1146,1147,1148,1149,1150,1151,1152,1153,1154,1155,1156,1157,1158,1159,1160,1161,907,1162,1163,1164,1165,1166,1167,1168,1169,1170,1171,1172,1173,908,1174,1175,1176,909,1177,1178,910,1179,1180,1181,1182,1183,911,1184,1185,1186,1187,1188,1189,1190,1191,1192,912,1193,1194,1195,1196,1197,1198,1199,1200,1201,913,914,1202,915,1203,1204,1205,1206,916,1207,1208,1209,917,1210,1211,918,919,1212,1213,1214,920,921,1215,1216,1217,1218,1219,1220,922,1221,923,924,1222,1223,1224,1225,1226,1227,925,1228,1229,1230,1231,1232,926,927,1233,1234,1235,1236,1237,1238,1239,1240,1241,1242,1243,1244,1245,928,1246,1247,1248,1249,1250,1251,929,1252,1253,1254,1255,1256,1257,930,931,1258,932,1259,1260,1261,1262,1263,1264,1265,933,1266,1267,1268,1269,1270,1271,1272,1273,934,1274,1275,1276,935,0,935,0,935,0,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,975,976,977,978,979,980,981,982,983,984,985,986,987,988,989,990,991,992,993,994,995,996,997,998,999,1000,1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1011,1012,1013,1014,1015,1016,1017,1018,1019,1020,1021,1022,1023,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1120,1121,1122,1123,1124,1125,1126,1127,1128,1129,1130,1131,1132,1133,1134,1135,1136,1137,1138,1139,1140,1141,1142,1143,1144,1145,1146,1147,1148,1149,1150,1151,1152,1153,1154,1155,1156,1157,1158,1159,1271,1271,1271,1271,1271,1271,934,934,934,934,934,934,934,934,935,0,935,0,921,921,921,921,921,921,921,921,921,921,935,0,921,921,935,0,935,0,0,0,0,1172,1172,1172,1172,1172,1172,1172,1172,1267,1267,1267,1267,1267,1267,1267,1267,1267,1267,1267,1267,1267,1267,1267,1163,1163,1163,1163,1163,1163,1163,1163,1256,1256,1256,1256,1193,1193,1193,935,0,935,0,1258,1258,1258,1258,1258,935,0,1211,1211,1211,1211,1211,1211,1211,935,0,0,0,0,0,0,0,935,0,935,0,914,914,914,914,914,914,914,914,914,914,914,914,914,914,907,907,907,907,907,907,907,907,907,907,911,911,911,911,911,911,911,911,911,911,935,0,935,0,912,912,912,912,912,912,912,912,912,912,912,912,912,912,912,912,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,935,0,935,0,935,0,935,0,935,0,935,935,0,0,935,0,935,0,935,0,1262,1262,1262,1262,1262,1262,1262,1262,1262,935,0,935,0,935,0,924,924,924,924,924,924,924,924,935,0,935,0,935,0,935,0,1239,1239,0,0,0,0,0,0,0,0,935,0,935,0,926,926,926,926,926,926,926,926,926,926,926,926,926,926,926,935,935,0,0,935,0,935,0,935,0,935,0,935,0,935,0,931,931,931,931,931,931,931,931,931,931,931,931,931,931,931,935,0,935,0,930,930,930,930,930,930,930,930,930,930,930,930,930,930,935,0,935,0,0,0,0,996,950,935,0,935,0,1224,1224,1224,1224,935,0,935,935,0,0,935,0,935,0,935,935,0,0,935,0,935,0,935,0,935,0,935,0,935,0,0,1216,1216,1216,1216,935,0,1216,1216,1216,1216,935,0,935,0,1235,1235,1235,1235,1235,1235,1270,1270,1270,1270,1270,1270,1196,1196,1196,1196,1196,1196,1196,1196,1196,1196,1196,1196,1196,1196,1196,1196,1196,1196,1196,1196,1196,1188,1188,1188,1188,1188,1188,1188,1188,1184,1184,1184,1184,1184,1184,1184,1184,1247,1247,1247,1247,1247,1238,1238,1238,1230,1230,1230,1230,1230,1220,1220,1220,1220,1220,1220,1220,1220,1220,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1209,1250,1250,1250,1250,1250,1250,1250,1266,1266,1213,1213,1213,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1233,1233,1233,1233,1233,1233,1233,1233,1233,1161,1161,1161,1161,1161,1218,1203,1203,1203,1203,1203,1203,1203,1203,1203,915,1202,1243,1243,1243,1243,1243,1243,1243,1243,1243,1243,1243,1243,1243,1243,1243,1243,1243,1243,1243,1243,1243,1243,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1183,1183,1183,1183,1183,1183,1183,1183,1183,1183,1183,1183,1183,1183,1183,1183,1183,1183,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,1173,1173,1173,1173,1232,1232,1232,1232,1232,1225,1225,1225,1225,1225,1225,1225,1225,1225,1225,1225,1225,1225,1225,1234,1234,1234,1234,1225,1225,1251,1251,933,933,1263,1263,1263,1263,1263,1263,1263,1263,933,933,933,933,933,933,1251,1251,1251,1251,1251,1251,1251,1251,1251,1264,1264,1264,1264,1264,1264,1264,1199,1199,1190,1190,1190,1190,1190,1190,1170,1170,1170,1170,1189,1189,1195,1195,1195,1195,1195,1195,1195,1195,1208,1208,1208,1186,1186,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1197,1205,1205,1205,1205,1205,1241,1260,1260,1260,1231,1231,1231,1231,1231,1244,1244,1244,1244,1244,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1179,1246,1246,1246,1246,1246,1246,1246,1246,1246,1246,1246,1246,1246,1246,1246,1246,1249,1249,1249,1249,1249,1249,1249,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1171,1171,1171,1171,1171,1171,1171,1171,1171,1171,908,908,908,908,908,908,919,919,919,919,919,919,919,919,919,919,919,919,919,919,919,919,919,919,1194,1194,1194,1194,1194,1194,1194,1226,1226,1226,1226,1226,1198,1198,1198,1198,1198,1198,1198,1198,1198,1198,1198,1198,1198,1198,1198,1198,1198,1198,1198,1198,1198,1198,1198,1198,1198,1198,1198,1198,1198,1198,1198,1198,1198,1198,1198,1198,1198,1198,1198,1198,1198,1198,1259,1259,1259,1259,1259,1259,1259,1259,1222,1222,1222,1222,1222,1222,1222,1222,1222,918,918,918,918,918,918,1160,918,918,918,918,918,918,918,918,918,918,918,918,918,918,918,918,918,918,918,918,918,918,918,918,918,918,1268,1268,1268,1268,1268,1268,1268,1268,1268,1268,1268,1164,1164,1164,1164,1164,1164,1164,1164,1164,1164,1164,1164,1164,1164,1164,1164,1164,1164,1164,1164,1164,1164,1164,1164,1164,1164,1164,1164,1164,1164,1164,1164,1164,1164,1164,1164,1164,1164,1164,1164,1164,1164,1164,1227,1227,1227,1227,1227,928,928,928,928,928,928,928,928,928,928,928,928,928,928,935,0,935,0,935,0,935,0,935,0,935,0,935,0,935,0,935,0,1274,935,0,935,0,935,0,935,0,1274,935,0,1215,1215,1215,1215,1215,1215,935,0,1274,1042,1219,1166,1166,1166,1219,1219,1219,935,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,935,0,935,0,935,0,1192,1192,1192,0,935,0,935,0,935,0,935,0,935,0,935,0,935,0,935,0,935,0,935,0,935,0,935,0,935,0,935,0,935,0,1169,1169,1169,1169,1169,0,1257,1257,1257,1229,1229,1229,1229,935,0,935,0,935,0,935,0,935,0,935,0,1176,935,0,935,0,1176,1176,1176,935,0,935,0,1176,935,0,935,0,935,0,935,0,935,0,917,917,917,917,917,917,917,917,917,917,917,917,935,0,1165,1165,1165,935,0,0,0,0,0,0,0,935,0,935,0,935,0,935,0,935,0,935,0,935,0,935,0,1182,1182,935,0,935,0,935,0,935,0,1275,1275,0,0,935,0,935,0,935,935,0,935,0,0,935,935,0,935,0,0,935,0,1217,1217,1217,1217,1217,925,925,925,925,925,1217,1217,1217,1217,1217,1217,1217,1217,1217,1217,935,0,935,0,935,0,935,0,935,0,935,0,935,0,935,0,935,0,935,0,935,0,935,0,935,0,1223,1223,1223,1223,1236,1236,1236,1236,1236,1236,1236,1236,1236,1214,1214,1214,1214,935,0,935,0,935,0,0,0,0,0,0,0,935,0,935,0,935,0,935,0,935,0,935,0,935,0,935,0,916,916,935,0,0,1272,1272,1272,1272,935,0,1228,1228,1228,1228,1228,935,0,935,1254,1254,1254,1254,1254,1254,1254,1254,1254,1254,1254,1254,1254,1254,1254,1254,0,1253,1253,1253,1253,1253,1253,1253,1253,1187,1187,1167,935,0,1273,1273,1273,1273,1273,1273,909,909,909,909,909,1167,1167,1167,1167,1167,1167,920,920,920,1167,927,927,927,927,935,0,1276,932,932,932,932,932,932,932,932,1185,1185,1185,1185,1185,935,0,0,0,0,0,0,0,0,0,0,0,0,0,935,0,935,0,935,0,935,0,935,0,935,0,1175,1175,1269,1269,1269,1269,935,0,935,0,1255,1255,1255,1255,1255,979,1061,0,0,979,0,935,0,935,0,1207,1207,1207,1207,1237,1237,1237,1237,1237,1237,1240,1240,1240,1240,1240,1240,1240,1240,1240,1240,935,0,935,0,0,0,0,1245,1245,1245,1245,1004,1037,1112,1020,1020,1020,1002,1100,1061,1061,1061,1118,949,1083,1083,1075,1009,1023,1063,1133,1009,1023,1063,1133,1009,1023,1063,1133,996,957,991,1104,1110,1104,1110,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,936,956,975,991,1023,1030,1068,1078,1089,1095,1102,1112,1133,1136,1137,1156,1012,1085,1012,950,981,1090,1104,1135,1139,1110,1152,1043,1043,1152,949,1152,1152,1110,1152,950,993,993,969,1074,1143,969,1074,1143,969,1074,1143,998,1135,1139,1135,1139,1135,1139,1016,1016,1016,1016,992,1039,967,1085,1112,1068,1126,1126,1084,1092,1094,1053,1104,1093,985,985,985,985,1097,1159,1150,1150,1150,1061,1043,1001,1021,1053,1110,1002,1100,1002,1100,1002,1100,1002,1100,1010,1104,1010,945,999,945,1027,1110,1119,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,954,1045,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,1057,939,984,939,984,939,984,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,975,976,977,978,979,980,981,982,983,984,985,986,987,988,989,990,991,992,993,994,995,996,997,998,999,1000,1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1011,1012,1013,1014,1015,1016,1017,1018,1019,1020,1021,1022,1023,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1120,1121,1122,1123,1124,1125,1126,1127,1128,1129,1130,1131,1132,1133,1134,1135,1136,1137,1138,1139,1140,1141,1142,1143,1144,1145,1146,1147,1148,1149,1150,1151,1152,1153,1154,1155,1156,1157,1158,1159,1160,1161,907,1162,1163,1164,1165,1166,1167,1168,1169,1170,1171,1172,1173,908,1174,1175,1176,909,1177,1178,910,1179,1180,1181,1182,1183,911,1184,1185,1186,1187,1188,1189,1190,1191,1192,912,1193,1194,1195,1196,1197,1198,1199,1200,1201,913,914,1202,915,1203,1204,1205,1206,916,1207,1208,1209,917,1210,1211,918,919,1212,1213,1214,920,921,1215,1216,1217,1218,1219,1220,922,1221,923,924,1222,1223,1224,1225,1226,1227,925,1228,1229,1230,1231,1232,926,927,1233,1234,1235,1236,1237,1238,1239,1240,1241,1242,1243,1244,1245,928,1246,1247,1248,1249,1250,1251,929,1252,1253,1254,1255,1256,1257,930,931,1258,932,1259,1260,1261,1262,1263,1264,1265,933,1266,1267,1268,1269,1270,1271,1272,1273,934,1274,1275,1276,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,975,976,977,978,979,980,981,982,983,984,985,986,987,988,989,990,991,992,993,994,995,996,997,998,999,1000,1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1011,1012,1013,1014,1015,1016,1017,1018,1019,1020,1021,1022,1023,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1120,1121,1122,1123,1124,1125,1126,1127,1128,1129,1130,1131,1132,1133,1134,1135,1136,1137,1138,1139,1140,1141,1142,1143,1144,1145,1146,1147,1148,1149,1150,1151,1152,1153,1154,1155,1156,1157,1158,1159,1160,1161,907,1162,1163,1164,1165,1166,1167,1168,1169,1170,1171,1172,1173,908,1174,1175,1176,909,1177,1178,910,1179,1180,1181,1182,1183,911,1184,1185,1186,1187,1188,1189,1190,1191,1192,912,1193,1194,1195,1196,1197,1198,1199,1200,1201,913,914,1202,915,1203,1204,1205,1206,916,1207,1208,1209,917,1210,1211,918,919,1212,1213,1214,920,921,1215,1216,1217,1218,1219,1220,922,1221,923,924,1222,1223,1224,1225,1226,1227,925,1228,1229,1230,1231,1232,926,927,1233,1234,1235,1236,1237,1238,1239,1240,1241,1242,1243,1244,1245,928,1246,1247,1248,1249,1250,1251,929,1252,1253,1254,1255,1256,1257,930,931,1258,932,1259,1260,1261,1262,1263,1264,1265,933,1266,1267,1268,1269,1270,1271,1272,1273,934,1274,1275,1276,1152,1066,1066,1066,1066,972,1071,1091,1010,1134,1093,1093,950,996,1042,1080,1080,1095,941,965,1057,999,999,1095,1016,990,1099,990,1099,990,1099,1099,1099,1099,1099,1099,1099,943,990,1096,1099,1101,943,990,1096,1099,1101,943,990,1096,1099,1101,943,990,1096,1099,1101,943,990,1096,1099,1101,943,990,1096,1099,1101,943,990,1096,1099,1101,943,990,1096,1099,1101,990,1099,1099,999,971,1016,1016,991,1104,1110,1025,1025,1025,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,975,976,977,978,979,980,981,982,983,984,985,986,987,988,989,990,991,992,993,994,995,996,997,998,999,1000,1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1011,1012,1013,1014,1015,1016,1017,1018,1019,1020,1021,1022,1023,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1120,1121,1122,1123,1124,1125,1126,1127,1128,1129,1130,1131,1132,1133,1134,1135,1136,1137,1138,1139,1140,1141,1142,1143,1144,1145,1146,1147,1148,1149,1150,1151,1152,1153,1154,1155,1156,1157,1158,1159,1160,1161,907,1162,1163,1164,1165,1166,1167,1168,1169,1170,1171,1172,1173,908,1174,1175,1176,909,1177,1178,910,1179,1180,1181,1182,1183,911,1184,1185,1186,1187,1188,1189,1190,1191,1192,912,1193,1194,1195,1196,1197,1198,1199,1200,1201,913,914,1202,915,1203,1204,1205,1206,916,1207,1208,1209,917,1210,1211,918,919,1212,1213,1214,920,921,1215,1216,1217,1218,1219,1220,922,1221,923,924,1222,1223,1224,1225,1226,1227,925,1228,1229,1230,1231,1232,926,927,1233,1234,1235,1236,1237,1238,1239,1240,1241,1242,1243,1244,1245,928,1246,1247,1248,1249,1250,1251,929,1252,1253,1254,1255,1256,1257,930,931,1258,932,1259,1260,1261,1262,1263,1264,1265,933,1266,1267,1268,1269,1270,1271,1272,1273,934,1274,1275,1276,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,975,976,977,978,979,980,981,982,983,984,985,986,987,988,989,990,991,992,993,994,995,996,997,998,999,1000,1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1011,1012,1013,1014,1015,1016,1017,1018,1019,1020,1021,1022,1023,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1120,1121,1122,1123,1124,1125,1126,1127,1128,1129,1130,1131,1132,1133,1134,1135,1136,1137,1138,1139,1140,1141,1142,1143,1144,1145,1146,1147,1148,1149,1150,1151,1152,1153,1154,1155,1156,1157,1158,1159,1160,1161,907,1162,1163,1164,1165,1166,1167,1168,1169,1170,1171,1172,1173,908,1174,1175,1176,909,1177,1178,910,1179,1180,1181,1182,1183,911,1184,1185,1186,1187,1188,1189,1190,1191,1192,912,1193,1194,1195,1196,1197,1198,1199,1200,1201,913,914,1202,915,1203,1204,1205,1206,916,1207,1208,1209,917,1210,1211,918,919,1212,1213,1214,920,921,1215,1216,1217,1218,1219,1220,922,1221,923,924,1222,1223,1224,1225,1226,1227,925,1228,1229,1230,1231,1232,926,927,1233,1234,1235,1236,1237,1238,1239,1240,1241,1242,1243,1244,1245,928,1246,1247,1248,1249,1250,1251,929,1252,1253,1254,1255,1256,1257,930,931,1258,932,1259,1260,1261,1262,1263,1264,1265,933,1266,1267,1268,1269,1270,1271,1272,1273,934,1274,1275,1276,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,956,1089,1137,955,988,1020,1081,1084,1092,1094,1007,1093,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,1081,1120,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,997,1118,948,982,1022,1009,1023,1063,1133,954,976,1108,1113,1119,1120,1130,1120,975,1079,1138,1150,1146,1146,1084,1088,1092,1094,1142,945,1027,945,1079,970,1104,1104,1104,941,1021,1053,1104,1110,941,1112,999,1001,940,952,972,976,1055,1069,1086,1091,1119,1155,1126,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,975,976,977,978,979,980,981,982,983,984,985,986,987,988,989,990,991,992,993,994,995,996,997,998,999,1000,1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1011,1012,1013,1014,1015,1016,1017,1018,1019,1020,1021,1022,1023,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1120,1121,1122,1123,1124,1125,1126,1127,1128,1129,1130,1131,1132,1133,1134,1135,1136,1137,1138,1139,1140,1141,1142,1143,1144,1145,1146,1147,1148,1149,1150,1151,1152,1153,1154,1155,1156,1157,1158,1159,1160,1161,907,1162,1163,1164,1165,1166,1167,1168,1169,1170,1171,1172,1173,908,1174,1175,1176,909,1177,1178,910,1179,1180,1181,1182,1183,911,1184,1185,1186,1187,1188,1189,1190,1191,1192,912,1193,1194,1195,1196,1197,1198,1199,1200,1201,913,914,1202,915,1203,1204,1205,1206,916,1207,1208,1209,917,1210,1211,918,919,1212,1213,1214,920,921,1215,1216,1217,1218,1219,1220,922,1221,923,924,1222,1223,1224,1225,1226,1227,925,1228,1229,1230,1231,1232,926,927,1233,1234,1235,1236,1237,1238,1239,1240,1241,1242,1243,1244,1245,928,1246,1247,1248,1249,1250,1251,929,1252,1253,1254,1255,1256,1257,930,931,1258,932,1259,1260,1261,1262,1263,1264,1265,933,1266,1267,1268,1269,1270,1271,1272,1273,934,1274,1275,1276,935,1060,1123,1123,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,975,976,977,978,979,980,981,982,983,984,985,986,987,988,989,990,991,992,993,994,995,996,997,998,999,1000,1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1011,1012,1013,1014,1015,1016,1017,1018,1019,1020,1021,1022,1023,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1120,1121,1122,1123,1124,1125,1126,1127,1128,1129,1130,1131,1132,1133,1134,1135,1136,1137,1138,1139,1140,1141,1142,1143,1144,1145,1146,1147,1148,1149,1150,1151,1152,1153,1154,1155,1156,1157,1158,1159,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,975,976,977,978,979,980,981,982,983,984,985,986,987,988,989,990,991,992,993,994,995,996,997,998,999,1000,1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1011,1012,1013,1014,1015,1016,1017,1018,1019,1020,1021,1022,1023,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1120,1121,1122,1123,1124,1125,1126,1127,1128,1129,1130,1131,1132,1133,1134,1135,1136,1137,1138,1139,1140,1141,1142,1143,1144,1145,1146,1147,1148,1149,1150,1151,1152,1153,1154,1155,1156,1157,1158,1159,1160,1161,907,1162,1163,1164,1165,1166,1167,1168,1169,1170,1171,1172,1173,908,1174,1175,1176,909,1177,1178,910,1179,1180,1181,1182,1183,911,1184,1185,1186,1187,1188,1189,1190,1191,1192,912,1193,1194,1195,1196,1197,1198,1199,1200,1201,913,914,1202,915,1203,1204,1205,1206,916,1207,1208,1209,917,1210,1211,918,919,1212,1213,1214,920,921,1215,1216,1217,1218,1219,1220,922,1221,923,924,1222,1223,1224,1225,1226,1227,925,1228,1229,1230,1231,1232,926,927,1233,1234,1235,1236,1237,1238,1239,1240,1241,1242,1243,1244,1245,928,1246,1247,1248,1249,1250,1251,929,1252,1253,1254,1255,1256,1257,930,931,1258,932,1259,1260,1261,1262,1263,1264,1265,933,1266,1267,1268,1269,1270,1271,1272,1273,934,1274,1275,1276,992,992,1119,999,1137,1137,1093,1093,1093,1004,1037,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,1042,1042,1042,1042,1043,999,1102,993,1105,1114,1130,1013,1027,1001,1061,996,950,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,998,998,947,1058,1098,945,1001,956,1089,1104,1137,956,1089,1104,1137,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,975,976,977,978,979,980,981,982,983,984,985,986,987,988,989,990,991,992,993,994,995,996,997,998,999,1000,1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1011,1012,1013,1014,1015,1016,1017,1018,1019,1020,1021,1022,1023,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1120,1121,1122,1123,1124,1125,1126,1127,1128,1129,1130,1131,1132,1133,1134,1135,1136,1137,1138,1139,1140,1141,1142,1143,1144,1145,1146,1147,1148,1149,1150,1151,1152,1153,1154,1155,1156,1157,1158,1159,1160,1161,907,1162,1163,1164,1165,1166,1167,1168,1169,1170,1171,1172,1173,908,1174,1175,1176,909,1177,1178,910,1179,1180,1181,1182,1183,911,1184,1185,1186,1187,1188,1189,1190,1191,1192,912,1193,1194,1195,1196,1197,1198,1199,1200,1201,913,914,1202,915,1203,1204,1205,1206,916,1207,1208,1209,917,1210,1211,918,919,1212,1213,1214,920,921,1215,1216,1217,1218,1219,1220,922,1221,923,924,1222,1223,1224,1225,1226,1227,925,1228,1229,1230,1231,1232,926,927,1233,1234,1235,1236,1237,1238,1239,1240,1241,1242,1243,1244,1245,928,1246,1247,1248,1249,1250,1251,929,1252,1253,1254,1255,1256,1257,930,931,1258,932,1259,1260,1261,1262,1263,1264,1265,933,1266,1267,1268,1269,1270,1271,1272,1273,934,1274,1275,1276,1125,1120,1027,1027,1027,1027,1027,1112,1148,975,1150,992,1001,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,935,1047,1110,1104,1120,1143,938,1146,1148,1004,1037,1034,1095,941,1080,952,1086,1052,1093,936,956,1089,1137,1064,948,950,954,969,979,987,1042,1045,1074,1078,1080,1103,1111,1117,1119,1129,1143,1155,1057,1078,1057,1039,1065,1065,1065,1065,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,975,976,977,978,979,980,981,982,983,984,985,986,987,988,989,990,991,992,993,994,995,996,997,998,999,1000,1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1011,1012,1013,1014,1015,1016,1017,1018,1019,1020,1021,1022,1023,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1120,1121,1122,1123,1124,1125,1126,1127,1128,1129,1130,1131,1132,1133,1134,1135,1136,1137,1138,1139,1140,1141,1142,1143,1144,1145,1146,1147,1148,1149,1150,1151,1152,1153,1154,1155,1156,1157,1158,1159,1160,1161,907,907,907,907,907,1162,1163,1164,1165,1166,1167,1168,1169,1170,1171,1172,1173,908,908,908,908,908,1174,1175,1176,909,909,909,909,909,1177,1178,910,910,910,910,910,1179,1180,1181,1182,1183,911,911,911,911,911,1184,1185,1186,1187,1188,1189,1190,1191,1192,912,912,912,912,912,1193,1194,1195,1196,1197,1198,1199,1200,1201,913,913,913,913,913,914,914,914,914,914,1202,915,915,915,915,915,1203,1204,1205,1206,916,916,916,916,916,1207,1208,1209,917,917,917,917,917,1210,1211,918,918,918,918,918,919,919,919,919,919,1212,1213,1214,920,920,920,920,920,921,921,921,921,921,1215,1216,1217,1218,1219,1220,922,922,922,922,922,1221,923,923,923,923,923,924,924,924,924,924,1222,1223,1224,1225,1226,1227,925,925,925,925,925,1228,1229,1230,1231,1232,926,926,926,926,926,927,927,927,927,927,1233,1234,1235,1236,1237,1238,1239,1240,1241,1242,1243,1244,1245,928,928,928,928,928,1246,1247,1248,1249,1250,1251,929,929,929,929,929,1252,1253,1254,1255,1256,1257,930,930,930,930,930,931,931,931,931,931,1258,932,932,932,932,932,1259,1260,1261,1262,1263,1264,1265,933,933,933,933,933,1266,1267,1268,1269,1270,1271,1272,1273,934,934,934,934,934,1274,1275,1276,1080,1046,1049,993,1015,1033,1067,1084,1092,1094,971,954,1045,1041,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,975,976,977,978,979,980,981,982,983,984,985,986,987,988,989,990,991,992,993,994,995,996,997,998,999,1000,1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1011,1012,1013,1014,1015,1016,1017,1018,1019,1020,1021,1022,1023,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1120,1121,1122,1123,1124,1125,1126,1127,1128,1129,1130,1131,1132,1133,1134,1135,1136,1137,1138,1139,1140,1141,1142,1143,1144,1145,1146,1147,1148,1149,1150,1151,1152,1153,1154,1155,1156,1157,1158,1159,1160,1161,907,1162,1163,1164,1165,1166,1167,1168,1169,1170,1171,1172,1173,908,1174,1175,1176,909,1177,1178,910,1179,1180,1181,1182,1183,911,1184,1185,1186,1187,1188,1189,1190,1191,1192,912,1193,1194,1195,1196,1197,1198,1199,1200,1201,913,914,1202,915,1203,1204,1205,1206,916,1207,1208,1209,917,1210,1211,918,919,1212,1213,1214,920,921,1215,1216,1217,1218,1219,1220,922,1221,923,924,1222,1223,1224,1225,1226,1227,925,1228,1229,1230,1231,1232,926,927,1233,1234,1235,1236,1237,1238,1239,1240,1241,1242,1243,1244,1245,928,1246,1247,1248,1249,1250,1251,929,1252,1253,1254,1255,1256,1257,930,931,1258,932,1259,1260,1261,1262,1263,1264,1265,933,1266,1267,1268,1269,1270,1271,1272,1273,934,1274,1275,1276,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,1160,1161,1162,1163,1164,1165,1166,1167,1168,1169,1170,1171,1172,1173,1174,1175,1176,1177,1178,1179,1180,1181,1182,1183,1184,1185,1186,1187,1188,1189,1190,1191,1192,1193,1194,1195,1196,1197,1198,1199,1200,1201,1202,1203,1204,1205,1206,1207,1208,1209,1210,1211,1212,1213,1214,1215,1216,1217,1218,1219,1220,1221,1222,1223,1224,1225,1226,1227,1228,1229,1230,1231,1232,1233,1234,1235,1236,1237,1238,1239,1240,1241,1242,1243,1244,1245,1246,1247,1248,1249,1250,1251,1252,1253,1254,1255,1256,1257,1258,1259,1260,1261,1262,1263,1264,1265,1266,1267,1268,1269,1270,1271,1272,1273,1274,1275,1276,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,1160,1161,1162,1163,1164,1165,1166,1167,1168,1169,1170,1171,1172,1173,1174,1175,1176,1177,1178,1179,1180,1181,1182,1183,1184,1185,1186,1187,1188,1189,1190,1191,1192,1193,1194,1195,1196,1197,1198,1199,1200,1201,1202,1203,1204,1205,1206,1207,1208,1209,1210,1211,1212,1213,1214,1215,1216,1217,1218,1219,1220,1221,1222,1223,1224,1225,1226,1227,1228,1229,1230,1231,1232,1233,1234,1235,1236,1237,1238,1239,1240,1241,1242,1243,1244,1245,1246,1247,1248,1249,1250,1251,1252,1253,1254,1255,1256,1257,1258,1259,1260,1261,1262,1263,1264,1265,1266,1267,1268,1269,1270,1271,1272,1273,1274,1275,1276,1001,1001,1118,1019,1019,1010,1010,965,987,1074,1111,1129,1061,1061,1061,1061,996,996,1110,936,1110,1146,1146,978,1055,1055,1065,991,1104,1110,982,1022,1078,1102,1117,941,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,1030,1102,1102,936,950,991,1042,1104,1110,1110,1001,1054,1043,1072,1043,954,1012,1045,950,936,1076,1043,949,1008,1026,1026,1026,1002,1100,945,949,972,976,992,999,1008,1079,1091,1113,1149,977,1016,1028,1035,1043,1123,1126,1028,1071,1001,936,1095,1097,1097,1013,959,1068,1041,1120,1142,1120,1014,1001,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,1001,1001,1105,1114,1105,1114,1105,1114,1105,1114,1105,1114,1105,1114,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,1017,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,975,976,977,978,979,980,981,982,983,984,985,986,987,988,989,990,991,992,993,994,995,996,997,998,999,1000,1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1011,1012,1013,1014,1015,1016,1017,1018,1019,1020,1021,1022,1023,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1120,1121,1122,1123,1124,1125,1126,1127,1128,1129,1130,1131,1132,1133,1134,1135,1136,1137,1138,1139,1140,1141,1142,1143,1144,1145,1146,1147,1148,1149,1150,1151,1152,1153,1154,1155,1156,1157,1158,1159,1160,1161,907,1162,1163,1164,1165,1166,1167,1168,1169,1170,1171,1172,1173,908,1174,1175,1176,909,1177,1178,910,1179,1180,1181,1182,1183,911,1184,1185,1186,1187,1188,1189,1190,1191,1192,912,1193,1194,1195,1196,1197,1198,1199,1200,1201,913,914,1202,915,1203,1204,1205,1206,916,1207,1208,1209,917,1210,1211,918,919,1212,1213,1214,920,921,1215,1216,1217,1218,1219,1220,922,1221,923,924,1222,1223,1224,1225,1226,1227,925,1228,1229,1230,1231,1232,926,927,1233,1234,1235,1236,1237,1238,1239,1240,1241,1242,1243,1244,1245,928,1246,1247,1248,1249,1250,1251,929,1252,1253,1254,1255,1256,1257,930,931,1258,932,1259,1260,1261,1262,1263,1264,1265,933,1266,1267,1268,1269,1270,1271,1272,1273,934,1274,1275,1276,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,1072,966,938,1007,1029,1110,1148,1122,1047,1149,1126,1052,936,950,956,970,975,978,1030,1042,1055,1068,1078,1089,1095,1102,1112,1127,1136,1137,1156,1012,1012,1023,1133,981,1043,1090,1104,1110,1135,1139,972,1069,1091,1155,952,1086,1126,1080,1018,1088,1146,1146,1146,1146,1146,1027,1010,970,992,936,950,956,970,975,978,1030,1042,1055,1068,1078,1089,1095,1102,1112,1127,1136,1137,1156,1012,1012,1023,1133,981,1043,1090,1104,1110,1135,1139,1117,1032,978,1053,938,945,954,963,999,1042,1053,1072,1075,1079,1104,1146,1013,1079,1018,938,935,1017,935,935,1145,974,977,946,946,946,1057,1057,1013,1079,1018,1007,1007,938,948,985,1054,1121,1032,941,1080,977,951,954,958,967,1026,1042,1087,1085,985,1085,1085,1042,998,1078,1078,1078,1064,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,1002,1100,1061,1071,1149,1093,1093,1093,976,1113,1093,1093,1093,1145,1027,1027,1027,1071,1016,1124,1035,1035,1016,1124,1016,1016,1124,1079,1057,1057,1033,1067,1033,1067,1033,1067,1033,1067,1033,1067,1033,1067,1072,1081,1084,1092,1094,1081,1084,1092,1094,1081,1084,1092,1094,1081,1084,1092,1094,1081,1081,1081,1107,1154,953,983,994,1024,1051,1107,1109,1154,994,1024,1107,1109,1154,983,953,983,1051,1107,1154,953,983,1051,1107,1154,1109,1109,1109,1109,935,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,997,1147,974,1056,1072,1140,1056,1056,970,1019,1019,998,960,1032,1038,1050,1077,1110,1111,1129,1132,1136,1156,1158,985,941,965,941,965,957,1111,1129,971,1011,1068,1077,1138,1156,1031,1031,943,1101,1144,1117,1117,957,1117,1117,1020,1060,1020,1060,1020,1060,1020,1060,971,1112,1010,964,980,989,1157,980,989,1157,964,964,1004,1037,987,987,1057,1001,998,939,957,969,971,984,986,1012,1074,1095,1135,1138,1139,1143,1148,1011,1136,1011,1136,1011,1136,1011,1136,1148,938,1065,1105,1114,1134,1015,1031,1146,1146,1112,1159,1128,1031,1031,1031,1031,1097,1010,975,1030,1078,1095,1064,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,1064,1003,1003,1062,954,1045,1080,954,1045,1080,998,999,955,995,996,1047,998,960,1032,1038,1050,1077,1110,1132,1136,1156,1158,985,941,965,941,965,957,971,1011,1068,1077,1138,1156,954,1045,1001,1142,943,990,1064,1099,1101,1002,1100,1002,1100,1002,1100,1010,946,946,946,946,1047,1064,1007,1059,1059,1059,1059,1059,936,956,1059,1089,1137,1109,987,987,1014,1065,1105,1114,1080,1080,1013,968,1006,1040,1084,1094,1116,1131,1151,1153,940,952,992,1086,1103,1106,1128,1128,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,975,976,977,978,979,980,981,982,983,984,985,986,987,988,989,990,991,992,993,994,995,996,997,998,999,1000,1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1011,1012,1013,1014,1015,1016,1017,1018,1019,1020,1021,1022,1023,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1120,1121,1122,1123,1124,1125,1126,1127,1128,1129,1130,1131,1132,1133,1134,1135,1136,1137,1138,1139,1140,1141,1142,1143,1144,1145,1146,1147,1148,1149,1150,1151,1152,1153,1154,1155,1156,1157,1158,1159,999,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,975,976,977,978,979,980,981,982,983,984,985,986,987,988,989,990,991,992,993,994,995,996,997,998,999,1000,1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1011,1012,1013,1014,1015,1016,1017,1018,1019,1020,1021,1022,1023,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1120,1121,1122,1123,1124,1125,1126,1127,1128,1129,1130,1131,1132,1133,1134,1135,1136,1137,1138,1139,1140,1141,1142,1143,1144,1145,1146,1147,1148,1149,1150,1151,1152,1153,1154,1155,1156,1157,1158,1159,1160,1161,907,1162,1163,1164,1165,1166,1167,1168,1169,1170,1171,1172,1173,908,1174,1175,1176,909,1177,1178,910,1179,1180,1181,1182,1183,911,1184,1185,1186,1187,1188,1189,1190,1191,1192,912,1193,1194,1195,1196,1197,1198,1199,1200,1201,913,914,1202,915,1203,1204,1205,1206,916,1207,1208,1209,917,1210,1211,918,919,1212,1213,1214,920,921,1215,1216,1217,1218,1219,1220,922,1221,923,924,1222,1223,1224,1225,1226,1227,925,1228,1229,1230,1231,1232,926,927,1233,1234,1235,1236,1237,1238,1239,1240,1241,1242,1243,1244,1245,928,1246,1247,1248,1249,1250,1251,929,1252,1253,1254,1255,1256,1257,930,931,1258,932,1259,1260,1261,1262,1263,1264,1265,933,1266,1267,1268,1269,1270,1271,1272,1273,934,1274,1275,1276,1144,1144,1144,1144,1144,1144,1144,1144,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,937,1047,977,1072,1149,993,993,970,1001,1018,1088,936,1043,1043,1043,950,1061,949,1147,996,947,1058,1098,1003,1061,1122,938,1010,1043,1088,1125,1159,1136,1136,1062,1159,1159,1146,1146,1146,954,1045,1145,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,1054,1047,1026,1026,1026,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,1053,1039,1134,1104,1085,939,947,952,953,962,963,968,969,972,973,974,977,988,994,1000,1003,1014,1016,1022,1024,1028,1035,1040,1043,1046,1048,1049,1051,1052,1056,1058,1063,1067,1069,1071,1073,1074,1081,1082,1084,1086,1091,1092,1094,1096,1098,1106,1108,1109,1111,1113,1123,1124,1126,1128,1129,1131,1133,1140,1141,1143,1148,1153,1031,1104,1104,974,1140,993,939,947,952,953,962,963,968,969,972,973,974,977,988,994,997,1000,1003,1014,1016,1021,1022,1024,1028,1035,1040,1043,1046,1048,1049,1051,1052,1056,1058,1063,1067,1069,1071,1073,1074,1081,1082,1084,1086,1090,1091,1092,1094,1096,1098,1106,1108,1109,1111,1113,1123,1124,1126,1128,1129,1131,1133,1139,1140,1141,1143,1148,1153,1117,1036,945,964,980,989,1004,1008,1037,1088,1105,1110,1114,1120,1157,1104,1110,1146,1146,1088,970,937,949,985,991,1104,1110,1001,1001,939,984,1032,1078,939,941,942,943,951,958,959,960,961,965,980,984,987,989,1005,1009,1011,1012,1019,1023,1030,1032,1034,1039,1063,1070,1077,1079,1080,1095,1097,1099,1101,1115,1121,1122,1133,1143,1157,1158,1159,1148,1105,1114,1002,1100,949,1005,1010,936,948,956,957,964,967,971,975,982,985,986,990,993,1004,1013,1015,1020,1022,1025,1026,1037,1044,1054,1060,1065,1068,1076,1083,1087,1088,1089,1105,1114,1117,1120,1130,1131,1137,1138,1142,1144,1146,1150,1151,1152,1156,1095,1149,936,936,1119,946,1016,1043,1047,1104,1112,1124,1126,1043,1160,1161,1162,1163,1164,1165,1166,1167,1168,1169,1170,1171,1172,1173,1174,1175,1176,1177,1178,1179,1180,1181,1182,1183,1184,1185,1186,1187,1188,1189,1190,1191,1192,1193,1194,1195,1196,1197,1198,1199,1200,1201,1202,1203,1204,1205,1206,1207,1208,1209,1210,1211,1212,1213,1214,1215,1216,1217,1218,1219,1220,1221,1222,1223,1224,1225,1226,1227,1228,1229,1230,1231,1232,1233,1234,1235,1236,1237,1238,1239,1240,1241,1242,1243,1244,1245,1246,1247,1248,1249,1250,1251,1252,1253,1254,1255,1256,1257,1258,1259,1260,1261,1262,1263,1264,1265,1266,1267,1268,1269,1270,1271,1272,1273,1274,1275,1276,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,975,976,977,978,979,980,981,982,983,984,985,986,987,988,989,990,991,992,993,994,995,996,997,998,999,1000,1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1011,1012,1013,1014,1015,1016,1017,1018,1019,1020,1021,1022,1023,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1120,1121,1122,1123,1124,1125,1126,1127,1128,1129,1130,1131,1132,1133,1134,1135,1136,1137,1138,1139,1140,1141,1142,1143,1144,1145,1146,1147,1148,1149,1150,1151,1152,1153,1154,1155,1156,1157,1158,1159,1160,1161,907,1162,1163,1164,1165,1166,1167,1168,1169,1170,1171,1172,1173,908,1174,1175,1176,909,1177,1178,910,1179,1180,1181,1182,1183,911,1184,1185,1186,1187,1188,1189,1190,1191,1192,912,1193,1194,1195,1196,1197,1198,1199,1200,1201,913,914,1202,915,1203,1204,1205,1206,916,1207,1208,1209,917,1210,1211,918,919,1212,1213,1214,920,921,1215,1216,1217,1218,1219,1220,922,1221,923,924,1222,1223,1224,1225,1226,1227,925,1228,1229,1230,1231,1232,926,927,1233,1234,1235,1236,1237,1238,1239,1240,1241,1242,1243,1244,1245,928,1246,1247,1248,1249,1250,1251,929,1252,1253,1254,1255,1256,1257,930,931,1258,932,1259,1260,1261,1262,1263,1264,1265,933,1266,1267,1268,1269,1270,1271,1272,1273,934,1274,1275,1276,1160,1161,1162,1163,1164,1165,1166,1167,1168,1169,1170,1171,1172,1173,1174,1175,1176,1177,1178,1179,1180,1181,1182,1183,1184,1185,1186,1187,1188,1189,1190,1191,1192,1193,1194,1195,1196,1197,1198,1199,1200,1201,1202,1203,1204,1205,1206,1207,1208,1209,1210,1211,1212,1213,1214,1215,1216,1217,1218,1219,1220,1221,1222,1223,1224,1225,1226,1227,1228,1229,1230,1231,1232,1233,1234,1235,1236,1237,1238,1239,1240,1241,1242,1243,1244,1245,1246,1247,1248,1249,1250,1251,1252,1253,1254,1255,1256,1257,1258,1259,1260,1261,1262,1263,1264,1265,1266,1267,1268,1269,1270,1271,1272,1273,1274,1275,1276,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,1159,1002,1100,1031,1031,1102,1062,1068,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,975,976,977,978,979,980,981,982,983,984,985,986,987,988,989,990,991,992,993,994,995,996,997,998,999,1000,1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1011,1012,1013,1014,1015,1016,1017,1018,1019,1020,1021,1022,1023,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1120,1121,1122,1123,1124,1125,1126,1127,1128,1129,1130,1131,1132,1133,1134,1135,1136,1137,1138,1139,1140,1141,1142,1143,1144,1145,1146,1147,1148,1149,1150,1151,1152,1153,1154,1155,1156,1157,1158,1159,1160,1161,907,1162,1163,1164,1165,1166,1167,1168,1169,1170,1171,1172,1173,908,1174,1175,1176,909,1177,1178,910,1179,1180,1181,1182,1183,911,1184,1185,1186,1187,1188,1189,1190,1191,1192,912,1193,1194,1195,1196,1197,1198,1199,1200,1201,913,914,1202,915,1203,1204,1205,1206,916,1207,1208,1209,917,1210,1211,918,919,1212,1213,1214,920,921,1215,1216,1217,1218,1219,1220,922,1221,923,924,1222,1223,1224,1225,1226,1227,925,1228,1229,1230,1231,1232,926,927,1233,1234,1235,1236,1237,1238,1239,1240,1241,1242,1243,1244,1245,928,1246,1247,1248,1249,1250,1251,929,1252,1253,1254,1255,1256,1257,930,931,1258,932,1259,1260,1261,1262,1263,1264,1265,933,1266,1267,1268,1269,1270,1271,1272,1273,934,1274,1275,1276,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,975,976,977,978,979,980,981,982,983,984,985,986,987,988,989,990,991,992,993,994,995,996,997,998,999,1000,1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1011,1012,1013,1014,1015,1016,1017,1018,1019,1020,1021,1022,1023,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1120,1121,1122,1123,1124,1125,1126,1127,1128,1129,1130,1131,1132,1133,1134,1135,1136,1137,1138,1139,1140,1141,1142,1143,1144,1145,1146,1147,1148,1149,1150,1151,1152,1153,1154,1155,1156,1157,1158,1159,1160,1161,907,1162,1163,1164,1165,1166,1167,1168,1169,1170,1171,1172,1173,908,1174,1175,1176,909,1177,1178,910,1179,1180,1181,1182,1183,911,1184,1185,1186,1187,1188,1189,1190,1191,1192,912,1193,1194,1195,1196,1197,1198,1199,1200,1201,913,914,1202,915,1203,1204,1205,1206,916,1207,1208,1209,917,1210,1211,918,919,1212,1213,1214,920,921,1215,1216,1217,1218,1219,1220,922,1221,923,924,1222,1223,1224,1225,1226,1227,925,1228,1229,1230,1231,1232,926,927,1233,1234,1235,1236,1237,1238,1239,1240,1241,1242,1243,1244,1245,928,1246,1247,1248,1249,1250,1251,929,1252,1253,1254,1255,1256,1257,930,931,1258,932,1259,1260,1261,1262,1263,1264,1265,933,1266,1267,1268,1269,1270,1271,1272,1273,934,1274,1275,1276,1036,950,1042,1046,1141,1042,946,946,946,1047,1064,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,975,976,977,978,979,980,981,982,983,984,985,986,987,988,989,990,991,992,993,994,995,996,997,998,999,1000,1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1011,1012,1013,1014,1015,1016,1017,1018,1019,1020,1021,1022,1023,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1120,1121,1122,1123,1124,1125,1126,1127,1128,1129,1130,1131,1132,1133,1134,1135,1136,1137,1138,1139,1140,1141,1142,1143,1144,1145,1146,1147,1148,1149,1150,1151,1152,1153,1154,1155,1156,1157,1158,1159,1160,1161,907,1162,1163,1164,1165,1166,1167,1168,1169,1170,1171,1172,1173,908,1174,1175,1176,909,1177,1178,910,1179,1180,1181,1182,1183,911,1184,1185,1186,1187,1188,1189,1190,1191,1192,912,1193,1194,1195,1196,1197,1198,1199,1200,1201,913,914,1202,915,1203,1204,1205,1206,916,1207,1208,1209,917,1210,1211,918,919,1212,1213,1214,920,921,1215,1216,1217,1218,1219,1220,922,1221,923,924,1222,1223,1224,1225,1226,1227,925,1228,1229,1230,1231,1232,926,927,1233,1234,1235,1236,1237,1238,1239,1240,1241,1242,1243,1244,1245,928,1246,1247,1248,1249,1250,1251,929,1252,1253,1254,1255,1256,1257,930,931,1258,932,1259,1260,1261,1262,1263,1264,1265,933,1266,1267,1268,1269,1270,1271,1272,1273,934,1274,1275,1276,939,984,1009,1023,1063,1133,1028,1028,1078,941,1057,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,1078,1146,1026,1054,954,1034,1062,1062,944,1038,1050,1132,1159,1061,1078,1102,1148,1020,1060,951,958,959,1075,1076,1076,936,1089,1136,936,936,1089,1136,956,1089,1112,1137,1061,1061,1078,1102,1102,1102,1102,1117,957,1020,1020,1020,1020,1042,971,1057,941,1080,1054,1075,950,997,1018,936,1076,1043,1012,1025,1025,1025,1097,936,1089,1136,1088,1142,1027,945,1029,971,975,1009,1023,1030,1063,1068,1070,1078,1133,1148,1150,1156,971,975,1009,1023,1030,1063,1068,1070,1078,1133,1148,1150,1156,971,975,1009,1023,1030,1063,1068,1070,1078,1133,1148,1150,1156,999,1072,1076,1104,1076,1076,1076,1104,1002,1100,1085,1110,1104,1110,1159,944,960,971,986,1009,1015,1038,1050,1063,1070,1084,1087,1092,1094,1132,1134,1135,1139,1150,957,957,957,942,961,1004,1037,1044,1068,1115,1136,1156,942,961,1004,1037,1044,1115,1136,942,961,1004,1037,1044,1115,1085,944,960,971,986,1009,1015,1038,1050,1063,1070,1084,1087,1092,1094,1132,1134,1135,1139,1150,957,957,957,942,961,1004,1037,1044,1068,1115,1136,1156,960,1009,1023,1032,1038,1050,1063,1077,1111,1129,1132,1133,1136,1156,1158,941,965,941,965,957,1009,1023,1063,1111,1129,1133,985,971,1011,1068,1077,1138,1156,942,961,1004,1037,1044,1115,1136,942,961,1004,1037,1044,1115,944,960,971,986,1009,1015,1038,1050,1063,1070,1084,1087,1092,1094,1132,1134,1135,1139,1150,957,957,957,942,961,1004,1037,1044,1068,1115,1136,1156,942,961,1004,1037,1044,1115,1136,942,961,1004,1037,1044,1115,0],"f":"```````````````````{ce{}{}}000000000``{{{d{b}}b}f}{hf}{jf}{ll}{nn}{{{A`{c}}}{{A`{c}}}{AbAd}}{hh}{jj}{{ce}Af{}{}}0000`{jb}{hb}1`{Ah{{B`{{Al{Aj}}An}}}}{{}l}{{}h}{{}j}{Bb{{B`{AdAh}}}}{{n{d{b}}}{{B`{{Bf{}{{Bd{c}}}}Bh}}}Ad}{{n{d{b}}}{{B`{{A`{c}}Bh}}}Ad}{c{{B`{l}}}Bj}{{ll}Bl}{{nn}Bl}{{hh}Bl}{{jj}Bl}`{Bbb}{{lBn}{{B`{AfC`}}}}{{nBn}{{B`{AfC`}}}}{{{A`{c}}Bn}{{B`{AfC`}}}{CbAd}}{{hBn}{{B`{AfC`}}}}{{jBn}{{B`{AfC`}}}}{cc{}}0000{Ajn}{hBl}{jBl}{{{A`{c}}}lAd}{h{{d{b}}}}{j{{d{b}}}}``{jb}{ce{}{}}0000{AdBb}{hb}{jBb}{Ah{{B`{BbAh}}}}{AdAh}`{{}h}{{}j}{{nBb{d{b}}}{{B`{AdBh}}}};:69``;:{{{Cd{c}}}{{B`{{Cf{le}}Ch}}}CjAd}{{{Cd{c}}}{{B`{hCh}}}Cj}1{{{Cd{c}}}{{B`{jCh}}}Cj}{{{Cd{c}}n}{{B`{{Cf{le}}Ch}}}CjAd}{Aj{{B`{{Cf{lc}}Ch}}}Ad}{Aj{{B`{{A`{c}}Ch}}}Ad}{{Ajlc}{{B`{ClCn}}}Ad}{{Ajc}{{B`{ClCn}}}Ad}{{Aj{A`{c}}}{{B`{ClCn}}}Ad}?{jb}`{{Adn{d{b}}}Cl}{{{Bf{}{{Bd{c}}}}n{d{b}}}ClAd}{{{A`{c}}{d{b}}}ClAd}{{lc}B`D`}{{nc}B`D`}{{{A`{c}}e}B`{AdDb}D`}{{hlc}AfAd}{{jlc}AfAd}{{hlc}AfBf}{{jlc}AfBf}{{Ajn}Af}{hb}<`{ce{}{}}0000{c{{B`{e}}}{}{}}000000000{cDd{}}0000``{{cle}{{B`{ClCn}}}DfAd}0{{cnle}{{B`{ClCn}}}DfAd}`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{{}Dh}{{}Dj}{{}Dl}{{}Dn}{{}E`}{{}Eb}{{}Ed}{{}Ef}{{}Eh}{{}Ej}{{}El}{{}En}{{}F`}{{}Fb}{{}Fd}{{}Ff}{{}Fh}{{}Fj}{{}Fl}{{}Fn}{{}G`}{{}Gb}{{}Gd}{{}Gf}{{}Gh}{{}Gj}{{}Gl}{{}Gn}{{}H`}{{}Hb}{{}Hd}{{}Hf}```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{{DhDh}Dh}{{DjDj}Dj}{{DlDl}Dl}{{DnDn}Dn}{{E`E`}E`}{{EbEb}Eb}{{EdEd}Ed}{{EfEf}Ef}{{EhEh}Eh}{{EjEj}Ej}{{ElEl}El}{{EnEn}En}{{F`F`}F`}{{FbFb}Fb}{{FdFd}Fd}{{FfFf}Ff}{{FhFh}Fh}{{FjFj}Fj}{{FlFl}Fl}{{FnFn}Fn}{{G`G`}G`}{{GbGb}Gb}{{GdGd}Gd}{{GfGf}Gf}{{GhGh}Gh}{{GjGj}Gj}{{GlGl}Gl}{{GnGn}Gn}{{H`H`}H`}{{HbHb}Hb}{{HdHd}Hd}{{HfHf}Hf}{{DhDh}Af}{{DjDj}Af}{{DlDl}Af}{{DnDn}Af}{{E`E`}Af}{{EbEb}Af}{{EdEd}Af}{{EfEf}Af}{{EhEh}Af}{{EjEj}Af}{{ElEl}Af}{{EnEn}Af}{{F`F`}Af}{{FbFb}Af}{{FdFd}Af}{{FfFf}Af}{{FhFh}Af}{{FjFj}Af}{{FlFl}Af}{{FnFn}Af}{{G`G`}Af}{{GbGb}Af}{{GdGd}Af}{{GfGf}Af}{{GhGh}Af}{{GjGj}Af}{{GlGl}Af}{{GnGn}Af}{{H`H`}Af}{{HbHb}Af}{{HdHd}Af}{{HfHf}Af}{{DhDh}Dh}{{DjDj}Dj}{{DlDl}Dl}{{DnDn}Dn}{{E`E`}E`}{{EbEb}Eb}{{EdEd}Ed}{{EfEf}Ef}{{EhEh}Eh}{{EjEj}Ej}{{ElEl}El}{{EnEn}En}{{F`F`}F`}{{FbFb}Fb}{{FdFd}Fd}{{FfFf}Ff}{{FhFh}Fh}{{FjFj}Fj}{{FlFl}Fl}{{FnFn}Fn}{{G`G`}G`}{{GbGb}Gb}{{GdGd}Gd}{{GfGf}Gf}{{GhGh}Gh}{{GjGj}Gj}{{GlGl}Gl}{{GnGn}Gn}{{H`H`}H`}{{HbHb}Hb}{{HdHd}Hd}{{HfHf}Hf}{{DhDh}Af}{{DjDj}Af}{{DlDl}Af}{{DnDn}Af}{{E`E`}Af}{{EbEb}Af}{{EdEd}Af}{{EfEf}Af}{{EhEh}Af}{{EjEj}Af}{{ElEl}Af}{{EnEn}Af}{{F`F`}Af}{{FbFb}Af}{{FdFd}Af}{{FfFf}Af}{{FhFh}Af}{{FjFj}Af}{{FlFl}Af}{{FnFn}Af}{{G`G`}Af}{{GbGb}Af}{{GdGd}Af}{{GfGf}Af}{{GhGh}Af}{{GjGj}Af}{{GlGl}Af}{{GnGn}Af}{{H`H`}Af}{{HbHb}Af}{{HdHd}Af}{{HfHf}Af}```{Dhb}{Djf}{Dlf}{Dnb}{E`Bb}{EbBb}{EdHh}{EfBb}{Ehb}{Ejb}{ElBb}{Enf}{F`f}{Fbf}{Fdf}{Ffb}{Fhb}{Fjb}{Flf}{Fnf}{G`Bb}{Gbf}{Gdb}{Gff}{GhHh}{Gjf}{Glf}{Gnf}{H`b}{HbBb}{Hdb}{HfBb}{{DhDh}Dh}{{DjDj}Dj}{{DlDl}Dl}{{DnDn}Dn}{{E`E`}E`}{{EbEb}Eb}{{EdEd}Ed}{{EfEf}Ef}{{EhEh}Eh}{{EjEj}Ej}{{ElEl}El}{{EnEn}En}{{F`F`}F`}{{FbFb}Fb}{{FdFd}Fd}{{FfFf}Ff}{{FhFh}Fh}{{FjFj}Fj}{{FlFl}Fl}{{FnFn}Fn}{{G`G`}G`}{{GbGb}Gb}{{GdGd}Gd}{{GfGf}Gf}{{GhGh}Gh}{{GjGj}Gj}{{GlGl}Gl}{{GnGn}Gn}{{H`H`}H`}{{HbHb}Hb}{{HdHd}Hd}{{HfHf}Hf}{{DhDh}Af}{{DjDj}Af}{{DlDl}Af}{{DnDn}Af}{{E`E`}Af}{{EbEb}Af}{{EdEd}Af}{{EfEf}Af}{{EhEh}Af}{{EjEj}Af}{{ElEl}Af}{{EnEn}Af}{{F`F`}Af}{{FbFb}Af}{{FdFd}Af}{{FfFf}Af}{{FhFh}Af}{{FjFj}Af}{{FlFl}Af}{{FnFn}Af}{{G`G`}Af}{{GbGb}Af}{{GdGd}Af}{{GfGf}Af}{{GhGh}Af}{{GjGj}Af}{{GlGl}Af}{{GnGn}Af}{{H`H`}Af}{{HbHb}Af}{{HdHd}Af}{{HfHf}Af}```````{ce{}{}}0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000`````````````````````````````````````````````````````````````````````````````````````````````````````````{HjHj}{HlHl}{HnHn}{I`I`}{IbIb}{IdId}{IfIf}{IhIh}{IjIj}{IlIl}{InIn}{J`J`}{JbJb}{JdJd}{JfJf}{JhJh}{JjJj}{JlJl}{JnJn}{K`K`}{KbKb}{KdKd}{KfKf}{KhKh}{KjKj}{KlKl}{KnKn}{L`L`}{LbLb}{LdLd}{LfLf}{LhLh}{LjLj}{LlLl}{LnLn}{M`M`}{MbMb}{MdMd}{MfMf}{MhMh}{MjMj}{MlMl}{MnMn}{N`N`}{NbNb}{NdNd}{NfNf}{NhNh}{NjNj}{NlNl}{NnNn}{O`O`}{ObOb}{OdOd}{OfOf}{OhOh}{OjOj}{OlOl}{OnOn}{A@`A@`}{A@bA@b}{A@dA@d}{A@fA@f}{A@hA@h}{A@jA@j}{A@lA@l}{A@nA@n}{AA`AA`}{AAbAAb}{AAdAAd}{AAfAAf}{AAhAAh}{AAjAAj}{AAlAAl}{AAnAAn}{AB`AB`}{ABbABb}{ABdABd}{ABfABf}{ABhABh}{ABjABj}{ABlABl}{ABnABn}{AC`AC`}{ACbACb}{ACdACd}{ACfACf}{AChACh}{ACjACj}{AClACl}{ACnACn}{AD`AD`}{ADbADb}{ADdADd}{ADfADf}{ADhADh}{ADjADj}{ADlADl}{ADnADn}{AE`AE`}{AEbAEb}{AEdAEd}{AEfAEf}{AEhAEh}{AEjAEj}{AElAEl}{AEnAEn}{AF`AF`}{AFbAFb}{AFdAFd}{AFfAFf}{AFhAFh}{AFjAFj}{AFlAFl}{AFnAFn}{AG`AG`}{AGbAGb}{AGdAGd}{AGfAGf}{AGhAGh}{AGjAGj}{AGlAGl}{AGnAGn}{AH`AH`}{AHbAHb}{AHdAHd}{AHfAHf}{AHhAHh}{AHjAHj}{AHlAHl}{AHnAHn}{AI`AI`}{AIbAIb}{AIdAId}{AIfAIf}{AIhAIh}{AIjAIj}{AIlAIl}{AInAIn}{AJ`AJ`}{AJbAJb}{AJdAJd}{AJfAJf}{AJhAJh}{AJjAJj}{AJlAJl}{AJnAJn}{AK`AK`}{AKbAKb}{AKdAKd}{AKfAKf}{AKhAKh}{AKjAKj}{AKlAKl}{AKnAKn}{AL`AL`}{ALbALb}{ALdALd}{ALfALf}{ALhALh}{ALjALj}{ALlALl}{ALnALn}{AM`AM`}{AMbAMb}{AMdAMd}{AMfAMf}{AMhAMh}{AMjAMj}{AMlAMl}{AMnAMn}{AN`AN`}{ANbANb}{ANdANd}{ANfANf}{ANhANh}{ANjANj}{ANlANl}{ANnANn}{AO`AO`}{AObAOb}{AOdAOd}{AOfAOf}{AOhAOh}{AOjAOj}{AOlAOl}{AOnAOn}{B@`B@`}{B@bB@b}{B@dB@d}{B@fB@f}{B@hB@h}{B@jB@j}{B@lB@l}{B@nB@n}{BA`BA`}{BAbBAb}{BAdBAd}{BAfBAf}{BAhBAh}{BAjBAj}{BAlBAl}{BAnBAn}{BB`BB`}{BBbBBb}{BBdBBd}{BBfBBf}{BBhBBh}{BBjBBj}{BBlBBl}{BBnBBn}{BC`BC`}{BCbBCb}{BCdBCd}{BCfBCf}{BChBCh}{BCjBCj}{BClBCl}{BCnBCn}{BD`BD`}{BDbBDb}{BDdBDd}{BDfBDf}{BDhBDh}{BDjBDj}{BDlBDl}{BDnBDn}{BE`BE`}{BEbBEb}{BEdBEd}{BEfBEf}{BEhBEh}{BEjBEj}{BElBEl}{BEnBEn}{BF`BF`}{BFbBFb}{BFdBFd}{BFfBFf}{BFhBFh}{BFjBFj}{BFlBFl}{BFnBFn}{BG`BG`}{BGbBGb}{BGdBGd}{BGfBGf}{BGhBGh}{BGjBGj}{BGlBGl}{BGnBGn}{BH`BH`}{BHbBHb}{BHdBHd}{BHfBHf}{BHhBHh}{BHjBHj}{BHlBHl}{BHnBHn}{BI`BI`}{BIbBIb}{BIdBId}{BIfBIf}{BIhBIh}{BIjBIj}{BIlBIl}{BInBIn}{BJ`BJ`}{BJbBJb}{BJdBJd}{BJfBJf}{BJhBJh}{BJjBJj}{BJlBJl}{BJnBJn}{BK`BK`}{BKbBKb}{BKdBKd}{BKfBKf}{BKhBKh}{BKjBKj}{BKlBKl}{BKnBKn}{BL`BL`}{BLbBLb}{BLdBLd}{BLfBLf}{BLhBLh}{BLjBLj}{BLlBLl}{BLnBLn}{BM`BM`}{BMbBMb}{BMdBMd}{BMfBMf}{BMhBMh}{BMjBMj}{BMlBMl}{BMnBMn}{BN`BN`}{BNbBNb}{DhDh}{BNdBNd}{BNfBNf}{BNhBNh}{DjDj}{BNjBNj}{BNlBNl}{BNnBNn}{DlDl}{DnDn}{BO`BO`}{BObBOb}{BOdBOd}{BOfBOf}{BOhBOh}{BOjBOj}{BOlBOl}{BOnBOn}{C@`C@`}{C@bC@b}{E`E`}{C@dC@d}{C@fC@f}{EbEb}{C@hC@h}{C@jC@j}{C@lC@l}{C@nC@n}{CA`CA`}{CAbCAb}{CAdCAd}{CAfCAf}{CAhCAh}{EdEd}{CAjCAj}{CAlCAl}{CAnCAn}{CB`CB`}{CBbCBb}{CBdCBd}{CBfCBf}{CBhCBh}{CBjCBj}{CBlCBl}{CBnCBn}{CC`CC`}{CCbCCb}{CCdCCd}{CCfCCf}{CChCCh}{CCjCCj}{CClCCl}{CCnCCn}{CD`CD`}{CDbCDb}{EfEf}{EhEh}{CDdCDd}{CDfCDf}{CDhCDh}{CDjCDj}{CDlCDl}{CDnCDn}{EjEj}{CE`CE`}{CEbCEb}{CEdCEd}{CEfCEf}{CEhCEh}{CEjCEj}{CElCEl}{ElEl}{CEnCEn}{CF`CF`}{CFbCFb}{EnEn}{CFdCFd}{CFfCFf}{CFhCFh}{CFjCFj}{CFlCFl}{CFnCFn}{CG`CG`}{CGbCGb}{CGdCGd}{CGfCGf}{F`F`}{CGhCGh}{CGjCGj}{CGlCGl}{CGnCGn}{CH`CH`}{CHbCHb}{FbFb}{CHdCHd}{FdFd}{CHfCHf}{CHhCHh}{CHjCHj}{CHlCHl}{FfFf}{CHnCHn}{CI`CI`}{CIbCIb}{FhFh}{CIdCId}{CIfCIf}{FjFj}{CIhCIh}{CIjCIj}{CIlCIl}{CInCIn}{CJ`CJ`}{CJbCJb}{CJdCJd}{CJfCJf}{CJhCJh}{FlFl}{CJjCJj}{CJlCJl}{CJnCJn}{CK`CK`}{CKbCKb}{CKdCKd}{CKfCKf}{CKhCKh}{CKjCKj}{CKlCKl}{CKnCKn}{CL`CL`}{CLbCLb}{FnFn}{CLdCLd}{G`G`}{CLfCLf}{CLhCLh}{CLjCLj}{CLlCLl}{CLnCLn}{CM`CM`}{CMbCMb}{CMdCMd}{CMfCMf}{CMhCMh}{CMjCMj}{GbGb}{GdGd}{GfGf}{CMlCMl}{CMnCMn}{CN`CN`}{CNbCNb}{CNdCNd}{CNfCNf}{CNhCNh}{CNjCNj}{CNlCNl}{CNnCNn}{CO`CO`}{CObCOb}{COdCOd}{GhGh}{COfCOf}{COhCOh}{GjGj}{COjCOj}{COlCOl}{GlGl}{COnCOn}{D@`D@`}{D@bD@b}{D@dD@d}{D@fD@f}{D@hD@h}{GnGn}{D@jD@j}{D@lD@l}{H`H`}{HbHb}{D@nD@n}{HdHd}{DA`DA`}{HfHf}{DAbDAb}{DAdDAd}{DAfDAf}{DAhDAh}{DAjDAj}{DAlDAl}{{ce}Af{}{}}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000````{{DhDh}DAn}{{DjDj}DAn}{{DlDl}DAn}{{DnDn}DAn}{{E`E`}DAn}{{EbEb}DAn}{{EdEd}DAn}{{EfEf}DAn}{{EhEh}DAn}{{EjEj}DAn}{{ElEl}DAn}{{EnEn}DAn}{{F`F`}DAn}{{FbFb}DAn}{{FdFd}DAn}{{FfFf}DAn}{{FhFh}DAn}{{FjFj}DAn}{{FlFl}DAn}{{FnFn}DAn}{{G`G`}DAn}{{GbGb}DAn}{{GdGd}DAn}{{GfGf}DAn}{{GhGh}DAn}{{GjGj}DAn}{{GlGl}DAn}{{GnGn}DAn}{{H`H`}DAn}{{HbHb}DAn}{{HdHd}DAn}{{HfHf}DAn}````````````````{DhDh}{DjDj}{DlDl}{DnDn}{E`E`}{EbEb}{EdEd}{EfEf}{EhEh}{EjEj}{ElEl}{EnEn}{F`F`}{FbFb}{FdFd}{FfFf}{FhFh}{FjFj}{FlFl}{FnFn}{G`G`}{GbGb}{GdGd}{GfGf}{GhGh}{GjGj}{GlGl}{GnGn}{H`H`}{HbHb}{HdHd}{HfHf}```````{{DhDh}Bl}{{DjDj}Bl}{{DlDl}Bl}{{DnDn}Bl}{{E`E`}Bl}{{EbEb}Bl}{{EdEd}Bl}{{EfEf}Bl}{{EhEh}Bl}{{EjEj}Bl}{{ElEl}Bl}{{EnEn}Bl}{{F`F`}Bl}{{FbFb}Bl}{{FdFd}Bl}{{FfFf}Bl}{{FhFh}Bl}{{FjFj}Bl}{{FlFl}Bl}{{FnFn}Bl}{{G`G`}Bl}{{GbGb}Bl}{{GdGd}Bl}{{GfGf}Bl}{{GhGh}Bl}{{GjGj}Bl}{{GlGl}Bl}{{GnGn}Bl}{{H`H`}Bl}{{HbHb}Bl}{{HdHd}Bl}{{HfHf}Bl}````````````````````````````````````````````````````````````````````````````````{{}Hl}{{}Hn}{{}I`}{{}Ib}{{}Id}{{}If}{{}Ih}{{}Ij}{{}Il}{{}In}{{}J`}{{}Jb}{{}Jd}{{}Jf}{{}Jh}{{}Jj}{{}Jl}{{}Jn}{{}K`}{{}Kb}{{}Kd}{{}Kf}{{}Kh}{{}Kj}{{}Kl}{{}Kn}{{}L`}{{}Lb}{{}Ld}{{}Lf}{{}Lh}{{}Lj}{{}Ll}{{}Ln}{{}M`}{{}Mb}{{}Md}{{}Mf}{{}Mh}{{}Mj}{{}Ml}{{}Mn}{{}N`}{{}Nb}{{}Nd}{{}Nf}{{}Nh}{{}Nj}{{}Nl}{{}Nn}{{}O`}{{}Ob}{{}Od}{{}Of}{{}Oh}{{}Oj}{{}Ol}{{}On}{{}A@`}{{}A@b}{{}A@d}{{}A@f}{{}A@h}{{}A@j}{{}A@l}{{}A@n}{{}AA`}{{}AAb}{{}AAd}{{}AAf}{{}AAh}{{}AAj}{{}AAl}{{}AAn}{{}AB`}{{}ABb}{{}ABd}{{}ABf}{{}ABh}{{}ABj}{{}ABl}{{}ABn}{{}AC`}{{}ACb}{{}ACd}{{}ACf}{{}ACh}{{}ACj}{{}ACl}{{}ACn}{{}AD`}{{}ADb}{{}ADd}{{}ADf}{{}ADh}{{}ADj}{{}ADl}{{}ADn}{{}AE`}{{}AEb}{{}AEd}{{}AEf}{{}AEh}{{}AEj}{{}AEl}{{}AEn}{{}AF`}{{}AFb}{{}AFd}{{}AFf}{{}AFh}{{}AFj}{{}AFl}{{}AFn}{{}AG`}{{}AGb}{{}AGd}{{}AGf}{{}AGh}{{}AGj}{{}AGl}{{}AGn}{{}AH`}{{}AHb}{{}AHd}{{}AHf}{{}AHh}{{}AHj}{{}AHl}{{}AHn}{{}AI`}{{}AIb}{{}AId}{{}AIf}{{}AIh}{{}AIj}{{}AIl}{{}AIn}{{}AJ`}{{}AJb}{{}AJd}{{}AJf}{{}AJh}{{}AJj}{{}AJl}{{}AJn}{{}AK`}{{}AKb}{{}AKd}{{}AKf}{{}AKh}{{}AKj}{{}AKl}{{}AKn}{{}AL`}{{}ALb}{{}ALd}{{}ALf}{{}ALh}{{}ALj}{{}ALl}{{}ALn}{{}AM`}{{}AMb}{{}AMd}{{}AMf}{{}AMh}{{}AMj}{{}AMl}{{}AMn}{{}AN`}{{}ANb}{{}ANd}{{}ANf}{{}ANh}{{}ANj}{{}ANl}{{}ANn}{{}AO`}{{}AOb}{{}AOd}{{}AOf}{{}AOh}{{}AOj}{{}AOl}{{}AOn}{{}B@`}{{}B@b}{{}B@d}{{}B@f}{{}B@h}{{}B@j}{{}B@l}{{}B@n}{{}BA`}{{}BAb}{{}BAd}{{}BAf}{{}BAh}{{}BAj}{{}BAl}{{}BAn}{{}BB`}{{}BBb}{{}BBd}{{}BBf}{{}BBh}{{}BBj}{{}BBl}{{}BBn}{{}BC`}{{}BCb}{{}BCd}{{}BCf}{{}BCh}{{}BCj}{{}BCl}{{}BCn}{{}BD`}{{}BDb}{{}BDd}{{}BDf}{{}BDh}{{}BDj}{{}BDl}{{}BDn}{{}BE`}{{}BEb}{{}BEd}{{}BEf}{{}BEh}{{}BEj}{{}BEl}{{}BEn}{{}BF`}{{}BFb}{{}BFd}{{}BFf}{{}BFh}{{}BFj}{{}BFl}{{}BFn}{{}BG`}{{}BGb}{{}BGd}{{}BGf}{{}BGh}{{}BGj}{{}BGl}{{}BGn}{{}BH`}{{}BHb}{{}BHd}{{}BHf}{{}BHh}{{}BHj}{{}BHl}{{}BHn}{{}BI`}{{}BIb}{{}BId}{{}BIf}{{}BIh}{{}BIj}{{}BIl}{{}BIn}{{}BJ`}{{}BJb}{{}BJd}{{}BJf}{{}BJh}{{}BJj}{{}BJl}{{}BJn}{{}BK`}{{}BKb}{{}BKd}{{}BKf}{{}BKh}{{}BKj}{{}BKl}{{}BKn}{{}BL`}{{}BLb}{{}BLd}{{}BLf}{{}BLh}{{}BLj}{{}BLl}{{}BLn}{{}BM`}{{}BMb}{{}BMd}{{}BMf}{{}BMh}{{}BMj}{{}BMl}{{}BMn}{{}BN`}{{}BNb}{{}Dh}{{}BNd}{{}BNf}{{}BNh}{{}Dj}{{}BNj}{{}BNl}{{}BNn}{{}Dl}{{}Dn}{{}BO`}{{}BOb}{{}BOd}{{}BOf}{{}BOh}{{}BOj}{{}BOl}{{}BOn}{{}C@`}{{}C@b}{{}E`}{{}C@d}{{}C@f}{{}Eb}{{}C@h}{{}C@j}{{}C@l}{{}C@n}{{}CA`}{{}CAb}{{}CAd}{{}CAf}{{}CAh}{{}Ed}{{}CAj}{{}CAl}{{}CAn}{{}CB`}{{}CBb}{{}CBd}{{}CBf}{{}CBh}{{}CBj}{{}CBl}{{}CBn}{{}CC`}{{}CCb}{{}CCd}{{}CCf}{{}CCh}{{}CCj}{{}CCl}{{}CCn}{{}CD`}{{}CDb}{{}Ef}{{}Eh}{{}CDd}{{}CDf}{{}CDh}{{}CDj}{{}CDl}{{}CDn}{{}Ej}{{}CE`}{{}CEb}{{}CEd}{{}CEf}{{}CEh}{{}CEj}{{}CEl}{{}El}{{}CEn}{{}CF`}{{}CFb}{{}En}{{}CFd}{{}CFf}{{}CFh}{{}CFj}{{}CFl}{{}CFn}{{}CG`}{{}CGb}{{}CGd}{{}CGf}{{}F`}{{}CGh}{{}CGj}{{}CGl}{{}CGn}{{}CH`}{{}CHb}{{}Fb}{{}CHd}{{}Fd}{{}CHf}{{}CHh}{{}CHj}{{}CHl}{{}Ff}{{}CHn}{{}CI`}{{}CIb}{{}Fh}{{}CId}{{}CIf}{{}Fj}{{}CIh}{{}CIj}{{}CIl}{{}CIn}{{}CJ`}{{}CJb}{{}CJd}{{}CJf}{{}CJh}{{}Fl}{{}CJj}{{}CJl}{{}CJn}{{}CK`}{{}CKb}{{}CKd}{{}CKf}{{}CKh}{{}CKj}{{}CKl}{{}CKn}{{}CL`}{{}CLb}{{}Fn}{{}CLd}{{}G`}{{}CLf}{{}CLh}{{}CLj}{{}CLl}{{}CLn}{{}CM`}{{}CMb}{{}CMd}{{}CMf}{{}CMh}{{}CMj}{{}Gb}{{}Gd}{{}Gf}{{}CMl}{{}CMn}{{}CN`}{{}CNb}{{}CNd}{{}CNf}{{}CNh}{{}CNj}{{}CNl}{{}CNn}{{}CO`}{{}COb}{{}COd}{{}Gh}{{}COf}{{}COh}{{}Gj}{{}COj}{{}COl}{{}Gl}{{}COn}{{}D@`}{{}D@b}{{}D@d}{{}D@f}{{}D@h}{{}Gn}{{}D@j}{{}D@l}{{}H`}{{}Hb}{{}D@n}{{}Hd}{{}DA`}{{}Hf}{{}DAb}{{}DAd}{{}DAf}{{}DAh}{{}DAj}{{}DAl}{Bb{{B`{HjAh}}}}`````````````{{n{d{b}}}{{B`{HlBh}}}}{{n{d{b}}}{{B`{HnBh}}}}{{n{d{b}}}{{B`{I`Bh}}}}{{n{d{b}}}{{B`{IbBh}}}}{{n{d{b}}}{{B`{IdBh}}}}{{n{d{b}}}{{B`{IfBh}}}}{{n{d{b}}}{{B`{IhBh}}}}{{n{d{b}}}{{B`{IjBh}}}}{{n{d{b}}}{{B`{IlBh}}}}{{n{d{b}}}{{B`{InBh}}}}{{n{d{b}}}{{B`{J`Bh}}}}{{n{d{b}}}{{B`{JbBh}}}}{{n{d{b}}}{{B`{JdBh}}}}{{n{d{b}}}{{B`{JfBh}}}}{{n{d{b}}}{{B`{JhBh}}}}{{n{d{b}}}{{B`{JjBh}}}}{{n{d{b}}}{{B`{JlBh}}}}{{n{d{b}}}{{B`{JnBh}}}}{{n{d{b}}}{{B`{K`Bh}}}}{{n{d{b}}}{{B`{KbBh}}}}{{n{d{b}}}{{B`{KdBh}}}}{{n{d{b}}}{{B`{KfBh}}}}{{n{d{b}}}{{B`{KhBh}}}}{{n{d{b}}}{{B`{KjBh}}}}{{n{d{b}}}{{B`{KlBh}}}}{{n{d{b}}}{{B`{KnBh}}}}{{n{d{b}}}{{B`{L`Bh}}}}{{n{d{b}}}{{B`{LbBh}}}}{{n{d{b}}}{{B`{LdBh}}}}{{n{d{b}}}{{B`{LfBh}}}}{{n{d{b}}}{{B`{LhBh}}}}{{n{d{b}}}{{B`{LjBh}}}}{{n{d{b}}}{{B`{LlBh}}}}{{n{d{b}}}{{B`{LnBh}}}}{{n{d{b}}}{{B`{M`Bh}}}}{{n{d{b}}}{{B`{MbBh}}}}{{n{d{b}}}{{B`{MdBh}}}}{{n{d{b}}}{{B`{MfBh}}}}{{n{d{b}}}{{B`{MhBh}}}}{{n{d{b}}}{{B`{MjBh}}}}{{n{d{b}}}{{B`{MlBh}}}}{{n{d{b}}}{{B`{MnBh}}}}{{n{d{b}}}{{B`{N`Bh}}}}{{n{d{b}}}{{B`{NbBh}}}}{{n{d{b}}}{{B`{NdBh}}}}{{n{d{b}}}{{B`{NfBh}}}}{{n{d{b}}}{{B`{NhBh}}}}{{n{d{b}}}{{B`{NjBh}}}}{{n{d{b}}}{{B`{NlBh}}}}{{n{d{b}}}{{B`{NnBh}}}}{{n{d{b}}}{{B`{O`Bh}}}}{{n{d{b}}}{{B`{ObBh}}}}{{n{d{b}}}{{B`{OdBh}}}}{{n{d{b}}}{{B`{OfBh}}}}{{n{d{b}}}{{B`{OhBh}}}}{{n{d{b}}}{{B`{OjBh}}}}{{n{d{b}}}{{B`{OlBh}}}}{{n{d{b}}}{{B`{OnBh}}}}{{n{d{b}}}{{B`{A@`Bh}}}}{{n{d{b}}}{{B`{A@bBh}}}}{{n{d{b}}}{{B`{A@dBh}}}}{{n{d{b}}}{{B`{A@fBh}}}}{{n{d{b}}}{{B`{A@hBh}}}}{{n{d{b}}}{{B`{A@jBh}}}}{{n{d{b}}}{{B`{A@lBh}}}}{{n{d{b}}}{{B`{A@nBh}}}}{{n{d{b}}}{{B`{AA`Bh}}}}{{n{d{b}}}{{B`{AAbBh}}}}{{n{d{b}}}{{B`{AAdBh}}}}{{n{d{b}}}{{B`{AAfBh}}}}{{n{d{b}}}{{B`{AAhBh}}}}{{n{d{b}}}{{B`{AAjBh}}}}{{n{d{b}}}{{B`{AAlBh}}}}{{n{d{b}}}{{B`{AAnBh}}}}{{n{d{b}}}{{B`{AB`Bh}}}}{{n{d{b}}}{{B`{ABbBh}}}}{{n{d{b}}}{{B`{ABdBh}}}}{{n{d{b}}}{{B`{ABfBh}}}}{{n{d{b}}}{{B`{ABhBh}}}}{{n{d{b}}}{{B`{ABjBh}}}}{{n{d{b}}}{{B`{ABlBh}}}}{{n{d{b}}}{{B`{ABnBh}}}}{{n{d{b}}}{{B`{AC`Bh}}}}{{n{d{b}}}{{B`{ACbBh}}}}{{n{d{b}}}{{B`{ACdBh}}}}{{n{d{b}}}{{B`{ACfBh}}}}{{n{d{b}}}{{B`{AChBh}}}}{{n{d{b}}}{{B`{ACjBh}}}}{{n{d{b}}}{{B`{AClBh}}}}{{n{d{b}}}{{B`{ACnBh}}}}{{n{d{b}}}{{B`{AD`Bh}}}}{{n{d{b}}}{{B`{ADbBh}}}}{{n{d{b}}}{{B`{ADdBh}}}}{{n{d{b}}}{{B`{ADfBh}}}}{{n{d{b}}}{{B`{ADhBh}}}}{{n{d{b}}}{{B`{ADjBh}}}}{{n{d{b}}}{{B`{ADlBh}}}}{{n{d{b}}}{{B`{ADnBh}}}}{{n{d{b}}}{{B`{AE`Bh}}}}{{n{d{b}}}{{B`{AEbBh}}}}{{n{d{b}}}{{B`{AEdBh}}}}{{n{d{b}}}{{B`{AEfBh}}}}{{n{d{b}}}{{B`{AEhBh}}}}{{n{d{b}}}{{B`{AEjBh}}}}{{n{d{b}}}{{B`{AElBh}}}}{{n{d{b}}}{{B`{AEnBh}}}}{{n{d{b}}}{{B`{AF`Bh}}}}{{n{d{b}}}{{B`{AFbBh}}}}{{n{d{b}}}{{B`{AFdBh}}}}{{n{d{b}}}{{B`{AFfBh}}}}{{n{d{b}}}{{B`{AFhBh}}}}{{n{d{b}}}{{B`{AFjBh}}}}{{n{d{b}}}{{B`{AFlBh}}}}{{n{d{b}}}{{B`{AFnBh}}}}{{n{d{b}}}{{B`{AG`Bh}}}}{{n{d{b}}}{{B`{AGbBh}}}}{{n{d{b}}}{{B`{AGdBh}}}}{{n{d{b}}}{{B`{AGfBh}}}}{{n{d{b}}}{{B`{AGhBh}}}}{{n{d{b}}}{{B`{AGjBh}}}}{{n{d{b}}}{{B`{AGlBh}}}}{{n{d{b}}}{{B`{AGnBh}}}}{{n{d{b}}}{{B`{AH`Bh}}}}{{n{d{b}}}{{B`{AHbBh}}}}{{n{d{b}}}{{B`{AHdBh}}}}{{n{d{b}}}{{B`{AHfBh}}}}{{n{d{b}}}{{B`{AHhBh}}}}{{n{d{b}}}{{B`{AHjBh}}}}{{n{d{b}}}{{B`{AHlBh}}}}{{n{d{b}}}{{B`{AHnBh}}}}{{n{d{b}}}{{B`{AI`Bh}}}}{{n{d{b}}}{{B`{AIbBh}}}}{{n{d{b}}}{{B`{AIdBh}}}}{{n{d{b}}}{{B`{AIfBh}}}}{{n{d{b}}}{{B`{AIhBh}}}}{{n{d{b}}}{{B`{AIjBh}}}}{{n{d{b}}}{{B`{AIlBh}}}}{{n{d{b}}}{{B`{AInBh}}}}{{n{d{b}}}{{B`{AJ`Bh}}}}{{n{d{b}}}{{B`{AJbBh}}}}{{n{d{b}}}{{B`{AJdBh}}}}{{n{d{b}}}{{B`{AJfBh}}}}{{n{d{b}}}{{B`{AJhBh}}}}{{n{d{b}}}{{B`{AJjBh}}}}{{n{d{b}}}{{B`{AJlBh}}}}{{n{d{b}}}{{B`{AJnBh}}}}{{n{d{b}}}{{B`{AK`Bh}}}}{{n{d{b}}}{{B`{AKbBh}}}}{{n{d{b}}}{{B`{AKdBh}}}}{{n{d{b}}}{{B`{AKfBh}}}}{{n{d{b}}}{{B`{AKhBh}}}}{{n{d{b}}}{{B`{AKjBh}}}}{{n{d{b}}}{{B`{AKlBh}}}}{{n{d{b}}}{{B`{AKnBh}}}}{{n{d{b}}}{{B`{AL`Bh}}}}{{n{d{b}}}{{B`{ALbBh}}}}{{n{d{b}}}{{B`{ALdBh}}}}{{n{d{b}}}{{B`{ALfBh}}}}{{n{d{b}}}{{B`{ALhBh}}}}{{n{d{b}}}{{B`{ALjBh}}}}{{n{d{b}}}{{B`{ALlBh}}}}{{n{d{b}}}{{B`{ALnBh}}}}{{n{d{b}}}{{B`{AM`Bh}}}}{{n{d{b}}}{{B`{AMbBh}}}}{{n{d{b}}}{{B`{AMdBh}}}}{{n{d{b}}}{{B`{AMfBh}}}}{{n{d{b}}}{{B`{AMhBh}}}}{{n{d{b}}}{{B`{AMjBh}}}}{{n{d{b}}}{{B`{AMlBh}}}}{{n{d{b}}}{{B`{AMnBh}}}}{{n{d{b}}}{{B`{AN`Bh}}}}{{n{d{b}}}{{B`{ANbBh}}}}{{n{d{b}}}{{B`{ANdBh}}}}{{n{d{b}}}{{B`{ANfBh}}}}{{n{d{b}}}{{B`{ANhBh}}}}{{n{d{b}}}{{B`{ANjBh}}}}{{n{d{b}}}{{B`{ANlBh}}}}{{n{d{b}}}{{B`{ANnBh}}}}{{n{d{b}}}{{B`{AO`Bh}}}}{{n{d{b}}}{{B`{AObBh}}}}{{n{d{b}}}{{B`{AOdBh}}}}{{n{d{b}}}{{B`{AOfBh}}}}{{n{d{b}}}{{B`{AOhBh}}}}{{n{d{b}}}{{B`{AOjBh}}}}{{n{d{b}}}{{B`{AOlBh}}}}{{n{d{b}}}{{B`{AOnBh}}}}{{n{d{b}}}{{B`{B@`Bh}}}}{{n{d{b}}}{{B`{B@bBh}}}}{{n{d{b}}}{{B`{B@dBh}}}}{{n{d{b}}}{{B`{B@fBh}}}}{{n{d{b}}}{{B`{B@hBh}}}}{{n{d{b}}}{{B`{B@jBh}}}}{{n{d{b}}}{{B`{B@lBh}}}}{{n{d{b}}}{{B`{B@nBh}}}}{{n{d{b}}}{{B`{BA`Bh}}}}{{n{d{b}}}{{B`{BAbBh}}}}{{n{d{b}}}{{B`{BAdBh}}}}{{n{d{b}}}{{B`{BAfBh}}}}{{n{d{b}}}{{B`{BAhBh}}}}{{n{d{b}}}{{B`{BAjBh}}}}{{n{d{b}}}{{B`{BAlBh}}}}{{n{d{b}}}{{B`{BAnBh}}}}{{n{d{b}}}{{B`{BB`Bh}}}}{{n{d{b}}}{{B`{BBbBh}}}}{{n{d{b}}}{{B`{BBdBh}}}}{{n{d{b}}}{{B`{BBfBh}}}}{{n{d{b}}}{{B`{BBhBh}}}}{{n{d{b}}}{{B`{BBjBh}}}}{{n{d{b}}}{{B`{BBlBh}}}}{{n{d{b}}}{{B`{BBnBh}}}}{{n{d{b}}}{{B`{BC`Bh}}}}{{n{d{b}}}{{B`{BCbBh}}}}{{n{d{b}}}{{B`{BCdBh}}}}{{n{d{b}}}{{B`{BCfBh}}}}{{n{d{b}}}{{B`{BChBh}}}}{{n{d{b}}}{{B`{BCjBh}}}}{{n{d{b}}}{{B`{BClBh}}}}{{n{d{b}}}{{B`{BCnBh}}}}{{n{d{b}}}{{B`{BD`Bh}}}}{{n{d{b}}}{{B`{BDbBh}}}}{{n{d{b}}}{{B`{BDdBh}}}}{{n{d{b}}}{{B`{BDfBh}}}}{{n{d{b}}}{{B`{BDhBh}}}}{{n{d{b}}}{{B`{BDjBh}}}}{{n{d{b}}}{{B`{BDlBh}}}}{{n{d{b}}}{{B`{BDnBh}}}}{{n{d{b}}}{{B`{BE`Bh}}}}{{n{d{b}}}{{B`{BEbBh}}}}{{n{d{b}}}{{B`{BEdBh}}}}{{n{d{b}}}{{B`{BEfBh}}}}{{n{d{b}}}{{B`{BEhBh}}}}{{n{d{b}}}{{B`{BEjBh}}}}{{n{d{b}}}{{B`{BElBh}}}}{{n{d{b}}}{{B`{BEnBh}}}}{{n{d{b}}}{{B`{BF`Bh}}}}{{n{d{b}}}{{B`{BFbBh}}}}{{n{d{b}}}{{B`{BFdBh}}}}{{n{d{b}}}{{B`{BFfBh}}}}{{n{d{b}}}{{B`{BFhBh}}}}{{n{d{b}}}{{B`{BFjBh}}}}{{n{d{b}}}{{B`{BFlBh}}}}{{n{d{b}}}{{B`{BFnBh}}}}{{n{d{b}}}{{B`{BG`Bh}}}}{{n{d{b}}}{{B`{BGbBh}}}}{{n{d{b}}}{{B`{BGdBh}}}}{{n{d{b}}}{{B`{BGfBh}}}}{{n{d{b}}}{{B`{BGhBh}}}}{{n{d{b}}}{{B`{BGjBh}}}}{{n{d{b}}}{{B`{BGlBh}}}}{{n{d{b}}}{{B`{BGnBh}}}}{{n{d{b}}}{{B`{BH`Bh}}}}{{n{d{b}}}{{B`{BHbBh}}}}{{n{d{b}}}{{B`{BHdBh}}}}{{n{d{b}}}{{B`{BHfBh}}}}{{n{d{b}}}{{B`{BHhBh}}}}{{n{d{b}}}{{B`{BHjBh}}}}{{n{d{b}}}{{B`{BHlBh}}}}{{n{d{b}}}{{B`{BHnBh}}}}{{n{d{b}}}{{B`{BI`Bh}}}}{{n{d{b}}}{{B`{BIbBh}}}}{{n{d{b}}}{{B`{BIdBh}}}}{{n{d{b}}}{{B`{BIfBh}}}}{{n{d{b}}}{{B`{BIhBh}}}}{{n{d{b}}}{{B`{BIjBh}}}}{{n{d{b}}}{{B`{BIlBh}}}}{{n{d{b}}}{{B`{BInBh}}}}{{n{d{b}}}{{B`{BJ`Bh}}}}{{n{d{b}}}{{B`{BJbBh}}}}{{n{d{b}}}{{B`{BJdBh}}}}{{n{d{b}}}{{B`{BJfBh}}}}{{n{d{b}}}{{B`{BJhBh}}}}{{n{d{b}}}{{B`{BJjBh}}}}{{n{d{b}}}{{B`{BJlBh}}}}{{n{d{b}}}{{B`{BJnBh}}}}{{n{d{b}}}{{B`{BK`Bh}}}}{{n{d{b}}}{{B`{BKbBh}}}}{{n{d{b}}}{{B`{BKdBh}}}}{{n{d{b}}}{{B`{BKfBh}}}}{{n{d{b}}}{{B`{BKhBh}}}}{{n{d{b}}}{{B`{BKjBh}}}}{{n{d{b}}}{{B`{BKlBh}}}}{{n{d{b}}}{{B`{BKnBh}}}}{{n{d{b}}}{{B`{BL`Bh}}}}{{n{d{b}}}{{B`{BLbBh}}}}{{n{d{b}}}{{B`{BLdBh}}}}{{n{d{b}}}{{B`{BLfBh}}}}{{n{d{b}}}{{B`{BLhBh}}}}{{n{d{b}}}{{B`{BLjBh}}}}{{n{d{b}}}{{B`{BLlBh}}}}{{n{d{b}}}{{B`{BLnBh}}}}{{n{d{b}}}{{B`{BM`Bh}}}}{{n{d{b}}}{{B`{BMbBh}}}}{{n{d{b}}}{{B`{BMdBh}}}}{{n{d{b}}}{{B`{BMfBh}}}}{{n{d{b}}}{{B`{BMhBh}}}}{{n{d{b}}}{{B`{BMjBh}}}}{c{{B`{Hj}}}Bj}{c{{B`{Hl}}}Bj}{c{{B`{Hn}}}Bj}{c{{B`{I`}}}Bj}{c{{B`{Ib}}}Bj}{c{{B`{Id}}}Bj}{c{{B`{If}}}Bj}{c{{B`{Ih}}}Bj}{c{{B`{Ij}}}Bj}{c{{B`{Il}}}Bj}{c{{B`{In}}}Bj}{c{{B`{J`}}}Bj}{c{{B`{Jb}}}Bj}{c{{B`{Jd}}}Bj}{c{{B`{Jf}}}Bj}{c{{B`{Jh}}}Bj}{c{{B`{Jj}}}Bj}{c{{B`{Jl}}}Bj}{c{{B`{Jn}}}Bj}{c{{B`{K`}}}Bj}{c{{B`{Kb}}}Bj}{c{{B`{Kd}}}Bj}{c{{B`{Kf}}}Bj}{c{{B`{Kh}}}Bj}{c{{B`{Kj}}}Bj}{c{{B`{Kl}}}Bj}{c{{B`{Kn}}}Bj}{c{{B`{L`}}}Bj}{c{{B`{Lb}}}Bj}{c{{B`{Ld}}}Bj}{c{{B`{Lf}}}Bj}{c{{B`{Lh}}}Bj}{c{{B`{Lj}}}Bj}{c{{B`{Ll}}}Bj}{c{{B`{Ln}}}Bj}{c{{B`{M`}}}Bj}{c{{B`{Mb}}}Bj}{c{{B`{Md}}}Bj}{c{{B`{Mf}}}Bj}{c{{B`{Mh}}}Bj}{c{{B`{Mj}}}Bj}{c{{B`{Ml}}}Bj}{c{{B`{Mn}}}Bj}{c{{B`{N`}}}Bj}{c{{B`{Nb}}}Bj}{c{{B`{Nd}}}Bj}{c{{B`{Nf}}}Bj}{c{{B`{Nh}}}Bj}{c{{B`{Nj}}}Bj}{c{{B`{Nl}}}Bj}{c{{B`{Nn}}}Bj}{c{{B`{O`}}}Bj}{c{{B`{Ob}}}Bj}{c{{B`{Od}}}Bj}{c{{B`{Of}}}Bj}{c{{B`{Oh}}}Bj}{c{{B`{Oj}}}Bj}{c{{B`{Ol}}}Bj}{c{{B`{On}}}Bj}{c{{B`{A@`}}}Bj}{c{{B`{A@b}}}Bj}{c{{B`{A@d}}}Bj}{c{{B`{A@f}}}Bj}{c{{B`{A@h}}}Bj}{c{{B`{A@j}}}Bj}{c{{B`{A@l}}}Bj}{c{{B`{A@n}}}Bj}{c{{B`{AA`}}}Bj}{c{{B`{AAb}}}Bj}{c{{B`{AAd}}}Bj}{c{{B`{AAf}}}Bj}{c{{B`{AAh}}}Bj}{c{{B`{AAj}}}Bj}{c{{B`{AAl}}}Bj}{c{{B`{AAn}}}Bj}{c{{B`{AB`}}}Bj}{c{{B`{ABb}}}Bj}{c{{B`{ABd}}}Bj}{c{{B`{ABf}}}Bj}{c{{B`{ABh}}}Bj}{c{{B`{ABj}}}Bj}{c{{B`{ABl}}}Bj}{c{{B`{ABn}}}Bj}{c{{B`{AC`}}}Bj}{c{{B`{ACb}}}Bj}{c{{B`{ACd}}}Bj}{c{{B`{ACf}}}Bj}{c{{B`{ACh}}}Bj}{c{{B`{ACj}}}Bj}{c{{B`{ACl}}}Bj}{c{{B`{ACn}}}Bj}{c{{B`{AD`}}}Bj}{c{{B`{ADb}}}Bj}{c{{B`{ADd}}}Bj}{c{{B`{ADf}}}Bj}{c{{B`{ADh}}}Bj}{c{{B`{ADj}}}Bj}{c{{B`{ADl}}}Bj}{c{{B`{ADn}}}Bj}{c{{B`{AE`}}}Bj}{c{{B`{AEb}}}Bj}{c{{B`{AEd}}}Bj}{c{{B`{AEf}}}Bj}{c{{B`{AEh}}}Bj}{c{{B`{AEj}}}Bj}{c{{B`{AEl}}}Bj}{c{{B`{AEn}}}Bj}{c{{B`{AF`}}}Bj}{c{{B`{AFb}}}Bj}{c{{B`{AFd}}}Bj}{c{{B`{AFf}}}Bj}{c{{B`{AFh}}}Bj}{c{{B`{AFj}}}Bj}{c{{B`{AFl}}}Bj}{c{{B`{AFn}}}Bj}{c{{B`{AG`}}}Bj}{c{{B`{AGb}}}Bj}{c{{B`{AGd}}}Bj}{c{{B`{AGf}}}Bj}{c{{B`{AGh}}}Bj}{c{{B`{AGj}}}Bj}{c{{B`{AGl}}}Bj}{c{{B`{AGn}}}Bj}{c{{B`{AH`}}}Bj}{c{{B`{AHb}}}Bj}{c{{B`{AHd}}}Bj}{c{{B`{AHf}}}Bj}{c{{B`{AHh}}}Bj}{c{{B`{AHj}}}Bj}{c{{B`{AHl}}}Bj}{c{{B`{AHn}}}Bj}{c{{B`{AI`}}}Bj}{c{{B`{AIb}}}Bj}{c{{B`{AId}}}Bj}{c{{B`{AIf}}}Bj}{c{{B`{AIh}}}Bj}{c{{B`{AIj}}}Bj}{c{{B`{AIl}}}Bj}{c{{B`{AIn}}}Bj}{c{{B`{AJ`}}}Bj}{c{{B`{AJb}}}Bj}{c{{B`{AJd}}}Bj}{c{{B`{AJf}}}Bj}{c{{B`{AJh}}}Bj}{c{{B`{AJj}}}Bj}{c{{B`{AJl}}}Bj}{c{{B`{AJn}}}Bj}{c{{B`{AK`}}}Bj}{c{{B`{AKb}}}Bj}{c{{B`{AKd}}}Bj}{c{{B`{AKf}}}Bj}{c{{B`{AKh}}}Bj}{c{{B`{AKj}}}Bj}{c{{B`{AKl}}}Bj}{c{{B`{AKn}}}Bj}{c{{B`{AL`}}}Bj}{c{{B`{ALb}}}Bj}{c{{B`{ALd}}}Bj}{c{{B`{ALf}}}Bj}{c{{B`{ALh}}}Bj}{c{{B`{ALj}}}Bj}{c{{B`{ALl}}}Bj}{c{{B`{ALn}}}Bj}{c{{B`{AM`}}}Bj}{c{{B`{AMb}}}Bj}{c{{B`{AMd}}}Bj}{c{{B`{AMf}}}Bj}{c{{B`{AMh}}}Bj}{c{{B`{AMj}}}Bj}{c{{B`{AMl}}}Bj}{c{{B`{AMn}}}Bj}{c{{B`{AN`}}}Bj}{c{{B`{ANb}}}Bj}{c{{B`{ANd}}}Bj}{c{{B`{ANf}}}Bj}{c{{B`{ANh}}}Bj}{c{{B`{ANj}}}Bj}{c{{B`{ANl}}}Bj}{c{{B`{ANn}}}Bj}{c{{B`{AO`}}}Bj}{c{{B`{AOb}}}Bj}{c{{B`{AOd}}}Bj}{c{{B`{AOf}}}Bj}{c{{B`{AOh}}}Bj}{c{{B`{AOj}}}Bj}{c{{B`{AOl}}}Bj}{c{{B`{AOn}}}Bj}{c{{B`{B@`}}}Bj}{c{{B`{B@b}}}Bj}{c{{B`{B@d}}}Bj}{c{{B`{B@f}}}Bj}{c{{B`{B@h}}}Bj}{c{{B`{B@j}}}Bj}{c{{B`{B@l}}}Bj}{c{{B`{B@n}}}Bj}{c{{B`{BA`}}}Bj}{c{{B`{BAb}}}Bj}{c{{B`{BAd}}}Bj}{c{{B`{BAf}}}Bj}{c{{B`{BAh}}}Bj}{c{{B`{BAj}}}Bj}{c{{B`{BAl}}}Bj}{c{{B`{BAn}}}Bj}{c{{B`{BB`}}}Bj}{c{{B`{BBb}}}Bj}{c{{B`{BBd}}}Bj}{c{{B`{BBf}}}Bj}{c{{B`{BBh}}}Bj}{c{{B`{BBj}}}Bj}{c{{B`{BBl}}}Bj}{c{{B`{BBn}}}Bj}{c{{B`{BC`}}}Bj}{c{{B`{BCb}}}Bj}{c{{B`{BCd}}}Bj}{c{{B`{BCf}}}Bj}{c{{B`{BCh}}}Bj}{c{{B`{BCj}}}Bj}{c{{B`{BCl}}}Bj}{c{{B`{BCn}}}Bj}{c{{B`{BD`}}}Bj}{c{{B`{BDb}}}Bj}{c{{B`{BDd}}}Bj}{c{{B`{BDf}}}Bj}{c{{B`{BDh}}}Bj}{c{{B`{BDj}}}Bj}{c{{B`{BDl}}}Bj}{c{{B`{BDn}}}Bj}{c{{B`{BE`}}}Bj}{c{{B`{BEb}}}Bj}{c{{B`{BEd}}}Bj}{c{{B`{BEf}}}Bj}{c{{B`{BEh}}}Bj}{c{{B`{BEj}}}Bj}{c{{B`{BEl}}}Bj}{c{{B`{BEn}}}Bj}{c{{B`{BF`}}}Bj}{c{{B`{BFb}}}Bj}{c{{B`{BFd}}}Bj}{c{{B`{BFf}}}Bj}{c{{B`{BFh}}}Bj}{c{{B`{BFj}}}Bj}{c{{B`{BFl}}}Bj}{c{{B`{BFn}}}Bj}{c{{B`{BG`}}}Bj}{c{{B`{BGb}}}Bj}{c{{B`{BGd}}}Bj}{c{{B`{BGf}}}Bj}{c{{B`{BGh}}}Bj}{c{{B`{BGj}}}Bj}{c{{B`{BGl}}}Bj}{c{{B`{BGn}}}Bj}{c{{B`{BH`}}}Bj}{c{{B`{BHb}}}Bj}{c{{B`{BHd}}}Bj}{c{{B`{BHf}}}Bj}{c{{B`{BHh}}}Bj}{c{{B`{BHj}}}Bj}{c{{B`{BHl}}}Bj}{c{{B`{BHn}}}Bj}{c{{B`{BI`}}}Bj}{c{{B`{BIb}}}Bj}{c{{B`{BId}}}Bj}{c{{B`{BIf}}}Bj}{c{{B`{BIh}}}Bj}{c{{B`{BIj}}}Bj}{c{{B`{BIl}}}Bj}{c{{B`{BIn}}}Bj}{c{{B`{BJ`}}}Bj}{c{{B`{BJb}}}Bj}{c{{B`{BJd}}}Bj}{c{{B`{BJf}}}Bj}{c{{B`{BJh}}}Bj}{c{{B`{BJj}}}Bj}{c{{B`{BJl}}}Bj}{c{{B`{BJn}}}Bj}{c{{B`{BK`}}}Bj}{c{{B`{BKb}}}Bj}{c{{B`{BKd}}}Bj}{c{{B`{BKf}}}Bj}{c{{B`{BKh}}}Bj}{c{{B`{BKj}}}Bj}{c{{B`{BKl}}}Bj}{c{{B`{BKn}}}Bj}{c{{B`{BL`}}}Bj}{c{{B`{BLb}}}Bj}{c{{B`{BLd}}}Bj}{c{{B`{BLf}}}Bj}{c{{B`{BLh}}}Bj}{c{{B`{BLj}}}Bj}{c{{B`{BLl}}}Bj}{c{{B`{BLn}}}Bj}{c{{B`{BM`}}}Bj}{c{{B`{BMb}}}Bj}{c{{B`{BMd}}}Bj}{c{{B`{BMf}}}Bj}{c{{B`{BMh}}}Bj}{c{{B`{BMj}}}Bj}{c{{B`{BMl}}}Bj}{c{{B`{BMn}}}Bj}{c{{B`{BN`}}}Bj}{c{{B`{BNb}}}Bj}{c{{B`{Dh}}}Bj}{c{{B`{BNd}}}Bj}{c{{B`{BNf}}}Bj}{c{{B`{BNh}}}Bj}{c{{B`{Dj}}}Bj}{c{{B`{BNj}}}Bj}{c{{B`{BNl}}}Bj}{c{{B`{BNn}}}Bj}{c{{B`{Dl}}}Bj}{c{{B`{Dn}}}Bj}{c{{B`{BO`}}}Bj}{c{{B`{BOb}}}Bj}{c{{B`{BOd}}}Bj}{c{{B`{BOf}}}Bj}{c{{B`{BOh}}}Bj}{c{{B`{BOj}}}Bj}{c{{B`{BOl}}}Bj}{c{{B`{BOn}}}Bj}{c{{B`{C@`}}}Bj}{c{{B`{C@b}}}Bj}{c{{B`{E`}}}Bj}{c{{B`{C@d}}}Bj}{c{{B`{C@f}}}Bj}{c{{B`{Eb}}}Bj}{c{{B`{C@h}}}Bj}{c{{B`{C@j}}}Bj}{c{{B`{C@l}}}Bj}{c{{B`{C@n}}}Bj}{c{{B`{CA`}}}Bj}{c{{B`{CAb}}}Bj}{c{{B`{CAd}}}Bj}{c{{B`{CAf}}}Bj}{c{{B`{CAh}}}Bj}{c{{B`{Ed}}}Bj}{c{{B`{CAj}}}Bj}{c{{B`{CAl}}}Bj}{c{{B`{CAn}}}Bj}{c{{B`{CB`}}}Bj}{c{{B`{CBb}}}Bj}{c{{B`{CBd}}}Bj}{c{{B`{CBf}}}Bj}{c{{B`{CBh}}}Bj}{c{{B`{CBj}}}Bj}{c{{B`{CBl}}}Bj}{c{{B`{CBn}}}Bj}{c{{B`{CC`}}}Bj}{c{{B`{CCb}}}Bj}{c{{B`{CCd}}}Bj}{c{{B`{CCf}}}Bj}{c{{B`{CCh}}}Bj}{c{{B`{CCj}}}Bj}{c{{B`{CCl}}}Bj}{c{{B`{CCn}}}Bj}{c{{B`{CD`}}}Bj}{c{{B`{CDb}}}Bj}{c{{B`{Ef}}}Bj}{c{{B`{Eh}}}Bj}{c{{B`{CDd}}}Bj}{c{{B`{CDf}}}Bj}{c{{B`{CDh}}}Bj}{c{{B`{CDj}}}Bj}{c{{B`{CDl}}}Bj}{c{{B`{CDn}}}Bj}{c{{B`{Ej}}}Bj}{c{{B`{CE`}}}Bj}{c{{B`{CEb}}}Bj}{c{{B`{CEd}}}Bj}{c{{B`{CEf}}}Bj}{c{{B`{CEh}}}Bj}{c{{B`{CEj}}}Bj}{c{{B`{CEl}}}Bj}{c{{B`{El}}}Bj}{c{{B`{CEn}}}Bj}{c{{B`{CF`}}}Bj}{c{{B`{CFb}}}Bj}{c{{B`{En}}}Bj}{c{{B`{CFd}}}Bj}{c{{B`{CFf}}}Bj}{c{{B`{CFh}}}Bj}{c{{B`{CFj}}}Bj}{c{{B`{CFl}}}Bj}{c{{B`{CFn}}}Bj}{c{{B`{CG`}}}Bj}{c{{B`{CGb}}}Bj}{c{{B`{CGd}}}Bj}{c{{B`{CGf}}}Bj}{c{{B`{F`}}}Bj}{c{{B`{CGh}}}Bj}{c{{B`{CGj}}}Bj}{c{{B`{CGl}}}Bj}{c{{B`{CGn}}}Bj}{c{{B`{CH`}}}Bj}{c{{B`{CHb}}}Bj}{c{{B`{Fb}}}Bj}{c{{B`{CHd}}}Bj}{c{{B`{Fd}}}Bj}{c{{B`{CHf}}}Bj}{c{{B`{CHh}}}Bj}{c{{B`{CHj}}}Bj}{c{{B`{CHl}}}Bj}{c{{B`{Ff}}}Bj}{c{{B`{CHn}}}Bj}{c{{B`{CI`}}}Bj}{c{{B`{CIb}}}Bj}{c{{B`{Fh}}}Bj}{c{{B`{CId}}}Bj}{c{{B`{CIf}}}Bj}{c{{B`{Fj}}}Bj}{c{{B`{CIh}}}Bj}{c{{B`{CIj}}}Bj}{c{{B`{CIl}}}Bj}{c{{B`{CIn}}}Bj}{c{{B`{CJ`}}}Bj}{c{{B`{CJb}}}Bj}{c{{B`{CJd}}}Bj}{c{{B`{CJf}}}Bj}{c{{B`{CJh}}}Bj}{c{{B`{Fl}}}Bj}{c{{B`{CJj}}}Bj}{c{{B`{CJl}}}Bj}{c{{B`{CJn}}}Bj}{c{{B`{CK`}}}Bj}{c{{B`{CKb}}}Bj}{c{{B`{CKd}}}Bj}{c{{B`{CKf}}}Bj}{c{{B`{CKh}}}Bj}{c{{B`{CKj}}}Bj}{c{{B`{CKl}}}Bj}{c{{B`{CKn}}}Bj}{c{{B`{CL`}}}Bj}{c{{B`{CLb}}}Bj}{c{{B`{Fn}}}Bj}{c{{B`{CLd}}}Bj}{c{{B`{G`}}}Bj}{c{{B`{CLf}}}Bj}{c{{B`{CLh}}}Bj}{c{{B`{CLj}}}Bj}{c{{B`{CLl}}}Bj}{c{{B`{CLn}}}Bj}{c{{B`{CM`}}}Bj}{c{{B`{CMb}}}Bj}{c{{B`{CMd}}}Bj}{c{{B`{CMf}}}Bj}{c{{B`{CMh}}}Bj}{c{{B`{CMj}}}Bj}{c{{B`{Gb}}}Bj}{c{{B`{Gd}}}Bj}{c{{B`{Gf}}}Bj}{c{{B`{CMl}}}Bj}{c{{B`{CMn}}}Bj}{c{{B`{CN`}}}Bj}{c{{B`{CNb}}}Bj}{c{{B`{CNd}}}Bj}{c{{B`{CNf}}}Bj}{c{{B`{CNh}}}Bj}{c{{B`{CNj}}}Bj}{c{{B`{CNl}}}Bj}{c{{B`{CNn}}}Bj}{c{{B`{CO`}}}Bj}{c{{B`{COb}}}Bj}{c{{B`{COd}}}Bj}{c{{B`{Gh}}}Bj}{c{{B`{COf}}}Bj}{c{{B`{COh}}}Bj}{c{{B`{Gj}}}Bj}{c{{B`{COj}}}Bj}{c{{B`{COl}}}Bj}{c{{B`{Gl}}}Bj}{c{{B`{COn}}}Bj}{c{{B`{D@`}}}Bj}{c{{B`{D@b}}}Bj}{c{{B`{D@d}}}Bj}{c{{B`{D@f}}}Bj}{c{{B`{D@h}}}Bj}{c{{B`{Gn}}}Bj}{c{{B`{D@j}}}Bj}{c{{B`{D@l}}}Bj}{c{{B`{H`}}}Bj}{c{{B`{Hb}}}Bj}{c{{B`{D@n}}}Bj}{c{{B`{Hd}}}Bj}{c{{B`{DA`}}}Bj}{c{{B`{Hf}}}Bj}{c{{B`{DAb}}}Bj}{c{{B`{DAd}}}Bj}{c{{B`{DAf}}}Bj}{c{{B`{DAh}}}Bj}{c{{B`{DAj}}}Bj}{c{{B`{DAl}}}Bj}``````````````{{DhDh}Dh}{{DjDj}Dj}{{DlDl}Dl}{{DnDn}Dn}{{E`E`}E`}{{EbEb}Eb}{{EdEd}Ed}{{EfEf}Ef}{{EhEh}Eh}{{EjEj}Ej}{{ElEl}El}{{EnEn}En}{{F`F`}F`}{{FbFb}Fb}{{FdFd}Fd}{{FfFf}Ff}{{FhFh}Fh}{{FjFj}Fj}{{FlFl}Fl}{{FnFn}Fn}{{G`G`}G`}{{GbGb}Gb}{{GdGd}Gd}{{GfGf}Gf}{{GhGh}Gh}{{GjGj}Gj}{{GlGl}Gl}{{GnGn}Gn}{{H`H`}H`}{{HbHb}Hb}{{HdHd}Hd}{{HfHf}Hf}````````````````````````{{}Dh}{{}Dj}{{}Dl}{{}Dn}{{}E`}{{}Eb}{{}Ed}{{}Ef}{{}Eh}{{}Ej}{{}El}{{}En}{{}F`}{{}Fb}{{}Fd}{{}Ff}{{}Fh}{{}Fj}{{}Fl}{{}Fn}{{}G`}{{}Gb}{{}Gd}{{}Gf}{{}Gh}{{}Gj}{{}Gl}{{}Gn}{{}H`}{{}Hb}{{}Hd}{{}Hf}````````````````{{HjHj}Bl}{{HlHl}Bl}{{HnHn}Bl}{{I`I`}Bl}{{IbIb}Bl}{{IdId}Bl}{{IfIf}Bl}{{IhIh}Bl}{{IjIj}Bl}{{IlIl}Bl}{{InIn}Bl}{{J`J`}Bl}{{JbJb}Bl}{{JdJd}Bl}{{JfJf}Bl}{{JhJh}Bl}{{JjJj}Bl}{{JlJl}Bl}{{JnJn}Bl}{{K`K`}Bl}{{KbKb}Bl}{{KdKd}Bl}{{KfKf}Bl}{{KhKh}Bl}{{KjKj}Bl}{{KlKl}Bl}{{KnKn}Bl}{{L`L`}Bl}{{LbLb}Bl}{{LdLd}Bl}{{LfLf}Bl}{{LhLh}Bl}{{LjLj}Bl}{{LlLl}Bl}{{LnLn}Bl}{{M`M`}Bl}{{MbMb}Bl}{{MdMd}Bl}{{MfMf}Bl}{{MhMh}Bl}{{MjMj}Bl}{{MlMl}Bl}{{MnMn}Bl}{{N`N`}Bl}{{NbNb}Bl}{{NdNd}Bl}{{NfNf}Bl}{{NhNh}Bl}{{NjNj}Bl}{{NlNl}Bl}{{NnNn}Bl}{{O`O`}Bl}{{ObOb}Bl}{{OdOd}Bl}{{OfOf}Bl}{{OhOh}Bl}{{OjOj}Bl}{{OlOl}Bl}{{OnOn}Bl}{{A@`A@`}Bl}{{A@bA@b}Bl}{{A@dA@d}Bl}{{A@fA@f}Bl}{{A@hA@h}Bl}{{A@jA@j}Bl}{{A@lA@l}Bl}{{A@nA@n}Bl}{{AA`AA`}Bl}{{AAbAAb}Bl}{{AAdAAd}Bl}{{AAfAAf}Bl}{{AAhAAh}Bl}{{AAjAAj}Bl}{{AAlAAl}Bl}{{AAnAAn}Bl}{{AB`AB`}Bl}{{ABbABb}Bl}{{ABdABd}Bl}{{ABfABf}Bl}{{ABhABh}Bl}{{ABjABj}Bl}{{ABlABl}Bl}{{ABnABn}Bl}{{AC`AC`}Bl}{{ACbACb}Bl}{{ACdACd}Bl}{{ACfACf}Bl}{{AChACh}Bl}{{ACjACj}Bl}{{AClACl}Bl}{{ACnACn}Bl}{{AD`AD`}Bl}{{ADbADb}Bl}{{ADdADd}Bl}{{ADfADf}Bl}{{ADhADh}Bl}{{ADjADj}Bl}{{ADlADl}Bl}{{ADnADn}Bl}{{AE`AE`}Bl}{{AEbAEb}Bl}{{AEdAEd}Bl}{{AEfAEf}Bl}{{AEhAEh}Bl}{{AEjAEj}Bl}{{AElAEl}Bl}{{AEnAEn}Bl}{{AF`AF`}Bl}{{AFbAFb}Bl}{{AFdAFd}Bl}{{AFfAFf}Bl}{{AFhAFh}Bl}{{AFjAFj}Bl}{{AFlAFl}Bl}{{AFnAFn}Bl}{{AG`AG`}Bl}{{AGbAGb}Bl}{{AGdAGd}Bl}{{AGfAGf}Bl}{{AGhAGh}Bl}{{AGjAGj}Bl}{{AGlAGl}Bl}{{AGnAGn}Bl}{{AH`AH`}Bl}{{AHbAHb}Bl}{{AHdAHd}Bl}{{AHfAHf}Bl}{{AHhAHh}Bl}{{AHjAHj}Bl}{{AHlAHl}Bl}{{AHnAHn}Bl}{{AI`AI`}Bl}{{AIbAIb}Bl}{{AIdAId}Bl}{{AIfAIf}Bl}{{AIhAIh}Bl}{{AIjAIj}Bl}{{AIlAIl}Bl}{{AInAIn}Bl}{{AJ`AJ`}Bl}{{AJbAJb}Bl}{{AJdAJd}Bl}{{AJfAJf}Bl}{{AJhAJh}Bl}{{AJjAJj}Bl}{{AJlAJl}Bl}{{AJnAJn}Bl}{{AK`AK`}Bl}{{AKbAKb}Bl}{{AKdAKd}Bl}{{AKfAKf}Bl}{{AKhAKh}Bl}{{AKjAKj}Bl}{{AKlAKl}Bl}{{AKnAKn}Bl}{{AL`AL`}Bl}{{ALbALb}Bl}{{ALdALd}Bl}{{ALfALf}Bl}{{ALhALh}Bl}{{ALjALj}Bl}{{ALlALl}Bl}{{ALnALn}Bl}{{AM`AM`}Bl}{{AMbAMb}Bl}{{AMdAMd}Bl}{{AMfAMf}Bl}{{AMhAMh}Bl}{{AMjAMj}Bl}{{AMlAMl}Bl}{{AMnAMn}Bl}{{AN`AN`}Bl}{{ANbANb}Bl}{{ANdANd}Bl}{{ANfANf}Bl}{{ANhANh}Bl}{{ANjANj}Bl}{{ANlANl}Bl}{{ANnANn}Bl}{{AO`AO`}Bl}{{AObAOb}Bl}{{AOdAOd}Bl}{{AOfAOf}Bl}{{AOhAOh}Bl}{{AOjAOj}Bl}{{AOlAOl}Bl}{{AOnAOn}Bl}{{B@`B@`}Bl}{{B@bB@b}Bl}{{B@dB@d}Bl}{{B@fB@f}Bl}{{B@hB@h}Bl}{{B@jB@j}Bl}{{B@lB@l}Bl}{{B@nB@n}Bl}{{BA`BA`}Bl}{{BAbBAb}Bl}{{BAdBAd}Bl}{{BAfBAf}Bl}{{BAhBAh}Bl}{{BAjBAj}Bl}{{BAlBAl}Bl}{{BAnBAn}Bl}{{BB`BB`}Bl}{{BBbBBb}Bl}{{BBdBBd}Bl}{{BBfBBf}Bl}{{BBhBBh}Bl}{{BBjBBj}Bl}{{BBlBBl}Bl}{{BBnBBn}Bl}{{BC`BC`}Bl}{{BCbBCb}Bl}{{BCdBCd}Bl}{{BCfBCf}Bl}{{BChBCh}Bl}{{BCjBCj}Bl}{{BClBCl}Bl}{{BCnBCn}Bl}{{BD`BD`}Bl}{{BDbBDb}Bl}{{BDdBDd}Bl}{{BDfBDf}Bl}{{BDhBDh}Bl}{{BDjBDj}Bl}{{BDlBDl}Bl}{{BDnBDn}Bl}{{BE`BE`}Bl}{{BEbBEb}Bl}{{BEdBEd}Bl}{{BEfBEf}Bl}{{BEhBEh}Bl}{{BEjBEj}Bl}{{BElBEl}Bl}{{BEnBEn}Bl}{{BF`BF`}Bl}{{BFbBFb}Bl}{{BFdBFd}Bl}{{BFfBFf}Bl}{{BFhBFh}Bl}{{BFjBFj}Bl}{{BFlBFl}Bl}{{BFnBFn}Bl}{{BG`BG`}Bl}{{BGbBGb}Bl}{{BGdBGd}Bl}{{BGfBGf}Bl}{{BGhBGh}Bl}{{BGjBGj}Bl}{{BGlBGl}Bl}{{BGnBGn}Bl}{{BH`BH`}Bl}{{BHbBHb}Bl}{{BHdBHd}Bl}{{BHfBHf}Bl}{{BHhBHh}Bl}{{BHjBHj}Bl}{{BHlBHl}Bl}{{BHnBHn}Bl}{{BI`BI`}Bl}{{BIbBIb}Bl}{{BIdBId}Bl}{{BIfBIf}Bl}{{BIhBIh}Bl}{{BIjBIj}Bl}{{BIlBIl}Bl}{{BInBIn}Bl}{{BJ`BJ`}Bl}{{BJbBJb}Bl}{{BJdBJd}Bl}{{BJfBJf}Bl}{{BJhBJh}Bl}{{BJjBJj}Bl}{{BJlBJl}Bl}{{BJnBJn}Bl}{{BK`BK`}Bl}{{BKbBKb}Bl}{{BKdBKd}Bl}{{BKfBKf}Bl}{{BKhBKh}Bl}{{BKjBKj}Bl}{{BKlBKl}Bl}{{BKnBKn}Bl}{{BL`BL`}Bl}{{BLbBLb}Bl}{{BLdBLd}Bl}{{BLfBLf}Bl}{{BLhBLh}Bl}{{BLjBLj}Bl}{{BLlBLl}Bl}{{BLnBLn}Bl}{{BM`BM`}Bl}{{BMbBMb}Bl}{{BMdBMd}Bl}{{BMfBMf}Bl}{{BMhBMh}Bl}{{BMjBMj}Bl}{{BMlBMl}Bl}{{BMnBMn}Bl}{{BN`BN`}Bl}{{BNbBNb}Bl}{{DhDh}Bl}{{BNdBNd}Bl}{{BNfBNf}Bl}{{BNhBNh}Bl}{{DjDj}Bl}{{BNjBNj}Bl}{{BNlBNl}Bl}{{BNnBNn}Bl}{{DlDl}Bl}{{DnDn}Bl}{{BO`BO`}Bl}{{BObBOb}Bl}{{BOdBOd}Bl}{{BOfBOf}Bl}{{BOhBOh}Bl}{{BOjBOj}Bl}{{BOlBOl}Bl}{{BOnBOn}Bl}{{C@`C@`}Bl}{{C@bC@b}Bl}{{E`E`}Bl}{{C@dC@d}Bl}{{C@fC@f}Bl}{{EbEb}Bl}{{C@hC@h}Bl}{{C@jC@j}Bl}{{C@lC@l}Bl}{{C@nC@n}Bl}{{CA`CA`}Bl}{{CAbCAb}Bl}{{CAdCAd}Bl}{{CAfCAf}Bl}{{CAhCAh}Bl}{{EdEd}Bl}{{CAjCAj}Bl}{{CAlCAl}Bl}{{CAnCAn}Bl}{{CB`CB`}Bl}{{CBbCBb}Bl}{{CBdCBd}Bl}{{CBfCBf}Bl}{{CBhCBh}Bl}{{CBjCBj}Bl}{{CBlCBl}Bl}{{CBnCBn}Bl}{{CC`CC`}Bl}{{CCbCCb}Bl}{{CCdCCd}Bl}{{CCfCCf}Bl}{{CChCCh}Bl}{{CCjCCj}Bl}{{CClCCl}Bl}{{CCnCCn}Bl}{{CD`CD`}Bl}{{CDbCDb}Bl}{{EfEf}Bl}{{EhEh}Bl}{{CDdCDd}Bl}{{CDfCDf}Bl}{{CDhCDh}Bl}{{CDjCDj}Bl}{{CDlCDl}Bl}{{CDnCDn}Bl}{{EjEj}Bl}{{CE`CE`}Bl}{{CEbCEb}Bl}{{CEdCEd}Bl}{{CEfCEf}Bl}{{CEhCEh}Bl}{{CEjCEj}Bl}{{CElCEl}Bl}{{ElEl}Bl}{{CEnCEn}Bl}{{CF`CF`}Bl}{{CFbCFb}Bl}{{EnEn}Bl}{{CFdCFd}Bl}{{CFfCFf}Bl}{{CFhCFh}Bl}{{CFjCFj}Bl}{{CFlCFl}Bl}{{CFnCFn}Bl}{{CG`CG`}Bl}{{CGbCGb}Bl}{{CGdCGd}Bl}{{CGfCGf}Bl}{{F`F`}Bl}{{CGhCGh}Bl}{{CGjCGj}Bl}{{CGlCGl}Bl}{{CGnCGn}Bl}{{CH`CH`}Bl}{{CHbCHb}Bl}{{FbFb}Bl}{{CHdCHd}Bl}{{FdFd}Bl}{{CHfCHf}Bl}{{CHhCHh}Bl}{{CHjCHj}Bl}{{CHlCHl}Bl}{{FfFf}Bl}{{CHnCHn}Bl}{{CI`CI`}Bl}{{CIbCIb}Bl}{{FhFh}Bl}{{CIdCId}Bl}{{CIfCIf}Bl}{{FjFj}Bl}{{CIhCIh}Bl}{{CIjCIj}Bl}{{CIlCIl}Bl}{{CInCIn}Bl}{{CJ`CJ`}Bl}{{CJbCJb}Bl}{{CJdCJd}Bl}{{CJfCJf}Bl}{{CJhCJh}Bl}{{FlFl}Bl}{{CJjCJj}Bl}{{CJlCJl}Bl}{{CJnCJn}Bl}{{CK`CK`}Bl}{{CKbCKb}Bl}{{CKdCKd}Bl}{{CKfCKf}Bl}{{CKhCKh}Bl}{{CKjCKj}Bl}{{CKlCKl}Bl}{{CKnCKn}Bl}{{CL`CL`}Bl}{{CLbCLb}Bl}{{FnFn}Bl}{{CLdCLd}Bl}{{G`G`}Bl}{{CLfCLf}Bl}{{CLhCLh}Bl}{{CLjCLj}Bl}{{CLlCLl}Bl}{{CLnCLn}Bl}{{CM`CM`}Bl}{{CMbCMb}Bl}{{CMdCMd}Bl}{{CMfCMf}Bl}{{CMhCMh}Bl}{{CMjCMj}Bl}{{GbGb}Bl}{{GdGd}Bl}{{GfGf}Bl}{{CMlCMl}Bl}{{CMnCMn}Bl}{{CN`CN`}Bl}{{CNbCNb}Bl}{{CNdCNd}Bl}{{CNfCNf}Bl}{{CNhCNh}Bl}{{CNjCNj}Bl}{{CNlCNl}Bl}{{CNnCNn}Bl}{{CO`CO`}Bl}{{CObCOb}Bl}{{COdCOd}Bl}{{GhGh}Bl}{{COfCOf}Bl}{{COhCOh}Bl}{{GjGj}Bl}{{COjCOj}Bl}{{COlCOl}Bl}{{GlGl}Bl}{{COnCOn}Bl}{{D@`D@`}Bl}{{D@bD@b}Bl}{{D@dD@d}Bl}{{D@fD@f}Bl}{{D@hD@h}Bl}{{GnGn}Bl}{{D@jD@j}Bl}{{D@lD@l}Bl}{{H`H`}Bl}{{HbHb}Bl}{{D@nD@n}Bl}{{HdHd}Bl}{{DA`DA`}Bl}{{HfHf}Bl}{{DAbDAb}Bl}{{DAdDAd}Bl}{{DAfDAf}Bl}{{DAhDAh}Bl}{{DAjDAj}Bl}{{DAlDAl}Bl}```````````````````{{Dhc}Af{{DBb{}{{DB`{Dh}}}}}}{{Djc}Af{{DBb{}{{DB`{Dj}}}}}}{{Dlc}Af{{DBb{}{{DB`{Dl}}}}}}{{Dnc}Af{{DBb{}{{DB`{Dn}}}}}}{{E`c}Af{{DBb{}{{DB`{E`}}}}}}{{Ebc}Af{{DBb{}{{DB`{Eb}}}}}}{{Edc}Af{{DBb{}{{DB`{Ed}}}}}}{{Efc}Af{{DBb{}{{DB`{Ef}}}}}}{{Ehc}Af{{DBb{}{{DB`{Eh}}}}}}{{Ejc}Af{{DBb{}{{DB`{Ej}}}}}}{{Elc}Af{{DBb{}{{DB`{El}}}}}}{{Enc}Af{{DBb{}{{DB`{En}}}}}}{{F`c}Af{{DBb{}{{DB`{F`}}}}}}{{Fbc}Af{{DBb{}{{DB`{Fb}}}}}}{{Fdc}Af{{DBb{}{{DB`{Fd}}}}}}{{Ffc}Af{{DBb{}{{DB`{Ff}}}}}}{{Fhc}Af{{DBb{}{{DB`{Fh}}}}}}{{Fjc}Af{{DBb{}{{DB`{Fj}}}}}}{{Flc}Af{{DBb{}{{DB`{Fl}}}}}}{{Fnc}Af{{DBb{}{{DB`{Fn}}}}}}{{G`c}Af{{DBb{}{{DB`{G`}}}}}}{{Gbc}Af{{DBb{}{{DB`{Gb}}}}}}{{Gdc}Af{{DBb{}{{DB`{Gd}}}}}}{{Gfc}Af{{DBb{}{{DB`{Gf}}}}}}{{Ghc}Af{{DBb{}{{DB`{Gh}}}}}}{{Gjc}Af{{DBb{}{{DB`{Gj}}}}}}{{Glc}Af{{DBb{}{{DB`{Gl}}}}}}{{Gnc}Af{{DBb{}{{DB`{Gn}}}}}}{{H`c}Af{{DBb{}{{DB`{H`}}}}}}{{Hbc}Af{{DBb{}{{DB`{Hb}}}}}}{{Hdc}Af{{DBb{}{{DB`{Hd}}}}}}{{Hfc}Af{{DBb{}{{DB`{Hf}}}}}}{Bbb}````````````````````````````````````````````````````````````{{HjBn}DBd}{{HlBn}DBd}{{HnBn}DBd}{{I`Bn}DBd}{{IbBn}DBd}{{IdBn}DBd}{{IfBn}DBd}{{IhBn}DBd}{{IjBn}DBd}{{IlBn}DBd}{{InBn}DBd}{{J`Bn}DBd}{{JbBn}DBd}{{JdBn}DBd}{{JfBn}DBd}{{JhBn}DBd}{{JjBn}DBd}{{JlBn}DBd}{{JnBn}DBd}{{K`Bn}DBd}{{KbBn}DBd}{{KdBn}DBd}{{KfBn}DBd}{{KhBn}DBd}{{KjBn}DBd}{{KlBn}DBd}{{KnBn}DBd}{{L`Bn}DBd}{{LbBn}DBd}{{LdBn}DBd}{{LfBn}DBd}{{LhBn}DBd}{{LjBn}DBd}{{LlBn}DBd}{{LnBn}DBd}{{M`Bn}DBd}{{MbBn}DBd}{{MdBn}DBd}{{MfBn}DBd}{{MhBn}DBd}{{MjBn}DBd}{{MlBn}DBd}{{MnBn}DBd}{{N`Bn}DBd}{{NbBn}DBd}{{NdBn}DBd}{{NfBn}DBd}{{NhBn}DBd}{{NjBn}DBd}{{NlBn}DBd}{{NnBn}DBd}{{O`Bn}DBd}{{ObBn}DBd}{{OdBn}DBd}{{OfBn}DBd}{{OhBn}DBd}{{OjBn}DBd}{{OlBn}DBd}{{OnBn}DBd}{{A@`Bn}DBd}{{A@bBn}DBd}{{A@dBn}DBd}{{A@fBn}DBd}{{A@hBn}DBd}{{A@jBn}DBd}{{A@lBn}DBd}{{A@nBn}DBd}{{AA`Bn}DBd}{{AAbBn}DBd}{{AAdBn}DBd}{{AAfBn}DBd}{{AAhBn}DBd}{{AAjBn}DBd}{{AAlBn}DBd}{{AAnBn}DBd}{{AB`Bn}DBd}{{ABbBn}DBd}{{ABdBn}DBd}{{ABfBn}DBd}{{ABhBn}DBd}{{ABjBn}DBd}{{ABlBn}DBd}{{ABnBn}DBd}{{AC`Bn}DBd}{{ACbBn}DBd}{{ACdBn}DBd}{{ACfBn}DBd}{{AChBn}DBd}{{ACjBn}DBd}{{AClBn}DBd}{{ACnBn}DBd}{{AD`Bn}DBd}{{ADbBn}DBd}{{ADdBn}DBd}{{ADfBn}DBd}{{ADhBn}DBd}{{ADjBn}DBd}{{ADlBn}DBd}{{ADnBn}DBd}{{AE`Bn}DBd}{{AEbBn}DBd}{{AEdBn}DBd}{{AEfBn}DBd}{{AEhBn}DBd}{{AEjBn}DBd}{{AElBn}DBd}{{AEnBn}DBd}{{AF`Bn}DBd}{{AFbBn}DBd}{{AFdBn}DBd}{{AFfBn}DBd}{{AFhBn}DBd}{{AFjBn}DBd}{{AFlBn}DBd}{{AFnBn}DBd}{{AG`Bn}DBd}{{AGbBn}DBd}{{AGdBn}DBd}{{AGfBn}DBd}{{AGhBn}DBd}{{AGjBn}DBd}{{AGlBn}DBd}{{AGnBn}DBd}{{AH`Bn}DBd}{{AHbBn}DBd}{{AHdBn}DBd}{{AHfBn}DBd}{{AHhBn}DBd}{{AHjBn}DBd}{{AHlBn}DBd}{{AHnBn}DBd}{{AI`Bn}DBd}{{AIbBn}DBd}{{AIdBn}DBd}{{AIfBn}DBd}{{AIhBn}DBd}{{AIjBn}DBd}{{AIlBn}DBd}{{AInBn}DBd}{{AJ`Bn}DBd}{{AJbBn}DBd}{{AJdBn}DBd}{{AJfBn}DBd}{{AJhBn}DBd}{{AJjBn}DBd}{{AJlBn}DBd}{{AJnBn}DBd}{{AK`Bn}DBd}{{AKbBn}DBd}{{AKdBn}DBd}{{AKfBn}DBd}{{AKhBn}DBd}{{AKjBn}DBd}{{AKlBn}DBd}{{AKnBn}DBd}{{AL`Bn}DBd}{{ALbBn}DBd}{{ALdBn}DBd}{{ALfBn}DBd}{{ALhBn}DBd}{{ALjBn}DBd}{{ALlBn}DBd}{{ALnBn}DBd}{{AM`Bn}DBd}{{AMbBn}DBd}{{AMdBn}DBd}{{AMfBn}DBd}{{AMhBn}DBd}{{AMjBn}DBd}{{AMlBn}DBd}{{AMnBn}DBd}{{AN`Bn}DBd}{{ANbBn}DBd}{{ANdBn}DBd}{{ANfBn}DBd}{{ANhBn}DBd}{{ANjBn}DBd}{{ANlBn}DBd}{{ANnBn}DBd}{{AO`Bn}DBd}{{AObBn}DBd}{{AOdBn}DBd}{{AOfBn}DBd}{{AOhBn}DBd}{{AOjBn}DBd}{{AOlBn}DBd}{{AOnBn}DBd}{{B@`Bn}DBd}{{B@bBn}DBd}{{B@dBn}DBd}{{B@fBn}DBd}{{B@hBn}DBd}{{B@jBn}DBd}{{B@lBn}DBd}{{B@nBn}DBd}{{BA`Bn}DBd}{{BAbBn}DBd}{{BAdBn}DBd}{{BAfBn}DBd}{{BAhBn}DBd}{{BAjBn}DBd}{{BAlBn}DBd}{{BAnBn}DBd}{{BB`Bn}DBd}{{BBbBn}DBd}{{BBdBn}DBd}{{BBfBn}DBd}{{BBhBn}DBd}{{BBjBn}DBd}{{BBlBn}DBd}{{BBnBn}DBd}{{BC`Bn}DBd}{{BCbBn}DBd}{{BCdBn}DBd}{{BCfBn}DBd}{{BChBn}DBd}{{BCjBn}DBd}{{BClBn}DBd}{{BCnBn}DBd}{{BD`Bn}DBd}{{BDbBn}DBd}{{BDdBn}DBd}{{BDfBn}DBd}{{BDhBn}DBd}{{BDjBn}DBd}{{BDlBn}DBd}{{BDnBn}DBd}{{BE`Bn}DBd}{{BEbBn}DBd}{{BEdBn}DBd}{{BEfBn}DBd}{{BEhBn}DBd}{{BEjBn}DBd}{{BElBn}DBd}{{BEnBn}DBd}{{BF`Bn}DBd}{{BFbBn}DBd}{{BFdBn}DBd}{{BFfBn}DBd}{{BFhBn}DBd}{{BFjBn}DBd}{{BFlBn}DBd}{{BFnBn}DBd}{{BG`Bn}DBd}{{BGbBn}DBd}{{BGdBn}DBd}{{BGfBn}DBd}{{BGhBn}DBd}{{BGjBn}DBd}{{BGlBn}DBd}{{BGnBn}DBd}{{BH`Bn}DBd}{{BHbBn}DBd}{{BHdBn}DBd}{{BHfBn}DBd}{{BHhBn}DBd}{{BHjBn}DBd}{{BHlBn}DBd}{{BHnBn}DBd}{{BI`Bn}DBd}{{BIbBn}DBd}{{BIdBn}DBd}{{BIfBn}DBd}{{BIhBn}DBd}{{BIjBn}DBd}{{BIlBn}DBd}{{BInBn}DBd}{{BJ`Bn}DBd}{{BJbBn}DBd}{{BJdBn}DBd}{{BJfBn}DBd}{{BJhBn}DBd}{{BJjBn}DBd}{{BJlBn}DBd}{{BJnBn}DBd}{{BK`Bn}DBd}{{BKbBn}DBd}{{BKdBn}DBd}{{BKfBn}DBd}{{BKhBn}DBd}{{BKjBn}DBd}{{BKlBn}DBd}{{BKnBn}DBd}{{BL`Bn}DBd}{{BLbBn}DBd}{{BLdBn}DBd}{{BLfBn}DBd}{{BLhBn}DBd}{{BLjBn}DBd}{{BLlBn}DBd}{{BLnBn}DBd}{{BM`Bn}DBd}{{BMbBn}DBd}{{BMdBn}DBd}{{BMfBn}DBd}{{BMhBn}DBd}{{BMjBn}DBd}{{BMlBn}DBd}{{BMnBn}DBd}{{BN`Bn}DBd}{{BNbBn}DBd}{{DhBn}DBd}0000{{BNdBn}DBd}{{BNfBn}DBd}{{BNhBn}DBd}{{DjBn}DBd}0000{{BNjBn}DBd}{{BNlBn}DBd}{{BNnBn}DBd}{{DlBn}DBd}0000{{DnBn}DBd}0000{{BO`Bn}DBd}{{BObBn}DBd}{{BOdBn}DBd}{{BOfBn}DBd}{{BOhBn}DBd}{{BOjBn}DBd}{{BOlBn}DBd}{{BOnBn}DBd}{{C@`Bn}DBd}{{C@bBn}DBd}{{E`Bn}DBd}0000{{C@dBn}DBd}{{C@fBn}DBd}{{EbBn}DBd}0000{{C@hBn}DBd}{{C@jBn}DBd}{{C@lBn}DBd}{{C@nBn}DBd}{{CA`Bn}DBd}{{CAbBn}DBd}{{CAdBn}DBd}{{CAfBn}DBd}{{CAhBn}DBd}{{EdBn}DBd}0000{{CAjBn}DBd}{{CAlBn}DBd}{{CAnBn}DBd}{{CB`Bn}DBd}{{CBbBn}DBd}{{CBdBn}DBd}{{CBfBn}DBd}{{CBhBn}DBd}{{CBjBn}DBd}{{CBlBn}DBd}{{CBnBn}DBd}{{CC`Bn}DBd}{{CCbBn}DBd}{{CCdBn}DBd}{{CCfBn}DBd}{{CChBn}DBd}{{CCjBn}DBd}{{CClBn}DBd}{{CCnBn}DBd}{{CD`Bn}DBd}{{CDbBn}DBd}{{EfBn}DBd}0000{{EhBn}DBd}0000{{CDdBn}DBd}{{CDfBn}DBd}{{CDhBn}DBd}{{CDjBn}DBd}{{CDlBn}DBd}{{CDnBn}DBd}{{EjBn}DBd}0000{{CE`Bn}DBd}{{CEbBn}DBd}{{CEdBn}DBd}{{CEfBn}DBd}{{CEhBn}DBd}{{CEjBn}DBd}{{CElBn}DBd}{{ElBn}DBd}0000{{CEnBn}DBd}{{CF`Bn}DBd}{{CFbBn}DBd}{{EnBn}DBd}0000{{CFdBn}DBd}{{CFfBn}DBd}{{CFhBn}DBd}{{CFjBn}DBd}{{CFlBn}DBd}{{CFnBn}DBd}{{CG`Bn}DBd}{{CGbBn}DBd}{{CGdBn}DBd}{{CGfBn}DBd}{{F`Bn}DBd}0000{{CGhBn}DBd}{{CGjBn}DBd}{{CGlBn}DBd}{{CGnBn}DBd}{{CH`Bn}DBd}{{CHbBn}DBd}{{FbBn}DBd}0000{{CHdBn}DBd}{{FdBn}DBd}0000{{CHfBn}DBd}{{CHhBn}DBd}{{CHjBn}DBd}{{CHlBn}DBd}{{FfBn}DBd}0000{{CHnBn}DBd}{{CI`Bn}DBd}{{CIbBn}DBd}{{FhBn}DBd}0000{{CIdBn}DBd}{{CIfBn}DBd}{{FjBn}DBd}0000{{CIhBn}DBd}{{CIjBn}DBd}{{CIlBn}DBd}{{CInBn}DBd}{{CJ`Bn}DBd}{{CJbBn}DBd}{{CJdBn}DBd}{{CJfBn}DBd}{{CJhBn}DBd}{{FlBn}DBd}0000{{CJjBn}DBd}{{CJlBn}DBd}{{CJnBn}DBd}{{CK`Bn}DBd}{{CKbBn}DBd}{{CKdBn}DBd}{{CKfBn}DBd}{{CKhBn}DBd}{{CKjBn}DBd}{{CKlBn}DBd}{{CKnBn}DBd}{{CL`Bn}DBd}{{CLbBn}DBd}{{FnBn}DBd}0000{{CLdBn}DBd}{{G`Bn}DBd}0000{{CLfBn}DBd}{{CLhBn}DBd}{{CLjBn}DBd}{{CLlBn}DBd}{{CLnBn}DBd}{{CM`Bn}DBd}{{CMbBn}DBd}{{CMdBn}DBd}{{CMfBn}DBd}{{CMhBn}DBd}{{CMjBn}DBd}{{GbBn}DBd}0000{{GdBn}DBd}0000{{GfBn}DBd}0000{{CMlBn}DBd}{{CMnBn}DBd}{{CN`Bn}DBd}{{CNbBn}DBd}{{CNdBn}DBd}{{CNfBn}DBd}{{CNhBn}DBd}{{CNjBn}DBd}{{CNlBn}DBd}{{CNnBn}DBd}{{CO`Bn}DBd}{{CObBn}DBd}{{COdBn}DBd}{{GhBn}DBd}0000{{COfBn}DBd}{{COhBn}DBd}{{GjBn}DBd}0000{{COjBn}DBd}{{COlBn}DBd}{{GlBn}DBd}0000{{COnBn}DBd}{{D@`Bn}DBd}{{D@bBn}DBd}{{D@dBn}DBd}{{D@fBn}DBd}{{D@hBn}DBd}{{GnBn}DBd}0000{{D@jBn}DBd}{{D@lBn}DBd}{{H`Bn}DBd}0000{{HbBn}DBd}0000{{D@nBn}DBd}{{HdBn}DBd}0000{{DA`Bn}DBd}{{HfBn}DBd}0000{{DAbBn}DBd}{{DAdBn}DBd}{{DAfBn}DBd}{{DAhBn}DBd}{{DAjBn}DBd}{{DAlBn}DBd}```````````````````{cc{}}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{b{{DBf{Dh}}}}{f{{DBf{Dj}}}}{f{{DBf{Dl}}}}{b{{DBf{Dn}}}}{Bb{{DBf{E`}}}}{Bb{{DBf{Eb}}}}{Hh{{DBf{Ed}}}}{Bb{{DBf{Ef}}}}{b{{DBf{Eh}}}}{b{{DBf{Ej}}}}{Bb{{DBf{El}}}}{f{{DBf{En}}}}{f{{DBf{F`}}}}{f{{DBf{Fb}}}}{f{{DBf{Fd}}}}{b{{DBf{Ff}}}}{b{{DBf{Fh}}}}{b{{DBf{Fj}}}}{f{{DBf{Fl}}}}{f{{DBf{Fn}}}}{Bb{{DBf{G`}}}}{f{{DBf{Gb}}}}{b{{DBf{Gd}}}}{f{{DBf{Gf}}}}{Hh{{DBf{Gh}}}}{f{{DBf{Gj}}}}{f{{DBf{Gl}}}}{f{{DBf{Gn}}}}{b{{DBf{H`}}}}{Bb{{DBf{Hb}}}}{b{{DBf{Hd}}}}{Bb{{DBf{Hf}}}}{bDh}{fDj}{fDl}{bDn}{BbE`}{BbEb}{HhEd}{BbEf}{bEh}{bEj}{BbEl}{fEn}{fF`}{fFb}{fFd}{bFf}{bFh}{bFj}{fFl}{fFn}{BbG`}{fGb}{bGd}{fGf}{HhGh}{fGj}{fGl}{fGn}{bH`}{BbHb}{bHd}{BbHf}{bDh}{fDj}{fDl}{bDn}{BbE`}{BbEb}{HhEd}{BbEf}{bEh}{bEj}{BbEl}{fEn}{fF`}{fFb}{fFd}{bFf}{bFh}{bFj}{fFl}{fFn}{BbG`}{fGb}{bGd}{fGf}{HhGh}{fGj}{fGl}{fGn}{bH`}{BbHb}{bHd}{BbHf}{DBh{{DBf{BMl}}}}{DBh{{DBf{BMn}}}}{DBh{{DBf{BN`}}}}{DBh{{DBf{BNb}}}}{DBh{{DBf{BNd}}}}{DBh{{DBf{BNf}}}}{DBh{{DBf{BNh}}}}{DBh{{DBf{BNj}}}}{DBh{{DBf{BNl}}}}{DBh{{DBf{BNn}}}}{DBh{{DBf{BO`}}}}{DBh{{DBf{BOb}}}}{DBh{{DBf{BOd}}}}{DBh{{DBf{BOf}}}}{DBh{{DBf{BOh}}}}{DBh{{DBf{BOj}}}}{DBh{{DBf{BOl}}}}{DBh{{DBf{BOn}}}}{DBh{{DBf{C@`}}}}{DBh{{DBf{C@b}}}}{DBh{{DBf{C@d}}}}{DBh{{DBf{C@f}}}}{DBh{{DBf{C@h}}}}{DBh{{DBf{C@j}}}}{DBh{{DBf{C@l}}}}{DBh{{DBf{C@n}}}}{DBh{{DBf{CA`}}}}{DBh{{DBf{CAb}}}}{DBh{{DBf{CAd}}}}{DBh{{DBf{CAf}}}}{DBh{{DBf{CAh}}}}{DBh{{DBf{CAj}}}}{DBh{{DBf{CAl}}}}{DBh{{DBf{CAn}}}}{DBh{{DBf{CB`}}}}{DBh{{DBf{CBb}}}}{DBh{{DBf{CBd}}}}{DBh{{DBf{CBf}}}}{DBh{{DBf{CBh}}}}{DBh{{DBf{CBj}}}}{DBh{{DBf{CBl}}}}{DBh{{DBf{CBn}}}}{DBh{{DBf{CC`}}}}{DBh{{DBf{CCb}}}}{DBh{{DBf{CCd}}}}{DBh{{DBf{CCf}}}}{DBh{{DBf{CCh}}}}{DBh{{DBf{CCj}}}}{DBh{{DBf{CCl}}}}{DBh{{DBf{CCn}}}}{DBh{{DBf{CD`}}}}{DBh{{DBf{CDb}}}}{DBh{{DBf{CDd}}}}{DBh{{DBf{CDf}}}}{DBh{{DBf{CDh}}}}{DBh{{DBf{CDj}}}}{DBh{{DBf{CDl}}}}{DBh{{DBf{CDn}}}}{DBh{{DBf{CE`}}}}{DBh{{DBf{CEb}}}}{DBh{{DBf{CEd}}}}{DBh{{DBf{CEf}}}}{DBh{{DBf{CEh}}}}{DBh{{DBf{CEj}}}}{DBh{{DBf{CEl}}}}{DBh{{DBf{CEn}}}}{DBh{{DBf{CF`}}}}{DBh{{DBf{CFb}}}}{DBh{{DBf{CFd}}}}{DBh{{DBf{CFf}}}}{DBh{{DBf{CFh}}}}{DBh{{DBf{CFj}}}}{DBh{{DBf{CFl}}}}{DBh{{DBf{CFn}}}}{DBh{{DBf{CG`}}}}{DBh{{DBf{CGb}}}}{DBh{{DBf{CGd}}}}{DBh{{DBf{CGf}}}}{DBh{{DBf{CGh}}}}{DBh{{DBf{CGj}}}}{DBh{{DBf{CGl}}}}{DBh{{DBf{CGn}}}}{DBh{{DBf{CH`}}}}{DBh{{DBf{CHb}}}}{DBh{{DBf{CHd}}}}{DBh{{DBf{CHf}}}}{DBh{{DBf{CHh}}}}{DBh{{DBf{CHj}}}}{DBh{{DBf{CHl}}}}{DBh{{DBf{CHn}}}}{DBh{{DBf{CI`}}}}{DBh{{DBf{CIb}}}}{DBh{{DBf{CId}}}}{DBh{{DBf{CIf}}}}{DBh{{DBf{CIh}}}}{DBh{{DBf{CIj}}}}{DBh{{DBf{CIl}}}}{DBh{{DBf{CIn}}}}{DBh{{DBf{CJ`}}}}{DBh{{DBf{CJb}}}}{DBh{{DBf{CJd}}}}{DBh{{DBf{CJf}}}}{DBh{{DBf{CJh}}}}{DBh{{DBf{CJj}}}}{DBh{{DBf{CJl}}}}{DBh{{DBf{CJn}}}}{DBh{{DBf{CK`}}}}{DBh{{DBf{CKb}}}}{DBh{{DBf{CKd}}}}{DBh{{DBf{CKf}}}}{DBh{{DBf{CKh}}}}{DBh{{DBf{CKj}}}}{DBh{{DBf{CKl}}}}{DBh{{DBf{CKn}}}}{DBh{{DBf{CL`}}}}{DBh{{DBf{CLb}}}}{DBh{{DBf{CLd}}}}{DBh{{DBf{CLf}}}}{DBh{{DBf{CLh}}}}{DBh{{DBf{CLj}}}}{DBh{{DBf{CLl}}}}{DBh{{DBf{CLn}}}}{DBh{{DBf{CM`}}}}{DBh{{DBf{CMb}}}}{DBh{{DBf{CMd}}}}{DBh{{DBf{CMf}}}}{DBh{{DBf{CMh}}}}{DBh{{DBf{CMj}}}}{DBh{{DBf{CMl}}}}{DBh{{DBf{CMn}}}}{DBh{{DBf{CN`}}}}{DBh{{DBf{CNb}}}}{DBh{{DBf{CNd}}}}{DBh{{DBf{CNf}}}}{DBh{{DBf{CNh}}}}{DBh{{DBf{CNj}}}}{DBh{{DBf{CNl}}}}{DBh{{DBf{CNn}}}}{DBh{{DBf{CO`}}}}{DBh{{DBf{COb}}}}{DBh{{DBf{COd}}}}{DBh{{DBf{COf}}}}{DBh{{DBf{COh}}}}{DBh{{DBf{COj}}}}{DBh{{DBf{COl}}}}{DBh{{DBf{COn}}}}{DBh{{DBf{D@`}}}}{DBh{{DBf{D@b}}}}{DBh{{DBf{D@d}}}}{DBh{{DBf{D@f}}}}{DBh{{DBf{D@h}}}}{DBh{{DBf{D@j}}}}{DBh{{DBf{D@l}}}}{DBh{{DBf{D@n}}}}{DBh{{DBf{DA`}}}}{DBh{{DBf{DAb}}}}{DBh{{DBf{DAd}}}}{DBh{{DBf{DAf}}}}{DBh{{DBf{DAh}}}}{DBh{{DBf{DAj}}}}{DBh{{DBf{DAl}}}}{cDh{{DBb{}{{DB`{Dh}}}}}}{cDj{{DBb{}{{DB`{Dj}}}}}}{cDl{{DBb{}{{DB`{Dl}}}}}}{cDn{{DBb{}{{DB`{Dn}}}}}}{cE`{{DBb{}{{DB`{E`}}}}}}{cEb{{DBb{}{{DB`{Eb}}}}}}{cEd{{DBb{}{{DB`{Ed}}}}}}{cEf{{DBb{}{{DB`{Ef}}}}}}{cEh{{DBb{}{{DB`{Eh}}}}}}{cEj{{DBb{}{{DB`{Ej}}}}}}{cEl{{DBb{}{{DB`{El}}}}}}{cEn{{DBb{}{{DB`{En}}}}}}{cF`{{DBb{}{{DB`{F`}}}}}}{cFb{{DBb{}{{DB`{Fb}}}}}}{cFd{{DBb{}{{DB`{Fd}}}}}}{cFf{{DBb{}{{DB`{Ff}}}}}}{cFh{{DBb{}{{DB`{Fh}}}}}}{cFj{{DBb{}{{DB`{Fj}}}}}}{cFl{{DBb{}{{DB`{Fl}}}}}}{cFn{{DBb{}{{DB`{Fn}}}}}}{cG`{{DBb{}{{DB`{G`}}}}}}{cGb{{DBb{}{{DB`{Gb}}}}}}{cGd{{DBb{}{{DB`{Gd}}}}}}{cGf{{DBb{}{{DB`{Gf}}}}}}{cGh{{DBb{}{{DB`{Gh}}}}}}{cGj{{DBb{}{{DB`{Gj}}}}}}{cGl{{DBb{}{{DB`{Gl}}}}}}{cGn{{DBb{}{{DB`{Gn}}}}}}{cH`{{DBb{}{{DB`{H`}}}}}}{cHb{{DBb{}{{DB`{Hb}}}}}}{cHd{{DBb{}{{DB`{Hd}}}}}}{cHf{{DBb{}{{DB`{Hf}}}}}}{Hh{{DBf{BMl}}}}{Hh{{DBf{BMn}}}}{Hh{{DBf{BN`}}}}{Hh{{DBf{BNb}}}}{Hh{{DBf{BNd}}}}{Hh{{DBf{BNf}}}}{Hh{{DBf{BNh}}}}{Hh{{DBf{BNj}}}}{Hh{{DBf{BNl}}}}{Hh{{DBf{BNn}}}}{Hh{{DBf{BO`}}}}{Hh{{DBf{BOb}}}}{Hh{{DBf{BOd}}}}{Hh{{DBf{BOf}}}}{Hh{{DBf{BOh}}}}{Hh{{DBf{BOj}}}}{Hh{{DBf{BOl}}}}{Hh{{DBf{BOn}}}}{Hh{{DBf{C@`}}}}{Hh{{DBf{C@b}}}}{Hh{{DBf{C@d}}}}{Hh{{DBf{C@f}}}}{Hh{{DBf{C@h}}}}{Hh{{DBf{C@j}}}}{Hh{{DBf{C@l}}}}{Hh{{DBf{C@n}}}}{Hh{{DBf{CA`}}}}{Hh{{DBf{CAb}}}}{Hh{{DBf{CAd}}}}{Hh{{DBf{CAf}}}}{Hh{{DBf{CAh}}}}{Hh{{DBf{CAj}}}}{Hh{{DBf{CAl}}}}{Hh{{DBf{CAn}}}}{Hh{{DBf{CB`}}}}{Hh{{DBf{CBb}}}}{Hh{{DBf{CBd}}}}{Hh{{DBf{CBf}}}}{Hh{{DBf{CBh}}}}{Hh{{DBf{CBj}}}}{Hh{{DBf{CBl}}}}{Hh{{DBf{CBn}}}}{Hh{{DBf{CC`}}}}{Hh{{DBf{CCb}}}}{Hh{{DBf{CCd}}}}{Hh{{DBf{CCf}}}}{Hh{{DBf{CCh}}}}{Hh{{DBf{CCj}}}}{Hh{{DBf{CCl}}}}{Hh{{DBf{CCn}}}}{Hh{{DBf{CD`}}}}{Hh{{DBf{CDb}}}}{Hh{{DBf{CDd}}}}{Hh{{DBf{CDf}}}}{Hh{{DBf{CDh}}}}{Hh{{DBf{CDj}}}}{Hh{{DBf{CDl}}}}{Hh{{DBf{CDn}}}}{Hh{{DBf{CE`}}}}{Hh{{DBf{CEb}}}}{Hh{{DBf{CEd}}}}{Hh{{DBf{CEf}}}}{Hh{{DBf{CEh}}}}{Hh{{DBf{CEj}}}}{Hh{{DBf{CEl}}}}{Hh{{DBf{CEn}}}}{Hh{{DBf{CF`}}}}{Hh{{DBf{CFb}}}}{Hh{{DBf{CFd}}}}{Hh{{DBf{CFf}}}}{Hh{{DBf{CFh}}}}{Hh{{DBf{CFj}}}}{Hh{{DBf{CFl}}}}{Hh{{DBf{CFn}}}}{Hh{{DBf{CG`}}}}{Hh{{DBf{CGb}}}}{Hh{{DBf{CGd}}}}{Hh{{DBf{CGf}}}}{Hh{{DBf{CGh}}}}{Hh{{DBf{CGj}}}}{Hh{{DBf{CGl}}}}{Hh{{DBf{CGn}}}}{Hh{{DBf{CH`}}}}{Hh{{DBf{CHb}}}}{Hh{{DBf{CHd}}}}{Hh{{DBf{CHf}}}}{Hh{{DBf{CHh}}}}{Hh{{DBf{CHj}}}}{Hh{{DBf{CHl}}}}{Hh{{DBf{CHn}}}}{Hh{{DBf{CI`}}}}{Hh{{DBf{CIb}}}}{Hh{{DBf{CId}}}}{Hh{{DBf{CIf}}}}{Hh{{DBf{CIh}}}}{Hh{{DBf{CIj}}}}{Hh{{DBf{CIl}}}}{Hh{{DBf{CIn}}}}{Hh{{DBf{CJ`}}}}{Hh{{DBf{CJb}}}}{Hh{{DBf{CJd}}}}{Hh{{DBf{CJf}}}}{Hh{{DBf{CJh}}}}{Hh{{DBf{CJj}}}}{Hh{{DBf{CJl}}}}{Hh{{DBf{CJn}}}}{Hh{{DBf{CK`}}}}{Hh{{DBf{CKb}}}}{Hh{{DBf{CKd}}}}{Hh{{DBf{CKf}}}}{Hh{{DBf{CKh}}}}{Hh{{DBf{CKj}}}}{Hh{{DBf{CKl}}}}{Hh{{DBf{CKn}}}}{Hh{{DBf{CL`}}}}{Hh{{DBf{CLb}}}}{Hh{{DBf{CLd}}}}{Hh{{DBf{CLf}}}}{Hh{{DBf{CLh}}}}{Hh{{DBf{CLj}}}}{Hh{{DBf{CLl}}}}{Hh{{DBf{CLn}}}}{Hh{{DBf{CM`}}}}{Hh{{DBf{CMb}}}}{Hh{{DBf{CMd}}}}{Hh{{DBf{CMf}}}}{Hh{{DBf{CMh}}}}{Hh{{DBf{CMj}}}}{Hh{{DBf{CMl}}}}{Hh{{DBf{CMn}}}}{Hh{{DBf{CN`}}}}{Hh{{DBf{CNb}}}}{Hh{{DBf{CNd}}}}{Hh{{DBf{CNf}}}}{Hh{{DBf{CNh}}}}{Hh{{DBf{CNj}}}}{Hh{{DBf{CNl}}}}{Hh{{DBf{CNn}}}}{Hh{{DBf{CO`}}}}{Hh{{DBf{COb}}}}{Hh{{DBf{COd}}}}{Hh{{DBf{COf}}}}{Hh{{DBf{COh}}}}{Hh{{DBf{COj}}}}{Hh{{DBf{COl}}}}{Hh{{DBf{COn}}}}{Hh{{DBf{D@`}}}}{Hh{{DBf{D@b}}}}{Hh{{DBf{D@d}}}}{Hh{{DBf{D@f}}}}{Hh{{DBf{D@h}}}}{Hh{{DBf{D@j}}}}{Hh{{DBf{D@l}}}}{Hh{{DBf{D@n}}}}{Hh{{DBf{DA`}}}}{Hh{{DBf{DAb}}}}{Hh{{DBf{DAd}}}}{Hh{{DBf{DAf}}}}{Hh{{DBf{DAh}}}}{Hh{{DBf{DAj}}}}{Hh{{DBf{DAl}}}}```````````````````````````````````````{{Dhc}AfDBj}{{Djc}AfDBj}{{Dlc}AfDBj}{{Dnc}AfDBj}{{E`c}AfDBj}{{Ebc}AfDBj}{{Edc}AfDBj}{{Efc}AfDBj}{{Ehc}AfDBj}{{Ejc}AfDBj}{{Elc}AfDBj}{{Enc}AfDBj}{{F`c}AfDBj}{{Fbc}AfDBj}{{Fdc}AfDBj}{{Ffc}AfDBj}{{Fhc}AfDBj}{{Fjc}AfDBj}{{Flc}AfDBj}{{Fnc}AfDBj}{{G`c}AfDBj}{{Gbc}AfDBj}{{Gdc}AfDBj}{{Gfc}AfDBj}{{Ghc}AfDBj}{{Gjc}AfDBj}{{Glc}AfDBj}{{Gnc}AfDBj}{{H`c}AfDBj}{{Hbc}AfDBj}{{Hdc}AfDBj}{{Hfc}AfDBj}`````````````````````````````````````````````````````````````````````````````{{DhDh}Af}{{DjDj}Af}{{DlDl}Af}{{DnDn}Af}{{E`E`}Af}{{EbEb}Af}{{EdEd}Af}{{EfEf}Af}{{EhEh}Af}{{EjEj}Af}{{ElEl}Af}{{EnEn}Af}{{F`F`}Af}{{FbFb}Af}{{FdFd}Af}{{FfFf}Af}{{FhFh}Af}{{FjFj}Af}{{FlFl}Af}{{FnFn}Af}{{G`G`}Af}{{GbGb}Af}{{GdGd}Af}{{GfGf}Af}{{GhGh}Af}{{GjGj}Af}{{GlGl}Af}{{GnGn}Af}{{H`H`}Af}{{HbHb}Af}{{HdHd}Af}{{HfHf}Af}````````````````{{DhDh}Dh}{{DjDj}Dj}{{DlDl}Dl}{{DnDn}Dn}{{E`E`}E`}{{EbEb}Eb}{{EdEd}Ed}{{EfEf}Ef}{{EhEh}Eh}{{EjEj}Ej}{{ElEl}El}{{EnEn}En}{{F`F`}F`}{{FbFb}Fb}{{FdFd}Fd}{{FfFf}Ff}{{FhFh}Fh}{{FjFj}Fj}{{FlFl}Fl}{{FnFn}Fn}{{G`G`}G`}{{GbGb}Gb}{{GdGd}Gd}{{GfGf}Gf}{{GhGh}Gh}{{GjGj}Gj}{{GlGl}Gl}{{GnGn}Gn}{{H`H`}H`}{{HbHb}Hb}{{HdHd}Hd}{{HfHf}Hf}{{DhDh}Bl}{{DjDj}Bl}{{DlDl}Bl}{{DnDn}Bl}{{E`E`}Bl}{{EbEb}Bl}{{EdEd}Bl}{{EfEf}Bl}{{EhEh}Bl}{{EjEj}Bl}{{ElEl}Bl}{{EnEn}Bl}{{F`F`}Bl}{{FbFb}Bl}{{FdFd}Bl}{{FfFf}Bl}{{FhFh}Bl}{{FjFj}Bl}{{FlFl}Bl}{{FnFn}Bl}{{G`G`}Bl}{{GbGb}Bl}{{GdGd}Bl}{{GfGf}Bl}{{GhGh}Bl}{{GjGj}Bl}{{GlGl}Bl}{{GnGn}Bl}{{H`H`}Bl}{{HbHb}Bl}{{HdHd}Bl}{{HfHf}Bl}`{ce{}{}}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{DhBl}{DjBl}{DlBl}{DnBl}{E`Bl}{EbBl}{EdBl}{EfBl}{EhBl}{EjBl}{ElBl}{EnBl}{F`Bl}{FbBl}{FdBl}{FfBl}{FhBl}{FjBl}{FlBl}{FnBl}{G`Bl}{GbBl}{GdBl}{GfBl}{GhBl}{GjBl}{GlBl}{GnBl}{H`Bl}{HbBl}{HdBl}{HfBl}{DhBl}{DjBl}{DlBl}{DnBl}{E`Bl}{EbBl}{EdBl}{EfBl}{EhBl}{EjBl}{ElBl}{EnBl}{F`Bl}{FbBl}{FdBl}{FfBl}{FhBl}{FjBl}{FlBl}{FnBl}{G`Bl}{GbBl}{GdBl}{GfBl}{GhBl}{GjBl}{GlBl}{GnBl}{H`Bl}{HbBl}{HdBl}{HfBl}````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{HjBb}`{Ah{{B`{BbAh}}}}{HjAh}`````````````````````````````````````````````````````{DhDh}{DjDj}{DlDl}{DnDn}{E`E`}{EbEb}{EdEd}{EfEf}{EhEh}{EjEj}{ElEl}{EnEn}{F`F`}{FbFb}{FdFd}{FfFf}{FhFh}{FjFj}{FlFl}{FnFn}{G`G`}{GbGb}{GdGd}{GfGf}{GhGh}{GjGj}{GlGl}{GnGn}{H`H`}{HbHb}{HdHd}{HfHf}``````````````````````````````````````````````````````````````````````````````````````````````````````````````{{nBb{d{b}}}{{B`{HjBh}}}}{{DhDh}{{DBf{DAn}}}}{{DjDj}{{DBf{DAn}}}}{{DlDl}{{DBf{DAn}}}}{{DnDn}{{DBf{DAn}}}}{{E`E`}{{DBf{DAn}}}}{{EbEb}{{DBf{DAn}}}}{{EdEd}{{DBf{DAn}}}}{{EfEf}{{DBf{DAn}}}}{{EhEh}{{DBf{DAn}}}}{{EjEj}{{DBf{DAn}}}}{{ElEl}{{DBf{DAn}}}}{{EnEn}{{DBf{DAn}}}}{{F`F`}{{DBf{DAn}}}}{{FbFb}{{DBf{DAn}}}}{{FdFd}{{DBf{DAn}}}}{{FfFf}{{DBf{DAn}}}}{{FhFh}{{DBf{DAn}}}}{{FjFj}{{DBf{DAn}}}}{{FlFl}{{DBf{DAn}}}}{{FnFn}{{DBf{DAn}}}}{{G`G`}{{DBf{DAn}}}}{{GbGb}{{DBf{DAn}}}}{{GdGd}{{DBf{DAn}}}}{{GfGf}{{DBf{DAn}}}}{{GhGh}{{DBf{DAn}}}}{{GjGj}{{DBf{DAn}}}}{{GlGl}{{DBf{DAn}}}}{{GnGn}{{DBf{DAn}}}}{{H`H`}{{DBf{DAn}}}}{{HbHb}{{DBf{DAn}}}}{{HdHd}{{DBf{DAn}}}}{{HfHf}{{DBf{DAn}}}}``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{{DhDh}Af}{{DjDj}Af}{{DlDl}Af}{{DnDn}Af}{{E`E`}Af}{{EbEb}Af}{{EdEd}Af}{{EfEf}Af}{{EhEh}Af}{{EjEj}Af}{{ElEl}Af}{{EnEn}Af}{{F`F`}Af}{{FbFb}Af}{{FdFd}Af}{{FfFf}Af}{{FhFh}Af}{{FjFj}Af}{{FlFl}Af}{{FnFn}Af}{{G`G`}Af}{{GbGb}Af}{{GdGd}Af}{{GfGf}Af}{{GhGh}Af}{{GjGj}Af}{{GlGl}Af}{{GnGn}Af}{{H`H`}Af}{{HbHb}Af}{{HdHd}Af}{{HfHf}Af}`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{{Hjn{d{b}}}Cl}{{Hln{d{b}}}Cl}{{Hnn{d{b}}}Cl}{{I`n{d{b}}}Cl}{{Ibn{d{b}}}Cl}{{Idn{d{b}}}Cl}{{Ifn{d{b}}}Cl}{{Ihn{d{b}}}Cl}{{Ijn{d{b}}}Cl}{{Iln{d{b}}}Cl}{{Inn{d{b}}}Cl}{{J`n{d{b}}}Cl}{{Jbn{d{b}}}Cl}{{Jdn{d{b}}}Cl}{{Jfn{d{b}}}Cl}{{Jhn{d{b}}}Cl}{{Jjn{d{b}}}Cl}{{Jln{d{b}}}Cl}{{Jnn{d{b}}}Cl}{{K`n{d{b}}}Cl}{{Kbn{d{b}}}Cl}{{Kdn{d{b}}}Cl}{{Kfn{d{b}}}Cl}{{Khn{d{b}}}Cl}{{Kjn{d{b}}}Cl}{{Kln{d{b}}}Cl}{{Knn{d{b}}}Cl}{{L`n{d{b}}}Cl}{{Lbn{d{b}}}Cl}{{Ldn{d{b}}}Cl}{{Lfn{d{b}}}Cl}{{Lhn{d{b}}}Cl}{{Ljn{d{b}}}Cl}{{Lln{d{b}}}Cl}{{Lnn{d{b}}}Cl}{{M`n{d{b}}}Cl}{{Mbn{d{b}}}Cl}{{Mdn{d{b}}}Cl}{{Mfn{d{b}}}Cl}{{Mhn{d{b}}}Cl}{{Mjn{d{b}}}Cl}{{Mln{d{b}}}Cl}{{Mnn{d{b}}}Cl}{{N`n{d{b}}}Cl}{{Nbn{d{b}}}Cl}{{Ndn{d{b}}}Cl}{{Nfn{d{b}}}Cl}{{Nhn{d{b}}}Cl}{{Njn{d{b}}}Cl}{{Nln{d{b}}}Cl}{{Nnn{d{b}}}Cl}{{O`n{d{b}}}Cl}{{Obn{d{b}}}Cl}{{Odn{d{b}}}Cl}{{Ofn{d{b}}}Cl}{{Ohn{d{b}}}Cl}{{Ojn{d{b}}}Cl}{{Oln{d{b}}}Cl}{{Onn{d{b}}}Cl}{{A@`n{d{b}}}Cl}{{A@bn{d{b}}}Cl}{{A@dn{d{b}}}Cl}{{A@fn{d{b}}}Cl}{{A@hn{d{b}}}Cl}{{A@jn{d{b}}}Cl}{{A@ln{d{b}}}Cl}{{A@nn{d{b}}}Cl}{{AA`n{d{b}}}Cl}{{AAbn{d{b}}}Cl}{{AAdn{d{b}}}Cl}{{AAfn{d{b}}}Cl}{{AAhn{d{b}}}Cl}{{AAjn{d{b}}}Cl}{{AAln{d{b}}}Cl}{{AAnn{d{b}}}Cl}{{AB`n{d{b}}}Cl}{{ABbn{d{b}}}Cl}{{ABdn{d{b}}}Cl}{{ABfn{d{b}}}Cl}{{ABhn{d{b}}}Cl}{{ABjn{d{b}}}Cl}{{ABln{d{b}}}Cl}{{ABnn{d{b}}}Cl}{{AC`n{d{b}}}Cl}{{ACbn{d{b}}}Cl}{{ACdn{d{b}}}Cl}{{ACfn{d{b}}}Cl}{{AChn{d{b}}}Cl}{{ACjn{d{b}}}Cl}{{ACln{d{b}}}Cl}{{ACnn{d{b}}}Cl}{{AD`n{d{b}}}Cl}{{ADbn{d{b}}}Cl}{{ADdn{d{b}}}Cl}{{ADfn{d{b}}}Cl}{{ADhn{d{b}}}Cl}{{ADjn{d{b}}}Cl}{{ADln{d{b}}}Cl}{{ADnn{d{b}}}Cl}{{AE`n{d{b}}}Cl}{{AEbn{d{b}}}Cl}{{AEdn{d{b}}}Cl}{{AEfn{d{b}}}Cl}{{AEhn{d{b}}}Cl}{{AEjn{d{b}}}Cl}{{AEln{d{b}}}Cl}{{AEnn{d{b}}}Cl}{{AF`n{d{b}}}Cl}{{AFbn{d{b}}}Cl}{{AFdn{d{b}}}Cl}{{AFfn{d{b}}}Cl}{{AFhn{d{b}}}Cl}{{AFjn{d{b}}}Cl}{{AFln{d{b}}}Cl}{{AFnn{d{b}}}Cl}{{AG`n{d{b}}}Cl}{{AGbn{d{b}}}Cl}{{AGdn{d{b}}}Cl}{{AGfn{d{b}}}Cl}{{AGhn{d{b}}}Cl}{{AGjn{d{b}}}Cl}{{AGln{d{b}}}Cl}{{AGnn{d{b}}}Cl}{{AH`n{d{b}}}Cl}{{AHbn{d{b}}}Cl}{{AHdn{d{b}}}Cl}{{AHfn{d{b}}}Cl}{{AHhn{d{b}}}Cl}{{AHjn{d{b}}}Cl}{{AHln{d{b}}}Cl}{{AHnn{d{b}}}Cl}{{AI`n{d{b}}}Cl}{{AIbn{d{b}}}Cl}{{AIdn{d{b}}}Cl}{{AIfn{d{b}}}Cl}{{AIhn{d{b}}}Cl}{{AIjn{d{b}}}Cl}{{AIln{d{b}}}Cl}{{AInn{d{b}}}Cl}{{AJ`n{d{b}}}Cl}{{AJbn{d{b}}}Cl}{{AJdn{d{b}}}Cl}{{AJfn{d{b}}}Cl}{{AJhn{d{b}}}Cl}{{AJjn{d{b}}}Cl}{{AJln{d{b}}}Cl}{{AJnn{d{b}}}Cl}{{AK`n{d{b}}}Cl}{{AKbn{d{b}}}Cl}{{AKdn{d{b}}}Cl}{{AKfn{d{b}}}Cl}{{AKhn{d{b}}}Cl}{{AKjn{d{b}}}Cl}{{AKln{d{b}}}Cl}{{AKnn{d{b}}}Cl}{{AL`n{d{b}}}Cl}{{ALbn{d{b}}}Cl}{{ALdn{d{b}}}Cl}{{ALfn{d{b}}}Cl}{{ALhn{d{b}}}Cl}{{ALjn{d{b}}}Cl}{{ALln{d{b}}}Cl}{{ALnn{d{b}}}Cl}{{AM`n{d{b}}}Cl}{{AMbn{d{b}}}Cl}{{AMdn{d{b}}}Cl}{{AMfn{d{b}}}Cl}{{AMhn{d{b}}}Cl}{{AMjn{d{b}}}Cl}{{AMln{d{b}}}Cl}{{AMnn{d{b}}}Cl}{{AN`n{d{b}}}Cl}{{ANbn{d{b}}}Cl}{{ANdn{d{b}}}Cl}{{ANfn{d{b}}}Cl}{{ANhn{d{b}}}Cl}{{ANjn{d{b}}}Cl}{{ANln{d{b}}}Cl}{{ANnn{d{b}}}Cl}{{AO`n{d{b}}}Cl}{{AObn{d{b}}}Cl}{{AOdn{d{b}}}Cl}{{AOfn{d{b}}}Cl}{{AOhn{d{b}}}Cl}{{AOjn{d{b}}}Cl}{{AOln{d{b}}}Cl}{{AOnn{d{b}}}Cl}{{B@`n{d{b}}}Cl}{{B@bn{d{b}}}Cl}{{B@dn{d{b}}}Cl}{{B@fn{d{b}}}Cl}{{B@hn{d{b}}}Cl}{{B@jn{d{b}}}Cl}{{B@ln{d{b}}}Cl}{{B@nn{d{b}}}Cl}{{BA`n{d{b}}}Cl}{{BAbn{d{b}}}Cl}{{BAdn{d{b}}}Cl}{{BAfn{d{b}}}Cl}{{BAhn{d{b}}}Cl}{{BAjn{d{b}}}Cl}{{BAln{d{b}}}Cl}{{BAnn{d{b}}}Cl}{{BB`n{d{b}}}Cl}{{BBbn{d{b}}}Cl}{{BBdn{d{b}}}Cl}{{BBfn{d{b}}}Cl}{{BBhn{d{b}}}Cl}{{BBjn{d{b}}}Cl}{{BBln{d{b}}}Cl}{{BBnn{d{b}}}Cl}{{BC`n{d{b}}}Cl}{{BCbn{d{b}}}Cl}{{BCdn{d{b}}}Cl}{{BCfn{d{b}}}Cl}{{BChn{d{b}}}Cl}{{BCjn{d{b}}}Cl}{{BCln{d{b}}}Cl}{{BCnn{d{b}}}Cl}{{BD`n{d{b}}}Cl}{{BDbn{d{b}}}Cl}{{BDdn{d{b}}}Cl}{{BDfn{d{b}}}Cl}{{BDhn{d{b}}}Cl}{{BDjn{d{b}}}Cl}{{BDln{d{b}}}Cl}{{BDnn{d{b}}}Cl}{{BE`n{d{b}}}Cl}{{BEbn{d{b}}}Cl}{{BEdn{d{b}}}Cl}{{BEfn{d{b}}}Cl}{{BEhn{d{b}}}Cl}{{BEjn{d{b}}}Cl}{{BEln{d{b}}}Cl}{{BEnn{d{b}}}Cl}{{BF`n{d{b}}}Cl}{{BFbn{d{b}}}Cl}{{BFdn{d{b}}}Cl}{{BFfn{d{b}}}Cl}{{BFhn{d{b}}}Cl}{{BFjn{d{b}}}Cl}{{BFln{d{b}}}Cl}{{BFnn{d{b}}}Cl}{{BG`n{d{b}}}Cl}{{BGbn{d{b}}}Cl}{{BGdn{d{b}}}Cl}{{BGfn{d{b}}}Cl}{{BGhn{d{b}}}Cl}{{BGjn{d{b}}}Cl}{{BGln{d{b}}}Cl}{{BGnn{d{b}}}Cl}{{BH`n{d{b}}}Cl}{{BHbn{d{b}}}Cl}{{BHdn{d{b}}}Cl}{{BHfn{d{b}}}Cl}{{BHhn{d{b}}}Cl}{{BHjn{d{b}}}Cl}{{BHln{d{b}}}Cl}{{BHnn{d{b}}}Cl}{{BI`n{d{b}}}Cl}{{BIbn{d{b}}}Cl}{{BIdn{d{b}}}Cl}{{BIfn{d{b}}}Cl}{{BIhn{d{b}}}Cl}{{BIjn{d{b}}}Cl}{{BIln{d{b}}}Cl}{{BInn{d{b}}}Cl}{{BJ`n{d{b}}}Cl}{{BJbn{d{b}}}Cl}{{BJdn{d{b}}}Cl}{{BJfn{d{b}}}Cl}{{BJhn{d{b}}}Cl}{{BJjn{d{b}}}Cl}{{BJln{d{b}}}Cl}{{BJnn{d{b}}}Cl}{{BK`n{d{b}}}Cl}{{BKbn{d{b}}}Cl}{{BKdn{d{b}}}Cl}{{BKfn{d{b}}}Cl}{{BKhn{d{b}}}Cl}{{BKjn{d{b}}}Cl}{{BKln{d{b}}}Cl}{{BKnn{d{b}}}Cl}{{BL`n{d{b}}}Cl}{{BLbn{d{b}}}Cl}{{BLdn{d{b}}}Cl}{{BLfn{d{b}}}Cl}{{BLhn{d{b}}}Cl}{{BLjn{d{b}}}Cl}{{BLln{d{b}}}Cl}{{BLnn{d{b}}}Cl}{{BM`n{d{b}}}Cl}{{BMbn{d{b}}}Cl}{{BMdn{d{b}}}Cl}{{BMfn{d{b}}}Cl}{{BMhn{d{b}}}Cl}{{BMjn{d{b}}}Cl}`{{Hjc}B`D`}{{Hlc}B`D`}{{Hnc}B`D`}{{I`c}B`D`}{{Ibc}B`D`}{{Idc}B`D`}{{Ifc}B`D`}{{Ihc}B`D`}{{Ijc}B`D`}{{Ilc}B`D`}{{Inc}B`D`}{{J`c}B`D`}{{Jbc}B`D`}{{Jdc}B`D`}{{Jfc}B`D`}{{Jhc}B`D`}{{Jjc}B`D`}{{Jlc}B`D`}{{Jnc}B`D`}{{K`c}B`D`}{{Kbc}B`D`}{{Kdc}B`D`}{{Kfc}B`D`}{{Khc}B`D`}{{Kjc}B`D`}{{Klc}B`D`}{{Knc}B`D`}{{L`c}B`D`}{{Lbc}B`D`}{{Ldc}B`D`}{{Lfc}B`D`}{{Lhc}B`D`}{{Ljc}B`D`}{{Llc}B`D`}{{Lnc}B`D`}{{M`c}B`D`}{{Mbc}B`D`}{{Mdc}B`D`}{{Mfc}B`D`}{{Mhc}B`D`}{{Mjc}B`D`}{{Mlc}B`D`}{{Mnc}B`D`}{{N`c}B`D`}{{Nbc}B`D`}{{Ndc}B`D`}{{Nfc}B`D`}{{Nhc}B`D`}{{Njc}B`D`}{{Nlc}B`D`}{{Nnc}B`D`}{{O`c}B`D`}{{Obc}B`D`}{{Odc}B`D`}{{Ofc}B`D`}{{Ohc}B`D`}{{Ojc}B`D`}{{Olc}B`D`}{{Onc}B`D`}{{A@`c}B`D`}{{A@bc}B`D`}{{A@dc}B`D`}{{A@fc}B`D`}{{A@hc}B`D`}{{A@jc}B`D`}{{A@lc}B`D`}{{A@nc}B`D`}{{AA`c}B`D`}{{AAbc}B`D`}{{AAdc}B`D`}{{AAfc}B`D`}{{AAhc}B`D`}{{AAjc}B`D`}{{AAlc}B`D`}{{AAnc}B`D`}{{AB`c}B`D`}{{ABbc}B`D`}{{ABdc}B`D`}{{ABfc}B`D`}{{ABhc}B`D`}{{ABjc}B`D`}{{ABlc}B`D`}{{ABnc}B`D`}{{AC`c}B`D`}{{ACbc}B`D`}{{ACdc}B`D`}{{ACfc}B`D`}{{AChc}B`D`}{{ACjc}B`D`}{{AClc}B`D`}{{ACnc}B`D`}{{AD`c}B`D`}{{ADbc}B`D`}{{ADdc}B`D`}{{ADfc}B`D`}{{ADhc}B`D`}{{ADjc}B`D`}{{ADlc}B`D`}{{ADnc}B`D`}{{AE`c}B`D`}{{AEbc}B`D`}{{AEdc}B`D`}{{AEfc}B`D`}{{AEhc}B`D`}{{AEjc}B`D`}{{AElc}B`D`}{{AEnc}B`D`}{{AF`c}B`D`}{{AFbc}B`D`}{{AFdc}B`D`}{{AFfc}B`D`}{{AFhc}B`D`}{{AFjc}B`D`}{{AFlc}B`D`}{{AFnc}B`D`}{{AG`c}B`D`}{{AGbc}B`D`}{{AGdc}B`D`}{{AGfc}B`D`}{{AGhc}B`D`}{{AGjc}B`D`}{{AGlc}B`D`}{{AGnc}B`D`}{{AH`c}B`D`}{{AHbc}B`D`}{{AHdc}B`D`}{{AHfc}B`D`}{{AHhc}B`D`}{{AHjc}B`D`}{{AHlc}B`D`}{{AHnc}B`D`}{{AI`c}B`D`}{{AIbc}B`D`}{{AIdc}B`D`}{{AIfc}B`D`}{{AIhc}B`D`}{{AIjc}B`D`}{{AIlc}B`D`}{{AInc}B`D`}{{AJ`c}B`D`}{{AJbc}B`D`}{{AJdc}B`D`}{{AJfc}B`D`}{{AJhc}B`D`}{{AJjc}B`D`}{{AJlc}B`D`}{{AJnc}B`D`}{{AK`c}B`D`}{{AKbc}B`D`}{{AKdc}B`D`}{{AKfc}B`D`}{{AKhc}B`D`}{{AKjc}B`D`}{{AKlc}B`D`}{{AKnc}B`D`}{{AL`c}B`D`}{{ALbc}B`D`}{{ALdc}B`D`}{{ALfc}B`D`}{{ALhc}B`D`}{{ALjc}B`D`}{{ALlc}B`D`}{{ALnc}B`D`}{{AM`c}B`D`}{{AMbc}B`D`}{{AMdc}B`D`}{{AMfc}B`D`}{{AMhc}B`D`}{{AMjc}B`D`}{{AMlc}B`D`}{{AMnc}B`D`}{{AN`c}B`D`}{{ANbc}B`D`}{{ANdc}B`D`}{{ANfc}B`D`}{{ANhc}B`D`}{{ANjc}B`D`}{{ANlc}B`D`}{{ANnc}B`D`}{{AO`c}B`D`}{{AObc}B`D`}{{AOdc}B`D`}{{AOfc}B`D`}{{AOhc}B`D`}{{AOjc}B`D`}{{AOlc}B`D`}{{AOnc}B`D`}{{B@`c}B`D`}{{B@bc}B`D`}{{B@dc}B`D`}{{B@fc}B`D`}{{B@hc}B`D`}{{B@jc}B`D`}{{B@lc}B`D`}{{B@nc}B`D`}{{BA`c}B`D`}{{BAbc}B`D`}{{BAdc}B`D`}{{BAfc}B`D`}{{BAhc}B`D`}{{BAjc}B`D`}{{BAlc}B`D`}{{BAnc}B`D`}{{BB`c}B`D`}{{BBbc}B`D`}{{BBdc}B`D`}{{BBfc}B`D`}{{BBhc}B`D`}{{BBjc}B`D`}{{BBlc}B`D`}{{BBnc}B`D`}{{BC`c}B`D`}{{BCbc}B`D`}{{BCdc}B`D`}{{BCfc}B`D`}{{BChc}B`D`}{{BCjc}B`D`}{{BClc}B`D`}{{BCnc}B`D`}{{BD`c}B`D`}{{BDbc}B`D`}{{BDdc}B`D`}{{BDfc}B`D`}{{BDhc}B`D`}{{BDjc}B`D`}{{BDlc}B`D`}{{BDnc}B`D`}{{BE`c}B`D`}{{BEbc}B`D`}{{BEdc}B`D`}{{BEfc}B`D`}{{BEhc}B`D`}{{BEjc}B`D`}{{BElc}B`D`}{{BEnc}B`D`}{{BF`c}B`D`}{{BFbc}B`D`}{{BFdc}B`D`}{{BFfc}B`D`}{{BFhc}B`D`}{{BFjc}B`D`}{{BFlc}B`D`}{{BFnc}B`D`}{{BG`c}B`D`}{{BGbc}B`D`}{{BGdc}B`D`}{{BGfc}B`D`}{{BGhc}B`D`}{{BGjc}B`D`}{{BGlc}B`D`}{{BGnc}B`D`}{{BH`c}B`D`}{{BHbc}B`D`}{{BHdc}B`D`}{{BHfc}B`D`}{{BHhc}B`D`}{{BHjc}B`D`}{{BHlc}B`D`}{{BHnc}B`D`}{{BI`c}B`D`}{{BIbc}B`D`}{{BIdc}B`D`}{{BIfc}B`D`}{{BIhc}B`D`}{{BIjc}B`D`}{{BIlc}B`D`}{{BInc}B`D`}{{BJ`c}B`D`}{{BJbc}B`D`}{{BJdc}B`D`}{{BJfc}B`D`}{{BJhc}B`D`}{{BJjc}B`D`}{{BJlc}B`D`}{{BJnc}B`D`}{{BK`c}B`D`}{{BKbc}B`D`}{{BKdc}B`D`}{{BKfc}B`D`}{{BKhc}B`D`}{{BKjc}B`D`}{{BKlc}B`D`}{{BKnc}B`D`}{{BL`c}B`D`}{{BLbc}B`D`}{{BLdc}B`D`}{{BLfc}B`D`}{{BLhc}B`D`}{{BLjc}B`D`}{{BLlc}B`D`}{{BLnc}B`D`}{{BM`c}B`D`}{{BMbc}B`D`}{{BMdc}B`D`}{{BMfc}B`D`}{{BMhc}B`D`}{{BMjc}B`D`}{{BMlc}B`D`}{{BMnc}B`D`}{{BN`c}B`D`}{{BNbc}B`D`}{{Dhc}B`D`}{{BNdc}B`D`}{{BNfc}B`D`}{{BNhc}B`D`}{{Djc}B`D`}{{BNjc}B`D`}{{BNlc}B`D`}{{BNnc}B`D`}{{Dlc}B`D`}{{Dnc}B`D`}{{BO`c}B`D`}{{BObc}B`D`}{{BOdc}B`D`}{{BOfc}B`D`}{{BOhc}B`D`}{{BOjc}B`D`}{{BOlc}B`D`}{{BOnc}B`D`}{{C@`c}B`D`}{{C@bc}B`D`}{{E`c}B`D`}{{C@dc}B`D`}{{C@fc}B`D`}{{Ebc}B`D`}{{C@hc}B`D`}{{C@jc}B`D`}{{C@lc}B`D`}{{C@nc}B`D`}{{CA`c}B`D`}{{CAbc}B`D`}{{CAdc}B`D`}{{CAfc}B`D`}{{CAhc}B`D`}{{Edc}B`D`}{{CAjc}B`D`}{{CAlc}B`D`}{{CAnc}B`D`}{{CB`c}B`D`}{{CBbc}B`D`}{{CBdc}B`D`}{{CBfc}B`D`}{{CBhc}B`D`}{{CBjc}B`D`}{{CBlc}B`D`}{{CBnc}B`D`}{{CC`c}B`D`}{{CCbc}B`D`}{{CCdc}B`D`}{{CCfc}B`D`}{{CChc}B`D`}{{CCjc}B`D`}{{CClc}B`D`}{{CCnc}B`D`}{{CD`c}B`D`}{{CDbc}B`D`}{{Efc}B`D`}{{Ehc}B`D`}{{CDdc}B`D`}{{CDfc}B`D`}{{CDhc}B`D`}{{CDjc}B`D`}{{CDlc}B`D`}{{CDnc}B`D`}{{Ejc}B`D`}{{CE`c}B`D`}{{CEbc}B`D`}{{CEdc}B`D`}{{CEfc}B`D`}{{CEhc}B`D`}{{CEjc}B`D`}{{CElc}B`D`}{{Elc}B`D`}{{CEnc}B`D`}{{CF`c}B`D`}{{CFbc}B`D`}{{Enc}B`D`}{{CFdc}B`D`}{{CFfc}B`D`}{{CFhc}B`D`}{{CFjc}B`D`}{{CFlc}B`D`}{{CFnc}B`D`}{{CG`c}B`D`}{{CGbc}B`D`}{{CGdc}B`D`}{{CGfc}B`D`}{{F`c}B`D`}{{CGhc}B`D`}{{CGjc}B`D`}{{CGlc}B`D`}{{CGnc}B`D`}{{CH`c}B`D`}{{CHbc}B`D`}{{Fbc}B`D`}{{CHdc}B`D`}{{Fdc}B`D`}{{CHfc}B`D`}{{CHhc}B`D`}{{CHjc}B`D`}{{CHlc}B`D`}{{Ffc}B`D`}{{CHnc}B`D`}{{CI`c}B`D`}{{CIbc}B`D`}{{Fhc}B`D`}{{CIdc}B`D`}{{CIfc}B`D`}{{Fjc}B`D`}{{CIhc}B`D`}{{CIjc}B`D`}{{CIlc}B`D`}{{CInc}B`D`}{{CJ`c}B`D`}{{CJbc}B`D`}{{CJdc}B`D`}{{CJfc}B`D`}{{CJhc}B`D`}{{Flc}B`D`}{{CJjc}B`D`}{{CJlc}B`D`}{{CJnc}B`D`}{{CK`c}B`D`}{{CKbc}B`D`}{{CKdc}B`D`}{{CKfc}B`D`}{{CKhc}B`D`}{{CKjc}B`D`}{{CKlc}B`D`}{{CKnc}B`D`}{{CL`c}B`D`}{{CLbc}B`D`}{{Fnc}B`D`}{{CLdc}B`D`}{{G`c}B`D`}{{CLfc}B`D`}{{CLhc}B`D`}{{CLjc}B`D`}{{CLlc}B`D`}{{CLnc}B`D`}{{CM`c}B`D`}{{CMbc}B`D`}{{CMdc}B`D`}{{CMfc}B`D`}{{CMhc}B`D`}{{CMjc}B`D`}{{Gbc}B`D`}{{Gdc}B`D`}{{Gfc}B`D`}{{CMlc}B`D`}{{CMnc}B`D`}{{CN`c}B`D`}{{CNbc}B`D`}{{CNdc}B`D`}{{CNfc}B`D`}{{CNhc}B`D`}{{CNjc}B`D`}{{CNlc}B`D`}{{CNnc}B`D`}{{CO`c}B`D`}{{CObc}B`D`}{{COdc}B`D`}{{Ghc}B`D`}{{COfc}B`D`}{{COhc}B`D`}{{Gjc}B`D`}{{COjc}B`D`}{{COlc}B`D`}{{Glc}B`D`}{{COnc}B`D`}{{D@`c}B`D`}{{D@bc}B`D`}{{D@dc}B`D`}{{D@fc}B`D`}{{D@hc}B`D`}{{Gnc}B`D`}{{D@jc}B`D`}{{D@lc}B`D`}{{H`c}B`D`}{{Hbc}B`D`}{{D@nc}B`D`}{{Hdc}B`D`}{{DA`c}B`D`}{{Hfc}B`D`}{{DAbc}B`D`}{{DAdc}B`D`}{{DAfc}B`D`}{{DAhc}B`D`}{{DAjc}B`D`}{{DAlc}B`D`}`````````{{DhDhBl}Af}{{DjDjBl}Af}{{DlDlBl}Af}{{DnDnBl}Af}{{E`E`Bl}Af}{{EbEbBl}Af}{{EdEdBl}Af}{{EfEfBl}Af}{{EhEhBl}Af}{{EjEjBl}Af}{{ElElBl}Af}{{EnEnBl}Af}{{F`F`Bl}Af}{{FbFbBl}Af}{{FdFdBl}Af}{{FfFfBl}Af}{{FhFhBl}Af}{{FjFjBl}Af}{{FlFlBl}Af}{{FnFnBl}Af}{{G`G`Bl}Af}{{GbGbBl}Af}{{GdGdBl}Af}{{GfGfBl}Af}{{GhGhBl}Af}{{GjGjBl}Af}{{GlGlBl}Af}{{GnGnBl}Af}{{H`H`Bl}Af}{{HbHbBl}Af}{{HdHdBl}Af}{{HfHfBl}Af}```````````````````````````````````````````````````````````````{{DhDh}Dh}{{DjDj}Dj}{{DlDl}Dl}{{DnDn}Dn}{{E`E`}E`}{{EbEb}Eb}{{EdEd}Ed}{{EfEf}Ef}{{EhEh}Eh}{{EjEj}Ej}{{ElEl}El}{{EnEn}En}{{F`F`}F`}{{FbFb}Fb}{{FdFd}Fd}{{FfFf}Ff}{{FhFh}Fh}{{FjFj}Fj}{{FlFl}Fl}{{FnFn}Fn}{{G`G`}G`}{{GbGb}Gb}{{GdGd}Gd}{{GfGf}Gf}{{GhGh}Gh}{{GjGj}Gj}{{GlGl}Gl}{{GnGn}Gn}{{H`H`}H`}{{HbHb}Hb}{{HdHd}Hd}{{HfHf}Hf}{{DhDh}Af}{{DjDj}Af}{{DlDl}Af}{{DnDn}Af}{{E`E`}Af}{{EbEb}Af}{{EdEd}Af}{{EfEf}Af}{{EhEh}Af}{{EjEj}Af}{{ElEl}Af}{{EnEn}Af}{{F`F`}Af}{{FbFb}Af}{{FdFd}Af}{{FfFf}Af}{{FhFh}Af}{{FjFj}Af}{{FlFl}Af}{{FnFn}Af}{{G`G`}Af}{{GbGb}Af}{{GdGd}Af}{{GfGf}Af}{{GhGh}Af}{{GjGj}Af}{{GlGl}Af}{{GnGn}Af}{{H`H`}Af}{{HbHb}Af}{{HdHd}Af}{{HfHf}Af}`````{{DhDh}Dh}{{DjDj}Dj}{{DlDl}Dl}{{DnDn}Dn}{{E`E`}E`}{{EbEb}Eb}{{EdEd}Ed}{{EfEf}Ef}{{EhEh}Eh}{{EjEj}Ej}{{ElEl}El}{{EnEn}En}{{F`F`}F`}{{FbFb}Fb}{{FdFd}Fd}{{FfFf}Ff}{{FhFh}Fh}{{FjFj}Fj}{{FlFl}Fl}{{FnFn}Fn}{{G`G`}G`}{{GbGb}Gb}{{GdGd}Gd}{{GfGf}Gf}{{GhGh}Gh}{{GjGj}Gj}{{GlGl}Gl}{{GnGn}Gn}{{H`H`}H`}{{HbHb}Hb}{{HdHd}Hd}{{HfHf}Hf}``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{BMl{{DBf{DBh}}}}{BMn{{DBf{DBh}}}}{BN`{{DBf{DBh}}}}{BNb{{DBf{DBh}}}}{BNd{{DBf{DBh}}}}{BNf{{DBf{DBh}}}}{BNh{{DBf{DBh}}}}{BNj{{DBf{DBh}}}}{BNl{{DBf{DBh}}}}{BNn{{DBf{DBh}}}}{BO`{{DBf{DBh}}}}{BOb{{DBf{DBh}}}}{BOd{{DBf{DBh}}}}{BOf{{DBf{DBh}}}}{BOh{{DBf{DBh}}}}{BOj{{DBf{DBh}}}}{BOl{{DBf{DBh}}}}{BOn{{DBf{DBh}}}}{C@`{{DBf{DBh}}}}{C@b{{DBf{DBh}}}}{C@d{{DBf{DBh}}}}{C@f{{DBf{DBh}}}}{C@h{{DBf{DBh}}}}{C@j{{DBf{DBh}}}}{C@l{{DBf{DBh}}}}{C@n{{DBf{DBh}}}}{CA`{{DBf{DBh}}}}{CAb{{DBf{DBh}}}}{CAd{{DBf{DBh}}}}{CAf{{DBf{DBh}}}}{CAh{{DBf{DBh}}}}{CAj{{DBf{DBh}}}}{CAl{{DBf{DBh}}}}{CAn{{DBf{DBh}}}}{CB`{{DBf{DBh}}}}{CBb{{DBf{DBh}}}}{CBd{{DBf{DBh}}}}{CBf{{DBf{DBh}}}}{CBh{{DBf{DBh}}}}{CBj{{DBf{DBh}}}}{CBl{{DBf{DBh}}}}{CBn{{DBf{DBh}}}}{CC`{{DBf{DBh}}}}{CCb{{DBf{DBh}}}}{CCd{{DBf{DBh}}}}{CCf{{DBf{DBh}}}}{CCh{{DBf{DBh}}}}{CCj{{DBf{DBh}}}}{CCl{{DBf{DBh}}}}{CCn{{DBf{DBh}}}}{CD`{{DBf{DBh}}}}{CDb{{DBf{DBh}}}}{CDd{{DBf{DBh}}}}{CDf{{DBf{DBh}}}}{CDh{{DBf{DBh}}}}{CDj{{DBf{DBh}}}}{CDl{{DBf{DBh}}}}{CDn{{DBf{DBh}}}}{CE`{{DBf{DBh}}}}{CEb{{DBf{DBh}}}}{CEd{{DBf{DBh}}}}{CEf{{DBf{DBh}}}}{CEh{{DBf{DBh}}}}{CEj{{DBf{DBh}}}}{CEl{{DBf{DBh}}}}{CEn{{DBf{DBh}}}}{CF`{{DBf{DBh}}}}{CFb{{DBf{DBh}}}}{CFd{{DBf{DBh}}}}{CFf{{DBf{DBh}}}}{CFh{{DBf{DBh}}}}{CFj{{DBf{DBh}}}}{CFl{{DBf{DBh}}}}{CFn{{DBf{DBh}}}}{CG`{{DBf{DBh}}}}{CGb{{DBf{DBh}}}}{CGd{{DBf{DBh}}}}{CGf{{DBf{DBh}}}}{CGh{{DBf{DBh}}}}{CGj{{DBf{DBh}}}}{CGl{{DBf{DBh}}}}{CGn{{DBf{DBh}}}}{CH`{{DBf{DBh}}}}{CHb{{DBf{DBh}}}}{CHd{{DBf{DBh}}}}{CHf{{DBf{DBh}}}}{CHh{{DBf{DBh}}}}{CHj{{DBf{DBh}}}}{CHl{{DBf{DBh}}}}{CHn{{DBf{DBh}}}}{CI`{{DBf{DBh}}}}{CIb{{DBf{DBh}}}}{CId{{DBf{DBh}}}}{CIf{{DBf{DBh}}}}{CIh{{DBf{DBh}}}}{CIj{{DBf{DBh}}}}{CIl{{DBf{DBh}}}}{CIn{{DBf{DBh}}}}{CJ`{{DBf{DBh}}}}{CJb{{DBf{DBh}}}}{CJd{{DBf{DBh}}}}{CJf{{DBf{DBh}}}}{CJh{{DBf{DBh}}}}{CJj{{DBf{DBh}}}}{CJl{{DBf{DBh}}}}{CJn{{DBf{DBh}}}}{CK`{{DBf{DBh}}}}{CKb{{DBf{DBh}}}}{CKd{{DBf{DBh}}}}{CKf{{DBf{DBh}}}}{CKh{{DBf{DBh}}}}{CKj{{DBf{DBh}}}}{CKl{{DBf{DBh}}}}{CKn{{DBf{DBh}}}}{CL`{{DBf{DBh}}}}{CLb{{DBf{DBh}}}}{CLd{{DBf{DBh}}}}{CLf{{DBf{DBh}}}}{CLh{{DBf{DBh}}}}{CLj{{DBf{DBh}}}}{CLl{{DBf{DBh}}}}{CLn{{DBf{DBh}}}}{CM`{{DBf{DBh}}}}{CMb{{DBf{DBh}}}}{CMd{{DBf{DBh}}}}{CMf{{DBf{DBh}}}}{CMh{{DBf{DBh}}}}{CMj{{DBf{DBh}}}}{CMl{{DBf{DBh}}}}{CMn{{DBf{DBh}}}}{CN`{{DBf{DBh}}}}{CNb{{DBf{DBh}}}}{CNd{{DBf{DBh}}}}{CNf{{DBf{DBh}}}}{CNh{{DBf{DBh}}}}{CNj{{DBf{DBh}}}}{CNl{{DBf{DBh}}}}{CNn{{DBf{DBh}}}}{CO`{{DBf{DBh}}}}{COb{{DBf{DBh}}}}{COd{{DBf{DBh}}}}{COf{{DBf{DBh}}}}{COh{{DBf{DBh}}}}{COj{{DBf{DBh}}}}{COl{{DBf{DBh}}}}{COn{{DBf{DBh}}}}{D@`{{DBf{DBh}}}}{D@b{{DBf{DBh}}}}{D@d{{DBf{DBh}}}}{D@f{{DBf{DBh}}}}{D@h{{DBf{DBh}}}}{D@j{{DBf{DBh}}}}{D@l{{DBf{DBh}}}}{D@n{{DBf{DBh}}}}{DA`{{DBf{DBh}}}}{DAb{{DBf{DBh}}}}{DAd{{DBf{DBh}}}}{DAf{{DBf{DBh}}}}{DAh{{DBf{DBh}}}}{DAj{{DBf{DBh}}}}{DAl{{DBf{DBh}}}}{ce{}{}}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{BMl{{DBf{Hh}}}}{BMn{{DBf{Hh}}}}{BN`{{DBf{Hh}}}}{BNb{{DBf{Hh}}}}{BNd{{DBf{Hh}}}}{BNf{{DBf{Hh}}}}{BNh{{DBf{Hh}}}}{BNj{{DBf{Hh}}}}{BNl{{DBf{Hh}}}}{BNn{{DBf{Hh}}}}{BO`{{DBf{Hh}}}}{BOb{{DBf{Hh}}}}{BOd{{DBf{Hh}}}}{BOf{{DBf{Hh}}}}{BOh{{DBf{Hh}}}}{BOj{{DBf{Hh}}}}{BOl{{DBf{Hh}}}}{BOn{{DBf{Hh}}}}{C@`{{DBf{Hh}}}}{C@b{{DBf{Hh}}}}{C@d{{DBf{Hh}}}}{C@f{{DBf{Hh}}}}{C@h{{DBf{Hh}}}}{C@j{{DBf{Hh}}}}{C@l{{DBf{Hh}}}}{C@n{{DBf{Hh}}}}{CA`{{DBf{Hh}}}}{CAb{{DBf{Hh}}}}{CAd{{DBf{Hh}}}}{CAf{{DBf{Hh}}}}{CAh{{DBf{Hh}}}}{CAj{{DBf{Hh}}}}{CAl{{DBf{Hh}}}}{CAn{{DBf{Hh}}}}{CB`{{DBf{Hh}}}}{CBb{{DBf{Hh}}}}{CBd{{DBf{Hh}}}}{CBf{{DBf{Hh}}}}{CBh{{DBf{Hh}}}}{CBj{{DBf{Hh}}}}{CBl{{DBf{Hh}}}}{CBn{{DBf{Hh}}}}{CC`{{DBf{Hh}}}}{CCb{{DBf{Hh}}}}{CCd{{DBf{Hh}}}}{CCf{{DBf{Hh}}}}{CCh{{DBf{Hh}}}}{CCj{{DBf{Hh}}}}{CCl{{DBf{Hh}}}}{CCn{{DBf{Hh}}}}{CD`{{DBf{Hh}}}}{CDb{{DBf{Hh}}}}{CDd{{DBf{Hh}}}}{CDf{{DBf{Hh}}}}{CDh{{DBf{Hh}}}}{CDj{{DBf{Hh}}}}{CDl{{DBf{Hh}}}}{CDn{{DBf{Hh}}}}{CE`{{DBf{Hh}}}}{CEb{{DBf{Hh}}}}{CEd{{DBf{Hh}}}}{CEf{{DBf{Hh}}}}{CEh{{DBf{Hh}}}}{CEj{{DBf{Hh}}}}{CEl{{DBf{Hh}}}}{CEn{{DBf{Hh}}}}{CF`{{DBf{Hh}}}}{CFb{{DBf{Hh}}}}{CFd{{DBf{Hh}}}}{CFf{{DBf{Hh}}}}{CFh{{DBf{Hh}}}}{CFj{{DBf{Hh}}}}{CFl{{DBf{Hh}}}}{CFn{{DBf{Hh}}}}{CG`{{DBf{Hh}}}}{CGb{{DBf{Hh}}}}{CGd{{DBf{Hh}}}}{CGf{{DBf{Hh}}}}{CGh{{DBf{Hh}}}}{CGj{{DBf{Hh}}}}{CGl{{DBf{Hh}}}}{CGn{{DBf{Hh}}}}{CH`{{DBf{Hh}}}}{CHb{{DBf{Hh}}}}{CHd{{DBf{Hh}}}}{CHf{{DBf{Hh}}}}{CHh{{DBf{Hh}}}}{CHj{{DBf{Hh}}}}{CHl{{DBf{Hh}}}}{CHn{{DBf{Hh}}}}{CI`{{DBf{Hh}}}}{CIb{{DBf{Hh}}}}{CId{{DBf{Hh}}}}{CIf{{DBf{Hh}}}}{CIh{{DBf{Hh}}}}{CIj{{DBf{Hh}}}}{CIl{{DBf{Hh}}}}{CIn{{DBf{Hh}}}}{CJ`{{DBf{Hh}}}}{CJb{{DBf{Hh}}}}{CJd{{DBf{Hh}}}}{CJf{{DBf{Hh}}}}{CJh{{DBf{Hh}}}}{CJj{{DBf{Hh}}}}{CJl{{DBf{Hh}}}}{CJn{{DBf{Hh}}}}{CK`{{DBf{Hh}}}}{CKb{{DBf{Hh}}}}{CKd{{DBf{Hh}}}}{CKf{{DBf{Hh}}}}{CKh{{DBf{Hh}}}}{CKj{{DBf{Hh}}}}{CKl{{DBf{Hh}}}}{CKn{{DBf{Hh}}}}{CL`{{DBf{Hh}}}}{CLb{{DBf{Hh}}}}{CLd{{DBf{Hh}}}}{CLf{{DBf{Hh}}}}{CLh{{DBf{Hh}}}}{CLj{{DBf{Hh}}}}{CLl{{DBf{Hh}}}}{CLn{{DBf{Hh}}}}{CM`{{DBf{Hh}}}}{CMb{{DBf{Hh}}}}{CMd{{DBf{Hh}}}}{CMf{{DBf{Hh}}}}{CMh{{DBf{Hh}}}}{CMj{{DBf{Hh}}}}{CMl{{DBf{Hh}}}}{CMn{{DBf{Hh}}}}{CN`{{DBf{Hh}}}}{CNb{{DBf{Hh}}}}{CNd{{DBf{Hh}}}}{CNf{{DBf{Hh}}}}{CNh{{DBf{Hh}}}}{CNj{{DBf{Hh}}}}{CNl{{DBf{Hh}}}}{CNn{{DBf{Hh}}}}{CO`{{DBf{Hh}}}}{COb{{DBf{Hh}}}}{COd{{DBf{Hh}}}}{COf{{DBf{Hh}}}}{COh{{DBf{Hh}}}}{COj{{DBf{Hh}}}}{COl{{DBf{Hh}}}}{COn{{DBf{Hh}}}}{D@`{{DBf{Hh}}}}{D@b{{DBf{Hh}}}}{D@d{{DBf{Hh}}}}{D@f{{DBf{Hh}}}}{D@h{{DBf{Hh}}}}{D@j{{DBf{Hh}}}}{D@l{{DBf{Hh}}}}{D@n{{DBf{Hh}}}}{DA`{{DBf{Hh}}}}{DAb{{DBf{Hh}}}}{DAd{{DBf{Hh}}}}{DAf{{DBf{Hh}}}}{DAh{{DBf{Hh}}}}{DAj{{DBf{Hh}}}}{DAl{{DBf{Hh}}}}{{DhDh}Af}{{DjDj}Af}{{DlDl}Af}{{DnDn}Af}{{E`E`}Af}{{EbEb}Af}{{EdEd}Af}{{EfEf}Af}{{EhEh}Af}{{EjEj}Af}{{ElEl}Af}{{EnEn}Af}{{F`F`}Af}{{FbFb}Af}{{FdFd}Af}{{FfFf}Af}{{FhFh}Af}{{FjFj}Af}{{FlFl}Af}{{FnFn}Af}{{G`G`}Af}{{GbGb}Af}{{GdGd}Af}{{GfGf}Af}{{GhGh}Af}{{GjGj}Af}{{GlGl}Af}{{GnGn}Af}{{H`H`}Af}{{HbHb}Af}{{HdHd}Af}{{HfHf}Af}```````````{c{{B`{e}}}{}{}}0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000`````````````````{cDd{}}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000````````````{{DhDh}Dh}{{DjDj}Dj}{{DlDl}Dl}{{DnDn}Dn}{{E`E`}E`}{{EbEb}Eb}{{EdEd}Ed}{{EfEf}Ef}{{EhEh}Eh}{{EjEj}Ej}{{ElEl}El}{{EnEn}En}{{F`F`}F`}{{FbFb}Fb}{{FdFd}Fd}{{FfFf}Ff}{{FhFh}Fh}{{FjFj}Fj}{{FlFl}Fl}{{FnFn}Fn}{{G`G`}G`}{{GbGb}Gb}{{GdGd}Gd}{{GfGf}Gf}{{GhGh}Gh}{{GjGj}Gj}{{GlGl}Gl}{{GnGn}Gn}{{H`H`}H`}{{HbHb}Hb}{{HdHd}Hd}{{HfHf}Hf}````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{ce{}{}}0{cc{}}{DBl{{DBn{b}}}}{{DBlCl}{{d{b}}}}{DBlDC`}{DBlDCb}{DBlDCd}{DBlDCf}0{DBlDBh}{DBlDCh}{DBlf}{DBlBb}0{DBlHh}{DBlb}={{{d{b}}}DBl}{DBl{{d{b}}}}{c{{B`{e}}}{}{}}0{cDd{}}`{ce{}{}}0{cc{}}1{DCjBl}{DCjCl}{{{d{b}}}DCj}{{DCjDC`}Af}{{DCjDCb}Af}{{DCjDCd}Af}{{DCjDCf}Af}0{{DCjDBh}Af}{{DCjDCh}Af}{{DCj{d{b}}}Af}{{DCjf}Af}{{DCjBb}Af}0{{DCjHh}Af}{{DCjb}Af}<{c{{B`{e}}}{}{}}0{cDd{}}`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{{}DCl}{{}DCn}{{}DD`}{{}DDb}{{}DDd}{{}DDf}{{}DDh}{{}DDj}{{}DDl}{{}DDn}{{}DE`}{{}DEb}{{}DEd}{{}DEf}{{}DEh}{{}DEj}{{}DEl}{{}DEn}{{}DF`}{{}DFb}{{}DFd}{{}DFf}{{}DFh}{{}DFj}{{}DFl}```````````````````````````````````````````````````````````````````````````````````````````````````````{{DClDCl}DCl}{{DCnDCn}DCn}{{DD`DD`}DD`}{{DDbDDb}DDb}{{DDdDDd}DDd}{{DDfDDf}DDf}{{DDhDDh}DDh}{{DDjDDj}DDj}{{DDlDDl}DDl}{{DDnDDn}DDn}{{DE`DE`}DE`}{{DEbDEb}DEb}{{DEdDEd}DEd}{{DEfDEf}DEf}{{DEhDEh}DEh}{{DEjDEj}DEj}{{DElDEl}DEl}{{DEnDEn}DEn}{{DF`DF`}DF`}{{DFbDFb}DFb}{{DFdDFd}DFd}{{DFfDFf}DFf}{{DFhDFh}DFh}{{DFjDFj}DFj}{{DFlDFl}DFl}{{DClDCl}Af}{{DCnDCn}Af}{{DD`DD`}Af}{{DDbDDb}Af}{{DDdDDd}Af}{{DDfDDf}Af}{{DDhDDh}Af}{{DDjDDj}Af}{{DDlDDl}Af}{{DDnDDn}Af}{{DE`DE`}Af}{{DEbDEb}Af}{{DEdDEd}Af}{{DEfDEf}Af}{{DEhDEh}Af}{{DEjDEj}Af}{{DElDEl}Af}{{DEnDEn}Af}{{DF`DF`}Af}{{DFbDFb}Af}{{DFdDFd}Af}{{DFfDFf}Af}{{DFhDFh}Af}{{DFjDFj}Af}{{DFlDFl}Af}{{DClDCl}DCl}{{DCnDCn}DCn}{{DD`DD`}DD`}{{DDbDDb}DDb}{{DDdDDd}DDd}{{DDfDDf}DDf}{{DDhDDh}DDh}{{DDjDDj}DDj}{{DDlDDl}DDl}{{DDnDDn}DDn}{{DE`DE`}DE`}{{DEbDEb}DEb}{{DEdDEd}DEd}{{DEfDEf}DEf}{{DEhDEh}DEh}{{DEjDEj}DEj}{{DElDEl}DEl}{{DEnDEn}DEn}{{DF`DF`}DF`}{{DFbDFb}DFb}{{DFdDFd}DFd}{{DFfDFf}DFf}{{DFhDFh}DFh}{{DFjDFj}DFj}{{DFlDFl}DFl}{{DClDCl}Af}{{DCnDCn}Af}{{DD`DD`}Af}{{DDbDDb}Af}{{DDdDDd}Af}{{DDfDDf}Af}{{DDhDDh}Af}{{DDjDDj}Af}{{DDlDDl}Af}{{DDnDDn}Af}{{DE`DE`}Af}{{DEbDEb}Af}{{DEdDEd}Af}{{DEfDEf}Af}{{DEhDEh}Af}{{DEjDEj}Af}{{DElDEl}Af}{{DEnDEn}Af}{{DF`DF`}Af}{{DFbDFb}Af}{{DFdDFd}Af}{{DFfDFf}Af}{{DFhDFh}Af}{{DFjDFj}Af}{{DFlDFl}Af}``{DClBb}{DCnBb}{DD`f}{DDbf}{DDdHh}{DDfBb}{DDhf}{DDjf}{DDlf}{DDnb}{DE`Bb}{DEbf}{DEdBb}{DEfBb}{DEhBb}{DEjb}{DElf}{DEnHh}{DF`f}{DFbf}{DFdf}{DFfb}{DFhb}{DFjb}{DFlf}{{DClDCl}DCl}{{DCnDCn}DCn}{{DD`DD`}DD`}{{DDbDDb}DDb}{{DDdDDd}DDd}{{DDfDDf}DDf}{{DDhDDh}DDh}{{DDjDDj}DDj}{{DDlDDl}DDl}{{DDnDDn}DDn}{{DE`DE`}DE`}{{DEbDEb}DEb}{{DEdDEd}DEd}{{DEfDEf}DEf}{{DEhDEh}DEh}{{DEjDEj}DEj}{{DElDEl}DEl}{{DEnDEn}DEn}{{DF`DF`}DF`}{{DFbDFb}DFb}{{DFdDFd}DFd}{{DFfDFf}DFf}{{DFhDFh}DFh}{{DFjDFj}DFj}{{DFlDFl}DFl}{{DClDCl}Af}{{DCnDCn}Af}{{DD`DD`}Af}{{DDbDDb}Af}{{DDdDDd}Af}{{DDfDDf}Af}{{DDhDDh}Af}{{DDjDDj}Af}{{DDlDDl}Af}{{DDnDDn}Af}{{DE`DE`}Af}{{DEbDEb}Af}{{DEdDEd}Af}{{DEfDEf}Af}{{DEhDEh}Af}{{DEjDEj}Af}{{DElDEl}Af}{{DEnDEn}Af}{{DF`DF`}Af}{{DFbDFb}Af}{{DFdDFd}Af}{{DFfDFf}Af}{{DFhDFh}Af}{{DFjDFj}Af}{{DFlDFl}Af}```````{ce{}{}}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000`````````````````````````````````````````````````````````````````````````````````````````{DFnDFn}{DG`DG`}{DGbDGb}{DGdDGd}{DGfDGf}{DGhDGh}{DGjDGj}{DGlDGl}{DGnDGn}{DH`DH`}{DHbDHb}{DHdDHd}{DHfDHf}{DHhDHh}{DHjDHj}{DHlDHl}{DHnDHn}{DI`DI`}{DIbDIb}{DIdDId}{DIfDIf}{DIhDIh}{DIjDIj}{DIlDIl}{DInDIn}{DJ`DJ`}{DJbDJb}{DJdDJd}{DJfDJf}{DJhDJh}{DJjDJj}{DJlDJl}{DJnDJn}{DK`DK`}{DKbDKb}{DKdDKd}{DKfDKf}{DKhDKh}{DKjDKj}{DKlDKl}{DKnDKn}{DL`DL`}{DLbDLb}{DLdDLd}{DLfDLf}{DLhDLh}{DLjDLj}{DLlDLl}{DLnDLn}{DM`DM`}{DMbDMb}{DMdDMd}{DMfDMf}{DMhDMh}{DMjDMj}{DMlDMl}{DMnDMn}{DN`DN`}{DNbDNb}{DNdDNd}{DNfDNf}{DNhDNh}{DNjDNj}{DNlDNl}{DNnDNn}{DO`DO`}{DObDOb}{DOdDOd}{DOfDOf}{DOhDOh}{DOjDOj}{DOlDOl}{DOnDOn}{E@`E@`}{E@bE@b}{E@dE@d}{E@fE@f}{E@hE@h}{E@jE@j}{E@lE@l}{E@nE@n}{EA`EA`}{EAbEAb}{EAdEAd}{EAfEAf}{EAhEAh}{EAjEAj}{EAlEAl}{EAnEAn}{EB`EB`}{EBbEBb}{EBdEBd}{EBfEBf}{EBhEBh}{EBjEBj}{EBlEBl}{EBnEBn}{EC`EC`}{ECbECb}{ECdECd}{ECfECf}{EChECh}{ECjECj}{EClECl}{ECnECn}{ED`ED`}{EDbEDb}{EDdEDd}{EDfEDf}{EDhEDh}{EDjEDj}{EDlEDl}{EDnEDn}{EE`EE`}{EEbEEb}{EEdEEd}{EEfEEf}{EEhEEh}{EEjEEj}{EElEEl}{EEnEEn}{EF`EF`}{EFbEFb}{EFdEFd}{EFfEFf}{EFhEFh}{EFjEFj}{EFlEFl}{EFnEFn}{EG`EG`}{EGbEGb}{EGdEGd}{EGfEGf}{EGhEGh}{EGjEGj}{EGlEGl}{EGnEGn}{EH`EH`}{EHbEHb}{EHdEHd}{EHfEHf}{EHhEHh}{EHjEHj}{EHlEHl}{EHnEHn}{EI`EI`}{EIbEIb}{EIdEId}{EIfEIf}{EIhEIh}{EIjEIj}{EIlEIl}{EInEIn}{EJ`EJ`}{EJbEJb}{EJdEJd}{EJfEJf}{EJhEJh}{EJjEJj}{EJlEJl}{EJnEJn}{EK`EK`}{EKbEKb}{EKdEKd}{EKfEKf}{EKhEKh}{EKjEKj}{EKlEKl}{EKnEKn}{EL`EL`}{ELbELb}{ELdELd}{ELfELf}{ELhELh}{ELjELj}{ELlELl}{ELnELn}{EM`EM`}{EMbEMb}{EMdEMd}{EMfEMf}{EMhEMh}{EMjEMj}{EMlEMl}{EMnEMn}{EN`EN`}{ENbENb}{ENdENd}{ENfENf}{ENhENh}{ENjENj}{ENlENl}{ENnENn}{EO`EO`}{EObEOb}{EOdEOd}{EOfEOf}{EOhEOh}{EOjEOj}{EOlEOl}{EOnEOn}{F@`F@`}{F@bF@b}{F@dF@d}{F@fF@f}{F@hF@h}{F@jF@j}{F@lF@l}{F@nF@n}{FA`FA`}{FAbFAb}{FAdFAd}{FAfFAf}{FAhFAh}{FAjFAj}{FAlFAl}{FAnFAn}{FB`FB`}{FBbFBb}{FBdFBd}{FBfFBf}{FBhFBh}{FBjFBj}{FBlFBl}{FBnFBn}{DClDCl}{FC`FC`}{FCbFCb}{FCdFCd}{FCfFCf}{FChFCh}{FCjFCj}{FClFCl}{FCnFCn}{FD`FD`}{FDbFDb}{FDdFDd}{DCnDCn}{FDfFDf}{FDhFDh}{FDjFDj}{DD`DD`}{FDlFDl}{FDnFDn}{FE`FE`}{FEbFEb}{FEdFEd}{DDbDDb}{FEfFEf}{FEhFEh}{DDdDDd}{FEjFEj}{FElFEl}{DDfDDf}{FEnFEn}{FF`FF`}{DDhDDh}{FFbFFb}{FFdFFd}{FFfFFf}{DDjDDj}{FFhFFh}{FFjFFj}{FFlFFl}{FFnFFn}{FG`FG`}{FGbFGb}{FGdFGd}{DDlDDl}{FGfFGf}{FGhFGh}{FGjFGj}{FGlFGl}{FGnFGn}{FH`FH`}{DDnDDn}{FHbFHb}{FHdFHd}{FHfFHf}{FHhFHh}{FHjFHj}{DE`DE`}{FHlFHl}{DEbDEb}{FHnFHn}{FI`FI`}{FIbFIb}{DEdDEd}{FIdFId}{FIfFIf}{FIhFIh}{DEfDEf}{FIjFIj}{FIlFIl}{FInFIn}{DEhDEh}{DEjDEj}{FJ`FJ`}{FJbFJb}{FJdFJd}{FJfFJf}{FJhFJh}{FJjFJj}{FJlFJl}{FJnFJn}{FK`FK`}{FKbFKb}{FKdFKd}{FKfFKf}{DElDEl}{FKhFKh}{FKjFKj}{FKlFKl}{FKnFKn}{FL`FL`}{DEnDEn}{FLbFLb}{FLdFLd}{FLfFLf}{FLhFLh}{FLjFLj}{FLlFLl}{FLnFLn}{FM`FM`}{FMbFMb}{FMdFMd}{DF`DF`}{FMfFMf}{FMhFMh}{FMjFMj}{FMlFMl}{FMnFMn}{FN`FN`}{FNbFNb}{FNdFNd}{DFbDFb}{FNfFNf}{FNhFNh}{FNjFNj}{FNlFNl}{FNnFNn}{FO`FO`}{FObFOb}{FOdFOd}{FOfFOf}{FOhFOh}{FOjFOj}{FOlFOl}{FOnFOn}{DFdDFd}{G@`G@`}{DFfDFf}{DFhDFh}{G@bG@b}{G@dG@d}{DFjDFj}{DFlDFl}{G@fG@f}{G@hG@h}{{ce}Af{}{}}0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{{DClDCl}DAn}{{DCnDCn}DAn}{{DD`DD`}DAn}{{DDbDDb}DAn}{{DDdDDd}DAn}{{DDfDDf}DAn}{{DDhDDh}DAn}{{DDjDDj}DAn}{{DDlDDl}DAn}{{DDnDDn}DAn}{{DE`DE`}DAn}{{DEbDEb}DAn}{{DEdDEd}DAn}{{DEfDEf}DAn}{{DEhDEh}DAn}{{DEjDEj}DAn}{{DElDEl}DAn}{{DEnDEn}DAn}{{DF`DF`}DAn}{{DFbDFb}DAn}{{DFdDFd}DAn}{{DFfDFf}DAn}{{DFhDFh}DAn}{{DFjDFj}DAn}{{DFlDFl}DAn}````````````{DClDCl}{DCnDCn}{DD`DD`}{DDbDDb}{DDdDDd}{DDfDDf}{DDhDDh}{DDjDDj}{DDlDDl}{DDnDDn}{DE`DE`}{DEbDEb}{DEdDEd}{DEfDEf}{DEhDEh}{DEjDEj}{DElDEl}{DEnDEn}{DF`DF`}{DFbDFb}{DFdDFd}{DFfDFf}{DFhDFh}{DFjDFj}{DFlDFl}``{{DClDCl}Bl}{{DCnDCn}Bl}{{DD`DD`}Bl}{{DDbDDb}Bl}{{DDdDDd}Bl}{{DDfDDf}Bl}{{DDhDDh}Bl}{{DDjDDj}Bl}{{DDlDDl}Bl}{{DDnDDn}Bl}{{DE`DE`}Bl}{{DEbDEb}Bl}{{DEdDEd}Bl}{{DEfDEf}Bl}{{DEhDEh}Bl}{{DEjDEj}Bl}{{DElDEl}Bl}{{DEnDEn}Bl}{{DF`DF`}Bl}{{DFbDFb}Bl}{{DFdDFd}Bl}{{DFfDFf}Bl}{{DFhDFh}Bl}{{DFjDFj}Bl}{{DFlDFl}Bl}````````````````````````````````````````````````````````{{}DG`}{{}DGb}{{}DGd}{{}DGf}{{}DGh}{{}DGj}{{}DGl}{{}DGn}{{}DH`}{{}DHb}{{}DHd}{{}DHf}{{}DHh}{{}DHj}{{}DHl}{{}DHn}{{}DI`}{{}DIb}{{}DId}{{}DIf}{{}DIh}{{}DIj}{{}DIl}{{}DIn}{{}DJ`}{{}DJb}{{}DJd}{{}DJf}{{}DJh}{{}DJj}{{}DJl}{{}DJn}{{}DK`}{{}DKb}{{}DKd}{{}DKf}{{}DKh}{{}DKj}{{}DKl}{{}DKn}{{}DL`}{{}DLb}{{}DLd}{{}DLf}{{}DLh}{{}DLj}{{}DLl}{{}DLn}{{}DM`}{{}DMb}{{}DMd}{{}DMf}{{}DMh}{{}DMj}{{}DMl}{{}DMn}{{}DN`}{{}DNb}{{}DNd}{{}DNf}{{}DNh}{{}DNj}{{}DNl}{{}DNn}{{}DO`}{{}DOb}{{}DOd}{{}DOf}{{}DOh}{{}DOj}{{}DOl}{{}DOn}{{}E@`}{{}E@b}{{}E@d}{{}E@f}{{}E@h}{{}E@j}{{}E@l}{{}E@n}{{}EA`}{{}EAb}{{}EAd}{{}EAf}{{}EAh}{{}EAj}{{}EAl}{{}EAn}{{}EB`}{{}EBb}{{}EBd}{{}EBf}{{}EBh}{{}EBj}{{}EBl}{{}EBn}{{}EC`}{{}ECb}{{}ECd}{{}ECf}{{}ECh}{{}ECj}{{}ECl}{{}ECn}{{}ED`}{{}EDb}{{}EDd}{{}EDf}{{}EDh}{{}EDj}{{}EDl}{{}EDn}{{}EE`}{{}EEb}{{}EEd}{{}EEf}{{}EEh}{{}EEj}{{}EEl}{{}EEn}{{}EF`}{{}EFb}{{}EFd}{{}EFf}{{}EFh}{{}EFj}{{}EFl}{{}EFn}{{}EG`}{{}EGb}{{}EGd}{{}EGf}{{}EGh}{{}EGj}{{}EGl}{{}EGn}{{}EH`}{{}EHb}{{}EHd}{{}EHf}{{}EHh}{{}EHj}{{}EHl}{{}EHn}{{}EI`}{{}EIb}{{}EId}{{}EIf}{{}EIh}{{}EIj}{{}EIl}{{}EIn}{{}EJ`}{{}EJb}{{}EJd}{{}EJf}{{}EJh}{{}EJj}{{}EJl}{{}EJn}{{}EK`}{{}EKb}{{}EKd}{{}EKf}{{}EKh}{{}EKj}{{}EKl}{{}EKn}{{}EL`}{{}ELb}{{}ELd}{{}ELf}{{}ELh}{{}ELj}{{}ELl}{{}ELn}{{}EM`}{{}EMb}{{}EMd}{{}EMf}{{}EMh}{{}EMj}{{}EMl}{{}EMn}{{}EN`}{{}ENb}{{}ENd}{{}ENf}{{}ENh}{{}ENj}{{}ENl}{{}ENn}{{}EO`}{{}EOb}{{}EOd}{{}EOf}{{}EOh}{{}EOj}{{}EOl}{{}EOn}{{}F@`}{{}F@b}{{}F@d}{{}F@f}{{}F@h}{{}F@j}{{}F@l}{{}F@n}{{}FA`}{{}FAb}{{}FAd}{{}FAf}{{}FAh}{{}FAj}{{}FAl}{{}FAn}{{}FB`}{{}FBb}{{}FBd}{{}FBf}{{}FBh}{{}FBj}{{}FBl}{{}FBn}{{}DCl}{{}FC`}{{}FCb}{{}FCd}{{}FCf}{{}FCh}{{}FCj}{{}FCl}{{}FCn}{{}FD`}{{}FDb}{{}FDd}{{}DCn}{{}FDf}{{}FDh}{{}FDj}{{}DD`}{{}FDl}{{}FDn}{{}FE`}{{}FEb}{{}FEd}{{}DDb}{{}FEf}{{}FEh}{{}DDd}{{}FEj}{{}FEl}{{}DDf}{{}FEn}{{}FF`}{{}DDh}{{}FFb}{{}FFd}{{}FFf}{{}DDj}{{}FFh}{{}FFj}{{}FFl}{{}FFn}{{}FG`}{{}FGb}{{}FGd}{{}DDl}{{}FGf}{{}FGh}{{}FGj}{{}FGl}{{}FGn}{{}FH`}{{}DDn}{{}FHb}{{}FHd}{{}FHf}{{}FHh}{{}FHj}{{}DE`}{{}FHl}{{}DEb}{{}FHn}{{}FI`}{{}FIb}{{}DEd}{{}FId}{{}FIf}{{}FIh}{{}DEf}{{}FIj}{{}FIl}{{}FIn}{{}DEh}{{}DEj}{{}FJ`}{{}FJb}{{}FJd}{{}FJf}{{}FJh}{{}FJj}{{}FJl}{{}FJn}{{}FK`}{{}FKb}{{}FKd}{{}FKf}{{}DEl}{{}FKh}{{}FKj}{{}FKl}{{}FKn}{{}FL`}{{}DEn}{{}FLb}{{}FLd}{{}FLf}{{}FLh}{{}FLj}{{}FLl}{{}FLn}{{}FM`}{{}FMb}{{}FMd}{{}DF`}{{}FMf}{{}FMh}{{}FMj}{{}FMl}{{}FMn}{{}FN`}{{}FNb}{{}FNd}{{}DFb}{{}FNf}{{}FNh}{{}FNj}{{}FNl}{{}FNn}{{}FO`}{{}FOb}{{}FOd}{{}FOf}{{}FOh}{{}FOj}{{}FOl}{{}FOn}{{}DFd}{{}G@`}{{}DFf}{{}DFh}{{}G@b}{{}G@d}{{}DFj}{{}DFl}{{}G@f}{{}G@h}{Bb{{B`{DFnAh}}}}```{{n{d{b}}}{{B`{DG`Bh}}}}{{n{d{b}}}{{B`{DGbBh}}}}{{n{d{b}}}{{B`{DGdBh}}}}{{n{d{b}}}{{B`{DGfBh}}}}{{n{d{b}}}{{B`{DGhBh}}}}{{n{d{b}}}{{B`{DGjBh}}}}{{n{d{b}}}{{B`{DGlBh}}}}{{n{d{b}}}{{B`{DGnBh}}}}{{n{d{b}}}{{B`{DH`Bh}}}}{{n{d{b}}}{{B`{DHbBh}}}}{{n{d{b}}}{{B`{DHdBh}}}}{{n{d{b}}}{{B`{DHfBh}}}}{{n{d{b}}}{{B`{DHhBh}}}}{{n{d{b}}}{{B`{DHjBh}}}}{{n{d{b}}}{{B`{DHlBh}}}}{{n{d{b}}}{{B`{DHnBh}}}}{{n{d{b}}}{{B`{DI`Bh}}}}{{n{d{b}}}{{B`{DIbBh}}}}{{n{d{b}}}{{B`{DIdBh}}}}{{n{d{b}}}{{B`{DIfBh}}}}{{n{d{b}}}{{B`{DIhBh}}}}{{n{d{b}}}{{B`{DIjBh}}}}{{n{d{b}}}{{B`{DIlBh}}}}{{n{d{b}}}{{B`{DInBh}}}}{{n{d{b}}}{{B`{DJ`Bh}}}}{{n{d{b}}}{{B`{DJbBh}}}}{{n{d{b}}}{{B`{DJdBh}}}}{{n{d{b}}}{{B`{DJfBh}}}}{{n{d{b}}}{{B`{DJhBh}}}}{{n{d{b}}}{{B`{DJjBh}}}}{{n{d{b}}}{{B`{DJlBh}}}}{{n{d{b}}}{{B`{DJnBh}}}}{{n{d{b}}}{{B`{DK`Bh}}}}{{n{d{b}}}{{B`{DKbBh}}}}{{n{d{b}}}{{B`{DKdBh}}}}{{n{d{b}}}{{B`{DKfBh}}}}{{n{d{b}}}{{B`{DKhBh}}}}{{n{d{b}}}{{B`{DKjBh}}}}{{n{d{b}}}{{B`{DKlBh}}}}{{n{d{b}}}{{B`{DKnBh}}}}{{n{d{b}}}{{B`{DL`Bh}}}}{{n{d{b}}}{{B`{DLbBh}}}}{{n{d{b}}}{{B`{DLdBh}}}}{{n{d{b}}}{{B`{DLfBh}}}}{{n{d{b}}}{{B`{DLhBh}}}}{{n{d{b}}}{{B`{DLjBh}}}}{{n{d{b}}}{{B`{DLlBh}}}}{{n{d{b}}}{{B`{DLnBh}}}}{{n{d{b}}}{{B`{DM`Bh}}}}{{n{d{b}}}{{B`{DMbBh}}}}{{n{d{b}}}{{B`{DMdBh}}}}{{n{d{b}}}{{B`{DMfBh}}}}{{n{d{b}}}{{B`{DMhBh}}}}{{n{d{b}}}{{B`{DMjBh}}}}{{n{d{b}}}{{B`{DMlBh}}}}{{n{d{b}}}{{B`{DMnBh}}}}{{n{d{b}}}{{B`{DN`Bh}}}}{{n{d{b}}}{{B`{DNbBh}}}}{{n{d{b}}}{{B`{DNdBh}}}}{{n{d{b}}}{{B`{DNfBh}}}}{{n{d{b}}}{{B`{DNhBh}}}}{{n{d{b}}}{{B`{DNjBh}}}}{{n{d{b}}}{{B`{DNlBh}}}}{{n{d{b}}}{{B`{DNnBh}}}}{{n{d{b}}}{{B`{DO`Bh}}}}{{n{d{b}}}{{B`{DObBh}}}}{{n{d{b}}}{{B`{DOdBh}}}}{{n{d{b}}}{{B`{DOfBh}}}}{{n{d{b}}}{{B`{DOhBh}}}}{{n{d{b}}}{{B`{DOjBh}}}}{{n{d{b}}}{{B`{DOlBh}}}}{{n{d{b}}}{{B`{DOnBh}}}}{{n{d{b}}}{{B`{E@`Bh}}}}{{n{d{b}}}{{B`{E@bBh}}}}{{n{d{b}}}{{B`{E@dBh}}}}{{n{d{b}}}{{B`{E@fBh}}}}{{n{d{b}}}{{B`{E@hBh}}}}{{n{d{b}}}{{B`{E@jBh}}}}{{n{d{b}}}{{B`{E@lBh}}}}{{n{d{b}}}{{B`{E@nBh}}}}{{n{d{b}}}{{B`{EA`Bh}}}}{{n{d{b}}}{{B`{EAbBh}}}}{{n{d{b}}}{{B`{EAdBh}}}}{{n{d{b}}}{{B`{EAfBh}}}}{{n{d{b}}}{{B`{EAhBh}}}}{{n{d{b}}}{{B`{EAjBh}}}}{{n{d{b}}}{{B`{EAlBh}}}}{{n{d{b}}}{{B`{EAnBh}}}}{{n{d{b}}}{{B`{EB`Bh}}}}{{n{d{b}}}{{B`{EBbBh}}}}{{n{d{b}}}{{B`{EBdBh}}}}{{n{d{b}}}{{B`{EBfBh}}}}{{n{d{b}}}{{B`{EBhBh}}}}{{n{d{b}}}{{B`{EBjBh}}}}{{n{d{b}}}{{B`{EBlBh}}}}{{n{d{b}}}{{B`{EBnBh}}}}{{n{d{b}}}{{B`{EC`Bh}}}}{{n{d{b}}}{{B`{ECbBh}}}}{{n{d{b}}}{{B`{ECdBh}}}}{{n{d{b}}}{{B`{ECfBh}}}}{{n{d{b}}}{{B`{EChBh}}}}{{n{d{b}}}{{B`{ECjBh}}}}{{n{d{b}}}{{B`{EClBh}}}}{{n{d{b}}}{{B`{ECnBh}}}}{{n{d{b}}}{{B`{ED`Bh}}}}{{n{d{b}}}{{B`{EDbBh}}}}{{n{d{b}}}{{B`{EDdBh}}}}{{n{d{b}}}{{B`{EDfBh}}}}{{n{d{b}}}{{B`{EDhBh}}}}{{n{d{b}}}{{B`{EDjBh}}}}{{n{d{b}}}{{B`{EDlBh}}}}{{n{d{b}}}{{B`{EDnBh}}}}{{n{d{b}}}{{B`{EE`Bh}}}}{{n{d{b}}}{{B`{EEbBh}}}}{{n{d{b}}}{{B`{EEdBh}}}}{{n{d{b}}}{{B`{EEfBh}}}}{{n{d{b}}}{{B`{EEhBh}}}}{{n{d{b}}}{{B`{EEjBh}}}}{{n{d{b}}}{{B`{EElBh}}}}{{n{d{b}}}{{B`{EEnBh}}}}{{n{d{b}}}{{B`{EF`Bh}}}}{{n{d{b}}}{{B`{EFbBh}}}}{{n{d{b}}}{{B`{EFdBh}}}}{{n{d{b}}}{{B`{EFfBh}}}}{{n{d{b}}}{{B`{EFhBh}}}}{{n{d{b}}}{{B`{EFjBh}}}}{{n{d{b}}}{{B`{EFlBh}}}}{{n{d{b}}}{{B`{EFnBh}}}}{{n{d{b}}}{{B`{EG`Bh}}}}{{n{d{b}}}{{B`{EGbBh}}}}{{n{d{b}}}{{B`{EGdBh}}}}{{n{d{b}}}{{B`{EGfBh}}}}{{n{d{b}}}{{B`{EGhBh}}}}{{n{d{b}}}{{B`{EGjBh}}}}{{n{d{b}}}{{B`{EGlBh}}}}{{n{d{b}}}{{B`{EGnBh}}}}{{n{d{b}}}{{B`{EH`Bh}}}}{{n{d{b}}}{{B`{EHbBh}}}}{{n{d{b}}}{{B`{EHdBh}}}}{{n{d{b}}}{{B`{EHfBh}}}}{{n{d{b}}}{{B`{EHhBh}}}}{{n{d{b}}}{{B`{EHjBh}}}}{{n{d{b}}}{{B`{EHlBh}}}}{{n{d{b}}}{{B`{EHnBh}}}}{{n{d{b}}}{{B`{EI`Bh}}}}{{n{d{b}}}{{B`{EIbBh}}}}{{n{d{b}}}{{B`{EIdBh}}}}{{n{d{b}}}{{B`{EIfBh}}}}{{n{d{b}}}{{B`{EIhBh}}}}{{n{d{b}}}{{B`{EIjBh}}}}{{n{d{b}}}{{B`{EIlBh}}}}{{n{d{b}}}{{B`{EInBh}}}}{{n{d{b}}}{{B`{EJ`Bh}}}}{{n{d{b}}}{{B`{EJbBh}}}}{{n{d{b}}}{{B`{EJdBh}}}}{{n{d{b}}}{{B`{EJfBh}}}}{{n{d{b}}}{{B`{EJhBh}}}}{{n{d{b}}}{{B`{EJjBh}}}}{{n{d{b}}}{{B`{EJlBh}}}}{{n{d{b}}}{{B`{EJnBh}}}}{{n{d{b}}}{{B`{EK`Bh}}}}{{n{d{b}}}{{B`{EKbBh}}}}{{n{d{b}}}{{B`{EKdBh}}}}{{n{d{b}}}{{B`{EKfBh}}}}{{n{d{b}}}{{B`{EKhBh}}}}{{n{d{b}}}{{B`{EKjBh}}}}{{n{d{b}}}{{B`{EKlBh}}}}{{n{d{b}}}{{B`{EKnBh}}}}{{n{d{b}}}{{B`{EL`Bh}}}}{{n{d{b}}}{{B`{ELbBh}}}}{{n{d{b}}}{{B`{ELdBh}}}}{{n{d{b}}}{{B`{ELfBh}}}}{{n{d{b}}}{{B`{ELhBh}}}}{{n{d{b}}}{{B`{ELjBh}}}}{{n{d{b}}}{{B`{ELlBh}}}}{{n{d{b}}}{{B`{ELnBh}}}}{{n{d{b}}}{{B`{EM`Bh}}}}{{n{d{b}}}{{B`{EMbBh}}}}{{n{d{b}}}{{B`{EMdBh}}}}{{n{d{b}}}{{B`{EMfBh}}}}{{n{d{b}}}{{B`{EMhBh}}}}{{n{d{b}}}{{B`{EMjBh}}}}{{n{d{b}}}{{B`{EMlBh}}}}{{n{d{b}}}{{B`{EMnBh}}}}{{n{d{b}}}{{B`{EN`Bh}}}}{{n{d{b}}}{{B`{ENbBh}}}}{{n{d{b}}}{{B`{ENdBh}}}}{{n{d{b}}}{{B`{ENfBh}}}}{{n{d{b}}}{{B`{ENhBh}}}}{{n{d{b}}}{{B`{ENjBh}}}}{{n{d{b}}}{{B`{ENlBh}}}}{{n{d{b}}}{{B`{ENnBh}}}}{{n{d{b}}}{{B`{EO`Bh}}}}{{n{d{b}}}{{B`{EObBh}}}}{{n{d{b}}}{{B`{EOdBh}}}}{{n{d{b}}}{{B`{EOfBh}}}}{{n{d{b}}}{{B`{EOhBh}}}}{{n{d{b}}}{{B`{EOjBh}}}}{{n{d{b}}}{{B`{EOlBh}}}}{{n{d{b}}}{{B`{EOnBh}}}}{{n{d{b}}}{{B`{F@`Bh}}}}{{n{d{b}}}{{B`{F@bBh}}}}{{n{d{b}}}{{B`{F@dBh}}}}{{n{d{b}}}{{B`{F@fBh}}}}{{n{d{b}}}{{B`{F@hBh}}}}{{n{d{b}}}{{B`{F@jBh}}}}{{n{d{b}}}{{B`{F@lBh}}}}{{n{d{b}}}{{B`{F@nBh}}}}{{n{d{b}}}{{B`{FA`Bh}}}}{{n{d{b}}}{{B`{FAbBh}}}}{{n{d{b}}}{{B`{FAdBh}}}}{{n{d{b}}}{{B`{FAfBh}}}}{{n{d{b}}}{{B`{FAhBh}}}}{{n{d{b}}}{{B`{FAjBh}}}}{{n{d{b}}}{{B`{FAlBh}}}}{{n{d{b}}}{{B`{FAnBh}}}}{{n{d{b}}}{{B`{FB`Bh}}}}{{n{d{b}}}{{B`{FBbBh}}}}{{n{d{b}}}{{B`{FBdBh}}}}{{n{d{b}}}{{B`{FBfBh}}}}{{n{d{b}}}{{B`{FBhBh}}}}{c{{B`{DFn}}}Bj}{c{{B`{DG`}}}Bj}{c{{B`{DGb}}}Bj}{c{{B`{DGd}}}Bj}{c{{B`{DGf}}}Bj}{c{{B`{DGh}}}Bj}{c{{B`{DGj}}}Bj}{c{{B`{DGl}}}Bj}{c{{B`{DGn}}}Bj}{c{{B`{DH`}}}Bj}{c{{B`{DHb}}}Bj}{c{{B`{DHd}}}Bj}{c{{B`{DHf}}}Bj}{c{{B`{DHh}}}Bj}{c{{B`{DHj}}}Bj}{c{{B`{DHl}}}Bj}{c{{B`{DHn}}}Bj}{c{{B`{DI`}}}Bj}{c{{B`{DIb}}}Bj}{c{{B`{DId}}}Bj}{c{{B`{DIf}}}Bj}{c{{B`{DIh}}}Bj}{c{{B`{DIj}}}Bj}{c{{B`{DIl}}}Bj}{c{{B`{DIn}}}Bj}{c{{B`{DJ`}}}Bj}{c{{B`{DJb}}}Bj}{c{{B`{DJd}}}Bj}{c{{B`{DJf}}}Bj}{c{{B`{DJh}}}Bj}{c{{B`{DJj}}}Bj}{c{{B`{DJl}}}Bj}{c{{B`{DJn}}}Bj}{c{{B`{DK`}}}Bj}{c{{B`{DKb}}}Bj}{c{{B`{DKd}}}Bj}{c{{B`{DKf}}}Bj}{c{{B`{DKh}}}Bj}{c{{B`{DKj}}}Bj}{c{{B`{DKl}}}Bj}{c{{B`{DKn}}}Bj}{c{{B`{DL`}}}Bj}{c{{B`{DLb}}}Bj}{c{{B`{DLd}}}Bj}{c{{B`{DLf}}}Bj}{c{{B`{DLh}}}Bj}{c{{B`{DLj}}}Bj}{c{{B`{DLl}}}Bj}{c{{B`{DLn}}}Bj}{c{{B`{DM`}}}Bj}{c{{B`{DMb}}}Bj}{c{{B`{DMd}}}Bj}{c{{B`{DMf}}}Bj}{c{{B`{DMh}}}Bj}{c{{B`{DMj}}}Bj}{c{{B`{DMl}}}Bj}{c{{B`{DMn}}}Bj}{c{{B`{DN`}}}Bj}{c{{B`{DNb}}}Bj}{c{{B`{DNd}}}Bj}{c{{B`{DNf}}}Bj}{c{{B`{DNh}}}Bj}{c{{B`{DNj}}}Bj}{c{{B`{DNl}}}Bj}{c{{B`{DNn}}}Bj}{c{{B`{DO`}}}Bj}{c{{B`{DOb}}}Bj}{c{{B`{DOd}}}Bj}{c{{B`{DOf}}}Bj}{c{{B`{DOh}}}Bj}{c{{B`{DOj}}}Bj}{c{{B`{DOl}}}Bj}{c{{B`{DOn}}}Bj}{c{{B`{E@`}}}Bj}{c{{B`{E@b}}}Bj}{c{{B`{E@d}}}Bj}{c{{B`{E@f}}}Bj}{c{{B`{E@h}}}Bj}{c{{B`{E@j}}}Bj}{c{{B`{E@l}}}Bj}{c{{B`{E@n}}}Bj}{c{{B`{EA`}}}Bj}{c{{B`{EAb}}}Bj}{c{{B`{EAd}}}Bj}{c{{B`{EAf}}}Bj}{c{{B`{EAh}}}Bj}{c{{B`{EAj}}}Bj}{c{{B`{EAl}}}Bj}{c{{B`{EAn}}}Bj}{c{{B`{EB`}}}Bj}{c{{B`{EBb}}}Bj}{c{{B`{EBd}}}Bj}{c{{B`{EBf}}}Bj}{c{{B`{EBh}}}Bj}{c{{B`{EBj}}}Bj}{c{{B`{EBl}}}Bj}{c{{B`{EBn}}}Bj}{c{{B`{EC`}}}Bj}{c{{B`{ECb}}}Bj}{c{{B`{ECd}}}Bj}{c{{B`{ECf}}}Bj}{c{{B`{ECh}}}Bj}{c{{B`{ECj}}}Bj}{c{{B`{ECl}}}Bj}{c{{B`{ECn}}}Bj}{c{{B`{ED`}}}Bj}{c{{B`{EDb}}}Bj}{c{{B`{EDd}}}Bj}{c{{B`{EDf}}}Bj}{c{{B`{EDh}}}Bj}{c{{B`{EDj}}}Bj}{c{{B`{EDl}}}Bj}{c{{B`{EDn}}}Bj}{c{{B`{EE`}}}Bj}{c{{B`{EEb}}}Bj}{c{{B`{EEd}}}Bj}{c{{B`{EEf}}}Bj}{c{{B`{EEh}}}Bj}{c{{B`{EEj}}}Bj}{c{{B`{EEl}}}Bj}{c{{B`{EEn}}}Bj}{c{{B`{EF`}}}Bj}{c{{B`{EFb}}}Bj}{c{{B`{EFd}}}Bj}{c{{B`{EFf}}}Bj}{c{{B`{EFh}}}Bj}{c{{B`{EFj}}}Bj}{c{{B`{EFl}}}Bj}{c{{B`{EFn}}}Bj}{c{{B`{EG`}}}Bj}{c{{B`{EGb}}}Bj}{c{{B`{EGd}}}Bj}{c{{B`{EGf}}}Bj}{c{{B`{EGh}}}Bj}{c{{B`{EGj}}}Bj}{c{{B`{EGl}}}Bj}{c{{B`{EGn}}}Bj}{c{{B`{EH`}}}Bj}{c{{B`{EHb}}}Bj}{c{{B`{EHd}}}Bj}{c{{B`{EHf}}}Bj}{c{{B`{EHh}}}Bj}{c{{B`{EHj}}}Bj}{c{{B`{EHl}}}Bj}{c{{B`{EHn}}}Bj}{c{{B`{EI`}}}Bj}{c{{B`{EIb}}}Bj}{c{{B`{EId}}}Bj}{c{{B`{EIf}}}Bj}{c{{B`{EIh}}}Bj}{c{{B`{EIj}}}Bj}{c{{B`{EIl}}}Bj}{c{{B`{EIn}}}Bj}{c{{B`{EJ`}}}Bj}{c{{B`{EJb}}}Bj}{c{{B`{EJd}}}Bj}{c{{B`{EJf}}}Bj}{c{{B`{EJh}}}Bj}{c{{B`{EJj}}}Bj}{c{{B`{EJl}}}Bj}{c{{B`{EJn}}}Bj}{c{{B`{EK`}}}Bj}{c{{B`{EKb}}}Bj}{c{{B`{EKd}}}Bj}{c{{B`{EKf}}}Bj}{c{{B`{EKh}}}Bj}{c{{B`{EKj}}}Bj}{c{{B`{EKl}}}Bj}{c{{B`{EKn}}}Bj}{c{{B`{EL`}}}Bj}{c{{B`{ELb}}}Bj}{c{{B`{ELd}}}Bj}{c{{B`{ELf}}}Bj}{c{{B`{ELh}}}Bj}{c{{B`{ELj}}}Bj}{c{{B`{ELl}}}Bj}{c{{B`{ELn}}}Bj}{c{{B`{EM`}}}Bj}{c{{B`{EMb}}}Bj}{c{{B`{EMd}}}Bj}{c{{B`{EMf}}}Bj}{c{{B`{EMh}}}Bj}{c{{B`{EMj}}}Bj}{c{{B`{EMl}}}Bj}{c{{B`{EMn}}}Bj}{c{{B`{EN`}}}Bj}{c{{B`{ENb}}}Bj}{c{{B`{ENd}}}Bj}{c{{B`{ENf}}}Bj}{c{{B`{ENh}}}Bj}{c{{B`{ENj}}}Bj}{c{{B`{ENl}}}Bj}{c{{B`{ENn}}}Bj}{c{{B`{EO`}}}Bj}{c{{B`{EOb}}}Bj}{c{{B`{EOd}}}Bj}{c{{B`{EOf}}}Bj}{c{{B`{EOh}}}Bj}{c{{B`{EOj}}}Bj}{c{{B`{EOl}}}Bj}{c{{B`{EOn}}}Bj}{c{{B`{F@`}}}Bj}{c{{B`{F@b}}}Bj}{c{{B`{F@d}}}Bj}{c{{B`{F@f}}}Bj}{c{{B`{F@h}}}Bj}{c{{B`{F@j}}}Bj}{c{{B`{F@l}}}Bj}{c{{B`{F@n}}}Bj}{c{{B`{FA`}}}Bj}{c{{B`{FAb}}}Bj}{c{{B`{FAd}}}Bj}{c{{B`{FAf}}}Bj}{c{{B`{FAh}}}Bj}{c{{B`{FAj}}}Bj}{c{{B`{FAl}}}Bj}{c{{B`{FAn}}}Bj}{c{{B`{FB`}}}Bj}{c{{B`{FBb}}}Bj}{c{{B`{FBd}}}Bj}{c{{B`{FBf}}}Bj}{c{{B`{FBh}}}Bj}{c{{B`{FBj}}}Bj}{c{{B`{FBl}}}Bj}{c{{B`{FBn}}}Bj}{c{{B`{DCl}}}Bj}{c{{B`{FC`}}}Bj}{c{{B`{FCb}}}Bj}{c{{B`{FCd}}}Bj}{c{{B`{FCf}}}Bj}{c{{B`{FCh}}}Bj}{c{{B`{FCj}}}Bj}{c{{B`{FCl}}}Bj}{c{{B`{FCn}}}Bj}{c{{B`{FD`}}}Bj}{c{{B`{FDb}}}Bj}{c{{B`{FDd}}}Bj}{c{{B`{DCn}}}Bj}{c{{B`{FDf}}}Bj}{c{{B`{FDh}}}Bj}{c{{B`{FDj}}}Bj}{c{{B`{DD`}}}Bj}{c{{B`{FDl}}}Bj}{c{{B`{FDn}}}Bj}{c{{B`{FE`}}}Bj}{c{{B`{FEb}}}Bj}{c{{B`{FEd}}}Bj}{c{{B`{DDb}}}Bj}{c{{B`{FEf}}}Bj}{c{{B`{FEh}}}Bj}{c{{B`{DDd}}}Bj}{c{{B`{FEj}}}Bj}{c{{B`{FEl}}}Bj}{c{{B`{DDf}}}Bj}{c{{B`{FEn}}}Bj}{c{{B`{FF`}}}Bj}{c{{B`{DDh}}}Bj}{c{{B`{FFb}}}Bj}{c{{B`{FFd}}}Bj}{c{{B`{FFf}}}Bj}{c{{B`{DDj}}}Bj}{c{{B`{FFh}}}Bj}{c{{B`{FFj}}}Bj}{c{{B`{FFl}}}Bj}{c{{B`{FFn}}}Bj}{c{{B`{FG`}}}Bj}{c{{B`{FGb}}}Bj}{c{{B`{FGd}}}Bj}{c{{B`{DDl}}}Bj}{c{{B`{FGf}}}Bj}{c{{B`{FGh}}}Bj}{c{{B`{FGj}}}Bj}{c{{B`{FGl}}}Bj}{c{{B`{FGn}}}Bj}{c{{B`{FH`}}}Bj}{c{{B`{DDn}}}Bj}{c{{B`{FHb}}}Bj}{c{{B`{FHd}}}Bj}{c{{B`{FHf}}}Bj}{c{{B`{FHh}}}Bj}{c{{B`{FHj}}}Bj}{c{{B`{DE`}}}Bj}{c{{B`{FHl}}}Bj}{c{{B`{DEb}}}Bj}{c{{B`{FHn}}}Bj}{c{{B`{FI`}}}Bj}{c{{B`{FIb}}}Bj}{c{{B`{DEd}}}Bj}{c{{B`{FId}}}Bj}{c{{B`{FIf}}}Bj}{c{{B`{FIh}}}Bj}{c{{B`{DEf}}}Bj}{c{{B`{FIj}}}Bj}{c{{B`{FIl}}}Bj}{c{{B`{FIn}}}Bj}{c{{B`{DEh}}}Bj}{c{{B`{DEj}}}Bj}{c{{B`{FJ`}}}Bj}{c{{B`{FJb}}}Bj}{c{{B`{FJd}}}Bj}{c{{B`{FJf}}}Bj}{c{{B`{FJh}}}Bj}{c{{B`{FJj}}}Bj}{c{{B`{FJl}}}Bj}{c{{B`{FJn}}}Bj}{c{{B`{FK`}}}Bj}{c{{B`{FKb}}}Bj}{c{{B`{FKd}}}Bj}{c{{B`{FKf}}}Bj}{c{{B`{DEl}}}Bj}{c{{B`{FKh}}}Bj}{c{{B`{FKj}}}Bj}{c{{B`{FKl}}}Bj}{c{{B`{FKn}}}Bj}{c{{B`{FL`}}}Bj}{c{{B`{DEn}}}Bj}{c{{B`{FLb}}}Bj}{c{{B`{FLd}}}Bj}{c{{B`{FLf}}}Bj}{c{{B`{FLh}}}Bj}{c{{B`{FLj}}}Bj}{c{{B`{FLl}}}Bj}{c{{B`{FLn}}}Bj}{c{{B`{FM`}}}Bj}{c{{B`{FMb}}}Bj}{c{{B`{FMd}}}Bj}{c{{B`{DF`}}}Bj}{c{{B`{FMf}}}Bj}{c{{B`{FMh}}}Bj}{c{{B`{FMj}}}Bj}{c{{B`{FMl}}}Bj}{c{{B`{FMn}}}Bj}{c{{B`{FN`}}}Bj}{c{{B`{FNb}}}Bj}{c{{B`{FNd}}}Bj}{c{{B`{DFb}}}Bj}{c{{B`{FNf}}}Bj}{c{{B`{FNh}}}Bj}{c{{B`{FNj}}}Bj}{c{{B`{FNl}}}Bj}{c{{B`{FNn}}}Bj}{c{{B`{FO`}}}Bj}{c{{B`{FOb}}}Bj}{c{{B`{FOd}}}Bj}{c{{B`{FOf}}}Bj}{c{{B`{FOh}}}Bj}{c{{B`{FOj}}}Bj}{c{{B`{FOl}}}Bj}{c{{B`{FOn}}}Bj}{c{{B`{DFd}}}Bj}{c{{B`{G@`}}}Bj}{c{{B`{DFf}}}Bj}{c{{B`{DFh}}}Bj}{c{{B`{G@b}}}Bj}{c{{B`{G@d}}}Bj}{c{{B`{DFj}}}Bj}{c{{B`{DFl}}}Bj}{c{{B`{G@f}}}Bj}{c{{B`{G@h}}}Bj}```````````{{DClDCl}DCl}{{DCnDCn}DCn}{{DD`DD`}DD`}{{DDbDDb}DDb}{{DDdDDd}DDd}{{DDfDDf}DDf}{{DDhDDh}DDh}{{DDjDDj}DDj}{{DDlDDl}DDl}{{DDnDDn}DDn}{{DE`DE`}DE`}{{DEbDEb}DEb}{{DEdDEd}DEd}{{DEfDEf}DEf}{{DEhDEh}DEh}{{DEjDEj}DEj}{{DElDEl}DEl}{{DEnDEn}DEn}{{DF`DF`}DF`}{{DFbDFb}DFb}{{DFdDFd}DFd}{{DFfDFf}DFf}{{DFhDFh}DFh}{{DFjDFj}DFj}{{DFlDFl}DFl}```````````````{{}DCl}{{}DCn}{{}DD`}{{}DDb}{{}DDd}{{}DDf}{{}DDh}{{}DDj}{{}DDl}{{}DDn}{{}DE`}{{}DEb}{{}DEd}{{}DEf}{{}DEh}{{}DEj}{{}DEl}{{}DEn}{{}DF`}{{}DFb}{{}DFd}{{}DFf}{{}DFh}{{}DFj}{{}DFl}```````````````{{DFnDFn}Bl}{{DG`DG`}Bl}{{DGbDGb}Bl}{{DGdDGd}Bl}{{DGfDGf}Bl}{{DGhDGh}Bl}{{DGjDGj}Bl}{{DGlDGl}Bl}{{DGnDGn}Bl}{{DH`DH`}Bl}{{DHbDHb}Bl}{{DHdDHd}Bl}{{DHfDHf}Bl}{{DHhDHh}Bl}{{DHjDHj}Bl}{{DHlDHl}Bl}{{DHnDHn}Bl}{{DI`DI`}Bl}{{DIbDIb}Bl}{{DIdDId}Bl}{{DIfDIf}Bl}{{DIhDIh}Bl}{{DIjDIj}Bl}{{DIlDIl}Bl}{{DInDIn}Bl}{{DJ`DJ`}Bl}{{DJbDJb}Bl}{{DJdDJd}Bl}{{DJfDJf}Bl}{{DJhDJh}Bl}{{DJjDJj}Bl}{{DJlDJl}Bl}{{DJnDJn}Bl}{{DK`DK`}Bl}{{DKbDKb}Bl}{{DKdDKd}Bl}{{DKfDKf}Bl}{{DKhDKh}Bl}{{DKjDKj}Bl}{{DKlDKl}Bl}{{DKnDKn}Bl}{{DL`DL`}Bl}{{DLbDLb}Bl}{{DLdDLd}Bl}{{DLfDLf}Bl}{{DLhDLh}Bl}{{DLjDLj}Bl}{{DLlDLl}Bl}{{DLnDLn}Bl}{{DM`DM`}Bl}{{DMbDMb}Bl}{{DMdDMd}Bl}{{DMfDMf}Bl}{{DMhDMh}Bl}{{DMjDMj}Bl}{{DMlDMl}Bl}{{DMnDMn}Bl}{{DN`DN`}Bl}{{DNbDNb}Bl}{{DNdDNd}Bl}{{DNfDNf}Bl}{{DNhDNh}Bl}{{DNjDNj}Bl}{{DNlDNl}Bl}{{DNnDNn}Bl}{{DO`DO`}Bl}{{DObDOb}Bl}{{DOdDOd}Bl}{{DOfDOf}Bl}{{DOhDOh}Bl}{{DOjDOj}Bl}{{DOlDOl}Bl}{{DOnDOn}Bl}{{E@`E@`}Bl}{{E@bE@b}Bl}{{E@dE@d}Bl}{{E@fE@f}Bl}{{E@hE@h}Bl}{{E@jE@j}Bl}{{E@lE@l}Bl}{{E@nE@n}Bl}{{EA`EA`}Bl}{{EAbEAb}Bl}{{EAdEAd}Bl}{{EAfEAf}Bl}{{EAhEAh}Bl}{{EAjEAj}Bl}{{EAlEAl}Bl}{{EAnEAn}Bl}{{EB`EB`}Bl}{{EBbEBb}Bl}{{EBdEBd}Bl}{{EBfEBf}Bl}{{EBhEBh}Bl}{{EBjEBj}Bl}{{EBlEBl}Bl}{{EBnEBn}Bl}{{EC`EC`}Bl}{{ECbECb}Bl}{{ECdECd}Bl}{{ECfECf}Bl}{{EChECh}Bl}{{ECjECj}Bl}{{EClECl}Bl}{{ECnECn}Bl}{{ED`ED`}Bl}{{EDbEDb}Bl}{{EDdEDd}Bl}{{EDfEDf}Bl}{{EDhEDh}Bl}{{EDjEDj}Bl}{{EDlEDl}Bl}{{EDnEDn}Bl}{{EE`EE`}Bl}{{EEbEEb}Bl}{{EEdEEd}Bl}{{EEfEEf}Bl}{{EEhEEh}Bl}{{EEjEEj}Bl}{{EElEEl}Bl}{{EEnEEn}Bl}{{EF`EF`}Bl}{{EFbEFb}Bl}{{EFdEFd}Bl}{{EFfEFf}Bl}{{EFhEFh}Bl}{{EFjEFj}Bl}{{EFlEFl}Bl}{{EFnEFn}Bl}{{EG`EG`}Bl}{{EGbEGb}Bl}{{EGdEGd}Bl}{{EGfEGf}Bl}{{EGhEGh}Bl}{{EGjEGj}Bl}{{EGlEGl}Bl}{{EGnEGn}Bl}{{EH`EH`}Bl}{{EHbEHb}Bl}{{EHdEHd}Bl}{{EHfEHf}Bl}{{EHhEHh}Bl}{{EHjEHj}Bl}{{EHlEHl}Bl}{{EHnEHn}Bl}{{EI`EI`}Bl}{{EIbEIb}Bl}{{EIdEId}Bl}{{EIfEIf}Bl}{{EIhEIh}Bl}{{EIjEIj}Bl}{{EIlEIl}Bl}{{EInEIn}Bl}{{EJ`EJ`}Bl}{{EJbEJb}Bl}{{EJdEJd}Bl}{{EJfEJf}Bl}{{EJhEJh}Bl}{{EJjEJj}Bl}{{EJlEJl}Bl}{{EJnEJn}Bl}{{EK`EK`}Bl}{{EKbEKb}Bl}{{EKdEKd}Bl}{{EKfEKf}Bl}{{EKhEKh}Bl}{{EKjEKj}Bl}{{EKlEKl}Bl}{{EKnEKn}Bl}{{EL`EL`}Bl}{{ELbELb}Bl}{{ELdELd}Bl}{{ELfELf}Bl}{{ELhELh}Bl}{{ELjELj}Bl}{{ELlELl}Bl}{{ELnELn}Bl}{{EM`EM`}Bl}{{EMbEMb}Bl}{{EMdEMd}Bl}{{EMfEMf}Bl}{{EMhEMh}Bl}{{EMjEMj}Bl}{{EMlEMl}Bl}{{EMnEMn}Bl}{{EN`EN`}Bl}{{ENbENb}Bl}{{ENdENd}Bl}{{ENfENf}Bl}{{ENhENh}Bl}{{ENjENj}Bl}{{ENlENl}Bl}{{ENnENn}Bl}{{EO`EO`}Bl}{{EObEOb}Bl}{{EOdEOd}Bl}{{EOfEOf}Bl}{{EOhEOh}Bl}{{EOjEOj}Bl}{{EOlEOl}Bl}{{EOnEOn}Bl}{{F@`F@`}Bl}{{F@bF@b}Bl}{{F@dF@d}Bl}{{F@fF@f}Bl}{{F@hF@h}Bl}{{F@jF@j}Bl}{{F@lF@l}Bl}{{F@nF@n}Bl}{{FA`FA`}Bl}{{FAbFAb}Bl}{{FAdFAd}Bl}{{FAfFAf}Bl}{{FAhFAh}Bl}{{FAjFAj}Bl}{{FAlFAl}Bl}{{FAnFAn}Bl}{{FB`FB`}Bl}{{FBbFBb}Bl}{{FBdFBd}Bl}{{FBfFBf}Bl}{{FBhFBh}Bl}{{FBjFBj}Bl}{{FBlFBl}Bl}{{FBnFBn}Bl}{{DClDCl}Bl}{{FC`FC`}Bl}{{FCbFCb}Bl}{{FCdFCd}Bl}{{FCfFCf}Bl}{{FChFCh}Bl}{{FCjFCj}Bl}{{FClFCl}Bl}{{FCnFCn}Bl}{{FD`FD`}Bl}{{FDbFDb}Bl}{{FDdFDd}Bl}{{DCnDCn}Bl}{{FDfFDf}Bl}{{FDhFDh}Bl}{{FDjFDj}Bl}{{DD`DD`}Bl}{{FDlFDl}Bl}{{FDnFDn}Bl}{{FE`FE`}Bl}{{FEbFEb}Bl}{{FEdFEd}Bl}{{DDbDDb}Bl}{{FEfFEf}Bl}{{FEhFEh}Bl}{{DDdDDd}Bl}{{FEjFEj}Bl}{{FElFEl}Bl}{{DDfDDf}Bl}{{FEnFEn}Bl}{{FF`FF`}Bl}{{DDhDDh}Bl}{{FFbFFb}Bl}{{FFdFFd}Bl}{{FFfFFf}Bl}{{DDjDDj}Bl}{{FFhFFh}Bl}{{FFjFFj}Bl}{{FFlFFl}Bl}{{FFnFFn}Bl}{{FG`FG`}Bl}{{FGbFGb}Bl}{{FGdFGd}Bl}{{DDlDDl}Bl}{{FGfFGf}Bl}{{FGhFGh}Bl}{{FGjFGj}Bl}{{FGlFGl}Bl}{{FGnFGn}Bl}{{FH`FH`}Bl}{{DDnDDn}Bl}{{FHbFHb}Bl}{{FHdFHd}Bl}{{FHfFHf}Bl}{{FHhFHh}Bl}{{FHjFHj}Bl}{{DE`DE`}Bl}{{FHlFHl}Bl}{{DEbDEb}Bl}{{FHnFHn}Bl}{{FI`FI`}Bl}{{FIbFIb}Bl}{{DEdDEd}Bl}{{FIdFId}Bl}{{FIfFIf}Bl}{{FIhFIh}Bl}{{DEfDEf}Bl}{{FIjFIj}Bl}{{FIlFIl}Bl}{{FInFIn}Bl}{{DEhDEh}Bl}{{DEjDEj}Bl}{{FJ`FJ`}Bl}{{FJbFJb}Bl}{{FJdFJd}Bl}{{FJfFJf}Bl}{{FJhFJh}Bl}{{FJjFJj}Bl}{{FJlFJl}Bl}{{FJnFJn}Bl}{{FK`FK`}Bl}{{FKbFKb}Bl}{{FKdFKd}Bl}{{FKfFKf}Bl}{{DElDEl}Bl}{{FKhFKh}Bl}{{FKjFKj}Bl}{{FKlFKl}Bl}{{FKnFKn}Bl}{{FL`FL`}Bl}{{DEnDEn}Bl}{{FLbFLb}Bl}{{FLdFLd}Bl}{{FLfFLf}Bl}{{FLhFLh}Bl}{{FLjFLj}Bl}{{FLlFLl}Bl}{{FLnFLn}Bl}{{FM`FM`}Bl}{{FMbFMb}Bl}{{FMdFMd}Bl}{{DF`DF`}Bl}{{FMfFMf}Bl}{{FMhFMh}Bl}{{FMjFMj}Bl}{{FMlFMl}Bl}{{FMnFMn}Bl}{{FN`FN`}Bl}{{FNbFNb}Bl}{{FNdFNd}Bl}{{DFbDFb}Bl}{{FNfFNf}Bl}{{FNhFNh}Bl}{{FNjFNj}Bl}{{FNlFNl}Bl}{{FNnFNn}Bl}{{FO`FO`}Bl}{{FObFOb}Bl}{{FOdFOd}Bl}{{FOfFOf}Bl}{{FOhFOh}Bl}{{FOjFOj}Bl}{{FOlFOl}Bl}{{FOnFOn}Bl}{{DFdDFd}Bl}{{G@`G@`}Bl}{{DFfDFf}Bl}{{DFhDFh}Bl}{{G@bG@b}Bl}{{G@dG@d}Bl}{{DFjDFj}Bl}{{DFlDFl}Bl}{{G@fG@f}Bl}{{G@hG@h}Bl}`````````````{{DClc}Af{{DBb{}{{DB`{DCl}}}}}}{{DCnc}Af{{DBb{}{{DB`{DCn}}}}}}{{DD`c}Af{{DBb{}{{DB`{DD`}}}}}}{{DDbc}Af{{DBb{}{{DB`{DDb}}}}}}{{DDdc}Af{{DBb{}{{DB`{DDd}}}}}}{{DDfc}Af{{DBb{}{{DB`{DDf}}}}}}{{DDhc}Af{{DBb{}{{DB`{DDh}}}}}}{{DDjc}Af{{DBb{}{{DB`{DDj}}}}}}{{DDlc}Af{{DBb{}{{DB`{DDl}}}}}}{{DDnc}Af{{DBb{}{{DB`{DDn}}}}}}{{DE`c}Af{{DBb{}{{DB`{DE`}}}}}}{{DEbc}Af{{DBb{}{{DB`{DEb}}}}}}{{DEdc}Af{{DBb{}{{DB`{DEd}}}}}}{{DEfc}Af{{DBb{}{{DB`{DEf}}}}}}{{DEhc}Af{{DBb{}{{DB`{DEh}}}}}}{{DEjc}Af{{DBb{}{{DB`{DEj}}}}}}{{DElc}Af{{DBb{}{{DB`{DEl}}}}}}{{DEnc}Af{{DBb{}{{DB`{DEn}}}}}}{{DF`c}Af{{DBb{}{{DB`{DF`}}}}}}{{DFbc}Af{{DBb{}{{DB`{DFb}}}}}}{{DFdc}Af{{DBb{}{{DB`{DFd}}}}}}{{DFfc}Af{{DBb{}{{DB`{DFf}}}}}}{{DFhc}Af{{DBb{}{{DB`{DFh}}}}}}{{DFjc}Af{{DBb{}{{DB`{DFj}}}}}}{{DFlc}Af{{DBb{}{{DB`{DFl}}}}}}{Bbb}`````````````````````````````````````````````````{{DFnBn}DBd}{{DG`Bn}DBd}{{DGbBn}DBd}{{DGdBn}DBd}{{DGfBn}DBd}{{DGhBn}DBd}{{DGjBn}DBd}{{DGlBn}DBd}{{DGnBn}DBd}{{DH`Bn}DBd}{{DHbBn}DBd}{{DHdBn}DBd}{{DHfBn}DBd}{{DHhBn}DBd}{{DHjBn}DBd}{{DHlBn}DBd}{{DHnBn}DBd}{{DI`Bn}DBd}{{DIbBn}DBd}{{DIdBn}DBd}{{DIfBn}DBd}{{DIhBn}DBd}{{DIjBn}DBd}{{DIlBn}DBd}{{DInBn}DBd}{{DJ`Bn}DBd}{{DJbBn}DBd}{{DJdBn}DBd}{{DJfBn}DBd}{{DJhBn}DBd}{{DJjBn}DBd}{{DJlBn}DBd}{{DJnBn}DBd}{{DK`Bn}DBd}{{DKbBn}DBd}{{DKdBn}DBd}{{DKfBn}DBd}{{DKhBn}DBd}{{DKjBn}DBd}{{DKlBn}DBd}{{DKnBn}DBd}{{DL`Bn}DBd}{{DLbBn}DBd}{{DLdBn}DBd}{{DLfBn}DBd}{{DLhBn}DBd}{{DLjBn}DBd}{{DLlBn}DBd}{{DLnBn}DBd}{{DM`Bn}DBd}{{DMbBn}DBd}{{DMdBn}DBd}{{DMfBn}DBd}{{DMhBn}DBd}{{DMjBn}DBd}{{DMlBn}DBd}{{DMnBn}DBd}{{DN`Bn}DBd}{{DNbBn}DBd}{{DNdBn}DBd}{{DNfBn}DBd}{{DNhBn}DBd}{{DNjBn}DBd}{{DNlBn}DBd}{{DNnBn}DBd}{{DO`Bn}DBd}{{DObBn}DBd}{{DOdBn}DBd}{{DOfBn}DBd}{{DOhBn}DBd}{{DOjBn}DBd}{{DOlBn}DBd}{{DOnBn}DBd}{{E@`Bn}DBd}{{E@bBn}DBd}{{E@dBn}DBd}{{E@fBn}DBd}{{E@hBn}DBd}{{E@jBn}DBd}{{E@lBn}DBd}{{E@nBn}DBd}{{EA`Bn}DBd}{{EAbBn}DBd}{{EAdBn}DBd}{{EAfBn}DBd}{{EAhBn}DBd}{{EAjBn}DBd}{{EAlBn}DBd}{{EAnBn}DBd}{{EB`Bn}DBd}{{EBbBn}DBd}{{EBdBn}DBd}{{EBfBn}DBd}{{EBhBn}DBd}{{EBjBn}DBd}{{EBlBn}DBd}{{EBnBn}DBd}{{EC`Bn}DBd}{{ECbBn}DBd}{{ECdBn}DBd}{{ECfBn}DBd}{{EChBn}DBd}{{ECjBn}DBd}{{EClBn}DBd}{{ECnBn}DBd}{{ED`Bn}DBd}{{EDbBn}DBd}{{EDdBn}DBd}{{EDfBn}DBd}{{EDhBn}DBd}{{EDjBn}DBd}{{EDlBn}DBd}{{EDnBn}DBd}{{EE`Bn}DBd}{{EEbBn}DBd}{{EEdBn}DBd}{{EEfBn}DBd}{{EEhBn}DBd}{{EEjBn}DBd}{{EElBn}DBd}{{EEnBn}DBd}{{EF`Bn}DBd}{{EFbBn}DBd}{{EFdBn}DBd}{{EFfBn}DBd}{{EFhBn}DBd}{{EFjBn}DBd}{{EFlBn}DBd}{{EFnBn}DBd}{{EG`Bn}DBd}{{EGbBn}DBd}{{EGdBn}DBd}{{EGfBn}DBd}{{EGhBn}DBd}{{EGjBn}DBd}{{EGlBn}DBd}{{EGnBn}DBd}{{EH`Bn}DBd}{{EHbBn}DBd}{{EHdBn}DBd}{{EHfBn}DBd}{{EHhBn}DBd}{{EHjBn}DBd}{{EHlBn}DBd}{{EHnBn}DBd}{{EI`Bn}DBd}{{EIbBn}DBd}{{EIdBn}DBd}{{EIfBn}DBd}{{EIhBn}DBd}{{EIjBn}DBd}{{EIlBn}DBd}{{EInBn}DBd}{{EJ`Bn}DBd}{{EJbBn}DBd}{{EJdBn}DBd}{{EJfBn}DBd}{{EJhBn}DBd}{{EJjBn}DBd}{{EJlBn}DBd}{{EJnBn}DBd}{{EK`Bn}DBd}{{EKbBn}DBd}{{EKdBn}DBd}{{EKfBn}DBd}{{EKhBn}DBd}{{EKjBn}DBd}{{EKlBn}DBd}{{EKnBn}DBd}{{EL`Bn}DBd}{{ELbBn}DBd}{{ELdBn}DBd}{{ELfBn}DBd}{{ELhBn}DBd}{{ELjBn}DBd}{{ELlBn}DBd}{{ELnBn}DBd}{{EM`Bn}DBd}{{EMbBn}DBd}{{EMdBn}DBd}{{EMfBn}DBd}{{EMhBn}DBd}{{EMjBn}DBd}{{EMlBn}DBd}{{EMnBn}DBd}{{EN`Bn}DBd}{{ENbBn}DBd}{{ENdBn}DBd}{{ENfBn}DBd}{{ENhBn}DBd}{{ENjBn}DBd}{{ENlBn}DBd}{{ENnBn}DBd}{{EO`Bn}DBd}{{EObBn}DBd}{{EOdBn}DBd}{{EOfBn}DBd}{{EOhBn}DBd}{{EOjBn}DBd}{{EOlBn}DBd}{{EOnBn}DBd}{{F@`Bn}DBd}{{F@bBn}DBd}{{F@dBn}DBd}{{F@fBn}DBd}{{F@hBn}DBd}{{F@jBn}DBd}{{F@lBn}DBd}{{F@nBn}DBd}{{FA`Bn}DBd}{{FAbBn}DBd}{{FAdBn}DBd}{{FAfBn}DBd}{{FAhBn}DBd}{{FAjBn}DBd}{{FAlBn}DBd}{{FAnBn}DBd}{{FB`Bn}DBd}{{FBbBn}DBd}{{FBdBn}DBd}{{FBfBn}DBd}{{FBhBn}DBd}{{FBjBn}DBd}{{FBlBn}DBd}{{FBnBn}DBd}{{DClBn}DBd}0000{{FC`Bn}DBd}{{FCbBn}DBd}{{FCdBn}DBd}{{FCfBn}DBd}{{FChBn}DBd}{{FCjBn}DBd}{{FClBn}DBd}{{FCnBn}DBd}{{FD`Bn}DBd}{{FDbBn}DBd}{{FDdBn}DBd}{{DCnBn}DBd}0000{{FDfBn}DBd}{{FDhBn}DBd}{{FDjBn}DBd}{{DD`Bn}DBd}0000{{FDlBn}DBd}{{FDnBn}DBd}{{FE`Bn}DBd}{{FEbBn}DBd}{{FEdBn}DBd}{{DDbBn}DBd}0000{{FEfBn}DBd}{{FEhBn}DBd}{{DDdBn}DBd}0000{{FEjBn}DBd}{{FElBn}DBd}{{DDfBn}DBd}0000{{FEnBn}DBd}{{FF`Bn}DBd}{{DDhBn}DBd}0000{{FFbBn}DBd}{{FFdBn}DBd}{{FFfBn}DBd}{{DDjBn}DBd}0000{{FFhBn}DBd}{{FFjBn}DBd}{{FFlBn}DBd}{{FFnBn}DBd}{{FG`Bn}DBd}{{FGbBn}DBd}{{FGdBn}DBd}{{DDlBn}DBd}0000{{FGfBn}DBd}{{FGhBn}DBd}{{FGjBn}DBd}{{FGlBn}DBd}{{FGnBn}DBd}{{FH`Bn}DBd}{{DDnBn}DBd}0000{{FHbBn}DBd}{{FHdBn}DBd}{{FHfBn}DBd}{{FHhBn}DBd}{{FHjBn}DBd}{{DE`Bn}DBd}0000{{FHlBn}DBd}{{DEbBn}DBd}0000{{FHnBn}DBd}{{FI`Bn}DBd}{{FIbBn}DBd}{{DEdBn}DBd}0000{{FIdBn}DBd}{{FIfBn}DBd}{{FIhBn}DBd}{{DEfBn}DBd}0000{{FIjBn}DBd}{{FIlBn}DBd}{{FInBn}DBd}{{DEhBn}DBd}0000{{DEjBn}DBd}0000{{FJ`Bn}DBd}{{FJbBn}DBd}{{FJdBn}DBd}{{FJfBn}DBd}{{FJhBn}DBd}{{FJjBn}DBd}{{FJlBn}DBd}{{FJnBn}DBd}{{FK`Bn}DBd}{{FKbBn}DBd}{{FKdBn}DBd}{{FKfBn}DBd}{{DElBn}DBd}0000{{FKhBn}DBd}{{FKjBn}DBd}{{FKlBn}DBd}{{FKnBn}DBd}{{FL`Bn}DBd}{{DEnBn}DBd}0000{{FLbBn}DBd}{{FLdBn}DBd}{{FLfBn}DBd}{{FLhBn}DBd}{{FLjBn}DBd}{{FLlBn}DBd}{{FLnBn}DBd}{{FM`Bn}DBd}{{FMbBn}DBd}{{FMdBn}DBd}{{DF`Bn}DBd}0000{{FMfBn}DBd}{{FMhBn}DBd}{{FMjBn}DBd}{{FMlBn}DBd}{{FMnBn}DBd}{{FN`Bn}DBd}{{FNbBn}DBd}{{FNdBn}DBd}{{DFbBn}DBd}0000{{FNfBn}DBd}{{FNhBn}DBd}{{FNjBn}DBd}{{FNlBn}DBd}{{FNnBn}DBd}{{FO`Bn}DBd}{{FObBn}DBd}{{FOdBn}DBd}{{FOfBn}DBd}{{FOhBn}DBd}{{FOjBn}DBd}{{FOlBn}DBd}{{FOnBn}DBd}{{DFdBn}DBd}0000{{G@`Bn}DBd}{{DFfBn}DBd}0000{{DFhBn}DBd}0000{{G@bBn}DBd}{{G@dBn}DBd}{{DFjBn}DBd}0000{{DFlBn}DBd}0000{{G@fBn}DBd}{{G@hBn}DBd}``````````````{cc{}}0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{Bb{{DBf{DCl}}}}{Bb{{DBf{DCn}}}}{f{{DBf{DD`}}}}{f{{DBf{DDb}}}}{Hh{{DBf{DDd}}}}{Bb{{DBf{DDf}}}}{f{{DBf{DDh}}}}{f{{DBf{DDj}}}}{f{{DBf{DDl}}}}{b{{DBf{DDn}}}}{Bb{{DBf{DE`}}}}{f{{DBf{DEb}}}}{Bb{{DBf{DEd}}}}{Bb{{DBf{DEf}}}}{Bb{{DBf{DEh}}}}{b{{DBf{DEj}}}}{f{{DBf{DEl}}}}{Hh{{DBf{DEn}}}}{f{{DBf{DF`}}}}{f{{DBf{DFb}}}}{f{{DBf{DFd}}}}{b{{DBf{DFf}}}}{b{{DBf{DFh}}}}{b{{DBf{DFj}}}}{f{{DBf{DFl}}}}{BbDCl}{BbDCn}{fDD`}{fDDb}{HhDDd}{BbDDf}{fDDh}{fDDj}{fDDl}{bDDn}{BbDE`}{fDEb}{BbDEd}{BbDEf}{BbDEh}{bDEj}{fDEl}{HhDEn}{fDF`}{fDFb}{fDFd}{bDFf}{bDFh}{bDFj}{fDFl}{BbDCl}{BbDCn}{fDD`}{fDDb}{HhDDd}{BbDDf}{fDDh}{fDDj}{fDDl}{bDDn}{BbDE`}{fDEb}{BbDEd}{BbDEf}{BbDEh}{bDEj}{fDEl}{HhDEn}{fDF`}{fDFb}{fDFd}{bDFf}{bDFh}{bDFj}{fDFl}{DBh{{DBf{FBj}}}}{DBh{{DBf{FBl}}}}{DBh{{DBf{FBn}}}}{DBh{{DBf{FC`}}}}{DBh{{DBf{FCb}}}}{DBh{{DBf{FCd}}}}{DBh{{DBf{FCf}}}}{DBh{{DBf{FCh}}}}{DBh{{DBf{FCj}}}}{DBh{{DBf{FCl}}}}{DBh{{DBf{FCn}}}}{DBh{{DBf{FD`}}}}{DBh{{DBf{FDb}}}}{DBh{{DBf{FDd}}}}{DBh{{DBf{FDf}}}}{DBh{{DBf{FDh}}}}{DBh{{DBf{FDj}}}}{DBh{{DBf{FDl}}}}{DBh{{DBf{FDn}}}}{DBh{{DBf{FE`}}}}{DBh{{DBf{FEb}}}}{DBh{{DBf{FEd}}}}{DBh{{DBf{FEf}}}}{DBh{{DBf{FEh}}}}{DBh{{DBf{FEj}}}}{DBh{{DBf{FEl}}}}{DBh{{DBf{FEn}}}}{DBh{{DBf{FF`}}}}{DBh{{DBf{FFb}}}}{DBh{{DBf{FFd}}}}{DBh{{DBf{FFf}}}}{DBh{{DBf{FFh}}}}{DBh{{DBf{FFj}}}}{DBh{{DBf{FFl}}}}{DBh{{DBf{FFn}}}}{DBh{{DBf{FG`}}}}{DBh{{DBf{FGb}}}}{DBh{{DBf{FGd}}}}{DBh{{DBf{FGf}}}}{DBh{{DBf{FGh}}}}{DBh{{DBf{FGj}}}}{DBh{{DBf{FGl}}}}{DBh{{DBf{FGn}}}}{DBh{{DBf{FH`}}}}{DBh{{DBf{FHb}}}}{DBh{{DBf{FHd}}}}{DBh{{DBf{FHf}}}}{DBh{{DBf{FHh}}}}{DBh{{DBf{FHj}}}}{DBh{{DBf{FHl}}}}{DBh{{DBf{FHn}}}}{DBh{{DBf{FI`}}}}{DBh{{DBf{FIb}}}}{DBh{{DBf{FId}}}}{DBh{{DBf{FIf}}}}{DBh{{DBf{FIh}}}}{DBh{{DBf{FIj}}}}{DBh{{DBf{FIl}}}}{DBh{{DBf{FIn}}}}{DBh{{DBf{FJ`}}}}{DBh{{DBf{FJb}}}}{DBh{{DBf{FJd}}}}{DBh{{DBf{FJf}}}}{DBh{{DBf{FJh}}}}{DBh{{DBf{FJj}}}}{DBh{{DBf{FJl}}}}{DBh{{DBf{FJn}}}}{DBh{{DBf{FK`}}}}{DBh{{DBf{FKb}}}}{DBh{{DBf{FKd}}}}{DBh{{DBf{FKf}}}}{DBh{{DBf{FKh}}}}{DBh{{DBf{FKj}}}}{DBh{{DBf{FKl}}}}{DBh{{DBf{FKn}}}}{DBh{{DBf{FL`}}}}{DBh{{DBf{FLb}}}}{DBh{{DBf{FLd}}}}{DBh{{DBf{FLf}}}}{DBh{{DBf{FLh}}}}{DBh{{DBf{FLj}}}}{DBh{{DBf{FLl}}}}{DBh{{DBf{FLn}}}}{DBh{{DBf{FM`}}}}{DBh{{DBf{FMb}}}}{DBh{{DBf{FMd}}}}{DBh{{DBf{FMf}}}}{DBh{{DBf{FMh}}}}{DBh{{DBf{FMj}}}}{DBh{{DBf{FMl}}}}{DBh{{DBf{FMn}}}}{DBh{{DBf{FN`}}}}{DBh{{DBf{FNb}}}}{DBh{{DBf{FNd}}}}{DBh{{DBf{FNf}}}}{DBh{{DBf{FNh}}}}{DBh{{DBf{FNj}}}}{DBh{{DBf{FNl}}}}{DBh{{DBf{FNn}}}}{DBh{{DBf{FO`}}}}{DBh{{DBf{FOb}}}}{DBh{{DBf{FOd}}}}{DBh{{DBf{FOf}}}}{DBh{{DBf{FOh}}}}{DBh{{DBf{FOj}}}}{DBh{{DBf{FOl}}}}{DBh{{DBf{FOn}}}}{DBh{{DBf{G@`}}}}{DBh{{DBf{G@b}}}}{DBh{{DBf{G@d}}}}{DBh{{DBf{G@f}}}}{DBh{{DBf{G@h}}}}{cDCl{{DBb{}{{DB`{DCl}}}}}}{cDCn{{DBb{}{{DB`{DCn}}}}}}{cDD`{{DBb{}{{DB`{DD`}}}}}}{cDDb{{DBb{}{{DB`{DDb}}}}}}{cDDd{{DBb{}{{DB`{DDd}}}}}}{cDDf{{DBb{}{{DB`{DDf}}}}}}{cDDh{{DBb{}{{DB`{DDh}}}}}}{cDDj{{DBb{}{{DB`{DDj}}}}}}{cDDl{{DBb{}{{DB`{DDl}}}}}}{cDDn{{DBb{}{{DB`{DDn}}}}}}{cDE`{{DBb{}{{DB`{DE`}}}}}}{cDEb{{DBb{}{{DB`{DEb}}}}}}{cDEd{{DBb{}{{DB`{DEd}}}}}}{cDEf{{DBb{}{{DB`{DEf}}}}}}{cDEh{{DBb{}{{DB`{DEh}}}}}}{cDEj{{DBb{}{{DB`{DEj}}}}}}{cDEl{{DBb{}{{DB`{DEl}}}}}}{cDEn{{DBb{}{{DB`{DEn}}}}}}{cDF`{{DBb{}{{DB`{DF`}}}}}}{cDFb{{DBb{}{{DB`{DFb}}}}}}{cDFd{{DBb{}{{DB`{DFd}}}}}}{cDFf{{DBb{}{{DB`{DFf}}}}}}{cDFh{{DBb{}{{DB`{DFh}}}}}}{cDFj{{DBb{}{{DB`{DFj}}}}}}{cDFl{{DBb{}{{DB`{DFl}}}}}}{Hh{{DBf{FBj}}}}{Hh{{DBf{FBl}}}}{Hh{{DBf{FBn}}}}{Hh{{DBf{FC`}}}}{Hh{{DBf{FCb}}}}{Hh{{DBf{FCd}}}}{Hh{{DBf{FCf}}}}{Hh{{DBf{FCh}}}}{Hh{{DBf{FCj}}}}{Hh{{DBf{FCl}}}}{Hh{{DBf{FCn}}}}{Hh{{DBf{FD`}}}}{Hh{{DBf{FDb}}}}{Hh{{DBf{FDd}}}}{Hh{{DBf{FDf}}}}{Hh{{DBf{FDh}}}}{Hh{{DBf{FDj}}}}{Hh{{DBf{FDl}}}}{Hh{{DBf{FDn}}}}{Hh{{DBf{FE`}}}}{Hh{{DBf{FEb}}}}{Hh{{DBf{FEd}}}}{Hh{{DBf{FEf}}}}{Hh{{DBf{FEh}}}}{Hh{{DBf{FEj}}}}{Hh{{DBf{FEl}}}}{Hh{{DBf{FEn}}}}{Hh{{DBf{FF`}}}}{Hh{{DBf{FFb}}}}{Hh{{DBf{FFd}}}}{Hh{{DBf{FFf}}}}{Hh{{DBf{FFh}}}}{Hh{{DBf{FFj}}}}{Hh{{DBf{FFl}}}}{Hh{{DBf{FFn}}}}{Hh{{DBf{FG`}}}}{Hh{{DBf{FGb}}}}{Hh{{DBf{FGd}}}}{Hh{{DBf{FGf}}}}{Hh{{DBf{FGh}}}}{Hh{{DBf{FGj}}}}{Hh{{DBf{FGl}}}}{Hh{{DBf{FGn}}}}{Hh{{DBf{FH`}}}}{Hh{{DBf{FHb}}}}{Hh{{DBf{FHd}}}}{Hh{{DBf{FHf}}}}{Hh{{DBf{FHh}}}}{Hh{{DBf{FHj}}}}{Hh{{DBf{FHl}}}}{Hh{{DBf{FHn}}}}{Hh{{DBf{FI`}}}}{Hh{{DBf{FIb}}}}{Hh{{DBf{FId}}}}{Hh{{DBf{FIf}}}}{Hh{{DBf{FIh}}}}{Hh{{DBf{FIj}}}}{Hh{{DBf{FIl}}}}{Hh{{DBf{FIn}}}}{Hh{{DBf{FJ`}}}}{Hh{{DBf{FJb}}}}{Hh{{DBf{FJd}}}}{Hh{{DBf{FJf}}}}{Hh{{DBf{FJh}}}}{Hh{{DBf{FJj}}}}{Hh{{DBf{FJl}}}}{Hh{{DBf{FJn}}}}{Hh{{DBf{FK`}}}}{Hh{{DBf{FKb}}}}{Hh{{DBf{FKd}}}}{Hh{{DBf{FKf}}}}{Hh{{DBf{FKh}}}}{Hh{{DBf{FKj}}}}{Hh{{DBf{FKl}}}}{Hh{{DBf{FKn}}}}{Hh{{DBf{FL`}}}}{Hh{{DBf{FLb}}}}{Hh{{DBf{FLd}}}}{Hh{{DBf{FLf}}}}{Hh{{DBf{FLh}}}}{Hh{{DBf{FLj}}}}{Hh{{DBf{FLl}}}}{Hh{{DBf{FLn}}}}{Hh{{DBf{FM`}}}}{Hh{{DBf{FMb}}}}{Hh{{DBf{FMd}}}}{Hh{{DBf{FMf}}}}{Hh{{DBf{FMh}}}}{Hh{{DBf{FMj}}}}{Hh{{DBf{FMl}}}}{Hh{{DBf{FMn}}}}{Hh{{DBf{FN`}}}}{Hh{{DBf{FNb}}}}{Hh{{DBf{FNd}}}}{Hh{{DBf{FNf}}}}{Hh{{DBf{FNh}}}}{Hh{{DBf{FNj}}}}{Hh{{DBf{FNl}}}}{Hh{{DBf{FNn}}}}{Hh{{DBf{FO`}}}}{Hh{{DBf{FOb}}}}{Hh{{DBf{FOd}}}}{Hh{{DBf{FOf}}}}{Hh{{DBf{FOh}}}}{Hh{{DBf{FOj}}}}{Hh{{DBf{FOl}}}}{Hh{{DBf{FOn}}}}{Hh{{DBf{G@`}}}}{Hh{{DBf{G@b}}}}{Hh{{DBf{G@d}}}}{Hh{{DBf{G@f}}}}{Hh{{DBf{G@h}}}}``````````````````````````````{{DClc}AfDBj}{{DCnc}AfDBj}{{DD`c}AfDBj}{{DDbc}AfDBj}{{DDdc}AfDBj}{{DDfc}AfDBj}{{DDhc}AfDBj}{{DDjc}AfDBj}{{DDlc}AfDBj}{{DDnc}AfDBj}{{DE`c}AfDBj}{{DEbc}AfDBj}{{DEdc}AfDBj}{{DEfc}AfDBj}{{DEhc}AfDBj}{{DEjc}AfDBj}{{DElc}AfDBj}{{DEnc}AfDBj}{{DF`c}AfDBj}{{DFbc}AfDBj}{{DFdc}AfDBj}{{DFfc}AfDBj}{{DFhc}AfDBj}{{DFjc}AfDBj}{{DFlc}AfDBj}```````````````````````````````````````````````````````````````{{DClDCl}Af}{{DCnDCn}Af}{{DD`DD`}Af}{{DDbDDb}Af}{{DDdDDd}Af}{{DDfDDf}Af}{{DDhDDh}Af}{{DDjDDj}Af}{{DDlDDl}Af}{{DDnDDn}Af}{{DE`DE`}Af}{{DEbDEb}Af}{{DEdDEd}Af}{{DEfDEf}Af}{{DEhDEh}Af}{{DEjDEj}Af}{{DElDEl}Af}{{DEnDEn}Af}{{DF`DF`}Af}{{DFbDFb}Af}{{DFdDFd}Af}{{DFfDFf}Af}{{DFhDFh}Af}{{DFjDFj}Af}{{DFlDFl}Af}``````````````{{DClDCl}DCl}{{DCnDCn}DCn}{{DD`DD`}DD`}{{DDbDDb}DDb}{{DDdDDd}DDd}{{DDfDDf}DDf}{{DDhDDh}DDh}{{DDjDDj}DDj}{{DDlDDl}DDl}{{DDnDDn}DDn}{{DE`DE`}DE`}{{DEbDEb}DEb}{{DEdDEd}DEd}{{DEfDEf}DEf}{{DEhDEh}DEh}{{DEjDEj}DEj}{{DElDEl}DEl}{{DEnDEn}DEn}{{DF`DF`}DF`}{{DFbDFb}DFb}{{DFdDFd}DFd}{{DFfDFf}DFf}{{DFhDFh}DFh}{{DFjDFj}DFj}{{DFlDFl}DFl}{{DClDCl}Bl}{{DCnDCn}Bl}{{DD`DD`}Bl}{{DDbDDb}Bl}{{DDdDDd}Bl}{{DDfDDf}Bl}{{DDhDDh}Bl}{{DDjDDj}Bl}{{DDlDDl}Bl}{{DDnDDn}Bl}{{DE`DE`}Bl}{{DEbDEb}Bl}{{DEdDEd}Bl}{{DEfDEf}Bl}{{DEhDEh}Bl}{{DEjDEj}Bl}{{DElDEl}Bl}{{DEnDEn}Bl}{{DF`DF`}Bl}{{DFbDFb}Bl}{{DFdDFd}Bl}{{DFfDFf}Bl}{{DFhDFh}Bl}{{DFjDFj}Bl}{{DFlDFl}Bl}`{ce{}{}}0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{DClBl}{DCnBl}{DD`Bl}{DDbBl}{DDdBl}{DDfBl}{DDhBl}{DDjBl}{DDlBl}{DDnBl}{DE`Bl}{DEbBl}{DEdBl}{DEfBl}{DEhBl}{DEjBl}{DElBl}{DEnBl}{DF`Bl}{DFbBl}{DFdBl}{DFfBl}{DFhBl}{DFjBl}{DFlBl}{DClBl}{DCnBl}{DD`Bl}{DDbBl}{DDdBl}{DDfBl}{DDhBl}{DDjBl}{DDlBl}{DDnBl}{DE`Bl}{DEbBl}{DEdBl}{DEfBl}{DEhBl}{DEjBl}{DElBl}{DEnBl}{DF`Bl}{DFbBl}{DFdBl}{DFfBl}{DFhBl}{DFjBl}{DFlBl}```````````````````````````````````````````````````````````````````````````````````````````````````````````````{DFnBb}`{Ah{{B`{BbAh}}}}{DFnAh}```````````````````````````````````````{DClDCl}{DCnDCn}{DD`DD`}{DDbDDb}{DDdDDd}{DDfDDf}{DDhDDh}{DDjDDj}{DDlDDl}{DDnDDn}{DE`DE`}{DEbDEb}{DEdDEd}{DEfDEf}{DEhDEh}{DEjDEj}{DElDEl}{DEnDEn}{DF`DF`}{DFbDFb}{DFdDFd}{DFfDFf}{DFhDFh}{DFjDFj}{DFlDFl}```````````````````````````````````````````````````````````````````````````````````````````{{nBb{d{b}}}{{B`{DFnBh}}}}{{DClDCl}{{DBf{DAn}}}}{{DCnDCn}{{DBf{DAn}}}}{{DD`DD`}{{DBf{DAn}}}}{{DDbDDb}{{DBf{DAn}}}}{{DDdDDd}{{DBf{DAn}}}}{{DDfDDf}{{DBf{DAn}}}}{{DDhDDh}{{DBf{DAn}}}}{{DDjDDj}{{DBf{DAn}}}}{{DDlDDl}{{DBf{DAn}}}}{{DDnDDn}{{DBf{DAn}}}}{{DE`DE`}{{DBf{DAn}}}}{{DEbDEb}{{DBf{DAn}}}}{{DEdDEd}{{DBf{DAn}}}}{{DEfDEf}{{DBf{DAn}}}}{{DEhDEh}{{DBf{DAn}}}}{{DEjDEj}{{DBf{DAn}}}}{{DElDEl}{{DBf{DAn}}}}{{DEnDEn}{{DBf{DAn}}}}{{DF`DF`}{{DBf{DAn}}}}{{DFbDFb}{{DBf{DAn}}}}{{DFdDFd}{{DBf{DAn}}}}{{DFfDFf}{{DBf{DAn}}}}{{DFhDFh}{{DBf{DAn}}}}{{DFjDFj}{{DBf{DAn}}}}{{DFlDFl}{{DBf{DAn}}}}`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{{DClDCl}Af}{{DCnDCn}Af}{{DD`DD`}Af}{{DDbDDb}Af}{{DDdDDd}Af}{{DDfDDf}Af}{{DDhDDh}Af}{{DDjDDj}Af}{{DDlDDl}Af}{{DDnDDn}Af}{{DE`DE`}Af}{{DEbDEb}Af}{{DEdDEd}Af}{{DEfDEf}Af}{{DEhDEh}Af}{{DEjDEj}Af}{{DElDEl}Af}{{DEnDEn}Af}{{DF`DF`}Af}{{DFbDFb}Af}{{DFdDFd}Af}{{DFfDFf}Af}{{DFhDFh}Af}{{DFjDFj}Af}{{DFlDFl}Af}`````````````````````````````````````````````````````````````````````````````````````````````````{{DFnn{d{b}}}Cl}{{DG`n{d{b}}}Cl}{{DGbn{d{b}}}Cl}{{DGdn{d{b}}}Cl}{{DGfn{d{b}}}Cl}{{DGhn{d{b}}}Cl}{{DGjn{d{b}}}Cl}{{DGln{d{b}}}Cl}{{DGnn{d{b}}}Cl}{{DH`n{d{b}}}Cl}{{DHbn{d{b}}}Cl}{{DHdn{d{b}}}Cl}{{DHfn{d{b}}}Cl}{{DHhn{d{b}}}Cl}{{DHjn{d{b}}}Cl}{{DHln{d{b}}}Cl}{{DHnn{d{b}}}Cl}{{DI`n{d{b}}}Cl}{{DIbn{d{b}}}Cl}{{DIdn{d{b}}}Cl}{{DIfn{d{b}}}Cl}{{DIhn{d{b}}}Cl}{{DIjn{d{b}}}Cl}{{DIln{d{b}}}Cl}{{DInn{d{b}}}Cl}{{DJ`n{d{b}}}Cl}{{DJbn{d{b}}}Cl}{{DJdn{d{b}}}Cl}{{DJfn{d{b}}}Cl}{{DJhn{d{b}}}Cl}{{DJjn{d{b}}}Cl}{{DJln{d{b}}}Cl}{{DJnn{d{b}}}Cl}{{DK`n{d{b}}}Cl}{{DKbn{d{b}}}Cl}{{DKdn{d{b}}}Cl}{{DKfn{d{b}}}Cl}{{DKhn{d{b}}}Cl}{{DKjn{d{b}}}Cl}{{DKln{d{b}}}Cl}{{DKnn{d{b}}}Cl}{{DL`n{d{b}}}Cl}{{DLbn{d{b}}}Cl}{{DLdn{d{b}}}Cl}{{DLfn{d{b}}}Cl}{{DLhn{d{b}}}Cl}{{DLjn{d{b}}}Cl}{{DLln{d{b}}}Cl}{{DLnn{d{b}}}Cl}{{DM`n{d{b}}}Cl}{{DMbn{d{b}}}Cl}{{DMdn{d{b}}}Cl}{{DMfn{d{b}}}Cl}{{DMhn{d{b}}}Cl}{{DMjn{d{b}}}Cl}{{DMln{d{b}}}Cl}{{DMnn{d{b}}}Cl}{{DN`n{d{b}}}Cl}{{DNbn{d{b}}}Cl}{{DNdn{d{b}}}Cl}{{DNfn{d{b}}}Cl}{{DNhn{d{b}}}Cl}{{DNjn{d{b}}}Cl}{{DNln{d{b}}}Cl}{{DNnn{d{b}}}Cl}{{DO`n{d{b}}}Cl}{{DObn{d{b}}}Cl}{{DOdn{d{b}}}Cl}{{DOfn{d{b}}}Cl}{{DOhn{d{b}}}Cl}{{DOjn{d{b}}}Cl}{{DOln{d{b}}}Cl}{{DOnn{d{b}}}Cl}{{E@`n{d{b}}}Cl}{{E@bn{d{b}}}Cl}{{E@dn{d{b}}}Cl}{{E@fn{d{b}}}Cl}{{E@hn{d{b}}}Cl}{{E@jn{d{b}}}Cl}{{E@ln{d{b}}}Cl}{{E@nn{d{b}}}Cl}{{EA`n{d{b}}}Cl}{{EAbn{d{b}}}Cl}{{EAdn{d{b}}}Cl}{{EAfn{d{b}}}Cl}{{EAhn{d{b}}}Cl}{{EAjn{d{b}}}Cl}{{EAln{d{b}}}Cl}{{EAnn{d{b}}}Cl}{{EB`n{d{b}}}Cl}{{EBbn{d{b}}}Cl}{{EBdn{d{b}}}Cl}{{EBfn{d{b}}}Cl}{{EBhn{d{b}}}Cl}{{EBjn{d{b}}}Cl}{{EBln{d{b}}}Cl}{{EBnn{d{b}}}Cl}{{EC`n{d{b}}}Cl}{{ECbn{d{b}}}Cl}{{ECdn{d{b}}}Cl}{{ECfn{d{b}}}Cl}{{EChn{d{b}}}Cl}{{ECjn{d{b}}}Cl}{{ECln{d{b}}}Cl}{{ECnn{d{b}}}Cl}{{ED`n{d{b}}}Cl}{{EDbn{d{b}}}Cl}{{EDdn{d{b}}}Cl}{{EDfn{d{b}}}Cl}{{EDhn{d{b}}}Cl}{{EDjn{d{b}}}Cl}{{EDln{d{b}}}Cl}{{EDnn{d{b}}}Cl}{{EE`n{d{b}}}Cl}{{EEbn{d{b}}}Cl}{{EEdn{d{b}}}Cl}{{EEfn{d{b}}}Cl}{{EEhn{d{b}}}Cl}{{EEjn{d{b}}}Cl}{{EEln{d{b}}}Cl}{{EEnn{d{b}}}Cl}{{EF`n{d{b}}}Cl}{{EFbn{d{b}}}Cl}{{EFdn{d{b}}}Cl}{{EFfn{d{b}}}Cl}{{EFhn{d{b}}}Cl}{{EFjn{d{b}}}Cl}{{EFln{d{b}}}Cl}{{EFnn{d{b}}}Cl}{{EG`n{d{b}}}Cl}{{EGbn{d{b}}}Cl}{{EGdn{d{b}}}Cl}{{EGfn{d{b}}}Cl}{{EGhn{d{b}}}Cl}{{EGjn{d{b}}}Cl}{{EGln{d{b}}}Cl}{{EGnn{d{b}}}Cl}{{EH`n{d{b}}}Cl}{{EHbn{d{b}}}Cl}{{EHdn{d{b}}}Cl}{{EHfn{d{b}}}Cl}{{EHhn{d{b}}}Cl}{{EHjn{d{b}}}Cl}{{EHln{d{b}}}Cl}{{EHnn{d{b}}}Cl}{{EI`n{d{b}}}Cl}{{EIbn{d{b}}}Cl}{{EIdn{d{b}}}Cl}{{EIfn{d{b}}}Cl}{{EIhn{d{b}}}Cl}{{EIjn{d{b}}}Cl}{{EIln{d{b}}}Cl}{{EInn{d{b}}}Cl}{{EJ`n{d{b}}}Cl}{{EJbn{d{b}}}Cl}{{EJdn{d{b}}}Cl}{{EJfn{d{b}}}Cl}{{EJhn{d{b}}}Cl}{{EJjn{d{b}}}Cl}{{EJln{d{b}}}Cl}{{EJnn{d{b}}}Cl}{{EK`n{d{b}}}Cl}{{EKbn{d{b}}}Cl}{{EKdn{d{b}}}Cl}{{EKfn{d{b}}}Cl}{{EKhn{d{b}}}Cl}{{EKjn{d{b}}}Cl}{{EKln{d{b}}}Cl}{{EKnn{d{b}}}Cl}{{EL`n{d{b}}}Cl}{{ELbn{d{b}}}Cl}{{ELdn{d{b}}}Cl}{{ELfn{d{b}}}Cl}{{ELhn{d{b}}}Cl}{{ELjn{d{b}}}Cl}{{ELln{d{b}}}Cl}{{ELnn{d{b}}}Cl}{{EM`n{d{b}}}Cl}{{EMbn{d{b}}}Cl}{{EMdn{d{b}}}Cl}{{EMfn{d{b}}}Cl}{{EMhn{d{b}}}Cl}{{EMjn{d{b}}}Cl}{{EMln{d{b}}}Cl}{{EMnn{d{b}}}Cl}{{EN`n{d{b}}}Cl}{{ENbn{d{b}}}Cl}{{ENdn{d{b}}}Cl}{{ENfn{d{b}}}Cl}{{ENhn{d{b}}}Cl}{{ENjn{d{b}}}Cl}{{ENln{d{b}}}Cl}{{ENnn{d{b}}}Cl}{{EO`n{d{b}}}Cl}{{EObn{d{b}}}Cl}{{EOdn{d{b}}}Cl}{{EOfn{d{b}}}Cl}{{EOhn{d{b}}}Cl}{{EOjn{d{b}}}Cl}{{EOln{d{b}}}Cl}{{EOnn{d{b}}}Cl}{{F@`n{d{b}}}Cl}{{F@bn{d{b}}}Cl}{{F@dn{d{b}}}Cl}{{F@fn{d{b}}}Cl}{{F@hn{d{b}}}Cl}{{F@jn{d{b}}}Cl}{{F@ln{d{b}}}Cl}{{F@nn{d{b}}}Cl}{{FA`n{d{b}}}Cl}{{FAbn{d{b}}}Cl}{{FAdn{d{b}}}Cl}{{FAfn{d{b}}}Cl}{{FAhn{d{b}}}Cl}{{FAjn{d{b}}}Cl}{{FAln{d{b}}}Cl}{{FAnn{d{b}}}Cl}{{FB`n{d{b}}}Cl}{{FBbn{d{b}}}Cl}{{FBdn{d{b}}}Cl}{{FBfn{d{b}}}Cl}{{FBhn{d{b}}}Cl}`{{DFnc}B`D`}{{DG`c}B`D`}{{DGbc}B`D`}{{DGdc}B`D`}{{DGfc}B`D`}{{DGhc}B`D`}{{DGjc}B`D`}{{DGlc}B`D`}{{DGnc}B`D`}{{DH`c}B`D`}{{DHbc}B`D`}{{DHdc}B`D`}{{DHfc}B`D`}{{DHhc}B`D`}{{DHjc}B`D`}{{DHlc}B`D`}{{DHnc}B`D`}{{DI`c}B`D`}{{DIbc}B`D`}{{DIdc}B`D`}{{DIfc}B`D`}{{DIhc}B`D`}{{DIjc}B`D`}{{DIlc}B`D`}{{DInc}B`D`}{{DJ`c}B`D`}{{DJbc}B`D`}{{DJdc}B`D`}{{DJfc}B`D`}{{DJhc}B`D`}{{DJjc}B`D`}{{DJlc}B`D`}{{DJnc}B`D`}{{DK`c}B`D`}{{DKbc}B`D`}{{DKdc}B`D`}{{DKfc}B`D`}{{DKhc}B`D`}{{DKjc}B`D`}{{DKlc}B`D`}{{DKnc}B`D`}{{DL`c}B`D`}{{DLbc}B`D`}{{DLdc}B`D`}{{DLfc}B`D`}{{DLhc}B`D`}{{DLjc}B`D`}{{DLlc}B`D`}{{DLnc}B`D`}{{DM`c}B`D`}{{DMbc}B`D`}{{DMdc}B`D`}{{DMfc}B`D`}{{DMhc}B`D`}{{DMjc}B`D`}{{DMlc}B`D`}{{DMnc}B`D`}{{DN`c}B`D`}{{DNbc}B`D`}{{DNdc}B`D`}{{DNfc}B`D`}{{DNhc}B`D`}{{DNjc}B`D`}{{DNlc}B`D`}{{DNnc}B`D`}{{DO`c}B`D`}{{DObc}B`D`}{{DOdc}B`D`}{{DOfc}B`D`}{{DOhc}B`D`}{{DOjc}B`D`}{{DOlc}B`D`}{{DOnc}B`D`}{{E@`c}B`D`}{{E@bc}B`D`}{{E@dc}B`D`}{{E@fc}B`D`}{{E@hc}B`D`}{{E@jc}B`D`}{{E@lc}B`D`}{{E@nc}B`D`}{{EA`c}B`D`}{{EAbc}B`D`}{{EAdc}B`D`}{{EAfc}B`D`}{{EAhc}B`D`}{{EAjc}B`D`}{{EAlc}B`D`}{{EAnc}B`D`}{{EB`c}B`D`}{{EBbc}B`D`}{{EBdc}B`D`}{{EBfc}B`D`}{{EBhc}B`D`}{{EBjc}B`D`}{{EBlc}B`D`}{{EBnc}B`D`}{{EC`c}B`D`}{{ECbc}B`D`}{{ECdc}B`D`}{{ECfc}B`D`}{{EChc}B`D`}{{ECjc}B`D`}{{EClc}B`D`}{{ECnc}B`D`}{{ED`c}B`D`}{{EDbc}B`D`}{{EDdc}B`D`}{{EDfc}B`D`}{{EDhc}B`D`}{{EDjc}B`D`}{{EDlc}B`D`}{{EDnc}B`D`}{{EE`c}B`D`}{{EEbc}B`D`}{{EEdc}B`D`}{{EEfc}B`D`}{{EEhc}B`D`}{{EEjc}B`D`}{{EElc}B`D`}{{EEnc}B`D`}{{EF`c}B`D`}{{EFbc}B`D`}{{EFdc}B`D`}{{EFfc}B`D`}{{EFhc}B`D`}{{EFjc}B`D`}{{EFlc}B`D`}{{EFnc}B`D`}{{EG`c}B`D`}{{EGbc}B`D`}{{EGdc}B`D`}{{EGfc}B`D`}{{EGhc}B`D`}{{EGjc}B`D`}{{EGlc}B`D`}{{EGnc}B`D`}{{EH`c}B`D`}{{EHbc}B`D`}{{EHdc}B`D`}{{EHfc}B`D`}{{EHhc}B`D`}{{EHjc}B`D`}{{EHlc}B`D`}{{EHnc}B`D`}{{EI`c}B`D`}{{EIbc}B`D`}{{EIdc}B`D`}{{EIfc}B`D`}{{EIhc}B`D`}{{EIjc}B`D`}{{EIlc}B`D`}{{EInc}B`D`}{{EJ`c}B`D`}{{EJbc}B`D`}{{EJdc}B`D`}{{EJfc}B`D`}{{EJhc}B`D`}{{EJjc}B`D`}{{EJlc}B`D`}{{EJnc}B`D`}{{EK`c}B`D`}{{EKbc}B`D`}{{EKdc}B`D`}{{EKfc}B`D`}{{EKhc}B`D`}{{EKjc}B`D`}{{EKlc}B`D`}{{EKnc}B`D`}{{EL`c}B`D`}{{ELbc}B`D`}{{ELdc}B`D`}{{ELfc}B`D`}{{ELhc}B`D`}{{ELjc}B`D`}{{ELlc}B`D`}{{ELnc}B`D`}{{EM`c}B`D`}{{EMbc}B`D`}{{EMdc}B`D`}{{EMfc}B`D`}{{EMhc}B`D`}{{EMjc}B`D`}{{EMlc}B`D`}{{EMnc}B`D`}{{EN`c}B`D`}{{ENbc}B`D`}{{ENdc}B`D`}{{ENfc}B`D`}{{ENhc}B`D`}{{ENjc}B`D`}{{ENlc}B`D`}{{ENnc}B`D`}{{EO`c}B`D`}{{EObc}B`D`}{{EOdc}B`D`}{{EOfc}B`D`}{{EOhc}B`D`}{{EOjc}B`D`}{{EOlc}B`D`}{{EOnc}B`D`}{{F@`c}B`D`}{{F@bc}B`D`}{{F@dc}B`D`}{{F@fc}B`D`}{{F@hc}B`D`}{{F@jc}B`D`}{{F@lc}B`D`}{{F@nc}B`D`}{{FA`c}B`D`}{{FAbc}B`D`}{{FAdc}B`D`}{{FAfc}B`D`}{{FAhc}B`D`}{{FAjc}B`D`}{{FAlc}B`D`}{{FAnc}B`D`}{{FB`c}B`D`}{{FBbc}B`D`}{{FBdc}B`D`}{{FBfc}B`D`}{{FBhc}B`D`}{{FBjc}B`D`}{{FBlc}B`D`}{{FBnc}B`D`}{{DClc}B`D`}{{FC`c}B`D`}{{FCbc}B`D`}{{FCdc}B`D`}{{FCfc}B`D`}{{FChc}B`D`}{{FCjc}B`D`}{{FClc}B`D`}{{FCnc}B`D`}{{FD`c}B`D`}{{FDbc}B`D`}{{FDdc}B`D`}{{DCnc}B`D`}{{FDfc}B`D`}{{FDhc}B`D`}{{FDjc}B`D`}{{DD`c}B`D`}{{FDlc}B`D`}{{FDnc}B`D`}{{FE`c}B`D`}{{FEbc}B`D`}{{FEdc}B`D`}{{DDbc}B`D`}{{FEfc}B`D`}{{FEhc}B`D`}{{DDdc}B`D`}{{FEjc}B`D`}{{FElc}B`D`}{{DDfc}B`D`}{{FEnc}B`D`}{{FF`c}B`D`}{{DDhc}B`D`}{{FFbc}B`D`}{{FFdc}B`D`}{{FFfc}B`D`}{{DDjc}B`D`}{{FFhc}B`D`}{{FFjc}B`D`}{{FFlc}B`D`}{{FFnc}B`D`}{{FG`c}B`D`}{{FGbc}B`D`}{{FGdc}B`D`}{{DDlc}B`D`}{{FGfc}B`D`}{{FGhc}B`D`}{{FGjc}B`D`}{{FGlc}B`D`}{{FGnc}B`D`}{{FH`c}B`D`}{{DDnc}B`D`}{{FHbc}B`D`}{{FHdc}B`D`}{{FHfc}B`D`}{{FHhc}B`D`}{{FHjc}B`D`}{{DE`c}B`D`}{{FHlc}B`D`}{{DEbc}B`D`}{{FHnc}B`D`}{{FI`c}B`D`}{{FIbc}B`D`}{{DEdc}B`D`}{{FIdc}B`D`}{{FIfc}B`D`}{{FIhc}B`D`}{{DEfc}B`D`}{{FIjc}B`D`}{{FIlc}B`D`}{{FInc}B`D`}{{DEhc}B`D`}{{DEjc}B`D`}{{FJ`c}B`D`}{{FJbc}B`D`}{{FJdc}B`D`}{{FJfc}B`D`}{{FJhc}B`D`}{{FJjc}B`D`}{{FJlc}B`D`}{{FJnc}B`D`}{{FK`c}B`D`}{{FKbc}B`D`}{{FKdc}B`D`}{{FKfc}B`D`}{{DElc}B`D`}{{FKhc}B`D`}{{FKjc}B`D`}{{FKlc}B`D`}{{FKnc}B`D`}{{FL`c}B`D`}{{DEnc}B`D`}{{FLbc}B`D`}{{FLdc}B`D`}{{FLfc}B`D`}{{FLhc}B`D`}{{FLjc}B`D`}{{FLlc}B`D`}{{FLnc}B`D`}{{FM`c}B`D`}{{FMbc}B`D`}{{FMdc}B`D`}{{DF`c}B`D`}{{FMfc}B`D`}{{FMhc}B`D`}{{FMjc}B`D`}{{FMlc}B`D`}{{FMnc}B`D`}{{FN`c}B`D`}{{FNbc}B`D`}{{FNdc}B`D`}{{DFbc}B`D`}{{FNfc}B`D`}{{FNhc}B`D`}{{FNjc}B`D`}{{FNlc}B`D`}{{FNnc}B`D`}{{FO`c}B`D`}{{FObc}B`D`}{{FOdc}B`D`}{{FOfc}B`D`}{{FOhc}B`D`}{{FOjc}B`D`}{{FOlc}B`D`}{{FOnc}B`D`}{{DFdc}B`D`}{{G@`c}B`D`}{{DFfc}B`D`}{{DFhc}B`D`}{{G@bc}B`D`}{{G@dc}B`D`}{{DFjc}B`D`}{{DFlc}B`D`}{{G@fc}B`D`}{{G@hc}B`D`}````````{{DClDClBl}Af}{{DCnDCnBl}Af}{{DD`DD`Bl}Af}{{DDbDDbBl}Af}{{DDdDDdBl}Af}{{DDfDDfBl}Af}{{DDhDDhBl}Af}{{DDjDDjBl}Af}{{DDlDDlBl}Af}{{DDnDDnBl}Af}{{DE`DE`Bl}Af}{{DEbDEbBl}Af}{{DEdDEdBl}Af}{{DEfDEfBl}Af}{{DEhDEhBl}Af}{{DEjDEjBl}Af}{{DElDElBl}Af}{{DEnDEnBl}Af}{{DF`DF`Bl}Af}{{DFbDFbBl}Af}{{DFdDFdBl}Af}{{DFfDFfBl}Af}{{DFhDFhBl}Af}{{DFjDFjBl}Af}{{DFlDFlBl}Af}````````````````````````````````````````{{DClDCl}DCl}{{DCnDCn}DCn}{{DD`DD`}DD`}{{DDbDDb}DDb}{{DDdDDd}DDd}{{DDfDDf}DDf}{{DDhDDh}DDh}{{DDjDDj}DDj}{{DDlDDl}DDl}{{DDnDDn}DDn}{{DE`DE`}DE`}{{DEbDEb}DEb}{{DEdDEd}DEd}{{DEfDEf}DEf}{{DEhDEh}DEh}{{DEjDEj}DEj}{{DElDEl}DEl}{{DEnDEn}DEn}{{DF`DF`}DF`}{{DFbDFb}DFb}{{DFdDFd}DFd}{{DFfDFf}DFf}{{DFhDFh}DFh}{{DFjDFj}DFj}{{DFlDFl}DFl}{{DClDCl}Af}{{DCnDCn}Af}{{DD`DD`}Af}{{DDbDDb}Af}{{DDdDDd}Af}{{DDfDDf}Af}{{DDhDDh}Af}{{DDjDDj}Af}{{DDlDDl}Af}{{DDnDDn}Af}{{DE`DE`}Af}{{DEbDEb}Af}{{DEdDEd}Af}{{DEfDEf}Af}{{DEhDEh}Af}{{DEjDEj}Af}{{DElDEl}Af}{{DEnDEn}Af}{{DF`DF`}Af}{{DFbDFb}Af}{{DFdDFd}Af}{{DFfDFf}Af}{{DFhDFh}Af}{{DFjDFj}Af}{{DFlDFl}Af}`````{{DClDCl}DCl}{{DCnDCn}DCn}{{DD`DD`}DD`}{{DDbDDb}DDb}{{DDdDDd}DDd}{{DDfDDf}DDf}{{DDhDDh}DDh}{{DDjDDj}DDj}{{DDlDDl}DDl}{{DDnDDn}DDn}{{DE`DE`}DE`}{{DEbDEb}DEb}{{DEdDEd}DEd}{{DEfDEf}DEf}{{DEhDEh}DEh}{{DEjDEj}DEj}{{DElDEl}DEl}{{DEnDEn}DEn}{{DF`DF`}DF`}{{DFbDFb}DFb}{{DFdDFd}DFd}{{DFfDFf}DFf}{{DFhDFh}DFh}{{DFjDFj}DFj}{{DFlDFl}DFl}```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{FBj{{DBf{DBh}}}}{FBl{{DBf{DBh}}}}{FBn{{DBf{DBh}}}}{FC`{{DBf{DBh}}}}{FCb{{DBf{DBh}}}}{FCd{{DBf{DBh}}}}{FCf{{DBf{DBh}}}}{FCh{{DBf{DBh}}}}{FCj{{DBf{DBh}}}}{FCl{{DBf{DBh}}}}{FCn{{DBf{DBh}}}}{FD`{{DBf{DBh}}}}{FDb{{DBf{DBh}}}}{FDd{{DBf{DBh}}}}{FDf{{DBf{DBh}}}}{FDh{{DBf{DBh}}}}{FDj{{DBf{DBh}}}}{FDl{{DBf{DBh}}}}{FDn{{DBf{DBh}}}}{FE`{{DBf{DBh}}}}{FEb{{DBf{DBh}}}}{FEd{{DBf{DBh}}}}{FEf{{DBf{DBh}}}}{FEh{{DBf{DBh}}}}{FEj{{DBf{DBh}}}}{FEl{{DBf{DBh}}}}{FEn{{DBf{DBh}}}}{FF`{{DBf{DBh}}}}{FFb{{DBf{DBh}}}}{FFd{{DBf{DBh}}}}{FFf{{DBf{DBh}}}}{FFh{{DBf{DBh}}}}{FFj{{DBf{DBh}}}}{FFl{{DBf{DBh}}}}{FFn{{DBf{DBh}}}}{FG`{{DBf{DBh}}}}{FGb{{DBf{DBh}}}}{FGd{{DBf{DBh}}}}{FGf{{DBf{DBh}}}}{FGh{{DBf{DBh}}}}{FGj{{DBf{DBh}}}}{FGl{{DBf{DBh}}}}{FGn{{DBf{DBh}}}}{FH`{{DBf{DBh}}}}{FHb{{DBf{DBh}}}}{FHd{{DBf{DBh}}}}{FHf{{DBf{DBh}}}}{FHh{{DBf{DBh}}}}{FHj{{DBf{DBh}}}}{FHl{{DBf{DBh}}}}{FHn{{DBf{DBh}}}}{FI`{{DBf{DBh}}}}{FIb{{DBf{DBh}}}}{FId{{DBf{DBh}}}}{FIf{{DBf{DBh}}}}{FIh{{DBf{DBh}}}}{FIj{{DBf{DBh}}}}{FIl{{DBf{DBh}}}}{FIn{{DBf{DBh}}}}{FJ`{{DBf{DBh}}}}{FJb{{DBf{DBh}}}}{FJd{{DBf{DBh}}}}{FJf{{DBf{DBh}}}}{FJh{{DBf{DBh}}}}{FJj{{DBf{DBh}}}}{FJl{{DBf{DBh}}}}{FJn{{DBf{DBh}}}}{FK`{{DBf{DBh}}}}{FKb{{DBf{DBh}}}}{FKd{{DBf{DBh}}}}{FKf{{DBf{DBh}}}}{FKh{{DBf{DBh}}}}{FKj{{DBf{DBh}}}}{FKl{{DBf{DBh}}}}{FKn{{DBf{DBh}}}}{FL`{{DBf{DBh}}}}{FLb{{DBf{DBh}}}}{FLd{{DBf{DBh}}}}{FLf{{DBf{DBh}}}}{FLh{{DBf{DBh}}}}{FLj{{DBf{DBh}}}}{FLl{{DBf{DBh}}}}{FLn{{DBf{DBh}}}}{FM`{{DBf{DBh}}}}{FMb{{DBf{DBh}}}}{FMd{{DBf{DBh}}}}{FMf{{DBf{DBh}}}}{FMh{{DBf{DBh}}}}{FMj{{DBf{DBh}}}}{FMl{{DBf{DBh}}}}{FMn{{DBf{DBh}}}}{FN`{{DBf{DBh}}}}{FNb{{DBf{DBh}}}}{FNd{{DBf{DBh}}}}{FNf{{DBf{DBh}}}}{FNh{{DBf{DBh}}}}{FNj{{DBf{DBh}}}}{FNl{{DBf{DBh}}}}{FNn{{DBf{DBh}}}}{FO`{{DBf{DBh}}}}{FOb{{DBf{DBh}}}}{FOd{{DBf{DBh}}}}{FOf{{DBf{DBh}}}}{FOh{{DBf{DBh}}}}{FOj{{DBf{DBh}}}}{FOl{{DBf{DBh}}}}{FOn{{DBf{DBh}}}}{G@`{{DBf{DBh}}}}{G@b{{DBf{DBh}}}}{G@d{{DBf{DBh}}}}{G@f{{DBf{DBh}}}}{G@h{{DBf{DBh}}}}{ce{}{}}0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{FBj{{DBf{Hh}}}}{FBl{{DBf{Hh}}}}{FBn{{DBf{Hh}}}}{FC`{{DBf{Hh}}}}{FCb{{DBf{Hh}}}}{FCd{{DBf{Hh}}}}{FCf{{DBf{Hh}}}}{FCh{{DBf{Hh}}}}{FCj{{DBf{Hh}}}}{FCl{{DBf{Hh}}}}{FCn{{DBf{Hh}}}}{FD`{{DBf{Hh}}}}{FDb{{DBf{Hh}}}}{FDd{{DBf{Hh}}}}{FDf{{DBf{Hh}}}}{FDh{{DBf{Hh}}}}{FDj{{DBf{Hh}}}}{FDl{{DBf{Hh}}}}{FDn{{DBf{Hh}}}}{FE`{{DBf{Hh}}}}{FEb{{DBf{Hh}}}}{FEd{{DBf{Hh}}}}{FEf{{DBf{Hh}}}}{FEh{{DBf{Hh}}}}{FEj{{DBf{Hh}}}}{FEl{{DBf{Hh}}}}{FEn{{DBf{Hh}}}}{FF`{{DBf{Hh}}}}{FFb{{DBf{Hh}}}}{FFd{{DBf{Hh}}}}{FFf{{DBf{Hh}}}}{FFh{{DBf{Hh}}}}{FFj{{DBf{Hh}}}}{FFl{{DBf{Hh}}}}{FFn{{DBf{Hh}}}}{FG`{{DBf{Hh}}}}{FGb{{DBf{Hh}}}}{FGd{{DBf{Hh}}}}{FGf{{DBf{Hh}}}}{FGh{{DBf{Hh}}}}{FGj{{DBf{Hh}}}}{FGl{{DBf{Hh}}}}{FGn{{DBf{Hh}}}}{FH`{{DBf{Hh}}}}{FHb{{DBf{Hh}}}}{FHd{{DBf{Hh}}}}{FHf{{DBf{Hh}}}}{FHh{{DBf{Hh}}}}{FHj{{DBf{Hh}}}}{FHl{{DBf{Hh}}}}{FHn{{DBf{Hh}}}}{FI`{{DBf{Hh}}}}{FIb{{DBf{Hh}}}}{FId{{DBf{Hh}}}}{FIf{{DBf{Hh}}}}{FIh{{DBf{Hh}}}}{FIj{{DBf{Hh}}}}{FIl{{DBf{Hh}}}}{FIn{{DBf{Hh}}}}{FJ`{{DBf{Hh}}}}{FJb{{DBf{Hh}}}}{FJd{{DBf{Hh}}}}{FJf{{DBf{Hh}}}}{FJh{{DBf{Hh}}}}{FJj{{DBf{Hh}}}}{FJl{{DBf{Hh}}}}{FJn{{DBf{Hh}}}}{FK`{{DBf{Hh}}}}{FKb{{DBf{Hh}}}}{FKd{{DBf{Hh}}}}{FKf{{DBf{Hh}}}}{FKh{{DBf{Hh}}}}{FKj{{DBf{Hh}}}}{FKl{{DBf{Hh}}}}{FKn{{DBf{Hh}}}}{FL`{{DBf{Hh}}}}{FLb{{DBf{Hh}}}}{FLd{{DBf{Hh}}}}{FLf{{DBf{Hh}}}}{FLh{{DBf{Hh}}}}{FLj{{DBf{Hh}}}}{FLl{{DBf{Hh}}}}{FLn{{DBf{Hh}}}}{FM`{{DBf{Hh}}}}{FMb{{DBf{Hh}}}}{FMd{{DBf{Hh}}}}{FMf{{DBf{Hh}}}}{FMh{{DBf{Hh}}}}{FMj{{DBf{Hh}}}}{FMl{{DBf{Hh}}}}{FMn{{DBf{Hh}}}}{FN`{{DBf{Hh}}}}{FNb{{DBf{Hh}}}}{FNd{{DBf{Hh}}}}{FNf{{DBf{Hh}}}}{FNh{{DBf{Hh}}}}{FNj{{DBf{Hh}}}}{FNl{{DBf{Hh}}}}{FNn{{DBf{Hh}}}}{FO`{{DBf{Hh}}}}{FOb{{DBf{Hh}}}}{FOd{{DBf{Hh}}}}{FOf{{DBf{Hh}}}}{FOh{{DBf{Hh}}}}{FOj{{DBf{Hh}}}}{FOl{{DBf{Hh}}}}{FOn{{DBf{Hh}}}}{G@`{{DBf{Hh}}}}{G@b{{DBf{Hh}}}}{G@d{{DBf{Hh}}}}{G@f{{DBf{Hh}}}}{G@h{{DBf{Hh}}}}{{DClDCl}Af}{{DCnDCn}Af}{{DD`DD`}Af}{{DDbDDb}Af}{{DDdDDd}Af}{{DDfDDf}Af}{{DDhDDh}Af}{{DDjDDj}Af}{{DDlDDl}Af}{{DDnDDn}Af}{{DE`DE`}Af}{{DEbDEb}Af}{{DEdDEd}Af}{{DEfDEf}Af}{{DEhDEh}Af}{{DEjDEj}Af}{{DElDEl}Af}{{DEnDEn}Af}{{DF`DF`}Af}{{DFbDFb}Af}{{DFdDFd}Af}{{DFfDFf}Af}{{DFhDFh}Af}{{DFjDFj}Af}{{DFlDFl}Af}````````{c{{B`{e}}}{}{}}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000```````````{cDd{}}0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000```````````{{DClDCl}DCl}{{DCnDCn}DCn}{{DD`DD`}DD`}{{DDbDDb}DDb}{{DDdDDd}DDd}{{DDfDDf}DDf}{{DDhDDh}DDh}{{DDjDDj}DDj}{{DDlDDl}DDl}{{DDnDDn}DDn}{{DE`DE`}DE`}{{DEbDEb}DEb}{{DEdDEd}DEd}{{DEfDEf}DEf}{{DEhDEh}DEh}{{DEjDEj}DEj}{{DElDEl}DEl}{{DEnDEn}DEn}{{DF`DF`}DF`}{{DFbDFb}DFb}{{DFdDFd}DFd}{{DFfDFf}DFf}{{DFhDFh}DFh}{{DFjDFj}DFj}{{DFlDFl}DFl}`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{ce{}{}}00000{{BhBn}{{B`{AfC`}}}}0{{ChBn}{{B`{AfC`}}}}0{{CnBn}{{B`{AfC`}}}}0{cc{}}{BhCh}{AnCh}2{AnCn}3777{cG@j{}}00{c{{B`{e}}}{}{}}00000{cDd{}}00```````````````````````````::::::::::{G@lG@l}{G@nG@n}{GA`GA`}{GAbGAb}{GAdGAd}{{ce}Af{}{}}0000{{}G@n}{{}GA`}{{}GAb}{{}GAd}{Bb{{B`{G@lAh}}}}{{n{d{b}}}{{B`{G@nBh}}}}{{n{d{b}}}{{B`{GA`Bh}}}}{c{{B`{G@l}}}Bj}{c{{B`{G@n}}}Bj}{c{{B`{GA`}}}Bj}{c{{B`{GAb}}}Bj}{c{{B`{GAd}}}Bj}{{G@lG@l}Bl}{{G@nG@n}Bl}{{GA`GA`}Bl}{{GAbGAb}Bl}{{GAdGAd}Bl}{Bbb}{{G@lBn}DBd}{{G@nBn}DBd}{{GA`Bn}DBd}{{GAbBn}DBd}{{GAdBn}DBd}{cc{}}0000{DBh{{DBf{GAb}}}}{DBh{{DBf{GAd}}}}{Hh{{DBf{GAb}}}}{Hh{{DBf{GAd}}}}{ce{}{}}0000`````{G@lBb}{Ah{{B`{BbAh}}}}{G@lAh}``````{{nBb{d{b}}}{{B`{G@lBh}}}}{{G@ln{d{b}}}Cl}{{G@nn{d{b}}}Cl}{{GA`n{d{b}}}Cl}{{G@lc}B`D`}{{G@nc}B`D`}{{GA`c}B`D`}{{GAbc}B`D`}{{GAdc}B`D`}`{GAb{{DBf{DBh}}}}{GAd{{DBf{DBh}}}}>>>>>{GAb{{DBf{Hh}}}}{GAd{{DBf{Hh}}}}{c{{B`{e}}}{}{}}000000000`````{cDd{}}0000`{ce{}{}}0{{{Cd{c}}Cl}ClCj}{cc{}}2{c{{Cd{c}}}Cj}{{{Cd{c}}Cl}{{B`{{d{b}}Ch}}}Cj}0{{{Cd{c}}}{{B`{bCh}}}Cj}{{{Cd{c}}}cCj}0887```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{{}GAf}{{}GAh}{{}GAj}{{}GAl}{{}GAn}{{}GB`}{{}GBb}{{}GBd}{{}GBf}{{}GBh}{{}GBj}{{}GBl}{{}GBn}{{}GC`}{{}GCb}{{}GCd}{{}GCf}{{}GCh}{{}GCj}{{}GCl}{{}GCn}{{}GD`}{{}GDb}{{}GDd}{{}GDf}{{}GDh}{{}GDj}{{}GDl}````````````````````````````````````````````````````````````````````````````````````````````````````````{{GAfGAf}GAf}{{GAhGAh}GAh}{{GAjGAj}GAj}{{GAlGAl}GAl}{{GAnGAn}GAn}{{GB`GB`}GB`}{{GBbGBb}GBb}{{GBdGBd}GBd}{{GBfGBf}GBf}{{GBhGBh}GBh}{{GBjGBj}GBj}{{GBlGBl}GBl}{{GBnGBn}GBn}{{GC`GC`}GC`}{{GCbGCb}GCb}{{GCdGCd}GCd}{{GCfGCf}GCf}{{GChGCh}GCh}{{GCjGCj}GCj}{{GClGCl}GCl}{{GCnGCn}GCn}{{GD`GD`}GD`}{{GDbGDb}GDb}{{GDdGDd}GDd}{{GDfGDf}GDf}{{GDhGDh}GDh}{{GDjGDj}GDj}{{GDlGDl}GDl}{{GAfGAf}Af}{{GAhGAh}Af}{{GAjGAj}Af}{{GAlGAl}Af}{{GAnGAn}Af}{{GB`GB`}Af}{{GBbGBb}Af}{{GBdGBd}Af}{{GBfGBf}Af}{{GBhGBh}Af}{{GBjGBj}Af}{{GBlGBl}Af}{{GBnGBn}Af}{{GC`GC`}Af}{{GCbGCb}Af}{{GCdGCd}Af}{{GCfGCf}Af}{{GChGCh}Af}{{GCjGCj}Af}{{GClGCl}Af}{{GCnGCn}Af}{{GD`GD`}Af}{{GDbGDb}Af}{{GDdGDd}Af}{{GDfGDf}Af}{{GDhGDh}Af}{{GDjGDj}Af}{{GDlGDl}Af}{{GAfGAf}GAf}{{GAhGAh}GAh}{{GAjGAj}GAj}{{GAlGAl}GAl}{{GAnGAn}GAn}{{GB`GB`}GB`}{{GBbGBb}GBb}{{GBdGBd}GBd}{{GBfGBf}GBf}{{GBhGBh}GBh}{{GBjGBj}GBj}{{GBlGBl}GBl}{{GBnGBn}GBn}{{GC`GC`}GC`}{{GCbGCb}GCb}{{GCdGCd}GCd}{{GCfGCf}GCf}{{GChGCh}GCh}{{GCjGCj}GCj}{{GClGCl}GCl}{{GCnGCn}GCn}{{GD`GD`}GD`}{{GDbGDb}GDb}{{GDdGDd}GDd}{{GDfGDf}GDf}{{GDhGDh}GDh}{{GDjGDj}GDj}{{GDlGDl}GDl}{{GAfGAf}Af}{{GAhGAh}Af}{{GAjGAj}Af}{{GAlGAl}Af}{{GAnGAn}Af}{{GB`GB`}Af}{{GBbGBb}Af}{{GBdGBd}Af}{{GBfGBf}Af}{{GBhGBh}Af}{{GBjGBj}Af}{{GBlGBl}Af}{{GBnGBn}Af}{{GC`GC`}Af}{{GCbGCb}Af}{{GCdGCd}Af}{{GCfGCf}Af}{{GChGCh}Af}{{GCjGCj}Af}{{GClGCl}Af}{{GCnGCn}Af}{{GD`GD`}Af}{{GDbGDb}Af}{{GDdGDd}Af}{{GDfGDf}Af}{{GDhGDh}Af}{{GDjGDj}Af}{{GDlGDl}Af}``{GAfBb}{GAhf}{GAjf}{GAlHh}{GAnf}{GB`Bb}{GBbf}{GBdf}{GBfb}{GBhBb}{GBjf}{GBlBb}{GBnHh}{GC`b}{GCbf}{GCdBb}{GCff}{GChf}{GCjb}{GClf}{GCnb}{GD`Bb}{GDbb}{GDdf}{GDfBb}{GDhb}{GDjb}{GDlf}{{GAfGAf}GAf}{{GAhGAh}GAh}{{GAjGAj}GAj}{{GAlGAl}GAl}{{GAnGAn}GAn}{{GB`GB`}GB`}{{GBbGBb}GBb}{{GBdGBd}GBd}{{GBfGBf}GBf}{{GBhGBh}GBh}{{GBjGBj}GBj}{{GBlGBl}GBl}{{GBnGBn}GBn}{{GC`GC`}GC`}{{GCbGCb}GCb}{{GCdGCd}GCd}{{GCfGCf}GCf}{{GChGCh}GCh}{{GCjGCj}GCj}{{GClGCl}GCl}{{GCnGCn}GCn}{{GD`GD`}GD`}{{GDbGDb}GDb}{{GDdGDd}GDd}{{GDfGDf}GDf}{{GDhGDh}GDh}{{GDjGDj}GDj}{{GDlGDl}GDl}{{GAfGAf}Af}{{GAhGAh}Af}{{GAjGAj}Af}{{GAlGAl}Af}{{GAnGAn}Af}{{GB`GB`}Af}{{GBbGBb}Af}{{GBdGBd}Af}{{GBfGBf}Af}{{GBhGBh}Af}{{GBjGBj}Af}{{GBlGBl}Af}{{GBnGBn}Af}{{GC`GC`}Af}{{GCbGCb}Af}{{GCdGCd}Af}{{GCfGCf}Af}{{GChGCh}Af}{{GCjGCj}Af}{{GClGCl}Af}{{GCnGCn}Af}{{GD`GD`}Af}{{GDbGDb}Af}{{GDdGDd}Af}{{GDfGDf}Af}{{GDhGDh}Af}{{GDjGDj}Af}{{GDlGDl}Af}```````{ce{}{}}0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000``````````````````````````````````````````````````````````````````````````````````````````{GDnGDn}{GE`GE`}{GEbGEb}{GEdGEd}{GEfGEf}{GEhGEh}{GEjGEj}{GElGEl}{GEnGEn}{GF`GF`}{GFbGFb}{GFdGFd}{GFfGFf}{GFhGFh}{GFjGFj}{GFlGFl}{GFnGFn}{GG`GG`}{GGbGGb}{GGdGGd}{GGfGGf}{GGhGGh}{GGjGGj}{GGlGGl}{GGnGGn}{GH`GH`}{GHbGHb}{GHdGHd}{GHfGHf}{GHhGHh}{GHjGHj}{GHlGHl}{GHnGHn}{GI`GI`}{GIbGIb}{GIdGId}{GIfGIf}{GIhGIh}{GIjGIj}{GIlGIl}{GInGIn}{GJ`GJ`}{GJbGJb}{GJdGJd}{GJfGJf}{GJhGJh}{GJjGJj}{GJlGJl}{GJnGJn}{GK`GK`}{GKbGKb}{GKdGKd}{GKfGKf}{GKhGKh}{GKjGKj}{GKlGKl}{GKnGKn}{GL`GL`}{GLbGLb}{GLdGLd}{GLfGLf}{GLhGLh}{GLjGLj}{GLlGLl}{GLnGLn}{GM`GM`}{GMbGMb}{GMdGMd}{GMfGMf}{GMhGMh}{GMjGMj}{GMlGMl}{GMnGMn}{GN`GN`}{GNbGNb}{GNdGNd}{GNfGNf}{GNhGNh}{GNjGNj}{GNlGNl}{GNnGNn}{GO`GO`}{GObGOb}{GOdGOd}{GOfGOf}{GOhGOh}{GOjGOj}{GOlGOl}{GOnGOn}{H@`H@`}{H@bH@b}{H@dH@d}{H@fH@f}{H@hH@h}{H@jH@j}{H@lH@l}{H@nH@n}{HA`HA`}{HAbHAb}{HAdHAd}{HAfHAf}{HAhHAh}{HAjHAj}{HAlHAl}{HAnHAn}{HB`HB`}{HBbHBb}{HBdHBd}{HBfHBf}{HBhHBh}{HBjHBj}{HBlHBl}{HBnHBn}{HC`HC`}{HCbHCb}{HCdHCd}{HCfHCf}{HChHCh}{HCjHCj}{HClHCl}{HCnHCn}{HD`HD`}{HDbHDb}{HDdHDd}{HDfHDf}{HDhHDh}{HDjHDj}{HDlHDl}{HDnHDn}{HE`HE`}{HEbHEb}{HEdHEd}{HEfHEf}{HEhHEh}{HEjHEj}{HElHEl}{HEnHEn}{HF`HF`}{HFbHFb}{HFdHFd}{HFfHFf}{HFhHFh}{HFjHFj}{HFlHFl}{HFnHFn}{HG`HG`}{HGbHGb}{HGdHGd}{HGfHGf}{HGhHGh}{HGjHGj}{HGlHGl}{HGnHGn}{HH`HH`}{HHbHHb}{HHdHHd}{HHfHHf}{HHhHHh}{HHjHHj}{HHlHHl}{HHnHHn}{HI`HI`}{HIbHIb}{HIdHId}{HIfHIf}{HIhHIh}{HIjHIj}{HIlHIl}{HInHIn}{HJ`HJ`}{HJbHJb}{HJdHJd}{HJfHJf}{HJhHJh}{HJjHJj}{HJlHJl}{HJnHJn}{HK`HK`}{HKbHKb}{HKdHKd}{HKfHKf}{HKhHKh}{HKjHKj}{HKlHKl}{HKnHKn}{HL`HL`}{HLbHLb}{HLdHLd}{HLfHLf}{HLhHLh}{HLjHLj}{HLlHLl}{HLnHLn}{HM`HM`}{HMbHMb}{HMdHMd}{HMfHMf}{HMhHMh}{HMjHMj}{HMlHMl}{HMnHMn}{HN`HN`}{HNbHNb}{HNdHNd}{HNfHNf}{HNhHNh}{HNjHNj}{HNlHNl}{HNnHNn}{HO`HO`}{HObHOb}{HOdHOd}{HOfHOf}{HOhHOh}{HOjHOj}{HOlHOl}{HOnHOn}{I@`I@`}{I@bI@b}{I@dI@d}{I@fI@f}{I@hI@h}{I@jI@j}{I@lI@l}{I@nI@n}{IA`IA`}{IAbIAb}{GAfGAf}{IAdIAd}{IAfIAf}{IAhIAh}{IAjIAj}{IAlIAl}{IAnIAn}{IB`IB`}{IBbIBb}{IBdIBd}{IBfIBf}{IBhIBh}{IBjIBj}{GAhGAh}{IBlIBl}{IBnIBn}{IC`IC`}{GAjGAj}{ICbICb}{ICdICd}{GAlGAl}{ICfICf}{IChICh}{ICjICj}{IClICl}{ICnICn}{GAnGAn}{ID`ID`}{IDbIDb}{IDdIDd}{IDfIDf}{IDhIDh}{IDjIDj}{IDlIDl}{IDnIDn}{IE`IE`}{GB`GB`}{IEbIEb}{IEdIEd}{IEfIEf}{IEhIEh}{IEjIEj}{IElIEl}{IEnIEn}{IF`IF`}{IFbIFb}{GBbGBb}{GBdGBd}{IFdIFd}{GBfGBf}{IFfIFf}{IFhIFh}{IFjIFj}{IFlIFl}{GBhGBh}{IFnIFn}{IG`IG`}{IGbIGb}{GBjGBj}{IGdIGd}{IGfIGf}{GBlGBl}{GBnGBn}{IGhIGh}{IGjIGj}{IGlIGl}{GC`GC`}{GCbGCb}{IGnIGn}{IH`IH`}{IHbIHb}{IHdIHd}{IHfIHf}{IHhIHh}{GCdGCd}{IHjIHj}{GCfGCf}{GChGCh}{IHlIHl}{IHnIHn}{II`II`}{IIbIIb}{IIdIId}{IIfIIf}{GCjGCj}{IIhIIh}{IIjIIj}{IIlIIl}{IInIIn}{IJ`IJ`}{GClGCl}{GCnGCn}{IJbIJb}{IJdIJd}{IJfIJf}{IJhIJh}{IJjIJj}{IJlIJl}{IJnIJn}{IK`IK`}{IKbIKb}{IKdIKd}{IKfIKf}{IKhIKh}{IKjIKj}{GD`GD`}{IKlIKl}{IKnIKn}{IL`IL`}{ILbILb}{ILdILd}{ILfILf}{GDbGDb}{ILhILh}{ILjILj}{ILlILl}{ILnILn}{IM`IM`}{IMbIMb}{GDdGDd}{GDfGDf}{IMdIMd}{GDhGDh}{IMfIMf}{IMhIMh}{IMjIMj}{IMlIMl}{IMnIMn}{IN`IN`}{INbINb}{GDjGDj}{INdINd}{INfINf}{INhINh}{INjINj}{INlINl}{INnINn}{IO`IO`}{IObIOb}{GDlGDl}{IOdIOd}{IOfIOf}{IOhIOh}{{ce}Af{}{}}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{{GAfGAf}DAn}{{GAhGAh}DAn}{{GAjGAj}DAn}{{GAlGAl}DAn}{{GAnGAn}DAn}{{GB`GB`}DAn}{{GBbGBb}DAn}{{GBdGBd}DAn}{{GBfGBf}DAn}{{GBhGBh}DAn}{{GBjGBj}DAn}{{GBlGBl}DAn}{{GBnGBn}DAn}{{GC`GC`}DAn}{{GCbGCb}DAn}{{GCdGCd}DAn}{{GCfGCf}DAn}{{GChGCh}DAn}{{GCjGCj}DAn}{{GClGCl}DAn}{{GCnGCn}DAn}{{GD`GD`}DAn}{{GDbGDb}DAn}{{GDdGDd}DAn}{{GDfGDf}DAn}{{GDhGDh}DAn}{{GDjGDj}DAn}{{GDlGDl}DAn}````````````{GAfGAf}{GAhGAh}{GAjGAj}{GAlGAl}{GAnGAn}{GB`GB`}{GBbGBb}{GBdGBd}{GBfGBf}{GBhGBh}{GBjGBj}{GBlGBl}{GBnGBn}{GC`GC`}{GCbGCb}{GCdGCd}{GCfGCf}{GChGCh}{GCjGCj}{GClGCl}{GCnGCn}{GD`GD`}{GDbGDb}{GDdGDd}{GDfGDf}{GDhGDh}{GDjGDj}{GDlGDl}``{{GAfGAf}Bl}{{GAhGAh}Bl}{{GAjGAj}Bl}{{GAlGAl}Bl}{{GAnGAn}Bl}{{GB`GB`}Bl}{{GBbGBb}Bl}{{GBdGBd}Bl}{{GBfGBf}Bl}{{GBhGBh}Bl}{{GBjGBj}Bl}{{GBlGBl}Bl}{{GBnGBn}Bl}{{GC`GC`}Bl}{{GCbGCb}Bl}{{GCdGCd}Bl}{{GCfGCf}Bl}{{GChGCh}Bl}{{GCjGCj}Bl}{{GClGCl}Bl}{{GCnGCn}Bl}{{GD`GD`}Bl}{{GDbGDb}Bl}{{GDdGDd}Bl}{{GDfGDf}Bl}{{GDhGDh}Bl}{{GDjGDj}Bl}{{GDlGDl}Bl}````````````````````````````````````````````````````````{{}GE`}{{}GEb}{{}GEd}{{}GEf}{{}GEh}{{}GEj}{{}GEl}{{}GEn}{{}GF`}{{}GFb}{{}GFd}{{}GFf}{{}GFh}{{}GFj}{{}GFl}{{}GFn}{{}GG`}{{}GGb}{{}GGd}{{}GGf}{{}GGh}{{}GGj}{{}GGl}{{}GGn}{{}GH`}{{}GHb}{{}GHd}{{}GHf}{{}GHh}{{}GHj}{{}GHl}{{}GHn}{{}GI`}{{}GIb}{{}GId}{{}GIf}{{}GIh}{{}GIj}{{}GIl}{{}GIn}{{}GJ`}{{}GJb}{{}GJd}{{}GJf}{{}GJh}{{}GJj}{{}GJl}{{}GJn}{{}GK`}{{}GKb}{{}GKd}{{}GKf}{{}GKh}{{}GKj}{{}GKl}{{}GKn}{{}GL`}{{}GLb}{{}GLd}{{}GLf}{{}GLh}{{}GLj}{{}GLl}{{}GLn}{{}GM`}{{}GMb}{{}GMd}{{}GMf}{{}GMh}{{}GMj}{{}GMl}{{}GMn}{{}GN`}{{}GNb}{{}GNd}{{}GNf}{{}GNh}{{}GNj}{{}GNl}{{}GNn}{{}GO`}{{}GOb}{{}GOd}{{}GOf}{{}GOh}{{}GOj}{{}GOl}{{}GOn}{{}H@`}{{}H@b}{{}H@d}{{}H@f}{{}H@h}{{}H@j}{{}H@l}{{}H@n}{{}HA`}{{}HAb}{{}HAd}{{}HAf}{{}HAh}{{}HAj}{{}HAl}{{}HAn}{{}HB`}{{}HBb}{{}HBd}{{}HBf}{{}HBh}{{}HBj}{{}HBl}{{}HBn}{{}HC`}{{}HCb}{{}HCd}{{}HCf}{{}HCh}{{}HCj}{{}HCl}{{}HCn}{{}HD`}{{}HDb}{{}HDd}{{}HDf}{{}HDh}{{}HDj}{{}HDl}{{}HDn}{{}HE`}{{}HEb}{{}HEd}{{}HEf}{{}HEh}{{}HEj}{{}HEl}{{}HEn}{{}HF`}{{}HFb}{{}HFd}{{}HFf}{{}HFh}{{}HFj}{{}HFl}{{}HFn}{{}HG`}{{}HGb}{{}HGd}{{}HGf}{{}HGh}{{}HGj}{{}HGl}{{}HGn}{{}HH`}{{}HHb}{{}HHd}{{}HHf}{{}HHh}{{}HHj}{{}HHl}{{}HHn}{{}HI`}{{}HIb}{{}HId}{{}HIf}{{}HIh}{{}HIj}{{}HIl}{{}HIn}{{}HJ`}{{}HJb}{{}HJd}{{}HJf}{{}HJh}{{}HJj}{{}HJl}{{}HJn}{{}HK`}{{}HKb}{{}HKd}{{}HKf}{{}HKh}{{}HKj}{{}HKl}{{}HKn}{{}HL`}{{}HLb}{{}HLd}{{}HLf}{{}HLh}{{}HLj}{{}HLl}{{}HLn}{{}HM`}{{}HMb}{{}HMd}{{}HMf}{{}HMh}{{}HMj}{{}HMl}{{}HMn}{{}HN`}{{}HNb}{{}HNd}{{}HNf}{{}HNh}{{}HNj}{{}HNl}{{}HNn}{{}HO`}{{}HOb}{{}HOd}{{}HOf}{{}HOh}{{}HOj}{{}HOl}{{}HOn}{{}I@`}{{}I@b}{{}I@d}{{}I@f}{{}I@h}{{}I@j}{{}I@l}{{}I@n}{{}IA`}{{}IAb}{{}GAf}{{}IAd}{{}IAf}{{}IAh}{{}IAj}{{}IAl}{{}IAn}{{}IB`}{{}IBb}{{}IBd}{{}IBf}{{}IBh}{{}IBj}{{}GAh}{{}IBl}{{}IBn}{{}IC`}{{}GAj}{{}ICb}{{}ICd}{{}GAl}{{}ICf}{{}ICh}{{}ICj}{{}ICl}{{}ICn}{{}GAn}{{}ID`}{{}IDb}{{}IDd}{{}IDf}{{}IDh}{{}IDj}{{}IDl}{{}IDn}{{}IE`}{{}GB`}{{}IEb}{{}IEd}{{}IEf}{{}IEh}{{}IEj}{{}IEl}{{}IEn}{{}IF`}{{}IFb}{{}GBb}{{}GBd}{{}IFd}{{}GBf}{{}IFf}{{}IFh}{{}IFj}{{}IFl}{{}GBh}{{}IFn}{{}IG`}{{}IGb}{{}GBj}{{}IGd}{{}IGf}{{}GBl}{{}GBn}{{}IGh}{{}IGj}{{}IGl}{{}GC`}{{}GCb}{{}IGn}{{}IH`}{{}IHb}{{}IHd}{{}IHf}{{}IHh}{{}GCd}{{}IHj}{{}GCf}{{}GCh}{{}IHl}{{}IHn}{{}II`}{{}IIb}{{}IId}{{}IIf}{{}GCj}{{}IIh}{{}IIj}{{}IIl}{{}IIn}{{}IJ`}{{}GCl}{{}GCn}{{}IJb}{{}IJd}{{}IJf}{{}IJh}{{}IJj}{{}IJl}{{}IJn}{{}IK`}{{}IKb}{{}IKd}{{}IKf}{{}IKh}{{}IKj}{{}GD`}{{}IKl}{{}IKn}{{}IL`}{{}ILb}{{}ILd}{{}ILf}{{}GDb}{{}ILh}{{}ILj}{{}ILl}{{}ILn}{{}IM`}{{}IMb}{{}GDd}{{}GDf}{{}IMd}{{}GDh}{{}IMf}{{}IMh}{{}IMj}{{}IMl}{{}IMn}{{}IN`}{{}INb}{{}GDj}{{}INd}{{}INf}{{}INh}{{}INj}{{}INl}{{}INn}{{}IO`}{{}IOb}{{}GDl}{{}IOd}{{}IOf}{{}IOh}{Bb{{B`{GDnAh}}}}```{{n{d{b}}}{{B`{GE`Bh}}}}{{n{d{b}}}{{B`{GEbBh}}}}{{n{d{b}}}{{B`{GEdBh}}}}{{n{d{b}}}{{B`{GEfBh}}}}{{n{d{b}}}{{B`{GEhBh}}}}{{n{d{b}}}{{B`{GEjBh}}}}{{n{d{b}}}{{B`{GElBh}}}}{{n{d{b}}}{{B`{GEnBh}}}}{{n{d{b}}}{{B`{GF`Bh}}}}{{n{d{b}}}{{B`{GFbBh}}}}{{n{d{b}}}{{B`{GFdBh}}}}{{n{d{b}}}{{B`{GFfBh}}}}{{n{d{b}}}{{B`{GFhBh}}}}{{n{d{b}}}{{B`{GFjBh}}}}{{n{d{b}}}{{B`{GFlBh}}}}{{n{d{b}}}{{B`{GFnBh}}}}{{n{d{b}}}{{B`{GG`Bh}}}}{{n{d{b}}}{{B`{GGbBh}}}}{{n{d{b}}}{{B`{GGdBh}}}}{{n{d{b}}}{{B`{GGfBh}}}}{{n{d{b}}}{{B`{GGhBh}}}}{{n{d{b}}}{{B`{GGjBh}}}}{{n{d{b}}}{{B`{GGlBh}}}}{{n{d{b}}}{{B`{GGnBh}}}}{{n{d{b}}}{{B`{GH`Bh}}}}{{n{d{b}}}{{B`{GHbBh}}}}{{n{d{b}}}{{B`{GHdBh}}}}{{n{d{b}}}{{B`{GHfBh}}}}{{n{d{b}}}{{B`{GHhBh}}}}{{n{d{b}}}{{B`{GHjBh}}}}{{n{d{b}}}{{B`{GHlBh}}}}{{n{d{b}}}{{B`{GHnBh}}}}{{n{d{b}}}{{B`{GI`Bh}}}}{{n{d{b}}}{{B`{GIbBh}}}}{{n{d{b}}}{{B`{GIdBh}}}}{{n{d{b}}}{{B`{GIfBh}}}}{{n{d{b}}}{{B`{GIhBh}}}}{{n{d{b}}}{{B`{GIjBh}}}}{{n{d{b}}}{{B`{GIlBh}}}}{{n{d{b}}}{{B`{GInBh}}}}{{n{d{b}}}{{B`{GJ`Bh}}}}{{n{d{b}}}{{B`{GJbBh}}}}{{n{d{b}}}{{B`{GJdBh}}}}{{n{d{b}}}{{B`{GJfBh}}}}{{n{d{b}}}{{B`{GJhBh}}}}{{n{d{b}}}{{B`{GJjBh}}}}{{n{d{b}}}{{B`{GJlBh}}}}{{n{d{b}}}{{B`{GJnBh}}}}{{n{d{b}}}{{B`{GK`Bh}}}}{{n{d{b}}}{{B`{GKbBh}}}}{{n{d{b}}}{{B`{GKdBh}}}}{{n{d{b}}}{{B`{GKfBh}}}}{{n{d{b}}}{{B`{GKhBh}}}}{{n{d{b}}}{{B`{GKjBh}}}}{{n{d{b}}}{{B`{GKlBh}}}}{{n{d{b}}}{{B`{GKnBh}}}}{{n{d{b}}}{{B`{GL`Bh}}}}{{n{d{b}}}{{B`{GLbBh}}}}{{n{d{b}}}{{B`{GLdBh}}}}{{n{d{b}}}{{B`{GLfBh}}}}{{n{d{b}}}{{B`{GLhBh}}}}{{n{d{b}}}{{B`{GLjBh}}}}{{n{d{b}}}{{B`{GLlBh}}}}{{n{d{b}}}{{B`{GLnBh}}}}{{n{d{b}}}{{B`{GM`Bh}}}}{{n{d{b}}}{{B`{GMbBh}}}}{{n{d{b}}}{{B`{GMdBh}}}}{{n{d{b}}}{{B`{GMfBh}}}}{{n{d{b}}}{{B`{GMhBh}}}}{{n{d{b}}}{{B`{GMjBh}}}}{{n{d{b}}}{{B`{GMlBh}}}}{{n{d{b}}}{{B`{GMnBh}}}}{{n{d{b}}}{{B`{GN`Bh}}}}{{n{d{b}}}{{B`{GNbBh}}}}{{n{d{b}}}{{B`{GNdBh}}}}{{n{d{b}}}{{B`{GNfBh}}}}{{n{d{b}}}{{B`{GNhBh}}}}{{n{d{b}}}{{B`{GNjBh}}}}{{n{d{b}}}{{B`{GNlBh}}}}{{n{d{b}}}{{B`{GNnBh}}}}{{n{d{b}}}{{B`{GO`Bh}}}}{{n{d{b}}}{{B`{GObBh}}}}{{n{d{b}}}{{B`{GOdBh}}}}{{n{d{b}}}{{B`{GOfBh}}}}{{n{d{b}}}{{B`{GOhBh}}}}{{n{d{b}}}{{B`{GOjBh}}}}{{n{d{b}}}{{B`{GOlBh}}}}{{n{d{b}}}{{B`{GOnBh}}}}{{n{d{b}}}{{B`{H@`Bh}}}}{{n{d{b}}}{{B`{H@bBh}}}}{{n{d{b}}}{{B`{H@dBh}}}}{{n{d{b}}}{{B`{H@fBh}}}}{{n{d{b}}}{{B`{H@hBh}}}}{{n{d{b}}}{{B`{H@jBh}}}}{{n{d{b}}}{{B`{H@lBh}}}}{{n{d{b}}}{{B`{H@nBh}}}}{{n{d{b}}}{{B`{HA`Bh}}}}{{n{d{b}}}{{B`{HAbBh}}}}{{n{d{b}}}{{B`{HAdBh}}}}{{n{d{b}}}{{B`{HAfBh}}}}{{n{d{b}}}{{B`{HAhBh}}}}{{n{d{b}}}{{B`{HAjBh}}}}{{n{d{b}}}{{B`{HAlBh}}}}{{n{d{b}}}{{B`{HAnBh}}}}{{n{d{b}}}{{B`{HB`Bh}}}}{{n{d{b}}}{{B`{HBbBh}}}}{{n{d{b}}}{{B`{HBdBh}}}}{{n{d{b}}}{{B`{HBfBh}}}}{{n{d{b}}}{{B`{HBhBh}}}}{{n{d{b}}}{{B`{HBjBh}}}}{{n{d{b}}}{{B`{HBlBh}}}}{{n{d{b}}}{{B`{HBnBh}}}}{{n{d{b}}}{{B`{HC`Bh}}}}{{n{d{b}}}{{B`{HCbBh}}}}{{n{d{b}}}{{B`{HCdBh}}}}{{n{d{b}}}{{B`{HCfBh}}}}{{n{d{b}}}{{B`{HChBh}}}}{{n{d{b}}}{{B`{HCjBh}}}}{{n{d{b}}}{{B`{HClBh}}}}{{n{d{b}}}{{B`{HCnBh}}}}{{n{d{b}}}{{B`{HD`Bh}}}}{{n{d{b}}}{{B`{HDbBh}}}}{{n{d{b}}}{{B`{HDdBh}}}}{{n{d{b}}}{{B`{HDfBh}}}}{{n{d{b}}}{{B`{HDhBh}}}}{{n{d{b}}}{{B`{HDjBh}}}}{{n{d{b}}}{{B`{HDlBh}}}}{{n{d{b}}}{{B`{HDnBh}}}}{{n{d{b}}}{{B`{HE`Bh}}}}{{n{d{b}}}{{B`{HEbBh}}}}{{n{d{b}}}{{B`{HEdBh}}}}{{n{d{b}}}{{B`{HEfBh}}}}{{n{d{b}}}{{B`{HEhBh}}}}{{n{d{b}}}{{B`{HEjBh}}}}{{n{d{b}}}{{B`{HElBh}}}}{{n{d{b}}}{{B`{HEnBh}}}}{{n{d{b}}}{{B`{HF`Bh}}}}{{n{d{b}}}{{B`{HFbBh}}}}{{n{d{b}}}{{B`{HFdBh}}}}{{n{d{b}}}{{B`{HFfBh}}}}{{n{d{b}}}{{B`{HFhBh}}}}{{n{d{b}}}{{B`{HFjBh}}}}{{n{d{b}}}{{B`{HFlBh}}}}{{n{d{b}}}{{B`{HFnBh}}}}{{n{d{b}}}{{B`{HG`Bh}}}}{{n{d{b}}}{{B`{HGbBh}}}}{{n{d{b}}}{{B`{HGdBh}}}}{{n{d{b}}}{{B`{HGfBh}}}}{{n{d{b}}}{{B`{HGhBh}}}}{{n{d{b}}}{{B`{HGjBh}}}}{{n{d{b}}}{{B`{HGlBh}}}}{{n{d{b}}}{{B`{HGnBh}}}}{{n{d{b}}}{{B`{HH`Bh}}}}{{n{d{b}}}{{B`{HHbBh}}}}{{n{d{b}}}{{B`{HHdBh}}}}{{n{d{b}}}{{B`{HHfBh}}}}{{n{d{b}}}{{B`{HHhBh}}}}{{n{d{b}}}{{B`{HHjBh}}}}{{n{d{b}}}{{B`{HHlBh}}}}{{n{d{b}}}{{B`{HHnBh}}}}{{n{d{b}}}{{B`{HI`Bh}}}}{{n{d{b}}}{{B`{HIbBh}}}}{{n{d{b}}}{{B`{HIdBh}}}}{{n{d{b}}}{{B`{HIfBh}}}}{{n{d{b}}}{{B`{HIhBh}}}}{{n{d{b}}}{{B`{HIjBh}}}}{{n{d{b}}}{{B`{HIlBh}}}}{{n{d{b}}}{{B`{HInBh}}}}{{n{d{b}}}{{B`{HJ`Bh}}}}{{n{d{b}}}{{B`{HJbBh}}}}{{n{d{b}}}{{B`{HJdBh}}}}{{n{d{b}}}{{B`{HJfBh}}}}{{n{d{b}}}{{B`{HJhBh}}}}{{n{d{b}}}{{B`{HJjBh}}}}{{n{d{b}}}{{B`{HJlBh}}}}{{n{d{b}}}{{B`{HJnBh}}}}{{n{d{b}}}{{B`{HK`Bh}}}}{{n{d{b}}}{{B`{HKbBh}}}}{{n{d{b}}}{{B`{HKdBh}}}}{{n{d{b}}}{{B`{HKfBh}}}}{{n{d{b}}}{{B`{HKhBh}}}}{{n{d{b}}}{{B`{HKjBh}}}}{{n{d{b}}}{{B`{HKlBh}}}}{{n{d{b}}}{{B`{HKnBh}}}}{{n{d{b}}}{{B`{HL`Bh}}}}{{n{d{b}}}{{B`{HLbBh}}}}{{n{d{b}}}{{B`{HLdBh}}}}{{n{d{b}}}{{B`{HLfBh}}}}{{n{d{b}}}{{B`{HLhBh}}}}{{n{d{b}}}{{B`{HLjBh}}}}{{n{d{b}}}{{B`{HLlBh}}}}{{n{d{b}}}{{B`{HLnBh}}}}{{n{d{b}}}{{B`{HM`Bh}}}}{{n{d{b}}}{{B`{HMbBh}}}}{{n{d{b}}}{{B`{HMdBh}}}}{{n{d{b}}}{{B`{HMfBh}}}}{{n{d{b}}}{{B`{HMhBh}}}}{{n{d{b}}}{{B`{HMjBh}}}}{{n{d{b}}}{{B`{HMlBh}}}}{{n{d{b}}}{{B`{HMnBh}}}}{{n{d{b}}}{{B`{HN`Bh}}}}{{n{d{b}}}{{B`{HNbBh}}}}{{n{d{b}}}{{B`{HNdBh}}}}{{n{d{b}}}{{B`{HNfBh}}}}{{n{d{b}}}{{B`{HNhBh}}}}{{n{d{b}}}{{B`{HNjBh}}}}{{n{d{b}}}{{B`{HNlBh}}}}{{n{d{b}}}{{B`{HNnBh}}}}{{n{d{b}}}{{B`{HO`Bh}}}}{{n{d{b}}}{{B`{HObBh}}}}{{n{d{b}}}{{B`{HOdBh}}}}{{n{d{b}}}{{B`{HOfBh}}}}{{n{d{b}}}{{B`{HOhBh}}}}{{n{d{b}}}{{B`{HOjBh}}}}{{n{d{b}}}{{B`{HOlBh}}}}{{n{d{b}}}{{B`{HOnBh}}}}{{n{d{b}}}{{B`{I@`Bh}}}}{{n{d{b}}}{{B`{I@bBh}}}}{{n{d{b}}}{{B`{I@dBh}}}}{{n{d{b}}}{{B`{I@fBh}}}}{{n{d{b}}}{{B`{I@hBh}}}}{{n{d{b}}}{{B`{I@jBh}}}}{{n{d{b}}}{{B`{I@lBh}}}}{{n{d{b}}}{{B`{I@nBh}}}}{c{{B`{GDn}}}Bj}{c{{B`{GE`}}}Bj}{c{{B`{GEb}}}Bj}{c{{B`{GEd}}}Bj}{c{{B`{GEf}}}Bj}{c{{B`{GEh}}}Bj}{c{{B`{GEj}}}Bj}{c{{B`{GEl}}}Bj}{c{{B`{GEn}}}Bj}{c{{B`{GF`}}}Bj}{c{{B`{GFb}}}Bj}{c{{B`{GFd}}}Bj}{c{{B`{GFf}}}Bj}{c{{B`{GFh}}}Bj}{c{{B`{GFj}}}Bj}{c{{B`{GFl}}}Bj}{c{{B`{GFn}}}Bj}{c{{B`{GG`}}}Bj}{c{{B`{GGb}}}Bj}{c{{B`{GGd}}}Bj}{c{{B`{GGf}}}Bj}{c{{B`{GGh}}}Bj}{c{{B`{GGj}}}Bj}{c{{B`{GGl}}}Bj}{c{{B`{GGn}}}Bj}{c{{B`{GH`}}}Bj}{c{{B`{GHb}}}Bj}{c{{B`{GHd}}}Bj}{c{{B`{GHf}}}Bj}{c{{B`{GHh}}}Bj}{c{{B`{GHj}}}Bj}{c{{B`{GHl}}}Bj}{c{{B`{GHn}}}Bj}{c{{B`{GI`}}}Bj}{c{{B`{GIb}}}Bj}{c{{B`{GId}}}Bj}{c{{B`{GIf}}}Bj}{c{{B`{GIh}}}Bj}{c{{B`{GIj}}}Bj}{c{{B`{GIl}}}Bj}{c{{B`{GIn}}}Bj}{c{{B`{GJ`}}}Bj}{c{{B`{GJb}}}Bj}{c{{B`{GJd}}}Bj}{c{{B`{GJf}}}Bj}{c{{B`{GJh}}}Bj}{c{{B`{GJj}}}Bj}{c{{B`{GJl}}}Bj}{c{{B`{GJn}}}Bj}{c{{B`{GK`}}}Bj}{c{{B`{GKb}}}Bj}{c{{B`{GKd}}}Bj}{c{{B`{GKf}}}Bj}{c{{B`{GKh}}}Bj}{c{{B`{GKj}}}Bj}{c{{B`{GKl}}}Bj}{c{{B`{GKn}}}Bj}{c{{B`{GL`}}}Bj}{c{{B`{GLb}}}Bj}{c{{B`{GLd}}}Bj}{c{{B`{GLf}}}Bj}{c{{B`{GLh}}}Bj}{c{{B`{GLj}}}Bj}{c{{B`{GLl}}}Bj}{c{{B`{GLn}}}Bj}{c{{B`{GM`}}}Bj}{c{{B`{GMb}}}Bj}{c{{B`{GMd}}}Bj}{c{{B`{GMf}}}Bj}{c{{B`{GMh}}}Bj}{c{{B`{GMj}}}Bj}{c{{B`{GMl}}}Bj}{c{{B`{GMn}}}Bj}{c{{B`{GN`}}}Bj}{c{{B`{GNb}}}Bj}{c{{B`{GNd}}}Bj}{c{{B`{GNf}}}Bj}{c{{B`{GNh}}}Bj}{c{{B`{GNj}}}Bj}{c{{B`{GNl}}}Bj}{c{{B`{GNn}}}Bj}{c{{B`{GO`}}}Bj}{c{{B`{GOb}}}Bj}{c{{B`{GOd}}}Bj}{c{{B`{GOf}}}Bj}{c{{B`{GOh}}}Bj}{c{{B`{GOj}}}Bj}{c{{B`{GOl}}}Bj}{c{{B`{GOn}}}Bj}{c{{B`{H@`}}}Bj}{c{{B`{H@b}}}Bj}{c{{B`{H@d}}}Bj}{c{{B`{H@f}}}Bj}{c{{B`{H@h}}}Bj}{c{{B`{H@j}}}Bj}{c{{B`{H@l}}}Bj}{c{{B`{H@n}}}Bj}{c{{B`{HA`}}}Bj}{c{{B`{HAb}}}Bj}{c{{B`{HAd}}}Bj}{c{{B`{HAf}}}Bj}{c{{B`{HAh}}}Bj}{c{{B`{HAj}}}Bj}{c{{B`{HAl}}}Bj}{c{{B`{HAn}}}Bj}{c{{B`{HB`}}}Bj}{c{{B`{HBb}}}Bj}{c{{B`{HBd}}}Bj}{c{{B`{HBf}}}Bj}{c{{B`{HBh}}}Bj}{c{{B`{HBj}}}Bj}{c{{B`{HBl}}}Bj}{c{{B`{HBn}}}Bj}{c{{B`{HC`}}}Bj}{c{{B`{HCb}}}Bj}{c{{B`{HCd}}}Bj}{c{{B`{HCf}}}Bj}{c{{B`{HCh}}}Bj}{c{{B`{HCj}}}Bj}{c{{B`{HCl}}}Bj}{c{{B`{HCn}}}Bj}{c{{B`{HD`}}}Bj}{c{{B`{HDb}}}Bj}{c{{B`{HDd}}}Bj}{c{{B`{HDf}}}Bj}{c{{B`{HDh}}}Bj}{c{{B`{HDj}}}Bj}{c{{B`{HDl}}}Bj}{c{{B`{HDn}}}Bj}{c{{B`{HE`}}}Bj}{c{{B`{HEb}}}Bj}{c{{B`{HEd}}}Bj}{c{{B`{HEf}}}Bj}{c{{B`{HEh}}}Bj}{c{{B`{HEj}}}Bj}{c{{B`{HEl}}}Bj}{c{{B`{HEn}}}Bj}{c{{B`{HF`}}}Bj}{c{{B`{HFb}}}Bj}{c{{B`{HFd}}}Bj}{c{{B`{HFf}}}Bj}{c{{B`{HFh}}}Bj}{c{{B`{HFj}}}Bj}{c{{B`{HFl}}}Bj}{c{{B`{HFn}}}Bj}{c{{B`{HG`}}}Bj}{c{{B`{HGb}}}Bj}{c{{B`{HGd}}}Bj}{c{{B`{HGf}}}Bj}{c{{B`{HGh}}}Bj}{c{{B`{HGj}}}Bj}{c{{B`{HGl}}}Bj}{c{{B`{HGn}}}Bj}{c{{B`{HH`}}}Bj}{c{{B`{HHb}}}Bj}{c{{B`{HHd}}}Bj}{c{{B`{HHf}}}Bj}{c{{B`{HHh}}}Bj}{c{{B`{HHj}}}Bj}{c{{B`{HHl}}}Bj}{c{{B`{HHn}}}Bj}{c{{B`{HI`}}}Bj}{c{{B`{HIb}}}Bj}{c{{B`{HId}}}Bj}{c{{B`{HIf}}}Bj}{c{{B`{HIh}}}Bj}{c{{B`{HIj}}}Bj}{c{{B`{HIl}}}Bj}{c{{B`{HIn}}}Bj}{c{{B`{HJ`}}}Bj}{c{{B`{HJb}}}Bj}{c{{B`{HJd}}}Bj}{c{{B`{HJf}}}Bj}{c{{B`{HJh}}}Bj}{c{{B`{HJj}}}Bj}{c{{B`{HJl}}}Bj}{c{{B`{HJn}}}Bj}{c{{B`{HK`}}}Bj}{c{{B`{HKb}}}Bj}{c{{B`{HKd}}}Bj}{c{{B`{HKf}}}Bj}{c{{B`{HKh}}}Bj}{c{{B`{HKj}}}Bj}{c{{B`{HKl}}}Bj}{c{{B`{HKn}}}Bj}{c{{B`{HL`}}}Bj}{c{{B`{HLb}}}Bj}{c{{B`{HLd}}}Bj}{c{{B`{HLf}}}Bj}{c{{B`{HLh}}}Bj}{c{{B`{HLj}}}Bj}{c{{B`{HLl}}}Bj}{c{{B`{HLn}}}Bj}{c{{B`{HM`}}}Bj}{c{{B`{HMb}}}Bj}{c{{B`{HMd}}}Bj}{c{{B`{HMf}}}Bj}{c{{B`{HMh}}}Bj}{c{{B`{HMj}}}Bj}{c{{B`{HMl}}}Bj}{c{{B`{HMn}}}Bj}{c{{B`{HN`}}}Bj}{c{{B`{HNb}}}Bj}{c{{B`{HNd}}}Bj}{c{{B`{HNf}}}Bj}{c{{B`{HNh}}}Bj}{c{{B`{HNj}}}Bj}{c{{B`{HNl}}}Bj}{c{{B`{HNn}}}Bj}{c{{B`{HO`}}}Bj}{c{{B`{HOb}}}Bj}{c{{B`{HOd}}}Bj}{c{{B`{HOf}}}Bj}{c{{B`{HOh}}}Bj}{c{{B`{HOj}}}Bj}{c{{B`{HOl}}}Bj}{c{{B`{HOn}}}Bj}{c{{B`{I@`}}}Bj}{c{{B`{I@b}}}Bj}{c{{B`{I@d}}}Bj}{c{{B`{I@f}}}Bj}{c{{B`{I@h}}}Bj}{c{{B`{I@j}}}Bj}{c{{B`{I@l}}}Bj}{c{{B`{I@n}}}Bj}{c{{B`{IA`}}}Bj}{c{{B`{IAb}}}Bj}{c{{B`{GAf}}}Bj}{c{{B`{IAd}}}Bj}{c{{B`{IAf}}}Bj}{c{{B`{IAh}}}Bj}{c{{B`{IAj}}}Bj}{c{{B`{IAl}}}Bj}{c{{B`{IAn}}}Bj}{c{{B`{IB`}}}Bj}{c{{B`{IBb}}}Bj}{c{{B`{IBd}}}Bj}{c{{B`{IBf}}}Bj}{c{{B`{IBh}}}Bj}{c{{B`{IBj}}}Bj}{c{{B`{GAh}}}Bj}{c{{B`{IBl}}}Bj}{c{{B`{IBn}}}Bj}{c{{B`{IC`}}}Bj}{c{{B`{GAj}}}Bj}{c{{B`{ICb}}}Bj}{c{{B`{ICd}}}Bj}{c{{B`{GAl}}}Bj}{c{{B`{ICf}}}Bj}{c{{B`{ICh}}}Bj}{c{{B`{ICj}}}Bj}{c{{B`{ICl}}}Bj}{c{{B`{ICn}}}Bj}{c{{B`{GAn}}}Bj}{c{{B`{ID`}}}Bj}{c{{B`{IDb}}}Bj}{c{{B`{IDd}}}Bj}{c{{B`{IDf}}}Bj}{c{{B`{IDh}}}Bj}{c{{B`{IDj}}}Bj}{c{{B`{IDl}}}Bj}{c{{B`{IDn}}}Bj}{c{{B`{IE`}}}Bj}{c{{B`{GB`}}}Bj}{c{{B`{IEb}}}Bj}{c{{B`{IEd}}}Bj}{c{{B`{IEf}}}Bj}{c{{B`{IEh}}}Bj}{c{{B`{IEj}}}Bj}{c{{B`{IEl}}}Bj}{c{{B`{IEn}}}Bj}{c{{B`{IF`}}}Bj}{c{{B`{IFb}}}Bj}{c{{B`{GBb}}}Bj}{c{{B`{GBd}}}Bj}{c{{B`{IFd}}}Bj}{c{{B`{GBf}}}Bj}{c{{B`{IFf}}}Bj}{c{{B`{IFh}}}Bj}{c{{B`{IFj}}}Bj}{c{{B`{IFl}}}Bj}{c{{B`{GBh}}}Bj}{c{{B`{IFn}}}Bj}{c{{B`{IG`}}}Bj}{c{{B`{IGb}}}Bj}{c{{B`{GBj}}}Bj}{c{{B`{IGd}}}Bj}{c{{B`{IGf}}}Bj}{c{{B`{GBl}}}Bj}{c{{B`{GBn}}}Bj}{c{{B`{IGh}}}Bj}{c{{B`{IGj}}}Bj}{c{{B`{IGl}}}Bj}{c{{B`{GC`}}}Bj}{c{{B`{GCb}}}Bj}{c{{B`{IGn}}}Bj}{c{{B`{IH`}}}Bj}{c{{B`{IHb}}}Bj}{c{{B`{IHd}}}Bj}{c{{B`{IHf}}}Bj}{c{{B`{IHh}}}Bj}{c{{B`{GCd}}}Bj}{c{{B`{IHj}}}Bj}{c{{B`{GCf}}}Bj}{c{{B`{GCh}}}Bj}{c{{B`{IHl}}}Bj}{c{{B`{IHn}}}Bj}{c{{B`{II`}}}Bj}{c{{B`{IIb}}}Bj}{c{{B`{IId}}}Bj}{c{{B`{IIf}}}Bj}{c{{B`{GCj}}}Bj}{c{{B`{IIh}}}Bj}{c{{B`{IIj}}}Bj}{c{{B`{IIl}}}Bj}{c{{B`{IIn}}}Bj}{c{{B`{IJ`}}}Bj}{c{{B`{GCl}}}Bj}{c{{B`{GCn}}}Bj}{c{{B`{IJb}}}Bj}{c{{B`{IJd}}}Bj}{c{{B`{IJf}}}Bj}{c{{B`{IJh}}}Bj}{c{{B`{IJj}}}Bj}{c{{B`{IJl}}}Bj}{c{{B`{IJn}}}Bj}{c{{B`{IK`}}}Bj}{c{{B`{IKb}}}Bj}{c{{B`{IKd}}}Bj}{c{{B`{IKf}}}Bj}{c{{B`{IKh}}}Bj}{c{{B`{IKj}}}Bj}{c{{B`{GD`}}}Bj}{c{{B`{IKl}}}Bj}{c{{B`{IKn}}}Bj}{c{{B`{IL`}}}Bj}{c{{B`{ILb}}}Bj}{c{{B`{ILd}}}Bj}{c{{B`{ILf}}}Bj}{c{{B`{GDb}}}Bj}{c{{B`{ILh}}}Bj}{c{{B`{ILj}}}Bj}{c{{B`{ILl}}}Bj}{c{{B`{ILn}}}Bj}{c{{B`{IM`}}}Bj}{c{{B`{IMb}}}Bj}{c{{B`{GDd}}}Bj}{c{{B`{GDf}}}Bj}{c{{B`{IMd}}}Bj}{c{{B`{GDh}}}Bj}{c{{B`{IMf}}}Bj}{c{{B`{IMh}}}Bj}{c{{B`{IMj}}}Bj}{c{{B`{IMl}}}Bj}{c{{B`{IMn}}}Bj}{c{{B`{IN`}}}Bj}{c{{B`{INb}}}Bj}{c{{B`{GDj}}}Bj}{c{{B`{INd}}}Bj}{c{{B`{INf}}}Bj}{c{{B`{INh}}}Bj}{c{{B`{INj}}}Bj}{c{{B`{INl}}}Bj}{c{{B`{INn}}}Bj}{c{{B`{IO`}}}Bj}{c{{B`{IOb}}}Bj}{c{{B`{GDl}}}Bj}{c{{B`{IOd}}}Bj}{c{{B`{IOf}}}Bj}{c{{B`{IOh}}}Bj}```````````{{GAfGAf}GAf}{{GAhGAh}GAh}{{GAjGAj}GAj}{{GAlGAl}GAl}{{GAnGAn}GAn}{{GB`GB`}GB`}{{GBbGBb}GBb}{{GBdGBd}GBd}{{GBfGBf}GBf}{{GBhGBh}GBh}{{GBjGBj}GBj}{{GBlGBl}GBl}{{GBnGBn}GBn}{{GC`GC`}GC`}{{GCbGCb}GCb}{{GCdGCd}GCd}{{GCfGCf}GCf}{{GChGCh}GCh}{{GCjGCj}GCj}{{GClGCl}GCl}{{GCnGCn}GCn}{{GD`GD`}GD`}{{GDbGDb}GDb}{{GDdGDd}GDd}{{GDfGDf}GDf}{{GDhGDh}GDh}{{GDjGDj}GDj}{{GDlGDl}GDl}`````````````````{{}GAf}{{}GAh}{{}GAj}{{}GAl}{{}GAn}{{}GB`}{{}GBb}{{}GBd}{{}GBf}{{}GBh}{{}GBj}{{}GBl}{{}GBn}{{}GC`}{{}GCb}{{}GCd}{{}GCf}{{}GCh}{{}GCj}{{}GCl}{{}GCn}{{}GD`}{{}GDb}{{}GDd}{{}GDf}{{}GDh}{{}GDj}{{}GDl}```````````````{{GDnGDn}Bl}{{GE`GE`}Bl}{{GEbGEb}Bl}{{GEdGEd}Bl}{{GEfGEf}Bl}{{GEhGEh}Bl}{{GEjGEj}Bl}{{GElGEl}Bl}{{GEnGEn}Bl}{{GF`GF`}Bl}{{GFbGFb}Bl}{{GFdGFd}Bl}{{GFfGFf}Bl}{{GFhGFh}Bl}{{GFjGFj}Bl}{{GFlGFl}Bl}{{GFnGFn}Bl}{{GG`GG`}Bl}{{GGbGGb}Bl}{{GGdGGd}Bl}{{GGfGGf}Bl}{{GGhGGh}Bl}{{GGjGGj}Bl}{{GGlGGl}Bl}{{GGnGGn}Bl}{{GH`GH`}Bl}{{GHbGHb}Bl}{{GHdGHd}Bl}{{GHfGHf}Bl}{{GHhGHh}Bl}{{GHjGHj}Bl}{{GHlGHl}Bl}{{GHnGHn}Bl}{{GI`GI`}Bl}{{GIbGIb}Bl}{{GIdGId}Bl}{{GIfGIf}Bl}{{GIhGIh}Bl}{{GIjGIj}Bl}{{GIlGIl}Bl}{{GInGIn}Bl}{{GJ`GJ`}Bl}{{GJbGJb}Bl}{{GJdGJd}Bl}{{GJfGJf}Bl}{{GJhGJh}Bl}{{GJjGJj}Bl}{{GJlGJl}Bl}{{GJnGJn}Bl}{{GK`GK`}Bl}{{GKbGKb}Bl}{{GKdGKd}Bl}{{GKfGKf}Bl}{{GKhGKh}Bl}{{GKjGKj}Bl}{{GKlGKl}Bl}{{GKnGKn}Bl}{{GL`GL`}Bl}{{GLbGLb}Bl}{{GLdGLd}Bl}{{GLfGLf}Bl}{{GLhGLh}Bl}{{GLjGLj}Bl}{{GLlGLl}Bl}{{GLnGLn}Bl}{{GM`GM`}Bl}{{GMbGMb}Bl}{{GMdGMd}Bl}{{GMfGMf}Bl}{{GMhGMh}Bl}{{GMjGMj}Bl}{{GMlGMl}Bl}{{GMnGMn}Bl}{{GN`GN`}Bl}{{GNbGNb}Bl}{{GNdGNd}Bl}{{GNfGNf}Bl}{{GNhGNh}Bl}{{GNjGNj}Bl}{{GNlGNl}Bl}{{GNnGNn}Bl}{{GO`GO`}Bl}{{GObGOb}Bl}{{GOdGOd}Bl}{{GOfGOf}Bl}{{GOhGOh}Bl}{{GOjGOj}Bl}{{GOlGOl}Bl}{{GOnGOn}Bl}{{H@`H@`}Bl}{{H@bH@b}Bl}{{H@dH@d}Bl}{{H@fH@f}Bl}{{H@hH@h}Bl}{{H@jH@j}Bl}{{H@lH@l}Bl}{{H@nH@n}Bl}{{HA`HA`}Bl}{{HAbHAb}Bl}{{HAdHAd}Bl}{{HAfHAf}Bl}{{HAhHAh}Bl}{{HAjHAj}Bl}{{HAlHAl}Bl}{{HAnHAn}Bl}{{HB`HB`}Bl}{{HBbHBb}Bl}{{HBdHBd}Bl}{{HBfHBf}Bl}{{HBhHBh}Bl}{{HBjHBj}Bl}{{HBlHBl}Bl}{{HBnHBn}Bl}{{HC`HC`}Bl}{{HCbHCb}Bl}{{HCdHCd}Bl}{{HCfHCf}Bl}{{HChHCh}Bl}{{HCjHCj}Bl}{{HClHCl}Bl}{{HCnHCn}Bl}{{HD`HD`}Bl}{{HDbHDb}Bl}{{HDdHDd}Bl}{{HDfHDf}Bl}{{HDhHDh}Bl}{{HDjHDj}Bl}{{HDlHDl}Bl}{{HDnHDn}Bl}{{HE`HE`}Bl}{{HEbHEb}Bl}{{HEdHEd}Bl}{{HEfHEf}Bl}{{HEhHEh}Bl}{{HEjHEj}Bl}{{HElHEl}Bl}{{HEnHEn}Bl}{{HF`HF`}Bl}{{HFbHFb}Bl}{{HFdHFd}Bl}{{HFfHFf}Bl}{{HFhHFh}Bl}{{HFjHFj}Bl}{{HFlHFl}Bl}{{HFnHFn}Bl}{{HG`HG`}Bl}{{HGbHGb}Bl}{{HGdHGd}Bl}{{HGfHGf}Bl}{{HGhHGh}Bl}{{HGjHGj}Bl}{{HGlHGl}Bl}{{HGnHGn}Bl}{{HH`HH`}Bl}{{HHbHHb}Bl}{{HHdHHd}Bl}{{HHfHHf}Bl}{{HHhHHh}Bl}{{HHjHHj}Bl}{{HHlHHl}Bl}{{HHnHHn}Bl}{{HI`HI`}Bl}{{HIbHIb}Bl}{{HIdHId}Bl}{{HIfHIf}Bl}{{HIhHIh}Bl}{{HIjHIj}Bl}{{HIlHIl}Bl}{{HInHIn}Bl}{{HJ`HJ`}Bl}{{HJbHJb}Bl}{{HJdHJd}Bl}{{HJfHJf}Bl}{{HJhHJh}Bl}{{HJjHJj}Bl}{{HJlHJl}Bl}{{HJnHJn}Bl}{{HK`HK`}Bl}{{HKbHKb}Bl}{{HKdHKd}Bl}{{HKfHKf}Bl}{{HKhHKh}Bl}{{HKjHKj}Bl}{{HKlHKl}Bl}{{HKnHKn}Bl}{{HL`HL`}Bl}{{HLbHLb}Bl}{{HLdHLd}Bl}{{HLfHLf}Bl}{{HLhHLh}Bl}{{HLjHLj}Bl}{{HLlHLl}Bl}{{HLnHLn}Bl}{{HM`HM`}Bl}{{HMbHMb}Bl}{{HMdHMd}Bl}{{HMfHMf}Bl}{{HMhHMh}Bl}{{HMjHMj}Bl}{{HMlHMl}Bl}{{HMnHMn}Bl}{{HN`HN`}Bl}{{HNbHNb}Bl}{{HNdHNd}Bl}{{HNfHNf}Bl}{{HNhHNh}Bl}{{HNjHNj}Bl}{{HNlHNl}Bl}{{HNnHNn}Bl}{{HO`HO`}Bl}{{HObHOb}Bl}{{HOdHOd}Bl}{{HOfHOf}Bl}{{HOhHOh}Bl}{{HOjHOj}Bl}{{HOlHOl}Bl}{{HOnHOn}Bl}{{I@`I@`}Bl}{{I@bI@b}Bl}{{I@dI@d}Bl}{{I@fI@f}Bl}{{I@hI@h}Bl}{{I@jI@j}Bl}{{I@lI@l}Bl}{{I@nI@n}Bl}{{IA`IA`}Bl}{{IAbIAb}Bl}{{GAfGAf}Bl}{{IAdIAd}Bl}{{IAfIAf}Bl}{{IAhIAh}Bl}{{IAjIAj}Bl}{{IAlIAl}Bl}{{IAnIAn}Bl}{{IB`IB`}Bl}{{IBbIBb}Bl}{{IBdIBd}Bl}{{IBfIBf}Bl}{{IBhIBh}Bl}{{IBjIBj}Bl}{{GAhGAh}Bl}{{IBlIBl}Bl}{{IBnIBn}Bl}{{IC`IC`}Bl}{{GAjGAj}Bl}{{ICbICb}Bl}{{ICdICd}Bl}{{GAlGAl}Bl}{{ICfICf}Bl}{{IChICh}Bl}{{ICjICj}Bl}{{IClICl}Bl}{{ICnICn}Bl}{{GAnGAn}Bl}{{ID`ID`}Bl}{{IDbIDb}Bl}{{IDdIDd}Bl}{{IDfIDf}Bl}{{IDhIDh}Bl}{{IDjIDj}Bl}{{IDlIDl}Bl}{{IDnIDn}Bl}{{IE`IE`}Bl}{{GB`GB`}Bl}{{IEbIEb}Bl}{{IEdIEd}Bl}{{IEfIEf}Bl}{{IEhIEh}Bl}{{IEjIEj}Bl}{{IElIEl}Bl}{{IEnIEn}Bl}{{IF`IF`}Bl}{{IFbIFb}Bl}{{GBbGBb}Bl}{{GBdGBd}Bl}{{IFdIFd}Bl}{{GBfGBf}Bl}{{IFfIFf}Bl}{{IFhIFh}Bl}{{IFjIFj}Bl}{{IFlIFl}Bl}{{GBhGBh}Bl}{{IFnIFn}Bl}{{IG`IG`}Bl}{{IGbIGb}Bl}{{GBjGBj}Bl}{{IGdIGd}Bl}{{IGfIGf}Bl}{{GBlGBl}Bl}{{GBnGBn}Bl}{{IGhIGh}Bl}{{IGjIGj}Bl}{{IGlIGl}Bl}{{GC`GC`}Bl}{{GCbGCb}Bl}{{IGnIGn}Bl}{{IH`IH`}Bl}{{IHbIHb}Bl}{{IHdIHd}Bl}{{IHfIHf}Bl}{{IHhIHh}Bl}{{GCdGCd}Bl}{{IHjIHj}Bl}{{GCfGCf}Bl}{{GChGCh}Bl}{{IHlIHl}Bl}{{IHnIHn}Bl}{{II`II`}Bl}{{IIbIIb}Bl}{{IIdIId}Bl}{{IIfIIf}Bl}{{GCjGCj}Bl}{{IIhIIh}Bl}{{IIjIIj}Bl}{{IIlIIl}Bl}{{IInIIn}Bl}{{IJ`IJ`}Bl}{{GClGCl}Bl}{{GCnGCn}Bl}{{IJbIJb}Bl}{{IJdIJd}Bl}{{IJfIJf}Bl}{{IJhIJh}Bl}{{IJjIJj}Bl}{{IJlIJl}Bl}{{IJnIJn}Bl}{{IK`IK`}Bl}{{IKbIKb}Bl}{{IKdIKd}Bl}{{IKfIKf}Bl}{{IKhIKh}Bl}{{IKjIKj}Bl}{{GD`GD`}Bl}{{IKlIKl}Bl}{{IKnIKn}Bl}{{IL`IL`}Bl}{{ILbILb}Bl}{{ILdILd}Bl}{{ILfILf}Bl}{{GDbGDb}Bl}{{ILhILh}Bl}{{ILjILj}Bl}{{ILlILl}Bl}{{ILnILn}Bl}{{IM`IM`}Bl}{{IMbIMb}Bl}{{GDdGDd}Bl}{{GDfGDf}Bl}{{IMdIMd}Bl}{{GDhGDh}Bl}{{IMfIMf}Bl}{{IMhIMh}Bl}{{IMjIMj}Bl}{{IMlIMl}Bl}{{IMnIMn}Bl}{{IN`IN`}Bl}{{INbINb}Bl}{{GDjGDj}Bl}{{INdINd}Bl}{{INfINf}Bl}{{INhINh}Bl}{{INjINj}Bl}{{INlINl}Bl}{{INnINn}Bl}{{IO`IO`}Bl}{{IObIOb}Bl}{{GDlGDl}Bl}{{IOdIOd}Bl}{{IOfIOf}Bl}{{IOhIOh}Bl}`````````````{{GAfc}Af{{DBb{}{{DB`{GAf}}}}}}{{GAhc}Af{{DBb{}{{DB`{GAh}}}}}}{{GAjc}Af{{DBb{}{{DB`{GAj}}}}}}{{GAlc}Af{{DBb{}{{DB`{GAl}}}}}}{{GAnc}Af{{DBb{}{{DB`{GAn}}}}}}{{GB`c}Af{{DBb{}{{DB`{GB`}}}}}}{{GBbc}Af{{DBb{}{{DB`{GBb}}}}}}{{GBdc}Af{{DBb{}{{DB`{GBd}}}}}}{{GBfc}Af{{DBb{}{{DB`{GBf}}}}}}{{GBhc}Af{{DBb{}{{DB`{GBh}}}}}}{{GBjc}Af{{DBb{}{{DB`{GBj}}}}}}{{GBlc}Af{{DBb{}{{DB`{GBl}}}}}}{{GBnc}Af{{DBb{}{{DB`{GBn}}}}}}{{GC`c}Af{{DBb{}{{DB`{GC`}}}}}}{{GCbc}Af{{DBb{}{{DB`{GCb}}}}}}{{GCdc}Af{{DBb{}{{DB`{GCd}}}}}}{{GCfc}Af{{DBb{}{{DB`{GCf}}}}}}{{GChc}Af{{DBb{}{{DB`{GCh}}}}}}{{GCjc}Af{{DBb{}{{DB`{GCj}}}}}}{{GClc}Af{{DBb{}{{DB`{GCl}}}}}}{{GCnc}Af{{DBb{}{{DB`{GCn}}}}}}{{GD`c}Af{{DBb{}{{DB`{GD`}}}}}}{{GDbc}Af{{DBb{}{{DB`{GDb}}}}}}{{GDdc}Af{{DBb{}{{DB`{GDd}}}}}}{{GDfc}Af{{DBb{}{{DB`{GDf}}}}}}{{GDhc}Af{{DBb{}{{DB`{GDh}}}}}}{{GDjc}Af{{DBb{}{{DB`{GDj}}}}}}{{GDlc}Af{{DBb{}{{DB`{GDl}}}}}}{Bbb}`````````````````````````````````````````````````{{GDnBn}DBd}{{GE`Bn}DBd}{{GEbBn}DBd}{{GEdBn}DBd}{{GEfBn}DBd}{{GEhBn}DBd}{{GEjBn}DBd}{{GElBn}DBd}{{GEnBn}DBd}{{GF`Bn}DBd}{{GFbBn}DBd}{{GFdBn}DBd}{{GFfBn}DBd}{{GFhBn}DBd}{{GFjBn}DBd}{{GFlBn}DBd}{{GFnBn}DBd}{{GG`Bn}DBd}{{GGbBn}DBd}{{GGdBn}DBd}{{GGfBn}DBd}{{GGhBn}DBd}{{GGjBn}DBd}{{GGlBn}DBd}{{GGnBn}DBd}{{GH`Bn}DBd}{{GHbBn}DBd}{{GHdBn}DBd}{{GHfBn}DBd}{{GHhBn}DBd}{{GHjBn}DBd}{{GHlBn}DBd}{{GHnBn}DBd}{{GI`Bn}DBd}{{GIbBn}DBd}{{GIdBn}DBd}{{GIfBn}DBd}{{GIhBn}DBd}{{GIjBn}DBd}{{GIlBn}DBd}{{GInBn}DBd}{{GJ`Bn}DBd}{{GJbBn}DBd}{{GJdBn}DBd}{{GJfBn}DBd}{{GJhBn}DBd}{{GJjBn}DBd}{{GJlBn}DBd}{{GJnBn}DBd}{{GK`Bn}DBd}{{GKbBn}DBd}{{GKdBn}DBd}{{GKfBn}DBd}{{GKhBn}DBd}{{GKjBn}DBd}{{GKlBn}DBd}{{GKnBn}DBd}{{GL`Bn}DBd}{{GLbBn}DBd}{{GLdBn}DBd}{{GLfBn}DBd}{{GLhBn}DBd}{{GLjBn}DBd}{{GLlBn}DBd}{{GLnBn}DBd}{{GM`Bn}DBd}{{GMbBn}DBd}{{GMdBn}DBd}{{GMfBn}DBd}{{GMhBn}DBd}{{GMjBn}DBd}{{GMlBn}DBd}{{GMnBn}DBd}{{GN`Bn}DBd}{{GNbBn}DBd}{{GNdBn}DBd}{{GNfBn}DBd}{{GNhBn}DBd}{{GNjBn}DBd}{{GNlBn}DBd}{{GNnBn}DBd}{{GO`Bn}DBd}{{GObBn}DBd}{{GOdBn}DBd}{{GOfBn}DBd}{{GOhBn}DBd}{{GOjBn}DBd}{{GOlBn}DBd}{{GOnBn}DBd}{{H@`Bn}DBd}{{H@bBn}DBd}{{H@dBn}DBd}{{H@fBn}DBd}{{H@hBn}DBd}{{H@jBn}DBd}{{H@lBn}DBd}{{H@nBn}DBd}{{HA`Bn}DBd}{{HAbBn}DBd}{{HAdBn}DBd}{{HAfBn}DBd}{{HAhBn}DBd}{{HAjBn}DBd}{{HAlBn}DBd}{{HAnBn}DBd}{{HB`Bn}DBd}{{HBbBn}DBd}{{HBdBn}DBd}{{HBfBn}DBd}{{HBhBn}DBd}{{HBjBn}DBd}{{HBlBn}DBd}{{HBnBn}DBd}{{HC`Bn}DBd}{{HCbBn}DBd}{{HCdBn}DBd}{{HCfBn}DBd}{{HChBn}DBd}{{HCjBn}DBd}{{HClBn}DBd}{{HCnBn}DBd}{{HD`Bn}DBd}{{HDbBn}DBd}{{HDdBn}DBd}{{HDfBn}DBd}{{HDhBn}DBd}{{HDjBn}DBd}{{HDlBn}DBd}{{HDnBn}DBd}{{HE`Bn}DBd}{{HEbBn}DBd}{{HEdBn}DBd}{{HEfBn}DBd}{{HEhBn}DBd}{{HEjBn}DBd}{{HElBn}DBd}{{HEnBn}DBd}{{HF`Bn}DBd}{{HFbBn}DBd}{{HFdBn}DBd}{{HFfBn}DBd}{{HFhBn}DBd}{{HFjBn}DBd}{{HFlBn}DBd}{{HFnBn}DBd}{{HG`Bn}DBd}{{HGbBn}DBd}{{HGdBn}DBd}{{HGfBn}DBd}{{HGhBn}DBd}{{HGjBn}DBd}{{HGlBn}DBd}{{HGnBn}DBd}{{HH`Bn}DBd}{{HHbBn}DBd}{{HHdBn}DBd}{{HHfBn}DBd}{{HHhBn}DBd}{{HHjBn}DBd}{{HHlBn}DBd}{{HHnBn}DBd}{{HI`Bn}DBd}{{HIbBn}DBd}{{HIdBn}DBd}{{HIfBn}DBd}{{HIhBn}DBd}{{HIjBn}DBd}{{HIlBn}DBd}{{HInBn}DBd}{{HJ`Bn}DBd}{{HJbBn}DBd}{{HJdBn}DBd}{{HJfBn}DBd}{{HJhBn}DBd}{{HJjBn}DBd}{{HJlBn}DBd}{{HJnBn}DBd}{{HK`Bn}DBd}{{HKbBn}DBd}{{HKdBn}DBd}{{HKfBn}DBd}{{HKhBn}DBd}{{HKjBn}DBd}{{HKlBn}DBd}{{HKnBn}DBd}{{HL`Bn}DBd}{{HLbBn}DBd}{{HLdBn}DBd}{{HLfBn}DBd}{{HLhBn}DBd}{{HLjBn}DBd}{{HLlBn}DBd}{{HLnBn}DBd}{{HM`Bn}DBd}{{HMbBn}DBd}{{HMdBn}DBd}{{HMfBn}DBd}{{HMhBn}DBd}{{HMjBn}DBd}{{HMlBn}DBd}{{HMnBn}DBd}{{HN`Bn}DBd}{{HNbBn}DBd}{{HNdBn}DBd}{{HNfBn}DBd}{{HNhBn}DBd}{{HNjBn}DBd}{{HNlBn}DBd}{{HNnBn}DBd}{{HO`Bn}DBd}{{HObBn}DBd}{{HOdBn}DBd}{{HOfBn}DBd}{{HOhBn}DBd}{{HOjBn}DBd}{{HOlBn}DBd}{{HOnBn}DBd}{{I@`Bn}DBd}{{I@bBn}DBd}{{I@dBn}DBd}{{I@fBn}DBd}{{I@hBn}DBd}{{I@jBn}DBd}{{I@lBn}DBd}{{I@nBn}DBd}{{IA`Bn}DBd}{{IAbBn}DBd}{{GAfBn}DBd}0000{{IAdBn}DBd}{{IAfBn}DBd}{{IAhBn}DBd}{{IAjBn}DBd}{{IAlBn}DBd}{{IAnBn}DBd}{{IB`Bn}DBd}{{IBbBn}DBd}{{IBdBn}DBd}{{IBfBn}DBd}{{IBhBn}DBd}{{IBjBn}DBd}{{GAhBn}DBd}0000{{IBlBn}DBd}{{IBnBn}DBd}{{IC`Bn}DBd}{{GAjBn}DBd}0000{{ICbBn}DBd}{{ICdBn}DBd}{{GAlBn}DBd}0000{{ICfBn}DBd}{{IChBn}DBd}{{ICjBn}DBd}{{IClBn}DBd}{{ICnBn}DBd}{{GAnBn}DBd}0000{{ID`Bn}DBd}{{IDbBn}DBd}{{IDdBn}DBd}{{IDfBn}DBd}{{IDhBn}DBd}{{IDjBn}DBd}{{IDlBn}DBd}{{IDnBn}DBd}{{IE`Bn}DBd}{{GB`Bn}DBd}0000{{IEbBn}DBd}{{IEdBn}DBd}{{IEfBn}DBd}{{IEhBn}DBd}{{IEjBn}DBd}{{IElBn}DBd}{{IEnBn}DBd}{{IF`Bn}DBd}{{IFbBn}DBd}{{GBbBn}DBd}0000{{GBdBn}DBd}0000{{IFdBn}DBd}{{GBfBn}DBd}0000{{IFfBn}DBd}{{IFhBn}DBd}{{IFjBn}DBd}{{IFlBn}DBd}{{GBhBn}DBd}0000{{IFnBn}DBd}{{IG`Bn}DBd}{{IGbBn}DBd}{{GBjBn}DBd}0000{{IGdBn}DBd}{{IGfBn}DBd}{{GBlBn}DBd}0000{{GBnBn}DBd}0000{{IGhBn}DBd}{{IGjBn}DBd}{{IGlBn}DBd}{{GC`Bn}DBd}0000{{GCbBn}DBd}0000{{IGnBn}DBd}{{IH`Bn}DBd}{{IHbBn}DBd}{{IHdBn}DBd}{{IHfBn}DBd}{{IHhBn}DBd}{{GCdBn}DBd}0000{{IHjBn}DBd}{{GCfBn}DBd}0000{{GChBn}DBd}0000{{IHlBn}DBd}{{IHnBn}DBd}{{II`Bn}DBd}{{IIbBn}DBd}{{IIdBn}DBd}{{IIfBn}DBd}{{GCjBn}DBd}0000{{IIhBn}DBd}{{IIjBn}DBd}{{IIlBn}DBd}{{IInBn}DBd}{{IJ`Bn}DBd}{{GClBn}DBd}0000{{GCnBn}DBd}0000{{IJbBn}DBd}{{IJdBn}DBd}{{IJfBn}DBd}{{IJhBn}DBd}{{IJjBn}DBd}{{IJlBn}DBd}{{IJnBn}DBd}{{IK`Bn}DBd}{{IKbBn}DBd}{{IKdBn}DBd}{{IKfBn}DBd}{{IKhBn}DBd}{{IKjBn}DBd}{{GD`Bn}DBd}0000{{IKlBn}DBd}{{IKnBn}DBd}{{IL`Bn}DBd}{{ILbBn}DBd}{{ILdBn}DBd}{{ILfBn}DBd}{{GDbBn}DBd}0000{{ILhBn}DBd}{{ILjBn}DBd}{{ILlBn}DBd}{{ILnBn}DBd}{{IM`Bn}DBd}{{IMbBn}DBd}{{GDdBn}DBd}0000{{GDfBn}DBd}0000{{IMdBn}DBd}{{GDhBn}DBd}0000{{IMfBn}DBd}{{IMhBn}DBd}{{IMjBn}DBd}{{IMlBn}DBd}{{IMnBn}DBd}{{IN`Bn}DBd}{{INbBn}DBd}{{GDjBn}DBd}0000{{INdBn}DBd}{{INfBn}DBd}{{INhBn}DBd}{{INjBn}DBd}{{INlBn}DBd}{{INnBn}DBd}{{IO`Bn}DBd}{{IObBn}DBd}{{GDlBn}DBd}0000{{IOdBn}DBd}{{IOfBn}DBd}{{IOhBn}DBd}``````````````{cc{}}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{Bb{{DBf{GAf}}}}{f{{DBf{GAh}}}}{f{{DBf{GAj}}}}{Hh{{DBf{GAl}}}}{f{{DBf{GAn}}}}{Bb{{DBf{GB`}}}}{f{{DBf{GBb}}}}{f{{DBf{GBd}}}}{b{{DBf{GBf}}}}{Bb{{DBf{GBh}}}}{f{{DBf{GBj}}}}{Bb{{DBf{GBl}}}}{Hh{{DBf{GBn}}}}{b{{DBf{GC`}}}}{f{{DBf{GCb}}}}{Bb{{DBf{GCd}}}}{f{{DBf{GCf}}}}{f{{DBf{GCh}}}}{b{{DBf{GCj}}}}{f{{DBf{GCl}}}}{b{{DBf{GCn}}}}{Bb{{DBf{GD`}}}}{b{{DBf{GDb}}}}{f{{DBf{GDd}}}}{Bb{{DBf{GDf}}}}{b{{DBf{GDh}}}}{b{{DBf{GDj}}}}{f{{DBf{GDl}}}}{BbGAf}{fGAh}{fGAj}{HhGAl}{fGAn}{BbGB`}{fGBb}{fGBd}{bGBf}{BbGBh}{fGBj}{BbGBl}{HhGBn}{bGC`}{fGCb}{BbGCd}{fGCf}{fGCh}{bGCj}{fGCl}{bGCn}{BbGD`}{bGDb}{fGDd}{BbGDf}{bGDh}{bGDj}{fGDl}{BbGAf}{fGAh}{fGAj}{HhGAl}{fGAn}{BbGB`}{fGBb}{fGBd}{bGBf}{BbGBh}{fGBj}{BbGBl}{HhGBn}{bGC`}{fGCb}{BbGCd}{fGCf}{fGCh}{bGCj}{fGCl}{bGCn}{BbGD`}{bGDb}{fGDd}{BbGDf}{bGDh}{bGDj}{fGDl}{DBh{{DBf{IA`}}}}{DBh{{DBf{IAb}}}}{DBh{{DBf{IAd}}}}{DBh{{DBf{IAf}}}}{DBh{{DBf{IAh}}}}{DBh{{DBf{IAj}}}}{DBh{{DBf{IAl}}}}{DBh{{DBf{IAn}}}}{DBh{{DBf{IB`}}}}{DBh{{DBf{IBb}}}}{DBh{{DBf{IBd}}}}{DBh{{DBf{IBf}}}}{DBh{{DBf{IBh}}}}{DBh{{DBf{IBj}}}}{DBh{{DBf{IBl}}}}{DBh{{DBf{IBn}}}}{DBh{{DBf{IC`}}}}{DBh{{DBf{ICb}}}}{DBh{{DBf{ICd}}}}{DBh{{DBf{ICf}}}}{DBh{{DBf{ICh}}}}{DBh{{DBf{ICj}}}}{DBh{{DBf{ICl}}}}{DBh{{DBf{ICn}}}}{DBh{{DBf{ID`}}}}{DBh{{DBf{IDb}}}}{DBh{{DBf{IDd}}}}{DBh{{DBf{IDf}}}}{DBh{{DBf{IDh}}}}{DBh{{DBf{IDj}}}}{DBh{{DBf{IDl}}}}{DBh{{DBf{IDn}}}}{DBh{{DBf{IE`}}}}{DBh{{DBf{IEb}}}}{DBh{{DBf{IEd}}}}{DBh{{DBf{IEf}}}}{DBh{{DBf{IEh}}}}{DBh{{DBf{IEj}}}}{DBh{{DBf{IEl}}}}{DBh{{DBf{IEn}}}}{DBh{{DBf{IF`}}}}{DBh{{DBf{IFb}}}}{DBh{{DBf{IFd}}}}{DBh{{DBf{IFf}}}}{DBh{{DBf{IFh}}}}{DBh{{DBf{IFj}}}}{DBh{{DBf{IFl}}}}{DBh{{DBf{IFn}}}}{DBh{{DBf{IG`}}}}{DBh{{DBf{IGb}}}}{DBh{{DBf{IGd}}}}{DBh{{DBf{IGf}}}}{DBh{{DBf{IGh}}}}{DBh{{DBf{IGj}}}}{DBh{{DBf{IGl}}}}{DBh{{DBf{IGn}}}}{DBh{{DBf{IH`}}}}{DBh{{DBf{IHb}}}}{DBh{{DBf{IHd}}}}{DBh{{DBf{IHf}}}}{DBh{{DBf{IHh}}}}{DBh{{DBf{IHj}}}}{DBh{{DBf{IHl}}}}{DBh{{DBf{IHn}}}}{DBh{{DBf{II`}}}}{DBh{{DBf{IIb}}}}{DBh{{DBf{IId}}}}{DBh{{DBf{IIf}}}}{DBh{{DBf{IIh}}}}{DBh{{DBf{IIj}}}}{DBh{{DBf{IIl}}}}{DBh{{DBf{IIn}}}}{DBh{{DBf{IJ`}}}}{DBh{{DBf{IJb}}}}{DBh{{DBf{IJd}}}}{DBh{{DBf{IJf}}}}{DBh{{DBf{IJh}}}}{DBh{{DBf{IJj}}}}{DBh{{DBf{IJl}}}}{DBh{{DBf{IJn}}}}{DBh{{DBf{IK`}}}}{DBh{{DBf{IKb}}}}{DBh{{DBf{IKd}}}}{DBh{{DBf{IKf}}}}{DBh{{DBf{IKh}}}}{DBh{{DBf{IKj}}}}{DBh{{DBf{IKl}}}}{DBh{{DBf{IKn}}}}{DBh{{DBf{IL`}}}}{DBh{{DBf{ILb}}}}{DBh{{DBf{ILd}}}}{DBh{{DBf{ILf}}}}{DBh{{DBf{ILh}}}}{DBh{{DBf{ILj}}}}{DBh{{DBf{ILl}}}}{DBh{{DBf{ILn}}}}{DBh{{DBf{IM`}}}}{DBh{{DBf{IMb}}}}{DBh{{DBf{IMd}}}}{DBh{{DBf{IMf}}}}{DBh{{DBf{IMh}}}}{DBh{{DBf{IMj}}}}{DBh{{DBf{IMl}}}}{DBh{{DBf{IMn}}}}{DBh{{DBf{IN`}}}}{DBh{{DBf{INb}}}}{DBh{{DBf{INd}}}}{DBh{{DBf{INf}}}}{DBh{{DBf{INh}}}}{DBh{{DBf{INj}}}}{DBh{{DBf{INl}}}}{DBh{{DBf{INn}}}}{DBh{{DBf{IO`}}}}{DBh{{DBf{IOb}}}}{DBh{{DBf{IOd}}}}{DBh{{DBf{IOf}}}}{DBh{{DBf{IOh}}}}{cGAf{{DBb{}{{DB`{GAf}}}}}}{cGAh{{DBb{}{{DB`{GAh}}}}}}{cGAj{{DBb{}{{DB`{GAj}}}}}}{cGAl{{DBb{}{{DB`{GAl}}}}}}{cGAn{{DBb{}{{DB`{GAn}}}}}}{cGB`{{DBb{}{{DB`{GB`}}}}}}{cGBb{{DBb{}{{DB`{GBb}}}}}}{cGBd{{DBb{}{{DB`{GBd}}}}}}{cGBf{{DBb{}{{DB`{GBf}}}}}}{cGBh{{DBb{}{{DB`{GBh}}}}}}{cGBj{{DBb{}{{DB`{GBj}}}}}}{cGBl{{DBb{}{{DB`{GBl}}}}}}{cGBn{{DBb{}{{DB`{GBn}}}}}}{cGC`{{DBb{}{{DB`{GC`}}}}}}{cGCb{{DBb{}{{DB`{GCb}}}}}}{cGCd{{DBb{}{{DB`{GCd}}}}}}{cGCf{{DBb{}{{DB`{GCf}}}}}}{cGCh{{DBb{}{{DB`{GCh}}}}}}{cGCj{{DBb{}{{DB`{GCj}}}}}}{cGCl{{DBb{}{{DB`{GCl}}}}}}{cGCn{{DBb{}{{DB`{GCn}}}}}}{cGD`{{DBb{}{{DB`{GD`}}}}}}{cGDb{{DBb{}{{DB`{GDb}}}}}}{cGDd{{DBb{}{{DB`{GDd}}}}}}{cGDf{{DBb{}{{DB`{GDf}}}}}}{cGDh{{DBb{}{{DB`{GDh}}}}}}{cGDj{{DBb{}{{DB`{GDj}}}}}}{cGDl{{DBb{}{{DB`{GDl}}}}}}{Hh{{DBf{IA`}}}}{Hh{{DBf{IAb}}}}{Hh{{DBf{IAd}}}}{Hh{{DBf{IAf}}}}{Hh{{DBf{IAh}}}}{Hh{{DBf{IAj}}}}{Hh{{DBf{IAl}}}}{Hh{{DBf{IAn}}}}{Hh{{DBf{IB`}}}}{Hh{{DBf{IBb}}}}{Hh{{DBf{IBd}}}}{Hh{{DBf{IBf}}}}{Hh{{DBf{IBh}}}}{Hh{{DBf{IBj}}}}{Hh{{DBf{IBl}}}}{Hh{{DBf{IBn}}}}{Hh{{DBf{IC`}}}}{Hh{{DBf{ICb}}}}{Hh{{DBf{ICd}}}}{Hh{{DBf{ICf}}}}{Hh{{DBf{ICh}}}}{Hh{{DBf{ICj}}}}{Hh{{DBf{ICl}}}}{Hh{{DBf{ICn}}}}{Hh{{DBf{ID`}}}}{Hh{{DBf{IDb}}}}{Hh{{DBf{IDd}}}}{Hh{{DBf{IDf}}}}{Hh{{DBf{IDh}}}}{Hh{{DBf{IDj}}}}{Hh{{DBf{IDl}}}}{Hh{{DBf{IDn}}}}{Hh{{DBf{IE`}}}}{Hh{{DBf{IEb}}}}{Hh{{DBf{IEd}}}}{Hh{{DBf{IEf}}}}{Hh{{DBf{IEh}}}}{Hh{{DBf{IEj}}}}{Hh{{DBf{IEl}}}}{Hh{{DBf{IEn}}}}{Hh{{DBf{IF`}}}}{Hh{{DBf{IFb}}}}{Hh{{DBf{IFd}}}}{Hh{{DBf{IFf}}}}{Hh{{DBf{IFh}}}}{Hh{{DBf{IFj}}}}{Hh{{DBf{IFl}}}}{Hh{{DBf{IFn}}}}{Hh{{DBf{IG`}}}}{Hh{{DBf{IGb}}}}{Hh{{DBf{IGd}}}}{Hh{{DBf{IGf}}}}{Hh{{DBf{IGh}}}}{Hh{{DBf{IGj}}}}{Hh{{DBf{IGl}}}}{Hh{{DBf{IGn}}}}{Hh{{DBf{IH`}}}}{Hh{{DBf{IHb}}}}{Hh{{DBf{IHd}}}}{Hh{{DBf{IHf}}}}{Hh{{DBf{IHh}}}}{Hh{{DBf{IHj}}}}{Hh{{DBf{IHl}}}}{Hh{{DBf{IHn}}}}{Hh{{DBf{II`}}}}{Hh{{DBf{IIb}}}}{Hh{{DBf{IId}}}}{Hh{{DBf{IIf}}}}{Hh{{DBf{IIh}}}}{Hh{{DBf{IIj}}}}{Hh{{DBf{IIl}}}}{Hh{{DBf{IIn}}}}{Hh{{DBf{IJ`}}}}{Hh{{DBf{IJb}}}}{Hh{{DBf{IJd}}}}{Hh{{DBf{IJf}}}}{Hh{{DBf{IJh}}}}{Hh{{DBf{IJj}}}}{Hh{{DBf{IJl}}}}{Hh{{DBf{IJn}}}}{Hh{{DBf{IK`}}}}{Hh{{DBf{IKb}}}}{Hh{{DBf{IKd}}}}{Hh{{DBf{IKf}}}}{Hh{{DBf{IKh}}}}{Hh{{DBf{IKj}}}}{Hh{{DBf{IKl}}}}{Hh{{DBf{IKn}}}}{Hh{{DBf{IL`}}}}{Hh{{DBf{ILb}}}}{Hh{{DBf{ILd}}}}{Hh{{DBf{ILf}}}}{Hh{{DBf{ILh}}}}{Hh{{DBf{ILj}}}}{Hh{{DBf{ILl}}}}{Hh{{DBf{ILn}}}}{Hh{{DBf{IM`}}}}{Hh{{DBf{IMb}}}}{Hh{{DBf{IMd}}}}{Hh{{DBf{IMf}}}}{Hh{{DBf{IMh}}}}{Hh{{DBf{IMj}}}}{Hh{{DBf{IMl}}}}{Hh{{DBf{IMn}}}}{Hh{{DBf{IN`}}}}{Hh{{DBf{INb}}}}{Hh{{DBf{INd}}}}{Hh{{DBf{INf}}}}{Hh{{DBf{INh}}}}{Hh{{DBf{INj}}}}{Hh{{DBf{INl}}}}{Hh{{DBf{INn}}}}{Hh{{DBf{IO`}}}}{Hh{{DBf{IOb}}}}{Hh{{DBf{IOd}}}}{Hh{{DBf{IOf}}}}{Hh{{DBf{IOh}}}}````````````````````````````````````{{GAfc}AfDBj}{{GAhc}AfDBj}{{GAjc}AfDBj}{{GAlc}AfDBj}{{GAnc}AfDBj}{{GB`c}AfDBj}{{GBbc}AfDBj}{{GBdc}AfDBj}{{GBfc}AfDBj}{{GBhc}AfDBj}{{GBjc}AfDBj}{{GBlc}AfDBj}{{GBnc}AfDBj}{{GC`c}AfDBj}{{GCbc}AfDBj}{{GCdc}AfDBj}{{GCfc}AfDBj}{{GChc}AfDBj}{{GCjc}AfDBj}{{GClc}AfDBj}{{GCnc}AfDBj}{{GD`c}AfDBj}{{GDbc}AfDBj}{{GDdc}AfDBj}{{GDfc}AfDBj}{{GDhc}AfDBj}{{GDjc}AfDBj}{{GDlc}AfDBj}```````````````````````````````````````````````````````````````{{GAfGAf}Af}{{GAhGAh}Af}{{GAjGAj}Af}{{GAlGAl}Af}{{GAnGAn}Af}{{GB`GB`}Af}{{GBbGBb}Af}{{GBdGBd}Af}{{GBfGBf}Af}{{GBhGBh}Af}{{GBjGBj}Af}{{GBlGBl}Af}{{GBnGBn}Af}{{GC`GC`}Af}{{GCbGCb}Af}{{GCdGCd}Af}{{GCfGCf}Af}{{GChGCh}Af}{{GCjGCj}Af}{{GClGCl}Af}{{GCnGCn}Af}{{GD`GD`}Af}{{GDbGDb}Af}{{GDdGDd}Af}{{GDfGDf}Af}{{GDhGDh}Af}{{GDjGDj}Af}{{GDlGDl}Af}``````````````{{GAfGAf}GAf}{{GAhGAh}GAh}{{GAjGAj}GAj}{{GAlGAl}GAl}{{GAnGAn}GAn}{{GB`GB`}GB`}{{GBbGBb}GBb}{{GBdGBd}GBd}{{GBfGBf}GBf}{{GBhGBh}GBh}{{GBjGBj}GBj}{{GBlGBl}GBl}{{GBnGBn}GBn}{{GC`GC`}GC`}{{GCbGCb}GCb}{{GCdGCd}GCd}{{GCfGCf}GCf}{{GChGCh}GCh}{{GCjGCj}GCj}{{GClGCl}GCl}{{GCnGCn}GCn}{{GD`GD`}GD`}{{GDbGDb}GDb}{{GDdGDd}GDd}{{GDfGDf}GDf}{{GDhGDh}GDh}{{GDjGDj}GDj}{{GDlGDl}GDl}{{GAfGAf}Bl}{{GAhGAh}Bl}{{GAjGAj}Bl}{{GAlGAl}Bl}{{GAnGAn}Bl}{{GB`GB`}Bl}{{GBbGBb}Bl}{{GBdGBd}Bl}{{GBfGBf}Bl}{{GBhGBh}Bl}{{GBjGBj}Bl}{{GBlGBl}Bl}{{GBnGBn}Bl}{{GC`GC`}Bl}{{GCbGCb}Bl}{{GCdGCd}Bl}{{GCfGCf}Bl}{{GChGCh}Bl}{{GCjGCj}Bl}{{GClGCl}Bl}{{GCnGCn}Bl}{{GD`GD`}Bl}{{GDbGDb}Bl}{{GDdGDd}Bl}{{GDfGDf}Bl}{{GDhGDh}Bl}{{GDjGDj}Bl}{{GDlGDl}Bl}`{ce{}{}}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{GAfBl}{GAhBl}{GAjBl}{GAlBl}{GAnBl}{GB`Bl}{GBbBl}{GBdBl}{GBfBl}{GBhBl}{GBjBl}{GBlBl}{GBnBl}{GC`Bl}{GCbBl}{GCdBl}{GCfBl}{GChBl}{GCjBl}{GClBl}{GCnBl}{GD`Bl}{GDbBl}{GDdBl}{GDfBl}{GDhBl}{GDjBl}{GDlBl}{GAfBl}{GAhBl}{GAjBl}{GAlBl}{GAnBl}{GB`Bl}{GBbBl}{GBdBl}{GBfBl}{GBhBl}{GBjBl}{GBlBl}{GBnBl}{GC`Bl}{GCbBl}{GCdBl}{GCfBl}{GChBl}{GCjBl}{GClBl}{GCnBl}{GD`Bl}{GDbBl}{GDdBl}{GDfBl}{GDhBl}{GDjBl}{GDlBl}```````````````````````````````````````````````````````````````````````````````````````````````````````````````{GDnBb}`{Ah{{B`{BbAh}}}}{GDnAh}```````````````````````````````````````{GAfGAf}{GAhGAh}{GAjGAj}{GAlGAl}{GAnGAn}{GB`GB`}{GBbGBb}{GBdGBd}{GBfGBf}{GBhGBh}{GBjGBj}{GBlGBl}{GBnGBn}{GC`GC`}{GCbGCb}{GCdGCd}{GCfGCf}{GChGCh}{GCjGCj}{GClGCl}{GCnGCn}{GD`GD`}{GDbGDb}{GDdGDd}{GDfGDf}{GDhGDh}{GDjGDj}{GDlGDl}````````````````````````````````````````````````````````````````````````````````````````````{{nBb{d{b}}}{{B`{GDnBh}}}}{{GAfGAf}{{DBf{DAn}}}}{{GAhGAh}{{DBf{DAn}}}}{{GAjGAj}{{DBf{DAn}}}}{{GAlGAl}{{DBf{DAn}}}}{{GAnGAn}{{DBf{DAn}}}}{{GB`GB`}{{DBf{DAn}}}}{{GBbGBb}{{DBf{DAn}}}}{{GBdGBd}{{DBf{DAn}}}}{{GBfGBf}{{DBf{DAn}}}}{{GBhGBh}{{DBf{DAn}}}}{{GBjGBj}{{DBf{DAn}}}}{{GBlGBl}{{DBf{DAn}}}}{{GBnGBn}{{DBf{DAn}}}}{{GC`GC`}{{DBf{DAn}}}}{{GCbGCb}{{DBf{DAn}}}}{{GCdGCd}{{DBf{DAn}}}}{{GCfGCf}{{DBf{DAn}}}}{{GChGCh}{{DBf{DAn}}}}{{GCjGCj}{{DBf{DAn}}}}{{GClGCl}{{DBf{DAn}}}}{{GCnGCn}{{DBf{DAn}}}}{{GD`GD`}{{DBf{DAn}}}}{{GDbGDb}{{DBf{DAn}}}}{{GDdGDd}{{DBf{DAn}}}}{{GDfGDf}{{DBf{DAn}}}}{{GDhGDh}{{DBf{DAn}}}}{{GDjGDj}{{DBf{DAn}}}}{{GDlGDl}{{DBf{DAn}}}}`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{{GAfGAf}Af}{{GAhGAh}Af}{{GAjGAj}Af}{{GAlGAl}Af}{{GAnGAn}Af}{{GB`GB`}Af}{{GBbGBb}Af}{{GBdGBd}Af}{{GBfGBf}Af}{{GBhGBh}Af}{{GBjGBj}Af}{{GBlGBl}Af}{{GBnGBn}Af}{{GC`GC`}Af}{{GCbGCb}Af}{{GCdGCd}Af}{{GCfGCf}Af}{{GChGCh}Af}{{GCjGCj}Af}{{GClGCl}Af}{{GCnGCn}Af}{{GD`GD`}Af}{{GDbGDb}Af}{{GDdGDd}Af}{{GDfGDf}Af}{{GDhGDh}Af}{{GDjGDj}Af}{{GDlGDl}Af}```````````````````````````````````````````````````````````````````````````````````````````````````{{GDnn{d{b}}}Cl}{{GE`n{d{b}}}Cl}{{GEbn{d{b}}}Cl}{{GEdn{d{b}}}Cl}{{GEfn{d{b}}}Cl}{{GEhn{d{b}}}Cl}{{GEjn{d{b}}}Cl}{{GEln{d{b}}}Cl}{{GEnn{d{b}}}Cl}{{GF`n{d{b}}}Cl}{{GFbn{d{b}}}Cl}{{GFdn{d{b}}}Cl}{{GFfn{d{b}}}Cl}{{GFhn{d{b}}}Cl}{{GFjn{d{b}}}Cl}{{GFln{d{b}}}Cl}{{GFnn{d{b}}}Cl}{{GG`n{d{b}}}Cl}{{GGbn{d{b}}}Cl}{{GGdn{d{b}}}Cl}{{GGfn{d{b}}}Cl}{{GGhn{d{b}}}Cl}{{GGjn{d{b}}}Cl}{{GGln{d{b}}}Cl}{{GGnn{d{b}}}Cl}{{GH`n{d{b}}}Cl}{{GHbn{d{b}}}Cl}{{GHdn{d{b}}}Cl}{{GHfn{d{b}}}Cl}{{GHhn{d{b}}}Cl}{{GHjn{d{b}}}Cl}{{GHln{d{b}}}Cl}{{GHnn{d{b}}}Cl}{{GI`n{d{b}}}Cl}{{GIbn{d{b}}}Cl}{{GIdn{d{b}}}Cl}{{GIfn{d{b}}}Cl}{{GIhn{d{b}}}Cl}{{GIjn{d{b}}}Cl}{{GIln{d{b}}}Cl}{{GInn{d{b}}}Cl}{{GJ`n{d{b}}}Cl}{{GJbn{d{b}}}Cl}{{GJdn{d{b}}}Cl}{{GJfn{d{b}}}Cl}{{GJhn{d{b}}}Cl}{{GJjn{d{b}}}Cl}{{GJln{d{b}}}Cl}{{GJnn{d{b}}}Cl}{{GK`n{d{b}}}Cl}{{GKbn{d{b}}}Cl}{{GKdn{d{b}}}Cl}{{GKfn{d{b}}}Cl}{{GKhn{d{b}}}Cl}{{GKjn{d{b}}}Cl}{{GKln{d{b}}}Cl}{{GKnn{d{b}}}Cl}{{GL`n{d{b}}}Cl}{{GLbn{d{b}}}Cl}{{GLdn{d{b}}}Cl}{{GLfn{d{b}}}Cl}{{GLhn{d{b}}}Cl}{{GLjn{d{b}}}Cl}{{GLln{d{b}}}Cl}{{GLnn{d{b}}}Cl}{{GM`n{d{b}}}Cl}{{GMbn{d{b}}}Cl}{{GMdn{d{b}}}Cl}{{GMfn{d{b}}}Cl}{{GMhn{d{b}}}Cl}{{GMjn{d{b}}}Cl}{{GMln{d{b}}}Cl}{{GMnn{d{b}}}Cl}{{GN`n{d{b}}}Cl}{{GNbn{d{b}}}Cl}{{GNdn{d{b}}}Cl}{{GNfn{d{b}}}Cl}{{GNhn{d{b}}}Cl}{{GNjn{d{b}}}Cl}{{GNln{d{b}}}Cl}{{GNnn{d{b}}}Cl}{{GO`n{d{b}}}Cl}{{GObn{d{b}}}Cl}{{GOdn{d{b}}}Cl}{{GOfn{d{b}}}Cl}{{GOhn{d{b}}}Cl}{{GOjn{d{b}}}Cl}{{GOln{d{b}}}Cl}{{GOnn{d{b}}}Cl}{{H@`n{d{b}}}Cl}{{H@bn{d{b}}}Cl}{{H@dn{d{b}}}Cl}{{H@fn{d{b}}}Cl}{{H@hn{d{b}}}Cl}{{H@jn{d{b}}}Cl}{{H@ln{d{b}}}Cl}{{H@nn{d{b}}}Cl}{{HA`n{d{b}}}Cl}{{HAbn{d{b}}}Cl}{{HAdn{d{b}}}Cl}{{HAfn{d{b}}}Cl}{{HAhn{d{b}}}Cl}{{HAjn{d{b}}}Cl}{{HAln{d{b}}}Cl}{{HAnn{d{b}}}Cl}{{HB`n{d{b}}}Cl}{{HBbn{d{b}}}Cl}{{HBdn{d{b}}}Cl}{{HBfn{d{b}}}Cl}{{HBhn{d{b}}}Cl}{{HBjn{d{b}}}Cl}{{HBln{d{b}}}Cl}{{HBnn{d{b}}}Cl}{{HC`n{d{b}}}Cl}{{HCbn{d{b}}}Cl}{{HCdn{d{b}}}Cl}{{HCfn{d{b}}}Cl}{{HChn{d{b}}}Cl}{{HCjn{d{b}}}Cl}{{HCln{d{b}}}Cl}{{HCnn{d{b}}}Cl}{{HD`n{d{b}}}Cl}{{HDbn{d{b}}}Cl}{{HDdn{d{b}}}Cl}{{HDfn{d{b}}}Cl}{{HDhn{d{b}}}Cl}{{HDjn{d{b}}}Cl}{{HDln{d{b}}}Cl}{{HDnn{d{b}}}Cl}{{HE`n{d{b}}}Cl}{{HEbn{d{b}}}Cl}{{HEdn{d{b}}}Cl}{{HEfn{d{b}}}Cl}{{HEhn{d{b}}}Cl}{{HEjn{d{b}}}Cl}{{HEln{d{b}}}Cl}{{HEnn{d{b}}}Cl}{{HF`n{d{b}}}Cl}{{HFbn{d{b}}}Cl}{{HFdn{d{b}}}Cl}{{HFfn{d{b}}}Cl}{{HFhn{d{b}}}Cl}{{HFjn{d{b}}}Cl}{{HFln{d{b}}}Cl}{{HFnn{d{b}}}Cl}{{HG`n{d{b}}}Cl}{{HGbn{d{b}}}Cl}{{HGdn{d{b}}}Cl}{{HGfn{d{b}}}Cl}{{HGhn{d{b}}}Cl}{{HGjn{d{b}}}Cl}{{HGln{d{b}}}Cl}{{HGnn{d{b}}}Cl}{{HH`n{d{b}}}Cl}{{HHbn{d{b}}}Cl}{{HHdn{d{b}}}Cl}{{HHfn{d{b}}}Cl}{{HHhn{d{b}}}Cl}{{HHjn{d{b}}}Cl}{{HHln{d{b}}}Cl}{{HHnn{d{b}}}Cl}{{HI`n{d{b}}}Cl}{{HIbn{d{b}}}Cl}{{HIdn{d{b}}}Cl}{{HIfn{d{b}}}Cl}{{HIhn{d{b}}}Cl}{{HIjn{d{b}}}Cl}{{HIln{d{b}}}Cl}{{HInn{d{b}}}Cl}{{HJ`n{d{b}}}Cl}{{HJbn{d{b}}}Cl}{{HJdn{d{b}}}Cl}{{HJfn{d{b}}}Cl}{{HJhn{d{b}}}Cl}{{HJjn{d{b}}}Cl}{{HJln{d{b}}}Cl}{{HJnn{d{b}}}Cl}{{HK`n{d{b}}}Cl}{{HKbn{d{b}}}Cl}{{HKdn{d{b}}}Cl}{{HKfn{d{b}}}Cl}{{HKhn{d{b}}}Cl}{{HKjn{d{b}}}Cl}{{HKln{d{b}}}Cl}{{HKnn{d{b}}}Cl}{{HL`n{d{b}}}Cl}{{HLbn{d{b}}}Cl}{{HLdn{d{b}}}Cl}{{HLfn{d{b}}}Cl}{{HLhn{d{b}}}Cl}{{HLjn{d{b}}}Cl}{{HLln{d{b}}}Cl}{{HLnn{d{b}}}Cl}{{HM`n{d{b}}}Cl}{{HMbn{d{b}}}Cl}{{HMdn{d{b}}}Cl}{{HMfn{d{b}}}Cl}{{HMhn{d{b}}}Cl}{{HMjn{d{b}}}Cl}{{HMln{d{b}}}Cl}{{HMnn{d{b}}}Cl}{{HN`n{d{b}}}Cl}{{HNbn{d{b}}}Cl}{{HNdn{d{b}}}Cl}{{HNfn{d{b}}}Cl}{{HNhn{d{b}}}Cl}{{HNjn{d{b}}}Cl}{{HNln{d{b}}}Cl}{{HNnn{d{b}}}Cl}{{HO`n{d{b}}}Cl}{{HObn{d{b}}}Cl}{{HOdn{d{b}}}Cl}{{HOfn{d{b}}}Cl}{{HOhn{d{b}}}Cl}{{HOjn{d{b}}}Cl}{{HOln{d{b}}}Cl}{{HOnn{d{b}}}Cl}{{I@`n{d{b}}}Cl}{{I@bn{d{b}}}Cl}{{I@dn{d{b}}}Cl}{{I@fn{d{b}}}Cl}{{I@hn{d{b}}}Cl}{{I@jn{d{b}}}Cl}{{I@ln{d{b}}}Cl}{{I@nn{d{b}}}Cl}`{{GDnc}B`D`}{{GE`c}B`D`}{{GEbc}B`D`}{{GEdc}B`D`}{{GEfc}B`D`}{{GEhc}B`D`}{{GEjc}B`D`}{{GElc}B`D`}{{GEnc}B`D`}{{GF`c}B`D`}{{GFbc}B`D`}{{GFdc}B`D`}{{GFfc}B`D`}{{GFhc}B`D`}{{GFjc}B`D`}{{GFlc}B`D`}{{GFnc}B`D`}{{GG`c}B`D`}{{GGbc}B`D`}{{GGdc}B`D`}{{GGfc}B`D`}{{GGhc}B`D`}{{GGjc}B`D`}{{GGlc}B`D`}{{GGnc}B`D`}{{GH`c}B`D`}{{GHbc}B`D`}{{GHdc}B`D`}{{GHfc}B`D`}{{GHhc}B`D`}{{GHjc}B`D`}{{GHlc}B`D`}{{GHnc}B`D`}{{GI`c}B`D`}{{GIbc}B`D`}{{GIdc}B`D`}{{GIfc}B`D`}{{GIhc}B`D`}{{GIjc}B`D`}{{GIlc}B`D`}{{GInc}B`D`}{{GJ`c}B`D`}{{GJbc}B`D`}{{GJdc}B`D`}{{GJfc}B`D`}{{GJhc}B`D`}{{GJjc}B`D`}{{GJlc}B`D`}{{GJnc}B`D`}{{GK`c}B`D`}{{GKbc}B`D`}{{GKdc}B`D`}{{GKfc}B`D`}{{GKhc}B`D`}{{GKjc}B`D`}{{GKlc}B`D`}{{GKnc}B`D`}{{GL`c}B`D`}{{GLbc}B`D`}{{GLdc}B`D`}{{GLfc}B`D`}{{GLhc}B`D`}{{GLjc}B`D`}{{GLlc}B`D`}{{GLnc}B`D`}{{GM`c}B`D`}{{GMbc}B`D`}{{GMdc}B`D`}{{GMfc}B`D`}{{GMhc}B`D`}{{GMjc}B`D`}{{GMlc}B`D`}{{GMnc}B`D`}{{GN`c}B`D`}{{GNbc}B`D`}{{GNdc}B`D`}{{GNfc}B`D`}{{GNhc}B`D`}{{GNjc}B`D`}{{GNlc}B`D`}{{GNnc}B`D`}{{GO`c}B`D`}{{GObc}B`D`}{{GOdc}B`D`}{{GOfc}B`D`}{{GOhc}B`D`}{{GOjc}B`D`}{{GOlc}B`D`}{{GOnc}B`D`}{{H@`c}B`D`}{{H@bc}B`D`}{{H@dc}B`D`}{{H@fc}B`D`}{{H@hc}B`D`}{{H@jc}B`D`}{{H@lc}B`D`}{{H@nc}B`D`}{{HA`c}B`D`}{{HAbc}B`D`}{{HAdc}B`D`}{{HAfc}B`D`}{{HAhc}B`D`}{{HAjc}B`D`}{{HAlc}B`D`}{{HAnc}B`D`}{{HB`c}B`D`}{{HBbc}B`D`}{{HBdc}B`D`}{{HBfc}B`D`}{{HBhc}B`D`}{{HBjc}B`D`}{{HBlc}B`D`}{{HBnc}B`D`}{{HC`c}B`D`}{{HCbc}B`D`}{{HCdc}B`D`}{{HCfc}B`D`}{{HChc}B`D`}{{HCjc}B`D`}{{HClc}B`D`}{{HCnc}B`D`}{{HD`c}B`D`}{{HDbc}B`D`}{{HDdc}B`D`}{{HDfc}B`D`}{{HDhc}B`D`}{{HDjc}B`D`}{{HDlc}B`D`}{{HDnc}B`D`}{{HE`c}B`D`}{{HEbc}B`D`}{{HEdc}B`D`}{{HEfc}B`D`}{{HEhc}B`D`}{{HEjc}B`D`}{{HElc}B`D`}{{HEnc}B`D`}{{HF`c}B`D`}{{HFbc}B`D`}{{HFdc}B`D`}{{HFfc}B`D`}{{HFhc}B`D`}{{HFjc}B`D`}{{HFlc}B`D`}{{HFnc}B`D`}{{HG`c}B`D`}{{HGbc}B`D`}{{HGdc}B`D`}{{HGfc}B`D`}{{HGhc}B`D`}{{HGjc}B`D`}{{HGlc}B`D`}{{HGnc}B`D`}{{HH`c}B`D`}{{HHbc}B`D`}{{HHdc}B`D`}{{HHfc}B`D`}{{HHhc}B`D`}{{HHjc}B`D`}{{HHlc}B`D`}{{HHnc}B`D`}{{HI`c}B`D`}{{HIbc}B`D`}{{HIdc}B`D`}{{HIfc}B`D`}{{HIhc}B`D`}{{HIjc}B`D`}{{HIlc}B`D`}{{HInc}B`D`}{{HJ`c}B`D`}{{HJbc}B`D`}{{HJdc}B`D`}{{HJfc}B`D`}{{HJhc}B`D`}{{HJjc}B`D`}{{HJlc}B`D`}{{HJnc}B`D`}{{HK`c}B`D`}{{HKbc}B`D`}{{HKdc}B`D`}{{HKfc}B`D`}{{HKhc}B`D`}{{HKjc}B`D`}{{HKlc}B`D`}{{HKnc}B`D`}{{HL`c}B`D`}{{HLbc}B`D`}{{HLdc}B`D`}{{HLfc}B`D`}{{HLhc}B`D`}{{HLjc}B`D`}{{HLlc}B`D`}{{HLnc}B`D`}{{HM`c}B`D`}{{HMbc}B`D`}{{HMdc}B`D`}{{HMfc}B`D`}{{HMhc}B`D`}{{HMjc}B`D`}{{HMlc}B`D`}{{HMnc}B`D`}{{HN`c}B`D`}{{HNbc}B`D`}{{HNdc}B`D`}{{HNfc}B`D`}{{HNhc}B`D`}{{HNjc}B`D`}{{HNlc}B`D`}{{HNnc}B`D`}{{HO`c}B`D`}{{HObc}B`D`}{{HOdc}B`D`}{{HOfc}B`D`}{{HOhc}B`D`}{{HOjc}B`D`}{{HOlc}B`D`}{{HOnc}B`D`}{{I@`c}B`D`}{{I@bc}B`D`}{{I@dc}B`D`}{{I@fc}B`D`}{{I@hc}B`D`}{{I@jc}B`D`}{{I@lc}B`D`}{{I@nc}B`D`}{{IA`c}B`D`}{{IAbc}B`D`}{{GAfc}B`D`}{{IAdc}B`D`}{{IAfc}B`D`}{{IAhc}B`D`}{{IAjc}B`D`}{{IAlc}B`D`}{{IAnc}B`D`}{{IB`c}B`D`}{{IBbc}B`D`}{{IBdc}B`D`}{{IBfc}B`D`}{{IBhc}B`D`}{{IBjc}B`D`}{{GAhc}B`D`}{{IBlc}B`D`}{{IBnc}B`D`}{{IC`c}B`D`}{{GAjc}B`D`}{{ICbc}B`D`}{{ICdc}B`D`}{{GAlc}B`D`}{{ICfc}B`D`}{{IChc}B`D`}{{ICjc}B`D`}{{IClc}B`D`}{{ICnc}B`D`}{{GAnc}B`D`}{{ID`c}B`D`}{{IDbc}B`D`}{{IDdc}B`D`}{{IDfc}B`D`}{{IDhc}B`D`}{{IDjc}B`D`}{{IDlc}B`D`}{{IDnc}B`D`}{{IE`c}B`D`}{{GB`c}B`D`}{{IEbc}B`D`}{{IEdc}B`D`}{{IEfc}B`D`}{{IEhc}B`D`}{{IEjc}B`D`}{{IElc}B`D`}{{IEnc}B`D`}{{IF`c}B`D`}{{IFbc}B`D`}{{GBbc}B`D`}{{GBdc}B`D`}{{IFdc}B`D`}{{GBfc}B`D`}{{IFfc}B`D`}{{IFhc}B`D`}{{IFjc}B`D`}{{IFlc}B`D`}{{GBhc}B`D`}{{IFnc}B`D`}{{IG`c}B`D`}{{IGbc}B`D`}{{GBjc}B`D`}{{IGdc}B`D`}{{IGfc}B`D`}{{GBlc}B`D`}{{GBnc}B`D`}{{IGhc}B`D`}{{IGjc}B`D`}{{IGlc}B`D`}{{GC`c}B`D`}{{GCbc}B`D`}{{IGnc}B`D`}{{IH`c}B`D`}{{IHbc}B`D`}{{IHdc}B`D`}{{IHfc}B`D`}{{IHhc}B`D`}{{GCdc}B`D`}{{IHjc}B`D`}{{GCfc}B`D`}{{GChc}B`D`}{{IHlc}B`D`}{{IHnc}B`D`}{{II`c}B`D`}{{IIbc}B`D`}{{IIdc}B`D`}{{IIfc}B`D`}{{GCjc}B`D`}{{IIhc}B`D`}{{IIjc}B`D`}{{IIlc}B`D`}{{IInc}B`D`}{{IJ`c}B`D`}{{GClc}B`D`}{{GCnc}B`D`}{{IJbc}B`D`}{{IJdc}B`D`}{{IJfc}B`D`}{{IJhc}B`D`}{{IJjc}B`D`}{{IJlc}B`D`}{{IJnc}B`D`}{{IK`c}B`D`}{{IKbc}B`D`}{{IKdc}B`D`}{{IKfc}B`D`}{{IKhc}B`D`}{{IKjc}B`D`}{{GD`c}B`D`}{{IKlc}B`D`}{{IKnc}B`D`}{{IL`c}B`D`}{{ILbc}B`D`}{{ILdc}B`D`}{{ILfc}B`D`}{{GDbc}B`D`}{{ILhc}B`D`}{{ILjc}B`D`}{{ILlc}B`D`}{{ILnc}B`D`}{{IM`c}B`D`}{{IMbc}B`D`}{{GDdc}B`D`}{{GDfc}B`D`}{{IMdc}B`D`}{{GDhc}B`D`}{{IMfc}B`D`}{{IMhc}B`D`}{{IMjc}B`D`}{{IMlc}B`D`}{{IMnc}B`D`}{{IN`c}B`D`}{{INbc}B`D`}{{GDjc}B`D`}{{INdc}B`D`}{{INfc}B`D`}{{INhc}B`D`}{{INjc}B`D`}{{INlc}B`D`}{{INnc}B`D`}{{IO`c}B`D`}{{IObc}B`D`}{{GDlc}B`D`}{{IOdc}B`D`}{{IOfc}B`D`}{{IOhc}B`D`}````````{{GAfGAfBl}Af}{{GAhGAhBl}Af}{{GAjGAjBl}Af}{{GAlGAlBl}Af}{{GAnGAnBl}Af}{{GB`GB`Bl}Af}{{GBbGBbBl}Af}{{GBdGBdBl}Af}{{GBfGBfBl}Af}{{GBhGBhBl}Af}{{GBjGBjBl}Af}{{GBlGBlBl}Af}{{GBnGBnBl}Af}{{GC`GC`Bl}Af}{{GCbGCbBl}Af}{{GCdGCdBl}Af}{{GCfGCfBl}Af}{{GChGChBl}Af}{{GCjGCjBl}Af}{{GClGClBl}Af}{{GCnGCnBl}Af}{{GD`GD`Bl}Af}{{GDbGDbBl}Af}{{GDdGDdBl}Af}{{GDfGDfBl}Af}{{GDhGDhBl}Af}{{GDjGDjBl}Af}{{GDlGDlBl}Af}```````````````````````````````````````````{{GAfGAf}GAf}{{GAhGAh}GAh}{{GAjGAj}GAj}{{GAlGAl}GAl}{{GAnGAn}GAn}{{GB`GB`}GB`}{{GBbGBb}GBb}{{GBdGBd}GBd}{{GBfGBf}GBf}{{GBhGBh}GBh}{{GBjGBj}GBj}{{GBlGBl}GBl}{{GBnGBn}GBn}{{GC`GC`}GC`}{{GCbGCb}GCb}{{GCdGCd}GCd}{{GCfGCf}GCf}{{GChGCh}GCh}{{GCjGCj}GCj}{{GClGCl}GCl}{{GCnGCn}GCn}{{GD`GD`}GD`}{{GDbGDb}GDb}{{GDdGDd}GDd}{{GDfGDf}GDf}{{GDhGDh}GDh}{{GDjGDj}GDj}{{GDlGDl}GDl}{{GAfGAf}Af}{{GAhGAh}Af}{{GAjGAj}Af}{{GAlGAl}Af}{{GAnGAn}Af}{{GB`GB`}Af}{{GBbGBb}Af}{{GBdGBd}Af}{{GBfGBf}Af}{{GBhGBh}Af}{{GBjGBj}Af}{{GBlGBl}Af}{{GBnGBn}Af}{{GC`GC`}Af}{{GCbGCb}Af}{{GCdGCd}Af}{{GCfGCf}Af}{{GChGCh}Af}{{GCjGCj}Af}{{GClGCl}Af}{{GCnGCn}Af}{{GD`GD`}Af}{{GDbGDb}Af}{{GDdGDd}Af}{{GDfGDf}Af}{{GDhGDh}Af}{{GDjGDj}Af}{{GDlGDl}Af}`````{{GAfGAf}GAf}{{GAhGAh}GAh}{{GAjGAj}GAj}{{GAlGAl}GAl}{{GAnGAn}GAn}{{GB`GB`}GB`}{{GBbGBb}GBb}{{GBdGBd}GBd}{{GBfGBf}GBf}{{GBhGBh}GBh}{{GBjGBj}GBj}{{GBlGBl}GBl}{{GBnGBn}GBn}{{GC`GC`}GC`}{{GCbGCb}GCb}{{GCdGCd}GCd}{{GCfGCf}GCf}{{GChGCh}GCh}{{GCjGCj}GCj}{{GClGCl}GCl}{{GCnGCn}GCn}{{GD`GD`}GD`}{{GDbGDb}GDb}{{GDdGDd}GDd}{{GDfGDf}GDf}{{GDhGDh}GDh}{{GDjGDj}GDj}{{GDlGDl}GDl}```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{IA`{{DBf{DBh}}}}{IAb{{DBf{DBh}}}}{IAd{{DBf{DBh}}}}{IAf{{DBf{DBh}}}}{IAh{{DBf{DBh}}}}{IAj{{DBf{DBh}}}}{IAl{{DBf{DBh}}}}{IAn{{DBf{DBh}}}}{IB`{{DBf{DBh}}}}{IBb{{DBf{DBh}}}}{IBd{{DBf{DBh}}}}{IBf{{DBf{DBh}}}}{IBh{{DBf{DBh}}}}{IBj{{DBf{DBh}}}}{IBl{{DBf{DBh}}}}{IBn{{DBf{DBh}}}}{IC`{{DBf{DBh}}}}{ICb{{DBf{DBh}}}}{ICd{{DBf{DBh}}}}{ICf{{DBf{DBh}}}}{ICh{{DBf{DBh}}}}{ICj{{DBf{DBh}}}}{ICl{{DBf{DBh}}}}{ICn{{DBf{DBh}}}}{ID`{{DBf{DBh}}}}{IDb{{DBf{DBh}}}}{IDd{{DBf{DBh}}}}{IDf{{DBf{DBh}}}}{IDh{{DBf{DBh}}}}{IDj{{DBf{DBh}}}}{IDl{{DBf{DBh}}}}{IDn{{DBf{DBh}}}}{IE`{{DBf{DBh}}}}{IEb{{DBf{DBh}}}}{IEd{{DBf{DBh}}}}{IEf{{DBf{DBh}}}}{IEh{{DBf{DBh}}}}{IEj{{DBf{DBh}}}}{IEl{{DBf{DBh}}}}{IEn{{DBf{DBh}}}}{IF`{{DBf{DBh}}}}{IFb{{DBf{DBh}}}}{IFd{{DBf{DBh}}}}{IFf{{DBf{DBh}}}}{IFh{{DBf{DBh}}}}{IFj{{DBf{DBh}}}}{IFl{{DBf{DBh}}}}{IFn{{DBf{DBh}}}}{IG`{{DBf{DBh}}}}{IGb{{DBf{DBh}}}}{IGd{{DBf{DBh}}}}{IGf{{DBf{DBh}}}}{IGh{{DBf{DBh}}}}{IGj{{DBf{DBh}}}}{IGl{{DBf{DBh}}}}{IGn{{DBf{DBh}}}}{IH`{{DBf{DBh}}}}{IHb{{DBf{DBh}}}}{IHd{{DBf{DBh}}}}{IHf{{DBf{DBh}}}}{IHh{{DBf{DBh}}}}{IHj{{DBf{DBh}}}}{IHl{{DBf{DBh}}}}{IHn{{DBf{DBh}}}}{II`{{DBf{DBh}}}}{IIb{{DBf{DBh}}}}{IId{{DBf{DBh}}}}{IIf{{DBf{DBh}}}}{IIh{{DBf{DBh}}}}{IIj{{DBf{DBh}}}}{IIl{{DBf{DBh}}}}{IIn{{DBf{DBh}}}}{IJ`{{DBf{DBh}}}}{IJb{{DBf{DBh}}}}{IJd{{DBf{DBh}}}}{IJf{{DBf{DBh}}}}{IJh{{DBf{DBh}}}}{IJj{{DBf{DBh}}}}{IJl{{DBf{DBh}}}}{IJn{{DBf{DBh}}}}{IK`{{DBf{DBh}}}}{IKb{{DBf{DBh}}}}{IKd{{DBf{DBh}}}}{IKf{{DBf{DBh}}}}{IKh{{DBf{DBh}}}}{IKj{{DBf{DBh}}}}{IKl{{DBf{DBh}}}}{IKn{{DBf{DBh}}}}{IL`{{DBf{DBh}}}}{ILb{{DBf{DBh}}}}{ILd{{DBf{DBh}}}}{ILf{{DBf{DBh}}}}{ILh{{DBf{DBh}}}}{ILj{{DBf{DBh}}}}{ILl{{DBf{DBh}}}}{ILn{{DBf{DBh}}}}{IM`{{DBf{DBh}}}}{IMb{{DBf{DBh}}}}{IMd{{DBf{DBh}}}}{IMf{{DBf{DBh}}}}{IMh{{DBf{DBh}}}}{IMj{{DBf{DBh}}}}{IMl{{DBf{DBh}}}}{IMn{{DBf{DBh}}}}{IN`{{DBf{DBh}}}}{INb{{DBf{DBh}}}}{INd{{DBf{DBh}}}}{INf{{DBf{DBh}}}}{INh{{DBf{DBh}}}}{INj{{DBf{DBh}}}}{INl{{DBf{DBh}}}}{INn{{DBf{DBh}}}}{IO`{{DBf{DBh}}}}{IOb{{DBf{DBh}}}}{IOd{{DBf{DBh}}}}{IOf{{DBf{DBh}}}}{IOh{{DBf{DBh}}}}{ce{}{}}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{IA`{{DBf{Hh}}}}{IAb{{DBf{Hh}}}}{IAd{{DBf{Hh}}}}{IAf{{DBf{Hh}}}}{IAh{{DBf{Hh}}}}{IAj{{DBf{Hh}}}}{IAl{{DBf{Hh}}}}{IAn{{DBf{Hh}}}}{IB`{{DBf{Hh}}}}{IBb{{DBf{Hh}}}}{IBd{{DBf{Hh}}}}{IBf{{DBf{Hh}}}}{IBh{{DBf{Hh}}}}{IBj{{DBf{Hh}}}}{IBl{{DBf{Hh}}}}{IBn{{DBf{Hh}}}}{IC`{{DBf{Hh}}}}{ICb{{DBf{Hh}}}}{ICd{{DBf{Hh}}}}{ICf{{DBf{Hh}}}}{ICh{{DBf{Hh}}}}{ICj{{DBf{Hh}}}}{ICl{{DBf{Hh}}}}{ICn{{DBf{Hh}}}}{ID`{{DBf{Hh}}}}{IDb{{DBf{Hh}}}}{IDd{{DBf{Hh}}}}{IDf{{DBf{Hh}}}}{IDh{{DBf{Hh}}}}{IDj{{DBf{Hh}}}}{IDl{{DBf{Hh}}}}{IDn{{DBf{Hh}}}}{IE`{{DBf{Hh}}}}{IEb{{DBf{Hh}}}}{IEd{{DBf{Hh}}}}{IEf{{DBf{Hh}}}}{IEh{{DBf{Hh}}}}{IEj{{DBf{Hh}}}}{IEl{{DBf{Hh}}}}{IEn{{DBf{Hh}}}}{IF`{{DBf{Hh}}}}{IFb{{DBf{Hh}}}}{IFd{{DBf{Hh}}}}{IFf{{DBf{Hh}}}}{IFh{{DBf{Hh}}}}{IFj{{DBf{Hh}}}}{IFl{{DBf{Hh}}}}{IFn{{DBf{Hh}}}}{IG`{{DBf{Hh}}}}{IGb{{DBf{Hh}}}}{IGd{{DBf{Hh}}}}{IGf{{DBf{Hh}}}}{IGh{{DBf{Hh}}}}{IGj{{DBf{Hh}}}}{IGl{{DBf{Hh}}}}{IGn{{DBf{Hh}}}}{IH`{{DBf{Hh}}}}{IHb{{DBf{Hh}}}}{IHd{{DBf{Hh}}}}{IHf{{DBf{Hh}}}}{IHh{{DBf{Hh}}}}{IHj{{DBf{Hh}}}}{IHl{{DBf{Hh}}}}{IHn{{DBf{Hh}}}}{II`{{DBf{Hh}}}}{IIb{{DBf{Hh}}}}{IId{{DBf{Hh}}}}{IIf{{DBf{Hh}}}}{IIh{{DBf{Hh}}}}{IIj{{DBf{Hh}}}}{IIl{{DBf{Hh}}}}{IIn{{DBf{Hh}}}}{IJ`{{DBf{Hh}}}}{IJb{{DBf{Hh}}}}{IJd{{DBf{Hh}}}}{IJf{{DBf{Hh}}}}{IJh{{DBf{Hh}}}}{IJj{{DBf{Hh}}}}{IJl{{DBf{Hh}}}}{IJn{{DBf{Hh}}}}{IK`{{DBf{Hh}}}}{IKb{{DBf{Hh}}}}{IKd{{DBf{Hh}}}}{IKf{{DBf{Hh}}}}{IKh{{DBf{Hh}}}}{IKj{{DBf{Hh}}}}{IKl{{DBf{Hh}}}}{IKn{{DBf{Hh}}}}{IL`{{DBf{Hh}}}}{ILb{{DBf{Hh}}}}{ILd{{DBf{Hh}}}}{ILf{{DBf{Hh}}}}{ILh{{DBf{Hh}}}}{ILj{{DBf{Hh}}}}{ILl{{DBf{Hh}}}}{ILn{{DBf{Hh}}}}{IM`{{DBf{Hh}}}}{IMb{{DBf{Hh}}}}{IMd{{DBf{Hh}}}}{IMf{{DBf{Hh}}}}{IMh{{DBf{Hh}}}}{IMj{{DBf{Hh}}}}{IMl{{DBf{Hh}}}}{IMn{{DBf{Hh}}}}{IN`{{DBf{Hh}}}}{INb{{DBf{Hh}}}}{INd{{DBf{Hh}}}}{INf{{DBf{Hh}}}}{INh{{DBf{Hh}}}}{INj{{DBf{Hh}}}}{INl{{DBf{Hh}}}}{INn{{DBf{Hh}}}}{IO`{{DBf{Hh}}}}{IOb{{DBf{Hh}}}}{IOd{{DBf{Hh}}}}{IOf{{DBf{Hh}}}}{IOh{{DBf{Hh}}}}{{GAfGAf}Af}{{GAhGAh}Af}{{GAjGAj}Af}{{GAlGAl}Af}{{GAnGAn}Af}{{GB`GB`}Af}{{GBbGBb}Af}{{GBdGBd}Af}{{GBfGBf}Af}{{GBhGBh}Af}{{GBjGBj}Af}{{GBlGBl}Af}{{GBnGBn}Af}{{GC`GC`}Af}{{GCbGCb}Af}{{GCdGCd}Af}{{GCfGCf}Af}{{GChGCh}Af}{{GCjGCj}Af}{{GClGCl}Af}{{GCnGCn}Af}{{GD`GD`}Af}{{GDbGDb}Af}{{GDdGDd}Af}{{GDfGDf}Af}{{GDhGDh}Af}{{GDjGDj}Af}{{GDlGDl}Af}````````{c{{B`{e}}}{}{}}0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000```````````{cDd{}}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000```````````{{GAfGAf}GAf}{{GAhGAh}GAh}{{GAjGAj}GAj}{{GAlGAl}GAl}{{GAnGAn}GAn}{{GB`GB`}GB`}{{GBbGBb}GBb}{{GBdGBd}GBd}{{GBfGBf}GBf}{{GBhGBh}GBh}{{GBjGBj}GBj}{{GBlGBl}GBl}{{GBnGBn}GBn}{{GC`GC`}GC`}{{GCbGCb}GCb}{{GCdGCd}GCd}{{GCfGCf}GCf}{{GChGCh}GCh}{{GCjGCj}GCj}{{GClGCl}GCl}{{GCnGCn}GCn}{{GD`GD`}GD`}{{GDbGDb}GDb}{{GDdGDd}GDd}{{GDfGDf}GDf}{{GDhGDh}GDh}{{GDjGDj}GDj}{{GDlGDl}GDl}```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{{{d{b}}}Cl}","D":"AHCfMOh","p":[[1,"u8"],[1,"slice"],[1,"u16"],[5,"MAVLinkV1MessageRaw",0,39175],[5,"MAVLinkV2MessageRaw",0,39175],[5,"MavHeader",0,39175],[6,"MavlinkVersion",0,39175],[5,"MavFrame",0,39175],[10,"Clone",39176],[10,"Message",0,39175],[1,"unit"],[1,"str"],[10,"MavConnection",0,39177],[5,"Box",39178],[5,"Error",39179],[6,"Result",39180],[1,"u32"],[17,"Message"],[10,"MessageData",0,39175],[6,"ParserError",27060,39181],[10,"Deserializer",39182],[1,"bool"],[5,"Formatter",39183],[5,"Error",39183],[10,"Debug",39183],[5,"PeekReader",27239,39184],[1,"tuple"],[6,"MessageReadError",27060,39181],[10,"Read",39185],[1,"usize"],[6,"MessageWriteError",27060,39181],[10,"Serializer",39186],[10,"Serialize",39186],[5,"TypeId",39187],[10,"Write",39185],[5,"UavionixAdsbRfHealth",156],[5,"AisFlags",156],[5,"GpsInputIgnoreFlags",156],[5,"RallyFlags",156],[5,"GimbalManagerCapFlags",156],[5,"TuneFormat",156],[5,"MavProtocolCapability",156],[5,"MavSysStatusSensor",156],[5,"MavModeFlag",156],[5,"UavionixAdsbOutRfSelect",156],[5,"GimbalDeviceErrorFlags",156],[5,"AdsbFlags",156],[5,"GimbalDeviceCapFlags",156],[5,"GimbalDeviceFlags",156],[5,"HlFailureFlag",156],[5,"LimitModule",156],[5,"AttitudeTargetTypemask",156],[5,"UtmDataAvailFlags",156],[5,"HighresImuUpdatedFlags",156],[5,"EkfStatusFlags",156],[5,"HilSensorUpdatedFlags",156],[5,"UavionixAdsbOutDynamicState",156],[5,"SerialControlFlag",156],[5,"EscFailureFlags",156],[5,"MavGeneratorStatusFlag",156],[5,"PositionTargetTypemask",156],[5,"EstimatorStatusFlags",156],[5,"MavPowerStatus",156],[5,"MavEventCurrentSequenceFlags",156],[5,"CameraCapFlags",156],[5,"GoproHeartbeatFlags",156],[5,"MavWinchStatusFlag",156],[1,"u64"],[6,"MavMessage",156],[5,"DISTANCE_SENSOR_DATA",156],[5,"SCALED_PRESSURE2_DATA",156],[5,"MISSION_CLEAR_ALL_DATA",156],[5,"AOA_SSA_DATA",156],[5,"BATTERY_STATUS_DATA",156],[5,"FENCE_STATUS_DATA",156],[5,"DEEPSTALL_DATA",156],[5,"RC_CHANNELS_OVERRIDE_DATA",156],[5,"GPS_STATUS_DATA",156],[5,"AUTH_KEY_DATA",156],[5,"GPS_RTCM_DATA_DATA",156],[5,"CELLULAR_CONFIG_DATA",156],[5,"RC_CHANNELS_RAW_DATA",156],[5,"TUNNEL_DATA",156],[5,"PARAM_SET_DATA",156],[5,"ATTITUDE_QUATERNION_DATA",156],[5,"STATUSTEXT_DATA",156],[5,"VISION_POSITION_ESTIMATE_DATA",156],[5,"CAN_FILTER_MODIFY_DATA",156],[5,"OBSTACLE_DISTANCE_DATA",156],[5,"ACTUATOR_CONTROL_TARGET_DATA",156],[5,"OSD_PARAM_CONFIG_REPLY_DATA",156],[5,"GLOBAL_POSITION_INT_DATA",156],[5,"HIGH_LATENCY_DATA",156],[5,"MOUNT_ORIENTATION_DATA",156],[5,"DATA_STREAM_DATA",156],[5,"SCALED_IMU2_DATA",156],[5,"DATA96_DATA",156],[5,"HIL_CONTROLS_DATA",156],[5,"DATA32_DATA",156],[5,"GPS_RTK_DATA",156],[5,"MOUNT_STATUS_DATA",156],[5,"CHANGE_OPERATOR_CONTROL_ACK_DATA",156],[5,"DIGICAM_CONFIGURE_DATA",156],[5,"VISION_SPEED_ESTIMATE_DATA",156],[5,"FOLLOW_TARGET_DATA",156],[5,"DEBUG_DATA",156],[5,"ADSB_VEHICLE_DATA",156],[5,"SCALED_IMU3_DATA",156],[5,"TIMESYNC_DATA",156],[5,"GPS_INPUT_DATA",156],[5,"AIS_VESSEL_DATA",156],[5,"WIND_COV_DATA",156],[5,"CAMERA_STATUS_DATA",156],[5,"TRAJECTORY_REPRESENTATION_BEZIER_DATA",156],[5,"EXTENDED_SYS_STATE_DATA",156],[5,"MEMINFO_DATA",156],[5,"ICAROUS_HEARTBEAT_DATA",156],[5,"ODOMETRY_DATA",156],[5,"AIRSPEED_AUTOCAL_DATA",156],[5,"MISSION_CURRENT_DATA",156],[5,"ATTITUDE_QUATERNION_COV_DATA",156],[5,"AHRS2_DATA",156],[5,"HIGHRES_IMU_DATA",156],[5,"SENSOR_OFFSETS_DATA",156],[5,"UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA",156],[5,"SCALED_PRESSURE_DATA",156],[5,"RAW_RPM_DATA",156],[5,"TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA",156],[5,"BUTTON_CHANGE_DATA",156],[5,"HIL_STATE_QUATERNION_DATA",156],[5,"COMMAND_LONG_DATA",156],[5,"EFI_STATUS_DATA",156],[5,"GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA",156],[5,"GPS_RAW_INT_DATA",156],[5,"MISSION_ITEM_REACHED_DATA",156],[5,"TERRAIN_CHECK_DATA",156],[5,"RADIO_DATA",156],[5,"LED_CONTROL_DATA",156],[5,"MISSION_SET_CURRENT_DATA",156],[5,"ESTIMATOR_STATUS_DATA",156],[5,"TIME_ESTIMATE_TO_TARGET_DATA",156],[5,"WINCH_STATUS_DATA",156],[5,"MOUNT_CONFIGURE_DATA",156],[5,"GLOBAL_POSITION_INT_COV_DATA",156],[5,"GOPRO_GET_REQUEST_DATA",156],[5,"GIMBAL_MANAGER_SET_PITCHYAW_DATA",156],[5,"GPS_INJECT_DATA_DATA",156],[5,"SET_MODE_DATA",156],[5,"CAMERA_SETTINGS_DATA",156],[5,"CURRENT_EVENT_SEQUENCE_DATA",156],[5,"ESC_STATUS_DATA",156],[5,"ATTITUDE_TARGET_DATA",156],[5,"PARAM_REQUEST_READ_DATA",156],[5,"ESC_TELEMETRY_5_TO_8_DATA",156],[5,"OSD_PARAM_CONFIG_DATA",156],[5,"DEVICE_OP_WRITE_REPLY_DATA",156],[5,"VIBRATION_DATA",156],[5,"RC_CHANNELS_SCALED_DATA",156],[5,"SCALED_IMU_DATA",156],[5,"DEVICE_OP_WRITE_DATA",156],[5,"COMMAND_CANCEL_DATA",156],[5,"PID_TUNING_DATA",156],[5,"MAG_CAL_PROGRESS_DATA",156],[5,"RANGEFINDER_DATA",156],[5,"MISSION_REQUEST_PARTIAL_LIST_DATA",156],[5,"LANDING_TARGET_DATA",156],[5,"UTM_GLOBAL_POSITION_DATA",156],[5,"MAG_CAL_REPORT_DATA",156],[5,"ATTITUDE_DATA",156],[5,"PLAY_TUNE_DATA",156],[5,"ISBD_LINK_STATUS_DATA",156],[5,"SYSTEM_TIME_DATA",156],[5,"SET_ACTUATOR_CONTROL_TARGET_DATA",156],[5,"WIFI_CONFIG_AP_DATA",156],[5,"ENCAPSULATED_DATA_DATA",156],[5,"DIGICAM_CONTROL_DATA",156],[5,"HYGROMETER_SENSOR_DATA",156],[5,"SERVO_OUTPUT_RAW_DATA",156],[5,"LOG_ERASE_DATA",156],[5,"COMPONENT_INFORMATION_DATA",156],[5,"VIDEO_STREAM_INFORMATION_DATA",156],[5,"SIM_STATE_DATA",156],[5,"HIL_OPTICAL_FLOW_DATA",156],[5,"ESC_TELEMETRY_9_TO_12_DATA",156],[5,"OPTICAL_FLOW_RAD_DATA",156],[5,"BATTERY2_DATA",156],[5,"MOUNT_CONTROL_DATA",156],[5,"DEVICE_OP_READ_DATA",156],[5,"FILE_TRANSFER_PROTOCOL_DATA",156],[5,"WHEEL_DISTANCE_DATA",156],[5,"RADIO_STATUS_DATA",156],[5,"STORAGE_INFORMATION_DATA",156],[5,"ESC_INFO_DATA",156],[5,"OPEN_DRONE_ID_OPERATOR_ID_DATA",156],[5,"SMART_BATTERY_INFO_DATA",156],[5,"SCALED_PRESSURE3_DATA",156],[5,"GOPRO_GET_RESPONSE_DATA",156],[5,"OPEN_DRONE_ID_LOCATION_DATA",156],[5,"VISION_POSITION_DELTA_DATA",156],[5,"CAMERA_TRIGGER_DATA",156],[5,"GOPRO_SET_RESPONSE_DATA",156],[5,"FENCE_FETCH_POINT_DATA",156],[5,"CUBEPILOT_RAW_RC_DATA",156],[5,"SERIAL_CONTROL_DATA",156],[5,"MISSION_WRITE_PARTIAL_LIST_DATA",156],[5,"CHANGE_OPERATOR_CONTROL_DATA",156],[5,"TERRAIN_DATA_DATA",156],[5,"SETUP_SIGNING_DATA",156],[5,"MISSION_ITEM_INT_DATA",156],[5,"SET_POSITION_TARGET_GLOBAL_INT_DATA",156],[5,"CUBEPILOT_FIRMWARE_UPDATE_RESP_DATA",156],[5,"MEMORY_VECT_DATA",156],[5,"GOPRO_HEARTBEAT_DATA",156],[5,"HIGH_LATENCY2_DATA",156],[5,"RALLY_FETCH_POINT_DATA",156],[5,"CAMERA_FEEDBACK_DATA",156],[5,"COMPASSMOT_STATUS_DATA",156],[5,"UAVCAN_NODE_STATUS_DATA",156],[5,"RALLY_POINT_DATA",156],[5,"HERELINK_VIDEO_STREAM_INFORMATION_DATA",156],[5,"UAVIONIX_ADSB_OUT_DYNAMIC_DATA",156],[5,"ONBOARD_COMPUTER_STATUS_DATA",156],[5,"MESSAGE_INTERVAL_DATA",156],[5,"ACTUATOR_OUTPUT_STATUS_DATA",156],[5,"TERRAIN_REPORT_DATA",156],[5,"CAMERA_FOV_STATUS_DATA",156],[5,"VICON_POSITION_ESTIMATE_DATA",156],[5,"PARAM_EXT_ACK_DATA",156],[5,"LINK_NODE_STATUS_DATA",156],[5,"AP_ADC_DATA",156],[5,"CUBEPILOT_FIRMWARE_UPDATE_START_DATA",156],[5,"MISSION_ITEM_DATA",156],[5,"GIMBAL_MANAGER_STATUS_DATA",156],[5,"GPS_GLOBAL_ORIGIN_DATA",156],[5,"LOGGING_DATA_ACKED_DATA",156],[5,"OPEN_DRONE_ID_MESSAGE_PACK_DATA",156],[5,"AUTOPILOT_VERSION_DATA",156],[5,"MISSION_COUNT_DATA",156],[5,"CANFD_FRAME_DATA",156],[5,"SIMSTATE_DATA",156],[5,"SUPPORTED_TUNES_DATA",156],[5,"OBSTACLE_DISTANCE_3D_DATA",156],[5,"OPEN_DRONE_ID_ARM_STATUS_DATA",156],[5,"AHRS3_DATA",156],[5,"DEBUG_FLOAT_ARRAY_DATA",156],[5,"PARAM_MAP_RC_DATA",156],[5,"REMOTE_LOG_DATA_BLOCK_DATA",156],[5,"LOG_REQUEST_END_DATA",156],[5,"HIL_STATE_DATA",156],[5,"AUTOPILOT_VERSION_REQUEST_DATA",156],[5,"NAV_CONTROLLER_OUTPUT_DATA",156],[5,"NAMED_VALUE_FLOAT_DATA",156],[5,"MISSION_REQUEST_INT_DATA",156],[5,"REMOTE_LOG_BLOCK_STATUS_DATA",156],[5,"DEBUG_VECT_DATA",156],[5,"REQUEST_EVENT_DATA",156],[5,"WATER_DEPTH_DATA",156],[5,"RPM_DATA",156],[5,"MANUAL_SETPOINT_DATA",156],[5,"GIMBAL_DEVICE_ATTITUDE_STATUS_DATA",156],[5,"MISSION_ACK_DATA",156],[5,"RAW_PRESSURE_DATA",156],[5,"CAMERA_CAPTURE_STATUS_DATA",156],[5,"COMMAND_INT_DATA",156],[5,"HOME_POSITION_DATA",156],[5,"ATT_POS_MOCAP_DATA",156],[5,"OPEN_DRONE_ID_AUTHENTICATION_DATA",156],[5,"OPEN_DRONE_ID_SELF_ID_DATA",156],[5,"REQUEST_DATA_STREAM_DATA",156],[5,"OPEN_DRONE_ID_SYSTEM_UPDATE_DATA",156],[5,"CAMERA_INFORMATION_DATA",156],[5,"RAW_IMU_DATA",156],[5,"PROTOCOL_VERSION_DATA",156],[5,"SAFETY_ALLOWED_AREA_DATA",156],[5,"V2_EXTENSION_DATA",156],[5,"CAMERA_IMAGE_CAPTURED_DATA",156],[5,"CAN_FRAME_DATA",156],[5,"HIL_GPS_DATA",156],[5,"LOGGING_DATA_DATA",156],[5,"CELLULAR_STATUS_DATA",156],[5,"HWSTATUS_DATA",156],[5,"EVENT_DATA",156],[5,"LOG_ENTRY_DATA",156],[5,"COMMAND_ACK_DATA",156],[5,"SET_ATTITUDE_TARGET_DATA",156],[5,"RESOURCE_REQUEST_DATA",156],[5,"POWER_STATUS_DATA",156],[5,"COMPONENT_METADATA_DATA",156],[5,"DATA16_DATA",156],[5,"ORBIT_EXECUTION_STATUS_DATA",156],[5,"GIMBAL_MANAGER_INFORMATION_DATA",156],[5,"GOPRO_SET_REQUEST_DATA",156],[5,"DEVICE_OP_READ_REPLY_DATA",156],[5,"GIMBAL_DEVICE_SET_ATTITUDE_DATA",156],[5,"SET_MAG_OFFSETS_DATA",156],[5,"OSD_PARAM_SHOW_CONFIG_REPLY_DATA",156],[5,"EKF_STATUS_REPORT_DATA",156],[5,"GIMBAL_CONTROL_DATA",156],[5,"AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA",156],[5,"GIMBAL_DEVICE_INFORMATION_DATA",156],[5,"PARAM_EXT_SET_DATA",156],[5,"PING_DATA",156],[5,"POSITION_TARGET_LOCAL_NED_DATA",156],[5,"CAMERA_TRACKING_IMAGE_STATUS_DATA",156],[5,"MISSION_REQUEST_LIST_DATA",156],[5,"LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA",156],[5,"OPEN_DRONE_ID_SYSTEM_DATA",156],[5,"AHRS_DATA",156],[5,"DATA_TRANSMISSION_HANDSHAKE_DATA",156],[5,"TERRAIN_REQUEST_DATA",156],[5,"LOCAL_POSITION_NED_COV_DATA",156],[5,"OPEN_DRONE_ID_BASIC_ID_DATA",156],[5,"PARAM_EXT_REQUEST_LIST_DATA",156],[5,"RC_CHANNELS_DATA",156],[5,"OPTICAL_FLOW_DATA",156],[5,"PARAM_VALUE_DATA",156],[5,"SET_GPS_GLOBAL_ORIGIN_DATA",156],[5,"SET_POSITION_TARGET_LOCAL_NED_DATA",156],[5,"GPS2_RAW_DATA",156],[5,"GIMBAL_MANAGER_SET_ATTITUDE_DATA",156],[5,"ALTITUDE_DATA",156],[5,"LOCAL_POSITION_NED_DATA",156],[5,"LOG_DATA_DATA",156],[5,"SAFETY_SET_ALLOWED_AREA_DATA",156],[5,"RESPONSE_EVENT_ERROR_DATA",156],[5,"ESC_TELEMETRY_1_TO_4_DATA",156],[5,"HEARTBEAT_DATA",156],[5,"COLLISION_DATA",156],[5,"GIMBAL_REPORT_DATA",156],[5,"HERELINK_TELEM_DATA",156],[5,"GPS2_RTK_DATA",156],[5,"CAMERA_TRACKING_GEO_STATUS_DATA",156],[5,"WIND_DATA",156],[5,"LIMITS_STATUS_DATA",156],[5,"ICAROUS_KINEMATIC_BANDS_DATA",156],[5,"PARAM_EXT_VALUE_DATA",156],[5,"PARAM_EXT_REQUEST_READ_DATA",156],[5,"HIL_SENSOR_DATA",156],[5,"LOG_REQUEST_DATA_DATA",156],[5,"ADAP_TUNING_DATA",156],[5,"MANUAL_CONTROL_DATA",156],[5,"PLAY_TUNE_V2_DATA",156],[5,"UAVIONIX_ADSB_OUT_CFG_DATA",156],[5,"FLIGHT_INFORMATION_DATA",156],[5,"CONTROL_SYSTEM_STATE_DATA",156],[5,"NAMED_VALUE_INT_DATA",156],[5,"POSITION_TARGET_GLOBAL_INT_DATA",156],[5,"OSD_PARAM_SHOW_CONFIG_DATA",156],[5,"PARAM_REQUEST_LIST_DATA",156],[5,"HIL_RC_INPUTS_RAW_DATA",156],[5,"MCU_STATUS_DATA",156],[5,"SYS_STATUS_DATA",156],[5,"GIMBAL_TORQUE_CMD_REPORT_DATA",156],[5,"DATA64_DATA",156],[5,"MISSION_REQUEST_DATA",156],[5,"FENCE_POINT_DATA",156],[5,"UAVCAN_NODE_INFO_DATA",156],[5,"GLOBAL_VISION_POSITION_ESTIMATE_DATA",156],[5,"HIL_ACTUATOR_CONTROLS_DATA",156],[5,"VFR_HUD_DATA",156],[5,"LOG_REQUEST_LIST_DATA",156],[5,"SET_HOME_POSITION_DATA",156],[5,"VIDEO_STREAM_STATUS_DATA",156],[5,"GENERATOR_STATUS_DATA",156],[5,"LOGGING_ACK_DATA",156],[6,"SerialControlDev",156],[6,"MavFtpErr",156],[6,"GoproProtuneSharpness",156],[6,"GoproPhotoResolution",156],[6,"CompMetadataType",156],[6,"GimbalAxis",156],[6,"MavOdidClassEu",156],[6,"MavBatteryMode",156],[6,"AdsbAltitudeType",156],[6,"MavBatteryChargeState",156],[6,"ScriptingCmd",156],[6,"HeadingType",156],[6,"UavionixAdsbOutCfgGpsOffsetLon",156],[6,"FailureType",156],[6,"MavDistanceSensor",156],[6,"LandingTargetType",156],[6,"StorageStatus",156],[6,"IcarousFmsState",156],[6,"SpeedType",156],[6,"ActuatorConfiguration",156],[6,"GoproBurstRate",156],[6,"MavFtpOpcode",156],[6,"WifiConfigApResponse",156],[6,"MavOdidSpeedAcc",156],[6,"PrecisionLandMode",156],[6,"MavMode",156],[6,"VideoStreamStatusFlags",156],[6,"MavType",156],[6,"MavOdidUaType",156],[6,"VideoStreamType",156],[6,"CameraFeedbackFlags",156],[6,"MavDoRepositionFlags",156],[6,"LedControlPattern",156],[6,"MavDataStream",156],[6,"CameraStatusTypes",156],[6,"PidTuningAxis",156],[6,"MavCollisionSrc",156],[6,"DeepstallStage",156],[6,"UavionixAdsbOutCfgAircraftSize",156],[6,"MavCollisionThreatLevel",156],[6,"MavRoi",156],[6,"MavCmdAck",156],[6,"FenceAction",156],[6,"PlaneMode",156],[6,"MavSensorOrientation",156],[6,"GoproRequestStatus",156],[6,"LimitsState",156],[6,"CanFilterOp",156],[6,"CameraTrackingMode",156],[6,"MavOdidHorAcc",156],[6,"WinchActions",156],[6,"FailureUnit",156],[6,"MavBatteryFault",156],[6,"MavOdidIdType",156],[6,"AccelcalVehiclePos",156],[6,"MotorTestThrottleType",156],[6,"MavOdidArmStatus",156],[6,"MavEventErrorReason",156],[6,"StorageUsageFlag",156],[6,"MavOdidTimeAcc",156],[6,"MavOdidCategoryEu",156],[6,"GimbalManagerFlags",156],[6,"CameraTrackingStatusFlags",156],[6,"NavVtolLandOptions",156],[6,"CameraZoomType",156],[6,"GoproVideoSettingsFlags",156],[6,"MavCollisionAction",156],[6,"GoproResolution",156],[6,"MavEstimatorType",156],[6,"UavcanNodeMode",156],[6,"MavSysStatusSensorExtended",156],[6,"MagCalStatus",156],[6,"CameraMode",156],[6,"AisNavStatus",156],[6,"RcType",156],[6,"FirmwareVersionType",156],[6,"PreflightStorageParameterAction",156],[6,"OrbitYawBehaviour",156],[6,"EscConnectionType",156],[6,"RoverMode",156],[6,"GoproCommand",156],[6,"UavionixAdsbEmergencyStatus",156],[6,"MavOdidDescType",156],[6,"WifiConfigApMode",156],[6,"AisType",156],[6,"MavComponent",156],[6,"RtkBaselineCoordinateSystem",156],[6,"MissionState",156],[6,"GripperActions",156],[6,"FenceBreach",156],[6,"GpsFixType",156],[6,"CellularNetworkFailedReason",156],[6,"AutotuneAxis",156],[6,"MavOdidHeightRef",156],[6,"CopterMode",156],[6,"GimbalAxisCalibrationStatus",156],[6,"MavResult",156],[6,"GoproProtuneColour",156],[6,"GoproModel",156],[6,"MavSeverity",156],[6,"MavState",156],[6,"IcarousTrackBandTypes",156],[6,"MotorTestOrder",156],[6,"ParamAck",156],[6,"PreflightStorageMissionAction",156],[6,"CellularConfigResponse",156],[6,"UtmFlightState",156],[6,"MavlinkDataStreamType",156],[6,"MavVtolState",156],[6,"GimbalAxisCalibrationRequired",156],[6,"StorageType",156],[6,"CellularNetworkRadioType",156],[6,"GoproHeartbeatStatus",156],[6,"GoproProtuneWhiteBalance",156],[6,"MavOdidVerAcc",156],[6,"TrackerMode",156],[6,"MavCmdDoAuxFunctionSwitchLevel",156],[6,"MavFrame",156],[6,"MavRemoteLogDataBlockCommands",156],[6,"GoproFieldOfView",156],[6,"GoproCaptureMode",156],[6,"MavMissionType",156],[6,"MavBatteryType",156],[6,"MavModeGimbal",156],[6,"CellularStatusFlag",156],[6,"MavGoto",156],[6,"ActuatorOutputFunction",156],[6,"UavionixAdsbOutDynamicGpsFix",156],[6,"MavTunnelPayloadType",156],[6,"MavParamType",156],[6,"VtolTransitionHeading",156],[6,"ParachuteAction",156],[6,"GoproProtuneGain",156],[6,"UavionixAdsbOutCfgGpsOffsetLat",156],[6,"MavOdidStatus",156],[6,"MavArmAuthDeniedReason",156],[6,"OsdParamConfigType",156],[6,"MavOdidClassificationType",156],[6,"DeviceOpBustype",156],[6,"GoproFrameRate",156],[6,"MavParamExtType",156],[6,"MavModeFlagDecodePosition",156],[6,"MavCmd",156],[6,"MavMissionResult",156],[6,"GoproCharging",156],[6,"MavMountMode",156],[6,"MavOdidOperatorLocationType",156],[6,"MavRemoteLogDataBlockStatuses",156],[6,"MavOdidAuthType",156],[6,"MavLandedState",156],[6,"OsdParamConfigError",156],[6,"AdsbEmitterType",156],[6,"CameraTrackingTargetData",156],[6,"FenceMitigate",156],[6,"UavcanNodeHealth",156],[6,"MavOdidOperatorIdType",156],[6,"SetFocusType",156],[6,"SubMode",156],[6,"MavAutopilot",156],[6,"GoproProtuneExposure",156],[6,"MavBatteryFunction",156],[6,"Ordering",39188],[17,"Item"],[10,"IntoIterator",39189],[8,"Result",39183],[6,"Option",39190],[1,"i64"],[10,"Hasher",39191],[5,"Bytes",15498,39192],[1,"array"],[1,"f32"],[1,"f64"],[1,"i16"],[1,"i32"],[1,"i8"],[5,"BytesMut",15522,39193],[5,"TuneFormat",15547],[5,"MavSysStatusSensor",15547],[5,"HighresImuUpdatedFlags",15547],[5,"GpsInputIgnoreFlags",15547],[5,"MavProtocolCapability",15547],[5,"HilSensorUpdatedFlags",15547],[5,"AisFlags",15547],[5,"AdsbFlags",15547],[5,"EstimatorStatusFlags",15547],[5,"MavModeFlag",15547],[5,"CameraCapFlags",15547],[5,"GimbalDeviceFlags",15547],[5,"GimbalManagerCapFlags",15547],[5,"MavWinchStatusFlag",15547],[5,"GimbalDeviceErrorFlags",15547],[5,"AttitudeTargetTypemask",15547],[5,"EscFailureFlags",15547],[5,"MavGeneratorStatusFlag",15547],[5,"GimbalDeviceCapFlags",15547],[5,"PositionTargetTypemask",15547],[5,"HlFailureFlag",15547],[5,"MavEventCurrentSequenceFlags",15547],[5,"SerialControlFlag",15547],[5,"UtmDataAvailFlags",15547],[5,"MavPowerStatus",15547],[6,"MavMessage",15547],[5,"REQUEST_DATA_STREAM_DATA",15547],[5,"HIL_OPTICAL_FLOW_DATA",15547],[5,"PLAY_TUNE_V2_DATA",15547],[5,"UTM_GLOBAL_POSITION_DATA",15547],[5,"SMART_BATTERY_INFO_DATA",15547],[5,"LOG_ENTRY_DATA",15547],[5,"ALTITUDE_DATA",15547],[5,"CELLULAR_CONFIG_DATA",15547],[5,"PARAM_SET_DATA",15547],[5,"RESOURCE_REQUEST_DATA",15547],[5,"HIL_ACTUATOR_CONTROLS_DATA",15547],[5,"SET_ACTUATOR_CONTROL_TARGET_DATA",15547],[5,"COMPONENT_INFORMATION_DATA",15547],[5,"TUNNEL_DATA",15547],[5,"GIMBAL_DEVICE_SET_ATTITUDE_DATA",15547],[5,"SET_HOME_POSITION_DATA",15547],[5,"DATA_STREAM_DATA",15547],[5,"MANUAL_CONTROL_DATA",15547],[5,"RC_CHANNELS_SCALED_DATA",15547],[5,"CELLULAR_STATUS_DATA",15547],[5,"ESC_INFO_DATA",15547],[5,"LOGGING_DATA_DATA",15547],[5,"SCALED_PRESSURE_DATA",15547],[5,"MAG_CAL_REPORT_DATA",15547],[5,"CAMERA_FOV_STATUS_DATA",15547],[5,"V2_EXTENSION_DATA",15547],[5,"MISSION_WRITE_PARTIAL_LIST_DATA",15547],[5,"OPEN_DRONE_ID_OPERATOR_ID_DATA",15547],[5,"DATA_TRANSMISSION_HANDSHAKE_DATA",15547],[5,"RAW_IMU_DATA",15547],[5,"TIME_ESTIMATE_TO_TARGET_DATA",15547],[5,"MISSION_REQUEST_DATA",15547],[5,"SET_POSITION_TARGET_LOCAL_NED_DATA",15547],[5,"PARAM_VALUE_DATA",15547],[5,"STATUSTEXT_DATA",15547],[5,"HIL_RC_INPUTS_RAW_DATA",15547],[5,"HIL_CONTROLS_DATA",15547],[5,"PING_DATA",15547],[5,"GPS_RAW_INT_DATA",15547],[5,"OPEN_DRONE_ID_SYSTEM_DATA",15547],[5,"HOME_POSITION_DATA",15547],[5,"GIMBAL_DEVICE_ATTITUDE_STATUS_DATA",15547],[5,"CANFD_FRAME_DATA",15547],[5,"EVENT_DATA",15547],[5,"SUPPORTED_TUNES_DATA",15547],[5,"COLLISION_DATA",15547],[5,"MISSION_CLEAR_ALL_DATA",15547],[5,"COMPONENT_METADATA_DATA",15547],[5,"DEBUG_FLOAT_ARRAY_DATA",15547],[5,"CAMERA_SETTINGS_DATA",15547],[5,"BUTTON_CHANGE_DATA",15547],[5,"HIGH_LATENCY2_DATA",15547],[5,"COMMAND_INT_DATA",15547],[5,"MISSION_SET_CURRENT_DATA",15547],[5,"GPS_INJECT_DATA_DATA",15547],[5,"LOG_REQUEST_LIST_DATA",15547],[5,"AUTH_KEY_DATA",15547],[5,"LOG_REQUEST_DATA_DATA",15547],[5,"SYS_STATUS_DATA",15547],[5,"ORBIT_EXECUTION_STATUS_DATA",15547],[5,"ESC_STATUS_DATA",15547],[5,"GIMBAL_MANAGER_SET_ATTITUDE_DATA",15547],[5,"LANDING_TARGET_DATA",15547],[5,"OPEN_DRONE_ID_LOCATION_DATA",15547],[5,"RAW_RPM_DATA",15547],[5,"OPEN_DRONE_ID_SYSTEM_UPDATE_DATA",15547],[5,"POWER_STATUS_DATA",15547],[5,"TIMESYNC_DATA",15547],[5,"SERVO_OUTPUT_RAW_DATA",15547],[5,"VICON_POSITION_ESTIMATE_DATA",15547],[5,"COMMAND_CANCEL_DATA",15547],[5,"LINK_NODE_STATUS_DATA",15547],[5,"SYSTEM_TIME_DATA",15547],[5,"PARAM_EXT_ACK_DATA",15547],[5,"VISION_POSITION_ESTIMATE_DATA",15547],[5,"MISSION_ITEM_INT_DATA",15547],[5,"MISSION_REQUEST_INT_DATA",15547],[5,"CURRENT_EVENT_SEQUENCE_DATA",15547],[5,"ONBOARD_COMPUTER_STATUS_DATA",15547],[5,"FENCE_STATUS_DATA",15547],[5,"GLOBAL_VISION_POSITION_ESTIMATE_DATA",15547],[5,"LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA",15547],[5,"RESPONSE_EVENT_ERROR_DATA",15547],[5,"PARAM_REQUEST_READ_DATA",15547],[5,"PARAM_MAP_RC_DATA",15547],[5,"OPTICAL_FLOW_RAD_DATA",15547],[5,"ISBD_LINK_STATUS_DATA",15547],[5,"RC_CHANNELS_RAW_DATA",15547],[5,"PARAM_EXT_VALUE_DATA",15547],[5,"RADIO_STATUS_DATA",15547],[5,"HEARTBEAT_DATA",15547],[5,"POSITION_TARGET_GLOBAL_INT_DATA",15547],[5,"RAW_PRESSURE_DATA",15547],[5,"UAVCAN_NODE_INFO_DATA",15547],[5,"CAMERA_CAPTURE_STATUS_DATA",15547],[5,"TERRAIN_CHECK_DATA",15547],[5,"CAN_FRAME_DATA",15547],[5,"GENERATOR_STATUS_DATA",15547],[5,"LOCAL_POSITION_NED_COV_DATA",15547],[5,"SCALED_IMU_DATA",15547],[5,"BATTERY_STATUS_DATA",15547],[5,"VIDEO_STREAM_INFORMATION_DATA",15547],[5,"SCALED_PRESSURE2_DATA",15547],[5,"UAVCAN_NODE_STATUS_DATA",15547],[5,"LOGGING_ACK_DATA",15547],[5,"CAMERA_TRACKING_GEO_STATUS_DATA",15547],[5,"MOUNT_ORIENTATION_DATA",15547],[5,"MEMORY_VECT_DATA",15547],[5,"HIL_STATE_DATA",15547],[5,"TERRAIN_REPORT_DATA",15547],[5,"HIGH_LATENCY_DATA",15547],[5,"GPS2_RTK_DATA",15547],[5,"GPS_RTK_DATA",15547],[5,"SIM_STATE_DATA",15547],[5,"WINCH_STATUS_DATA",15547],[5,"GIMBAL_DEVICE_INFORMATION_DATA",15547],[5,"SETUP_SIGNING_DATA",15547],[5,"CHANGE_OPERATOR_CONTROL_DATA",15547],[5,"ATTITUDE_QUATERNION_DATA",15547],[5,"OPEN_DRONE_ID_ARM_STATUS_DATA",15547],[5,"SCALED_PRESSURE3_DATA",15547],[5,"LOG_DATA_DATA",15547],[5,"CAMERA_TRIGGER_DATA",15547],[5,"OPEN_DRONE_ID_MESSAGE_PACK_DATA",15547],[5,"NAMED_VALUE_INT_DATA",15547],[5,"HYGROMETER_SENSOR_DATA",15547],[5,"CAN_FILTER_MODIFY_DATA",15547],[5,"REQUEST_EVENT_DATA",15547],[5,"TRAJECTORY_REPRESENTATION_BEZIER_DATA",15547],[5,"DEBUG_DATA",15547],[5,"DEBUG_VECT_DATA",15547],[5,"ODOMETRY_DATA",15547],[5,"PARAM_EXT_REQUEST_LIST_DATA",15547],[5,"GIMBAL_MANAGER_STATUS_DATA",15547],[5,"SCALED_IMU2_DATA",15547],[5,"CHANGE_OPERATOR_CONTROL_ACK_DATA",15547],[5,"COMMAND_ACK_DATA",15547],[5,"GPS_RTCM_DATA_DATA",15547],[5,"AIS_VESSEL_DATA",15547],[5,"GLOBAL_POSITION_INT_COV_DATA",15547],[5,"HIGHRES_IMU_DATA",15547],[5,"LOG_REQUEST_END_DATA",15547],[5,"VFR_HUD_DATA",15547],[5,"PLAY_TUNE_DATA",15547],[5,"EXTENDED_SYS_STATE_DATA",15547],[5,"PARAM_REQUEST_LIST_DATA",15547],[5,"VIBRATION_DATA",15547],[5,"GPS_INPUT_DATA",15547],[5,"GLOBAL_POSITION_INT_DATA",15547],[5,"ACTUATOR_CONTROL_TARGET_DATA",15547],[5,"SERIAL_CONTROL_DATA",15547],[5,"OBSTACLE_DISTANCE_DATA",15547],[5,"GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA",15547],[5,"CAMERA_INFORMATION_DATA",15547],[5,"WIND_COV_DATA",15547],[5,"SCALED_IMU3_DATA",15547],[5,"CONTROL_SYSTEM_STATE_DATA",15547],[5,"ATT_POS_MOCAP_DATA",15547],[5,"TERRAIN_DATA_DATA",15547],[5,"TERRAIN_REQUEST_DATA",15547],[5,"SET_POSITION_TARGET_GLOBAL_INT_DATA",15547],[5,"ATTITUDE_QUATERNION_COV_DATA",15547],[5,"HIL_SENSOR_DATA",15547],[5,"MISSION_REQUEST_LIST_DATA",15547],[5,"GPS_GLOBAL_ORIGIN_DATA",15547],[5,"SET_GPS_GLOBAL_ORIGIN_DATA",15547],[5,"MISSION_ACK_DATA",15547],[5,"MISSION_ITEM_REACHED_DATA",15547],[5,"PROTOCOL_VERSION_DATA",15547],[5,"MISSION_ITEM_DATA",15547],[5,"SET_MODE_DATA",15547],[5,"AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA",15547],[5,"WIFI_CONFIG_AP_DATA",15547],[5,"GIMBAL_MANAGER_INFORMATION_DATA",15547],[5,"VIDEO_STREAM_STATUS_DATA",15547],[5,"LOGGING_DATA_ACKED_DATA",15547],[5,"MESSAGE_INTERVAL_DATA",15547],[5,"COMMAND_LONG_DATA",15547],[5,"ENCAPSULATED_DATA_DATA",15547],[5,"CAMERA_IMAGE_CAPTURED_DATA",15547],[5,"EFI_STATUS_DATA",15547],[5,"FILE_TRANSFER_PROTOCOL_DATA",15547],[5,"RC_CHANNELS_OVERRIDE_DATA",15547],[5,"NAV_CONTROLLER_OUTPUT_DATA",15547],[5,"HIL_STATE_QUATERNION_DATA",15547],[5,"VISION_SPEED_ESTIMATE_DATA",15547],[5,"LOG_ERASE_DATA",15547],[5,"HIL_GPS_DATA",15547],[5,"SET_ATTITUDE_TARGET_DATA",15547],[5,"GPS_STATUS_DATA",15547],[5,"POSITION_TARGET_LOCAL_NED_DATA",15547],[5,"MISSION_REQUEST_PARTIAL_LIST_DATA",15547],[5,"ATTITUDE_DATA",15547],[5,"GIMBAL_MANAGER_SET_PITCHYAW_DATA",15547],[5,"CAMERA_TRACKING_IMAGE_STATUS_DATA",15547],[5,"SAFETY_SET_ALLOWED_AREA_DATA",15547],[5,"MISSION_COUNT_DATA",15547],[5,"FLIGHT_INFORMATION_DATA",15547],[5,"GPS2_RAW_DATA",15547],[5,"ATTITUDE_TARGET_DATA",15547],[5,"MISSION_CURRENT_DATA",15547],[5,"OPEN_DRONE_ID_AUTHENTICATION_DATA",15547],[5,"PARAM_EXT_SET_DATA",15547],[5,"DISTANCE_SENSOR_DATA",15547],[5,"OPEN_DRONE_ID_SELF_ID_DATA",15547],[5,"PARAM_EXT_REQUEST_READ_DATA",15547],[5,"OPEN_DRONE_ID_BASIC_ID_DATA",15547],[5,"ACTUATOR_OUTPUT_STATUS_DATA",15547],[5,"NAMED_VALUE_FLOAT_DATA",15547],[5,"WHEEL_DISTANCE_DATA",15547],[5,"TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA",15547],[5,"ADSB_VEHICLE_DATA",15547],[5,"ESTIMATOR_STATUS_DATA",15547],[5,"RC_CHANNELS_DATA",15547],[5,"AUTOPILOT_VERSION_DATA",15547],[5,"MANUAL_SETPOINT_DATA",15547],[5,"SAFETY_ALLOWED_AREA_DATA",15547],[5,"STORAGE_INFORMATION_DATA",15547],[5,"OPTICAL_FLOW_DATA",15547],[5,"FOLLOW_TARGET_DATA",15547],[5,"LOCAL_POSITION_NED_DATA",15547],[6,"VideoStreamStatusFlags",15547],[6,"GripperActions",15547],[6,"MavCmdAck",15547],[6,"StorageType",15547],[6,"CellularStatusFlag",15547],[6,"ParamAck",15547],[6,"MavCollisionThreatLevel",15547],[6,"MavResult",15547],[6,"CameraTrackingStatusFlags",15547],[6,"CellularNetworkRadioType",15547],[6,"MavType",15547],[6,"MavOdidHeightRef",15547],[6,"SetFocusType",15547],[6,"RtkBaselineCoordinateSystem",15547],[6,"MavDataStream",15547],[6,"MavOdidHorAcc",15547],[6,"ActuatorConfiguration",15547],[6,"MavParamExtType",15547],[6,"MavCollisionSrc",15547],[6,"GimbalManagerFlags",15547],[6,"OrbitYawBehaviour",15547],[6,"MavGoto",15547],[6,"FailureType",15547],[6,"MavSysStatusSensorExtended",15547],[6,"MavMissionType",15547],[6,"MavOdidVerAcc",15547],[6,"MavOdidArmStatus",15547],[6,"WinchActions",15547],[6,"CameraTrackingTargetData",15547],[6,"GpsFixType",15547],[6,"MavModeFlagDecodePosition",15547],[6,"CellularNetworkFailedReason",15547],[6,"MavBatteryChargeState",15547],[6,"MavFtpOpcode",15547],[6,"MavOdidCategoryEu",15547],[6,"AisType",15547],[6,"UavcanNodeHealth",15547],[6,"MissionState",15547],[6,"WifiConfigApMode",15547],[6,"UavcanNodeMode",15547],[6,"MavVtolState",15547],[6,"NavVtolLandOptions",15547],[6,"MavOdidUaType",15547],[6,"MavBatteryType",15547],[6,"ActuatorOutputFunction",15547],[6,"MavCollisionAction",15547],[6,"MavOdidClassEu",15547],[6,"MavSeverity",15547],[6,"MagCalStatus",15547],[6,"FenceMitigate",15547],[6,"StorageStatus",15547],[6,"MavBatteryMode",15547],[6,"CellularConfigResponse",15547],[6,"MavMissionResult",15547],[6,"PreflightStorageParameterAction",15547],[6,"FenceAction",15547],[6,"MavOdidDescType",15547],[6,"MavBatteryFault",15547],[6,"AdsbEmitterType",15547],[6,"AutotuneAxis",15547],[6,"MavDoRepositionFlags",15547],[6,"MavComponent",15547],[6,"FailureUnit",15547],[6,"PreflightStorageMissionAction",15547],[6,"MavEventErrorReason",15547],[6,"MavOdidOperatorLocationType",15547],[6,"MavState",15547],[6,"MavBatteryFunction",15547],[6,"MavDistanceSensor",15547],[6,"CameraTrackingMode",15547],[6,"MavCmd",15547],[6,"FirmwareVersionType",15547],[6,"MavFrame",15547],[6,"MavOdidTimeAcc",15547],[6,"MavTunnelPayloadType",15547],[6,"MavMode",15547],[6,"MavOdidClassificationType",15547],[6,"UtmFlightState",15547],[6,"StorageUsageFlag",15547],[6,"EscConnectionType",15547],[6,"MavOdidSpeedAcc",15547],[6,"MavFtpErr",15547],[6,"AdsbAltitudeType",15547],[6,"PrecisionLandMode",15547],[6,"CompMetadataType",15547],[6,"MotorTestThrottleType",15547],[6,"MavRoi",15547],[6,"CanFilterOp",15547],[6,"MavOdidIdType",15547],[6,"MavArmAuthDeniedReason",15547],[6,"MavEstimatorType",15547],[6,"CameraZoomType",15547],[6,"MavAutopilot",15547],[6,"MavSensorOrientation",15547],[6,"LandingTargetType",15547],[6,"FenceBreach",15547],[6,"VtolTransitionHeading",15547],[6,"MavOdidOperatorIdType",15547],[6,"AisNavStatus",15547],[6,"MavOdidAuthType",15547],[6,"MavLandedState",15547],[6,"ParachuteAction",15547],[6,"MavParamType",15547],[6,"VideoStreamType",15547],[6,"MavlinkDataStreamType",15547],[6,"MavMountMode",15547],[6,"CameraMode",15547],[6,"SerialControlDev",15547],[6,"MavOdidStatus",15547],[6,"WifiConfigApResponse",15547],[6,"RcType",15547],[6,"MotorTestOrder",15547],[5,"String",39194],[6,"MavMessage",27107],[5,"ICAROUS_KINEMATIC_BANDS_DATA",27107],[5,"ICAROUS_HEARTBEAT_DATA",27107],[6,"IcarousTrackBandTypes",27107],[6,"IcarousFmsState",27107],[5,"GimbalDeviceErrorFlags",27254],[5,"MavPowerStatus",27254],[5,"UavionixAdsbOutDynamicState",27254],[5,"MavGeneratorStatusFlag",27254],[5,"GimbalDeviceFlags",27254],[5,"GimbalManagerCapFlags",27254],[5,"AdsbFlags",27254],[5,"GimbalDeviceCapFlags",27254],[5,"MavEventCurrentSequenceFlags",27254],[5,"TuneFormat",27254],[5,"PositionTargetTypemask",27254],[5,"MavSysStatusSensor",27254],[5,"MavProtocolCapability",27254],[5,"UavionixAdsbOutRfSelect",27254],[5,"EstimatorStatusFlags",27254],[5,"CameraCapFlags",27254],[5,"AisFlags",27254],[5,"GpsInputIgnoreFlags",27254],[5,"SerialControlFlag",27254],[5,"HighresImuUpdatedFlags",27254],[5,"UavionixAdsbRfHealth",27254],[5,"MavWinchStatusFlag",27254],[5,"AttitudeTargetTypemask",27254],[5,"HlFailureFlag",27254],[5,"HilSensorUpdatedFlags",27254],[5,"UtmDataAvailFlags",27254],[5,"MavModeFlag",27254],[5,"EscFailureFlags",27254],[6,"MavMessage",27254],[5,"GPS_INPUT_DATA",27254],[5,"STATUSTEXT_DATA",27254],[5,"CELLULAR_STATUS_DATA",27254],[5,"SET_ATTITUDE_TARGET_DATA",27254],[5,"ENCAPSULATED_DATA_DATA",27254],[5,"GIMBAL_DEVICE_INFORMATION_DATA",27254],[5,"SCALED_IMU3_DATA",27254],[5,"RC_CHANNELS_RAW_DATA",27254],[5,"VISION_SPEED_ESTIMATE_DATA",27254],[5,"BATTERY_STATUS_DATA",27254],[5,"LINK_NODE_STATUS_DATA",27254],[5,"LOG_REQUEST_LIST_DATA",27254],[5,"HIL_ACTUATOR_CONTROLS_DATA",27254],[5,"COLLISION_DATA",27254],[5,"ADSB_VEHICLE_DATA",27254],[5,"NAMED_VALUE_FLOAT_DATA",27254],[5,"LOGGING_DATA_ACKED_DATA",27254],[5,"PARAM_SET_DATA",27254],[5,"VIDEO_STREAM_INFORMATION_DATA",27254],[5,"COMMAND_ACK_DATA",27254],[5,"GPS_RAW_INT_DATA",27254],[5,"CONTROL_SYSTEM_STATE_DATA",27254],[5,"NAMED_VALUE_INT_DATA",27254],[5,"DEBUG_DATA",27254],[5,"LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA",27254],[5,"SCALED_IMU_DATA",27254],[5,"PARAM_REQUEST_LIST_DATA",27254],[5,"MISSION_ACK_DATA",27254],[5,"RAW_PRESSURE_DATA",27254],[5,"GIMBAL_MANAGER_INFORMATION_DATA",27254],[5,"AUTH_KEY_DATA",27254],[5,"DEBUG_FLOAT_ARRAY_DATA",27254],[5,"MISSION_SET_CURRENT_DATA",27254],[5,"GIMBAL_DEVICE_SET_ATTITUDE_DATA",27254],[5,"TERRAIN_REPORT_DATA",27254],[5,"ODOMETRY_DATA",27254],[5,"CAN_FRAME_DATA",27254],[5,"LOG_REQUEST_END_DATA",27254],[5,"V2_EXTENSION_DATA",27254],[5,"GLOBAL_POSITION_INT_COV_DATA",27254],[5,"LOG_DATA_DATA",27254],[5,"OPEN_DRONE_ID_MESSAGE_PACK_DATA",27254],[5,"TERRAIN_REQUEST_DATA",27254],[5,"POWER_STATUS_DATA",27254],[5,"SCALED_PRESSURE_DATA",27254],[5,"GPS_GLOBAL_ORIGIN_DATA",27254],[5,"ACTUATOR_CONTROL_TARGET_DATA",27254],[5,"PARAM_EXT_ACK_DATA",27254],[5,"ATTITUDE_TARGET_DATA",27254],[5,"HIL_CONTROLS_DATA",27254],[5,"ATT_POS_MOCAP_DATA",27254],[5,"GIMBAL_MANAGER_STATUS_DATA",27254],[5,"COMMAND_CANCEL_DATA",27254],[5,"SCALED_PRESSURE3_DATA",27254],[5,"HIL_RC_INPUTS_RAW_DATA",27254],[5,"VFR_HUD_DATA",27254],[5,"EVENT_DATA",27254],[5,"LANDING_TARGET_DATA",27254],[5,"PARAM_EXT_REQUEST_READ_DATA",27254],[5,"UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA",27254],[5,"UAVIONIX_ADSB_OUT_CFG_DATA",27254],[5,"CHANGE_OPERATOR_CONTROL_DATA",27254],[5,"CELLULAR_CONFIG_DATA",27254],[5,"SMART_BATTERY_INFO_DATA",27254],[5,"MISSION_REQUEST_LIST_DATA",27254],[5,"EFI_STATUS_DATA",27254],[5,"GPS_RTK_DATA",27254],[5,"REQUEST_DATA_STREAM_DATA",27254],[5,"HIGHRES_IMU_DATA",27254],[5,"SYSTEM_TIME_DATA",27254],[5,"MISSION_CURRENT_DATA",27254],[5,"TIME_ESTIMATE_TO_TARGET_DATA",27254],[5,"HYGROMETER_SENSOR_DATA",27254],[5,"POSITION_TARGET_LOCAL_NED_DATA",27254],[5,"GENERATOR_STATUS_DATA",27254],[5,"ATTITUDE_QUATERNION_DATA",27254],[5,"CAMERA_FOV_STATUS_DATA",27254],[5,"OBSTACLE_DISTANCE_DATA",27254],[5,"SETUP_SIGNING_DATA",27254],[5,"ORBIT_EXECUTION_STATUS_DATA",27254],[5,"OPEN_DRONE_ID_SYSTEM_DATA",27254],[5,"MESSAGE_INTERVAL_DATA",27254],[5,"PROTOCOL_VERSION_DATA",27254],[5,"COMPONENT_INFORMATION_DATA",27254],[5,"TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA",27254],[5,"SET_MODE_DATA",27254],[5,"SET_ACTUATOR_CONTROL_TARGET_DATA",27254],[5,"POSITION_TARGET_GLOBAL_INT_DATA",27254],[5,"PARAM_REQUEST_READ_DATA",27254],[5,"VIBRATION_DATA",27254],[5,"UAVCAN_NODE_INFO_DATA",27254],[5,"SYS_STATUS_DATA",27254],[5,"OPEN_DRONE_ID_BASIC_ID_DATA",27254],[5,"EXTENDED_SYS_STATE_DATA",27254],[5,"GLOBAL_POSITION_INT_DATA",27254],[5,"CAMERA_TRACKING_IMAGE_STATUS_DATA",27254],[5,"MANUAL_SETPOINT_DATA",27254],[5,"SAFETY_ALLOWED_AREA_DATA",27254],[5,"COMPONENT_METADATA_DATA",27254],[5,"OPEN_DRONE_ID_OPERATOR_ID_DATA",27254],[5,"TIMESYNC_DATA",27254],[5,"HIL_SENSOR_DATA",27254],[5,"VICON_POSITION_ESTIMATE_DATA",27254],[5,"FLIGHT_INFORMATION_DATA",27254],[5,"MISSION_REQUEST_DATA",27254],[5,"RAW_RPM_DATA",27254],[5,"AIS_VESSEL_DATA",27254],[5,"OPEN_DRONE_ID_LOCATION_DATA",27254],[5,"RAW_IMU_DATA",27254],[5,"VIDEO_STREAM_STATUS_DATA",27254],[5,"PLAY_TUNE_V2_DATA",27254],[5,"ISBD_LINK_STATUS_DATA",27254],[5,"PARAM_EXT_REQUEST_LIST_DATA",27254],[5,"SUPPORTED_TUNES_DATA",27254],[5,"VISION_POSITION_ESTIMATE_DATA",27254],[5,"PARAM_EXT_SET_DATA",27254],[5,"REQUEST_EVENT_DATA",27254],[5,"HEARTBEAT_DATA",27254],[5,"UAVCAN_NODE_STATUS_DATA",27254],[5,"TERRAIN_DATA_DATA",27254],[5,"TUNNEL_DATA",27254],[5,"AUTOPILOT_VERSION_DATA",27254],[5,"MISSION_REQUEST_PARTIAL_LIST_DATA",27254],[5,"GPS_STATUS_DATA",27254],[5,"TRAJECTORY_REPRESENTATION_BEZIER_DATA",27254],[5,"UAVIONIX_ADSB_OUT_DYNAMIC_DATA",27254],[5,"RESOURCE_REQUEST_DATA",27254],[5,"SET_POSITION_TARGET_LOCAL_NED_DATA",27254],[5,"RADIO_STATUS_DATA",27254],[5,"OPTICAL_FLOW_DATA",27254],[5,"FENCE_STATUS_DATA",27254],[5,"SAFETY_SET_ALLOWED_AREA_DATA",27254],[5,"HIL_STATE_QUATERNION_DATA",27254],[5,"GPS_INJECT_DATA_DATA",27254],[5,"LOCAL_POSITION_NED_DATA",27254],[5,"CAN_FILTER_MODIFY_DATA",27254],[5,"DATA_TRANSMISSION_HANDSHAKE_DATA",27254],[5,"MISSION_CLEAR_ALL_DATA",27254],[5,"GIMBAL_MANAGER_SET_ATTITUDE_DATA",27254],[5,"MEMORY_VECT_DATA",27254],[5,"WIND_COV_DATA",27254],[5,"ATTITUDE_DATA",27254],[5,"UTM_GLOBAL_POSITION_DATA",27254],[5,"DISTANCE_SENSOR_DATA",27254],[5,"CAMERA_INFORMATION_DATA",27254],[5,"COMMAND_LONG_DATA",27254],[5,"LOG_ERASE_DATA",27254],[5,"ACTUATOR_OUTPUT_STATUS_DATA",27254],[5,"MISSION_ITEM_INT_DATA",27254],[5,"NAV_CONTROLLER_OUTPUT_DATA",27254],[5,"LOGGING_DATA_DATA",27254],[5,"DEBUG_VECT_DATA",27254],[5,"WINCH_STATUS_DATA",27254],[5,"HIL_GPS_DATA",27254],[5,"SET_GPS_GLOBAL_ORIGIN_DATA",27254],[5,"CANFD_FRAME_DATA",27254],[5,"COMMAND_INT_DATA",27254],[5,"MAG_CAL_REPORT_DATA",27254],[5,"MISSION_ITEM_DATA",27254],[5,"CAMERA_IMAGE_CAPTURED_DATA",27254],[5,"RC_CHANNELS_OVERRIDE_DATA",27254],[5,"CAMERA_CAPTURE_STATUS_DATA",27254],[5,"MISSION_WRITE_PARTIAL_LIST_DATA",27254],[5,"RC_CHANNELS_DATA",27254],[5,"GPS2_RTK_DATA",27254],[5,"RC_CHANNELS_SCALED_DATA",27254],[5,"CAMERA_TRACKING_GEO_STATUS_DATA",27254],[5,"CURRENT_EVENT_SEQUENCE_DATA",27254],[5,"HIGH_LATENCY2_DATA",27254],[5,"HIL_OPTICAL_FLOW_DATA",27254],[5,"LOGGING_ACK_DATA",27254],[5,"PARAM_VALUE_DATA",27254],[5,"MISSION_COUNT_DATA",27254],[5,"PARAM_MAP_RC_DATA",27254],[5,"HIGH_LATENCY_DATA",27254],[5,"GIMBAL_MANAGER_SET_PITCHYAW_DATA",27254],[5,"FOLLOW_TARGET_DATA",27254],[5,"LOG_REQUEST_DATA_DATA",27254],[5,"OPTICAL_FLOW_RAD_DATA",27254],[5,"SCALED_IMU2_DATA",27254],[5,"MISSION_ITEM_REACHED_DATA",27254],[5,"ESTIMATOR_STATUS_DATA",27254],[5,"CHANGE_OPERATOR_CONTROL_ACK_DATA",27254],[5,"SERIAL_CONTROL_DATA",27254],[5,"ESC_INFO_DATA",27254],[5,"CAMERA_SETTINGS_DATA",27254],[5,"BUTTON_CHANGE_DATA",27254],[5,"OPEN_DRONE_ID_SELF_ID_DATA",27254],[5,"OPEN_DRONE_ID_SYSTEM_UPDATE_DATA",27254],[5,"OPEN_DRONE_ID_ARM_STATUS_DATA",27254],[5,"OPEN_DRONE_ID_AUTHENTICATION_DATA",27254],[5,"TERRAIN_CHECK_DATA",27254],[5,"RESPONSE_EVENT_ERROR_DATA",27254],[5,"GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA",27254],[5,"WHEEL_DISTANCE_DATA",27254],[5,"PING_DATA",27254],[5,"GLOBAL_VISION_POSITION_ESTIMATE_DATA",27254],[5,"SET_POSITION_TARGET_GLOBAL_INT_DATA",27254],[5,"MANUAL_CONTROL_DATA",27254],[5,"HOME_POSITION_DATA",27254],[5,"SIM_STATE_DATA",27254],[5,"GPS2_RAW_DATA",27254],[5,"ATTITUDE_QUATERNION_COV_DATA",27254],[5,"SET_HOME_POSITION_DATA",27254],[5,"FILE_TRANSFER_PROTOCOL_DATA",27254],[5,"PLAY_TUNE_DATA",27254],[5,"ESC_STATUS_DATA",27254],[5,"GIMBAL_DEVICE_ATTITUDE_STATUS_DATA",27254],[5,"SERVO_OUTPUT_RAW_DATA",27254],[5,"DATA_STREAM_DATA",27254],[5,"ONBOARD_COMPUTER_STATUS_DATA",27254],[5,"WIFI_CONFIG_AP_DATA",27254],[5,"AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA",27254],[5,"LOG_ENTRY_DATA",27254],[5,"LOCAL_POSITION_NED_COV_DATA",27254],[5,"CAMERA_TRIGGER_DATA",27254],[5,"ALTITUDE_DATA",27254],[5,"MISSION_REQUEST_INT_DATA",27254],[5,"PARAM_EXT_VALUE_DATA",27254],[5,"GPS_RTCM_DATA_DATA",27254],[5,"HIL_STATE_DATA",27254],[5,"SCALED_PRESSURE2_DATA",27254],[5,"MOUNT_ORIENTATION_DATA",27254],[5,"STORAGE_INFORMATION_DATA",27254],[6,"MavSysStatusSensorExtended",27254],[6,"MavDistanceSensor",27254],[6,"ActuatorConfiguration",27254],[6,"FenceAction",27254],[6,"MavType",27254],[6,"PrecisionLandMode",27254],[6,"MotorTestOrder",27254],[6,"UavionixAdsbEmergencyStatus",27254],[6,"AutotuneAxis",27254],[6,"OrbitYawBehaviour",27254],[6,"MavOdidCategoryEu",27254],[6,"MavParamType",27254],[6,"FailureType",27254],[6,"MavGoto",27254],[6,"ActuatorOutputFunction",27254],[6,"VideoStreamStatusFlags",27254],[6,"PreflightStorageParameterAction",27254],[6,"CellularNetworkRadioType",27254],[6,"CompMetadataType",27254],[6,"MavOdidTimeAcc",27254],[6,"MavComponent",27254],[6,"GimbalManagerFlags",27254],[6,"RcType",27254],[6,"MavFtpOpcode",27254],[6,"MavBatteryFault",27254],[6,"UtmFlightState",27254],[6,"MavOdidHeightRef",27254],[6,"UavionixAdsbOutCfgGpsOffsetLon",27254],[6,"MavBatteryChargeState",27254],[6,"MavOdidClassificationType",27254],[6,"MavOdidAuthType",27254],[6,"MavParamExtType",27254],[6,"NavVtolLandOptions",27254],[6,"FenceMitigate",27254],[6,"MavResult",27254],[6,"MavOdidClassEu",27254],[6,"MavAutopilot",27254],[6,"MavOdidHorAcc",27254],[6,"MavSensorOrientation",27254],[6,"MavOdidArmStatus",27254],[6,"CameraTrackingStatusFlags",27254],[6,"CameraMode",27254],[6,"MavEventErrorReason",27254],[6,"MavEstimatorType",27254],[6,"AdsbAltitudeType",27254],[6,"MavOdidIdType",27254],[6,"CellularNetworkFailedReason",27254],[6,"WifiConfigApMode",27254],[6,"MavOdidDescType",27254],[6,"MavCmd",27254],[6,"CameraTrackingMode",27254],[6,"SetFocusType",27254],[6,"AisType",27254],[6,"MavCollisionThreatLevel",27254],[6,"StorageUsageFlag",27254],[6,"MissionState",27254],[6,"MagCalStatus",27254],[6,"SerialControlDev",27254],[6,"MavDoRepositionFlags",27254],[6,"MotorTestThrottleType",27254],[6,"MavCmdAck",27254],[6,"AdsbEmitterType",27254],[6,"MavState",27254],[6,"StorageStatus",27254],[6,"LandingTargetType",27254],[6,"MavMissionResult",27254],[6,"MavRoi",27254],[6,"MavVtolState",27254],[6,"UavcanNodeMode",27254],[6,"ParamAck",27254],[6,"MavBatteryType",27254],[6,"MavOdidSpeedAcc",27254],[6,"MavLandedState",27254],[6,"MavDataStream",27254],[6,"MavMissionType",27254],[6,"MavlinkDataStreamType",27254],[6,"StorageType",27254],[6,"WifiConfigApResponse",27254],[6,"MavBatteryMode",27254],[6,"GripperActions",27254],[6,"WinchActions",27254],[6,"MavOdidOperatorIdType",27254],[6,"CameraTrackingTargetData",27254],[6,"MavFrame",27254],[6,"MavOdidStatus",27254],[6,"CameraZoomType",27254],[6,"MavOdidUaType",27254],[6,"MavBatteryFunction",27254],[6,"CellularStatusFlag",27254],[6,"MavOdidVerAcc",27254],[6,"MavCollisionAction",27254],[6,"MavMode",27254],[6,"CanFilterOp",27254],[6,"UavionixAdsbOutCfgGpsOffsetLat",27254],[6,"UavionixAdsbOutCfgAircraftSize",27254],[6,"VtolTransitionHeading",27254],[6,"FenceBreach",27254],[6,"ParachuteAction",27254],[6,"FirmwareVersionType",27254],[6,"MavSeverity",27254],[6,"MavOdidOperatorLocationType",27254],[6,"CellularConfigResponse",27254],[6,"GpsFixType",27254],[6,"MavModeFlagDecodePosition",27254],[6,"MavMountMode",27254],[6,"MavFtpErr",27254],[6,"MavCollisionSrc",27254],[6,"FailureUnit",27254],[6,"MavTunnelPayloadType",27254],[6,"VideoStreamType",27254],[6,"MavArmAuthDeniedReason",27254],[6,"EscConnectionType",27254],[6,"UavcanNodeHealth",27254],[6,"UavionixAdsbOutDynamicGpsFix",27254],[6,"PreflightStorageMissionAction",27254],[6,"RtkBaselineCoordinateSystem",27254],[6,"AisNavStatus",27254],[15,"InvalidEnum",27102],[15,"InvalidFlag",27102],[15,"UnknownMessage",27102]],"r":[[3,39175],[4,39175],[5,39175],[6,39175],[7,39175],[8,39177],[9,39175],[10,39175],[11,39175],[12,39175],[14,39175],[29,39175],[30,39175],[31,39175],[49,39177],[61,39175],[100,39175],[104,39175],[105,39175],[106,39175],[107,39175],[108,39175],[152,39175],[153,39175],[154,39175],[155,39175],[15498,39192],[15522,39193],[27064,39181],[27065,39181],[27067,39181],[27239,39184],[39174,39195]],"b":[[8652,"impl-Binary-for-UavionixAdsbRfHealth"],[8653,"impl-LowerHex-for-UavionixAdsbRfHealth"],[8654,"impl-Debug-for-UavionixAdsbRfHealth"],[8655,"impl-Octal-for-UavionixAdsbRfHealth"],[8656,"impl-UpperHex-for-UavionixAdsbRfHealth"],[8660,"impl-Debug-for-AisFlags"],[8661,"impl-LowerHex-for-AisFlags"],[8662,"impl-Octal-for-AisFlags"],[8663,"impl-Binary-for-AisFlags"],[8664,"impl-UpperHex-for-AisFlags"],[8668,"impl-Debug-for-GpsInputIgnoreFlags"],[8669,"impl-UpperHex-for-GpsInputIgnoreFlags"],[8670,"impl-Binary-for-GpsInputIgnoreFlags"],[8671,"impl-Octal-for-GpsInputIgnoreFlags"],[8672,"impl-LowerHex-for-GpsInputIgnoreFlags"],[8673,"impl-UpperHex-for-RallyFlags"],[8674,"impl-LowerHex-for-RallyFlags"],[8675,"impl-Binary-for-RallyFlags"],[8676,"impl-Octal-for-RallyFlags"],[8677,"impl-Debug-for-RallyFlags"],[8688,"impl-LowerHex-for-GimbalManagerCapFlags"],[8689,"impl-Debug-for-GimbalManagerCapFlags"],[8690,"impl-Octal-for-GimbalManagerCapFlags"],[8691,"impl-Binary-for-GimbalManagerCapFlags"],[8692,"impl-UpperHex-for-GimbalManagerCapFlags"],[8695,"impl-Octal-for-TuneFormat"],[8696,"impl-Debug-for-TuneFormat"],[8697,"impl-Binary-for-TuneFormat"],[8698,"impl-UpperHex-for-TuneFormat"],[8699,"impl-LowerHex-for-TuneFormat"],[8709,"impl-UpperHex-for-MavProtocolCapability"],[8710,"impl-Debug-for-MavProtocolCapability"],[8711,"impl-Octal-for-MavProtocolCapability"],[8712,"impl-Binary-for-MavProtocolCapability"],[8713,"impl-LowerHex-for-MavProtocolCapability"],[8735,"impl-UpperHex-for-MavSysStatusSensor"],[8736,"impl-Debug-for-MavSysStatusSensor"],[8737,"impl-Octal-for-MavSysStatusSensor"],[8738,"impl-Binary-for-MavSysStatusSensor"],[8739,"impl-LowerHex-for-MavSysStatusSensor"],[8740,"impl-Binary-for-MavModeFlag"],[8741,"impl-Octal-for-MavModeFlag"],[8742,"impl-LowerHex-for-MavModeFlag"],[8743,"impl-UpperHex-for-MavModeFlag"],[8744,"impl-Debug-for-MavModeFlag"],[8751,"impl-LowerHex-for-UavionixAdsbOutRfSelect"],[8752,"impl-Octal-for-UavionixAdsbOutRfSelect"],[8753,"impl-Debug-for-UavionixAdsbOutRfSelect"],[8754,"impl-UpperHex-for-UavionixAdsbOutRfSelect"],[8755,"impl-Binary-for-UavionixAdsbOutRfSelect"],[8763,"impl-LowerHex-for-GimbalDeviceErrorFlags"],[8764,"impl-Debug-for-GimbalDeviceErrorFlags"],[8765,"impl-Octal-for-GimbalDeviceErrorFlags"],[8766,"impl-UpperHex-for-GimbalDeviceErrorFlags"],[8767,"impl-Binary-for-GimbalDeviceErrorFlags"],[8771,"impl-Debug-for-AdsbFlags"],[8772,"impl-LowerHex-for-AdsbFlags"],[8773,"impl-UpperHex-for-AdsbFlags"],[8774,"impl-Binary-for-AdsbFlags"],[8775,"impl-Octal-for-AdsbFlags"],[8786,"impl-LowerHex-for-GimbalDeviceCapFlags"],[8787,"impl-Debug-for-GimbalDeviceCapFlags"],[8788,"impl-Binary-for-GimbalDeviceCapFlags"],[8789,"impl-UpperHex-for-GimbalDeviceCapFlags"],[8790,"impl-Octal-for-GimbalDeviceCapFlags"],[8797,"impl-UpperHex-for-GimbalDeviceFlags"],[8798,"impl-Octal-for-GimbalDeviceFlags"],[8799,"impl-Binary-for-GimbalDeviceFlags"],[8800,"impl-LowerHex-for-GimbalDeviceFlags"],[8801,"impl-Debug-for-GimbalDeviceFlags"],[8803,"impl-Octal-for-HlFailureFlag"],[8804,"impl-UpperHex-for-HlFailureFlag"],[8805,"impl-Binary-for-HlFailureFlag"],[8806,"impl-Debug-for-HlFailureFlag"],[8807,"impl-LowerHex-for-HlFailureFlag"],[8812,"impl-Octal-for-LimitModule"],[8813,"impl-Debug-for-LimitModule"],[8814,"impl-UpperHex-for-LimitModule"],[8815,"impl-Binary-for-LimitModule"],[8816,"impl-LowerHex-for-LimitModule"],[8820,"impl-Binary-for-AttitudeTargetTypemask"],[8821,"impl-Octal-for-AttitudeTargetTypemask"],[8822,"impl-LowerHex-for-AttitudeTargetTypemask"],[8823,"impl-Debug-for-AttitudeTargetTypemask"],[8824,"impl-UpperHex-for-AttitudeTargetTypemask"],[8827,"impl-UpperHex-for-UtmDataAvailFlags"],[8828,"impl-Octal-for-UtmDataAvailFlags"],[8829,"impl-Debug-for-UtmDataAvailFlags"],[8830,"impl-Binary-for-UtmDataAvailFlags"],[8831,"impl-LowerHex-for-UtmDataAvailFlags"],[8841,"impl-LowerHex-for-HighresImuUpdatedFlags"],[8842,"impl-Binary-for-HighresImuUpdatedFlags"],[8843,"impl-UpperHex-for-HighresImuUpdatedFlags"],[8844,"impl-Debug-for-HighresImuUpdatedFlags"],[8845,"impl-Octal-for-HighresImuUpdatedFlags"],[8859,"impl-UpperHex-for-EkfStatusFlags"],[8860,"impl-Octal-for-EkfStatusFlags"],[8861,"impl-Debug-for-EkfStatusFlags"],[8862,"impl-LowerHex-for-EkfStatusFlags"],[8863,"impl-Binary-for-EkfStatusFlags"],[8865,"impl-UpperHex-for-HilSensorUpdatedFlags"],[8866,"impl-Debug-for-HilSensorUpdatedFlags"],[8867,"impl-Octal-for-HilSensorUpdatedFlags"],[8868,"impl-Binary-for-HilSensorUpdatedFlags"],[8869,"impl-LowerHex-for-HilSensorUpdatedFlags"],[8881,"impl-Octal-for-UavionixAdsbOutDynamicState"],[8882,"impl-Binary-for-UavionixAdsbOutDynamicState"],[8883,"impl-Debug-for-UavionixAdsbOutDynamicState"],[8884,"impl-UpperHex-for-UavionixAdsbOutDynamicState"],[8885,"impl-LowerHex-for-UavionixAdsbOutDynamicState"],[8886,"impl-Binary-for-SerialControlFlag"],[8887,"impl-LowerHex-for-SerialControlFlag"],[8888,"impl-UpperHex-for-SerialControlFlag"],[8889,"impl-Debug-for-SerialControlFlag"],[8890,"impl-Octal-for-SerialControlFlag"],[8891,"impl-LowerHex-for-EscFailureFlags"],[8892,"impl-UpperHex-for-EscFailureFlags"],[8893,"impl-Debug-for-EscFailureFlags"],[8894,"impl-Octal-for-EscFailureFlags"],[8895,"impl-Binary-for-EscFailureFlags"],[8909,"impl-Binary-for-MavGeneratorStatusFlag"],[8910,"impl-UpperHex-for-MavGeneratorStatusFlag"],[8911,"impl-LowerHex-for-MavGeneratorStatusFlag"],[8912,"impl-Octal-for-MavGeneratorStatusFlag"],[8913,"impl-Debug-for-MavGeneratorStatusFlag"],[8916,"impl-LowerHex-for-PositionTargetTypemask"],[8917,"impl-Octal-for-PositionTargetTypemask"],[8918,"impl-UpperHex-for-PositionTargetTypemask"],[8919,"impl-Binary-for-PositionTargetTypemask"],[8920,"impl-Debug-for-PositionTargetTypemask"],[8923,"impl-Binary-for-EstimatorStatusFlags"],[8924,"impl-Octal-for-EstimatorStatusFlags"],[8925,"impl-UpperHex-for-EstimatorStatusFlags"],[8926,"impl-Debug-for-EstimatorStatusFlags"],[8927,"impl-LowerHex-for-EstimatorStatusFlags"],[8934,"impl-Octal-for-MavPowerStatus"],[8935,"impl-LowerHex-for-MavPowerStatus"],[8936,"impl-UpperHex-for-MavPowerStatus"],[8937,"impl-Debug-for-MavPowerStatus"],[8938,"impl-Binary-for-MavPowerStatus"],[8941,"impl-Binary-for-MavEventCurrentSequenceFlags"],[8942,"impl-Debug-for-MavEventCurrentSequenceFlags"],[8943,"impl-LowerHex-for-MavEventCurrentSequenceFlags"],[8944,"impl-UpperHex-for-MavEventCurrentSequenceFlags"],[8945,"impl-Octal-for-MavEventCurrentSequenceFlags"],[8946,"impl-Binary-for-CameraCapFlags"],[8947,"impl-Octal-for-CameraCapFlags"],[8948,"impl-LowerHex-for-CameraCapFlags"],[8949,"impl-Debug-for-CameraCapFlags"],[8950,"impl-UpperHex-for-CameraCapFlags"],[8952,"impl-Octal-for-GoproHeartbeatFlags"],[8953,"impl-LowerHex-for-GoproHeartbeatFlags"],[8954,"impl-UpperHex-for-GoproHeartbeatFlags"],[8955,"impl-Debug-for-GoproHeartbeatFlags"],[8956,"impl-Binary-for-GoproHeartbeatFlags"],[8958,"impl-Octal-for-MavWinchStatusFlag"],[8959,"impl-LowerHex-for-MavWinchStatusFlag"],[8960,"impl-Binary-for-MavWinchStatusFlag"],[8961,"impl-Debug-for-MavWinchStatusFlag"],[8962,"impl-UpperHex-for-MavWinchStatusFlag"],[21923,"impl-LowerHex-for-TuneFormat"],[21924,"impl-Binary-for-TuneFormat"],[21925,"impl-Octal-for-TuneFormat"],[21926,"impl-Debug-for-TuneFormat"],[21927,"impl-UpperHex-for-TuneFormat"],[21939,"impl-Binary-for-MavSysStatusSensor"],[21940,"impl-Octal-for-MavSysStatusSensor"],[21941,"impl-UpperHex-for-MavSysStatusSensor"],[21942,"impl-LowerHex-for-MavSysStatusSensor"],[21943,"impl-Debug-for-MavSysStatusSensor"],[21947,"impl-LowerHex-for-HighresImuUpdatedFlags"],[21948,"impl-Octal-for-HighresImuUpdatedFlags"],[21949,"impl-UpperHex-for-HighresImuUpdatedFlags"],[21950,"impl-Debug-for-HighresImuUpdatedFlags"],[21951,"impl-Binary-for-HighresImuUpdatedFlags"],[21957,"impl-Debug-for-GpsInputIgnoreFlags"],[21958,"impl-Binary-for-GpsInputIgnoreFlags"],[21959,"impl-UpperHex-for-GpsInputIgnoreFlags"],[21960,"impl-LowerHex-for-GpsInputIgnoreFlags"],[21961,"impl-Octal-for-GpsInputIgnoreFlags"],[21964,"impl-Octal-for-MavProtocolCapability"],[21965,"impl-LowerHex-for-MavProtocolCapability"],[21966,"impl-UpperHex-for-MavProtocolCapability"],[21967,"impl-Debug-for-MavProtocolCapability"],[21968,"impl-Binary-for-MavProtocolCapability"],[21971,"impl-Octal-for-HilSensorUpdatedFlags"],[21972,"impl-Debug-for-HilSensorUpdatedFlags"],[21973,"impl-LowerHex-for-HilSensorUpdatedFlags"],[21974,"impl-UpperHex-for-HilSensorUpdatedFlags"],[21975,"impl-Binary-for-HilSensorUpdatedFlags"],[21978,"impl-Debug-for-AisFlags"],[21979,"impl-Octal-for-AisFlags"],[21980,"impl-UpperHex-for-AisFlags"],[21981,"impl-LowerHex-for-AisFlags"],[21982,"impl-Binary-for-AisFlags"],[21986,"impl-Octal-for-AdsbFlags"],[21987,"impl-Binary-for-AdsbFlags"],[21988,"impl-LowerHex-for-AdsbFlags"],[21989,"impl-Debug-for-AdsbFlags"],[21990,"impl-UpperHex-for-AdsbFlags"],[21998,"impl-Debug-for-EstimatorStatusFlags"],[21999,"impl-UpperHex-for-EstimatorStatusFlags"],[22000,"impl-Binary-for-EstimatorStatusFlags"],[22001,"impl-Octal-for-EstimatorStatusFlags"],[22002,"impl-LowerHex-for-EstimatorStatusFlags"],[22009,"impl-UpperHex-for-MavModeFlag"],[22010,"impl-LowerHex-for-MavModeFlag"],[22011,"impl-Binary-for-MavModeFlag"],[22012,"impl-Octal-for-MavModeFlag"],[22013,"impl-Debug-for-MavModeFlag"],[22019,"impl-Debug-for-CameraCapFlags"],[22020,"impl-LowerHex-for-CameraCapFlags"],[22021,"impl-Binary-for-CameraCapFlags"],[22022,"impl-Octal-for-CameraCapFlags"],[22023,"impl-UpperHex-for-CameraCapFlags"],[22025,"impl-Octal-for-GimbalDeviceFlags"],[22026,"impl-LowerHex-for-GimbalDeviceFlags"],[22027,"impl-UpperHex-for-GimbalDeviceFlags"],[22028,"impl-Binary-for-GimbalDeviceFlags"],[22029,"impl-Debug-for-GimbalDeviceFlags"],[22033,"impl-UpperHex-for-GimbalManagerCapFlags"],[22034,"impl-Octal-for-GimbalManagerCapFlags"],[22035,"impl-Binary-for-GimbalManagerCapFlags"],[22036,"impl-Debug-for-GimbalManagerCapFlags"],[22037,"impl-LowerHex-for-GimbalManagerCapFlags"],[22041,"impl-Debug-for-MavWinchStatusFlag"],[22042,"impl-LowerHex-for-MavWinchStatusFlag"],[22043,"impl-Binary-for-MavWinchStatusFlag"],[22044,"impl-Octal-for-MavWinchStatusFlag"],[22045,"impl-UpperHex-for-MavWinchStatusFlag"],[22049,"impl-Octal-for-GimbalDeviceErrorFlags"],[22050,"impl-UpperHex-for-GimbalDeviceErrorFlags"],[22051,"impl-Binary-for-GimbalDeviceErrorFlags"],[22052,"impl-LowerHex-for-GimbalDeviceErrorFlags"],[22053,"impl-Debug-for-GimbalDeviceErrorFlags"],[22054,"impl-LowerHex-for-AttitudeTargetTypemask"],[22055,"impl-Binary-for-AttitudeTargetTypemask"],[22056,"impl-UpperHex-for-AttitudeTargetTypemask"],[22057,"impl-Debug-for-AttitudeTargetTypemask"],[22058,"impl-Octal-for-AttitudeTargetTypemask"],[22071,"impl-Debug-for-EscFailureFlags"],[22072,"impl-LowerHex-for-EscFailureFlags"],[22073,"impl-Octal-for-EscFailureFlags"],[22074,"impl-UpperHex-for-EscFailureFlags"],[22075,"impl-Binary-for-EscFailureFlags"],[22081,"impl-Debug-for-MavGeneratorStatusFlag"],[22082,"impl-Binary-for-MavGeneratorStatusFlag"],[22083,"impl-UpperHex-for-MavGeneratorStatusFlag"],[22084,"impl-LowerHex-for-MavGeneratorStatusFlag"],[22085,"impl-Octal-for-MavGeneratorStatusFlag"],[22096,"impl-Debug-for-GimbalDeviceCapFlags"],[22097,"impl-Octal-for-GimbalDeviceCapFlags"],[22098,"impl-UpperHex-for-GimbalDeviceCapFlags"],[22099,"impl-Binary-for-GimbalDeviceCapFlags"],[22100,"impl-LowerHex-for-GimbalDeviceCapFlags"],[22109,"impl-LowerHex-for-PositionTargetTypemask"],[22110,"impl-UpperHex-for-PositionTargetTypemask"],[22111,"impl-Octal-for-PositionTargetTypemask"],[22112,"impl-Debug-for-PositionTargetTypemask"],[22113,"impl-Binary-for-PositionTargetTypemask"],[22127,"impl-UpperHex-for-HlFailureFlag"],[22128,"impl-Octal-for-HlFailureFlag"],[22129,"impl-Debug-for-HlFailureFlag"],[22130,"impl-LowerHex-for-HlFailureFlag"],[22131,"impl-Binary-for-HlFailureFlag"],[22133,"impl-Octal-for-MavEventCurrentSequenceFlags"],[22134,"impl-Binary-for-MavEventCurrentSequenceFlags"],[22135,"impl-LowerHex-for-MavEventCurrentSequenceFlags"],[22136,"impl-UpperHex-for-MavEventCurrentSequenceFlags"],[22137,"impl-Debug-for-MavEventCurrentSequenceFlags"],[22138,"impl-Debug-for-SerialControlFlag"],[22139,"impl-UpperHex-for-SerialControlFlag"],[22140,"impl-Octal-for-SerialControlFlag"],[22141,"impl-Binary-for-SerialControlFlag"],[22142,"impl-LowerHex-for-SerialControlFlag"],[22145,"impl-Binary-for-UtmDataAvailFlags"],[22146,"impl-UpperHex-for-UtmDataAvailFlags"],[22147,"impl-LowerHex-for-UtmDataAvailFlags"],[22148,"impl-Debug-for-UtmDataAvailFlags"],[22149,"impl-Octal-for-UtmDataAvailFlags"],[22150,"impl-UpperHex-for-MavPowerStatus"],[22151,"impl-Debug-for-MavPowerStatus"],[22152,"impl-Binary-for-MavPowerStatus"],[22153,"impl-LowerHex-for-MavPowerStatus"],[22154,"impl-Octal-for-MavPowerStatus"],[27075,"impl-Debug-for-ParserError"],[27076,"impl-Display-for-ParserError"],[27077,"impl-Debug-for-MessageReadError"],[27078,"impl-Display-for-MessageReadError"],[27079,"impl-Debug-for-MessageWriteError"],[27080,"impl-Display-for-MessageWriteError"],[27082,"impl-From%3CParserError%3E-for-MessageReadError"],[27083,"impl-From%3CError%3E-for-MessageReadError"],[33844,"impl-Octal-for-GimbalDeviceErrorFlags"],[33845,"impl-UpperHex-for-GimbalDeviceErrorFlags"],[33846,"impl-Binary-for-GimbalDeviceErrorFlags"],[33847,"impl-Debug-for-GimbalDeviceErrorFlags"],[33848,"impl-LowerHex-for-GimbalDeviceErrorFlags"],[33861,"impl-UpperHex-for-MavPowerStatus"],[33862,"impl-Octal-for-MavPowerStatus"],[33863,"impl-Binary-for-MavPowerStatus"],[33864,"impl-Debug-for-MavPowerStatus"],[33865,"impl-LowerHex-for-MavPowerStatus"],[33869,"impl-Debug-for-UavionixAdsbOutDynamicState"],[33870,"impl-UpperHex-for-UavionixAdsbOutDynamicState"],[33871,"impl-LowerHex-for-UavionixAdsbOutDynamicState"],[33872,"impl-Binary-for-UavionixAdsbOutDynamicState"],[33873,"impl-Octal-for-UavionixAdsbOutDynamicState"],[33876,"impl-UpperHex-for-MavGeneratorStatusFlag"],[33877,"impl-Binary-for-MavGeneratorStatusFlag"],[33878,"impl-Octal-for-MavGeneratorStatusFlag"],[33879,"impl-LowerHex-for-MavGeneratorStatusFlag"],[33880,"impl-Debug-for-MavGeneratorStatusFlag"],[33886,"impl-Octal-for-GimbalDeviceFlags"],[33887,"impl-Binary-for-GimbalDeviceFlags"],[33888,"impl-UpperHex-for-GimbalDeviceFlags"],[33889,"impl-Debug-for-GimbalDeviceFlags"],[33890,"impl-LowerHex-for-GimbalDeviceFlags"],[33900,"impl-Binary-for-GimbalManagerCapFlags"],[33901,"impl-LowerHex-for-GimbalManagerCapFlags"],[33902,"impl-Debug-for-GimbalManagerCapFlags"],[33903,"impl-Octal-for-GimbalManagerCapFlags"],[33904,"impl-UpperHex-for-GimbalManagerCapFlags"],[33914,"impl-Debug-for-AdsbFlags"],[33915,"impl-LowerHex-for-AdsbFlags"],[33916,"impl-UpperHex-for-AdsbFlags"],[33917,"impl-Binary-for-AdsbFlags"],[33918,"impl-Octal-for-AdsbFlags"],[33919,"impl-Debug-for-GimbalDeviceCapFlags"],[33920,"impl-Octal-for-GimbalDeviceCapFlags"],[33921,"impl-UpperHex-for-GimbalDeviceCapFlags"],[33922,"impl-LowerHex-for-GimbalDeviceCapFlags"],[33923,"impl-Binary-for-GimbalDeviceCapFlags"],[33925,"impl-Octal-for-MavEventCurrentSequenceFlags"],[33926,"impl-UpperHex-for-MavEventCurrentSequenceFlags"],[33927,"impl-Binary-for-MavEventCurrentSequenceFlags"],[33928,"impl-Debug-for-MavEventCurrentSequenceFlags"],[33929,"impl-LowerHex-for-MavEventCurrentSequenceFlags"],[33934,"impl-Debug-for-TuneFormat"],[33935,"impl-Octal-for-TuneFormat"],[33936,"impl-UpperHex-for-TuneFormat"],[33937,"impl-Binary-for-TuneFormat"],[33938,"impl-LowerHex-for-TuneFormat"],[33942,"impl-Debug-for-PositionTargetTypemask"],[33943,"impl-LowerHex-for-PositionTargetTypemask"],[33944,"impl-UpperHex-for-PositionTargetTypemask"],[33945,"impl-Octal-for-PositionTargetTypemask"],[33946,"impl-Binary-for-PositionTargetTypemask"],[33949,"impl-UpperHex-for-MavSysStatusSensor"],[33950,"impl-LowerHex-for-MavSysStatusSensor"],[33951,"impl-Debug-for-MavSysStatusSensor"],[33952,"impl-Binary-for-MavSysStatusSensor"],[33953,"impl-Octal-for-MavSysStatusSensor"],[33954,"impl-LowerHex-for-MavProtocolCapability"],[33955,"impl-Debug-for-MavProtocolCapability"],[33956,"impl-Octal-for-MavProtocolCapability"],[33957,"impl-Binary-for-MavProtocolCapability"],[33958,"impl-UpperHex-for-MavProtocolCapability"],[33962,"impl-LowerHex-for-UavionixAdsbOutRfSelect"],[33963,"impl-Debug-for-UavionixAdsbOutRfSelect"],[33964,"impl-Binary-for-UavionixAdsbOutRfSelect"],[33965,"impl-UpperHex-for-UavionixAdsbOutRfSelect"],[33966,"impl-Octal-for-UavionixAdsbOutRfSelect"],[33967,"impl-Binary-for-EstimatorStatusFlags"],[33968,"impl-LowerHex-for-EstimatorStatusFlags"],[33969,"impl-UpperHex-for-EstimatorStatusFlags"],[33970,"impl-Debug-for-EstimatorStatusFlags"],[33971,"impl-Octal-for-EstimatorStatusFlags"],[33978,"impl-UpperHex-for-CameraCapFlags"],[33979,"impl-Debug-for-CameraCapFlags"],[33980,"impl-LowerHex-for-CameraCapFlags"],[33981,"impl-Octal-for-CameraCapFlags"],[33982,"impl-Binary-for-CameraCapFlags"],[33984,"impl-Debug-for-AisFlags"],[33985,"impl-Octal-for-AisFlags"],[33986,"impl-Binary-for-AisFlags"],[33987,"impl-UpperHex-for-AisFlags"],[33988,"impl-LowerHex-for-AisFlags"],[33989,"impl-Debug-for-GpsInputIgnoreFlags"],[33990,"impl-LowerHex-for-GpsInputIgnoreFlags"],[33991,"impl-Binary-for-GpsInputIgnoreFlags"],[33992,"impl-Octal-for-GpsInputIgnoreFlags"],[33993,"impl-UpperHex-for-GpsInputIgnoreFlags"],[34000,"impl-LowerHex-for-SerialControlFlag"],[34001,"impl-Debug-for-SerialControlFlag"],[34002,"impl-UpperHex-for-SerialControlFlag"],[34003,"impl-Octal-for-SerialControlFlag"],[34004,"impl-Binary-for-SerialControlFlag"],[34010,"impl-Binary-for-HighresImuUpdatedFlags"],[34011,"impl-LowerHex-for-HighresImuUpdatedFlags"],[34012,"impl-UpperHex-for-HighresImuUpdatedFlags"],[34013,"impl-Octal-for-HighresImuUpdatedFlags"],[34014,"impl-Debug-for-HighresImuUpdatedFlags"],[34015,"impl-UpperHex-for-UavionixAdsbRfHealth"],[34016,"impl-Binary-for-UavionixAdsbRfHealth"],[34017,"impl-LowerHex-for-UavionixAdsbRfHealth"],[34018,"impl-Octal-for-UavionixAdsbRfHealth"],[34019,"impl-Debug-for-UavionixAdsbRfHealth"],[34033,"impl-Binary-for-MavWinchStatusFlag"],[34034,"impl-Octal-for-MavWinchStatusFlag"],[34035,"impl-Debug-for-MavWinchStatusFlag"],[34036,"impl-UpperHex-for-MavWinchStatusFlag"],[34037,"impl-LowerHex-for-MavWinchStatusFlag"],[34044,"impl-Octal-for-AttitudeTargetTypemask"],[34045,"impl-UpperHex-for-AttitudeTargetTypemask"],[34046,"impl-Binary-for-AttitudeTargetTypemask"],[34047,"impl-Debug-for-AttitudeTargetTypemask"],[34048,"impl-LowerHex-for-AttitudeTargetTypemask"],[34055,"impl-UpperHex-for-HlFailureFlag"],[34056,"impl-Octal-for-HlFailureFlag"],[34057,"impl-Binary-for-HlFailureFlag"],[34058,"impl-Debug-for-HlFailureFlag"],[34059,"impl-LowerHex-for-HlFailureFlag"],[34060,"impl-UpperHex-for-HilSensorUpdatedFlags"],[34061,"impl-Debug-for-HilSensorUpdatedFlags"],[34062,"impl-LowerHex-for-HilSensorUpdatedFlags"],[34063,"impl-Binary-for-HilSensorUpdatedFlags"],[34064,"impl-Octal-for-HilSensorUpdatedFlags"],[34066,"impl-Octal-for-UtmDataAvailFlags"],[34067,"impl-Binary-for-UtmDataAvailFlags"],[34068,"impl-LowerHex-for-UtmDataAvailFlags"],[34069,"impl-UpperHex-for-UtmDataAvailFlags"],[34070,"impl-Debug-for-UtmDataAvailFlags"],[34078,"impl-LowerHex-for-MavModeFlag"],[34079,"impl-Octal-for-MavModeFlag"],[34080,"impl-UpperHex-for-MavModeFlag"],[34081,"impl-Debug-for-MavModeFlag"],[34082,"impl-Binary-for-MavModeFlag"],[34091,"impl-Octal-for-EscFailureFlags"],[34092,"impl-UpperHex-for-EscFailureFlags"],[34093,"impl-LowerHex-for-EscFailureFlags"],[34094,"impl-Binary-for-EscFailureFlags"],[34095,"impl-Debug-for-EscFailureFlags"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAPCFUgAAAAUACAAAAA0ABQAUABgALgADADMABAA5AAsASgACAE4AAgBSAAAAWAAMAGYAAgBtAAAAcwACAHcAAAB5AB4AmQAAAJ0AzA2KDnYAgQ8CAOQPSwhQGAYAdxhmBf4dFwA2HuYEZyX1AX0nDwDNJwAA+CnYAPEqHAEuLKED8C8+AG8wBACUMIkEPjXlBUQ7SQGPPA0AnjwHAKg8lApWR2YAIUgBAG5IIAaoTgEAw07wA81SDgD1UqYDTlhuAdZZDQAWWgAAsFuZAGNc7QBqXa4CMmAnAIxgBACqYGEDJWRSBJFoOAHLaQEAzmkAANNpUQAqagMAM2o0AGlqAQB0atkKanVnAEJ2AQCYdlAGBX0BACN9CQRJgRAAdoHLAwiHhAGpiA0A74gAAJqKmQBQi/EAXoy+AjmPKgCcjwQAvY92A1CTcwTglyYB"}],\ -["mavlink_bindgen",{"t":"FFCONNNNHCNNHNNHNNOOOCONNNNNNHGPPPNNNNNNNNNNNOOOOOOPPPPPPPPPPPPPPPPPFFFFFGGPPPPPPPPPPPONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOONOOONNNNNNNHONNNNNNNNNNNNNNHONNNNNNNOOOOOOOOHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNO","n":["GeneratedBinding","GeneratedBindings","binder","bindings","borrow","borrow","borrow_mut","borrow_mut","emit_cargo_build_messages","error","fmt","fmt","format_generated_code","from","from","generate","into","into","mavlink_xml","mod_rs","module_name","parser","rust_module","try_from","try_from","try_into","try_into","type_id","type_id","generate","BindGenError","CouldNotCreateRustBindingsFile","CouldNotReadDefinitionsDirectory","CouldNotReadDirectoryEntryInDefinitionsDirectory","borrow","borrow_mut","fmt","fmt","from","into","source","to_string","try_from","try_into","type_id","dest_path","path","path","source","source","source","Array","Char","Deprecated","Description","Dialect","Double","Entry","Enum","Enums","Extensions","Field","Float","Include","Int16","Int32","Int64","Int8","MavEnum","MavEnumEntry","MavField","MavMessage","MavProfile","MavType","MavXmlElement","Mavlink","Message","Messages","Param","UInt16","UInt32","UInt64","UInt8","UInt8MavlinkVersion","Version","Wip","bitfield","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","compare","default","default","default","default","default","default","description","description","description","description","display","emit_default_value","entries","enums","enumtype","eq","eq","eq","eq","eq","eq","eq","extra_crc","fields","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","generate","id","into","into","into","into","into","into","into","is_extension","mavtype","messages","name","name","name","name","params","parse_profile","primitive_type","rust_primitive_type","rust_reader","rust_type","rust_writer","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","value"],"q":[[0,"mavlink_bindgen"],[29,"mavlink_bindgen::binder"],[30,"mavlink_bindgen::error"],[45,"mavlink_bindgen::error::BindGenError"],[51,"mavlink_bindgen::parser"],[206,"core::fmt"],[207,"core::result"],[208,"std::path"],[209,"core::convert"],[210,"core::any"],[211,"alloc::vec"],[212,"std::io"],[213,"core::error"],[214,"core::option"],[215,"alloc::string"],[216,"core::cmp"],[217,"proc_macro2"],[218,"std::collections::hash::set"]],"i":[0,0,0,1,3,1,3,1,0,0,3,1,0,3,1,0,3,1,3,1,3,0,3,3,1,3,1,3,1,0,0,6,6,6,6,6,6,6,6,6,6,6,6,6,6,31,32,33,32,33,31,22,22,23,23,23,22,23,23,23,23,23,22,23,22,22,22,22,0,0,0,0,0,0,0,23,23,23,23,22,22,22,22,22,23,23,18,17,18,19,20,21,22,23,17,18,19,20,21,22,23,17,18,19,20,21,22,23,17,18,19,20,21,22,23,22,17,18,19,20,21,22,18,19,20,21,21,22,18,17,21,17,18,19,20,21,22,23,0,20,17,18,19,20,21,22,23,17,18,19,20,21,22,23,0,20,17,18,19,20,21,22,23,21,21,17,18,19,20,21,19,0,22,22,22,22,22,17,18,19,20,21,22,23,17,18,19,20,21,22,23,17,18,19,20,21,22,23,17,18,19,20,21,22,23,19],"f":"````{ce{}{}}000{bd}`{{fh}j}{{bh}j}2{cc{}}0{{ce}{{n{bl}}}{{Ab{A`}}}{{Ab{A`}}}}55`````{c{{n{e}}}{}{}}000{cAd{}}0{{{Ah{Af}}c}dAj}````88{{lh}j}059{l{{An{Al}}}}{cB`{}}554``````````````````````````````````````````;;;;;;;;;;;;;;{BbBb}{BdBd}{BfBf}{BhBh}{BjBj}{BlBl}{BnBn}{{ce}d{}{}}000000{{BlBl}C`}{{}Bb}{{}Bd}{{}Bf}{{}Bh}{{}Bj}{{}Bl}`````{BlCb}```{{BbBb}Cd}{{BdBd}Cd}{{BfBf}Cd}{{BhBh}Cd}{{BjBj}Cd}{{BlBl}Cd}{{BnBn}Cd}{BhCf}`{{Bbh}j}{{Bdh}j}{{Bfh}j}{{Bhh}j}{{Bjh}j}{{Blh}j}{{Bnh}j}{cc{}}000000{{A`A`c}dAj}`{ce{}{}}000000````````{{A`A`{Cj{Ch}}}Bb}{BlB`}0{{BlCbCl}Cb}103333333{c{{n{e}}}{}{}}0000000000000{cAd{}}000000`","D":"D`","p":[[5,"GeneratedBindings",0],[1,"unit"],[5,"GeneratedBinding",0],[5,"Formatter",206],[8,"Result",206],[6,"BindGenError",30],[6,"Result",207],[5,"Path",208],[10,"AsRef",209],[5,"TypeId",210],[1,"str"],[5,"Vec",211],[10,"Write",212],[10,"Error",213],[6,"Option",214],[5,"String",215],[5,"MavProfile",51],[5,"MavEnum",51],[5,"MavEnumEntry",51],[5,"MavMessage",51],[5,"MavField",51],[6,"MavType",51],[6,"MavXmlElement",51],[6,"Ordering",216],[5,"TokenStream",217],[1,"bool"],[1,"u8"],[5,"PathBuf",208],[5,"HashSet",218],[5,"Ident",217],[15,"CouldNotCreateRustBindingsFile",45],[15,"CouldNotReadDefinitionsDirectory",45],[15,"CouldNotReadDirectoryEntryInDefinitionsDirectory",45]],"r":[],"b":[[36,"impl-Debug-for-BindGenError"],[37,"impl-Display-for-BindGenError"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAK4ACwAAAA0AEAAAABMADAAjAAMAKQAtAFgAGwB1ABUAjAAHAJwAAACkAAgAsgAcAA=="}],\ +["mavlink",{"t":"TTTFFSSSKFFGKRKTPPCNNNNNNNNNNCCHNNNNNNNNNNNNCNNNOHNNNMMNNNNNNCMNNNNNNNNNNMNNNNNOCNNNNNNMNNMMONNMNNNNCONNHHHHHMNMNNNNOMMNNNNNNNNMNNONNNNNNNNNNNNNNNNNNNNCCHHHPPPPPPPPPPPPPPPFPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPFPFPPPPPPPPPPPPPPPPPPPPPPTTTTTTTTTTPFPPFPFFPFTTTTTTTTTTTTTPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPFPFOPFPFPFPPFFPFTTTTTTPFPFPFPFPFPPPPGGGGGFFGGFGPFPPFPFPFTTTTTTTTTTTTPPPFPPPPFPFPFPPPPFPFPPPPPPPPFPFPPPPPPPPPPPFPFPPFPPPFPPFPPPPPPPPPPPPPPFPPPPPPPPPPPPPPPFFOPFPFPFPFPFPFPFPFPPPPPPPFPPPPPPPPPPPPPPPPPPPPPPPPPPFPFPFPFFGGGGGGGGGGGGGOOOGOPFPFPFPFPFPFPFPFPFPFPPPPPPPTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTPPPFPFPFPFPFPFPFGGOPFTTTTTTTTPFTTTPFTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTPPPPPPTTTTTTTTPFPFPFPFPFTTTTTTTTTTPFTTPFPFFGFFPPPPPPPPPPPPPPPPPPPPPPPTPPPPPPPPPPPPPFPPPPFPFOPFPPPPPPFPPPPPPPPFGGGGGGPFPPPPPPPPPPFPFTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTPFPFTTTTTTTTTTTTTTTTPPPPPPPPPPPFPFPFPFPFPFPFPPFFPFPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPTPPPPPPPPPPPPPPPFPFPFPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPFPFPPFPFPPPPPPPPPPFPFPFTTTTTTTTPFPFPFPFPPGGGFFFFGGGGGGGFGGGGGGGGGGGGFGPPPFPFPFPFTTTTTTTTTTTTTTTPPFFPFPFPFPFPFPFTTTTTTTTTTTTTTTPFPFTTTTTTTTTTTTTTPFPFPFGFFFOOOOPPPPPPPFPFPPPPFGGPFPPPPTPFPPPPPPPPPFPTTTPFPPFFPFPFPPFFPFPFPFPFPFPFGGFGPPPPPFPFPPPPPFPFPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPTPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPTTTTTTTTTTTTTTTTTTTTTTTPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPTTPPPPPPPPTTTTTTPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPTTTTTTTTTTTTTTTTTTTTTTTTPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPTTTTTTPTTTTTTTTTTTTTTTTTTTTTTTTTTPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPTTTTTTTTTTTTTTPFOOOOPFPFPFPFPFPFPFPFPFPFPPFPFPFPFPPFPPPPPPPFPOPPPPPPPPFPFPFPFGGGGGGGGGGGGGGGGGGGFGGGGFGGGGGGFGGGGGGGGGGGGGGGGGGGGGFFGGGGGGGFGGGGFGGGGPFPFPFPPPGPPFFPFPFPFPFPFPFPFPFPFPFPFPFPFPFPPPPPPPFPFPPPPPPPPPPPPFPFPGGGOPPPPPPPPFPFPFPFPFPFPPFPFPPPPFPFPPPFPPPPPPFPPPPPPPPPPPPPPPPPPPPPPPPPFPFPFPFTTTTTTTTTTTTPFPPPPFGGOOOGGFGGGPFPFPFPFPFPFPFPFPFPFPFPFPPPFPFPFPFPFPFPPPPPPPPPPPPPFPPFGGGPFPFPPFPFFPPFPFFPPPPPFPFPPPPPTTTTTPPPPPPPPPPPFPFPFPFPFPFPFPFPFPFPFPFPFPPOPFPFPPPPPPPPPPPPPPPPPPPPPPPPPPPFPFPFGGFGGGGGGPFPFPFPFPFPFPPPPPPPFPFTTPFGFPPPPPFPPPPPPFPPPPPPPPPPPPPPPPPFPPPPPPPPPPPPFPPPPPPTTTTTPPPPPPTTTPTTTTPFPTTTTTTTTPPPPPPFGGGGGGGFFFFGPFPFPFPFPFPFPPPPPPPFPFPFPPPPPOOOGGOGPFPFPFPPPPPPPPPPPPPPPPPPPPPFPPFFGGGPPPPOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONONNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOFNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNNNNNNPPPPPPPFPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPFPPPPPPPPPPPPPPPPPPPPPPTTTTTTTTTTPFTTTTTTTTTTTTTPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPFPFPFPPFFPFTTTTTTPFPFPFPFPPPPGGGGFFGGFGPPFPFPFTTTTTTTTTTTTPFPFPFPPPPFPFPFPPPPPPPPPPPFPFPPFPPPFPPFPPPPPPPPPPPPPPFPPPPPPPPPPPPPPPFFOPFPFPFPFPFPFPFPPPPPPPFPFFGGGGGGGGGGGPFPFPFPFPFTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTPFPFPFTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTPPPPPPTTTTTTTTPFPFTTTTTTTTTTPFTTPFPFGFFPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPFPFPPPPPPFPPPPPPPPFGGGGGGPFPFTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTPFPFTTTTTTTTTTTTTTTTPPPPPPPPPPPFPFPFPFPFPPFFPFPFPFPPPPPPPPPPFPFPFTTTTTTTTPFPFPFPFPPFFFFGGFGPFPFTTTTTTTTTTTTTTTPPFFPFPFPFPFPFPFTTTTTTTTTTTTTTTPFPFTTTTTTTTTTTTTTPFPFFFFOPFPFPPPPPFPPFFPFPFPPFFPFPFPFPFPFPFGPPPPPFPPPPPFPFPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPTPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPTTTTTTTTTTTTTTTTTTTTTTTPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPTTPPPPPPPPTTTTTTPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPTTTTTTTTTTTTTTTTTTTTTTTTPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPTTTTTTPTTTTTTTTTTTTTTTTTTTTTTTTTTPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPTTTTTTTTTTTTTTPFPFPFPFPFPFPFPFPFPPFPFPFPFPPFPPPPPPPFPOPPPPPPPPFGGGGGGGGGGGGGGGGGGFGGGGFGGGGGGFGGGGGGGGGGGGGGGGGGGGFFGGGGGFGGGGFGGGGPFPFPFPPPGPFPFPFPFPFPFPFPFPFPFPFPFPFPFPFPPPPPGPPPPPPPPFPFPFPFPFPFPPFPFPPPPFPFPPFPFPFPFPFTTTTTTTTTTTTPFPPPPFGGFGGGPFPFPFPFPFPFPFPFPPPFPFPFPFPPGGPFPFPPFPFFPPFPFFPFPPPPPTTTTTPPPPPPPPPPPFPFPFPFPFPFPFPFPFPFPFPFPFPPPPPPPPPPPPPPPPPPFPFPFGFGGGGPFPFPFPFPFPFPFPFTTPFFPPPPPFPPPPPPFPTTTTTTTTPPPPPPFGGFGPFPFPFPFPFPFPPPPPPPFPFPPPPPOGGOGPFPFPPPPPPPPPPPPPPPPPPPPPFPFGGGPPPPOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONONNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOONNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPGGPGPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOTTTTTTPPPPPPPFPFPPPGGGNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOONNNOOOOOONNNNNNNNNONNNNNNNNNNNNNNNNNNNOOOOONNNNNFNNNNNNNNNNNNNNPPPPPPPFPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPFPPPPPPPPPPPPPPPPPPPPPPTTTTTTTTTTPFTTTTTTTTTTTTTPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPFPFPFPPFFPFTTTTTTPFPFPFPFPPPPGGGGFFGGFGPPFPFPFTTTTTTTTTTTTPFPFPFPPPPFPFPFPPPPPPPPPPPFPFPPFPPPFPPFPPPPPPPPPPPPPPFPPPPPPPPPPPPPPPFFOPFPFPFPFPFPFPFPPPPPPPFPFFGGGGGGGGGGGPFPFPFPFPFTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTPFPFPFTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTPPPPPPTTTTTTTTPFPFTTTTTTTTTTPFTTPFPFGFFPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPFPFPPPPPPFPPPPPPPPFGGGGGGPFPFTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTPFPFTTTTTTTTTTTTTTTTPPPPPPPPPPPFPFPFPFPFPPFFPFPFPFPPPPPPPPPPFPFPFTTTTTTTTPFPFPFPFPPFFFFGGFGPFPFTTTTTTTTTTTTTTTPPFFPFPFPFPFPFPFTTTTTTTTTTTTTTTPFPFTTTTTTTTTTTTTTPFPFFFFOOPFPFPPPPPFPPFFPFPFPPFFPFPFPFPFPFPFGPPPPPFPPPPPFPFPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPTPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPTTTTTTTTTTTTTTTTTTTTTTTPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPTTPPPPPPPPTTTTTTPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPTTTTTTTTTTTTTTTTTTTTTTTTPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPTTTTTTPTTTTTTTTTTTTTTTTTTTTTTTTTTPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPTTTTTTTTTTTTTTPFPFPFPFPFPFPFPFPFPPFPFPFPFPPFPPPPPPPFPOPPPPPPPPFGGGGGGGGGGGGGGGGGGFGGGGFGGGGGGFGGGGGGGGGGGGGGGGGGGGFFGGGGGFGGGGFGGGGPFPFPFPPPGPFPFPFPFPFPFPFPFPFPFPFPFPFPFPFPPPPPGPPPPPPPPFPFPFPFPFPFPPFPFPPPPFPFPPFPFPFPFPFTTTTTTTTTTTTPFPPPPFGGFGGGPFPFPFPFPFPFPFPFPPPFPFPFPFPPGGPFPFPPFPFFPPFPFFPFPPPPPTTTTTPPPPPPPPPPPFPFPFPFPFPFPFPFPFPFPFPFPFPPPPPPPPPPPPPPPPPPFPFPFGFGGGGPFPFPFPFPFPFPFPFTTPFFPPPPPFPPPPPPFPPPPPPPPPPPPPPPPPFPPPPPPPPPPPPFPPPPPPTTTTTPPPPPPTTTPTTTTPFPTTTTTTTTPPPPPPFGGGGGGGFFFFGPFPFPFPFPFPFPPPPPPPFPFPPPPPOOGGOGPFPFPPPPPPPPPPPPPPPPPPPPPFPFGGGPPPPOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONONNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOH","n":["ENCODED_LEN","EXTRA_CRC","ID","MAVLinkV1MessageRaw","MAVLinkV2MessageRaw","MAV_STX","MAV_STX_V2","MAX_FRAME_SIZE","MavConnection","MavFrame","MavHeader","MavlinkVersion","Message","Message","MessageData","NAME","V1","V2","ardupilotmega","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","bytes","bytes_mut","calculate_crc","checksum","checksum","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","common","compatibility_flags","component_id","component_id","component_id","connect","default","default","default","default_message_from_id","deser","deser","deserialize","eq","eq","eq","eq","error","extra_crc","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","get_protocol_version","has_valid_crc","has_valid_crc","header","header","header","header","icarous","incompatibility_flags","into","into","into","into","into","message_id","message_id","message_id","message_id_from_name","message_name","msg","new","new","parse","payload","payload","payload_length","payload_length","peek_reader","protocol_version","raw_bytes","raw_bytes","read_v1_msg","read_v1_raw_message","read_v2_msg","read_v2_raw_message","read_versioned_msg","recv","recv_frame","send","send_default","send_frame","sequence","sequence","sequence","ser","ser","ser","serialize","serialize","serialize","serialize_message","serialize_message","serialize_message_data","serialize_message_data","set_protocol_version","system_id","system_id","system_id","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","uavionix","utils","write_v1_msg","write_v2_msg","write_versioned_msg","ACCELCAL_VEHICLE_POS_BACK","ACCELCAL_VEHICLE_POS_FAILED","ACCELCAL_VEHICLE_POS_LEFT","ACCELCAL_VEHICLE_POS_LEVEL","ACCELCAL_VEHICLE_POS_NOSEDOWN","ACCELCAL_VEHICLE_POS_NOSEUP","ACCELCAL_VEHICLE_POS_RIGHT","ACCELCAL_VEHICLE_POS_SUCCESS","ACTUATOR_CONFIGURATION_3D_MODE_OFF","ACTUATOR_CONFIGURATION_3D_MODE_ON","ACTUATOR_CONFIGURATION_BEEP","ACTUATOR_CONFIGURATION_NONE","ACTUATOR_CONFIGURATION_SPIN_DIRECTION1","ACTUATOR_CONFIGURATION_SPIN_DIRECTION2","ACTUATOR_CONTROL_TARGET","ACTUATOR_CONTROL_TARGET_DATA","ACTUATOR_OUTPUT_FUNCTION_MOTOR1","ACTUATOR_OUTPUT_FUNCTION_MOTOR10","ACTUATOR_OUTPUT_FUNCTION_MOTOR11","ACTUATOR_OUTPUT_FUNCTION_MOTOR12","ACTUATOR_OUTPUT_FUNCTION_MOTOR13","ACTUATOR_OUTPUT_FUNCTION_MOTOR14","ACTUATOR_OUTPUT_FUNCTION_MOTOR15","ACTUATOR_OUTPUT_FUNCTION_MOTOR16","ACTUATOR_OUTPUT_FUNCTION_MOTOR2","ACTUATOR_OUTPUT_FUNCTION_MOTOR3","ACTUATOR_OUTPUT_FUNCTION_MOTOR4","ACTUATOR_OUTPUT_FUNCTION_MOTOR5","ACTUATOR_OUTPUT_FUNCTION_MOTOR6","ACTUATOR_OUTPUT_FUNCTION_MOTOR7","ACTUATOR_OUTPUT_FUNCTION_MOTOR8","ACTUATOR_OUTPUT_FUNCTION_MOTOR9","ACTUATOR_OUTPUT_FUNCTION_NONE","ACTUATOR_OUTPUT_FUNCTION_SERVO1","ACTUATOR_OUTPUT_FUNCTION_SERVO10","ACTUATOR_OUTPUT_FUNCTION_SERVO11","ACTUATOR_OUTPUT_FUNCTION_SERVO12","ACTUATOR_OUTPUT_FUNCTION_SERVO13","ACTUATOR_OUTPUT_FUNCTION_SERVO14","ACTUATOR_OUTPUT_FUNCTION_SERVO15","ACTUATOR_OUTPUT_FUNCTION_SERVO16","ACTUATOR_OUTPUT_FUNCTION_SERVO2","ACTUATOR_OUTPUT_FUNCTION_SERVO3","ACTUATOR_OUTPUT_FUNCTION_SERVO4","ACTUATOR_OUTPUT_FUNCTION_SERVO5","ACTUATOR_OUTPUT_FUNCTION_SERVO6","ACTUATOR_OUTPUT_FUNCTION_SERVO7","ACTUATOR_OUTPUT_FUNCTION_SERVO8","ACTUATOR_OUTPUT_FUNCTION_SERVO9","ACTUATOR_OUTPUT_STATUS","ACTUATOR_OUTPUT_STATUS_DATA","ADAP_TUNING","ADAP_TUNING_DATA","ADSB_ALTITUDE_TYPE_GEOMETRIC","ADSB_ALTITUDE_TYPE_PRESSURE_QNH","ADSB_EMITTER_TYPE_EMERGENCY_SURFACE","ADSB_EMITTER_TYPE_GLIDER","ADSB_EMITTER_TYPE_HEAVY","ADSB_EMITTER_TYPE_HIGHLY_MANUV","ADSB_EMITTER_TYPE_HIGH_VORTEX_LARGE","ADSB_EMITTER_TYPE_LARGE","ADSB_EMITTER_TYPE_LIGHT","ADSB_EMITTER_TYPE_LIGHTER_AIR","ADSB_EMITTER_TYPE_NO_INFO","ADSB_EMITTER_TYPE_PARACHUTE","ADSB_EMITTER_TYPE_POINT_OBSTACLE","ADSB_EMITTER_TYPE_ROTOCRAFT","ADSB_EMITTER_TYPE_SERVICE_SURFACE","ADSB_EMITTER_TYPE_SMALL","ADSB_EMITTER_TYPE_SPACE","ADSB_EMITTER_TYPE_UAV","ADSB_EMITTER_TYPE_ULTRA_LIGHT","ADSB_EMITTER_TYPE_UNASSGINED3","ADSB_EMITTER_TYPE_UNASSIGNED","ADSB_EMITTER_TYPE_UNASSIGNED2","ADSB_FLAGS_BARO_VALID","ADSB_FLAGS_SIMULATED","ADSB_FLAGS_SOURCE_UAT","ADSB_FLAGS_VALID_ALTITUDE","ADSB_FLAGS_VALID_CALLSIGN","ADSB_FLAGS_VALID_COORDS","ADSB_FLAGS_VALID_HEADING","ADSB_FLAGS_VALID_SQUAWK","ADSB_FLAGS_VALID_VELOCITY","ADSB_FLAGS_VERTICAL_VELOCITY_VALID","ADSB_VEHICLE","ADSB_VEHICLE_DATA","AHRS","AHRS2","AHRS2_DATA","AHRS3","AHRS3_DATA","AHRS_DATA","AIRSPEED_AUTOCAL","AIRSPEED_AUTOCAL_DATA","AIS_FLAGS_HIGH_VELOCITY","AIS_FLAGS_LARGE_BOW_DIMENSION","AIS_FLAGS_LARGE_PORT_DIMENSION","AIS_FLAGS_LARGE_STARBOARD_DIMENSION","AIS_FLAGS_LARGE_STERN_DIMENSION","AIS_FLAGS_POSITION_ACCURACY","AIS_FLAGS_TURN_RATE_SIGN_ONLY","AIS_FLAGS_VALID_CALLSIGN","AIS_FLAGS_VALID_COG","AIS_FLAGS_VALID_DIMENSIONS","AIS_FLAGS_VALID_NAME","AIS_FLAGS_VALID_TURN_RATE","AIS_FLAGS_VALID_VELOCITY","AIS_NAV_AGROUND","AIS_NAV_AIS_SART","AIS_NAV_ANCHORED","AIS_NAV_DRAUGHT_CONSTRAINED","AIS_NAV_FISHING","AIS_NAV_MOORED","AIS_NAV_RESERVED_1","AIS_NAV_RESERVED_2","AIS_NAV_RESERVED_3","AIS_NAV_RESERVED_HSC","AIS_NAV_RESERVED_WIG","AIS_NAV_RESTRICTED_MANOEUVERABILITY","AIS_NAV_SAILING","AIS_NAV_UNKNOWN","AIS_NAV_UN_COMMANDED","AIS_TYPE_ANTI_POLLUTION","AIS_TYPE_CARGO","AIS_TYPE_CARGO_HAZARDOUS_A","AIS_TYPE_CARGO_HAZARDOUS_B","AIS_TYPE_CARGO_HAZARDOUS_C","AIS_TYPE_CARGO_HAZARDOUS_D","AIS_TYPE_CARGO_RESERVED_1","AIS_TYPE_CARGO_RESERVED_2","AIS_TYPE_CARGO_RESERVED_3","AIS_TYPE_CARGO_RESERVED_4","AIS_TYPE_CARGO_UNKNOWN","AIS_TYPE_DIVING","AIS_TYPE_DREDGING","AIS_TYPE_FISHING","AIS_TYPE_HSC","AIS_TYPE_HSC_HAZARDOUS_A","AIS_TYPE_HSC_HAZARDOUS_B","AIS_TYPE_HSC_HAZARDOUS_C","AIS_TYPE_HSC_HAZARDOUS_D","AIS_TYPE_HSC_RESERVED_1","AIS_TYPE_HSC_RESERVED_2","AIS_TYPE_HSC_RESERVED_3","AIS_TYPE_HSC_RESERVED_4","AIS_TYPE_HSC_UNKNOWN","AIS_TYPE_LAW_ENFORCEMENT","AIS_TYPE_MEDICAL_TRANSPORT","AIS_TYPE_MILITARY","AIS_TYPE_NONECOMBATANT","AIS_TYPE_OTHER","AIS_TYPE_OTHER_HAZARDOUS_A","AIS_TYPE_OTHER_HAZARDOUS_B","AIS_TYPE_OTHER_HAZARDOUS_C","AIS_TYPE_OTHER_HAZARDOUS_D","AIS_TYPE_OTHER_RESERVED_1","AIS_TYPE_OTHER_RESERVED_2","AIS_TYPE_OTHER_RESERVED_3","AIS_TYPE_OTHER_RESERVED_4","AIS_TYPE_OTHER_UNKNOWN","AIS_TYPE_PASSENGER","AIS_TYPE_PASSENGER_HAZARDOUS_A","AIS_TYPE_PASSENGER_HAZARDOUS_B","AIS_TYPE_PASSENGER_HAZARDOUS_C","AIS_TYPE_PASSENGER_HAZARDOUS_D","AIS_TYPE_PASSENGER_RESERVED_1","AIS_TYPE_PASSENGER_RESERVED_2","AIS_TYPE_PASSENGER_RESERVED_3","AIS_TYPE_PASSENGER_RESERVED_4","AIS_TYPE_PASSENGER_UNKNOWN","AIS_TYPE_PILOT","AIS_TYPE_PLEASURE","AIS_TYPE_PORT_TENDER","AIS_TYPE_RESERVED_1","AIS_TYPE_RESERVED_10","AIS_TYPE_RESERVED_11","AIS_TYPE_RESERVED_12","AIS_TYPE_RESERVED_13","AIS_TYPE_RESERVED_14","AIS_TYPE_RESERVED_15","AIS_TYPE_RESERVED_16","AIS_TYPE_RESERVED_17","AIS_TYPE_RESERVED_18","AIS_TYPE_RESERVED_19","AIS_TYPE_RESERVED_2","AIS_TYPE_RESERVED_20","AIS_TYPE_RESERVED_21","AIS_TYPE_RESERVED_3","AIS_TYPE_RESERVED_4","AIS_TYPE_RESERVED_5","AIS_TYPE_RESERVED_6","AIS_TYPE_RESERVED_7","AIS_TYPE_RESERVED_8","AIS_TYPE_RESERVED_9","AIS_TYPE_SAILING","AIS_TYPE_SAR","AIS_TYPE_SPARE_LOCAL_1","AIS_TYPE_SPARE_LOCAL_2","AIS_TYPE_TANKER","AIS_TYPE_TANKER_HAZARDOUS_A","AIS_TYPE_TANKER_HAZARDOUS_B","AIS_TYPE_TANKER_HAZARDOUS_C","AIS_TYPE_TANKER_HAZARDOUS_D","AIS_TYPE_TANKER_RESERVED_1","AIS_TYPE_TANKER_RESERVED_2","AIS_TYPE_TANKER_RESERVED_3","AIS_TYPE_TANKER_RESERVED_4","AIS_TYPE_TANKER_UNKNOWN","AIS_TYPE_TOWING","AIS_TYPE_TOWING_LARGE","AIS_TYPE_TUG","AIS_TYPE_UNKNOWN","AIS_TYPE_WIG","AIS_TYPE_WIG_HAZARDOUS_A","AIS_TYPE_WIG_HAZARDOUS_B","AIS_TYPE_WIG_HAZARDOUS_C","AIS_TYPE_WIG_HAZARDOUS_D","AIS_TYPE_WIG_RESERVED_1","AIS_TYPE_WIG_RESERVED_2","AIS_TYPE_WIG_RESERVED_3","AIS_TYPE_WIG_RESERVED_4","AIS_TYPE_WIG_RESERVED_5","AIS_VESSEL","AIS_VESSEL_DATA","ALTITUDE","ALTITUDE_DATA","AOA","AOA_SSA","AOA_SSA_DATA","AP_ADC","AP_ADC_DATA","ATTITUDE","ATTITUDE_DATA","ATTITUDE_QUATERNION","ATTITUDE_QUATERNION_COV","ATTITUDE_QUATERNION_COV_DATA","ATTITUDE_QUATERNION_DATA","ATTITUDE_TARGET","ATTITUDE_TARGET_DATA","ATTITUDE_TARGET_TYPEMASK_ATTITUDE_IGNORE","ATTITUDE_TARGET_TYPEMASK_BODY_PITCH_RATE_IGNORE","ATTITUDE_TARGET_TYPEMASK_BODY_ROLL_RATE_IGNORE","ATTITUDE_TARGET_TYPEMASK_BODY_YAW_RATE_IGNORE","ATTITUDE_TARGET_TYPEMASK_THROTTLE_IGNORE","ATTITUDE_TARGET_TYPEMASK_THRUST_BODY_SET","ATT_POS_MOCAP","ATT_POS_MOCAP_DATA","AUTH_KEY","AUTH_KEY_DATA","AUTOPILOT_STATE_FOR_GIMBAL_DEVICE","AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA","AUTOPILOT_VERSION","AUTOPILOT_VERSION_DATA","AUTOPILOT_VERSION_REQUEST","AUTOPILOT_VERSION_REQUEST_DATA","AUTOTUNE_AXIS_DEFAULT","AUTOTUNE_AXIS_PITCH","AUTOTUNE_AXIS_ROLL","AUTOTUNE_AXIS_YAW","AccelcalVehiclePos","ActuatorConfiguration","ActuatorOutputFunction","AdsbAltitudeType","AdsbEmitterType","AdsbFlags","AisFlags","AisNavStatus","AisType","AttitudeTargetTypemask","AutotuneAxis","BATTERY2","BATTERY2_DATA","BATTERY_FAULT_INCOMPATIBLE_CELLS_CONFIGURATION","BATTERY_STATUS","BATTERY_STATUS_DATA","BUTTON_CHANGE","BUTTON_CHANGE_DATA","CAMERA_CAPTURE_STATUS","CAMERA_CAPTURE_STATUS_DATA","CAMERA_CAP_FLAGS_CAN_CAPTURE_IMAGE_IN_VIDEO_MODE","CAMERA_CAP_FLAGS_CAN_CAPTURE_VIDEO_IN_IMAGE_MODE","CAMERA_CAP_FLAGS_CAPTURE_IMAGE","CAMERA_CAP_FLAGS_CAPTURE_VIDEO","CAMERA_CAP_FLAGS_HAS_BASIC_FOCUS","CAMERA_CAP_FLAGS_HAS_BASIC_ZOOM","CAMERA_CAP_FLAGS_HAS_IMAGE_SURVEY_MODE","CAMERA_CAP_FLAGS_HAS_MODES","CAMERA_CAP_FLAGS_HAS_TRACKING_GEO_STATUS","CAMERA_CAP_FLAGS_HAS_TRACKING_POINT","CAMERA_CAP_FLAGS_HAS_TRACKING_RECTANGLE","CAMERA_CAP_FLAGS_HAS_VIDEO_STREAM","CAMERA_FEEDBACK","CAMERA_FEEDBACK_BADEXPOSURE","CAMERA_FEEDBACK_CLOSEDLOOP","CAMERA_FEEDBACK_DATA","CAMERA_FEEDBACK_OPENLOOP","CAMERA_FEEDBACK_PHOTO","CAMERA_FEEDBACK_VIDEO","CAMERA_FOV_STATUS","CAMERA_FOV_STATUS_DATA","CAMERA_IMAGE_CAPTURED","CAMERA_IMAGE_CAPTURED_DATA","CAMERA_INFORMATION","CAMERA_INFORMATION_DATA","CAMERA_MODE_IMAGE","CAMERA_MODE_IMAGE_SURVEY","CAMERA_MODE_VIDEO","CAMERA_SETTINGS","CAMERA_SETTINGS_DATA","CAMERA_STATUS","CAMERA_STATUS_DATA","CAMERA_STATUS_TYPE_DISCONNECT","CAMERA_STATUS_TYPE_ERROR","CAMERA_STATUS_TYPE_HEARTBEAT","CAMERA_STATUS_TYPE_LOWBATT","CAMERA_STATUS_TYPE_LOWSTORE","CAMERA_STATUS_TYPE_LOWSTOREV","CAMERA_STATUS_TYPE_TRIGGER","CAMERA_TRACKING_GEO_STATUS","CAMERA_TRACKING_GEO_STATUS_DATA","CAMERA_TRACKING_IMAGE_STATUS","CAMERA_TRACKING_IMAGE_STATUS_DATA","CAMERA_TRACKING_MODE_NONE","CAMERA_TRACKING_MODE_POINT","CAMERA_TRACKING_MODE_RECTANGLE","CAMERA_TRACKING_STATUS_FLAGS_ACTIVE","CAMERA_TRACKING_STATUS_FLAGS_ERROR","CAMERA_TRACKING_STATUS_FLAGS_IDLE","CAMERA_TRACKING_TARGET_DATA_EMBEDDED","CAMERA_TRACKING_TARGET_DATA_IN_STATUS","CAMERA_TRACKING_TARGET_DATA_NONE","CAMERA_TRACKING_TARGET_DATA_RENDERED","CAMERA_TRIGGER","CAMERA_TRIGGER_DATA","CANFD_FRAME","CANFD_FRAME_DATA","CAN_FILTER_ADD","CAN_FILTER_MODIFY","CAN_FILTER_MODIFY_DATA","CAN_FILTER_REMOVE","CAN_FILTER_REPLACE","CAN_FRAME","CAN_FRAME_DATA","CELLULAR_CONFIG","CELLULAR_CONFIG_BLOCKED_PUK_REQUIRED","CELLULAR_CONFIG_DATA","CELLULAR_CONFIG_RESPONSE_ACCEPTED","CELLULAR_CONFIG_RESPONSE_APN_ERROR","CELLULAR_CONFIG_RESPONSE_PIN_ERROR","CELLULAR_CONFIG_RESPONSE_REJECTED","CELLULAR_NETWORK_FAILED_REASON_NONE","CELLULAR_NETWORK_FAILED_REASON_SIM_ERROR","CELLULAR_NETWORK_FAILED_REASON_SIM_MISSING","CELLULAR_NETWORK_FAILED_REASON_UNKNOWN","CELLULAR_NETWORK_RADIO_TYPE_CDMA","CELLULAR_NETWORK_RADIO_TYPE_GSM","CELLULAR_NETWORK_RADIO_TYPE_LTE","CELLULAR_NETWORK_RADIO_TYPE_NONE","CELLULAR_NETWORK_RADIO_TYPE_WCDMA","CELLULAR_STATUS","CELLULAR_STATUS_DATA","CELLULAR_STATUS_FLAG_CONNECTED","CELLULAR_STATUS_FLAG_CONNECTING","CELLULAR_STATUS_FLAG_DISABLED","CELLULAR_STATUS_FLAG_DISABLING","CELLULAR_STATUS_FLAG_DISCONNECTING","CELLULAR_STATUS_FLAG_ENABLED","CELLULAR_STATUS_FLAG_ENABLING","CELLULAR_STATUS_FLAG_FAILED","CELLULAR_STATUS_FLAG_INITIALIZING","CELLULAR_STATUS_FLAG_LOCKED","CELLULAR_STATUS_FLAG_REGISTERED","CELLULAR_STATUS_FLAG_SEARCHING","CELLULAR_STATUS_FLAG_UNKNOWN","CHANGE_OPERATOR_CONTROL","CHANGE_OPERATOR_CONTROL_ACK","CHANGE_OPERATOR_CONTROL_ACK_DATA","CHANGE_OPERATOR_CONTROL_DATA","COG","COLLISION","COLLISION_DATA","COMMAND_ACK","COMMAND_ACK_DATA","COMMAND_CANCEL","COMMAND_CANCEL_DATA","COMMAND_INT","COMMAND_INT_DATA","COMMAND_LONG","COMMAND_LONG_DATA","COMPASSMOT_STATUS","COMPASSMOT_STATUS_DATA","COMPONENT_INFORMATION","COMPONENT_INFORMATION_DATA","COMPONENT_METADATA","COMPONENT_METADATA_DATA","COMP_METADATA_TYPE_ACTUATORS","COMP_METADATA_TYPE_COMMANDS","COMP_METADATA_TYPE_EVENTS","COMP_METADATA_TYPE_GENERAL","COMP_METADATA_TYPE_PARAMETER","COMP_METADATA_TYPE_PERIPHERALS","CONTROL_SYSTEM_STATE","CONTROL_SYSTEM_STATE_DATA","COPTER_MODE_ACRO","COPTER_MODE_ALT_HOLD","COPTER_MODE_AUTO","COPTER_MODE_AUTOROTATE","COPTER_MODE_AUTOTUNE","COPTER_MODE_AUTO_RTL","COPTER_MODE_AVOID_ADSB","COPTER_MODE_BRAKE","COPTER_MODE_CIRCLE","COPTER_MODE_DRIFT","COPTER_MODE_FLIP","COPTER_MODE_FLOWHOLD","COPTER_MODE_FOLLOW","COPTER_MODE_GUIDED","COPTER_MODE_GUIDED_NOGPS","COPTER_MODE_LAND","COPTER_MODE_LOITER","COPTER_MODE_POSHOLD","COPTER_MODE_RTL","COPTER_MODE_SMART_RTL","COPTER_MODE_SPORT","COPTER_MODE_STABILIZE","COPTER_MODE_SYSTEMID","COPTER_MODE_THROW","COPTER_MODE_ZIGZAG","CUBEPILOT_FIRMWARE_UPDATE_RESP","CUBEPILOT_FIRMWARE_UPDATE_RESP_DATA","CUBEPILOT_FIRMWARE_UPDATE_START","CUBEPILOT_FIRMWARE_UPDATE_START_DATA","CUBEPILOT_RAW_RC","CUBEPILOT_RAW_RC_DATA","CURRENT_EVENT_SEQUENCE","CURRENT_EVENT_SEQUENCE_DATA","CameraCapFlags","CameraFeedbackFlags","CameraMode","CameraStatusTypes","CameraTrackingMode","CameraTrackingStatusFlags","CameraTrackingTargetData","CameraZoomType","CanFilterOp","CellularConfigResponse","CellularNetworkFailedReason","CellularNetworkRadioType","CellularStatusFlag","CompMetadataType","CompensationX","CompensationY","CompensationZ","CopterMode","D","DATA16","DATA16_DATA","DATA32","DATA32_DATA","DATA64","DATA64_DATA","DATA96","DATA96_DATA","DATA_STREAM","DATA_STREAM_DATA","DATA_TRANSMISSION_HANDSHAKE","DATA_TRANSMISSION_HANDSHAKE_DATA","DEBUG","DEBUG_DATA","DEBUG_FLOAT_ARRAY","DEBUG_FLOAT_ARRAY_DATA","DEBUG_VECT","DEBUG_VECT_DATA","DEEPSTALL","DEEPSTALL_DATA","DEEPSTALL_STAGE_APPROACH","DEEPSTALL_STAGE_ARC","DEEPSTALL_STAGE_ESTIMATE_WIND","DEEPSTALL_STAGE_FLY_TO_ARC","DEEPSTALL_STAGE_FLY_TO_LANDING","DEEPSTALL_STAGE_LAND","DEEPSTALL_STAGE_WAIT_FOR_BREAKOUT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEVICE_OP_BUSTYPE_I2C","DEVICE_OP_BUSTYPE_SPI","DEVICE_OP_READ","DEVICE_OP_READ_DATA","DEVICE_OP_READ_REPLY","DEVICE_OP_READ_REPLY_DATA","DEVICE_OP_WRITE","DEVICE_OP_WRITE_DATA","DEVICE_OP_WRITE_REPLY","DEVICE_OP_WRITE_REPLY_DATA","DIGICAM_CONFIGURE","DIGICAM_CONFIGURE_DATA","DIGICAM_CONTROL","DIGICAM_CONTROL_DATA","DISTANCE_SENSOR","DISTANCE_SENSOR_DATA","DeepstallStage","DeviceOpBustype","EAS2TAS","EFI_STATUS","EFI_STATUS_DATA","EKF_ATTITUDE","EKF_CONST_POS_MODE","EKF_POS_HORIZ_ABS","EKF_POS_HORIZ_REL","EKF_POS_VERT_ABS","EKF_POS_VERT_AGL","EKF_PRED_POS_HORIZ_ABS","EKF_PRED_POS_HORIZ_REL","EKF_STATUS_REPORT","EKF_STATUS_REPORT_DATA","EKF_UNINITIALIZED","EKF_VELOCITY_HORIZ","EKF_VELOCITY_VERT","ENCAPSULATED_DATA","ENCAPSULATED_DATA_DATA","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ESC_CONNECTION_TYPE_CAN","ESC_CONNECTION_TYPE_DSHOT","ESC_CONNECTION_TYPE_I2C","ESC_CONNECTION_TYPE_ONESHOT","ESC_CONNECTION_TYPE_PPM","ESC_CONNECTION_TYPE_SERIAL","ESC_FAILURE_GENERIC","ESC_FAILURE_INCONSISTENT_CMD","ESC_FAILURE_MOTOR_STUCK","ESC_FAILURE_NONE","ESC_FAILURE_OVER_CURRENT","ESC_FAILURE_OVER_RPM","ESC_FAILURE_OVER_TEMPERATURE","ESC_FAILURE_OVER_VOLTAGE","ESC_INFO","ESC_INFO_DATA","ESC_STATUS","ESC_STATUS_DATA","ESC_TELEMETRY_1_TO_4","ESC_TELEMETRY_1_TO_4_DATA","ESC_TELEMETRY_5_TO_8","ESC_TELEMETRY_5_TO_8_DATA","ESC_TELEMETRY_9_TO_12","ESC_TELEMETRY_9_TO_12_DATA","ESTIMATOR_ACCEL_ERROR","ESTIMATOR_ATTITUDE","ESTIMATOR_CONST_POS_MODE","ESTIMATOR_GPS_GLITCH","ESTIMATOR_POS_HORIZ_ABS","ESTIMATOR_POS_HORIZ_REL","ESTIMATOR_POS_VERT_ABS","ESTIMATOR_POS_VERT_AGL","ESTIMATOR_PRED_POS_HORIZ_ABS","ESTIMATOR_PRED_POS_HORIZ_REL","ESTIMATOR_STATUS","ESTIMATOR_STATUS_DATA","ESTIMATOR_VELOCITY_HORIZ","ESTIMATOR_VELOCITY_VERT","EVENT","EVENT_DATA","EXTENDED_SYS_STATE","EXTENDED_SYS_STATE_DATA","EkfStatusFlags","EscConnectionType","EscFailureFlags","EstimatorStatusFlags","FAILURE_TYPE_DELAYED","FAILURE_TYPE_GARBAGE","FAILURE_TYPE_INTERMITTENT","FAILURE_TYPE_OFF","FAILURE_TYPE_OK","FAILURE_TYPE_SLOW","FAILURE_TYPE_STUCK","FAILURE_TYPE_WRONG","FAILURE_UNIT_SENSOR_ACCEL","FAILURE_UNIT_SENSOR_AIRSPEED","FAILURE_UNIT_SENSOR_BARO","FAILURE_UNIT_SENSOR_DISTANCE_SENSOR","FAILURE_UNIT_SENSOR_GPS","FAILURE_UNIT_SENSOR_GYRO","FAILURE_UNIT_SENSOR_MAG","FAILURE_UNIT_SENSOR_OPTICAL_FLOW","FAILURE_UNIT_SENSOR_VIO","FAILURE_UNIT_SYSTEM_AVOIDANCE","FAILURE_UNIT_SYSTEM_BATTERY","FAILURE_UNIT_SYSTEM_MAVLINK_SIGNAL","FAILURE_UNIT_SYSTEM_MOTOR","FAILURE_UNIT_SYSTEM_RC_SIGNAL","FAILURE_UNIT_SYSTEM_SERVO","FAVORABLE_WIND","FENCE_ACTION_GUIDED","FENCE_ACTION_GUIDED_THR_PASS","FENCE_ACTION_HOLD","FENCE_ACTION_LAND","FENCE_ACTION_NONE","FENCE_ACTION_REPORT","FENCE_ACTION_RTL","FENCE_ACTION_TERMINATE","FENCE_BREACH_BOUNDARY","FENCE_BREACH_MAXALT","FENCE_BREACH_MINALT","FENCE_BREACH_NONE","FENCE_FETCH_POINT","FENCE_FETCH_POINT_DATA","FENCE_MITIGATE_NONE","FENCE_MITIGATE_UNKNOWN","FENCE_MITIGATE_VEL_LIMIT","FENCE_POINT","FENCE_POINT_DATA","FENCE_STATUS","FENCE_STATUS_DATA","FF","FILE_TRANSFER_PROTOCOL","FILE_TRANSFER_PROTOCOL_DATA","FIRMWARE_VERSION_TYPE_ALPHA","FIRMWARE_VERSION_TYPE_BETA","FIRMWARE_VERSION_TYPE_DEV","FIRMWARE_VERSION_TYPE_OFFICIAL","FIRMWARE_VERSION_TYPE_RC","FLIGHT_INFORMATION","FLIGHT_INFORMATION_DATA","FOCUS_TYPE_AUTO","FOCUS_TYPE_AUTO_CONTINUOUS","FOCUS_TYPE_AUTO_SINGLE","FOCUS_TYPE_CONTINUOUS","FOCUS_TYPE_METERS","FOCUS_TYPE_RANGE","FOCUS_TYPE_STEP","FOLLOW_TARGET","FOLLOW_TARGET_DATA","FailureType","FailureUnit","FenceAction","FenceBreach","FenceMitigate","FirmwareVersionType","GENERATOR_STATUS","GENERATOR_STATUS_DATA","GIMBAL_AXIS_CALIBRATION_REQUIRED_FALSE","GIMBAL_AXIS_CALIBRATION_REQUIRED_TRUE","GIMBAL_AXIS_CALIBRATION_REQUIRED_UNKNOWN","GIMBAL_AXIS_CALIBRATION_STATUS_FAILED","GIMBAL_AXIS_CALIBRATION_STATUS_IN_PROGRESS","GIMBAL_AXIS_CALIBRATION_STATUS_SUCCEEDED","GIMBAL_AXIS_PITCH","GIMBAL_AXIS_ROLL","GIMBAL_AXIS_YAW","GIMBAL_CONTROL","GIMBAL_CONTROL_DATA","GIMBAL_DEVICE_ATTITUDE_STATUS","GIMBAL_DEVICE_ATTITUDE_STATUS_DATA","GIMBAL_DEVICE_CAP_FLAGS_HAS_NEUTRAL","GIMBAL_DEVICE_CAP_FLAGS_HAS_PITCH_AXIS","GIMBAL_DEVICE_CAP_FLAGS_HAS_PITCH_FOLLOW","GIMBAL_DEVICE_CAP_FLAGS_HAS_PITCH_LOCK","GIMBAL_DEVICE_CAP_FLAGS_HAS_RC_INPUTS","GIMBAL_DEVICE_CAP_FLAGS_HAS_RETRACT","GIMBAL_DEVICE_CAP_FLAGS_HAS_ROLL_AXIS","GIMBAL_DEVICE_CAP_FLAGS_HAS_ROLL_FOLLOW","GIMBAL_DEVICE_CAP_FLAGS_HAS_ROLL_LOCK","GIMBAL_DEVICE_CAP_FLAGS_HAS_YAW_AXIS","GIMBAL_DEVICE_CAP_FLAGS_HAS_YAW_FOLLOW","GIMBAL_DEVICE_CAP_FLAGS_HAS_YAW_LOCK","GIMBAL_DEVICE_CAP_FLAGS_SUPPORTS_INFINITE_YAW","GIMBAL_DEVICE_CAP_FLAGS_SUPPORTS_YAW_IN_EARTH_FRAME","GIMBAL_DEVICE_ERROR_FLAGS_AT_PITCH_LIMIT","GIMBAL_DEVICE_ERROR_FLAGS_AT_ROLL_LIMIT","GIMBAL_DEVICE_ERROR_FLAGS_AT_YAW_LIMIT","GIMBAL_DEVICE_ERROR_FLAGS_CALIBRATION_RUNNING","GIMBAL_DEVICE_ERROR_FLAGS_COMMS_ERROR","GIMBAL_DEVICE_ERROR_FLAGS_ENCODER_ERROR","GIMBAL_DEVICE_ERROR_FLAGS_MOTOR_ERROR","GIMBAL_DEVICE_ERROR_FLAGS_NO_MANAGER","GIMBAL_DEVICE_ERROR_FLAGS_POWER_ERROR","GIMBAL_DEVICE_ERROR_FLAGS_SOFTWARE_ERROR","GIMBAL_DEVICE_FLAGS_ACCEPTS_YAW_IN_EARTH_FRAME","GIMBAL_DEVICE_FLAGS_NEUTRAL","GIMBAL_DEVICE_FLAGS_PITCH_LOCK","GIMBAL_DEVICE_FLAGS_RC_EXCLUSIVE","GIMBAL_DEVICE_FLAGS_RC_MIXED","GIMBAL_DEVICE_FLAGS_RETRACT","GIMBAL_DEVICE_FLAGS_ROLL_LOCK","GIMBAL_DEVICE_FLAGS_YAW_IN_EARTH_FRAME","GIMBAL_DEVICE_FLAGS_YAW_IN_VEHICLE_FRAME","GIMBAL_DEVICE_FLAGS_YAW_LOCK","GIMBAL_DEVICE_INFORMATION","GIMBAL_DEVICE_INFORMATION_DATA","GIMBAL_DEVICE_SET_ATTITUDE","GIMBAL_DEVICE_SET_ATTITUDE_DATA","GIMBAL_MANAGER_CAP_FLAGS_CAN_POINT_LOCATION_GLOBAL","GIMBAL_MANAGER_CAP_FLAGS_CAN_POINT_LOCATION_LOCAL","GIMBAL_MANAGER_CAP_FLAGS_HAS_NEUTRAL","GIMBAL_MANAGER_CAP_FLAGS_HAS_PITCH_AXIS","GIMBAL_MANAGER_CAP_FLAGS_HAS_PITCH_FOLLOW","GIMBAL_MANAGER_CAP_FLAGS_HAS_PITCH_LOCK","GIMBAL_MANAGER_CAP_FLAGS_HAS_RC_INPUTS","GIMBAL_MANAGER_CAP_FLAGS_HAS_RETRACT","GIMBAL_MANAGER_CAP_FLAGS_HAS_ROLL_AXIS","GIMBAL_MANAGER_CAP_FLAGS_HAS_ROLL_FOLLOW","GIMBAL_MANAGER_CAP_FLAGS_HAS_ROLL_LOCK","GIMBAL_MANAGER_CAP_FLAGS_HAS_YAW_AXIS","GIMBAL_MANAGER_CAP_FLAGS_HAS_YAW_FOLLOW","GIMBAL_MANAGER_CAP_FLAGS_HAS_YAW_LOCK","GIMBAL_MANAGER_CAP_FLAGS_SUPPORTS_INFINITE_YAW","GIMBAL_MANAGER_CAP_FLAGS_SUPPORTS_YAW_IN_EARTH_FRAME","GIMBAL_MANAGER_FLAGS_ACCEPTS_YAW_IN_EARTH_FRAME","GIMBAL_MANAGER_FLAGS_NEUTRAL","GIMBAL_MANAGER_FLAGS_PITCH_LOCK","GIMBAL_MANAGER_FLAGS_RC_EXCLUSIVE","GIMBAL_MANAGER_FLAGS_RC_MIXED","GIMBAL_MANAGER_FLAGS_RETRACT","GIMBAL_MANAGER_FLAGS_ROLL_LOCK","GIMBAL_MANAGER_FLAGS_YAW_IN_EARTH_FRAME","GIMBAL_MANAGER_FLAGS_YAW_IN_VEHICLE_FRAME","GIMBAL_MANAGER_FLAGS_YAW_LOCK","GIMBAL_MANAGER_INFORMATION","GIMBAL_MANAGER_INFORMATION_DATA","GIMBAL_MANAGER_SET_ATTITUDE","GIMBAL_MANAGER_SET_ATTITUDE_DATA","GIMBAL_MANAGER_SET_MANUAL_CONTROL","GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA","GIMBAL_MANAGER_SET_PITCHYAW","GIMBAL_MANAGER_SET_PITCHYAW_DATA","GIMBAL_MANAGER_STATUS","GIMBAL_MANAGER_STATUS_DATA","GIMBAL_REPORT","GIMBAL_REPORT_DATA","GIMBAL_TORQUE_CMD_REPORT","GIMBAL_TORQUE_CMD_REPORT_DATA","GLOBAL_POSITION_INT","GLOBAL_POSITION_INT_COV","GLOBAL_POSITION_INT_COV_DATA","GLOBAL_POSITION_INT_DATA","GLOBAL_VISION_POSITION_ESTIMATE","GLOBAL_VISION_POSITION_ESTIMATE_DATA","GOPRO_BURST_RATE_10_IN_1_SECOND","GOPRO_BURST_RATE_10_IN_2_SECOND","GOPRO_BURST_RATE_10_IN_3_SECOND","GOPRO_BURST_RATE_30_IN_1_SECOND","GOPRO_BURST_RATE_30_IN_2_SECOND","GOPRO_BURST_RATE_30_IN_3_SECOND","GOPRO_BURST_RATE_30_IN_6_SECOND","GOPRO_BURST_RATE_3_IN_1_SECOND","GOPRO_BURST_RATE_5_IN_1_SECOND","GOPRO_CAPTURE_MODE_BURST","GOPRO_CAPTURE_MODE_MULTI_SHOT","GOPRO_CAPTURE_MODE_PHOTO","GOPRO_CAPTURE_MODE_PLAYBACK","GOPRO_CAPTURE_MODE_SETUP","GOPRO_CAPTURE_MODE_TIME_LAPSE","GOPRO_CAPTURE_MODE_UNKNOWN","GOPRO_CAPTURE_MODE_VIDEO","GOPRO_CHARGING_DISABLED","GOPRO_CHARGING_ENABLED","GOPRO_COMMAND_BATTERY","GOPRO_COMMAND_CAPTURE_MODE","GOPRO_COMMAND_CHARGING","GOPRO_COMMAND_LOW_LIGHT","GOPRO_COMMAND_MODEL","GOPRO_COMMAND_PHOTO_BURST_RATE","GOPRO_COMMAND_PHOTO_RESOLUTION","GOPRO_COMMAND_POWER","GOPRO_COMMAND_PROTUNE","GOPRO_COMMAND_PROTUNE_COLOUR","GOPRO_COMMAND_PROTUNE_EXPOSURE","GOPRO_COMMAND_PROTUNE_GAIN","GOPRO_COMMAND_PROTUNE_SHARPNESS","GOPRO_COMMAND_PROTUNE_WHITE_BALANCE","GOPRO_COMMAND_SHUTTER","GOPRO_COMMAND_TIME","GOPRO_COMMAND_VIDEO_SETTINGS","GOPRO_FIELD_OF_VIEW_MEDIUM","GOPRO_FIELD_OF_VIEW_NARROW","GOPRO_FIELD_OF_VIEW_WIDE","GOPRO_FLAG_RECORDING","GOPRO_FRAME_RATE_100","GOPRO_FRAME_RATE_12","GOPRO_FRAME_RATE_120","GOPRO_FRAME_RATE_12_5","GOPRO_FRAME_RATE_15","GOPRO_FRAME_RATE_24","GOPRO_FRAME_RATE_240","GOPRO_FRAME_RATE_25","GOPRO_FRAME_RATE_30","GOPRO_FRAME_RATE_48","GOPRO_FRAME_RATE_50","GOPRO_FRAME_RATE_60","GOPRO_FRAME_RATE_80","GOPRO_FRAME_RATE_90","GOPRO_GET_REQUEST","GOPRO_GET_REQUEST_DATA","GOPRO_GET_RESPONSE","GOPRO_GET_RESPONSE_DATA","GOPRO_HEARTBEAT","GOPRO_HEARTBEAT_DATA","GOPRO_HEARTBEAT_STATUS_CONNECTED","GOPRO_HEARTBEAT_STATUS_DISCONNECTED","GOPRO_HEARTBEAT_STATUS_ERROR","GOPRO_HEARTBEAT_STATUS_INCOMPATIBLE","GOPRO_MODEL_HERO_3_PLUS_BLACK","GOPRO_MODEL_HERO_3_PLUS_SILVER","GOPRO_MODEL_HERO_4_BLACK","GOPRO_MODEL_HERO_4_SILVER","GOPRO_MODEL_UNKNOWN","GOPRO_PHOTO_RESOLUTION_10MP_WIDE","GOPRO_PHOTO_RESOLUTION_12MP_WIDE","GOPRO_PHOTO_RESOLUTION_5MP_MEDIUM","GOPRO_PHOTO_RESOLUTION_7MP_MEDIUM","GOPRO_PHOTO_RESOLUTION_7MP_WIDE","GOPRO_PROTUNE_COLOUR_NEUTRAL","GOPRO_PROTUNE_COLOUR_STANDARD","GOPRO_PROTUNE_EXPOSURE_NEG_0_5","GOPRO_PROTUNE_EXPOSURE_NEG_1_0","GOPRO_PROTUNE_EXPOSURE_NEG_1_5","GOPRO_PROTUNE_EXPOSURE_NEG_2_0","GOPRO_PROTUNE_EXPOSURE_NEG_2_5","GOPRO_PROTUNE_EXPOSURE_NEG_3_0","GOPRO_PROTUNE_EXPOSURE_NEG_3_5","GOPRO_PROTUNE_EXPOSURE_NEG_4_0","GOPRO_PROTUNE_EXPOSURE_NEG_4_5","GOPRO_PROTUNE_EXPOSURE_NEG_5_0","GOPRO_PROTUNE_EXPOSURE_POS_0_5","GOPRO_PROTUNE_EXPOSURE_POS_1_0","GOPRO_PROTUNE_EXPOSURE_POS_1_5","GOPRO_PROTUNE_EXPOSURE_POS_2_0","GOPRO_PROTUNE_EXPOSURE_POS_2_5","GOPRO_PROTUNE_EXPOSURE_POS_3_0","GOPRO_PROTUNE_EXPOSURE_POS_3_5","GOPRO_PROTUNE_EXPOSURE_POS_4_0","GOPRO_PROTUNE_EXPOSURE_POS_4_5","GOPRO_PROTUNE_EXPOSURE_POS_5_0","GOPRO_PROTUNE_EXPOSURE_ZERO","GOPRO_PROTUNE_GAIN_1600","GOPRO_PROTUNE_GAIN_3200","GOPRO_PROTUNE_GAIN_400","GOPRO_PROTUNE_GAIN_6400","GOPRO_PROTUNE_GAIN_800","GOPRO_PROTUNE_SHARPNESS_HIGH","GOPRO_PROTUNE_SHARPNESS_LOW","GOPRO_PROTUNE_SHARPNESS_MEDIUM","GOPRO_PROTUNE_WHITE_BALANCE_3000K","GOPRO_PROTUNE_WHITE_BALANCE_5500K","GOPRO_PROTUNE_WHITE_BALANCE_6500K","GOPRO_PROTUNE_WHITE_BALANCE_AUTO","GOPRO_PROTUNE_WHITE_BALANCE_RAW","GOPRO_REQUEST_FAILED","GOPRO_REQUEST_SUCCESS","GOPRO_RESOLUTION_1080p","GOPRO_RESOLUTION_1080p_SUPERVIEW","GOPRO_RESOLUTION_1440p","GOPRO_RESOLUTION_2_7k_16_9","GOPRO_RESOLUTION_2_7k_17_9","GOPRO_RESOLUTION_2_7k_4_3","GOPRO_RESOLUTION_2_7k_SUPERVIEW","GOPRO_RESOLUTION_480p","GOPRO_RESOLUTION_4k_16_9","GOPRO_RESOLUTION_4k_17_9","GOPRO_RESOLUTION_4k_SUPERVIEW","GOPRO_RESOLUTION_720p","GOPRO_RESOLUTION_720p_SUPERVIEW","GOPRO_RESOLUTION_960p","GOPRO_SET_REQUEST","GOPRO_SET_REQUEST_DATA","GOPRO_SET_RESPONSE","GOPRO_SET_RESPONSE_DATA","GOPRO_VIDEO_SETTINGS_TV_MODE","GPS2_RAW","GPS2_RAW_DATA","GPS2_RTK","GPS2_RTK_DATA","GPS_FIX_TYPE_2D_FIX","GPS_FIX_TYPE_3D_FIX","GPS_FIX_TYPE_DGPS","GPS_FIX_TYPE_NO_FIX","GPS_FIX_TYPE_NO_GPS","GPS_FIX_TYPE_PPP","GPS_FIX_TYPE_RTK_FIXED","GPS_FIX_TYPE_RTK_FLOAT","GPS_FIX_TYPE_STATIC","GPS_GLOBAL_ORIGIN","GPS_GLOBAL_ORIGIN_DATA","GPS_INJECT_DATA","GPS_INJECT_DATA_DATA","GPS_INPUT","GPS_INPUT_DATA","GPS_INPUT_IGNORE_FLAG_ALT","GPS_INPUT_IGNORE_FLAG_HDOP","GPS_INPUT_IGNORE_FLAG_HORIZONTAL_ACCURACY","GPS_INPUT_IGNORE_FLAG_SPEED_ACCURACY","GPS_INPUT_IGNORE_FLAG_VDOP","GPS_INPUT_IGNORE_FLAG_VEL_HORIZ","GPS_INPUT_IGNORE_FLAG_VEL_VERT","GPS_INPUT_IGNORE_FLAG_VERTICAL_ACCURACY","GPS_RAW_INT","GPS_RAW_INT_DATA","GPS_RTCM_DATA","GPS_RTCM_DATA_DATA","GPS_RTK","GPS_RTK_DATA","GPS_STATUS","GPS_STATUS_DATA","GRIPPER_ACTION_GRAB","GRIPPER_ACTION_RELEASE","GimbalAxis","GimbalAxisCalibrationRequired","GimbalAxisCalibrationStatus","GimbalDeviceCapFlags","GimbalDeviceErrorFlags","GimbalDeviceFlags","GimbalManagerCapFlags","GimbalManagerFlags","GoproBurstRate","GoproCaptureMode","GoproCharging","GoproCommand","GoproFieldOfView","GoproFrameRate","GoproHeartbeatFlags","GoproHeartbeatStatus","GoproModel","GoproPhotoResolution","GoproProtuneColour","GoproProtuneExposure","GoproProtuneGain","GoproProtuneSharpness","GoproProtuneWhiteBalance","GoproRequestStatus","GoproResolution","GoproVideoSettingsFlags","GpsFixType","GpsInputIgnoreFlags","GripperActions","HEADING_TYPE_COURSE_OVER_GROUND","HEADING_TYPE_HEADING","HEARTBEAT","HEARTBEAT_DATA","HERELINK_TELEM","HERELINK_TELEM_DATA","HERELINK_VIDEO_STREAM_INFORMATION","HERELINK_VIDEO_STREAM_INFORMATION_DATA","HIGHRES_IMU","HIGHRES_IMU_DATA","HIGHRES_IMU_UPDATED_ABS_PRESSURE","HIGHRES_IMU_UPDATED_ALL","HIGHRES_IMU_UPDATED_DIFF_PRESSURE","HIGHRES_IMU_UPDATED_NONE","HIGHRES_IMU_UPDATED_PRESSURE_ALT","HIGHRES_IMU_UPDATED_TEMPERATURE","HIGHRES_IMU_UPDATED_XACC","HIGHRES_IMU_UPDATED_XGYRO","HIGHRES_IMU_UPDATED_XMAG","HIGHRES_IMU_UPDATED_YACC","HIGHRES_IMU_UPDATED_YGYRO","HIGHRES_IMU_UPDATED_YMAG","HIGHRES_IMU_UPDATED_ZACC","HIGHRES_IMU_UPDATED_ZGYRO","HIGHRES_IMU_UPDATED_ZMAG","HIGH_LATENCY","HIGH_LATENCY2","HIGH_LATENCY2_DATA","HIGH_LATENCY_DATA","HIL_ACTUATOR_CONTROLS","HIL_ACTUATOR_CONTROLS_DATA","HIL_CONTROLS","HIL_CONTROLS_DATA","HIL_GPS","HIL_GPS_DATA","HIL_OPTICAL_FLOW","HIL_OPTICAL_FLOW_DATA","HIL_RC_INPUTS_RAW","HIL_RC_INPUTS_RAW_DATA","HIL_SENSOR","HIL_SENSOR_DATA","HIL_SENSOR_UPDATED_ABS_PRESSURE","HIL_SENSOR_UPDATED_DIFF_PRESSURE","HIL_SENSOR_UPDATED_NONE","HIL_SENSOR_UPDATED_PRESSURE_ALT","HIL_SENSOR_UPDATED_RESET","HIL_SENSOR_UPDATED_TEMPERATURE","HIL_SENSOR_UPDATED_XACC","HIL_SENSOR_UPDATED_XGYRO","HIL_SENSOR_UPDATED_XMAG","HIL_SENSOR_UPDATED_YACC","HIL_SENSOR_UPDATED_YGYRO","HIL_SENSOR_UPDATED_YMAG","HIL_SENSOR_UPDATED_ZACC","HIL_SENSOR_UPDATED_ZGYRO","HIL_SENSOR_UPDATED_ZMAG","HIL_STATE","HIL_STATE_DATA","HIL_STATE_QUATERNION","HIL_STATE_QUATERNION_DATA","HL_FAILURE_FLAG_3D_ACCEL","HL_FAILURE_FLAG_3D_GYRO","HL_FAILURE_FLAG_3D_MAG","HL_FAILURE_FLAG_ABSOLUTE_PRESSURE","HL_FAILURE_FLAG_BATTERY","HL_FAILURE_FLAG_DIFFERENTIAL_PRESSURE","HL_FAILURE_FLAG_ENGINE","HL_FAILURE_FLAG_ESTIMATOR","HL_FAILURE_FLAG_GEOFENCE","HL_FAILURE_FLAG_GPS","HL_FAILURE_FLAG_MISSION","HL_FAILURE_FLAG_OFFBOARD_LINK","HL_FAILURE_FLAG_RC_RECEIVER","HL_FAILURE_FLAG_TERRAIN","HOME_POSITION","HOME_POSITION_DATA","HWSTATUS","HWSTATUS_DATA","HYGROMETER_SENSOR","HYGROMETER_SENSOR_DATA","HeadingType","HighresImuUpdatedFlags","HilSensorUpdatedFlags","HlFailureFlag","I","I2Cerr","ICAO","ICAO_address","ICAROUS_FMS_STATE_APPROACH","ICAROUS_FMS_STATE_CLIMB","ICAROUS_FMS_STATE_CRUISE","ICAROUS_FMS_STATE_IDLE","ICAROUS_FMS_STATE_LAND","ICAROUS_FMS_STATE_TAKEOFF","ICAROUS_HEARTBEAT","ICAROUS_HEARTBEAT_DATA","ICAROUS_KINEMATIC_BANDS","ICAROUS_KINEMATIC_BANDS_DATA","ICAROUS_TRACK_BAND_TYPE_NEAR","ICAROUS_TRACK_BAND_TYPE_NONE","ICAROUS_TRACK_BAND_TYPE_RECOVERY","ISBD_LINK_STATUS","ISBD_LINK_STATUS_DATA","IcarousFmsState","IcarousTrackBandTypes","LANDING_TARGET","LANDING_TARGET_DATA","LANDING_TARGET_TYPE_LIGHT_BEACON","LANDING_TARGET_TYPE_RADIO_BEACON","LANDING_TARGET_TYPE_VISION_FIDUCIAL","LANDING_TARGET_TYPE_VISION_OTHER","LAND_IMMEDIATELY","LED_CONTROL","LED_CONTROL_DATA","LED_CONTROL_PATTERN_CUSTOM","LED_CONTROL_PATTERN_FIRMWAREUPDATE","LED_CONTROL_PATTERN_OFF","LIMITS_DISABLED","LIMITS_ENABLED","LIMITS_INIT","LIMITS_RECOVERED","LIMITS_RECOVERING","LIMITS_STATUS","LIMITS_STATUS_DATA","LIMITS_TRIGGERED","LIMIT_ALTITUDE","LIMIT_GEOFENCE","LIMIT_GPSLOCK","LINK_NODE_STATUS","LINK_NODE_STATUS_DATA","LOCAL_POSITION_NED","LOCAL_POSITION_NED_COV","LOCAL_POSITION_NED_COV_DATA","LOCAL_POSITION_NED_DATA","LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET","LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA","LOGGING_ACK","LOGGING_ACK_DATA","LOGGING_DATA","LOGGING_DATA_ACKED","LOGGING_DATA_ACKED_DATA","LOGGING_DATA_DATA","LOG_DATA","LOG_DATA_DATA","LOG_ENTRY","LOG_ENTRY_DATA","LOG_ERASE","LOG_ERASE_DATA","LOG_REQUEST_DATA","LOG_REQUEST_DATA_DATA","LOG_REQUEST_END","LOG_REQUEST_END_DATA","LOG_REQUEST_LIST","LOG_REQUEST_LIST_DATA","LandingTargetType","LedControlPattern","LimitModule","LimitsState","MAG_CAL_BAD_ORIENTATION","MAG_CAL_BAD_RADIUS","MAG_CAL_FAILED","MAG_CAL_NOT_STARTED","MAG_CAL_PROGRESS","MAG_CAL_PROGRESS_DATA","MAG_CAL_REPORT","MAG_CAL_REPORT_DATA","MAG_CAL_RUNNING_STEP_ONE","MAG_CAL_RUNNING_STEP_TWO","MAG_CAL_SUCCESS","MAG_CAL_WAITING_TO_START","MANUAL_CONTROL","MANUAL_CONTROL_DATA","MANUAL_SETPOINT","MANUAL_SETPOINT_DATA","MAVLINK_DATA_STREAM_IMG_BMP","MAVLINK_DATA_STREAM_IMG_JPEG","MAVLINK_DATA_STREAM_IMG_PGM","MAVLINK_DATA_STREAM_IMG_PNG","MAVLINK_DATA_STREAM_IMG_RAW32U","MAVLINK_DATA_STREAM_IMG_RAW8U","MAV_ARM_AUTH_DENIED_REASON_AIRSPACE_IN_USE","MAV_ARM_AUTH_DENIED_REASON_BAD_WEATHER","MAV_ARM_AUTH_DENIED_REASON_GENERIC","MAV_ARM_AUTH_DENIED_REASON_INVALID_WAYPOINT","MAV_ARM_AUTH_DENIED_REASON_NONE","MAV_ARM_AUTH_DENIED_REASON_TIMEOUT","MAV_AUTOPILOT_AEROB","MAV_AUTOPILOT_AIRRAILS","MAV_AUTOPILOT_ARDUPILOTMEGA","MAV_AUTOPILOT_ARMAZILA","MAV_AUTOPILOT_ASLUAV","MAV_AUTOPILOT_AUTOQUAD","MAV_AUTOPILOT_FP","MAV_AUTOPILOT_GENERIC","MAV_AUTOPILOT_GENERIC_MISSION_FULL","MAV_AUTOPILOT_GENERIC_WAYPOINTS_AND_SIMPLE_NAVIGATION_ONLY","MAV_AUTOPILOT_GENERIC_WAYPOINTS_ONLY","MAV_AUTOPILOT_INVALID","MAV_AUTOPILOT_OPENPILOT","MAV_AUTOPILOT_PPZ","MAV_AUTOPILOT_PX4","MAV_AUTOPILOT_REFLEX","MAV_AUTOPILOT_RESERVED","MAV_AUTOPILOT_SLUGS","MAV_AUTOPILOT_SMACCMPILOT","MAV_AUTOPILOT_SMARTAP","MAV_AUTOPILOT_UDB","MAV_BATTERY_CHARGE_STATE_CHARGING","MAV_BATTERY_CHARGE_STATE_CRITICAL","MAV_BATTERY_CHARGE_STATE_EMERGENCY","MAV_BATTERY_CHARGE_STATE_FAILED","MAV_BATTERY_CHARGE_STATE_LOW","MAV_BATTERY_CHARGE_STATE_OK","MAV_BATTERY_CHARGE_STATE_UNDEFINED","MAV_BATTERY_CHARGE_STATE_UNHEALTHY","MAV_BATTERY_FAULT_CELL_FAIL","MAV_BATTERY_FAULT_DEEP_DISCHARGE","MAV_BATTERY_FAULT_INCOMPATIBLE_FIRMWARE","MAV_BATTERY_FAULT_INCOMPATIBLE_VOLTAGE","MAV_BATTERY_FAULT_OVER_CURRENT","MAV_BATTERY_FAULT_OVER_TEMPERATURE","MAV_BATTERY_FAULT_SPIKES","MAV_BATTERY_FAULT_UNDER_TEMPERATURE","MAV_BATTERY_FUNCTION_ALL","MAV_BATTERY_FUNCTION_AVIONICS","MAV_BATTERY_FUNCTION_PAYLOAD","MAV_BATTERY_FUNCTION_PROPULSION","MAV_BATTERY_FUNCTION_UNKNOWN","MAV_BATTERY_MODE_AUTO_DISCHARGING","MAV_BATTERY_MODE_HOT_SWAP","MAV_BATTERY_MODE_UNKNOWN","MAV_BATTERY_TYPE_LIFE","MAV_BATTERY_TYPE_LION","MAV_BATTERY_TYPE_LIPO","MAV_BATTERY_TYPE_NIMH","MAV_BATTERY_TYPE_UNKNOWN","MAV_CMD_ACCELCAL_VEHICLE_POS","MAV_CMD_ACK_ERR_ACCESS_DENIED","MAV_CMD_ACK_ERR_COORDINATES_OUT_OF_RANGE","MAV_CMD_ACK_ERR_COORDINATE_FRAME_NOT_SUPPORTED","MAV_CMD_ACK_ERR_FAIL","MAV_CMD_ACK_ERR_NOT_SUPPORTED","MAV_CMD_ACK_ERR_X_LAT_OUT_OF_RANGE","MAV_CMD_ACK_ERR_Y_LON_OUT_OF_RANGE","MAV_CMD_ACK_ERR_Z_ALT_OUT_OF_RANGE","MAV_CMD_ACK_OK","MAV_CMD_ACTUATOR_TEST","MAV_CMD_AIRFRAME_CONFIGURATION","MAV_CMD_ARM_AUTHORIZATION_REQUEST","MAV_CMD_BATTERY_RESET","MAV_CMD_CAMERA_STOP_TRACKING","MAV_CMD_CAMERA_TRACK_POINT","MAV_CMD_CAMERA_TRACK_RECTANGLE","MAV_CMD_CAN_FORWARD","MAV_CMD_COMPONENT_ARM_DISARM","MAV_CMD_CONDITION_CHANGE_ALT","MAV_CMD_CONDITION_DELAY","MAV_CMD_CONDITION_DISTANCE","MAV_CMD_CONDITION_GATE","MAV_CMD_CONDITION_LAST","MAV_CMD_CONDITION_YAW","MAV_CMD_CONFIGURE_ACTUATOR","MAV_CMD_CONTROL_HIGH_LATENCY","MAV_CMD_DEBUG_TRAP","MAV_CMD_DO_ACCEPT_MAG_CAL","MAV_CMD_DO_ADSB_OUT_IDENT","MAV_CMD_DO_AUTOTUNE_ENABLE","MAV_CMD_DO_AUX_FUNCTION","MAV_CMD_DO_AUX_FUNCTION_SWITCH_LEVEL_HIGH","MAV_CMD_DO_AUX_FUNCTION_SWITCH_LEVEL_LOW","MAV_CMD_DO_AUX_FUNCTION_SWITCH_LEVEL_MIDDLE","MAV_CMD_DO_CANCEL_MAG_CAL","MAV_CMD_DO_CHANGE_ALTITUDE","MAV_CMD_DO_CHANGE_SPEED","MAV_CMD_DO_CONTROL_VIDEO","MAV_CMD_DO_DIGICAM_CONFIGURE","MAV_CMD_DO_DIGICAM_CONTROL","MAV_CMD_DO_ENGINE_CONTROL","MAV_CMD_DO_FENCE_ENABLE","MAV_CMD_DO_FLIGHTTERMINATION","MAV_CMD_DO_FOLLOW","MAV_CMD_DO_FOLLOW_REPOSITION","MAV_CMD_DO_GIMBAL_MANAGER_CONFIGURE","MAV_CMD_DO_GIMBAL_MANAGER_PITCHYAW","MAV_CMD_DO_GO_AROUND","MAV_CMD_DO_GRIPPER","MAV_CMD_DO_GUIDED_LIMITS","MAV_CMD_DO_GUIDED_MASTER","MAV_CMD_DO_INVERTED_FLIGHT","MAV_CMD_DO_JUMP","MAV_CMD_DO_JUMP_TAG","MAV_CMD_DO_LAND_START","MAV_CMD_DO_LAST","MAV_CMD_DO_MOTOR_TEST","MAV_CMD_DO_MOUNT_CONFIGURE","MAV_CMD_DO_MOUNT_CONTROL","MAV_CMD_DO_MOUNT_CONTROL_QUAT","MAV_CMD_DO_ORBIT","MAV_CMD_DO_PARACHUTE","MAV_CMD_DO_PAUSE_CONTINUE","MAV_CMD_DO_RALLY_LAND","MAV_CMD_DO_REPEAT_RELAY","MAV_CMD_DO_REPEAT_SERVO","MAV_CMD_DO_REPOSITION","MAV_CMD_DO_SEND_BANNER","MAV_CMD_DO_SEND_SCRIPT_MESSAGE","MAV_CMD_DO_SET_ACTUATOR","MAV_CMD_DO_SET_CAM_TRIGG_DIST","MAV_CMD_DO_SET_CAM_TRIGG_INTERVAL","MAV_CMD_DO_SET_HOME","MAV_CMD_DO_SET_MISSION_CURRENT","MAV_CMD_DO_SET_MODE","MAV_CMD_DO_SET_PARAMETER","MAV_CMD_DO_SET_RELAY","MAV_CMD_DO_SET_RESUME_REPEAT_DIST","MAV_CMD_DO_SET_REVERSE","MAV_CMD_DO_SET_ROI","MAV_CMD_DO_SET_ROI_LOCATION","MAV_CMD_DO_SET_ROI_NONE","MAV_CMD_DO_SET_ROI_SYSID","MAV_CMD_DO_SET_ROI_WPNEXT_OFFSET","MAV_CMD_DO_SET_SERVO","MAV_CMD_DO_SPRAYER","MAV_CMD_DO_START_MAG_CAL","MAV_CMD_DO_TRIGGER_CONTROL","MAV_CMD_DO_VTOL_TRANSITION","MAV_CMD_DO_WINCH","MAV_CMD_FIXED_MAG_CAL","MAV_CMD_FIXED_MAG_CAL_FIELD","MAV_CMD_FIXED_MAG_CAL_YAW","MAV_CMD_FLASH_BOOTLOADER","MAV_CMD_GET_HOME_POSITION","MAV_CMD_GET_MESSAGE_INTERVAL","MAV_CMD_GIMBAL_AXIS_CALIBRATION_STATUS","MAV_CMD_GIMBAL_FULL_RESET","MAV_CMD_GIMBAL_REQUEST_AXIS_CALIBRATION","MAV_CMD_GIMBAL_RESET","MAV_CMD_GUIDED_CHANGE_ALTITUDE","MAV_CMD_GUIDED_CHANGE_HEADING","MAV_CMD_GUIDED_CHANGE_SPEED","MAV_CMD_ILLUMINATOR_ON_OFF","MAV_CMD_IMAGE_START_CAPTURE","MAV_CMD_IMAGE_STOP_CAPTURE","MAV_CMD_INJECT_FAILURE","MAV_CMD_JUMP_TAG","MAV_CMD_LOGGING_START","MAV_CMD_LOGGING_STOP","MAV_CMD_MISSION_START","MAV_CMD_NAV_ALTITUDE_WAIT","MAV_CMD_NAV_ATTITUDE_TIME","MAV_CMD_NAV_CONTINUE_AND_CHANGE_ALT","MAV_CMD_NAV_DELAY","MAV_CMD_NAV_FENCE_CIRCLE_EXCLUSION","MAV_CMD_NAV_FENCE_CIRCLE_INCLUSION","MAV_CMD_NAV_FENCE_POLYGON_VERTEX_EXCLUSION","MAV_CMD_NAV_FENCE_POLYGON_VERTEX_INCLUSION","MAV_CMD_NAV_FENCE_RETURN_POINT","MAV_CMD_NAV_FOLLOW","MAV_CMD_NAV_GUIDED_ENABLE","MAV_CMD_NAV_LAND","MAV_CMD_NAV_LAND_LOCAL","MAV_CMD_NAV_LAST","MAV_CMD_NAV_LOITER_TIME","MAV_CMD_NAV_LOITER_TO_ALT","MAV_CMD_NAV_LOITER_TURNS","MAV_CMD_NAV_LOITER_UNLIM","MAV_CMD_NAV_PATHPLANNING","MAV_CMD_NAV_PAYLOAD_PLACE","MAV_CMD_NAV_RALLY_POINT","MAV_CMD_NAV_RETURN_TO_LAUNCH","MAV_CMD_NAV_ROI","MAV_CMD_NAV_SCRIPT_TIME","MAV_CMD_NAV_SET_YAW_SPEED","MAV_CMD_NAV_SPLINE_WAYPOINT","MAV_CMD_NAV_TAKEOFF","MAV_CMD_NAV_TAKEOFF_LOCAL","MAV_CMD_NAV_VTOL_LAND","MAV_CMD_NAV_VTOL_TAKEOFF","MAV_CMD_NAV_WAYPOINT","MAV_CMD_OBLIQUE_SURVEY","MAV_CMD_OVERRIDE_GOTO","MAV_CMD_PANORAMA_CREATE","MAV_CMD_PAYLOAD_CONTROL_DEPLOY","MAV_CMD_PAYLOAD_PREPARE_DEPLOY","MAV_CMD_POWER_OFF_INITIATED","MAV_CMD_PREFLIGHT_CALIBRATION","MAV_CMD_PREFLIGHT_REBOOT_SHUTDOWN","MAV_CMD_PREFLIGHT_SET_SENSOR_OFFSETS","MAV_CMD_PREFLIGHT_STORAGE","MAV_CMD_PREFLIGHT_UAVCAN","MAV_CMD_REQUEST_AUTOPILOT_CAPABILITIES","MAV_CMD_REQUEST_CAMERA_CAPTURE_STATUS","MAV_CMD_REQUEST_CAMERA_IMAGE_CAPTURE","MAV_CMD_REQUEST_CAMERA_INFORMATION","MAV_CMD_REQUEST_CAMERA_SETTINGS","MAV_CMD_REQUEST_FLIGHT_INFORMATION","MAV_CMD_REQUEST_MESSAGE","MAV_CMD_REQUEST_PROTOCOL_VERSION","MAV_CMD_REQUEST_STORAGE_INFORMATION","MAV_CMD_REQUEST_VIDEO_STREAM_INFORMATION","MAV_CMD_REQUEST_VIDEO_STREAM_STATUS","MAV_CMD_RESET_CAMERA_SETTINGS","MAV_CMD_RUN_PREARM_CHECKS","MAV_CMD_SCRIPTING","MAV_CMD_SET_CAMERA_FOCUS","MAV_CMD_SET_CAMERA_MODE","MAV_CMD_SET_CAMERA_ZOOM","MAV_CMD_SET_EKF_SOURCE_SET","MAV_CMD_SET_FACTORY_TEST_MODE","MAV_CMD_SET_GUIDED_SUBMODE_CIRCLE","MAV_CMD_SET_GUIDED_SUBMODE_STANDARD","MAV_CMD_SET_MESSAGE_INTERVAL","MAV_CMD_SET_STORAGE_USAGE","MAV_CMD_SOLO_BTN_FLY_CLICK","MAV_CMD_SOLO_BTN_FLY_HOLD","MAV_CMD_SOLO_BTN_PAUSE_CLICK","MAV_CMD_SPATIAL_USER_1","MAV_CMD_SPATIAL_USER_2","MAV_CMD_SPATIAL_USER_3","MAV_CMD_SPATIAL_USER_4","MAV_CMD_SPATIAL_USER_5","MAV_CMD_START_RX_PAIR","MAV_CMD_STORAGE_FORMAT","MAV_CMD_UAVCAN_GET_NODE_INFO","MAV_CMD_USER_1","MAV_CMD_USER_2","MAV_CMD_USER_3","MAV_CMD_USER_4","MAV_CMD_USER_5","MAV_CMD_VIDEO_START_CAPTURE","MAV_CMD_VIDEO_START_STREAMING","MAV_CMD_VIDEO_STOP_CAPTURE","MAV_CMD_VIDEO_STOP_STREAMING","MAV_CMD_WAYPOINT_USER_1","MAV_CMD_WAYPOINT_USER_2","MAV_CMD_WAYPOINT_USER_3","MAV_CMD_WAYPOINT_USER_4","MAV_CMD_WAYPOINT_USER_5","MAV_COLLISION_ACTION_ASCEND_OR_DESCEND","MAV_COLLISION_ACTION_HOVER","MAV_COLLISION_ACTION_MOVE_HORIZONTALLY","MAV_COLLISION_ACTION_MOVE_PERPENDICULAR","MAV_COLLISION_ACTION_NONE","MAV_COLLISION_ACTION_REPORT","MAV_COLLISION_ACTION_RTL","MAV_COLLISION_SRC_ADSB","MAV_COLLISION_SRC_MAVLINK_GPS_GLOBAL_INT","MAV_COLLISION_THREAT_LEVEL_HIGH","MAV_COLLISION_THREAT_LEVEL_LOW","MAV_COLLISION_THREAT_LEVEL_NONE","MAV_COMP_ID_ADSB","MAV_COMP_ID_ALL","MAV_COMP_ID_AUTOPILOT1","MAV_COMP_ID_BATTERY","MAV_COMP_ID_BATTERY2","MAV_COMP_ID_CAMERA","MAV_COMP_ID_CAMERA2","MAV_COMP_ID_CAMERA3","MAV_COMP_ID_CAMERA4","MAV_COMP_ID_CAMERA5","MAV_COMP_ID_CAMERA6","MAV_COMP_ID_FLARM","MAV_COMP_ID_GIMBAL","MAV_COMP_ID_GIMBAL2","MAV_COMP_ID_GIMBAL3","MAV_COMP_ID_GIMBAL4","MAV_COMP_ID_GIMBAL5","MAV_COMP_ID_GIMBAL6","MAV_COMP_ID_GPS","MAV_COMP_ID_GPS2","MAV_COMP_ID_IMU","MAV_COMP_ID_IMU_2","MAV_COMP_ID_IMU_3","MAV_COMP_ID_LOG","MAV_COMP_ID_MAVCAN","MAV_COMP_ID_MISSIONPLANNER","MAV_COMP_ID_OBSTACLE_AVOIDANCE","MAV_COMP_ID_ODID_TXRX_1","MAV_COMP_ID_ODID_TXRX_2","MAV_COMP_ID_ODID_TXRX_3","MAV_COMP_ID_ONBOARD_COMPUTER","MAV_COMP_ID_ONBOARD_COMPUTER2","MAV_COMP_ID_ONBOARD_COMPUTER3","MAV_COMP_ID_ONBOARD_COMPUTER4","MAV_COMP_ID_OSD","MAV_COMP_ID_PAIRING_MANAGER","MAV_COMP_ID_PARACHUTE","MAV_COMP_ID_PATHPLANNER","MAV_COMP_ID_PERIPHERAL","MAV_COMP_ID_QX1_GIMBAL","MAV_COMP_ID_SERVO1","MAV_COMP_ID_SERVO10","MAV_COMP_ID_SERVO11","MAV_COMP_ID_SERVO12","MAV_COMP_ID_SERVO13","MAV_COMP_ID_SERVO14","MAV_COMP_ID_SERVO2","MAV_COMP_ID_SERVO3","MAV_COMP_ID_SERVO4","MAV_COMP_ID_SERVO5","MAV_COMP_ID_SERVO6","MAV_COMP_ID_SERVO7","MAV_COMP_ID_SERVO8","MAV_COMP_ID_SERVO9","MAV_COMP_ID_SYSTEM_CONTROL","MAV_COMP_ID_TELEMETRY_RADIO","MAV_COMP_ID_TUNNEL_NODE","MAV_COMP_ID_UART_BRIDGE","MAV_COMP_ID_UDP_BRIDGE","MAV_COMP_ID_USER1","MAV_COMP_ID_USER10","MAV_COMP_ID_USER11","MAV_COMP_ID_USER12","MAV_COMP_ID_USER13","MAV_COMP_ID_USER14","MAV_COMP_ID_USER15","MAV_COMP_ID_USER16","MAV_COMP_ID_USER17","MAV_COMP_ID_USER18","MAV_COMP_ID_USER19","MAV_COMP_ID_USER2","MAV_COMP_ID_USER20","MAV_COMP_ID_USER21","MAV_COMP_ID_USER22","MAV_COMP_ID_USER23","MAV_COMP_ID_USER24","MAV_COMP_ID_USER25","MAV_COMP_ID_USER26","MAV_COMP_ID_USER27","MAV_COMP_ID_USER28","MAV_COMP_ID_USER29","MAV_COMP_ID_USER3","MAV_COMP_ID_USER30","MAV_COMP_ID_USER31","MAV_COMP_ID_USER32","MAV_COMP_ID_USER33","MAV_COMP_ID_USER34","MAV_COMP_ID_USER35","MAV_COMP_ID_USER36","MAV_COMP_ID_USER37","MAV_COMP_ID_USER38","MAV_COMP_ID_USER39","MAV_COMP_ID_USER4","MAV_COMP_ID_USER40","MAV_COMP_ID_USER41","MAV_COMP_ID_USER42","MAV_COMP_ID_USER43","MAV_COMP_ID_USER45","MAV_COMP_ID_USER46","MAV_COMP_ID_USER47","MAV_COMP_ID_USER48","MAV_COMP_ID_USER49","MAV_COMP_ID_USER5","MAV_COMP_ID_USER50","MAV_COMP_ID_USER51","MAV_COMP_ID_USER52","MAV_COMP_ID_USER53","MAV_COMP_ID_USER54","MAV_COMP_ID_USER55","MAV_COMP_ID_USER56","MAV_COMP_ID_USER57","MAV_COMP_ID_USER58","MAV_COMP_ID_USER59","MAV_COMP_ID_USER6","MAV_COMP_ID_USER60","MAV_COMP_ID_USER61","MAV_COMP_ID_USER62","MAV_COMP_ID_USER63","MAV_COMP_ID_USER64","MAV_COMP_ID_USER65","MAV_COMP_ID_USER66","MAV_COMP_ID_USER67","MAV_COMP_ID_USER68","MAV_COMP_ID_USER69","MAV_COMP_ID_USER7","MAV_COMP_ID_USER70","MAV_COMP_ID_USER71","MAV_COMP_ID_USER72","MAV_COMP_ID_USER73","MAV_COMP_ID_USER74","MAV_COMP_ID_USER75","MAV_COMP_ID_USER8","MAV_COMP_ID_USER9","MAV_COMP_ID_VISUAL_INERTIAL_ODOMETRY","MAV_COMP_ID_WINCH","MAV_DATA_STREAM_ALL","MAV_DATA_STREAM_EXTENDED_STATUS","MAV_DATA_STREAM_EXTRA1","MAV_DATA_STREAM_EXTRA2","MAV_DATA_STREAM_EXTRA3","MAV_DATA_STREAM_POSITION","MAV_DATA_STREAM_RAW_CONTROLLER","MAV_DATA_STREAM_RAW_SENSORS","MAV_DATA_STREAM_RC_CHANNELS","MAV_DISTANCE_SENSOR_INFRARED","MAV_DISTANCE_SENSOR_LASER","MAV_DISTANCE_SENSOR_RADAR","MAV_DISTANCE_SENSOR_ULTRASOUND","MAV_DISTANCE_SENSOR_UNKNOWN","MAV_DO_REPOSITION_FLAGS_CHANGE_MODE","MAV_ESTIMATOR_TYPE_AUTOPILOT","MAV_ESTIMATOR_TYPE_GPS","MAV_ESTIMATOR_TYPE_GPS_INS","MAV_ESTIMATOR_TYPE_LIDAR","MAV_ESTIMATOR_TYPE_MOCAP","MAV_ESTIMATOR_TYPE_NAIVE","MAV_ESTIMATOR_TYPE_UNKNOWN","MAV_ESTIMATOR_TYPE_VIO","MAV_ESTIMATOR_TYPE_VISION","MAV_EVENT_CURRENT_SEQUENCE_FLAGS_RESET","MAV_EVENT_ERROR_REASON_UNAVAILABLE","MAV_FRAME_BODY_FRD","MAV_FRAME_BODY_NED","MAV_FRAME_BODY_OFFSET_NED","MAV_FRAME_GLOBAL","MAV_FRAME_GLOBAL_INT","MAV_FRAME_GLOBAL_RELATIVE_ALT","MAV_FRAME_GLOBAL_RELATIVE_ALT_INT","MAV_FRAME_GLOBAL_TERRAIN_ALT","MAV_FRAME_GLOBAL_TERRAIN_ALT_INT","MAV_FRAME_LOCAL_ENU","MAV_FRAME_LOCAL_FLU","MAV_FRAME_LOCAL_FRD","MAV_FRAME_LOCAL_NED","MAV_FRAME_LOCAL_OFFSET_NED","MAV_FRAME_MISSION","MAV_FRAME_RESERVED_13","MAV_FRAME_RESERVED_14","MAV_FRAME_RESERVED_15","MAV_FRAME_RESERVED_16","MAV_FRAME_RESERVED_17","MAV_FRAME_RESERVED_18","MAV_FRAME_RESERVED_19","MAV_FTP_ERR_EOF","MAV_FTP_ERR_FAIL","MAV_FTP_ERR_FAILERRNO","MAV_FTP_ERR_FILEEXISTS","MAV_FTP_ERR_FILENOTFOUND","MAV_FTP_ERR_FILEPROTECTED","MAV_FTP_ERR_INVALIDDATASIZE","MAV_FTP_ERR_INVALIDSESSION","MAV_FTP_ERR_NONE","MAV_FTP_ERR_NOSESSIONSAVAILABLE","MAV_FTP_ERR_UNKNOWNCOMMAND","MAV_FTP_OPCODE_ACK","MAV_FTP_OPCODE_BURSTREADFILE","MAV_FTP_OPCODE_CALCFILECRC","MAV_FTP_OPCODE_CREATEDIRECTORY","MAV_FTP_OPCODE_CREATEFILE","MAV_FTP_OPCODE_LISTDIRECTORY","MAV_FTP_OPCODE_NAK","MAV_FTP_OPCODE_NONE","MAV_FTP_OPCODE_OPENFILERO","MAV_FTP_OPCODE_OPENFILEWO","MAV_FTP_OPCODE_READFILE","MAV_FTP_OPCODE_REMOVEDIRECTORY","MAV_FTP_OPCODE_REMOVEFILE","MAV_FTP_OPCODE_RENAME","MAV_FTP_OPCODE_RESETSESSION","MAV_FTP_OPCODE_TERMINATESESSION","MAV_FTP_OPCODE_TRUNCATEFILE","MAV_FTP_OPCODE_WRITEFILE","MAV_GENERATOR_STATUS_FLAG_BATTERY_OVERCHARGE_CURRENT_FAULT","MAV_GENERATOR_STATUS_FLAG_BATTERY_UNDERVOLT_FAULT","MAV_GENERATOR_STATUS_FLAG_CHARGING","MAV_GENERATOR_STATUS_FLAG_COMMUNICATION_WARNING","MAV_GENERATOR_STATUS_FLAG_COOLING_WARNING","MAV_GENERATOR_STATUS_FLAG_ELECTRONICS_FAULT","MAV_GENERATOR_STATUS_FLAG_ELECTRONICS_OVERTEMP_FAULT","MAV_GENERATOR_STATUS_FLAG_ELECTRONICS_OVERTEMP_WARNING","MAV_GENERATOR_STATUS_FLAG_GENERATING","MAV_GENERATOR_STATUS_FLAG_IDLE","MAV_GENERATOR_STATUS_FLAG_MAINTENANCE_REQUIRED","MAV_GENERATOR_STATUS_FLAG_MAXPOWER","MAV_GENERATOR_STATUS_FLAG_OFF","MAV_GENERATOR_STATUS_FLAG_OVERCURRENT_FAULT","MAV_GENERATOR_STATUS_FLAG_OVERTEMP_FAULT","MAV_GENERATOR_STATUS_FLAG_OVERTEMP_WARNING","MAV_GENERATOR_STATUS_FLAG_OVERVOLTAGE_FAULT","MAV_GENERATOR_STATUS_FLAG_POWERSOURCE_FAULT","MAV_GENERATOR_STATUS_FLAG_POWER_RAIL_FAULT","MAV_GENERATOR_STATUS_FLAG_READY","MAV_GENERATOR_STATUS_FLAG_REDUCED_POWER","MAV_GENERATOR_STATUS_FLAG_START_INHIBITED","MAV_GENERATOR_STATUS_FLAG_WARMING_UP","MAV_GOTO_DO_CONTINUE","MAV_GOTO_DO_HOLD","MAV_GOTO_HOLD_AT_CURRENT_POSITION","MAV_GOTO_HOLD_AT_SPECIFIED_POSITION","MAV_LANDED_STATE_IN_AIR","MAV_LANDED_STATE_LANDING","MAV_LANDED_STATE_ON_GROUND","MAV_LANDED_STATE_TAKEOFF","MAV_LANDED_STATE_UNDEFINED","MAV_MISSION_ACCEPTED","MAV_MISSION_DENIED","MAV_MISSION_ERROR","MAV_MISSION_INVALID","MAV_MISSION_INVALID_PARAM1","MAV_MISSION_INVALID_PARAM2","MAV_MISSION_INVALID_PARAM3","MAV_MISSION_INVALID_PARAM4","MAV_MISSION_INVALID_PARAM5_X","MAV_MISSION_INVALID_PARAM6_Y","MAV_MISSION_INVALID_PARAM7","MAV_MISSION_INVALID_SEQUENCE","MAV_MISSION_NO_SPACE","MAV_MISSION_OPERATION_CANCELLED","MAV_MISSION_TYPE_ALL","MAV_MISSION_TYPE_FENCE","MAV_MISSION_TYPE_MISSION","MAV_MISSION_TYPE_RALLY","MAV_MISSION_UNSUPPORTED","MAV_MISSION_UNSUPPORTED_FRAME","MAV_MODE_AUTO_ARMED","MAV_MODE_AUTO_DISARMED","MAV_MODE_FLAG_AUTO_ENABLED","MAV_MODE_FLAG_CUSTOM_MODE_ENABLED","MAV_MODE_FLAG_DECODE_POSITION_AUTO","MAV_MODE_FLAG_DECODE_POSITION_CUSTOM_MODE","MAV_MODE_FLAG_DECODE_POSITION_GUIDED","MAV_MODE_FLAG_DECODE_POSITION_HIL","MAV_MODE_FLAG_DECODE_POSITION_MANUAL","MAV_MODE_FLAG_DECODE_POSITION_SAFETY","MAV_MODE_FLAG_DECODE_POSITION_STABILIZE","MAV_MODE_FLAG_DECODE_POSITION_TEST","MAV_MODE_FLAG_GUIDED_ENABLED","MAV_MODE_FLAG_HIL_ENABLED","MAV_MODE_FLAG_MANUAL_INPUT_ENABLED","MAV_MODE_FLAG_SAFETY_ARMED","MAV_MODE_FLAG_STABILIZE_ENABLED","MAV_MODE_FLAG_TEST_ENABLED","MAV_MODE_GIMBAL_ACTIVE","MAV_MODE_GIMBAL_CALIBRATING_PITCH","MAV_MODE_GIMBAL_CALIBRATING_ROLL","MAV_MODE_GIMBAL_CALIBRATING_YAW","MAV_MODE_GIMBAL_INITIALIZED","MAV_MODE_GIMBAL_RATE_CMD_TIMEOUT","MAV_MODE_GIMBAL_UNINITIALIZED","MAV_MODE_GUIDED_ARMED","MAV_MODE_GUIDED_DISARMED","MAV_MODE_MANUAL_ARMED","MAV_MODE_MANUAL_DISARMED","MAV_MODE_PREFLIGHT","MAV_MODE_STABILIZE_ARMED","MAV_MODE_STABILIZE_DISARMED","MAV_MODE_TEST_ARMED","MAV_MODE_TEST_DISARMED","MAV_MOUNT_MODE_GPS_POINT","MAV_MOUNT_MODE_HOME_LOCATION","MAV_MOUNT_MODE_MAVLINK_TARGETING","MAV_MOUNT_MODE_NEUTRAL","MAV_MOUNT_MODE_RC_TARGETING","MAV_MOUNT_MODE_RETRACT","MAV_MOUNT_MODE_SYSID_TARGET","MAV_ODID_ARM_STATUS_GOOD_TO_ARM","MAV_ODID_ARM_STATUS_PRE_ARM_FAIL_GENERIC","MAV_ODID_AUTH_TYPE_MESSAGE_SET_SIGNATURE","MAV_ODID_AUTH_TYPE_NETWORK_REMOTE_ID","MAV_ODID_AUTH_TYPE_NONE","MAV_ODID_AUTH_TYPE_OPERATOR_ID_SIGNATURE","MAV_ODID_AUTH_TYPE_SPECIFIC_AUTHENTICATION","MAV_ODID_AUTH_TYPE_UAS_ID_SIGNATURE","MAV_ODID_CATEGORY_EU_CERTIFIED","MAV_ODID_CATEGORY_EU_OPEN","MAV_ODID_CATEGORY_EU_SPECIFIC","MAV_ODID_CATEGORY_EU_UNDECLARED","MAV_ODID_CLASSIFICATION_TYPE_EU","MAV_ODID_CLASSIFICATION_TYPE_UNDECLARED","MAV_ODID_CLASS_EU_CLASS_0","MAV_ODID_CLASS_EU_CLASS_1","MAV_ODID_CLASS_EU_CLASS_2","MAV_ODID_CLASS_EU_CLASS_3","MAV_ODID_CLASS_EU_CLASS_4","MAV_ODID_CLASS_EU_CLASS_5","MAV_ODID_CLASS_EU_CLASS_6","MAV_ODID_CLASS_EU_UNDECLARED","MAV_ODID_DESC_TYPE_EMERGENCY","MAV_ODID_DESC_TYPE_EXTENDED_STATUS","MAV_ODID_DESC_TYPE_TEXT","MAV_ODID_HEIGHT_REF_OVER_GROUND","MAV_ODID_HEIGHT_REF_OVER_TAKEOFF","MAV_ODID_HOR_ACC_0_05NM","MAV_ODID_HOR_ACC_0_1NM","MAV_ODID_HOR_ACC_0_3NM","MAV_ODID_HOR_ACC_0_5NM","MAV_ODID_HOR_ACC_10NM","MAV_ODID_HOR_ACC_10_METER","MAV_ODID_HOR_ACC_1NM","MAV_ODID_HOR_ACC_1_METER","MAV_ODID_HOR_ACC_2NM","MAV_ODID_HOR_ACC_30_METER","MAV_ODID_HOR_ACC_3_METER","MAV_ODID_HOR_ACC_4NM","MAV_ODID_HOR_ACC_UNKNOWN","MAV_ODID_ID_TYPE_CAA_REGISTRATION_ID","MAV_ODID_ID_TYPE_NONE","MAV_ODID_ID_TYPE_SERIAL_NUMBER","MAV_ODID_ID_TYPE_SPECIFIC_SESSION_ID","MAV_ODID_ID_TYPE_UTM_ASSIGNED_UUID","MAV_ODID_OPERATOR_ID_TYPE_CAA","MAV_ODID_OPERATOR_LOCATION_TYPE_FIXED","MAV_ODID_OPERATOR_LOCATION_TYPE_LIVE_GNSS","MAV_ODID_OPERATOR_LOCATION_TYPE_TAKEOFF","MAV_ODID_SPEED_ACC_0_3_METERS_PER_SECOND","MAV_ODID_SPEED_ACC_10_METERS_PER_SECOND","MAV_ODID_SPEED_ACC_1_METERS_PER_SECOND","MAV_ODID_SPEED_ACC_3_METERS_PER_SECOND","MAV_ODID_SPEED_ACC_UNKNOWN","MAV_ODID_STATUS_AIRBORNE","MAV_ODID_STATUS_EMERGENCY","MAV_ODID_STATUS_GROUND","MAV_ODID_STATUS_REMOTE_ID_SYSTEM_FAILURE","MAV_ODID_STATUS_UNDECLARED","MAV_ODID_TIME_ACC_0_1_SECOND","MAV_ODID_TIME_ACC_0_2_SECOND","MAV_ODID_TIME_ACC_0_3_SECOND","MAV_ODID_TIME_ACC_0_4_SECOND","MAV_ODID_TIME_ACC_0_5_SECOND","MAV_ODID_TIME_ACC_0_6_SECOND","MAV_ODID_TIME_ACC_0_7_SECOND","MAV_ODID_TIME_ACC_0_8_SECOND","MAV_ODID_TIME_ACC_0_9_SECOND","MAV_ODID_TIME_ACC_1_0_SECOND","MAV_ODID_TIME_ACC_1_1_SECOND","MAV_ODID_TIME_ACC_1_2_SECOND","MAV_ODID_TIME_ACC_1_3_SECOND","MAV_ODID_TIME_ACC_1_4_SECOND","MAV_ODID_TIME_ACC_1_5_SECOND","MAV_ODID_TIME_ACC_UNKNOWN","MAV_ODID_UA_TYPE_AEROPLANE","MAV_ODID_UA_TYPE_AIRSHIP","MAV_ODID_UA_TYPE_CAPTIVE_BALLOON","MAV_ODID_UA_TYPE_FREE_BALLOON","MAV_ODID_UA_TYPE_FREE_FALL_PARACHUTE","MAV_ODID_UA_TYPE_GLIDER","MAV_ODID_UA_TYPE_GROUND_OBSTACLE","MAV_ODID_UA_TYPE_GYROPLANE","MAV_ODID_UA_TYPE_HELICOPTER_OR_MULTIROTOR","MAV_ODID_UA_TYPE_HYBRID_LIFT","MAV_ODID_UA_TYPE_KITE","MAV_ODID_UA_TYPE_NONE","MAV_ODID_UA_TYPE_ORNITHOPTER","MAV_ODID_UA_TYPE_OTHER","MAV_ODID_UA_TYPE_ROCKET","MAV_ODID_UA_TYPE_TETHERED_POWERED_AIRCRAFT","MAV_ODID_VER_ACC_10_METER","MAV_ODID_VER_ACC_150_METER","MAV_ODID_VER_ACC_1_METER","MAV_ODID_VER_ACC_25_METER","MAV_ODID_VER_ACC_3_METER","MAV_ODID_VER_ACC_45_METER","MAV_ODID_VER_ACC_UNKNOWN","MAV_PARAM_EXT_TYPE_CUSTOM","MAV_PARAM_EXT_TYPE_INT16","MAV_PARAM_EXT_TYPE_INT32","MAV_PARAM_EXT_TYPE_INT64","MAV_PARAM_EXT_TYPE_INT8","MAV_PARAM_EXT_TYPE_REAL32","MAV_PARAM_EXT_TYPE_REAL64","MAV_PARAM_EXT_TYPE_UINT16","MAV_PARAM_EXT_TYPE_UINT32","MAV_PARAM_EXT_TYPE_UINT64","MAV_PARAM_EXT_TYPE_UINT8","MAV_PARAM_TYPE_INT16","MAV_PARAM_TYPE_INT32","MAV_PARAM_TYPE_INT64","MAV_PARAM_TYPE_INT8","MAV_PARAM_TYPE_REAL32","MAV_PARAM_TYPE_REAL64","MAV_PARAM_TYPE_UINT16","MAV_PARAM_TYPE_UINT32","MAV_PARAM_TYPE_UINT64","MAV_PARAM_TYPE_UINT8","MAV_POWER_STATUS_BRICK_VALID","MAV_POWER_STATUS_CHANGED","MAV_POWER_STATUS_PERIPH_HIPOWER_OVERCURRENT","MAV_POWER_STATUS_PERIPH_OVERCURRENT","MAV_POWER_STATUS_SERVO_VALID","MAV_POWER_STATUS_USB_CONNECTED","MAV_PROTOCOL_CAPABILITY_COMMAND_INT","MAV_PROTOCOL_CAPABILITY_COMPASS_CALIBRATION","MAV_PROTOCOL_CAPABILITY_FLIGHT_TERMINATION","MAV_PROTOCOL_CAPABILITY_FTP","MAV_PROTOCOL_CAPABILITY_MAVLINK2","MAV_PROTOCOL_CAPABILITY_MISSION_FENCE","MAV_PROTOCOL_CAPABILITY_MISSION_FLOAT","MAV_PROTOCOL_CAPABILITY_MISSION_INT","MAV_PROTOCOL_CAPABILITY_MISSION_RALLY","MAV_PROTOCOL_CAPABILITY_PARAM_ENCODE_BYTEWISE","MAV_PROTOCOL_CAPABILITY_PARAM_ENCODE_C_CAST","MAV_PROTOCOL_CAPABILITY_PARAM_FLOAT","MAV_PROTOCOL_CAPABILITY_RESERVED2","MAV_PROTOCOL_CAPABILITY_SET_ACTUATOR_TARGET","MAV_PROTOCOL_CAPABILITY_SET_ATTITUDE_TARGET","MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_GLOBAL_INT","MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_LOCAL_NED","MAV_PROTOCOL_CAPABILITY_TERRAIN","MAV_REMOTE_LOG_DATA_BLOCK_ACK","MAV_REMOTE_LOG_DATA_BLOCK_NACK","MAV_REMOTE_LOG_DATA_BLOCK_START","MAV_REMOTE_LOG_DATA_BLOCK_STOP","MAV_RESULT_ACCEPTED","MAV_RESULT_CANCELLED","MAV_RESULT_DENIED","MAV_RESULT_FAILED","MAV_RESULT_IN_PROGRESS","MAV_RESULT_TEMPORARILY_REJECTED","MAV_RESULT_UNSUPPORTED","MAV_ROI_LOCATION","MAV_ROI_NONE","MAV_ROI_TARGET","MAV_ROI_WPINDEX","MAV_ROI_WPNEXT","MAV_SENSOR_ROTATION_CUSTOM","MAV_SENSOR_ROTATION_NONE","MAV_SENSOR_ROTATION_PITCH_180","MAV_SENSOR_ROTATION_PITCH_180_YAW_270","MAV_SENSOR_ROTATION_PITCH_180_YAW_90","MAV_SENSOR_ROTATION_PITCH_270","MAV_SENSOR_ROTATION_PITCH_315","MAV_SENSOR_ROTATION_PITCH_90","MAV_SENSOR_ROTATION_ROLL_180","MAV_SENSOR_ROTATION_ROLL_180_PITCH_270","MAV_SENSOR_ROTATION_ROLL_180_PITCH_90","MAV_SENSOR_ROTATION_ROLL_180_YAW_135","MAV_SENSOR_ROTATION_ROLL_180_YAW_225","MAV_SENSOR_ROTATION_ROLL_180_YAW_270","MAV_SENSOR_ROTATION_ROLL_180_YAW_315","MAV_SENSOR_ROTATION_ROLL_180_YAW_45","MAV_SENSOR_ROTATION_ROLL_180_YAW_90","MAV_SENSOR_ROTATION_ROLL_270","MAV_SENSOR_ROTATION_ROLL_270_PITCH_180","MAV_SENSOR_ROTATION_ROLL_270_PITCH_270","MAV_SENSOR_ROTATION_ROLL_270_PITCH_90","MAV_SENSOR_ROTATION_ROLL_270_YAW_135","MAV_SENSOR_ROTATION_ROLL_270_YAW_45","MAV_SENSOR_ROTATION_ROLL_270_YAW_90","MAV_SENSOR_ROTATION_ROLL_90","MAV_SENSOR_ROTATION_ROLL_90_PITCH_180","MAV_SENSOR_ROTATION_ROLL_90_PITCH_180_YAW_90","MAV_SENSOR_ROTATION_ROLL_90_PITCH_270","MAV_SENSOR_ROTATION_ROLL_90_PITCH_315","MAV_SENSOR_ROTATION_ROLL_90_PITCH_68_YAW_293","MAV_SENSOR_ROTATION_ROLL_90_PITCH_90","MAV_SENSOR_ROTATION_ROLL_90_YAW_135","MAV_SENSOR_ROTATION_ROLL_90_YAW_270","MAV_SENSOR_ROTATION_ROLL_90_YAW_45","MAV_SENSOR_ROTATION_ROLL_90_YAW_90","MAV_SENSOR_ROTATION_YAW_135","MAV_SENSOR_ROTATION_YAW_180","MAV_SENSOR_ROTATION_YAW_225","MAV_SENSOR_ROTATION_YAW_270","MAV_SENSOR_ROTATION_YAW_315","MAV_SENSOR_ROTATION_YAW_45","MAV_SENSOR_ROTATION_YAW_90","MAV_SEVERITY_ALERT","MAV_SEVERITY_CRITICAL","MAV_SEVERITY_DEBUG","MAV_SEVERITY_EMERGENCY","MAV_SEVERITY_ERROR","MAV_SEVERITY_INFO","MAV_SEVERITY_NOTICE","MAV_SEVERITY_WARNING","MAV_STATE_ACTIVE","MAV_STATE_BOOT","MAV_STATE_CALIBRATING","MAV_STATE_CRITICAL","MAV_STATE_EMERGENCY","MAV_STATE_FLIGHT_TERMINATION","MAV_STATE_POWEROFF","MAV_STATE_STANDBY","MAV_STATE_UNINIT","MAV_SYS_STATUS_AHRS","MAV_SYS_STATUS_EXTENSION_USED","MAV_SYS_STATUS_GEOFENCE","MAV_SYS_STATUS_LOGGING","MAV_SYS_STATUS_OBSTACLE_AVOIDANCE","MAV_SYS_STATUS_PREARM_CHECK","MAV_SYS_STATUS_RECOVERY_SYSTEM","MAV_SYS_STATUS_REVERSE_MOTOR","MAV_SYS_STATUS_SENSOR_3D_ACCEL","MAV_SYS_STATUS_SENSOR_3D_ACCEL2","MAV_SYS_STATUS_SENSOR_3D_GYRO","MAV_SYS_STATUS_SENSOR_3D_GYRO2","MAV_SYS_STATUS_SENSOR_3D_MAG","MAV_SYS_STATUS_SENSOR_3D_MAG2","MAV_SYS_STATUS_SENSOR_ABSOLUTE_PRESSURE","MAV_SYS_STATUS_SENSOR_ANGULAR_RATE_CONTROL","MAV_SYS_STATUS_SENSOR_ATTITUDE_STABILIZATION","MAV_SYS_STATUS_SENSOR_BATTERY","MAV_SYS_STATUS_SENSOR_DIFFERENTIAL_PRESSURE","MAV_SYS_STATUS_SENSOR_EXTERNAL_GROUND_TRUTH","MAV_SYS_STATUS_SENSOR_GPS","MAV_SYS_STATUS_SENSOR_LASER_POSITION","MAV_SYS_STATUS_SENSOR_MOTOR_OUTPUTS","MAV_SYS_STATUS_SENSOR_OPTICAL_FLOW","MAV_SYS_STATUS_SENSOR_PROPULSION","MAV_SYS_STATUS_SENSOR_PROXIMITY","MAV_SYS_STATUS_SENSOR_RC_RECEIVER","MAV_SYS_STATUS_SENSOR_SATCOM","MAV_SYS_STATUS_SENSOR_VISION_POSITION","MAV_SYS_STATUS_SENSOR_XY_POSITION_CONTROL","MAV_SYS_STATUS_SENSOR_YAW_POSITION","MAV_SYS_STATUS_SENSOR_Z_ALTITUDE_CONTROL","MAV_SYS_STATUS_TERRAIN","MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED0","MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED1","MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED2","MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED3","MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED4","MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED5","MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED6","MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED7","MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED8","MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED9","MAV_TUNNEL_PAYLOAD_TYPE_UNKNOWN","MAV_TYPE_ADSB","MAV_TYPE_AIRSHIP","MAV_TYPE_ANTENNA_TRACKER","MAV_TYPE_BATTERY","MAV_TYPE_CAMERA","MAV_TYPE_CHARGING_STATION","MAV_TYPE_COAXIAL","MAV_TYPE_DECAROTOR","MAV_TYPE_DODECAROTOR","MAV_TYPE_FIXED_WING","MAV_TYPE_FLAPPING_WING","MAV_TYPE_FLARM","MAV_TYPE_FREE_BALLOON","MAV_TYPE_GCS","MAV_TYPE_GENERIC","MAV_TYPE_GIMBAL","MAV_TYPE_GPS","MAV_TYPE_GROUND_ROVER","MAV_TYPE_HELICOPTER","MAV_TYPE_HEXAROTOR","MAV_TYPE_IMU","MAV_TYPE_KITE","MAV_TYPE_LOG","MAV_TYPE_OCTOROTOR","MAV_TYPE_ODID","MAV_TYPE_ONBOARD_CONTROLLER","MAV_TYPE_OSD","MAV_TYPE_PARACHUTE","MAV_TYPE_PARAFOIL","MAV_TYPE_QUADROTOR","MAV_TYPE_ROCKET","MAV_TYPE_SERVO","MAV_TYPE_SUBMARINE","MAV_TYPE_SURFACE_BOAT","MAV_TYPE_TRICOPTER","MAV_TYPE_VTOL_FIXEDROTOR","MAV_TYPE_VTOL_RESERVED5","MAV_TYPE_VTOL_TAILSITTER","MAV_TYPE_VTOL_TAILSITTER_DUOROTOR","MAV_TYPE_VTOL_TAILSITTER_QUADROTOR","MAV_TYPE_VTOL_TILTROTOR","MAV_TYPE_VTOL_TILTWING","MAV_TYPE_WINCH","MAV_VTOL_STATE_FW","MAV_VTOL_STATE_MC","MAV_VTOL_STATE_TRANSITION_TO_FW","MAV_VTOL_STATE_TRANSITION_TO_MC","MAV_VTOL_STATE_UNDEFINED","MAV_WINCH_STATUS_ABANDON_LINE","MAV_WINCH_STATUS_ARRESTING","MAV_WINCH_STATUS_CLUTCH_ENGAGED","MAV_WINCH_STATUS_DROPPING","MAV_WINCH_STATUS_FULLY_RETRACTED","MAV_WINCH_STATUS_GROUND_SENSE","MAV_WINCH_STATUS_HEALTHY","MAV_WINCH_STATUS_LOAD_LINE","MAV_WINCH_STATUS_LOAD_PAYLOAD","MAV_WINCH_STATUS_LOCKED","MAV_WINCH_STATUS_LOCKING","MAV_WINCH_STATUS_MOVING","MAV_WINCH_STATUS_REDELIVER","MAV_WINCH_STATUS_RETRACTING","MCU_STATUS","MCU_STATUS_DATA","MCU_temperature","MCU_voltage","MCU_voltage_max","MCU_voltage_min","MEMINFO","MEMINFO_DATA","MEMORY_VECT","MEMORY_VECT_DATA","MESSAGE_INTERVAL","MESSAGE_INTERVAL_DATA","MISSION_ACK","MISSION_ACK_DATA","MISSION_CLEAR_ALL","MISSION_CLEAR_ALL_DATA","MISSION_COUNT","MISSION_COUNT_DATA","MISSION_CURRENT","MISSION_CURRENT_DATA","MISSION_ITEM","MISSION_ITEM_DATA","MISSION_ITEM_INT","MISSION_ITEM_INT_DATA","MISSION_ITEM_REACHED","MISSION_ITEM_REACHED_DATA","MISSION_READ_PERSISTENT","MISSION_REQUEST","MISSION_REQUEST_DATA","MISSION_REQUEST_INT","MISSION_REQUEST_INT_DATA","MISSION_REQUEST_LIST","MISSION_REQUEST_LIST_DATA","MISSION_REQUEST_PARTIAL_LIST","MISSION_REQUEST_PARTIAL_LIST_DATA","MISSION_RESET_DEFAULT","MISSION_SET_CURRENT","MISSION_SET_CURRENT_DATA","MISSION_STATE_ACTIVE","MISSION_STATE_COMPLETE","MISSION_STATE_NOT_STARTED","MISSION_STATE_NO_MISSION","MISSION_STATE_PAUSED","MISSION_STATE_UNKNOWN","MISSION_WRITE_PARTIAL_LIST","MISSION_WRITE_PARTIAL_LIST_DATA","MISSION_WRITE_PERSISTENT","MMSI","MOTOR_TEST_COMPASS_CAL","MOTOR_TEST_ORDER_BOARD","MOTOR_TEST_ORDER_DEFAULT","MOTOR_TEST_ORDER_SEQUENCE","MOTOR_TEST_THROTTLE_PERCENT","MOTOR_TEST_THROTTLE_PILOT","MOTOR_TEST_THROTTLE_PWM","MOUNT_CONFIGURE","MOUNT_CONFIGURE_DATA","MOUNT_CONTROL","MOUNT_CONTROL_DATA","MOUNT_ORIENTATION","MOUNT_ORIENTATION_DATA","MOUNT_STATUS","MOUNT_STATUS_DATA","MagCalStatus","MavArmAuthDeniedReason","MavAutopilot","MavBatteryChargeState","MavBatteryFault","MavBatteryFunction","MavBatteryMode","MavBatteryType","MavCmd","MavCmdAck","MavCmdDoAuxFunctionSwitchLevel","MavCollisionAction","MavCollisionSrc","MavCollisionThreatLevel","MavComponent","MavDataStream","MavDistanceSensor","MavDoRepositionFlags","MavEstimatorType","MavEventCurrentSequenceFlags","MavEventErrorReason","MavFrame","MavFtpErr","MavFtpOpcode","MavGeneratorStatusFlag","MavGoto","MavLandedState","MavMessage","MavMissionResult","MavMissionType","MavMode","MavModeFlag","MavModeFlagDecodePosition","MavModeGimbal","MavMountMode","MavOdidArmStatus","MavOdidAuthType","MavOdidCategoryEu","MavOdidClassEu","MavOdidClassificationType","MavOdidDescType","MavOdidHeightRef","MavOdidHorAcc","MavOdidIdType","MavOdidOperatorIdType","MavOdidOperatorLocationType","MavOdidSpeedAcc","MavOdidStatus","MavOdidTimeAcc","MavOdidUaType","MavOdidVerAcc","MavParamExtType","MavParamType","MavPowerStatus","MavProtocolCapability","MavRemoteLogDataBlockCommands","MavRemoteLogDataBlockStatuses","MavResult","MavRoi","MavSensorOrientation","MavSeverity","MavState","MavSysStatusSensor","MavSysStatusSensorExtended","MavTunnelPayloadType","MavType","MavVtolState","MavWinchStatusFlag","MavlinkDataStreamType","MissionState","MotorTestOrder","MotorTestThrottleType","NAMED_VALUE_FLOAT","NAMED_VALUE_FLOAT_DATA","NAMED_VALUE_INT","NAMED_VALUE_INT_DATA","NAV_CONTROLLER_OUTPUT","NAV_CONTROLLER_OUTPUT_DATA","NAV_VTOL_LAND_OPTIONS_DEFAULT","NAV_VTOL_LAND_OPTIONS_FW_DESCENT","NAV_VTOL_LAND_OPTIONS_HOVER_DESCENT","NavVtolLandOptions","OBSTACLE_DISTANCE","OBSTACLE_DISTANCE_3D","OBSTACLE_DISTANCE_3D_DATA","OBSTACLE_DISTANCE_DATA","ODOMETRY","ODOMETRY_DATA","ONBOARD_COMPUTER_STATUS","ONBOARD_COMPUTER_STATUS_DATA","OPEN_DRONE_ID_ARM_STATUS","OPEN_DRONE_ID_ARM_STATUS_DATA","OPEN_DRONE_ID_AUTHENTICATION","OPEN_DRONE_ID_AUTHENTICATION_DATA","OPEN_DRONE_ID_BASIC_ID","OPEN_DRONE_ID_BASIC_ID_DATA","OPEN_DRONE_ID_LOCATION","OPEN_DRONE_ID_LOCATION_DATA","OPEN_DRONE_ID_MESSAGE_PACK","OPEN_DRONE_ID_MESSAGE_PACK_DATA","OPEN_DRONE_ID_OPERATOR_ID","OPEN_DRONE_ID_OPERATOR_ID_DATA","OPEN_DRONE_ID_SELF_ID","OPEN_DRONE_ID_SELF_ID_DATA","OPEN_DRONE_ID_SYSTEM","OPEN_DRONE_ID_SYSTEM_DATA","OPEN_DRONE_ID_SYSTEM_UPDATE","OPEN_DRONE_ID_SYSTEM_UPDATE_DATA","OPTICAL_FLOW","OPTICAL_FLOW_DATA","OPTICAL_FLOW_RAD","OPTICAL_FLOW_RAD_DATA","ORBIT_EXECUTION_STATUS","ORBIT_EXECUTION_STATUS_DATA","ORBIT_YAW_BEHAVIOUR_HOLD_FRONT_TANGENT_TO_CIRCLE","ORBIT_YAW_BEHAVIOUR_HOLD_FRONT_TO_CIRCLE_CENTER","ORBIT_YAW_BEHAVIOUR_HOLD_INITIAL_HEADING","ORBIT_YAW_BEHAVIOUR_RC_CONTROLLED","ORBIT_YAW_BEHAVIOUR_UNCONTROLLED","OSD_PARAM_AUX_FUNCTION","OSD_PARAM_CONFIG","OSD_PARAM_CONFIG_DATA","OSD_PARAM_CONFIG_REPLY","OSD_PARAM_CONFIG_REPLY_DATA","OSD_PARAM_FAILSAFE_ACTION","OSD_PARAM_FAILSAFE_ACTION_1","OSD_PARAM_FAILSAFE_ACTION_2","OSD_PARAM_FLIGHT_MODE","OSD_PARAM_INVALID_PARAMETER","OSD_PARAM_INVALID_PARAMETER_INDEX","OSD_PARAM_INVALID_SCREEN","OSD_PARAM_NONE","OSD_PARAM_NUM_TYPES","OSD_PARAM_SERIAL_PROTOCOL","OSD_PARAM_SERVO_FUNCTION","OSD_PARAM_SHOW_CONFIG","OSD_PARAM_SHOW_CONFIG_DATA","OSD_PARAM_SHOW_CONFIG_REPLY","OSD_PARAM_SHOW_CONFIG_REPLY_DATA","OSD_PARAM_SUCCESS","OrbitYawBehaviour","OsdParamConfigError","OsdParamConfigType","P","PARACHUTE_DISABLE","PARACHUTE_ENABLE","PARACHUTE_RELEASE","PARAM_ACK_ACCEPTED","PARAM_ACK_FAILED","PARAM_ACK_IN_PROGRESS","PARAM_ACK_VALUE_UNSUPPORTED","PARAM_EXT_ACK","PARAM_EXT_ACK_DATA","PARAM_EXT_REQUEST_LIST","PARAM_EXT_REQUEST_LIST_DATA","PARAM_EXT_REQUEST_READ","PARAM_EXT_REQUEST_READ_DATA","PARAM_EXT_SET","PARAM_EXT_SET_DATA","PARAM_EXT_VALUE","PARAM_EXT_VALUE_DATA","PARAM_MAP_RC","PARAM_MAP_RC_DATA","PARAM_READ_PERSISTENT","PARAM_REQUEST_LIST","PARAM_REQUEST_LIST_DATA","PARAM_REQUEST_READ","PARAM_REQUEST_READ_DATA","PARAM_RESET_ALL_DEFAULT","PARAM_RESET_CONFIG_DEFAULT","PARAM_RESET_SENSOR_DEFAULT","PARAM_SET","PARAM_SET_DATA","PARAM_VALUE","PARAM_VALUE_DATA","PARAM_WRITE_PERSISTENT","PID_TUNING","PID_TUNING_ACCZ","PID_TUNING_DATA","PID_TUNING_LANDING","PID_TUNING_PITCH","PID_TUNING_ROLL","PID_TUNING_STEER","PID_TUNING_YAW","PING","PING_DATA","PLANE_MODE_ACRO","PLANE_MODE_AUTO","PLANE_MODE_AUTOTUNE","PLANE_MODE_AVOID_ADSB","PLANE_MODE_CIRCLE","PLANE_MODE_CRUISE","PLANE_MODE_FLY_BY_WIRE_A","PLANE_MODE_FLY_BY_WIRE_B","PLANE_MODE_GUIDED","PLANE_MODE_INITIALIZING","PLANE_MODE_LOITER","PLANE_MODE_MANUAL","PLANE_MODE_QACRO","PLANE_MODE_QAUTOTUNE","PLANE_MODE_QHOVER","PLANE_MODE_QLAND","PLANE_MODE_QLOITER","PLANE_MODE_QRTL","PLANE_MODE_QSTABILIZE","PLANE_MODE_RTL","PLANE_MODE_STABILIZE","PLANE_MODE_TAKEOFF","PLANE_MODE_THERMAL","PLANE_MODE_TRAINING","PLAY_TUNE","PLAY_TUNE_DATA","PLAY_TUNE_V2","PLAY_TUNE_V2_DATA","POSITION_TARGET_GLOBAL_INT","POSITION_TARGET_GLOBAL_INT_DATA","POSITION_TARGET_LOCAL_NED","POSITION_TARGET_LOCAL_NED_DATA","POSITION_TARGET_TYPEMASK_AX_IGNORE","POSITION_TARGET_TYPEMASK_AY_IGNORE","POSITION_TARGET_TYPEMASK_AZ_IGNORE","POSITION_TARGET_TYPEMASK_FORCE_SET","POSITION_TARGET_TYPEMASK_VX_IGNORE","POSITION_TARGET_TYPEMASK_VY_IGNORE","POSITION_TARGET_TYPEMASK_VZ_IGNORE","POSITION_TARGET_TYPEMASK_X_IGNORE","POSITION_TARGET_TYPEMASK_YAW_IGNORE","POSITION_TARGET_TYPEMASK_YAW_RATE_IGNORE","POSITION_TARGET_TYPEMASK_Y_IGNORE","POSITION_TARGET_TYPEMASK_Z_IGNORE","POWER_STATUS","POWER_STATUS_DATA","PRECISION_LAND_MODE_DISABLED","PRECISION_LAND_MODE_OPPORTUNISTIC","PRECISION_LAND_MODE_REQUIRED","PROTOCOL_VERSION","PROTOCOL_VERSION_DATA","ParachuteAction","ParamAck","Pax","Pby","Pcz","PidTuningAxis","PlaneMode","PositionTargetTypemask","PrecisionLandMode","PreflightStorageMissionAction","PreflightStorageParameterAction","RADIO","RADIO_DATA","RADIO_STATUS","RADIO_STATUS_DATA","RALLY_FETCH_POINT","RALLY_FETCH_POINT_DATA","RALLY_POINT","RALLY_POINT_DATA","RANGEFINDER","RANGEFINDER_DATA","RAW_IMU","RAW_IMU_DATA","RAW_PRESSURE","RAW_PRESSURE_DATA","RAW_RPM","RAW_RPM_DATA","RC_CHANNELS","RC_CHANNELS_DATA","RC_CHANNELS_OVERRIDE","RC_CHANNELS_OVERRIDE_DATA","RC_CHANNELS_RAW","RC_CHANNELS_RAW_DATA","RC_CHANNELS_SCALED","RC_CHANNELS_SCALED_DATA","RC_TYPE_SPEKTRUM_DSM2","RC_TYPE_SPEKTRUM_DSMX","REMOTE_LOG_BLOCK_STATUS","REMOTE_LOG_BLOCK_STATUS_DATA","REMOTE_LOG_DATA_BLOCK","REMOTE_LOG_DATA_BLOCK_DATA","REQUEST_DATA_STREAM","REQUEST_DATA_STREAM_DATA","REQUEST_EVENT","REQUEST_EVENT_DATA","RESOURCE_REQUEST","RESOURCE_REQUEST_DATA","RESPONSE_EVENT_ERROR","RESPONSE_EVENT_ERROR_DATA","ROVER_MODE_ACRO","ROVER_MODE_AUTO","ROVER_MODE_FOLLOW","ROVER_MODE_GUIDED","ROVER_MODE_HOLD","ROVER_MODE_INITIALIZING","ROVER_MODE_LOITER","ROVER_MODE_MANUAL","ROVER_MODE_RTL","ROVER_MODE_SIMPLE","ROVER_MODE_SMART_RTL","ROVER_MODE_STEERING","RPM","RPM_DATA","RTK_BASELINE_COORDINATE_SYSTEM_ECEF","RTK_BASELINE_COORDINATE_SYSTEM_NED","RallyFlags","RcType","RoverMode","RtkBaselineCoordinateSystem","SAFETY_ALLOWED_AREA","SAFETY_ALLOWED_AREA_DATA","SAFETY_SET_ALLOWED_AREA","SAFETY_SET_ALLOWED_AREA_DATA","SCALED_IMU","SCALED_IMU2","SCALED_IMU2_DATA","SCALED_IMU3","SCALED_IMU3_DATA","SCALED_IMU_DATA","SCALED_PRESSURE","SCALED_PRESSURE2","SCALED_PRESSURE2_DATA","SCALED_PRESSURE3","SCALED_PRESSURE3_DATA","SCALED_PRESSURE_DATA","SCRIPTING_CMD_REPL_START","SCRIPTING_CMD_REPL_STOP","SCRIPTING_CMD_STOP","SCRIPTING_CMD_STOP_AND_RESTART","SENSOR_OFFSETS","SENSOR_OFFSETS_DATA","SERIAL_CONTROL","SERIAL_CONTROL_DATA","SERIAL_CONTROL_DEV_GPS1","SERIAL_CONTROL_DEV_GPS2","SERIAL_CONTROL_DEV_SHELL","SERIAL_CONTROL_DEV_TELEM1","SERIAL_CONTROL_DEV_TELEM2","SERIAL_CONTROL_FLAG_BLOCKING","SERIAL_CONTROL_FLAG_EXCLUSIVE","SERIAL_CONTROL_FLAG_MULTI","SERIAL_CONTROL_FLAG_REPLY","SERIAL_CONTROL_FLAG_RESPOND","SERIAL_CONTROL_SERIAL0","SERIAL_CONTROL_SERIAL1","SERIAL_CONTROL_SERIAL2","SERIAL_CONTROL_SERIAL3","SERIAL_CONTROL_SERIAL4","SERIAL_CONTROL_SERIAL5","SERIAL_CONTROL_SERIAL6","SERIAL_CONTROL_SERIAL7","SERIAL_CONTROL_SERIAL8","SERIAL_CONTROL_SERIAL9","SERVO_OUTPUT_RAW","SERVO_OUTPUT_RAW_DATA","SETUP_SIGNING","SETUP_SIGNING_DATA","SET_ACTUATOR_CONTROL_TARGET","SET_ACTUATOR_CONTROL_TARGET_DATA","SET_ATTITUDE_TARGET","SET_ATTITUDE_TARGET_DATA","SET_GPS_GLOBAL_ORIGIN","SET_GPS_GLOBAL_ORIGIN_DATA","SET_HOME_POSITION","SET_HOME_POSITION_DATA","SET_MAG_OFFSETS","SET_MAG_OFFSETS_DATA","SET_MODE","SET_MODE_DATA","SET_POSITION_TARGET_GLOBAL_INT","SET_POSITION_TARGET_GLOBAL_INT_DATA","SET_POSITION_TARGET_LOCAL_NED","SET_POSITION_TARGET_LOCAL_NED_DATA","SIMSTATE","SIMSTATE_DATA","SIM_STATE","SIM_STATE_DATA","SMART_BATTERY_INFO","SMART_BATTERY_INFO_DATA","SPEED_TYPE_AIRSPEED","SPEED_TYPE_GROUNDSPEED","SSA","STATUSTEXT","STATUSTEXT_DATA","STORAGE_INFORMATION","STORAGE_INFORMATION_DATA","STORAGE_STATUS_EMPTY","STORAGE_STATUS_NOT_SUPPORTED","STORAGE_STATUS_READY","STORAGE_STATUS_UNFORMATTED","STORAGE_TYPE_CF","STORAGE_TYPE_CFE","STORAGE_TYPE_HD","STORAGE_TYPE_MICROSD","STORAGE_TYPE_OTHER","STORAGE_TYPE_SD","STORAGE_TYPE_UNKNOWN","STORAGE_TYPE_USB_STICK","STORAGE_TYPE_XQD","STORAGE_USAGE_FLAG_LOGS","STORAGE_USAGE_FLAG_PHOTO","STORAGE_USAGE_FLAG_SET","STORAGE_USAGE_FLAG_VIDEO","SUB_MODE_ACRO","SUB_MODE_ALT_HOLD","SUB_MODE_AUTO","SUB_MODE_CIRCLE","SUB_MODE_GUIDED","SUB_MODE_MANUAL","SUB_MODE_POSHOLD","SUB_MODE_STABILIZE","SUB_MODE_SURFACE","SUPPORTED_TUNES","SUPPORTED_TUNES_DATA","SYSTEM_TIME","SYSTEM_TIME_DATA","SYS_STATUS","SYS_STATUS_DATA","ScriptingCmd","SerialControlDev","SerialControlFlag","SetFocusType","SpeedType","StorageStatus","StorageType","StorageUsageFlag","SubMode","TERRAIN_CHECK","TERRAIN_CHECK_DATA","TERRAIN_DATA","TERRAIN_DATA_DATA","TERRAIN_REPORT","TERRAIN_REPORT_DATA","TERRAIN_REQUEST","TERRAIN_REQUEST_DATA","TIMESYNC","TIMESYNC_DATA","TIME_ESTIMATE_TO_TARGET","TIME_ESTIMATE_TO_TARGET_DATA","TRACKER_MODE_AUTO","TRACKER_MODE_INITIALIZING","TRACKER_MODE_MANUAL","TRACKER_MODE_SCAN","TRACKER_MODE_SERVO_TEST","TRACKER_MODE_STOP","TRAJECTORY_REPRESENTATION_BEZIER","TRAJECTORY_REPRESENTATION_BEZIER_DATA","TRAJECTORY_REPRESENTATION_WAYPOINTS","TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA","TUNE_FORMAT_MML_MODERN","TUNE_FORMAT_QBASIC1_1","TUNNEL","TUNNEL_DATA","TrackerMode","TuneFormat","UAVCAN_NODE_HEALTH_CRITICAL","UAVCAN_NODE_HEALTH_ERROR","UAVCAN_NODE_HEALTH_OK","UAVCAN_NODE_HEALTH_WARNING","UAVCAN_NODE_INFO","UAVCAN_NODE_INFO_DATA","UAVCAN_NODE_MODE_INITIALIZATION","UAVCAN_NODE_MODE_MAINTENANCE","UAVCAN_NODE_MODE_OFFLINE","UAVCAN_NODE_MODE_OPERATIONAL","UAVCAN_NODE_MODE_SOFTWARE_UPDATE","UAVCAN_NODE_STATUS","UAVCAN_NODE_STATUS_DATA","UAVIONIX_ADSB_OUT_CFG","UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L15M_W23M","UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L25M_W28P5M","UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L25_34M","UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L35_33M","UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L35_38M","UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L45_39P5M","UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L45_45M","UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L55_45M","UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L55_52M","UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L65_59P5M","UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L65_67M","UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L75_W72P5M","UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L75_W80M","UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L85_W80M","UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L85_W90M","UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_NO_DATA","UAVIONIX_ADSB_OUT_CFG_DATA","UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_LEFT_2M","UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_LEFT_4M","UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_LEFT_6M","UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_NO_DATA","UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_RIGHT_0M","UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_RIGHT_2M","UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_RIGHT_4M","UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_RIGHT_6M","UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LON_APPLIED_BY_SENSOR","UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LON_NO_DATA","UAVIONIX_ADSB_OUT_DOWNED_AIRCRAFT_EMERGENCY","UAVIONIX_ADSB_OUT_DYNAMIC","UAVIONIX_ADSB_OUT_DYNAMIC_DATA","UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX_2D","UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX_3D","UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX_DGPS","UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX_NONE_0","UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX_NONE_1","UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX_RTK","UAVIONIX_ADSB_OUT_DYNAMIC_STATE_AUTOPILOT_ENABLED","UAVIONIX_ADSB_OUT_DYNAMIC_STATE_IDENT","UAVIONIX_ADSB_OUT_DYNAMIC_STATE_INTENT_CHANGE","UAVIONIX_ADSB_OUT_DYNAMIC_STATE_NICBARO_CROSSCHECKED","UAVIONIX_ADSB_OUT_DYNAMIC_STATE_ON_GROUND","UAVIONIX_ADSB_OUT_GENERAL_EMERGENCY","UAVIONIX_ADSB_OUT_LIFEGUARD_EMERGENCY","UAVIONIX_ADSB_OUT_MINIMUM_FUEL_EMERGENCY","UAVIONIX_ADSB_OUT_NO_COMM_EMERGENCY","UAVIONIX_ADSB_OUT_NO_EMERGENCY","UAVIONIX_ADSB_OUT_RESERVED","UAVIONIX_ADSB_OUT_RF_SELECT_RX_ENABLED","UAVIONIX_ADSB_OUT_RF_SELECT_STANDBY","UAVIONIX_ADSB_OUT_RF_SELECT_TX_ENABLED","UAVIONIX_ADSB_OUT_UNLAWFUL_INTERFERANCE_EMERGENCY","UAVIONIX_ADSB_RF_HEALTH_FAIL_RX","UAVIONIX_ADSB_RF_HEALTH_FAIL_TX","UAVIONIX_ADSB_RF_HEALTH_INITIALIZING","UAVIONIX_ADSB_RF_HEALTH_OK","UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT","UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA","UNDER_WAY","UTM_DATA_AVAIL_FLAGS_ALTITUDE_AVAILABLE","UTM_DATA_AVAIL_FLAGS_HORIZONTAL_VELO_AVAILABLE","UTM_DATA_AVAIL_FLAGS_NEXT_WAYPOINT_AVAILABLE","UTM_DATA_AVAIL_FLAGS_POSITION_AVAILABLE","UTM_DATA_AVAIL_FLAGS_RELATIVE_ALTITUDE_AVAILABLE","UTM_DATA_AVAIL_FLAGS_TIME_VALID","UTM_DATA_AVAIL_FLAGS_UAS_ID_AVAILABLE","UTM_DATA_AVAIL_FLAGS_VERTICAL_VELO_AVAILABLE","UTM_FLIGHT_STATE_AIRBORNE","UTM_FLIGHT_STATE_EMERGENCY","UTM_FLIGHT_STATE_GROUND","UTM_FLIGHT_STATE_NOCTRL","UTM_FLIGHT_STATE_UNKNOWN","UTM_GLOBAL_POSITION","UTM_GLOBAL_POSITION_DATA","UavcanNodeHealth","UavcanNodeMode","UavionixAdsbEmergencyStatus","UavionixAdsbOutCfgAircraftSize","UavionixAdsbOutCfgGpsOffsetLat","UavionixAdsbOutCfgGpsOffsetLon","UavionixAdsbOutDynamicGpsFix","UavionixAdsbOutDynamicState","UavionixAdsbOutRfSelect","UavionixAdsbRfHealth","UtmDataAvailFlags","UtmFlightState","V2_EXTENSION","V2_EXTENSION_DATA","VFR_HUD","VFR_HUD_DATA","VIBRATION","VIBRATION_DATA","VICON_POSITION_ESTIMATE","VICON_POSITION_ESTIMATE_DATA","VIDEO_STREAM_INFORMATION","VIDEO_STREAM_INFORMATION_DATA","VIDEO_STREAM_STATUS","VIDEO_STREAM_STATUS_DATA","VIDEO_STREAM_STATUS_FLAGS_RUNNING","VIDEO_STREAM_STATUS_FLAGS_THERMAL","VIDEO_STREAM_TYPE_MPEG_TS_H264","VIDEO_STREAM_TYPE_RTPUDP","VIDEO_STREAM_TYPE_RTSP","VIDEO_STREAM_TYPE_TCP_MPEG","VISION_POSITION_DELTA","VISION_POSITION_DELTA_DATA","VISION_POSITION_ESTIMATE","VISION_POSITION_ESTIMATE_DATA","VISION_SPEED_ESTIMATE","VISION_SPEED_ESTIMATE_DATA","VTOL_TRANSITION_HEADING_ANY","VTOL_TRANSITION_HEADING_NEXT_WAYPOINT","VTOL_TRANSITION_HEADING_SPECIFIED","VTOL_TRANSITION_HEADING_TAKEOFF","VTOL_TRANSITION_HEADING_VEHICLE_DEFAULT","Vcc","Vcc","VelEW","VideoStreamStatusFlags","VideoStreamType","Vservo","VtolTransitionHeading","WATER_DEPTH","WATER_DEPTH_DATA","WHEEL_DISTANCE","WHEEL_DISTANCE_DATA","WIFI_CONFIG_AP","WIFI_CONFIG_AP_DATA","WIFI_CONFIG_AP_MODE_AP","WIFI_CONFIG_AP_MODE_DISABLED","WIFI_CONFIG_AP_MODE_STATION","WIFI_CONFIG_AP_MODE_UNDEFINED","WIFI_CONFIG_AP_RESPONSE_ACCEPTED","WIFI_CONFIG_AP_RESPONSE_MODE_ERROR","WIFI_CONFIG_AP_RESPONSE_PASSWORD_ERROR","WIFI_CONFIG_AP_RESPONSE_REJECTED","WIFI_CONFIG_AP_RESPONSE_SSID_ERROR","WIFI_CONFIG_AP_RESPONSE_UNDEFINED","WINCH_ABANDON_LINE","WINCH_DELIVER","WINCH_HOLD","WINCH_LOAD_LINE","WINCH_LOAD_PAYLOAD","WINCH_LOCK","WINCH_RATE_CONTROL","WINCH_RELATIVE_LENGTH_CONTROL","WINCH_RELAXED","WINCH_RETRACT","WINCH_STATUS","WINCH_STATUS_DATA","WIND","WIND_COV","WIND_COV_DATA","WIND_DATA","WifiConfigApMode","WifiConfigApResponse","WinchActions","ZOOM_TYPE_CONTINUOUS","ZOOM_TYPE_FOCAL_LENGTH","ZOOM_TYPE_RANGE","ZOOM_TYPE_STEP","abs_pressure","abs_pressure","acc","acc_x","acc_y","acc_z","accel_cal_x","accel_cal_y","accel_cal_z","accel_weight","accuracy","accuracy","accuracyHor","accuracyVel","accuracyVert","achieved","achieved","ack","action","active","actuator","adc1","adc2","adc3","adc4","adc5","adc6","address","address","address","afx","afx","afx","afx","afy","afy","afy","afy","afz","afz","afz","afz","aircraftSize","airspeed","airspeed","airspeed","airspeed","airspeed_sp","airspeed_sp","all","all","all","all","all","all","all","all","all","all","all","all","all","all","all","all","all","all","all","all","all","all","all","all","all","all","all","all","all","all","all","all","alt","alt","alt","alt","alt","alt","alt","alt","alt","alt","alt","alt","alt","alt","alt","alt","alt","alt","alt_camera","alt_error","alt_image","alt_msl","alt_rel","altitude","altitude","altitude","altitude","altitude","altitude","altitude","altitude","altitude","altitude_amsl","altitude_amsl","altitude_barometric","altitude_geodetic","altitude_local","altitude_minimum_delta","altitude_monotonic","altitude_relative","altitude_sp","altitude_terrain","altitude_type","angle_delta","angle_x","angle_y","angular_velocity_x","angular_velocity_x","angular_velocity_x","angular_velocity_y","angular_velocity_y","angular_velocity_y","angular_velocity_z","angular_velocity_z","angular_velocity_z","aperture","apn","approach_x","approach_x","approach_y","approach_y","approach_z","approach_z","arc_entry_lat","arc_entry_lon","area_ceiling","area_count","area_floor","area_radius","arguments","arming_time_utc","array_id","aspd_error","attempt","attitude_q","attitude_quaternion","authentication_data","authentication_type","autocontinue","autocontinue","autocontinue","autopilot","autopilot","autosaved","aux1","aux2","aux3","aux4","available_capacity","available_capacity","ax","axis","axis","ay","az","az_torque_cmd","baroAltMSL","barometer_accuracy","barometric_pressure","base_mode","base_mode","base_mode","baseline_a_mm","baseline_a_mm","baseline_b_mm","baseline_b_mm","baseline_c_mm","baseline_c_mm","baseline_coords_type","baseline_coords_type","bat_current_setpoint","battery","battery_current","battery_function","battery_function","battery_remaining","battery_remaining","battery_remaining","baudrate","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitrate","bitrate","bitrate","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","board_version","body_pitch_rate","body_pitch_rate","body_roll_rate","body_roll_rate","body_yaw_rate","body_yaw_rate","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","bottom_clearance","breach_count","breach_count","breach_status","breach_time","breach_type","break_alt","brkval","bus","bus","bus","bus","bus","bus_voltage","busname","busname","bustype","bustype","buttons","cal_mask","cal_mask","cal_status","cal_status","callsign","callsign","callsign","cam_definition_uri","cam_definition_version","cam_idx","cam_idx","camera_id","camera_id","cap_flags","cap_flags","capabilities","capacity_full","capacity_full_specification","capture_mode","capture_result","category_eu","chan10_raw","chan10_raw","chan11_raw","chan11_raw","chan12_raw","chan12_raw","chan13_raw","chan14_raw","chan15_raw","chan16_raw","chan17_raw","chan18_raw","chan1_raw","chan1_raw","chan1_raw","chan1_raw","chan1_scaled","chan2_raw","chan2_raw","chan2_raw","chan2_raw","chan2_scaled","chan3_raw","chan3_raw","chan3_raw","chan3_raw","chan3_scaled","chan4_raw","chan4_raw","chan4_raw","chan4_raw","chan4_scaled","chan5_raw","chan5_raw","chan5_raw","chan5_raw","chan5_scaled","chan6_raw","chan6_raw","chan6_raw","chan6_raw","chan6_scaled","chan7_raw","chan7_raw","chan7_raw","chan7_raw","chan7_scaled","chan8_raw","chan8_raw","chan8_raw","chan8_raw","chan8_scaled","chan9_raw","chan9_raw","chancount","charging_minimum_voltage","child_frame_id","class_eu","classification_type","climb","climb_rate","climb_rate","clipping_0","clipping_1","clipping_2","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","cmd_id","cmd_id","cmd_id","cmd_id","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cog","cog","cog","command","command","command","command","command","command","command","command_id","command_id","commanded_action","compass_id","compass_id","compass_variance","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","completion_mask","completion_pct","confidence","config_type","config_type","confirmation","connection_type","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","control_request","control_request","controls","controls","controls","coordinate_frame","coordinate_frame","coordinate_frame","coordinate_frame","count","count","count","count","count","count","count","count","count","count","count","count","count","count","count","counter","covariance","covariance","covariance","covariance","cpu_combined","cpu_cores","crc","cross_track_error","current","current","current","current","current","current","current","current","current","current_battery","current_battery","current_battery","current_consumed","current_distance","current_height","custom0","custom1","custom2","custom_bytes","custom_cap_flags","custom_len","custom_mode","custom_mode","custom_mode","custom_mode","custom_name","custom_state","cycle_count","cylinder_head_temperature","data","data","data","data","data","data","data","data","data","data","data","data","data","data","data","data","data","data_page","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default_message_from_id","delta","delta_angle_x","delta_angle_y","delta_angle_z","delta_time","delta_velocity_x","delta_velocity_y","delta_velocity_z","demanded_rate_x","demanded_rate_y","demanded_rate_z","description","description_type","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","desired","desired","destination_component","destination_system","device","device_name","dgps_age","dgps_numch","diag_x","diag_y","diag_z","diff_pressure","diff_pressure","diff_pressure","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","dimension_bow","dimension_port","dimension_starboard","dimension_stern","direction","direction","direction_x","direction_y","direction_z","discharge_minimum_voltage","dist","distance","distance","distance","distance","distance","distance","distances","drop_rate_comm","ecu_index","el_torque_cmd","emergencyStatus","emitterType","emitter_type","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","enable_lte","enable_pin","end","end_index","end_index","energy_consumed","engine_cut_off","engine_load","eph","eph","eph","eph","epv","epv","epv","epv","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","error","error","error_count","error_rp","error_yaw","errors_comm","errors_count1","errors_count2","errors_count3","errors_count4","est_capabilities","estimator_status","estimator_type","estimator_type","event_id","event_time_boot_ms","exhaust_gas_temperature","expected_travel_distance","exposure_type","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extra_crc","extra_param","extra_param","extra_value","extra_value","f","f_dot","failed_sessions","failsafe","failure_flags","failure_flags","failure_flags","failure_reason","fan_speed","feed_forward_angular_velocity_z","fields_updated","fields_updated","file_crc","file_url","firmware_version","firmware_version","first_message_offset","first_message_offset","first_sequence","fitness","fix_type","fix_type","fix_type","fix_type","fixed","fixed","flags","flags","flags","flags","flags","flags","flags","flags","flags","flags","flags","flags","flags","flags","flags","flags","flags","flags","flags","flags","flags","flags","flight_custom_version","flight_state","flight_sw_version","flight_uuid","flow_comp_m_x","flow_comp_m_y","flow_x","flow_y","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","foc_len","focal_length","focus_lock","format","format","frame","frame","frame","frame","frame","frame","frame","frame","frame_id","framerate","framerate","framerate","freemem","frequency","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","fuel_consumed","fuel_flow","gcs_system_id","general_metadata_file_crc","general_metadata_uri","generator_speed","generator_temperature","gimbal_device_id","gimbal_device_id","gimbal_device_id","gimbal_device_id","gimbal_device_id","gpsAlt","gpsFix","gpsLat","gpsLon","gpsOffsetLat","gpsOffsetLon","gps_fix_type","gps_id","gps_nsat","gpu_combined","gpu_cores","grid_spacing","grid_spacing","gridbit","ground_distance","groundspeed","groundspeed","groundspeed","group_mlx","group_mlx","gyro_cal_x","gyro_cal_y","gyro_cal_z","h_acc","h_acc","hagl_ratio","hardware_version","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hdg","hdg","hdg_acc","hdop","heading","heading","heading","heading","heading","heading_sp","health","health","healthy","height","height","height_reference","hfov","hfov","hfov","hor_velocity","horiz_accuracy","horiz_accuracy","horizontal_accuracy","horizontal_minimum_delta","humidity","hw_unique_id","hw_version_major","hw_version_minor","iar_num_hypotheses","iar_num_hypotheses","id","id","id","id","id","id","id","id","id","id","id","id","id","id_or_mac","id_or_mac","id_or_mac","id_or_mac","id_or_mac","id_or_mac","id_or_mac","id_type","ids","idx","idx","idx","idx","ignition_timing","ignore_flags","image_index","image_interval","image_status","img_idx","img_idx","increment","increment","increment","ind","ind_airspeed","index","index","index","info","initial_timestamp","injection_time","input_a","input_b","input_c","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","instance","intake_manifold_pressure","intake_manifold_temperature","integrated_x","integrated_x","integrated_xgyro","integrated_xgyro","integrated_y","integrated_y","integrated_ygyro","integrated_ygyro","integrated_zgyro","integrated_zgyro","integration_time_us","integration_time_us","interference","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","interval_us","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","iso","joint_az","joint_el","joint_roll","jpg_quality","key","lac","land","land_dir","landed_state","landed_state","landed_state","landing_lat","landing_lon","last_action","last_change_ms","last_clear","last_heartbeat","last_log_num","last_page_index","last_recovery","last_sequence","last_trigger","lat","lat","lat","lat","lat","lat","lat","lat","lat","lat","lat","lat","lat","lat","lat","lat","lat","lat","lat","lat","lat","lat","lat","lat","lat","lat","lat_camera","lat_image","lat_int","lat_int","latitude","latitude","latitude","latitude","latitude","latitude","latitude","len","len","len","len","len","len","len","len","length","length","length","lens_id","library_version_hash","limits_state","line_length","link_rx_max","link_rx_rate","link_tx_max","link_tx_rate","link_type","lng","lng","lng","lng","lng","lng","lng","load","load_current","loaded","log_levels","lon","lon","lon","lon","lon","lon","lon","lon","lon","lon","lon","lon","lon","lon","lon","lon","lon","lon","lon","lon_camera","lon_image","lon_int","lon_int","longitude","longitude","longitude","longitude","longitude","longitude","longitude","mag_declination","mag_ofs_x","mag_ofs_x","mag_ofs_y","mag_ofs_y","mag_ofs_z","mag_ofs_z","mag_ratio","manual_override_switch","mask","mavlink_version","mavtype","mavtype","mavtype","mavtype","mavtype","mavtype","mavtype","mavtype","mavtype","mavtype","mavtype","mavtype","mavtype","mavtype","mavtype","mavtype","max1","max2","max3","max4","max5","max_distance","max_distance","max_distance","max_value","max_value","max_version","mcc","message_id","message_id","message_id_from_name","message_name","message_rate","message_type","messages","messages_lost","messages_received","messages_sent","middleware_custom_version","middleware_sw_version","min1","min2","min3","min4","min5","min_distance","min_distance","min_distance","min_value","min_value","min_version","mission_end","mission_next_item","mnc","mode","mode","mode","mode","mode_id","mode_switch","model_name","model_name","mods_enabled","mods_required","mods_triggered","mount_mode","msg_pack_size","name","name","name","name","name","name","name","nav_bearing","nav_mode","nav_pitch","nav_roll","navigational_status","new_pin","next_alt","next_lat","next_lon","noise","noise","not","not","not","not","not","not","not","not","not","not","not","not","not","not","not","not","not","not","not","not","not","not","not","not","not","not","not","not","not","not","not","not","nsats","nsats","numBands","numSats","num_ids","num_logs","obstacle_id","offdiag_x","offdiag_y","offdiag_z","offset","ofs","ofs","ofs_x","ofs_y","ofs_z","omega","omegaIx","omegaIy","omegaIz","omega_dot","on_off","onboard_control_sensors_enabled","onboard_control_sensors_health","onboard_control_sensors_present","operation","operator_altitude_geo","operator_altitude_geo","operator_id","operator_id_type","operator_latitude","operator_latitude","operator_location_type","operator_longitude","operator_longitude","orientation","os_custom_version","os_sw_version","osd_index","osd_index","osd_screen","osd_screen","p1","p1x","p1x","p1y","p1y","p1z","p1z","p2","p2x","p2x","p2y","p2y","p2z","p2z","p3","p4","packets","param1","param1","param1","param1","param2","param2","param2","param2","param3","param3","param3","param3","param4","param4","param4","param4","param5","param6","param7","param_count","param_count","param_id","param_id","param_id","param_id","param_id","param_id","param_id","param_id","param_id","param_id","param_index","param_index","param_index","param_index","param_index","param_result","param_type","param_type","param_type","param_type","param_type","param_value","param_value","param_value","param_value","param_value","param_value0","param_value_max","param_value_min","parameter_rc_channel_index","parse","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","passkey","password","path_lat","path_lon","pattern","payload","payload","payload","payload","payload_length","payload_type","pending","peripherals_metadata_file_crc","peripherals_metadata_uri","pin","pitch","pitch","pitch","pitch","pitch","pitch","pitch","pitch","pitch","pitch","pitch","pitch","pitch","pitch","pitch","pitch","pitch","pitch_elevator","pitch_max","pitch_max","pitch_min","pitch_min","pitch_rate","pitch_rate","pitch_rate","pitchspeed","pitchspeed","pitchspeed","pitchspeed","pitchspeed","pitchspeed","point_x","point_y","pointing_a","pointing_b","pointing_c","port","port","port","pos_horiz_accuracy","pos_horiz_ratio","pos_horiz_variance","pos_variance","pos_vert_accuracy","pos_vert_ratio","pos_vert_variance","pos_x","pos_x","pos_y","pos_y","pos_yaw","pos_yaw","pos_z","pos_z","pose_covariance","position_cov","position_delta","power_generated","press_abs","press_abs","press_abs","press_abs","press_diff","press_diff","press_diff","press_diff1","press_diff2","pressure_alt","pressure_alt","primary_control_compid","primary_control_sysid","product_id","pt_compensation","puk","q","q","q","q","q","q","q","q","q","q","q","q","q","q","q1","q1","q2","q2","q3","q3","q4","q4","q_estimated_delay_us","quality","quality","quality","quality","r","radius","radius","ram_total","ram_usage","rates","ratio","raw_press","raw_temp","read_speed","reason","rec_bottom_x","rec_bottom_y","rec_top_x","rec_top_y","recording_time_ms","rectifier_temperature","regstart","regstart","regstart","relative_alt","relative_alt","relative_alt","relative_alt","remnoise","remnoise","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remrssi","remrssi","renorm_val","req_message_rate","req_stream_id","request_id","request_id","request_id","request_id","request_id","request_id","request_id","request_id","request_id","resolution_h","resolution_h","resolution_h","resolution_h","resolution_v","resolution_v","resolution_v","resolution_v","response","resting_minimum_voltage","result","result","result","result","result","rfHealth","rfSelect","ring_pending","rl_torque_cmd","roaming","roll","roll","roll","roll","roll","roll","roll","roll","roll","roll","roll","roll","roll","roll","roll","roll_ailerons","roll_max","roll_max","roll_min","roll_min","roll_rate","rollspeed","rollspeed","rollspeed","rollspeed","rollspeed","rollspeed","rotation","rotation","rotation","rpm","rpm","rpm","rpm","rpm","rpm1","rpm2","rssi","rssi","rssi","rssi","rssi","rssi","rtk_health","rtk_health","rtk_rate","rtk_rate","rtk_receiver_id","rtk_receiver_id","runtime","rx_buf","rx_overflows","rx_parse_err","rx_rate","rx_session_pending","rxerrors","rxerrors","safe_return","satellite_azimuth","satellite_elevation","satellite_prn","satellite_snr","satellite_used","satellites_visible","satellites_visible","satellites_visible","satellites_visible","satellites_visible","save_position","scale","secondary_control_compid","secondary_control_sysid","secret_key","sensor_id","sensor_id","sensor_id","sensor_size_h","sensor_size_v","sensor_type","sensor_type","seq","seq","seq","seq","seq","seq","seq","seq","seq","seqno","seqno","seqnr","sequence","sequence","sequence","sequence","sequence","sequence","sequence_oldest_available","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","serial_number","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","servo1_raw","servo2_raw","servo3_raw","servo4_raw","servo5_raw","servo6_raw","servo7_raw","servo8_raw","session","set","set","set","set","set","set","set","set","set","set","set","set","set","set","set","set","set","set","set","set","set","set","set","set","set","set","set","set","set","set","set","set","severity","shot","shutter_speed","sigma","sigma_dot","signal_quality","single_message_size","size","size","size","size_x","size_y","spacing","spark_dwell_time","spec_version_hash","speed","speed","speed_accuracy","speed_accuracy","speed_horizontal","speed_vertical","speed_z","squawk","squawk","src","ssid","stab_pitch","stab_roll","stab_yaw","stage","stallSpeed","start","start_index","start_index","start_stop","state","state","state_x","state_y","state_z","status","status","status","status","status","status","status","status","status","status","status","status","std_dev_horz","std_dev_vert","storage","storage_count","storage_id","storage_total","storage_type","storage_usage","stream_id","stream_id","stream_id","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_mode","successful_sessions","sw_vcs_commit","sw_version_major","sw_version_minor","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","system_status","takeoff_time_utc","target","target_altitude","target_bearing","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_data","target_distance","target_heading","target_network","target_network","target_num","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","tas_ratio","tc1","temperature","temperature","temperature","temperature","temperature","temperature","temperature","temperature","temperature","temperature","temperature","temperature","temperature","temperature","temperature","temperature","temperature","temperature_air","temperature_air","temperature_board","temperature_core","tension","terrain_alt_variance","terrain_height","text","theta","theta_dot","threat_level","throttle","throttle","throttle","throttle","throttle","throttle_out","throttle_position","thrust","thrust","thrust","time","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_us","time_delta_distance_us","time_delta_distance_us","time_delta_usec","time_last_baseline_ms","time_last_baseline_ms","time_to_minimum_delta","time_unix_usec","time_until_maintenance","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_utc","time_utc","time_week","time_week_ms","timeout","timestamp","timestamp","timestamp","timestamp","timestamp","timestamp","timestamp","timestamp","timestamp_accuracy","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","total_capacity","totalcurrent","totalcurrent","totalcurrent","tow","tow","tracking_mode","tracking_status","tracking_status","transfer_type","true_airspeed","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","ts1","tslc","tslc","tune","tune","turn_rate","tx_buf","tx_overflows","tx_rate","tx_session_pending","txbuf","txbuf","type1","type2","type3","type4","type5","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_mask","type_mask","type_mask","type_mask","type_mask","type_mask","u","ua_type","uas_id","uas_id","uid","uid","union","union","union","union","union","union","union","union","union","union","union","union","union","union","union","union","union","union","union","union","union","union","union","union","union","union","union","union","union","union","union","union","update_rate","uptime","uptime_sec","uptime_sec","uri","uri","uri","uri","uri_type","usec","usec","usec","usec","used_capacity","utcTime","v1","v2","v3","v4","v_acc","v_acc","v_estimated_delay_us","valid_points","valid_points","value","value","value","value","value","value","var_horiz","var_vert","vd","vd","vd","vdop","ve","ve","ve","vel","vel","vel","vel","velNS","velVert","vel_acc","vel_acc","vel_d","vel_e","vel_n","vel_ratio","vel_variance","vel_x","vel_y","vel_yaw","vel_z","velocity","velocity_covariance","velocity_variance","vendor_id","vendor_name","vendor_name","vendor_specific_status_code","ver","ver_velocity","version","version","vert_accuracy","vert_accuracy","vertical_accuracy","vfov","vibration_x","vibration_y","vibration_z","video_status","vn","vn","vn","voltage","voltage","voltage","voltage","voltage","voltage","voltage","voltage_battery","voltages","vtol_state","vx","vx","vx","vx","vx","vx","vx","vx","vx","vx","vx","vx","vx","vx","vy","vy","vy","vy","vy","vy","vy","vy","vy","vy","vy","vy","vy","vy","vz","vz","vz","vz","vz","vz","vz","vz","vz","vz","vz","vz","vz","vz","weight","width","wind_alt","wind_heading","wind_x","wind_y","wind_z","windspeed","wn","wn","wp_dist","wp_distance","wp_num","wp_num","write_speed","x","x","x","x","x","x","x","x","x","x","x","x","x","x","x","x","x","x","x","x","x_acc","x_pos","x_vel","xacc","xacc","xacc","xacc","xacc","xacc","xacc","xacc","xacc","xacc","xgyro","xgyro","xgyro","xgyro","xgyro","xgyro","xgyro","xgyro","xmag","xmag","xmag","xmag","xmag","xmag","xtrack_error","y","y","y","y","y","y","y","y","y","y","y","y","y","y","y","y","y","y","y","y","y_acc","y_pos","y_vel","yacc","yacc","yacc","yacc","yacc","yacc","yacc","yacc","yacc","yacc","yaw","yaw","yaw","yaw","yaw","yaw","yaw","yaw","yaw","yaw","yaw","yaw","yaw","yaw","yaw","yaw","yaw","yaw","yaw","yaw","yaw_max","yaw_max","yaw_min","yaw_min","yaw_rate","yaw_rate","yaw_rate","yaw_rate","yaw_rate","yaw_rate","yaw_rate","yaw_rudder","yawspeed","yawspeed","yawspeed","yawspeed","yawspeed","yawspeed","ygyro","ygyro","ygyro","ygyro","ygyro","ygyro","ygyro","ygyro","ymag","ymag","ymag","ymag","ymag","ymag","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z_acc","z_pos","z_vel","zacc","zacc","zacc","zacc","zacc","zacc","zacc","zacc","zacc","zacc","zgyro","zgyro","zgyro","zgyro","zgyro","zgyro","zgyro","zgyro","zmag","zmag","zmag","zmag","zmag","zmag","zoom_pos","zoom_step","Bytes","borrow","borrow_mut","from","get_array","get_bytes","get_f32_le","get_f64_le","get_i16_le","get_i24_le","get_i32_le","get_i64_le","get_i8","get_u16_le","get_u24_le","get_u32_le","get_u64_le","get_u8","into","new","remaining_bytes","try_from","try_into","type_id","BytesMut","borrow","borrow_mut","from","into","is_empty","len","new","put_f32_le","put_f64_le","put_i16_le","put_i24_le","put_i32_le","put_i64_le","put_i8","put_slice","put_u16_le","put_u24_le","put_u32_le","put_u64_le","put_u8","remaining","try_from","try_into","type_id","ACTUATOR_CONFIGURATION_3D_MODE_OFF","ACTUATOR_CONFIGURATION_3D_MODE_ON","ACTUATOR_CONFIGURATION_BEEP","ACTUATOR_CONFIGURATION_NONE","ACTUATOR_CONFIGURATION_SPIN_DIRECTION1","ACTUATOR_CONFIGURATION_SPIN_DIRECTION2","ACTUATOR_CONTROL_TARGET","ACTUATOR_CONTROL_TARGET_DATA","ACTUATOR_OUTPUT_FUNCTION_MOTOR1","ACTUATOR_OUTPUT_FUNCTION_MOTOR10","ACTUATOR_OUTPUT_FUNCTION_MOTOR11","ACTUATOR_OUTPUT_FUNCTION_MOTOR12","ACTUATOR_OUTPUT_FUNCTION_MOTOR13","ACTUATOR_OUTPUT_FUNCTION_MOTOR14","ACTUATOR_OUTPUT_FUNCTION_MOTOR15","ACTUATOR_OUTPUT_FUNCTION_MOTOR16","ACTUATOR_OUTPUT_FUNCTION_MOTOR2","ACTUATOR_OUTPUT_FUNCTION_MOTOR3","ACTUATOR_OUTPUT_FUNCTION_MOTOR4","ACTUATOR_OUTPUT_FUNCTION_MOTOR5","ACTUATOR_OUTPUT_FUNCTION_MOTOR6","ACTUATOR_OUTPUT_FUNCTION_MOTOR7","ACTUATOR_OUTPUT_FUNCTION_MOTOR8","ACTUATOR_OUTPUT_FUNCTION_MOTOR9","ACTUATOR_OUTPUT_FUNCTION_NONE","ACTUATOR_OUTPUT_FUNCTION_SERVO1","ACTUATOR_OUTPUT_FUNCTION_SERVO10","ACTUATOR_OUTPUT_FUNCTION_SERVO11","ACTUATOR_OUTPUT_FUNCTION_SERVO12","ACTUATOR_OUTPUT_FUNCTION_SERVO13","ACTUATOR_OUTPUT_FUNCTION_SERVO14","ACTUATOR_OUTPUT_FUNCTION_SERVO15","ACTUATOR_OUTPUT_FUNCTION_SERVO16","ACTUATOR_OUTPUT_FUNCTION_SERVO2","ACTUATOR_OUTPUT_FUNCTION_SERVO3","ACTUATOR_OUTPUT_FUNCTION_SERVO4","ACTUATOR_OUTPUT_FUNCTION_SERVO5","ACTUATOR_OUTPUT_FUNCTION_SERVO6","ACTUATOR_OUTPUT_FUNCTION_SERVO7","ACTUATOR_OUTPUT_FUNCTION_SERVO8","ACTUATOR_OUTPUT_FUNCTION_SERVO9","ACTUATOR_OUTPUT_STATUS","ACTUATOR_OUTPUT_STATUS_DATA","ADSB_ALTITUDE_TYPE_GEOMETRIC","ADSB_ALTITUDE_TYPE_PRESSURE_QNH","ADSB_EMITTER_TYPE_EMERGENCY_SURFACE","ADSB_EMITTER_TYPE_GLIDER","ADSB_EMITTER_TYPE_HEAVY","ADSB_EMITTER_TYPE_HIGHLY_MANUV","ADSB_EMITTER_TYPE_HIGH_VORTEX_LARGE","ADSB_EMITTER_TYPE_LARGE","ADSB_EMITTER_TYPE_LIGHT","ADSB_EMITTER_TYPE_LIGHTER_AIR","ADSB_EMITTER_TYPE_NO_INFO","ADSB_EMITTER_TYPE_PARACHUTE","ADSB_EMITTER_TYPE_POINT_OBSTACLE","ADSB_EMITTER_TYPE_ROTOCRAFT","ADSB_EMITTER_TYPE_SERVICE_SURFACE","ADSB_EMITTER_TYPE_SMALL","ADSB_EMITTER_TYPE_SPACE","ADSB_EMITTER_TYPE_UAV","ADSB_EMITTER_TYPE_ULTRA_LIGHT","ADSB_EMITTER_TYPE_UNASSGINED3","ADSB_EMITTER_TYPE_UNASSIGNED","ADSB_EMITTER_TYPE_UNASSIGNED2","ADSB_FLAGS_BARO_VALID","ADSB_FLAGS_SIMULATED","ADSB_FLAGS_SOURCE_UAT","ADSB_FLAGS_VALID_ALTITUDE","ADSB_FLAGS_VALID_CALLSIGN","ADSB_FLAGS_VALID_COORDS","ADSB_FLAGS_VALID_HEADING","ADSB_FLAGS_VALID_SQUAWK","ADSB_FLAGS_VALID_VELOCITY","ADSB_FLAGS_VERTICAL_VELOCITY_VALID","ADSB_VEHICLE","ADSB_VEHICLE_DATA","AIS_FLAGS_HIGH_VELOCITY","AIS_FLAGS_LARGE_BOW_DIMENSION","AIS_FLAGS_LARGE_PORT_DIMENSION","AIS_FLAGS_LARGE_STARBOARD_DIMENSION","AIS_FLAGS_LARGE_STERN_DIMENSION","AIS_FLAGS_POSITION_ACCURACY","AIS_FLAGS_TURN_RATE_SIGN_ONLY","AIS_FLAGS_VALID_CALLSIGN","AIS_FLAGS_VALID_COG","AIS_FLAGS_VALID_DIMENSIONS","AIS_FLAGS_VALID_NAME","AIS_FLAGS_VALID_TURN_RATE","AIS_FLAGS_VALID_VELOCITY","AIS_NAV_AGROUND","AIS_NAV_AIS_SART","AIS_NAV_ANCHORED","AIS_NAV_DRAUGHT_CONSTRAINED","AIS_NAV_FISHING","AIS_NAV_MOORED","AIS_NAV_RESERVED_1","AIS_NAV_RESERVED_2","AIS_NAV_RESERVED_3","AIS_NAV_RESERVED_HSC","AIS_NAV_RESERVED_WIG","AIS_NAV_RESTRICTED_MANOEUVERABILITY","AIS_NAV_SAILING","AIS_NAV_UNKNOWN","AIS_NAV_UN_COMMANDED","AIS_TYPE_ANTI_POLLUTION","AIS_TYPE_CARGO","AIS_TYPE_CARGO_HAZARDOUS_A","AIS_TYPE_CARGO_HAZARDOUS_B","AIS_TYPE_CARGO_HAZARDOUS_C","AIS_TYPE_CARGO_HAZARDOUS_D","AIS_TYPE_CARGO_RESERVED_1","AIS_TYPE_CARGO_RESERVED_2","AIS_TYPE_CARGO_RESERVED_3","AIS_TYPE_CARGO_RESERVED_4","AIS_TYPE_CARGO_UNKNOWN","AIS_TYPE_DIVING","AIS_TYPE_DREDGING","AIS_TYPE_FISHING","AIS_TYPE_HSC","AIS_TYPE_HSC_HAZARDOUS_A","AIS_TYPE_HSC_HAZARDOUS_B","AIS_TYPE_HSC_HAZARDOUS_C","AIS_TYPE_HSC_HAZARDOUS_D","AIS_TYPE_HSC_RESERVED_1","AIS_TYPE_HSC_RESERVED_2","AIS_TYPE_HSC_RESERVED_3","AIS_TYPE_HSC_RESERVED_4","AIS_TYPE_HSC_UNKNOWN","AIS_TYPE_LAW_ENFORCEMENT","AIS_TYPE_MEDICAL_TRANSPORT","AIS_TYPE_MILITARY","AIS_TYPE_NONECOMBATANT","AIS_TYPE_OTHER","AIS_TYPE_OTHER_HAZARDOUS_A","AIS_TYPE_OTHER_HAZARDOUS_B","AIS_TYPE_OTHER_HAZARDOUS_C","AIS_TYPE_OTHER_HAZARDOUS_D","AIS_TYPE_OTHER_RESERVED_1","AIS_TYPE_OTHER_RESERVED_2","AIS_TYPE_OTHER_RESERVED_3","AIS_TYPE_OTHER_RESERVED_4","AIS_TYPE_OTHER_UNKNOWN","AIS_TYPE_PASSENGER","AIS_TYPE_PASSENGER_HAZARDOUS_A","AIS_TYPE_PASSENGER_HAZARDOUS_B","AIS_TYPE_PASSENGER_HAZARDOUS_C","AIS_TYPE_PASSENGER_HAZARDOUS_D","AIS_TYPE_PASSENGER_RESERVED_1","AIS_TYPE_PASSENGER_RESERVED_2","AIS_TYPE_PASSENGER_RESERVED_3","AIS_TYPE_PASSENGER_RESERVED_4","AIS_TYPE_PASSENGER_UNKNOWN","AIS_TYPE_PILOT","AIS_TYPE_PLEASURE","AIS_TYPE_PORT_TENDER","AIS_TYPE_RESERVED_1","AIS_TYPE_RESERVED_10","AIS_TYPE_RESERVED_11","AIS_TYPE_RESERVED_12","AIS_TYPE_RESERVED_13","AIS_TYPE_RESERVED_14","AIS_TYPE_RESERVED_15","AIS_TYPE_RESERVED_16","AIS_TYPE_RESERVED_17","AIS_TYPE_RESERVED_18","AIS_TYPE_RESERVED_19","AIS_TYPE_RESERVED_2","AIS_TYPE_RESERVED_20","AIS_TYPE_RESERVED_21","AIS_TYPE_RESERVED_3","AIS_TYPE_RESERVED_4","AIS_TYPE_RESERVED_5","AIS_TYPE_RESERVED_6","AIS_TYPE_RESERVED_7","AIS_TYPE_RESERVED_8","AIS_TYPE_RESERVED_9","AIS_TYPE_SAILING","AIS_TYPE_SAR","AIS_TYPE_SPARE_LOCAL_1","AIS_TYPE_SPARE_LOCAL_2","AIS_TYPE_TANKER","AIS_TYPE_TANKER_HAZARDOUS_A","AIS_TYPE_TANKER_HAZARDOUS_B","AIS_TYPE_TANKER_HAZARDOUS_C","AIS_TYPE_TANKER_HAZARDOUS_D","AIS_TYPE_TANKER_RESERVED_1","AIS_TYPE_TANKER_RESERVED_2","AIS_TYPE_TANKER_RESERVED_3","AIS_TYPE_TANKER_RESERVED_4","AIS_TYPE_TANKER_UNKNOWN","AIS_TYPE_TOWING","AIS_TYPE_TOWING_LARGE","AIS_TYPE_TUG","AIS_TYPE_UNKNOWN","AIS_TYPE_WIG","AIS_TYPE_WIG_HAZARDOUS_A","AIS_TYPE_WIG_HAZARDOUS_B","AIS_TYPE_WIG_HAZARDOUS_C","AIS_TYPE_WIG_HAZARDOUS_D","AIS_TYPE_WIG_RESERVED_1","AIS_TYPE_WIG_RESERVED_2","AIS_TYPE_WIG_RESERVED_3","AIS_TYPE_WIG_RESERVED_4","AIS_TYPE_WIG_RESERVED_5","AIS_VESSEL","AIS_VESSEL_DATA","ALTITUDE","ALTITUDE_DATA","ATTITUDE","ATTITUDE_DATA","ATTITUDE_QUATERNION","ATTITUDE_QUATERNION_COV","ATTITUDE_QUATERNION_COV_DATA","ATTITUDE_QUATERNION_DATA","ATTITUDE_TARGET","ATTITUDE_TARGET_DATA","ATTITUDE_TARGET_TYPEMASK_ATTITUDE_IGNORE","ATTITUDE_TARGET_TYPEMASK_BODY_PITCH_RATE_IGNORE","ATTITUDE_TARGET_TYPEMASK_BODY_ROLL_RATE_IGNORE","ATTITUDE_TARGET_TYPEMASK_BODY_YAW_RATE_IGNORE","ATTITUDE_TARGET_TYPEMASK_THROTTLE_IGNORE","ATTITUDE_TARGET_TYPEMASK_THRUST_BODY_SET","ATT_POS_MOCAP","ATT_POS_MOCAP_DATA","AUTH_KEY","AUTH_KEY_DATA","AUTOPILOT_STATE_FOR_GIMBAL_DEVICE","AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA","AUTOPILOT_VERSION","AUTOPILOT_VERSION_DATA","AUTOTUNE_AXIS_DEFAULT","AUTOTUNE_AXIS_PITCH","AUTOTUNE_AXIS_ROLL","AUTOTUNE_AXIS_YAW","ActuatorConfiguration","ActuatorOutputFunction","AdsbAltitudeType","AdsbEmitterType","AdsbFlags","AisFlags","AisNavStatus","AisType","AttitudeTargetTypemask","AutotuneAxis","BATTERY_FAULT_INCOMPATIBLE_CELLS_CONFIGURATION","BATTERY_STATUS","BATTERY_STATUS_DATA","BUTTON_CHANGE","BUTTON_CHANGE_DATA","CAMERA_CAPTURE_STATUS","CAMERA_CAPTURE_STATUS_DATA","CAMERA_CAP_FLAGS_CAN_CAPTURE_IMAGE_IN_VIDEO_MODE","CAMERA_CAP_FLAGS_CAN_CAPTURE_VIDEO_IN_IMAGE_MODE","CAMERA_CAP_FLAGS_CAPTURE_IMAGE","CAMERA_CAP_FLAGS_CAPTURE_VIDEO","CAMERA_CAP_FLAGS_HAS_BASIC_FOCUS","CAMERA_CAP_FLAGS_HAS_BASIC_ZOOM","CAMERA_CAP_FLAGS_HAS_IMAGE_SURVEY_MODE","CAMERA_CAP_FLAGS_HAS_MODES","CAMERA_CAP_FLAGS_HAS_TRACKING_GEO_STATUS","CAMERA_CAP_FLAGS_HAS_TRACKING_POINT","CAMERA_CAP_FLAGS_HAS_TRACKING_RECTANGLE","CAMERA_CAP_FLAGS_HAS_VIDEO_STREAM","CAMERA_FOV_STATUS","CAMERA_FOV_STATUS_DATA","CAMERA_IMAGE_CAPTURED","CAMERA_IMAGE_CAPTURED_DATA","CAMERA_INFORMATION","CAMERA_INFORMATION_DATA","CAMERA_MODE_IMAGE","CAMERA_MODE_IMAGE_SURVEY","CAMERA_MODE_VIDEO","CAMERA_SETTINGS","CAMERA_SETTINGS_DATA","CAMERA_TRACKING_GEO_STATUS","CAMERA_TRACKING_GEO_STATUS_DATA","CAMERA_TRACKING_IMAGE_STATUS","CAMERA_TRACKING_IMAGE_STATUS_DATA","CAMERA_TRACKING_MODE_NONE","CAMERA_TRACKING_MODE_POINT","CAMERA_TRACKING_MODE_RECTANGLE","CAMERA_TRACKING_STATUS_FLAGS_ACTIVE","CAMERA_TRACKING_STATUS_FLAGS_ERROR","CAMERA_TRACKING_STATUS_FLAGS_IDLE","CAMERA_TRACKING_TARGET_DATA_EMBEDDED","CAMERA_TRACKING_TARGET_DATA_IN_STATUS","CAMERA_TRACKING_TARGET_DATA_NONE","CAMERA_TRACKING_TARGET_DATA_RENDERED","CAMERA_TRIGGER","CAMERA_TRIGGER_DATA","CANFD_FRAME","CANFD_FRAME_DATA","CAN_FILTER_ADD","CAN_FILTER_MODIFY","CAN_FILTER_MODIFY_DATA","CAN_FILTER_REMOVE","CAN_FILTER_REPLACE","CAN_FRAME","CAN_FRAME_DATA","CELLULAR_CONFIG","CELLULAR_CONFIG_BLOCKED_PUK_REQUIRED","CELLULAR_CONFIG_DATA","CELLULAR_CONFIG_RESPONSE_ACCEPTED","CELLULAR_CONFIG_RESPONSE_APN_ERROR","CELLULAR_CONFIG_RESPONSE_PIN_ERROR","CELLULAR_CONFIG_RESPONSE_REJECTED","CELLULAR_NETWORK_FAILED_REASON_NONE","CELLULAR_NETWORK_FAILED_REASON_SIM_ERROR","CELLULAR_NETWORK_FAILED_REASON_SIM_MISSING","CELLULAR_NETWORK_FAILED_REASON_UNKNOWN","CELLULAR_NETWORK_RADIO_TYPE_CDMA","CELLULAR_NETWORK_RADIO_TYPE_GSM","CELLULAR_NETWORK_RADIO_TYPE_LTE","CELLULAR_NETWORK_RADIO_TYPE_NONE","CELLULAR_NETWORK_RADIO_TYPE_WCDMA","CELLULAR_STATUS","CELLULAR_STATUS_DATA","CELLULAR_STATUS_FLAG_CONNECTED","CELLULAR_STATUS_FLAG_CONNECTING","CELLULAR_STATUS_FLAG_DISABLED","CELLULAR_STATUS_FLAG_DISABLING","CELLULAR_STATUS_FLAG_DISCONNECTING","CELLULAR_STATUS_FLAG_ENABLED","CELLULAR_STATUS_FLAG_ENABLING","CELLULAR_STATUS_FLAG_FAILED","CELLULAR_STATUS_FLAG_INITIALIZING","CELLULAR_STATUS_FLAG_LOCKED","CELLULAR_STATUS_FLAG_REGISTERED","CELLULAR_STATUS_FLAG_SEARCHING","CELLULAR_STATUS_FLAG_UNKNOWN","CHANGE_OPERATOR_CONTROL","CHANGE_OPERATOR_CONTROL_ACK","CHANGE_OPERATOR_CONTROL_ACK_DATA","CHANGE_OPERATOR_CONTROL_DATA","COG","COLLISION","COLLISION_DATA","COMMAND_ACK","COMMAND_ACK_DATA","COMMAND_CANCEL","COMMAND_CANCEL_DATA","COMMAND_INT","COMMAND_INT_DATA","COMMAND_LONG","COMMAND_LONG_DATA","COMPONENT_INFORMATION","COMPONENT_INFORMATION_DATA","COMPONENT_METADATA","COMPONENT_METADATA_DATA","COMP_METADATA_TYPE_ACTUATORS","COMP_METADATA_TYPE_COMMANDS","COMP_METADATA_TYPE_EVENTS","COMP_METADATA_TYPE_GENERAL","COMP_METADATA_TYPE_PARAMETER","COMP_METADATA_TYPE_PERIPHERALS","CONTROL_SYSTEM_STATE","CONTROL_SYSTEM_STATE_DATA","CURRENT_EVENT_SEQUENCE","CURRENT_EVENT_SEQUENCE_DATA","CameraCapFlags","CameraMode","CameraTrackingMode","CameraTrackingStatusFlags","CameraTrackingTargetData","CameraZoomType","CanFilterOp","CellularConfigResponse","CellularNetworkFailedReason","CellularNetworkRadioType","CellularStatusFlag","CompMetadataType","DATA_STREAM","DATA_STREAM_DATA","DATA_TRANSMISSION_HANDSHAKE","DATA_TRANSMISSION_HANDSHAKE_DATA","DEBUG","DEBUG_DATA","DEBUG_FLOAT_ARRAY","DEBUG_FLOAT_ARRAY_DATA","DEBUG_VECT","DEBUG_VECT_DATA","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DISTANCE_SENSOR","DISTANCE_SENSOR_DATA","EFI_STATUS","EFI_STATUS_DATA","ENCAPSULATED_DATA","ENCAPSULATED_DATA_DATA","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ESC_CONNECTION_TYPE_CAN","ESC_CONNECTION_TYPE_DSHOT","ESC_CONNECTION_TYPE_I2C","ESC_CONNECTION_TYPE_ONESHOT","ESC_CONNECTION_TYPE_PPM","ESC_CONNECTION_TYPE_SERIAL","ESC_FAILURE_GENERIC","ESC_FAILURE_INCONSISTENT_CMD","ESC_FAILURE_MOTOR_STUCK","ESC_FAILURE_NONE","ESC_FAILURE_OVER_CURRENT","ESC_FAILURE_OVER_RPM","ESC_FAILURE_OVER_TEMPERATURE","ESC_FAILURE_OVER_VOLTAGE","ESC_INFO","ESC_INFO_DATA","ESC_STATUS","ESC_STATUS_DATA","ESTIMATOR_ACCEL_ERROR","ESTIMATOR_ATTITUDE","ESTIMATOR_CONST_POS_MODE","ESTIMATOR_GPS_GLITCH","ESTIMATOR_POS_HORIZ_ABS","ESTIMATOR_POS_HORIZ_REL","ESTIMATOR_POS_VERT_ABS","ESTIMATOR_POS_VERT_AGL","ESTIMATOR_PRED_POS_HORIZ_ABS","ESTIMATOR_PRED_POS_HORIZ_REL","ESTIMATOR_STATUS","ESTIMATOR_STATUS_DATA","ESTIMATOR_VELOCITY_HORIZ","ESTIMATOR_VELOCITY_VERT","EVENT","EVENT_DATA","EXTENDED_SYS_STATE","EXTENDED_SYS_STATE_DATA","EscConnectionType","EscFailureFlags","EstimatorStatusFlags","FAILURE_TYPE_DELAYED","FAILURE_TYPE_GARBAGE","FAILURE_TYPE_INTERMITTENT","FAILURE_TYPE_OFF","FAILURE_TYPE_OK","FAILURE_TYPE_SLOW","FAILURE_TYPE_STUCK","FAILURE_TYPE_WRONG","FAILURE_UNIT_SENSOR_ACCEL","FAILURE_UNIT_SENSOR_AIRSPEED","FAILURE_UNIT_SENSOR_BARO","FAILURE_UNIT_SENSOR_DISTANCE_SENSOR","FAILURE_UNIT_SENSOR_GPS","FAILURE_UNIT_SENSOR_GYRO","FAILURE_UNIT_SENSOR_MAG","FAILURE_UNIT_SENSOR_OPTICAL_FLOW","FAILURE_UNIT_SENSOR_VIO","FAILURE_UNIT_SYSTEM_AVOIDANCE","FAILURE_UNIT_SYSTEM_BATTERY","FAILURE_UNIT_SYSTEM_MAVLINK_SIGNAL","FAILURE_UNIT_SYSTEM_MOTOR","FAILURE_UNIT_SYSTEM_RC_SIGNAL","FAILURE_UNIT_SYSTEM_SERVO","FENCE_ACTION_GUIDED","FENCE_ACTION_GUIDED_THR_PASS","FENCE_ACTION_HOLD","FENCE_ACTION_LAND","FENCE_ACTION_NONE","FENCE_ACTION_REPORT","FENCE_ACTION_RTL","FENCE_ACTION_TERMINATE","FENCE_BREACH_BOUNDARY","FENCE_BREACH_MAXALT","FENCE_BREACH_MINALT","FENCE_BREACH_NONE","FENCE_MITIGATE_NONE","FENCE_MITIGATE_UNKNOWN","FENCE_MITIGATE_VEL_LIMIT","FENCE_STATUS","FENCE_STATUS_DATA","FILE_TRANSFER_PROTOCOL","FILE_TRANSFER_PROTOCOL_DATA","FIRMWARE_VERSION_TYPE_ALPHA","FIRMWARE_VERSION_TYPE_BETA","FIRMWARE_VERSION_TYPE_DEV","FIRMWARE_VERSION_TYPE_OFFICIAL","FIRMWARE_VERSION_TYPE_RC","FLIGHT_INFORMATION","FLIGHT_INFORMATION_DATA","FOCUS_TYPE_AUTO","FOCUS_TYPE_AUTO_CONTINUOUS","FOCUS_TYPE_AUTO_SINGLE","FOCUS_TYPE_CONTINUOUS","FOCUS_TYPE_METERS","FOCUS_TYPE_RANGE","FOCUS_TYPE_STEP","FOLLOW_TARGET","FOLLOW_TARGET_DATA","FailureType","FailureUnit","FenceAction","FenceBreach","FenceMitigate","FirmwareVersionType","GENERATOR_STATUS","GENERATOR_STATUS_DATA","GIMBAL_DEVICE_ATTITUDE_STATUS","GIMBAL_DEVICE_ATTITUDE_STATUS_DATA","GIMBAL_DEVICE_CAP_FLAGS_HAS_NEUTRAL","GIMBAL_DEVICE_CAP_FLAGS_HAS_PITCH_AXIS","GIMBAL_DEVICE_CAP_FLAGS_HAS_PITCH_FOLLOW","GIMBAL_DEVICE_CAP_FLAGS_HAS_PITCH_LOCK","GIMBAL_DEVICE_CAP_FLAGS_HAS_RC_INPUTS","GIMBAL_DEVICE_CAP_FLAGS_HAS_RETRACT","GIMBAL_DEVICE_CAP_FLAGS_HAS_ROLL_AXIS","GIMBAL_DEVICE_CAP_FLAGS_HAS_ROLL_FOLLOW","GIMBAL_DEVICE_CAP_FLAGS_HAS_ROLL_LOCK","GIMBAL_DEVICE_CAP_FLAGS_HAS_YAW_AXIS","GIMBAL_DEVICE_CAP_FLAGS_HAS_YAW_FOLLOW","GIMBAL_DEVICE_CAP_FLAGS_HAS_YAW_LOCK","GIMBAL_DEVICE_CAP_FLAGS_SUPPORTS_INFINITE_YAW","GIMBAL_DEVICE_CAP_FLAGS_SUPPORTS_YAW_IN_EARTH_FRAME","GIMBAL_DEVICE_ERROR_FLAGS_AT_PITCH_LIMIT","GIMBAL_DEVICE_ERROR_FLAGS_AT_ROLL_LIMIT","GIMBAL_DEVICE_ERROR_FLAGS_AT_YAW_LIMIT","GIMBAL_DEVICE_ERROR_FLAGS_CALIBRATION_RUNNING","GIMBAL_DEVICE_ERROR_FLAGS_COMMS_ERROR","GIMBAL_DEVICE_ERROR_FLAGS_ENCODER_ERROR","GIMBAL_DEVICE_ERROR_FLAGS_MOTOR_ERROR","GIMBAL_DEVICE_ERROR_FLAGS_NO_MANAGER","GIMBAL_DEVICE_ERROR_FLAGS_POWER_ERROR","GIMBAL_DEVICE_ERROR_FLAGS_SOFTWARE_ERROR","GIMBAL_DEVICE_FLAGS_ACCEPTS_YAW_IN_EARTH_FRAME","GIMBAL_DEVICE_FLAGS_NEUTRAL","GIMBAL_DEVICE_FLAGS_PITCH_LOCK","GIMBAL_DEVICE_FLAGS_RC_EXCLUSIVE","GIMBAL_DEVICE_FLAGS_RC_MIXED","GIMBAL_DEVICE_FLAGS_RETRACT","GIMBAL_DEVICE_FLAGS_ROLL_LOCK","GIMBAL_DEVICE_FLAGS_YAW_IN_EARTH_FRAME","GIMBAL_DEVICE_FLAGS_YAW_IN_VEHICLE_FRAME","GIMBAL_DEVICE_FLAGS_YAW_LOCK","GIMBAL_DEVICE_INFORMATION","GIMBAL_DEVICE_INFORMATION_DATA","GIMBAL_DEVICE_SET_ATTITUDE","GIMBAL_DEVICE_SET_ATTITUDE_DATA","GIMBAL_MANAGER_CAP_FLAGS_CAN_POINT_LOCATION_GLOBAL","GIMBAL_MANAGER_CAP_FLAGS_CAN_POINT_LOCATION_LOCAL","GIMBAL_MANAGER_CAP_FLAGS_HAS_NEUTRAL","GIMBAL_MANAGER_CAP_FLAGS_HAS_PITCH_AXIS","GIMBAL_MANAGER_CAP_FLAGS_HAS_PITCH_FOLLOW","GIMBAL_MANAGER_CAP_FLAGS_HAS_PITCH_LOCK","GIMBAL_MANAGER_CAP_FLAGS_HAS_RC_INPUTS","GIMBAL_MANAGER_CAP_FLAGS_HAS_RETRACT","GIMBAL_MANAGER_CAP_FLAGS_HAS_ROLL_AXIS","GIMBAL_MANAGER_CAP_FLAGS_HAS_ROLL_FOLLOW","GIMBAL_MANAGER_CAP_FLAGS_HAS_ROLL_LOCK","GIMBAL_MANAGER_CAP_FLAGS_HAS_YAW_AXIS","GIMBAL_MANAGER_CAP_FLAGS_HAS_YAW_FOLLOW","GIMBAL_MANAGER_CAP_FLAGS_HAS_YAW_LOCK","GIMBAL_MANAGER_CAP_FLAGS_SUPPORTS_INFINITE_YAW","GIMBAL_MANAGER_CAP_FLAGS_SUPPORTS_YAW_IN_EARTH_FRAME","GIMBAL_MANAGER_FLAGS_ACCEPTS_YAW_IN_EARTH_FRAME","GIMBAL_MANAGER_FLAGS_NEUTRAL","GIMBAL_MANAGER_FLAGS_PITCH_LOCK","GIMBAL_MANAGER_FLAGS_RC_EXCLUSIVE","GIMBAL_MANAGER_FLAGS_RC_MIXED","GIMBAL_MANAGER_FLAGS_RETRACT","GIMBAL_MANAGER_FLAGS_ROLL_LOCK","GIMBAL_MANAGER_FLAGS_YAW_IN_EARTH_FRAME","GIMBAL_MANAGER_FLAGS_YAW_IN_VEHICLE_FRAME","GIMBAL_MANAGER_FLAGS_YAW_LOCK","GIMBAL_MANAGER_INFORMATION","GIMBAL_MANAGER_INFORMATION_DATA","GIMBAL_MANAGER_SET_ATTITUDE","GIMBAL_MANAGER_SET_ATTITUDE_DATA","GIMBAL_MANAGER_SET_MANUAL_CONTROL","GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA","GIMBAL_MANAGER_SET_PITCHYAW","GIMBAL_MANAGER_SET_PITCHYAW_DATA","GIMBAL_MANAGER_STATUS","GIMBAL_MANAGER_STATUS_DATA","GLOBAL_POSITION_INT","GLOBAL_POSITION_INT_COV","GLOBAL_POSITION_INT_COV_DATA","GLOBAL_POSITION_INT_DATA","GLOBAL_VISION_POSITION_ESTIMATE","GLOBAL_VISION_POSITION_ESTIMATE_DATA","GPS2_RAW","GPS2_RAW_DATA","GPS2_RTK","GPS2_RTK_DATA","GPS_FIX_TYPE_2D_FIX","GPS_FIX_TYPE_3D_FIX","GPS_FIX_TYPE_DGPS","GPS_FIX_TYPE_NO_FIX","GPS_FIX_TYPE_NO_GPS","GPS_FIX_TYPE_PPP","GPS_FIX_TYPE_RTK_FIXED","GPS_FIX_TYPE_RTK_FLOAT","GPS_FIX_TYPE_STATIC","GPS_GLOBAL_ORIGIN","GPS_GLOBAL_ORIGIN_DATA","GPS_INJECT_DATA","GPS_INJECT_DATA_DATA","GPS_INPUT","GPS_INPUT_DATA","GPS_INPUT_IGNORE_FLAG_ALT","GPS_INPUT_IGNORE_FLAG_HDOP","GPS_INPUT_IGNORE_FLAG_HORIZONTAL_ACCURACY","GPS_INPUT_IGNORE_FLAG_SPEED_ACCURACY","GPS_INPUT_IGNORE_FLAG_VDOP","GPS_INPUT_IGNORE_FLAG_VEL_HORIZ","GPS_INPUT_IGNORE_FLAG_VEL_VERT","GPS_INPUT_IGNORE_FLAG_VERTICAL_ACCURACY","GPS_RAW_INT","GPS_RAW_INT_DATA","GPS_RTCM_DATA","GPS_RTCM_DATA_DATA","GPS_RTK","GPS_RTK_DATA","GPS_STATUS","GPS_STATUS_DATA","GRIPPER_ACTION_GRAB","GRIPPER_ACTION_RELEASE","GimbalDeviceCapFlags","GimbalDeviceErrorFlags","GimbalDeviceFlags","GimbalManagerCapFlags","GimbalManagerFlags","GpsFixType","GpsInputIgnoreFlags","GripperActions","HEARTBEAT","HEARTBEAT_DATA","HIGHRES_IMU","HIGHRES_IMU_DATA","HIGHRES_IMU_UPDATED_ABS_PRESSURE","HIGHRES_IMU_UPDATED_ALL","HIGHRES_IMU_UPDATED_DIFF_PRESSURE","HIGHRES_IMU_UPDATED_NONE","HIGHRES_IMU_UPDATED_PRESSURE_ALT","HIGHRES_IMU_UPDATED_TEMPERATURE","HIGHRES_IMU_UPDATED_XACC","HIGHRES_IMU_UPDATED_XGYRO","HIGHRES_IMU_UPDATED_XMAG","HIGHRES_IMU_UPDATED_YACC","HIGHRES_IMU_UPDATED_YGYRO","HIGHRES_IMU_UPDATED_YMAG","HIGHRES_IMU_UPDATED_ZACC","HIGHRES_IMU_UPDATED_ZGYRO","HIGHRES_IMU_UPDATED_ZMAG","HIGH_LATENCY","HIGH_LATENCY2","HIGH_LATENCY2_DATA","HIGH_LATENCY_DATA","HIL_ACTUATOR_CONTROLS","HIL_ACTUATOR_CONTROLS_DATA","HIL_CONTROLS","HIL_CONTROLS_DATA","HIL_GPS","HIL_GPS_DATA","HIL_OPTICAL_FLOW","HIL_OPTICAL_FLOW_DATA","HIL_RC_INPUTS_RAW","HIL_RC_INPUTS_RAW_DATA","HIL_SENSOR","HIL_SENSOR_DATA","HIL_SENSOR_UPDATED_ABS_PRESSURE","HIL_SENSOR_UPDATED_DIFF_PRESSURE","HIL_SENSOR_UPDATED_NONE","HIL_SENSOR_UPDATED_PRESSURE_ALT","HIL_SENSOR_UPDATED_RESET","HIL_SENSOR_UPDATED_TEMPERATURE","HIL_SENSOR_UPDATED_XACC","HIL_SENSOR_UPDATED_XGYRO","HIL_SENSOR_UPDATED_XMAG","HIL_SENSOR_UPDATED_YACC","HIL_SENSOR_UPDATED_YGYRO","HIL_SENSOR_UPDATED_YMAG","HIL_SENSOR_UPDATED_ZACC","HIL_SENSOR_UPDATED_ZGYRO","HIL_SENSOR_UPDATED_ZMAG","HIL_STATE","HIL_STATE_DATA","HIL_STATE_QUATERNION","HIL_STATE_QUATERNION_DATA","HL_FAILURE_FLAG_3D_ACCEL","HL_FAILURE_FLAG_3D_GYRO","HL_FAILURE_FLAG_3D_MAG","HL_FAILURE_FLAG_ABSOLUTE_PRESSURE","HL_FAILURE_FLAG_BATTERY","HL_FAILURE_FLAG_DIFFERENTIAL_PRESSURE","HL_FAILURE_FLAG_ENGINE","HL_FAILURE_FLAG_ESTIMATOR","HL_FAILURE_FLAG_GEOFENCE","HL_FAILURE_FLAG_GPS","HL_FAILURE_FLAG_MISSION","HL_FAILURE_FLAG_OFFBOARD_LINK","HL_FAILURE_FLAG_RC_RECEIVER","HL_FAILURE_FLAG_TERRAIN","HOME_POSITION","HOME_POSITION_DATA","HYGROMETER_SENSOR","HYGROMETER_SENSOR_DATA","HighresImuUpdatedFlags","HilSensorUpdatedFlags","HlFailureFlag","ICAO_address","ISBD_LINK_STATUS","ISBD_LINK_STATUS_DATA","LANDING_TARGET","LANDING_TARGET_DATA","LANDING_TARGET_TYPE_LIGHT_BEACON","LANDING_TARGET_TYPE_RADIO_BEACON","LANDING_TARGET_TYPE_VISION_FIDUCIAL","LANDING_TARGET_TYPE_VISION_OTHER","LINK_NODE_STATUS","LINK_NODE_STATUS_DATA","LOCAL_POSITION_NED","LOCAL_POSITION_NED_COV","LOCAL_POSITION_NED_COV_DATA","LOCAL_POSITION_NED_DATA","LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET","LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA","LOGGING_ACK","LOGGING_ACK_DATA","LOGGING_DATA","LOGGING_DATA_ACKED","LOGGING_DATA_ACKED_DATA","LOGGING_DATA_DATA","LOG_DATA","LOG_DATA_DATA","LOG_ENTRY","LOG_ENTRY_DATA","LOG_ERASE","LOG_ERASE_DATA","LOG_REQUEST_DATA","LOG_REQUEST_DATA_DATA","LOG_REQUEST_END","LOG_REQUEST_END_DATA","LOG_REQUEST_LIST","LOG_REQUEST_LIST_DATA","LandingTargetType","MAG_CAL_BAD_ORIENTATION","MAG_CAL_BAD_RADIUS","MAG_CAL_FAILED","MAG_CAL_NOT_STARTED","MAG_CAL_REPORT","MAG_CAL_REPORT_DATA","MAG_CAL_RUNNING_STEP_ONE","MAG_CAL_RUNNING_STEP_TWO","MAG_CAL_SUCCESS","MAG_CAL_WAITING_TO_START","MANUAL_CONTROL","MANUAL_CONTROL_DATA","MANUAL_SETPOINT","MANUAL_SETPOINT_DATA","MAVLINK_DATA_STREAM_IMG_BMP","MAVLINK_DATA_STREAM_IMG_JPEG","MAVLINK_DATA_STREAM_IMG_PGM","MAVLINK_DATA_STREAM_IMG_PNG","MAVLINK_DATA_STREAM_IMG_RAW32U","MAVLINK_DATA_STREAM_IMG_RAW8U","MAV_ARM_AUTH_DENIED_REASON_AIRSPACE_IN_USE","MAV_ARM_AUTH_DENIED_REASON_BAD_WEATHER","MAV_ARM_AUTH_DENIED_REASON_GENERIC","MAV_ARM_AUTH_DENIED_REASON_INVALID_WAYPOINT","MAV_ARM_AUTH_DENIED_REASON_NONE","MAV_ARM_AUTH_DENIED_REASON_TIMEOUT","MAV_AUTOPILOT_AEROB","MAV_AUTOPILOT_AIRRAILS","MAV_AUTOPILOT_ARDUPILOTMEGA","MAV_AUTOPILOT_ARMAZILA","MAV_AUTOPILOT_ASLUAV","MAV_AUTOPILOT_AUTOQUAD","MAV_AUTOPILOT_FP","MAV_AUTOPILOT_GENERIC","MAV_AUTOPILOT_GENERIC_MISSION_FULL","MAV_AUTOPILOT_GENERIC_WAYPOINTS_AND_SIMPLE_NAVIGATION_ONLY","MAV_AUTOPILOT_GENERIC_WAYPOINTS_ONLY","MAV_AUTOPILOT_INVALID","MAV_AUTOPILOT_OPENPILOT","MAV_AUTOPILOT_PPZ","MAV_AUTOPILOT_PX4","MAV_AUTOPILOT_REFLEX","MAV_AUTOPILOT_RESERVED","MAV_AUTOPILOT_SLUGS","MAV_AUTOPILOT_SMACCMPILOT","MAV_AUTOPILOT_SMARTAP","MAV_AUTOPILOT_UDB","MAV_BATTERY_CHARGE_STATE_CHARGING","MAV_BATTERY_CHARGE_STATE_CRITICAL","MAV_BATTERY_CHARGE_STATE_EMERGENCY","MAV_BATTERY_CHARGE_STATE_FAILED","MAV_BATTERY_CHARGE_STATE_LOW","MAV_BATTERY_CHARGE_STATE_OK","MAV_BATTERY_CHARGE_STATE_UNDEFINED","MAV_BATTERY_CHARGE_STATE_UNHEALTHY","MAV_BATTERY_FAULT_CELL_FAIL","MAV_BATTERY_FAULT_DEEP_DISCHARGE","MAV_BATTERY_FAULT_INCOMPATIBLE_FIRMWARE","MAV_BATTERY_FAULT_INCOMPATIBLE_VOLTAGE","MAV_BATTERY_FAULT_OVER_CURRENT","MAV_BATTERY_FAULT_OVER_TEMPERATURE","MAV_BATTERY_FAULT_SPIKES","MAV_BATTERY_FAULT_UNDER_TEMPERATURE","MAV_BATTERY_FUNCTION_ALL","MAV_BATTERY_FUNCTION_AVIONICS","MAV_BATTERY_FUNCTION_PAYLOAD","MAV_BATTERY_FUNCTION_PROPULSION","MAV_BATTERY_FUNCTION_UNKNOWN","MAV_BATTERY_MODE_AUTO_DISCHARGING","MAV_BATTERY_MODE_HOT_SWAP","MAV_BATTERY_MODE_UNKNOWN","MAV_BATTERY_TYPE_LIFE","MAV_BATTERY_TYPE_LION","MAV_BATTERY_TYPE_LIPO","MAV_BATTERY_TYPE_NIMH","MAV_BATTERY_TYPE_UNKNOWN","MAV_CMD_ACK_ERR_ACCESS_DENIED","MAV_CMD_ACK_ERR_COORDINATES_OUT_OF_RANGE","MAV_CMD_ACK_ERR_COORDINATE_FRAME_NOT_SUPPORTED","MAV_CMD_ACK_ERR_FAIL","MAV_CMD_ACK_ERR_NOT_SUPPORTED","MAV_CMD_ACK_ERR_X_LAT_OUT_OF_RANGE","MAV_CMD_ACK_ERR_Y_LON_OUT_OF_RANGE","MAV_CMD_ACK_ERR_Z_ALT_OUT_OF_RANGE","MAV_CMD_ACK_OK","MAV_CMD_ACTUATOR_TEST","MAV_CMD_AIRFRAME_CONFIGURATION","MAV_CMD_ARM_AUTHORIZATION_REQUEST","MAV_CMD_CAMERA_STOP_TRACKING","MAV_CMD_CAMERA_TRACK_POINT","MAV_CMD_CAMERA_TRACK_RECTANGLE","MAV_CMD_CAN_FORWARD","MAV_CMD_COMPONENT_ARM_DISARM","MAV_CMD_CONDITION_CHANGE_ALT","MAV_CMD_CONDITION_DELAY","MAV_CMD_CONDITION_DISTANCE","MAV_CMD_CONDITION_GATE","MAV_CMD_CONDITION_LAST","MAV_CMD_CONDITION_YAW","MAV_CMD_CONFIGURE_ACTUATOR","MAV_CMD_CONTROL_HIGH_LATENCY","MAV_CMD_DO_ADSB_OUT_IDENT","MAV_CMD_DO_AUTOTUNE_ENABLE","MAV_CMD_DO_CHANGE_ALTITUDE","MAV_CMD_DO_CHANGE_SPEED","MAV_CMD_DO_CONTROL_VIDEO","MAV_CMD_DO_DIGICAM_CONFIGURE","MAV_CMD_DO_DIGICAM_CONTROL","MAV_CMD_DO_ENGINE_CONTROL","MAV_CMD_DO_FENCE_ENABLE","MAV_CMD_DO_FLIGHTTERMINATION","MAV_CMD_DO_FOLLOW","MAV_CMD_DO_FOLLOW_REPOSITION","MAV_CMD_DO_GIMBAL_MANAGER_CONFIGURE","MAV_CMD_DO_GIMBAL_MANAGER_PITCHYAW","MAV_CMD_DO_GO_AROUND","MAV_CMD_DO_GRIPPER","MAV_CMD_DO_GUIDED_LIMITS","MAV_CMD_DO_GUIDED_MASTER","MAV_CMD_DO_INVERTED_FLIGHT","MAV_CMD_DO_JUMP","MAV_CMD_DO_JUMP_TAG","MAV_CMD_DO_LAND_START","MAV_CMD_DO_LAST","MAV_CMD_DO_MOTOR_TEST","MAV_CMD_DO_MOUNT_CONFIGURE","MAV_CMD_DO_MOUNT_CONTROL","MAV_CMD_DO_MOUNT_CONTROL_QUAT","MAV_CMD_DO_ORBIT","MAV_CMD_DO_PARACHUTE","MAV_CMD_DO_PAUSE_CONTINUE","MAV_CMD_DO_RALLY_LAND","MAV_CMD_DO_REPEAT_RELAY","MAV_CMD_DO_REPEAT_SERVO","MAV_CMD_DO_REPOSITION","MAV_CMD_DO_SET_ACTUATOR","MAV_CMD_DO_SET_CAM_TRIGG_DIST","MAV_CMD_DO_SET_CAM_TRIGG_INTERVAL","MAV_CMD_DO_SET_HOME","MAV_CMD_DO_SET_MISSION_CURRENT","MAV_CMD_DO_SET_MODE","MAV_CMD_DO_SET_PARAMETER","MAV_CMD_DO_SET_RELAY","MAV_CMD_DO_SET_REVERSE","MAV_CMD_DO_SET_ROI","MAV_CMD_DO_SET_ROI_LOCATION","MAV_CMD_DO_SET_ROI_NONE","MAV_CMD_DO_SET_ROI_SYSID","MAV_CMD_DO_SET_ROI_WPNEXT_OFFSET","MAV_CMD_DO_SET_SERVO","MAV_CMD_DO_TRIGGER_CONTROL","MAV_CMD_DO_VTOL_TRANSITION","MAV_CMD_DO_WINCH","MAV_CMD_FIXED_MAG_CAL_YAW","MAV_CMD_GET_HOME_POSITION","MAV_CMD_GET_MESSAGE_INTERVAL","MAV_CMD_ILLUMINATOR_ON_OFF","MAV_CMD_IMAGE_START_CAPTURE","MAV_CMD_IMAGE_STOP_CAPTURE","MAV_CMD_INJECT_FAILURE","MAV_CMD_JUMP_TAG","MAV_CMD_LOGGING_START","MAV_CMD_LOGGING_STOP","MAV_CMD_MISSION_START","MAV_CMD_NAV_CONTINUE_AND_CHANGE_ALT","MAV_CMD_NAV_DELAY","MAV_CMD_NAV_FENCE_CIRCLE_EXCLUSION","MAV_CMD_NAV_FENCE_CIRCLE_INCLUSION","MAV_CMD_NAV_FENCE_POLYGON_VERTEX_EXCLUSION","MAV_CMD_NAV_FENCE_POLYGON_VERTEX_INCLUSION","MAV_CMD_NAV_FENCE_RETURN_POINT","MAV_CMD_NAV_FOLLOW","MAV_CMD_NAV_GUIDED_ENABLE","MAV_CMD_NAV_LAND","MAV_CMD_NAV_LAND_LOCAL","MAV_CMD_NAV_LAST","MAV_CMD_NAV_LOITER_TIME","MAV_CMD_NAV_LOITER_TO_ALT","MAV_CMD_NAV_LOITER_TURNS","MAV_CMD_NAV_LOITER_UNLIM","MAV_CMD_NAV_PATHPLANNING","MAV_CMD_NAV_PAYLOAD_PLACE","MAV_CMD_NAV_RALLY_POINT","MAV_CMD_NAV_RETURN_TO_LAUNCH","MAV_CMD_NAV_ROI","MAV_CMD_NAV_SET_YAW_SPEED","MAV_CMD_NAV_SPLINE_WAYPOINT","MAV_CMD_NAV_TAKEOFF","MAV_CMD_NAV_TAKEOFF_LOCAL","MAV_CMD_NAV_VTOL_LAND","MAV_CMD_NAV_VTOL_TAKEOFF","MAV_CMD_NAV_WAYPOINT","MAV_CMD_OBLIQUE_SURVEY","MAV_CMD_OVERRIDE_GOTO","MAV_CMD_PANORAMA_CREATE","MAV_CMD_PAYLOAD_CONTROL_DEPLOY","MAV_CMD_PAYLOAD_PREPARE_DEPLOY","MAV_CMD_PREFLIGHT_CALIBRATION","MAV_CMD_PREFLIGHT_REBOOT_SHUTDOWN","MAV_CMD_PREFLIGHT_SET_SENSOR_OFFSETS","MAV_CMD_PREFLIGHT_STORAGE","MAV_CMD_PREFLIGHT_UAVCAN","MAV_CMD_REQUEST_AUTOPILOT_CAPABILITIES","MAV_CMD_REQUEST_CAMERA_CAPTURE_STATUS","MAV_CMD_REQUEST_CAMERA_IMAGE_CAPTURE","MAV_CMD_REQUEST_CAMERA_INFORMATION","MAV_CMD_REQUEST_CAMERA_SETTINGS","MAV_CMD_REQUEST_FLIGHT_INFORMATION","MAV_CMD_REQUEST_MESSAGE","MAV_CMD_REQUEST_PROTOCOL_VERSION","MAV_CMD_REQUEST_STORAGE_INFORMATION","MAV_CMD_REQUEST_VIDEO_STREAM_INFORMATION","MAV_CMD_REQUEST_VIDEO_STREAM_STATUS","MAV_CMD_RESET_CAMERA_SETTINGS","MAV_CMD_RUN_PREARM_CHECKS","MAV_CMD_SET_CAMERA_FOCUS","MAV_CMD_SET_CAMERA_MODE","MAV_CMD_SET_CAMERA_ZOOM","MAV_CMD_SET_GUIDED_SUBMODE_CIRCLE","MAV_CMD_SET_GUIDED_SUBMODE_STANDARD","MAV_CMD_SET_MESSAGE_INTERVAL","MAV_CMD_SET_STORAGE_USAGE","MAV_CMD_SPATIAL_USER_1","MAV_CMD_SPATIAL_USER_2","MAV_CMD_SPATIAL_USER_3","MAV_CMD_SPATIAL_USER_4","MAV_CMD_SPATIAL_USER_5","MAV_CMD_START_RX_PAIR","MAV_CMD_STORAGE_FORMAT","MAV_CMD_UAVCAN_GET_NODE_INFO","MAV_CMD_USER_1","MAV_CMD_USER_2","MAV_CMD_USER_3","MAV_CMD_USER_4","MAV_CMD_USER_5","MAV_CMD_VIDEO_START_CAPTURE","MAV_CMD_VIDEO_START_STREAMING","MAV_CMD_VIDEO_STOP_CAPTURE","MAV_CMD_VIDEO_STOP_STREAMING","MAV_CMD_WAYPOINT_USER_1","MAV_CMD_WAYPOINT_USER_2","MAV_CMD_WAYPOINT_USER_3","MAV_CMD_WAYPOINT_USER_4","MAV_CMD_WAYPOINT_USER_5","MAV_COLLISION_ACTION_ASCEND_OR_DESCEND","MAV_COLLISION_ACTION_HOVER","MAV_COLLISION_ACTION_MOVE_HORIZONTALLY","MAV_COLLISION_ACTION_MOVE_PERPENDICULAR","MAV_COLLISION_ACTION_NONE","MAV_COLLISION_ACTION_REPORT","MAV_COLLISION_ACTION_RTL","MAV_COLLISION_SRC_ADSB","MAV_COLLISION_SRC_MAVLINK_GPS_GLOBAL_INT","MAV_COLLISION_THREAT_LEVEL_HIGH","MAV_COLLISION_THREAT_LEVEL_LOW","MAV_COLLISION_THREAT_LEVEL_NONE","MAV_COMP_ID_ADSB","MAV_COMP_ID_ALL","MAV_COMP_ID_AUTOPILOT1","MAV_COMP_ID_BATTERY","MAV_COMP_ID_BATTERY2","MAV_COMP_ID_CAMERA","MAV_COMP_ID_CAMERA2","MAV_COMP_ID_CAMERA3","MAV_COMP_ID_CAMERA4","MAV_COMP_ID_CAMERA5","MAV_COMP_ID_CAMERA6","MAV_COMP_ID_FLARM","MAV_COMP_ID_GIMBAL","MAV_COMP_ID_GIMBAL2","MAV_COMP_ID_GIMBAL3","MAV_COMP_ID_GIMBAL4","MAV_COMP_ID_GIMBAL5","MAV_COMP_ID_GIMBAL6","MAV_COMP_ID_GPS","MAV_COMP_ID_GPS2","MAV_COMP_ID_IMU","MAV_COMP_ID_IMU_2","MAV_COMP_ID_IMU_3","MAV_COMP_ID_LOG","MAV_COMP_ID_MAVCAN","MAV_COMP_ID_MISSIONPLANNER","MAV_COMP_ID_OBSTACLE_AVOIDANCE","MAV_COMP_ID_ODID_TXRX_1","MAV_COMP_ID_ODID_TXRX_2","MAV_COMP_ID_ODID_TXRX_3","MAV_COMP_ID_ONBOARD_COMPUTER","MAV_COMP_ID_ONBOARD_COMPUTER2","MAV_COMP_ID_ONBOARD_COMPUTER3","MAV_COMP_ID_ONBOARD_COMPUTER4","MAV_COMP_ID_OSD","MAV_COMP_ID_PAIRING_MANAGER","MAV_COMP_ID_PARACHUTE","MAV_COMP_ID_PATHPLANNER","MAV_COMP_ID_PERIPHERAL","MAV_COMP_ID_QX1_GIMBAL","MAV_COMP_ID_SERVO1","MAV_COMP_ID_SERVO10","MAV_COMP_ID_SERVO11","MAV_COMP_ID_SERVO12","MAV_COMP_ID_SERVO13","MAV_COMP_ID_SERVO14","MAV_COMP_ID_SERVO2","MAV_COMP_ID_SERVO3","MAV_COMP_ID_SERVO4","MAV_COMP_ID_SERVO5","MAV_COMP_ID_SERVO6","MAV_COMP_ID_SERVO7","MAV_COMP_ID_SERVO8","MAV_COMP_ID_SERVO9","MAV_COMP_ID_SYSTEM_CONTROL","MAV_COMP_ID_TELEMETRY_RADIO","MAV_COMP_ID_TUNNEL_NODE","MAV_COMP_ID_UART_BRIDGE","MAV_COMP_ID_UDP_BRIDGE","MAV_COMP_ID_USER1","MAV_COMP_ID_USER10","MAV_COMP_ID_USER11","MAV_COMP_ID_USER12","MAV_COMP_ID_USER13","MAV_COMP_ID_USER14","MAV_COMP_ID_USER15","MAV_COMP_ID_USER16","MAV_COMP_ID_USER17","MAV_COMP_ID_USER18","MAV_COMP_ID_USER19","MAV_COMP_ID_USER2","MAV_COMP_ID_USER20","MAV_COMP_ID_USER21","MAV_COMP_ID_USER22","MAV_COMP_ID_USER23","MAV_COMP_ID_USER24","MAV_COMP_ID_USER25","MAV_COMP_ID_USER26","MAV_COMP_ID_USER27","MAV_COMP_ID_USER28","MAV_COMP_ID_USER29","MAV_COMP_ID_USER3","MAV_COMP_ID_USER30","MAV_COMP_ID_USER31","MAV_COMP_ID_USER32","MAV_COMP_ID_USER33","MAV_COMP_ID_USER34","MAV_COMP_ID_USER35","MAV_COMP_ID_USER36","MAV_COMP_ID_USER37","MAV_COMP_ID_USER38","MAV_COMP_ID_USER39","MAV_COMP_ID_USER4","MAV_COMP_ID_USER40","MAV_COMP_ID_USER41","MAV_COMP_ID_USER42","MAV_COMP_ID_USER43","MAV_COMP_ID_USER45","MAV_COMP_ID_USER46","MAV_COMP_ID_USER47","MAV_COMP_ID_USER48","MAV_COMP_ID_USER49","MAV_COMP_ID_USER5","MAV_COMP_ID_USER50","MAV_COMP_ID_USER51","MAV_COMP_ID_USER52","MAV_COMP_ID_USER53","MAV_COMP_ID_USER54","MAV_COMP_ID_USER55","MAV_COMP_ID_USER56","MAV_COMP_ID_USER57","MAV_COMP_ID_USER58","MAV_COMP_ID_USER59","MAV_COMP_ID_USER6","MAV_COMP_ID_USER60","MAV_COMP_ID_USER61","MAV_COMP_ID_USER62","MAV_COMP_ID_USER63","MAV_COMP_ID_USER64","MAV_COMP_ID_USER65","MAV_COMP_ID_USER66","MAV_COMP_ID_USER67","MAV_COMP_ID_USER68","MAV_COMP_ID_USER69","MAV_COMP_ID_USER7","MAV_COMP_ID_USER70","MAV_COMP_ID_USER71","MAV_COMP_ID_USER72","MAV_COMP_ID_USER73","MAV_COMP_ID_USER74","MAV_COMP_ID_USER75","MAV_COMP_ID_USER8","MAV_COMP_ID_USER9","MAV_COMP_ID_VISUAL_INERTIAL_ODOMETRY","MAV_COMP_ID_WINCH","MAV_DATA_STREAM_ALL","MAV_DATA_STREAM_EXTENDED_STATUS","MAV_DATA_STREAM_EXTRA1","MAV_DATA_STREAM_EXTRA2","MAV_DATA_STREAM_EXTRA3","MAV_DATA_STREAM_POSITION","MAV_DATA_STREAM_RAW_CONTROLLER","MAV_DATA_STREAM_RAW_SENSORS","MAV_DATA_STREAM_RC_CHANNELS","MAV_DISTANCE_SENSOR_INFRARED","MAV_DISTANCE_SENSOR_LASER","MAV_DISTANCE_SENSOR_RADAR","MAV_DISTANCE_SENSOR_ULTRASOUND","MAV_DISTANCE_SENSOR_UNKNOWN","MAV_DO_REPOSITION_FLAGS_CHANGE_MODE","MAV_ESTIMATOR_TYPE_AUTOPILOT","MAV_ESTIMATOR_TYPE_GPS","MAV_ESTIMATOR_TYPE_GPS_INS","MAV_ESTIMATOR_TYPE_LIDAR","MAV_ESTIMATOR_TYPE_MOCAP","MAV_ESTIMATOR_TYPE_NAIVE","MAV_ESTIMATOR_TYPE_UNKNOWN","MAV_ESTIMATOR_TYPE_VIO","MAV_ESTIMATOR_TYPE_VISION","MAV_EVENT_CURRENT_SEQUENCE_FLAGS_RESET","MAV_EVENT_ERROR_REASON_UNAVAILABLE","MAV_FRAME_BODY_FRD","MAV_FRAME_BODY_NED","MAV_FRAME_BODY_OFFSET_NED","MAV_FRAME_GLOBAL","MAV_FRAME_GLOBAL_INT","MAV_FRAME_GLOBAL_RELATIVE_ALT","MAV_FRAME_GLOBAL_RELATIVE_ALT_INT","MAV_FRAME_GLOBAL_TERRAIN_ALT","MAV_FRAME_GLOBAL_TERRAIN_ALT_INT","MAV_FRAME_LOCAL_ENU","MAV_FRAME_LOCAL_FLU","MAV_FRAME_LOCAL_FRD","MAV_FRAME_LOCAL_NED","MAV_FRAME_LOCAL_OFFSET_NED","MAV_FRAME_MISSION","MAV_FRAME_RESERVED_13","MAV_FRAME_RESERVED_14","MAV_FRAME_RESERVED_15","MAV_FRAME_RESERVED_16","MAV_FRAME_RESERVED_17","MAV_FRAME_RESERVED_18","MAV_FRAME_RESERVED_19","MAV_FTP_ERR_EOF","MAV_FTP_ERR_FAIL","MAV_FTP_ERR_FAILERRNO","MAV_FTP_ERR_FILEEXISTS","MAV_FTP_ERR_FILENOTFOUND","MAV_FTP_ERR_FILEPROTECTED","MAV_FTP_ERR_INVALIDDATASIZE","MAV_FTP_ERR_INVALIDSESSION","MAV_FTP_ERR_NONE","MAV_FTP_ERR_NOSESSIONSAVAILABLE","MAV_FTP_ERR_UNKNOWNCOMMAND","MAV_FTP_OPCODE_ACK","MAV_FTP_OPCODE_BURSTREADFILE","MAV_FTP_OPCODE_CALCFILECRC","MAV_FTP_OPCODE_CREATEDIRECTORY","MAV_FTP_OPCODE_CREATEFILE","MAV_FTP_OPCODE_LISTDIRECTORY","MAV_FTP_OPCODE_NAK","MAV_FTP_OPCODE_NONE","MAV_FTP_OPCODE_OPENFILERO","MAV_FTP_OPCODE_OPENFILEWO","MAV_FTP_OPCODE_READFILE","MAV_FTP_OPCODE_REMOVEDIRECTORY","MAV_FTP_OPCODE_REMOVEFILE","MAV_FTP_OPCODE_RENAME","MAV_FTP_OPCODE_RESETSESSION","MAV_FTP_OPCODE_TERMINATESESSION","MAV_FTP_OPCODE_TRUNCATEFILE","MAV_FTP_OPCODE_WRITEFILE","MAV_GENERATOR_STATUS_FLAG_BATTERY_OVERCHARGE_CURRENT_FAULT","MAV_GENERATOR_STATUS_FLAG_BATTERY_UNDERVOLT_FAULT","MAV_GENERATOR_STATUS_FLAG_CHARGING","MAV_GENERATOR_STATUS_FLAG_COMMUNICATION_WARNING","MAV_GENERATOR_STATUS_FLAG_COOLING_WARNING","MAV_GENERATOR_STATUS_FLAG_ELECTRONICS_FAULT","MAV_GENERATOR_STATUS_FLAG_ELECTRONICS_OVERTEMP_FAULT","MAV_GENERATOR_STATUS_FLAG_ELECTRONICS_OVERTEMP_WARNING","MAV_GENERATOR_STATUS_FLAG_GENERATING","MAV_GENERATOR_STATUS_FLAG_IDLE","MAV_GENERATOR_STATUS_FLAG_MAINTENANCE_REQUIRED","MAV_GENERATOR_STATUS_FLAG_MAXPOWER","MAV_GENERATOR_STATUS_FLAG_OFF","MAV_GENERATOR_STATUS_FLAG_OVERCURRENT_FAULT","MAV_GENERATOR_STATUS_FLAG_OVERTEMP_FAULT","MAV_GENERATOR_STATUS_FLAG_OVERTEMP_WARNING","MAV_GENERATOR_STATUS_FLAG_OVERVOLTAGE_FAULT","MAV_GENERATOR_STATUS_FLAG_POWERSOURCE_FAULT","MAV_GENERATOR_STATUS_FLAG_POWER_RAIL_FAULT","MAV_GENERATOR_STATUS_FLAG_READY","MAV_GENERATOR_STATUS_FLAG_REDUCED_POWER","MAV_GENERATOR_STATUS_FLAG_START_INHIBITED","MAV_GENERATOR_STATUS_FLAG_WARMING_UP","MAV_GOTO_DO_CONTINUE","MAV_GOTO_DO_HOLD","MAV_GOTO_HOLD_AT_CURRENT_POSITION","MAV_GOTO_HOLD_AT_SPECIFIED_POSITION","MAV_LANDED_STATE_IN_AIR","MAV_LANDED_STATE_LANDING","MAV_LANDED_STATE_ON_GROUND","MAV_LANDED_STATE_TAKEOFF","MAV_LANDED_STATE_UNDEFINED","MAV_MISSION_ACCEPTED","MAV_MISSION_DENIED","MAV_MISSION_ERROR","MAV_MISSION_INVALID","MAV_MISSION_INVALID_PARAM1","MAV_MISSION_INVALID_PARAM2","MAV_MISSION_INVALID_PARAM3","MAV_MISSION_INVALID_PARAM4","MAV_MISSION_INVALID_PARAM5_X","MAV_MISSION_INVALID_PARAM6_Y","MAV_MISSION_INVALID_PARAM7","MAV_MISSION_INVALID_SEQUENCE","MAV_MISSION_NO_SPACE","MAV_MISSION_OPERATION_CANCELLED","MAV_MISSION_TYPE_ALL","MAV_MISSION_TYPE_FENCE","MAV_MISSION_TYPE_MISSION","MAV_MISSION_TYPE_RALLY","MAV_MISSION_UNSUPPORTED","MAV_MISSION_UNSUPPORTED_FRAME","MAV_MODE_AUTO_ARMED","MAV_MODE_AUTO_DISARMED","MAV_MODE_FLAG_AUTO_ENABLED","MAV_MODE_FLAG_CUSTOM_MODE_ENABLED","MAV_MODE_FLAG_DECODE_POSITION_AUTO","MAV_MODE_FLAG_DECODE_POSITION_CUSTOM_MODE","MAV_MODE_FLAG_DECODE_POSITION_GUIDED","MAV_MODE_FLAG_DECODE_POSITION_HIL","MAV_MODE_FLAG_DECODE_POSITION_MANUAL","MAV_MODE_FLAG_DECODE_POSITION_SAFETY","MAV_MODE_FLAG_DECODE_POSITION_STABILIZE","MAV_MODE_FLAG_DECODE_POSITION_TEST","MAV_MODE_FLAG_GUIDED_ENABLED","MAV_MODE_FLAG_HIL_ENABLED","MAV_MODE_FLAG_MANUAL_INPUT_ENABLED","MAV_MODE_FLAG_SAFETY_ARMED","MAV_MODE_FLAG_STABILIZE_ENABLED","MAV_MODE_FLAG_TEST_ENABLED","MAV_MODE_GUIDED_ARMED","MAV_MODE_GUIDED_DISARMED","MAV_MODE_MANUAL_ARMED","MAV_MODE_MANUAL_DISARMED","MAV_MODE_PREFLIGHT","MAV_MODE_STABILIZE_ARMED","MAV_MODE_STABILIZE_DISARMED","MAV_MODE_TEST_ARMED","MAV_MODE_TEST_DISARMED","MAV_MOUNT_MODE_GPS_POINT","MAV_MOUNT_MODE_HOME_LOCATION","MAV_MOUNT_MODE_MAVLINK_TARGETING","MAV_MOUNT_MODE_NEUTRAL","MAV_MOUNT_MODE_RC_TARGETING","MAV_MOUNT_MODE_RETRACT","MAV_MOUNT_MODE_SYSID_TARGET","MAV_ODID_ARM_STATUS_GOOD_TO_ARM","MAV_ODID_ARM_STATUS_PRE_ARM_FAIL_GENERIC","MAV_ODID_AUTH_TYPE_MESSAGE_SET_SIGNATURE","MAV_ODID_AUTH_TYPE_NETWORK_REMOTE_ID","MAV_ODID_AUTH_TYPE_NONE","MAV_ODID_AUTH_TYPE_OPERATOR_ID_SIGNATURE","MAV_ODID_AUTH_TYPE_SPECIFIC_AUTHENTICATION","MAV_ODID_AUTH_TYPE_UAS_ID_SIGNATURE","MAV_ODID_CATEGORY_EU_CERTIFIED","MAV_ODID_CATEGORY_EU_OPEN","MAV_ODID_CATEGORY_EU_SPECIFIC","MAV_ODID_CATEGORY_EU_UNDECLARED","MAV_ODID_CLASSIFICATION_TYPE_EU","MAV_ODID_CLASSIFICATION_TYPE_UNDECLARED","MAV_ODID_CLASS_EU_CLASS_0","MAV_ODID_CLASS_EU_CLASS_1","MAV_ODID_CLASS_EU_CLASS_2","MAV_ODID_CLASS_EU_CLASS_3","MAV_ODID_CLASS_EU_CLASS_4","MAV_ODID_CLASS_EU_CLASS_5","MAV_ODID_CLASS_EU_CLASS_6","MAV_ODID_CLASS_EU_UNDECLARED","MAV_ODID_DESC_TYPE_EMERGENCY","MAV_ODID_DESC_TYPE_EXTENDED_STATUS","MAV_ODID_DESC_TYPE_TEXT","MAV_ODID_HEIGHT_REF_OVER_GROUND","MAV_ODID_HEIGHT_REF_OVER_TAKEOFF","MAV_ODID_HOR_ACC_0_05NM","MAV_ODID_HOR_ACC_0_1NM","MAV_ODID_HOR_ACC_0_3NM","MAV_ODID_HOR_ACC_0_5NM","MAV_ODID_HOR_ACC_10NM","MAV_ODID_HOR_ACC_10_METER","MAV_ODID_HOR_ACC_1NM","MAV_ODID_HOR_ACC_1_METER","MAV_ODID_HOR_ACC_2NM","MAV_ODID_HOR_ACC_30_METER","MAV_ODID_HOR_ACC_3_METER","MAV_ODID_HOR_ACC_4NM","MAV_ODID_HOR_ACC_UNKNOWN","MAV_ODID_ID_TYPE_CAA_REGISTRATION_ID","MAV_ODID_ID_TYPE_NONE","MAV_ODID_ID_TYPE_SERIAL_NUMBER","MAV_ODID_ID_TYPE_SPECIFIC_SESSION_ID","MAV_ODID_ID_TYPE_UTM_ASSIGNED_UUID","MAV_ODID_OPERATOR_ID_TYPE_CAA","MAV_ODID_OPERATOR_LOCATION_TYPE_FIXED","MAV_ODID_OPERATOR_LOCATION_TYPE_LIVE_GNSS","MAV_ODID_OPERATOR_LOCATION_TYPE_TAKEOFF","MAV_ODID_SPEED_ACC_0_3_METERS_PER_SECOND","MAV_ODID_SPEED_ACC_10_METERS_PER_SECOND","MAV_ODID_SPEED_ACC_1_METERS_PER_SECOND","MAV_ODID_SPEED_ACC_3_METERS_PER_SECOND","MAV_ODID_SPEED_ACC_UNKNOWN","MAV_ODID_STATUS_AIRBORNE","MAV_ODID_STATUS_EMERGENCY","MAV_ODID_STATUS_GROUND","MAV_ODID_STATUS_REMOTE_ID_SYSTEM_FAILURE","MAV_ODID_STATUS_UNDECLARED","MAV_ODID_TIME_ACC_0_1_SECOND","MAV_ODID_TIME_ACC_0_2_SECOND","MAV_ODID_TIME_ACC_0_3_SECOND","MAV_ODID_TIME_ACC_0_4_SECOND","MAV_ODID_TIME_ACC_0_5_SECOND","MAV_ODID_TIME_ACC_0_6_SECOND","MAV_ODID_TIME_ACC_0_7_SECOND","MAV_ODID_TIME_ACC_0_8_SECOND","MAV_ODID_TIME_ACC_0_9_SECOND","MAV_ODID_TIME_ACC_1_0_SECOND","MAV_ODID_TIME_ACC_1_1_SECOND","MAV_ODID_TIME_ACC_1_2_SECOND","MAV_ODID_TIME_ACC_1_3_SECOND","MAV_ODID_TIME_ACC_1_4_SECOND","MAV_ODID_TIME_ACC_1_5_SECOND","MAV_ODID_TIME_ACC_UNKNOWN","MAV_ODID_UA_TYPE_AEROPLANE","MAV_ODID_UA_TYPE_AIRSHIP","MAV_ODID_UA_TYPE_CAPTIVE_BALLOON","MAV_ODID_UA_TYPE_FREE_BALLOON","MAV_ODID_UA_TYPE_FREE_FALL_PARACHUTE","MAV_ODID_UA_TYPE_GLIDER","MAV_ODID_UA_TYPE_GROUND_OBSTACLE","MAV_ODID_UA_TYPE_GYROPLANE","MAV_ODID_UA_TYPE_HELICOPTER_OR_MULTIROTOR","MAV_ODID_UA_TYPE_HYBRID_LIFT","MAV_ODID_UA_TYPE_KITE","MAV_ODID_UA_TYPE_NONE","MAV_ODID_UA_TYPE_ORNITHOPTER","MAV_ODID_UA_TYPE_OTHER","MAV_ODID_UA_TYPE_ROCKET","MAV_ODID_UA_TYPE_TETHERED_POWERED_AIRCRAFT","MAV_ODID_VER_ACC_10_METER","MAV_ODID_VER_ACC_150_METER","MAV_ODID_VER_ACC_1_METER","MAV_ODID_VER_ACC_25_METER","MAV_ODID_VER_ACC_3_METER","MAV_ODID_VER_ACC_45_METER","MAV_ODID_VER_ACC_UNKNOWN","MAV_PARAM_EXT_TYPE_CUSTOM","MAV_PARAM_EXT_TYPE_INT16","MAV_PARAM_EXT_TYPE_INT32","MAV_PARAM_EXT_TYPE_INT64","MAV_PARAM_EXT_TYPE_INT8","MAV_PARAM_EXT_TYPE_REAL32","MAV_PARAM_EXT_TYPE_REAL64","MAV_PARAM_EXT_TYPE_UINT16","MAV_PARAM_EXT_TYPE_UINT32","MAV_PARAM_EXT_TYPE_UINT64","MAV_PARAM_EXT_TYPE_UINT8","MAV_PARAM_TYPE_INT16","MAV_PARAM_TYPE_INT32","MAV_PARAM_TYPE_INT64","MAV_PARAM_TYPE_INT8","MAV_PARAM_TYPE_REAL32","MAV_PARAM_TYPE_REAL64","MAV_PARAM_TYPE_UINT16","MAV_PARAM_TYPE_UINT32","MAV_PARAM_TYPE_UINT64","MAV_PARAM_TYPE_UINT8","MAV_POWER_STATUS_BRICK_VALID","MAV_POWER_STATUS_CHANGED","MAV_POWER_STATUS_PERIPH_HIPOWER_OVERCURRENT","MAV_POWER_STATUS_PERIPH_OVERCURRENT","MAV_POWER_STATUS_SERVO_VALID","MAV_POWER_STATUS_USB_CONNECTED","MAV_PROTOCOL_CAPABILITY_COMMAND_INT","MAV_PROTOCOL_CAPABILITY_COMPASS_CALIBRATION","MAV_PROTOCOL_CAPABILITY_FLIGHT_TERMINATION","MAV_PROTOCOL_CAPABILITY_FTP","MAV_PROTOCOL_CAPABILITY_MAVLINK2","MAV_PROTOCOL_CAPABILITY_MISSION_FENCE","MAV_PROTOCOL_CAPABILITY_MISSION_FLOAT","MAV_PROTOCOL_CAPABILITY_MISSION_INT","MAV_PROTOCOL_CAPABILITY_MISSION_RALLY","MAV_PROTOCOL_CAPABILITY_PARAM_ENCODE_BYTEWISE","MAV_PROTOCOL_CAPABILITY_PARAM_ENCODE_C_CAST","MAV_PROTOCOL_CAPABILITY_PARAM_FLOAT","MAV_PROTOCOL_CAPABILITY_RESERVED2","MAV_PROTOCOL_CAPABILITY_SET_ACTUATOR_TARGET","MAV_PROTOCOL_CAPABILITY_SET_ATTITUDE_TARGET","MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_GLOBAL_INT","MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_LOCAL_NED","MAV_PROTOCOL_CAPABILITY_TERRAIN","MAV_RESULT_ACCEPTED","MAV_RESULT_CANCELLED","MAV_RESULT_DENIED","MAV_RESULT_FAILED","MAV_RESULT_IN_PROGRESS","MAV_RESULT_TEMPORARILY_REJECTED","MAV_RESULT_UNSUPPORTED","MAV_ROI_LOCATION","MAV_ROI_NONE","MAV_ROI_TARGET","MAV_ROI_WPINDEX","MAV_ROI_WPNEXT","MAV_SENSOR_ROTATION_CUSTOM","MAV_SENSOR_ROTATION_NONE","MAV_SENSOR_ROTATION_PITCH_180","MAV_SENSOR_ROTATION_PITCH_180_YAW_270","MAV_SENSOR_ROTATION_PITCH_180_YAW_90","MAV_SENSOR_ROTATION_PITCH_270","MAV_SENSOR_ROTATION_PITCH_315","MAV_SENSOR_ROTATION_PITCH_90","MAV_SENSOR_ROTATION_ROLL_180","MAV_SENSOR_ROTATION_ROLL_180_PITCH_270","MAV_SENSOR_ROTATION_ROLL_180_PITCH_90","MAV_SENSOR_ROTATION_ROLL_180_YAW_135","MAV_SENSOR_ROTATION_ROLL_180_YAW_225","MAV_SENSOR_ROTATION_ROLL_180_YAW_270","MAV_SENSOR_ROTATION_ROLL_180_YAW_315","MAV_SENSOR_ROTATION_ROLL_180_YAW_45","MAV_SENSOR_ROTATION_ROLL_180_YAW_90","MAV_SENSOR_ROTATION_ROLL_270","MAV_SENSOR_ROTATION_ROLL_270_PITCH_180","MAV_SENSOR_ROTATION_ROLL_270_PITCH_270","MAV_SENSOR_ROTATION_ROLL_270_PITCH_90","MAV_SENSOR_ROTATION_ROLL_270_YAW_135","MAV_SENSOR_ROTATION_ROLL_270_YAW_45","MAV_SENSOR_ROTATION_ROLL_270_YAW_90","MAV_SENSOR_ROTATION_ROLL_90","MAV_SENSOR_ROTATION_ROLL_90_PITCH_180","MAV_SENSOR_ROTATION_ROLL_90_PITCH_180_YAW_90","MAV_SENSOR_ROTATION_ROLL_90_PITCH_270","MAV_SENSOR_ROTATION_ROLL_90_PITCH_315","MAV_SENSOR_ROTATION_ROLL_90_PITCH_68_YAW_293","MAV_SENSOR_ROTATION_ROLL_90_PITCH_90","MAV_SENSOR_ROTATION_ROLL_90_YAW_135","MAV_SENSOR_ROTATION_ROLL_90_YAW_270","MAV_SENSOR_ROTATION_ROLL_90_YAW_45","MAV_SENSOR_ROTATION_ROLL_90_YAW_90","MAV_SENSOR_ROTATION_YAW_135","MAV_SENSOR_ROTATION_YAW_180","MAV_SENSOR_ROTATION_YAW_225","MAV_SENSOR_ROTATION_YAW_270","MAV_SENSOR_ROTATION_YAW_315","MAV_SENSOR_ROTATION_YAW_45","MAV_SENSOR_ROTATION_YAW_90","MAV_SEVERITY_ALERT","MAV_SEVERITY_CRITICAL","MAV_SEVERITY_DEBUG","MAV_SEVERITY_EMERGENCY","MAV_SEVERITY_ERROR","MAV_SEVERITY_INFO","MAV_SEVERITY_NOTICE","MAV_SEVERITY_WARNING","MAV_STATE_ACTIVE","MAV_STATE_BOOT","MAV_STATE_CALIBRATING","MAV_STATE_CRITICAL","MAV_STATE_EMERGENCY","MAV_STATE_FLIGHT_TERMINATION","MAV_STATE_POWEROFF","MAV_STATE_STANDBY","MAV_STATE_UNINIT","MAV_SYS_STATUS_AHRS","MAV_SYS_STATUS_EXTENSION_USED","MAV_SYS_STATUS_GEOFENCE","MAV_SYS_STATUS_LOGGING","MAV_SYS_STATUS_OBSTACLE_AVOIDANCE","MAV_SYS_STATUS_PREARM_CHECK","MAV_SYS_STATUS_RECOVERY_SYSTEM","MAV_SYS_STATUS_REVERSE_MOTOR","MAV_SYS_STATUS_SENSOR_3D_ACCEL","MAV_SYS_STATUS_SENSOR_3D_ACCEL2","MAV_SYS_STATUS_SENSOR_3D_GYRO","MAV_SYS_STATUS_SENSOR_3D_GYRO2","MAV_SYS_STATUS_SENSOR_3D_MAG","MAV_SYS_STATUS_SENSOR_3D_MAG2","MAV_SYS_STATUS_SENSOR_ABSOLUTE_PRESSURE","MAV_SYS_STATUS_SENSOR_ANGULAR_RATE_CONTROL","MAV_SYS_STATUS_SENSOR_ATTITUDE_STABILIZATION","MAV_SYS_STATUS_SENSOR_BATTERY","MAV_SYS_STATUS_SENSOR_DIFFERENTIAL_PRESSURE","MAV_SYS_STATUS_SENSOR_EXTERNAL_GROUND_TRUTH","MAV_SYS_STATUS_SENSOR_GPS","MAV_SYS_STATUS_SENSOR_LASER_POSITION","MAV_SYS_STATUS_SENSOR_MOTOR_OUTPUTS","MAV_SYS_STATUS_SENSOR_OPTICAL_FLOW","MAV_SYS_STATUS_SENSOR_PROPULSION","MAV_SYS_STATUS_SENSOR_PROXIMITY","MAV_SYS_STATUS_SENSOR_RC_RECEIVER","MAV_SYS_STATUS_SENSOR_SATCOM","MAV_SYS_STATUS_SENSOR_VISION_POSITION","MAV_SYS_STATUS_SENSOR_XY_POSITION_CONTROL","MAV_SYS_STATUS_SENSOR_YAW_POSITION","MAV_SYS_STATUS_SENSOR_Z_ALTITUDE_CONTROL","MAV_SYS_STATUS_TERRAIN","MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED0","MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED1","MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED2","MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED3","MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED4","MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED5","MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED6","MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED7","MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED8","MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED9","MAV_TUNNEL_PAYLOAD_TYPE_UNKNOWN","MAV_TYPE_ADSB","MAV_TYPE_AIRSHIP","MAV_TYPE_ANTENNA_TRACKER","MAV_TYPE_BATTERY","MAV_TYPE_CAMERA","MAV_TYPE_CHARGING_STATION","MAV_TYPE_COAXIAL","MAV_TYPE_DECAROTOR","MAV_TYPE_DODECAROTOR","MAV_TYPE_FIXED_WING","MAV_TYPE_FLAPPING_WING","MAV_TYPE_FLARM","MAV_TYPE_FREE_BALLOON","MAV_TYPE_GCS","MAV_TYPE_GENERIC","MAV_TYPE_GIMBAL","MAV_TYPE_GPS","MAV_TYPE_GROUND_ROVER","MAV_TYPE_HELICOPTER","MAV_TYPE_HEXAROTOR","MAV_TYPE_IMU","MAV_TYPE_KITE","MAV_TYPE_LOG","MAV_TYPE_OCTOROTOR","MAV_TYPE_ODID","MAV_TYPE_ONBOARD_CONTROLLER","MAV_TYPE_OSD","MAV_TYPE_PARACHUTE","MAV_TYPE_PARAFOIL","MAV_TYPE_QUADROTOR","MAV_TYPE_ROCKET","MAV_TYPE_SERVO","MAV_TYPE_SUBMARINE","MAV_TYPE_SURFACE_BOAT","MAV_TYPE_TRICOPTER","MAV_TYPE_VTOL_FIXEDROTOR","MAV_TYPE_VTOL_RESERVED5","MAV_TYPE_VTOL_TAILSITTER","MAV_TYPE_VTOL_TAILSITTER_DUOROTOR","MAV_TYPE_VTOL_TAILSITTER_QUADROTOR","MAV_TYPE_VTOL_TILTROTOR","MAV_TYPE_VTOL_TILTWING","MAV_TYPE_WINCH","MAV_VTOL_STATE_FW","MAV_VTOL_STATE_MC","MAV_VTOL_STATE_TRANSITION_TO_FW","MAV_VTOL_STATE_TRANSITION_TO_MC","MAV_VTOL_STATE_UNDEFINED","MAV_WINCH_STATUS_ABANDON_LINE","MAV_WINCH_STATUS_ARRESTING","MAV_WINCH_STATUS_CLUTCH_ENGAGED","MAV_WINCH_STATUS_DROPPING","MAV_WINCH_STATUS_FULLY_RETRACTED","MAV_WINCH_STATUS_GROUND_SENSE","MAV_WINCH_STATUS_HEALTHY","MAV_WINCH_STATUS_LOAD_LINE","MAV_WINCH_STATUS_LOAD_PAYLOAD","MAV_WINCH_STATUS_LOCKED","MAV_WINCH_STATUS_LOCKING","MAV_WINCH_STATUS_MOVING","MAV_WINCH_STATUS_REDELIVER","MAV_WINCH_STATUS_RETRACTING","MEMORY_VECT","MEMORY_VECT_DATA","MESSAGE_INTERVAL","MESSAGE_INTERVAL_DATA","MISSION_ACK","MISSION_ACK_DATA","MISSION_CLEAR_ALL","MISSION_CLEAR_ALL_DATA","MISSION_COUNT","MISSION_COUNT_DATA","MISSION_CURRENT","MISSION_CURRENT_DATA","MISSION_ITEM","MISSION_ITEM_DATA","MISSION_ITEM_INT","MISSION_ITEM_INT_DATA","MISSION_ITEM_REACHED","MISSION_ITEM_REACHED_DATA","MISSION_READ_PERSISTENT","MISSION_REQUEST","MISSION_REQUEST_DATA","MISSION_REQUEST_INT","MISSION_REQUEST_INT_DATA","MISSION_REQUEST_LIST","MISSION_REQUEST_LIST_DATA","MISSION_REQUEST_PARTIAL_LIST","MISSION_REQUEST_PARTIAL_LIST_DATA","MISSION_RESET_DEFAULT","MISSION_SET_CURRENT","MISSION_SET_CURRENT_DATA","MISSION_STATE_ACTIVE","MISSION_STATE_COMPLETE","MISSION_STATE_NOT_STARTED","MISSION_STATE_NO_MISSION","MISSION_STATE_PAUSED","MISSION_STATE_UNKNOWN","MISSION_WRITE_PARTIAL_LIST","MISSION_WRITE_PARTIAL_LIST_DATA","MISSION_WRITE_PERSISTENT","MMSI","MOTOR_TEST_COMPASS_CAL","MOTOR_TEST_ORDER_BOARD","MOTOR_TEST_ORDER_DEFAULT","MOTOR_TEST_ORDER_SEQUENCE","MOTOR_TEST_THROTTLE_PERCENT","MOTOR_TEST_THROTTLE_PILOT","MOTOR_TEST_THROTTLE_PWM","MOUNT_ORIENTATION","MOUNT_ORIENTATION_DATA","MagCalStatus","MavArmAuthDeniedReason","MavAutopilot","MavBatteryChargeState","MavBatteryFault","MavBatteryFunction","MavBatteryMode","MavBatteryType","MavCmd","MavCmdAck","MavCollisionAction","MavCollisionSrc","MavCollisionThreatLevel","MavComponent","MavDataStream","MavDistanceSensor","MavDoRepositionFlags","MavEstimatorType","MavEventCurrentSequenceFlags","MavEventErrorReason","MavFrame","MavFtpErr","MavFtpOpcode","MavGeneratorStatusFlag","MavGoto","MavLandedState","MavMessage","MavMissionResult","MavMissionType","MavMode","MavModeFlag","MavModeFlagDecodePosition","MavMountMode","MavOdidArmStatus","MavOdidAuthType","MavOdidCategoryEu","MavOdidClassEu","MavOdidClassificationType","MavOdidDescType","MavOdidHeightRef","MavOdidHorAcc","MavOdidIdType","MavOdidOperatorIdType","MavOdidOperatorLocationType","MavOdidSpeedAcc","MavOdidStatus","MavOdidTimeAcc","MavOdidUaType","MavOdidVerAcc","MavParamExtType","MavParamType","MavPowerStatus","MavProtocolCapability","MavResult","MavRoi","MavSensorOrientation","MavSeverity","MavState","MavSysStatusSensor","MavSysStatusSensorExtended","MavTunnelPayloadType","MavType","MavVtolState","MavWinchStatusFlag","MavlinkDataStreamType","MissionState","MotorTestOrder","MotorTestThrottleType","NAMED_VALUE_FLOAT","NAMED_VALUE_FLOAT_DATA","NAMED_VALUE_INT","NAMED_VALUE_INT_DATA","NAV_CONTROLLER_OUTPUT","NAV_CONTROLLER_OUTPUT_DATA","NAV_VTOL_LAND_OPTIONS_DEFAULT","NAV_VTOL_LAND_OPTIONS_FW_DESCENT","NAV_VTOL_LAND_OPTIONS_HOVER_DESCENT","NavVtolLandOptions","OBSTACLE_DISTANCE","OBSTACLE_DISTANCE_DATA","ODOMETRY","ODOMETRY_DATA","ONBOARD_COMPUTER_STATUS","ONBOARD_COMPUTER_STATUS_DATA","OPEN_DRONE_ID_ARM_STATUS","OPEN_DRONE_ID_ARM_STATUS_DATA","OPEN_DRONE_ID_AUTHENTICATION","OPEN_DRONE_ID_AUTHENTICATION_DATA","OPEN_DRONE_ID_BASIC_ID","OPEN_DRONE_ID_BASIC_ID_DATA","OPEN_DRONE_ID_LOCATION","OPEN_DRONE_ID_LOCATION_DATA","OPEN_DRONE_ID_MESSAGE_PACK","OPEN_DRONE_ID_MESSAGE_PACK_DATA","OPEN_DRONE_ID_OPERATOR_ID","OPEN_DRONE_ID_OPERATOR_ID_DATA","OPEN_DRONE_ID_SELF_ID","OPEN_DRONE_ID_SELF_ID_DATA","OPEN_DRONE_ID_SYSTEM","OPEN_DRONE_ID_SYSTEM_DATA","OPEN_DRONE_ID_SYSTEM_UPDATE","OPEN_DRONE_ID_SYSTEM_UPDATE_DATA","OPTICAL_FLOW","OPTICAL_FLOW_DATA","OPTICAL_FLOW_RAD","OPTICAL_FLOW_RAD_DATA","ORBIT_EXECUTION_STATUS","ORBIT_EXECUTION_STATUS_DATA","ORBIT_YAW_BEHAVIOUR_HOLD_FRONT_TANGENT_TO_CIRCLE","ORBIT_YAW_BEHAVIOUR_HOLD_FRONT_TO_CIRCLE_CENTER","ORBIT_YAW_BEHAVIOUR_HOLD_INITIAL_HEADING","ORBIT_YAW_BEHAVIOUR_RC_CONTROLLED","ORBIT_YAW_BEHAVIOUR_UNCONTROLLED","OrbitYawBehaviour","PARACHUTE_DISABLE","PARACHUTE_ENABLE","PARACHUTE_RELEASE","PARAM_ACK_ACCEPTED","PARAM_ACK_FAILED","PARAM_ACK_IN_PROGRESS","PARAM_ACK_VALUE_UNSUPPORTED","PARAM_EXT_ACK","PARAM_EXT_ACK_DATA","PARAM_EXT_REQUEST_LIST","PARAM_EXT_REQUEST_LIST_DATA","PARAM_EXT_REQUEST_READ","PARAM_EXT_REQUEST_READ_DATA","PARAM_EXT_SET","PARAM_EXT_SET_DATA","PARAM_EXT_VALUE","PARAM_EXT_VALUE_DATA","PARAM_MAP_RC","PARAM_MAP_RC_DATA","PARAM_READ_PERSISTENT","PARAM_REQUEST_LIST","PARAM_REQUEST_LIST_DATA","PARAM_REQUEST_READ","PARAM_REQUEST_READ_DATA","PARAM_RESET_ALL_DEFAULT","PARAM_RESET_CONFIG_DEFAULT","PARAM_RESET_SENSOR_DEFAULT","PARAM_SET","PARAM_SET_DATA","PARAM_VALUE","PARAM_VALUE_DATA","PARAM_WRITE_PERSISTENT","PING","PING_DATA","PLAY_TUNE","PLAY_TUNE_DATA","PLAY_TUNE_V2","PLAY_TUNE_V2_DATA","POSITION_TARGET_GLOBAL_INT","POSITION_TARGET_GLOBAL_INT_DATA","POSITION_TARGET_LOCAL_NED","POSITION_TARGET_LOCAL_NED_DATA","POSITION_TARGET_TYPEMASK_AX_IGNORE","POSITION_TARGET_TYPEMASK_AY_IGNORE","POSITION_TARGET_TYPEMASK_AZ_IGNORE","POSITION_TARGET_TYPEMASK_FORCE_SET","POSITION_TARGET_TYPEMASK_VX_IGNORE","POSITION_TARGET_TYPEMASK_VY_IGNORE","POSITION_TARGET_TYPEMASK_VZ_IGNORE","POSITION_TARGET_TYPEMASK_X_IGNORE","POSITION_TARGET_TYPEMASK_YAW_IGNORE","POSITION_TARGET_TYPEMASK_YAW_RATE_IGNORE","POSITION_TARGET_TYPEMASK_Y_IGNORE","POSITION_TARGET_TYPEMASK_Z_IGNORE","POWER_STATUS","POWER_STATUS_DATA","PRECISION_LAND_MODE_DISABLED","PRECISION_LAND_MODE_OPPORTUNISTIC","PRECISION_LAND_MODE_REQUIRED","PROTOCOL_VERSION","PROTOCOL_VERSION_DATA","ParachuteAction","ParamAck","PositionTargetTypemask","PrecisionLandMode","PreflightStorageMissionAction","PreflightStorageParameterAction","RADIO_STATUS","RADIO_STATUS_DATA","RAW_IMU","RAW_IMU_DATA","RAW_PRESSURE","RAW_PRESSURE_DATA","RAW_RPM","RAW_RPM_DATA","RC_CHANNELS","RC_CHANNELS_DATA","RC_CHANNELS_OVERRIDE","RC_CHANNELS_OVERRIDE_DATA","RC_CHANNELS_RAW","RC_CHANNELS_RAW_DATA","RC_CHANNELS_SCALED","RC_CHANNELS_SCALED_DATA","RC_TYPE_SPEKTRUM_DSM2","RC_TYPE_SPEKTRUM_DSMX","REQUEST_DATA_STREAM","REQUEST_DATA_STREAM_DATA","REQUEST_EVENT","REQUEST_EVENT_DATA","RESOURCE_REQUEST","RESOURCE_REQUEST_DATA","RESPONSE_EVENT_ERROR","RESPONSE_EVENT_ERROR_DATA","RTK_BASELINE_COORDINATE_SYSTEM_ECEF","RTK_BASELINE_COORDINATE_SYSTEM_NED","RcType","RtkBaselineCoordinateSystem","SAFETY_ALLOWED_AREA","SAFETY_ALLOWED_AREA_DATA","SAFETY_SET_ALLOWED_AREA","SAFETY_SET_ALLOWED_AREA_DATA","SCALED_IMU","SCALED_IMU2","SCALED_IMU2_DATA","SCALED_IMU3","SCALED_IMU3_DATA","SCALED_IMU_DATA","SCALED_PRESSURE","SCALED_PRESSURE2","SCALED_PRESSURE2_DATA","SCALED_PRESSURE3","SCALED_PRESSURE3_DATA","SCALED_PRESSURE_DATA","SERIAL_CONTROL","SERIAL_CONTROL_DATA","SERIAL_CONTROL_DEV_GPS1","SERIAL_CONTROL_DEV_GPS2","SERIAL_CONTROL_DEV_SHELL","SERIAL_CONTROL_DEV_TELEM1","SERIAL_CONTROL_DEV_TELEM2","SERIAL_CONTROL_FLAG_BLOCKING","SERIAL_CONTROL_FLAG_EXCLUSIVE","SERIAL_CONTROL_FLAG_MULTI","SERIAL_CONTROL_FLAG_REPLY","SERIAL_CONTROL_FLAG_RESPOND","SERIAL_CONTROL_SERIAL0","SERIAL_CONTROL_SERIAL1","SERIAL_CONTROL_SERIAL2","SERIAL_CONTROL_SERIAL3","SERIAL_CONTROL_SERIAL4","SERIAL_CONTROL_SERIAL5","SERIAL_CONTROL_SERIAL6","SERIAL_CONTROL_SERIAL7","SERIAL_CONTROL_SERIAL8","SERIAL_CONTROL_SERIAL9","SERVO_OUTPUT_RAW","SERVO_OUTPUT_RAW_DATA","SETUP_SIGNING","SETUP_SIGNING_DATA","SET_ACTUATOR_CONTROL_TARGET","SET_ACTUATOR_CONTROL_TARGET_DATA","SET_ATTITUDE_TARGET","SET_ATTITUDE_TARGET_DATA","SET_GPS_GLOBAL_ORIGIN","SET_GPS_GLOBAL_ORIGIN_DATA","SET_HOME_POSITION","SET_HOME_POSITION_DATA","SET_MODE","SET_MODE_DATA","SET_POSITION_TARGET_GLOBAL_INT","SET_POSITION_TARGET_GLOBAL_INT_DATA","SET_POSITION_TARGET_LOCAL_NED","SET_POSITION_TARGET_LOCAL_NED_DATA","SIM_STATE","SIM_STATE_DATA","SMART_BATTERY_INFO","SMART_BATTERY_INFO_DATA","STATUSTEXT","STATUSTEXT_DATA","STORAGE_INFORMATION","STORAGE_INFORMATION_DATA","STORAGE_STATUS_EMPTY","STORAGE_STATUS_NOT_SUPPORTED","STORAGE_STATUS_READY","STORAGE_STATUS_UNFORMATTED","STORAGE_TYPE_CF","STORAGE_TYPE_CFE","STORAGE_TYPE_HD","STORAGE_TYPE_MICROSD","STORAGE_TYPE_OTHER","STORAGE_TYPE_SD","STORAGE_TYPE_UNKNOWN","STORAGE_TYPE_USB_STICK","STORAGE_TYPE_XQD","STORAGE_USAGE_FLAG_LOGS","STORAGE_USAGE_FLAG_PHOTO","STORAGE_USAGE_FLAG_SET","STORAGE_USAGE_FLAG_VIDEO","SUPPORTED_TUNES","SUPPORTED_TUNES_DATA","SYSTEM_TIME","SYSTEM_TIME_DATA","SYS_STATUS","SYS_STATUS_DATA","SerialControlDev","SerialControlFlag","SetFocusType","StorageStatus","StorageType","StorageUsageFlag","TERRAIN_CHECK","TERRAIN_CHECK_DATA","TERRAIN_DATA","TERRAIN_DATA_DATA","TERRAIN_REPORT","TERRAIN_REPORT_DATA","TERRAIN_REQUEST","TERRAIN_REQUEST_DATA","TIMESYNC","TIMESYNC_DATA","TIME_ESTIMATE_TO_TARGET","TIME_ESTIMATE_TO_TARGET_DATA","TRAJECTORY_REPRESENTATION_BEZIER","TRAJECTORY_REPRESENTATION_BEZIER_DATA","TRAJECTORY_REPRESENTATION_WAYPOINTS","TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA","TUNE_FORMAT_MML_MODERN","TUNE_FORMAT_QBASIC1_1","TUNNEL","TUNNEL_DATA","TuneFormat","UAVCAN_NODE_HEALTH_CRITICAL","UAVCAN_NODE_HEALTH_ERROR","UAVCAN_NODE_HEALTH_OK","UAVCAN_NODE_HEALTH_WARNING","UAVCAN_NODE_INFO","UAVCAN_NODE_INFO_DATA","UAVCAN_NODE_MODE_INITIALIZATION","UAVCAN_NODE_MODE_MAINTENANCE","UAVCAN_NODE_MODE_OFFLINE","UAVCAN_NODE_MODE_OPERATIONAL","UAVCAN_NODE_MODE_SOFTWARE_UPDATE","UAVCAN_NODE_STATUS","UAVCAN_NODE_STATUS_DATA","UNDER_WAY","UTM_DATA_AVAIL_FLAGS_ALTITUDE_AVAILABLE","UTM_DATA_AVAIL_FLAGS_HORIZONTAL_VELO_AVAILABLE","UTM_DATA_AVAIL_FLAGS_NEXT_WAYPOINT_AVAILABLE","UTM_DATA_AVAIL_FLAGS_POSITION_AVAILABLE","UTM_DATA_AVAIL_FLAGS_RELATIVE_ALTITUDE_AVAILABLE","UTM_DATA_AVAIL_FLAGS_TIME_VALID","UTM_DATA_AVAIL_FLAGS_UAS_ID_AVAILABLE","UTM_DATA_AVAIL_FLAGS_VERTICAL_VELO_AVAILABLE","UTM_FLIGHT_STATE_AIRBORNE","UTM_FLIGHT_STATE_EMERGENCY","UTM_FLIGHT_STATE_GROUND","UTM_FLIGHT_STATE_NOCTRL","UTM_FLIGHT_STATE_UNKNOWN","UTM_GLOBAL_POSITION","UTM_GLOBAL_POSITION_DATA","UavcanNodeHealth","UavcanNodeMode","UtmDataAvailFlags","UtmFlightState","V2_EXTENSION","V2_EXTENSION_DATA","VFR_HUD","VFR_HUD_DATA","VIBRATION","VIBRATION_DATA","VICON_POSITION_ESTIMATE","VICON_POSITION_ESTIMATE_DATA","VIDEO_STREAM_INFORMATION","VIDEO_STREAM_INFORMATION_DATA","VIDEO_STREAM_STATUS","VIDEO_STREAM_STATUS_DATA","VIDEO_STREAM_STATUS_FLAGS_RUNNING","VIDEO_STREAM_STATUS_FLAGS_THERMAL","VIDEO_STREAM_TYPE_MPEG_TS_H264","VIDEO_STREAM_TYPE_RTPUDP","VIDEO_STREAM_TYPE_RTSP","VIDEO_STREAM_TYPE_TCP_MPEG","VISION_POSITION_ESTIMATE","VISION_POSITION_ESTIMATE_DATA","VISION_SPEED_ESTIMATE","VISION_SPEED_ESTIMATE_DATA","VTOL_TRANSITION_HEADING_ANY","VTOL_TRANSITION_HEADING_NEXT_WAYPOINT","VTOL_TRANSITION_HEADING_SPECIFIED","VTOL_TRANSITION_HEADING_TAKEOFF","VTOL_TRANSITION_HEADING_VEHICLE_DEFAULT","Vcc","VideoStreamStatusFlags","VideoStreamType","Vservo","VtolTransitionHeading","WHEEL_DISTANCE","WHEEL_DISTANCE_DATA","WIFI_CONFIG_AP","WIFI_CONFIG_AP_DATA","WIFI_CONFIG_AP_MODE_AP","WIFI_CONFIG_AP_MODE_DISABLED","WIFI_CONFIG_AP_MODE_STATION","WIFI_CONFIG_AP_MODE_UNDEFINED","WIFI_CONFIG_AP_RESPONSE_ACCEPTED","WIFI_CONFIG_AP_RESPONSE_MODE_ERROR","WIFI_CONFIG_AP_RESPONSE_PASSWORD_ERROR","WIFI_CONFIG_AP_RESPONSE_REJECTED","WIFI_CONFIG_AP_RESPONSE_SSID_ERROR","WIFI_CONFIG_AP_RESPONSE_UNDEFINED","WINCH_ABANDON_LINE","WINCH_DELIVER","WINCH_HOLD","WINCH_LOAD_LINE","WINCH_LOAD_PAYLOAD","WINCH_LOCK","WINCH_RATE_CONTROL","WINCH_RELATIVE_LENGTH_CONTROL","WINCH_RELAXED","WINCH_RETRACT","WINCH_STATUS","WINCH_STATUS_DATA","WIND_COV","WIND_COV_DATA","WifiConfigApMode","WifiConfigApResponse","WinchActions","ZOOM_TYPE_CONTINUOUS","ZOOM_TYPE_FOCAL_LENGTH","ZOOM_TYPE_RANGE","ZOOM_TYPE_STEP","abs_pressure","abs_pressure","acc","acc_x","acc_y","acc_z","accuracy","accuracy","ack","action","active","actuator","address","afx","afx","afx","afx","afy","afy","afy","afy","afz","afz","afz","afz","airspeed","airspeed","airspeed","airspeed","airspeed_sp","airspeed_sp","all","all","all","all","all","all","all","all","all","all","all","all","all","all","all","all","all","all","all","all","all","all","all","all","all","alt","alt","alt","alt","alt","alt","alt","alt","alt","alt","alt","alt","alt","alt","alt","alt","alt_camera","alt_error","alt_image","altitude","altitude","altitude","altitude","altitude","altitude","altitude_amsl","altitude_amsl","altitude_barometric","altitude_geodetic","altitude_local","altitude_minimum_delta","altitude_monotonic","altitude_relative","altitude_sp","altitude_terrain","altitude_type","angle_x","angle_y","angular_velocity_x","angular_velocity_x","angular_velocity_x","angular_velocity_y","angular_velocity_y","angular_velocity_y","angular_velocity_z","angular_velocity_z","angular_velocity_z","apn","approach_x","approach_x","approach_y","approach_y","approach_z","approach_z","area_ceiling","area_count","area_floor","area_radius","arguments","arming_time_utc","array_id","aspd_error","attitude_q","attitude_quaternion","authentication_data","authentication_type","autocontinue","autocontinue","autocontinue","autopilot","autopilot","autosaved","aux1","aux2","aux3","aux4","available_capacity","available_capacity","ax","ay","az","barometer_accuracy","barometric_pressure","base_mode","base_mode","base_mode","baseline_a_mm","baseline_a_mm","baseline_b_mm","baseline_b_mm","baseline_c_mm","baseline_c_mm","baseline_coords_type","baseline_coords_type","bat_current_setpoint","battery","battery_current","battery_function","battery_function","battery_remaining","battery_remaining","battery_remaining","baudrate","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitrate","bitrate","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","board_version","body_pitch_rate","body_pitch_rate","body_roll_rate","body_roll_rate","body_yaw_rate","body_yaw_rate","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","bottom_clearance","breach_count","breach_status","breach_time","breach_type","bus","bus","bus","bus_voltage","buttons","cal_mask","cal_status","callsign","callsign","cam_definition_uri","cam_definition_version","camera_id","cap_flags","cap_flags","capabilities","capacity_full","capacity_full_specification","capture_result","category_eu","chan10_raw","chan10_raw","chan11_raw","chan11_raw","chan12_raw","chan12_raw","chan13_raw","chan14_raw","chan15_raw","chan16_raw","chan17_raw","chan18_raw","chan1_raw","chan1_raw","chan1_raw","chan1_raw","chan1_scaled","chan2_raw","chan2_raw","chan2_raw","chan2_raw","chan2_scaled","chan3_raw","chan3_raw","chan3_raw","chan3_raw","chan3_scaled","chan4_raw","chan4_raw","chan4_raw","chan4_raw","chan4_scaled","chan5_raw","chan5_raw","chan5_raw","chan5_raw","chan5_scaled","chan6_raw","chan6_raw","chan6_raw","chan6_raw","chan6_scaled","chan7_raw","chan7_raw","chan7_raw","chan7_raw","chan7_scaled","chan8_raw","chan8_raw","chan8_raw","chan8_raw","chan8_scaled","chan9_raw","chan9_raw","chancount","charging_minimum_voltage","child_frame_id","class_eu","classification_type","climb","climb_rate","climb_rate","clipping_0","clipping_1","clipping_2","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cog","cog","cog","command","command","command","command","command","command","command","commanded_action","compass_id","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","confirmation","connection_type","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","control_request","control_request","controls","controls","controls","coordinate_frame","coordinate_frame","coordinate_frame","coordinate_frame","count","count","count","count","count","count","count","counter","covariance","covariance","covariance","covariance","cpu_combined","cpu_cores","current","current","current","current","current","current_battery","current_battery","current_consumed","current_distance","current_height","custom0","custom1","custom2","custom_cap_flags","custom_mode","custom_mode","custom_mode","custom_mode","custom_name","custom_state","cycle_count","cylinder_head_temperature","data","data","data","data","data","data","data","data","data","data","data_page","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default_message_from_id","delta","description","description_type","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","destination_component","destination_system","device","device_name","dgps_age","dgps_numch","diag_x","diag_y","diag_z","diff_pressure","diff_pressure","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","dimension_bow","dimension_port","dimension_starboard","dimension_stern","direction","discharge_minimum_voltage","dist","distance","distance","distance","distance","distances","drop_rate_comm","ecu_index","emitter_type","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","enable_lte","enable_pin","end","end_index","end_index","energy_consumed","engine_load","eph","eph","eph","eph","epv","epv","epv","epv","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","error","error_count","errors_comm","errors_count1","errors_count2","errors_count3","errors_count4","est_capabilities","estimator_status","estimator_type","estimator_type","event_time_boot_ms","exhaust_gas_temperature","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extra_crc","failed_sessions","failsafe","failure_flags","failure_flags","failure_flags","failure_reason","fan_speed","feed_forward_angular_velocity_z","fields_updated","fields_updated","file_crc","file_url","firmware_version","firmware_version","first_message_offset","first_message_offset","first_sequence","fitness","fix_type","fix_type","fix_type","fix_type","fixed","flags","flags","flags","flags","flags","flags","flags","flags","flags","flags","flags","flags","flags","flags","flags","flags","flags","flags","flight_custom_version","flight_state","flight_sw_version","flight_uuid","flow_comp_m_x","flow_comp_m_y","flow_x","flow_y","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","focal_length","format","format","frame","frame","frame","frame","frame","frame","frame","frame_id","framerate","framerate","frequency","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","fuel_consumed","fuel_flow","gcs_system_id","general_metadata_file_crc","general_metadata_uri","generator_speed","generator_temperature","gimbal_device_id","gimbal_device_id","gimbal_device_id","gimbal_device_id","gimbal_device_id","gps_fix_type","gps_id","gps_nsat","gpu_combined","gpu_cores","grid_spacing","grid_spacing","gridbit","ground_distance","groundspeed","groundspeed","groundspeed","group_mlx","group_mlx","h_acc","h_acc","hagl_ratio","hardware_version","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hdg","hdg","hdg_acc","hdop","heading","heading","heading","heading","heading","heading_sp","health","health","height","height","height_reference","hfov","hfov","hfov","hor_velocity","horiz_accuracy","horiz_accuracy","horizontal_accuracy","horizontal_minimum_delta","humidity","hw_unique_id","hw_version_major","hw_version_minor","iar_num_hypotheses","iar_num_hypotheses","id","id","id","id","id","id","id","id","id","id","id","id_or_mac","id_or_mac","id_or_mac","id_or_mac","id_or_mac","id_or_mac","id_or_mac","id_type","ids","ignition_timing","ignore_flags","image_index","image_interval","image_status","increment","ind","ind_airspeed","index","index","index","info","initial_timestamp","injection_time","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","intake_manifold_pressure","intake_manifold_temperature","integrated_x","integrated_x","integrated_xgyro","integrated_xgyro","integrated_y","integrated_y","integrated_ygyro","integrated_ygyro","integrated_zgyro","integrated_zgyro","integration_time_us","integration_time_us","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","interval_us","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","jpg_quality","key","lac","land","landed_state","landed_state","landed_state","last_change_ms","last_heartbeat","last_log_num","last_page_index","last_sequence","lat","lat","lat","lat","lat","lat","lat","lat","lat","lat","lat","lat","lat","lat","lat","lat","lat","lat","lat","lat_camera","lat_image","lat_int","lat_int","latitude","latitude","latitude","latitude","latitude","latitude","latitude","len","len","len","len","length","length","length","lens_id","library_version_hash","line_length","link_rx_max","link_rx_rate","link_tx_max","link_tx_rate","link_type","load","load_current","loaded","log_levels","lon","lon","lon","lon","lon","lon","lon","lon","lon","lon","lon","lon","lon","lon","lon","lon","lon","lon","lon","lon_camera","lon_image","lon_int","lon_int","longitude","longitude","longitude","longitude","longitude","longitude","longitude","mag_ratio","manual_override_switch","mask","mavlink_version","mavtype","mavtype","mavtype","mavtype","mavtype","mavtype","mavtype","mavtype","mavtype","mavtype","mavtype","mavtype","max_distance","max_distance","max_version","mcc","message_id","message_id","message_id_from_name","message_name","message_rate","message_type","messages","messages_lost","messages_received","messages_sent","middleware_custom_version","middleware_sw_version","min_distance","min_distance","min_version","mission_end","mission_next_item","mnc","mode","mode","mode","mode_id","mode_switch","model_name","model_name","msg_pack_size","name","name","name","name","name","name","name","nav_bearing","nav_mode","nav_pitch","nav_roll","navigational_status","new_pin","next_alt","next_lat","next_lon","noise","not","not","not","not","not","not","not","not","not","not","not","not","not","not","not","not","not","not","not","not","not","not","not","not","not","nsats","nsats","num_ids","num_logs","offdiag_x","offdiag_y","offdiag_z","ofs","ofs","ofs_x","ofs_y","ofs_z","on_off","onboard_control_sensors_enabled","onboard_control_sensors_health","onboard_control_sensors_present","operation","operator_altitude_geo","operator_altitude_geo","operator_id","operator_id_type","operator_latitude","operator_latitude","operator_location_type","operator_longitude","operator_longitude","orientation","os_custom_version","os_sw_version","p1x","p1x","p1y","p1y","p1z","p1z","p2x","p2x","p2y","p2y","p2z","p2z","packets","param1","param1","param1","param1","param2","param2","param2","param2","param3","param3","param3","param3","param4","param4","param4","param4","param5","param6","param7","param_count","param_count","param_id","param_id","param_id","param_id","param_id","param_id","param_id","param_id","param_index","param_index","param_index","param_index","param_index","param_result","param_type","param_type","param_type","param_type","param_type","param_value","param_value","param_value","param_value","param_value","param_value0","param_value_max","param_value_min","parameter_rc_channel_index","parse","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","passkey","password","payload","payload","payload","payload","payload_length","payload_type","pending","peripherals_metadata_file_crc","peripherals_metadata_uri","pin","pitch","pitch","pitch","pitch","pitch","pitch","pitch","pitch","pitch","pitch","pitch","pitch","pitch_elevator","pitch_max","pitch_max","pitch_min","pitch_min","pitch_rate","pitch_rate","pitch_rate","pitchspeed","pitchspeed","pitchspeed","pitchspeed","pitchspeed","pitchspeed","point_x","point_y","port","port","port","pos_horiz_accuracy","pos_horiz_ratio","pos_variance","pos_vert_accuracy","pos_vert_ratio","pos_x","pos_x","pos_y","pos_y","pos_yaw","pos_yaw","pos_z","pos_z","pose_covariance","position_cov","power_generated","press_abs","press_abs","press_abs","press_abs","press_diff","press_diff","press_diff","press_diff1","press_diff2","pressure_alt","pressure_alt","primary_control_compid","primary_control_sysid","product_id","pt_compensation","puk","q","q","q","q","q","q","q","q","q","q","q","q","q","q","q1","q1","q2","q2","q3","q3","q4","q4","q_estimated_delay_us","quality","quality","quality","quality","r","radius","radius","ram_total","ram_usage","rates","read_speed","reason","rec_bottom_x","rec_bottom_y","rec_top_x","rec_top_y","recording_time_ms","rectifier_temperature","relative_alt","relative_alt","relative_alt","relative_alt","remnoise","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remrssi","req_message_rate","req_stream_id","request_id","resolution_h","resolution_h","resolution_h","resolution_v","resolution_v","resolution_v","response","resting_minimum_voltage","result","ring_pending","roaming","roll","roll","roll","roll","roll","roll","roll","roll","roll","roll","roll_ailerons","roll_max","roll_max","roll_min","roll_min","roll_rate","rollspeed","rollspeed","rollspeed","rollspeed","rollspeed","rollspeed","rotation","rotation","rpm","rpm","rssi","rssi","rssi","rssi","rssi","rtk_health","rtk_health","rtk_rate","rtk_rate","rtk_receiver_id","rtk_receiver_id","runtime","rx_buf","rx_overflows","rx_parse_err","rx_rate","rx_session_pending","rxerrors","safe_return","satellite_azimuth","satellite_elevation","satellite_prn","satellite_snr","satellite_used","satellites_visible","satellites_visible","satellites_visible","satellites_visible","satellites_visible","scale","secondary_control_compid","secondary_control_sysid","secret_key","sensor_id","sensor_id","sensor_id","sensor_size_h","sensor_size_v","sensor_type","seq","seq","seq","seq","seq","seq","seq","seq","seq","seqnr","sequence","sequence","sequence","sequence","sequence","sequence","sequence_oldest_available","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","serial_number","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","servo1_raw","servo2_raw","servo3_raw","servo4_raw","servo5_raw","servo6_raw","servo7_raw","servo8_raw","set","set","set","set","set","set","set","set","set","set","set","set","set","set","set","set","set","set","set","set","set","set","set","set","set","severity","signal_quality","single_message_size","size","size","size_x","size_y","spacing","spark_dwell_time","spec_version_hash","speed","speed_accuracy","speed_accuracy","speed_horizontal","speed_vertical","squawk","src","ssid","start","start_index","start_index","start_stop","state","status","status","status","status","status","status","std_dev_horz","std_dev_vert","storage","storage_count","storage_id","storage_total","storage_type","storage_usage","stream_id","stream_id","stream_id","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_mode","successful_sessions","sw_vcs_commit","sw_version_major","sw_version_minor","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","system_status","takeoff_time_utc","target","target_altitude","target_bearing","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_data","target_distance","target_heading","target_network","target_network","target_num","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","tas_ratio","tc1","temperature","temperature","temperature","temperature","temperature","temperature","temperature","temperature","temperature","temperature","temperature","temperature","temperature","temperature_air","temperature_air","temperature_board","temperature_core","tension","terrain_height","text","threat_level","throttle","throttle","throttle","throttle","throttle_out","throttle_position","thrust","thrust","thrust","time","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_us","time_delta_distance_us","time_delta_distance_us","time_last_baseline_ms","time_last_baseline_ms","time_to_minimum_delta","time_unix_usec","time_until_maintenance","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_utc","time_utc","time_week","time_week_ms","timeout","timestamp","timestamp","timestamp","timestamp","timestamp","timestamp","timestamp","timestamp","timestamp_accuracy","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","total_capacity","tow","tow","tracking_mode","tracking_status","tracking_status","transfer_type","true_airspeed","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","ts1","tslc","tslc","tune","tune","turn_rate","tx_buf","tx_overflows","tx_rate","tx_session_pending","txbuf","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_mask","type_mask","type_mask","type_mask","type_mask","type_mask","ua_type","uas_id","uas_id","uid","uid","union","union","union","union","union","union","union","union","union","union","union","union","union","union","union","union","union","union","union","union","union","union","union","union","union","update_rate","uptime","uptime_sec","uptime_sec","uri","uri","uri","uri_type","usec","usec","usec","usec","used_capacity","v_acc","v_acc","v_estimated_delay_us","valid_points","valid_points","value","value","value","value","var_horiz","var_vert","vd","vd","vd","vdop","ve","ve","ve","vel","vel","vel","vel","vel_acc","vel_acc","vel_d","vel_e","vel_n","vel_ratio","vel_variance","vel_x","vel_y","vel_yaw","vel_z","velocity","velocity_covariance","vendor_id","vendor_name","vendor_name","vendor_specific_status_code","ver","ver_velocity","version","version","vert_accuracy","vert_accuracy","vertical_accuracy","vfov","vibration_x","vibration_y","vibration_z","video_status","vn","vn","vn","voltage","voltage","voltage_battery","voltages","vtol_state","vx","vx","vx","vx","vx","vx","vx","vx","vx","vx","vx","vx","vx","vy","vy","vy","vy","vy","vy","vy","vy","vy","vy","vy","vy","vy","vz","vz","vz","vz","vz","vz","vz","vz","vz","vz","vz","vz","vz","weight","width","wind_alt","wind_heading","wind_x","wind_y","wind_z","windspeed","wn","wn","wp_dist","wp_distance","wp_num","wp_num","write_speed","x","x","x","x","x","x","x","x","x","x","x","x","x","x","x","x","x","x","x","x_acc","x_pos","x_vel","xacc","xacc","xacc","xacc","xacc","xacc","xacc","xacc","xacc","xgyro","xgyro","xgyro","xgyro","xgyro","xgyro","xgyro","xmag","xmag","xmag","xmag","xmag","xmag","xtrack_error","y","y","y","y","y","y","y","y","y","y","y","y","y","y","y","y","y","y","y","y_acc","y_pos","y_vel","yacc","yacc","yacc","yacc","yacc","yacc","yacc","yacc","yacc","yaw","yaw","yaw","yaw","yaw","yaw","yaw","yaw","yaw","yaw","yaw","yaw","yaw","yaw","yaw","yaw_max","yaw_max","yaw_min","yaw_min","yaw_rate","yaw_rate","yaw_rate","yaw_rate","yaw_rate","yaw_rate","yaw_rate","yaw_rudder","yawspeed","yawspeed","yawspeed","yawspeed","yawspeed","yawspeed","ygyro","ygyro","ygyro","ygyro","ygyro","ygyro","ygyro","ymag","ymag","ymag","ymag","ymag","ymag","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z_acc","z_pos","z_vel","zacc","zacc","zacc","zacc","zacc","zacc","zacc","zacc","zacc","zgyro","zgyro","zgyro","zgyro","zgyro","zgyro","zgyro","zmag","zmag","zmag","zmag","zmag","zmag","InvalidEnum","InvalidFlag","Io","Io","MessageReadError","MessageWriteError","Parse","ParserError","UnknownMessage","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","into","into","into","to_string","to_string","to_string","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","enum_type","flag_type","id","value","value","DEFAULT","DEFAULT","DEFAULT","DEFAULT","ENCODED_LEN","ENCODED_LEN","ICAROUS_FMS_STATE_APPROACH","ICAROUS_FMS_STATE_CLIMB","ICAROUS_FMS_STATE_CRUISE","ICAROUS_FMS_STATE_IDLE","ICAROUS_FMS_STATE_LAND","ICAROUS_FMS_STATE_TAKEOFF","ICAROUS_HEARTBEAT","ICAROUS_HEARTBEAT_DATA","ICAROUS_KINEMATIC_BANDS","ICAROUS_KINEMATIC_BANDS_DATA","ICAROUS_TRACK_BAND_TYPE_NEAR","ICAROUS_TRACK_BAND_TYPE_NONE","ICAROUS_TRACK_BAND_TYPE_RECOVERY","IcarousFmsState","IcarousTrackBandTypes","MavMessage","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","default","default","default","default","default_message_from_id","deser","deser","deserialize","deserialize","deserialize","deserialize","deserialize","eq","eq","eq","eq","eq","extra_crc","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from_i64","from_i64","from_u64","from_u64","into","into","into","into","into","max1","max2","max3","max4","max5","message_id","message_id_from_name","message_name","min1","min2","min3","min4","min5","numBands","parse","ser","ser","ser","serialize","serialize","serialize","serialize","serialize","status","to_i64","to_i64","to_owned","to_owned","to_owned","to_owned","to_owned","to_u64","to_u64","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type1","type2","type3","type4","type5","type_id","type_id","type_id","type_id","type_id","PeekReader","borrow","borrow_mut","consume","from","into","new","peek_exact","read_exact","read_u8","reader_mut","reader_ref","try_from","try_into","type_id","ACTUATOR_CONFIGURATION_3D_MODE_OFF","ACTUATOR_CONFIGURATION_3D_MODE_ON","ACTUATOR_CONFIGURATION_BEEP","ACTUATOR_CONFIGURATION_NONE","ACTUATOR_CONFIGURATION_SPIN_DIRECTION1","ACTUATOR_CONFIGURATION_SPIN_DIRECTION2","ACTUATOR_CONTROL_TARGET","ACTUATOR_CONTROL_TARGET_DATA","ACTUATOR_OUTPUT_FUNCTION_MOTOR1","ACTUATOR_OUTPUT_FUNCTION_MOTOR10","ACTUATOR_OUTPUT_FUNCTION_MOTOR11","ACTUATOR_OUTPUT_FUNCTION_MOTOR12","ACTUATOR_OUTPUT_FUNCTION_MOTOR13","ACTUATOR_OUTPUT_FUNCTION_MOTOR14","ACTUATOR_OUTPUT_FUNCTION_MOTOR15","ACTUATOR_OUTPUT_FUNCTION_MOTOR16","ACTUATOR_OUTPUT_FUNCTION_MOTOR2","ACTUATOR_OUTPUT_FUNCTION_MOTOR3","ACTUATOR_OUTPUT_FUNCTION_MOTOR4","ACTUATOR_OUTPUT_FUNCTION_MOTOR5","ACTUATOR_OUTPUT_FUNCTION_MOTOR6","ACTUATOR_OUTPUT_FUNCTION_MOTOR7","ACTUATOR_OUTPUT_FUNCTION_MOTOR8","ACTUATOR_OUTPUT_FUNCTION_MOTOR9","ACTUATOR_OUTPUT_FUNCTION_NONE","ACTUATOR_OUTPUT_FUNCTION_SERVO1","ACTUATOR_OUTPUT_FUNCTION_SERVO10","ACTUATOR_OUTPUT_FUNCTION_SERVO11","ACTUATOR_OUTPUT_FUNCTION_SERVO12","ACTUATOR_OUTPUT_FUNCTION_SERVO13","ACTUATOR_OUTPUT_FUNCTION_SERVO14","ACTUATOR_OUTPUT_FUNCTION_SERVO15","ACTUATOR_OUTPUT_FUNCTION_SERVO16","ACTUATOR_OUTPUT_FUNCTION_SERVO2","ACTUATOR_OUTPUT_FUNCTION_SERVO3","ACTUATOR_OUTPUT_FUNCTION_SERVO4","ACTUATOR_OUTPUT_FUNCTION_SERVO5","ACTUATOR_OUTPUT_FUNCTION_SERVO6","ACTUATOR_OUTPUT_FUNCTION_SERVO7","ACTUATOR_OUTPUT_FUNCTION_SERVO8","ACTUATOR_OUTPUT_FUNCTION_SERVO9","ACTUATOR_OUTPUT_STATUS","ACTUATOR_OUTPUT_STATUS_DATA","ADSB_ALTITUDE_TYPE_GEOMETRIC","ADSB_ALTITUDE_TYPE_PRESSURE_QNH","ADSB_EMITTER_TYPE_EMERGENCY_SURFACE","ADSB_EMITTER_TYPE_GLIDER","ADSB_EMITTER_TYPE_HEAVY","ADSB_EMITTER_TYPE_HIGHLY_MANUV","ADSB_EMITTER_TYPE_HIGH_VORTEX_LARGE","ADSB_EMITTER_TYPE_LARGE","ADSB_EMITTER_TYPE_LIGHT","ADSB_EMITTER_TYPE_LIGHTER_AIR","ADSB_EMITTER_TYPE_NO_INFO","ADSB_EMITTER_TYPE_PARACHUTE","ADSB_EMITTER_TYPE_POINT_OBSTACLE","ADSB_EMITTER_TYPE_ROTOCRAFT","ADSB_EMITTER_TYPE_SERVICE_SURFACE","ADSB_EMITTER_TYPE_SMALL","ADSB_EMITTER_TYPE_SPACE","ADSB_EMITTER_TYPE_UAV","ADSB_EMITTER_TYPE_ULTRA_LIGHT","ADSB_EMITTER_TYPE_UNASSGINED3","ADSB_EMITTER_TYPE_UNASSIGNED","ADSB_EMITTER_TYPE_UNASSIGNED2","ADSB_FLAGS_BARO_VALID","ADSB_FLAGS_SIMULATED","ADSB_FLAGS_SOURCE_UAT","ADSB_FLAGS_VALID_ALTITUDE","ADSB_FLAGS_VALID_CALLSIGN","ADSB_FLAGS_VALID_COORDS","ADSB_FLAGS_VALID_HEADING","ADSB_FLAGS_VALID_SQUAWK","ADSB_FLAGS_VALID_VELOCITY","ADSB_FLAGS_VERTICAL_VELOCITY_VALID","ADSB_VEHICLE","ADSB_VEHICLE_DATA","AIS_FLAGS_HIGH_VELOCITY","AIS_FLAGS_LARGE_BOW_DIMENSION","AIS_FLAGS_LARGE_PORT_DIMENSION","AIS_FLAGS_LARGE_STARBOARD_DIMENSION","AIS_FLAGS_LARGE_STERN_DIMENSION","AIS_FLAGS_POSITION_ACCURACY","AIS_FLAGS_TURN_RATE_SIGN_ONLY","AIS_FLAGS_VALID_CALLSIGN","AIS_FLAGS_VALID_COG","AIS_FLAGS_VALID_DIMENSIONS","AIS_FLAGS_VALID_NAME","AIS_FLAGS_VALID_TURN_RATE","AIS_FLAGS_VALID_VELOCITY","AIS_NAV_AGROUND","AIS_NAV_AIS_SART","AIS_NAV_ANCHORED","AIS_NAV_DRAUGHT_CONSTRAINED","AIS_NAV_FISHING","AIS_NAV_MOORED","AIS_NAV_RESERVED_1","AIS_NAV_RESERVED_2","AIS_NAV_RESERVED_3","AIS_NAV_RESERVED_HSC","AIS_NAV_RESERVED_WIG","AIS_NAV_RESTRICTED_MANOEUVERABILITY","AIS_NAV_SAILING","AIS_NAV_UNKNOWN","AIS_NAV_UN_COMMANDED","AIS_TYPE_ANTI_POLLUTION","AIS_TYPE_CARGO","AIS_TYPE_CARGO_HAZARDOUS_A","AIS_TYPE_CARGO_HAZARDOUS_B","AIS_TYPE_CARGO_HAZARDOUS_C","AIS_TYPE_CARGO_HAZARDOUS_D","AIS_TYPE_CARGO_RESERVED_1","AIS_TYPE_CARGO_RESERVED_2","AIS_TYPE_CARGO_RESERVED_3","AIS_TYPE_CARGO_RESERVED_4","AIS_TYPE_CARGO_UNKNOWN","AIS_TYPE_DIVING","AIS_TYPE_DREDGING","AIS_TYPE_FISHING","AIS_TYPE_HSC","AIS_TYPE_HSC_HAZARDOUS_A","AIS_TYPE_HSC_HAZARDOUS_B","AIS_TYPE_HSC_HAZARDOUS_C","AIS_TYPE_HSC_HAZARDOUS_D","AIS_TYPE_HSC_RESERVED_1","AIS_TYPE_HSC_RESERVED_2","AIS_TYPE_HSC_RESERVED_3","AIS_TYPE_HSC_RESERVED_4","AIS_TYPE_HSC_UNKNOWN","AIS_TYPE_LAW_ENFORCEMENT","AIS_TYPE_MEDICAL_TRANSPORT","AIS_TYPE_MILITARY","AIS_TYPE_NONECOMBATANT","AIS_TYPE_OTHER","AIS_TYPE_OTHER_HAZARDOUS_A","AIS_TYPE_OTHER_HAZARDOUS_B","AIS_TYPE_OTHER_HAZARDOUS_C","AIS_TYPE_OTHER_HAZARDOUS_D","AIS_TYPE_OTHER_RESERVED_1","AIS_TYPE_OTHER_RESERVED_2","AIS_TYPE_OTHER_RESERVED_3","AIS_TYPE_OTHER_RESERVED_4","AIS_TYPE_OTHER_UNKNOWN","AIS_TYPE_PASSENGER","AIS_TYPE_PASSENGER_HAZARDOUS_A","AIS_TYPE_PASSENGER_HAZARDOUS_B","AIS_TYPE_PASSENGER_HAZARDOUS_C","AIS_TYPE_PASSENGER_HAZARDOUS_D","AIS_TYPE_PASSENGER_RESERVED_1","AIS_TYPE_PASSENGER_RESERVED_2","AIS_TYPE_PASSENGER_RESERVED_3","AIS_TYPE_PASSENGER_RESERVED_4","AIS_TYPE_PASSENGER_UNKNOWN","AIS_TYPE_PILOT","AIS_TYPE_PLEASURE","AIS_TYPE_PORT_TENDER","AIS_TYPE_RESERVED_1","AIS_TYPE_RESERVED_10","AIS_TYPE_RESERVED_11","AIS_TYPE_RESERVED_12","AIS_TYPE_RESERVED_13","AIS_TYPE_RESERVED_14","AIS_TYPE_RESERVED_15","AIS_TYPE_RESERVED_16","AIS_TYPE_RESERVED_17","AIS_TYPE_RESERVED_18","AIS_TYPE_RESERVED_19","AIS_TYPE_RESERVED_2","AIS_TYPE_RESERVED_20","AIS_TYPE_RESERVED_21","AIS_TYPE_RESERVED_3","AIS_TYPE_RESERVED_4","AIS_TYPE_RESERVED_5","AIS_TYPE_RESERVED_6","AIS_TYPE_RESERVED_7","AIS_TYPE_RESERVED_8","AIS_TYPE_RESERVED_9","AIS_TYPE_SAILING","AIS_TYPE_SAR","AIS_TYPE_SPARE_LOCAL_1","AIS_TYPE_SPARE_LOCAL_2","AIS_TYPE_TANKER","AIS_TYPE_TANKER_HAZARDOUS_A","AIS_TYPE_TANKER_HAZARDOUS_B","AIS_TYPE_TANKER_HAZARDOUS_C","AIS_TYPE_TANKER_HAZARDOUS_D","AIS_TYPE_TANKER_RESERVED_1","AIS_TYPE_TANKER_RESERVED_2","AIS_TYPE_TANKER_RESERVED_3","AIS_TYPE_TANKER_RESERVED_4","AIS_TYPE_TANKER_UNKNOWN","AIS_TYPE_TOWING","AIS_TYPE_TOWING_LARGE","AIS_TYPE_TUG","AIS_TYPE_UNKNOWN","AIS_TYPE_WIG","AIS_TYPE_WIG_HAZARDOUS_A","AIS_TYPE_WIG_HAZARDOUS_B","AIS_TYPE_WIG_HAZARDOUS_C","AIS_TYPE_WIG_HAZARDOUS_D","AIS_TYPE_WIG_RESERVED_1","AIS_TYPE_WIG_RESERVED_2","AIS_TYPE_WIG_RESERVED_3","AIS_TYPE_WIG_RESERVED_4","AIS_TYPE_WIG_RESERVED_5","AIS_VESSEL","AIS_VESSEL_DATA","ALTITUDE","ALTITUDE_DATA","ATTITUDE","ATTITUDE_DATA","ATTITUDE_QUATERNION","ATTITUDE_QUATERNION_COV","ATTITUDE_QUATERNION_COV_DATA","ATTITUDE_QUATERNION_DATA","ATTITUDE_TARGET","ATTITUDE_TARGET_DATA","ATTITUDE_TARGET_TYPEMASK_ATTITUDE_IGNORE","ATTITUDE_TARGET_TYPEMASK_BODY_PITCH_RATE_IGNORE","ATTITUDE_TARGET_TYPEMASK_BODY_ROLL_RATE_IGNORE","ATTITUDE_TARGET_TYPEMASK_BODY_YAW_RATE_IGNORE","ATTITUDE_TARGET_TYPEMASK_THROTTLE_IGNORE","ATTITUDE_TARGET_TYPEMASK_THRUST_BODY_SET","ATT_POS_MOCAP","ATT_POS_MOCAP_DATA","AUTH_KEY","AUTH_KEY_DATA","AUTOPILOT_STATE_FOR_GIMBAL_DEVICE","AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA","AUTOPILOT_VERSION","AUTOPILOT_VERSION_DATA","AUTOTUNE_AXIS_DEFAULT","AUTOTUNE_AXIS_PITCH","AUTOTUNE_AXIS_ROLL","AUTOTUNE_AXIS_YAW","ActuatorConfiguration","ActuatorOutputFunction","AdsbAltitudeType","AdsbEmitterType","AdsbFlags","AisFlags","AisNavStatus","AisType","AttitudeTargetTypemask","AutotuneAxis","BATTERY_FAULT_INCOMPATIBLE_CELLS_CONFIGURATION","BATTERY_STATUS","BATTERY_STATUS_DATA","BUTTON_CHANGE","BUTTON_CHANGE_DATA","CAMERA_CAPTURE_STATUS","CAMERA_CAPTURE_STATUS_DATA","CAMERA_CAP_FLAGS_CAN_CAPTURE_IMAGE_IN_VIDEO_MODE","CAMERA_CAP_FLAGS_CAN_CAPTURE_VIDEO_IN_IMAGE_MODE","CAMERA_CAP_FLAGS_CAPTURE_IMAGE","CAMERA_CAP_FLAGS_CAPTURE_VIDEO","CAMERA_CAP_FLAGS_HAS_BASIC_FOCUS","CAMERA_CAP_FLAGS_HAS_BASIC_ZOOM","CAMERA_CAP_FLAGS_HAS_IMAGE_SURVEY_MODE","CAMERA_CAP_FLAGS_HAS_MODES","CAMERA_CAP_FLAGS_HAS_TRACKING_GEO_STATUS","CAMERA_CAP_FLAGS_HAS_TRACKING_POINT","CAMERA_CAP_FLAGS_HAS_TRACKING_RECTANGLE","CAMERA_CAP_FLAGS_HAS_VIDEO_STREAM","CAMERA_FOV_STATUS","CAMERA_FOV_STATUS_DATA","CAMERA_IMAGE_CAPTURED","CAMERA_IMAGE_CAPTURED_DATA","CAMERA_INFORMATION","CAMERA_INFORMATION_DATA","CAMERA_MODE_IMAGE","CAMERA_MODE_IMAGE_SURVEY","CAMERA_MODE_VIDEO","CAMERA_SETTINGS","CAMERA_SETTINGS_DATA","CAMERA_TRACKING_GEO_STATUS","CAMERA_TRACKING_GEO_STATUS_DATA","CAMERA_TRACKING_IMAGE_STATUS","CAMERA_TRACKING_IMAGE_STATUS_DATA","CAMERA_TRACKING_MODE_NONE","CAMERA_TRACKING_MODE_POINT","CAMERA_TRACKING_MODE_RECTANGLE","CAMERA_TRACKING_STATUS_FLAGS_ACTIVE","CAMERA_TRACKING_STATUS_FLAGS_ERROR","CAMERA_TRACKING_STATUS_FLAGS_IDLE","CAMERA_TRACKING_TARGET_DATA_EMBEDDED","CAMERA_TRACKING_TARGET_DATA_IN_STATUS","CAMERA_TRACKING_TARGET_DATA_NONE","CAMERA_TRACKING_TARGET_DATA_RENDERED","CAMERA_TRIGGER","CAMERA_TRIGGER_DATA","CANFD_FRAME","CANFD_FRAME_DATA","CAN_FILTER_ADD","CAN_FILTER_MODIFY","CAN_FILTER_MODIFY_DATA","CAN_FILTER_REMOVE","CAN_FILTER_REPLACE","CAN_FRAME","CAN_FRAME_DATA","CELLULAR_CONFIG","CELLULAR_CONFIG_BLOCKED_PUK_REQUIRED","CELLULAR_CONFIG_DATA","CELLULAR_CONFIG_RESPONSE_ACCEPTED","CELLULAR_CONFIG_RESPONSE_APN_ERROR","CELLULAR_CONFIG_RESPONSE_PIN_ERROR","CELLULAR_CONFIG_RESPONSE_REJECTED","CELLULAR_NETWORK_FAILED_REASON_NONE","CELLULAR_NETWORK_FAILED_REASON_SIM_ERROR","CELLULAR_NETWORK_FAILED_REASON_SIM_MISSING","CELLULAR_NETWORK_FAILED_REASON_UNKNOWN","CELLULAR_NETWORK_RADIO_TYPE_CDMA","CELLULAR_NETWORK_RADIO_TYPE_GSM","CELLULAR_NETWORK_RADIO_TYPE_LTE","CELLULAR_NETWORK_RADIO_TYPE_NONE","CELLULAR_NETWORK_RADIO_TYPE_WCDMA","CELLULAR_STATUS","CELLULAR_STATUS_DATA","CELLULAR_STATUS_FLAG_CONNECTED","CELLULAR_STATUS_FLAG_CONNECTING","CELLULAR_STATUS_FLAG_DISABLED","CELLULAR_STATUS_FLAG_DISABLING","CELLULAR_STATUS_FLAG_DISCONNECTING","CELLULAR_STATUS_FLAG_ENABLED","CELLULAR_STATUS_FLAG_ENABLING","CELLULAR_STATUS_FLAG_FAILED","CELLULAR_STATUS_FLAG_INITIALIZING","CELLULAR_STATUS_FLAG_LOCKED","CELLULAR_STATUS_FLAG_REGISTERED","CELLULAR_STATUS_FLAG_SEARCHING","CELLULAR_STATUS_FLAG_UNKNOWN","CHANGE_OPERATOR_CONTROL","CHANGE_OPERATOR_CONTROL_ACK","CHANGE_OPERATOR_CONTROL_ACK_DATA","CHANGE_OPERATOR_CONTROL_DATA","COG","COLLISION","COLLISION_DATA","COMMAND_ACK","COMMAND_ACK_DATA","COMMAND_CANCEL","COMMAND_CANCEL_DATA","COMMAND_INT","COMMAND_INT_DATA","COMMAND_LONG","COMMAND_LONG_DATA","COMPONENT_INFORMATION","COMPONENT_INFORMATION_DATA","COMPONENT_METADATA","COMPONENT_METADATA_DATA","COMP_METADATA_TYPE_ACTUATORS","COMP_METADATA_TYPE_COMMANDS","COMP_METADATA_TYPE_EVENTS","COMP_METADATA_TYPE_GENERAL","COMP_METADATA_TYPE_PARAMETER","COMP_METADATA_TYPE_PERIPHERALS","CONTROL_SYSTEM_STATE","CONTROL_SYSTEM_STATE_DATA","CURRENT_EVENT_SEQUENCE","CURRENT_EVENT_SEQUENCE_DATA","CameraCapFlags","CameraMode","CameraTrackingMode","CameraTrackingStatusFlags","CameraTrackingTargetData","CameraZoomType","CanFilterOp","CellularConfigResponse","CellularNetworkFailedReason","CellularNetworkRadioType","CellularStatusFlag","CompMetadataType","DATA_STREAM","DATA_STREAM_DATA","DATA_TRANSMISSION_HANDSHAKE","DATA_TRANSMISSION_HANDSHAKE_DATA","DEBUG","DEBUG_DATA","DEBUG_FLOAT_ARRAY","DEBUG_FLOAT_ARRAY_DATA","DEBUG_VECT","DEBUG_VECT_DATA","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DEFAULT","DISTANCE_SENSOR","DISTANCE_SENSOR_DATA","EFI_STATUS","EFI_STATUS_DATA","ENCAPSULATED_DATA","ENCAPSULATED_DATA_DATA","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ENCODED_LEN","ESC_CONNECTION_TYPE_CAN","ESC_CONNECTION_TYPE_DSHOT","ESC_CONNECTION_TYPE_I2C","ESC_CONNECTION_TYPE_ONESHOT","ESC_CONNECTION_TYPE_PPM","ESC_CONNECTION_TYPE_SERIAL","ESC_FAILURE_GENERIC","ESC_FAILURE_INCONSISTENT_CMD","ESC_FAILURE_MOTOR_STUCK","ESC_FAILURE_NONE","ESC_FAILURE_OVER_CURRENT","ESC_FAILURE_OVER_RPM","ESC_FAILURE_OVER_TEMPERATURE","ESC_FAILURE_OVER_VOLTAGE","ESC_INFO","ESC_INFO_DATA","ESC_STATUS","ESC_STATUS_DATA","ESTIMATOR_ACCEL_ERROR","ESTIMATOR_ATTITUDE","ESTIMATOR_CONST_POS_MODE","ESTIMATOR_GPS_GLITCH","ESTIMATOR_POS_HORIZ_ABS","ESTIMATOR_POS_HORIZ_REL","ESTIMATOR_POS_VERT_ABS","ESTIMATOR_POS_VERT_AGL","ESTIMATOR_PRED_POS_HORIZ_ABS","ESTIMATOR_PRED_POS_HORIZ_REL","ESTIMATOR_STATUS","ESTIMATOR_STATUS_DATA","ESTIMATOR_VELOCITY_HORIZ","ESTIMATOR_VELOCITY_VERT","EVENT","EVENT_DATA","EXTENDED_SYS_STATE","EXTENDED_SYS_STATE_DATA","EscConnectionType","EscFailureFlags","EstimatorStatusFlags","FAILURE_TYPE_DELAYED","FAILURE_TYPE_GARBAGE","FAILURE_TYPE_INTERMITTENT","FAILURE_TYPE_OFF","FAILURE_TYPE_OK","FAILURE_TYPE_SLOW","FAILURE_TYPE_STUCK","FAILURE_TYPE_WRONG","FAILURE_UNIT_SENSOR_ACCEL","FAILURE_UNIT_SENSOR_AIRSPEED","FAILURE_UNIT_SENSOR_BARO","FAILURE_UNIT_SENSOR_DISTANCE_SENSOR","FAILURE_UNIT_SENSOR_GPS","FAILURE_UNIT_SENSOR_GYRO","FAILURE_UNIT_SENSOR_MAG","FAILURE_UNIT_SENSOR_OPTICAL_FLOW","FAILURE_UNIT_SENSOR_VIO","FAILURE_UNIT_SYSTEM_AVOIDANCE","FAILURE_UNIT_SYSTEM_BATTERY","FAILURE_UNIT_SYSTEM_MAVLINK_SIGNAL","FAILURE_UNIT_SYSTEM_MOTOR","FAILURE_UNIT_SYSTEM_RC_SIGNAL","FAILURE_UNIT_SYSTEM_SERVO","FENCE_ACTION_GUIDED","FENCE_ACTION_GUIDED_THR_PASS","FENCE_ACTION_HOLD","FENCE_ACTION_LAND","FENCE_ACTION_NONE","FENCE_ACTION_REPORT","FENCE_ACTION_RTL","FENCE_ACTION_TERMINATE","FENCE_BREACH_BOUNDARY","FENCE_BREACH_MAXALT","FENCE_BREACH_MINALT","FENCE_BREACH_NONE","FENCE_MITIGATE_NONE","FENCE_MITIGATE_UNKNOWN","FENCE_MITIGATE_VEL_LIMIT","FENCE_STATUS","FENCE_STATUS_DATA","FILE_TRANSFER_PROTOCOL","FILE_TRANSFER_PROTOCOL_DATA","FIRMWARE_VERSION_TYPE_ALPHA","FIRMWARE_VERSION_TYPE_BETA","FIRMWARE_VERSION_TYPE_DEV","FIRMWARE_VERSION_TYPE_OFFICIAL","FIRMWARE_VERSION_TYPE_RC","FLIGHT_INFORMATION","FLIGHT_INFORMATION_DATA","FOCUS_TYPE_AUTO","FOCUS_TYPE_AUTO_CONTINUOUS","FOCUS_TYPE_AUTO_SINGLE","FOCUS_TYPE_CONTINUOUS","FOCUS_TYPE_METERS","FOCUS_TYPE_RANGE","FOCUS_TYPE_STEP","FOLLOW_TARGET","FOLLOW_TARGET_DATA","FailureType","FailureUnit","FenceAction","FenceBreach","FenceMitigate","FirmwareVersionType","GENERATOR_STATUS","GENERATOR_STATUS_DATA","GIMBAL_DEVICE_ATTITUDE_STATUS","GIMBAL_DEVICE_ATTITUDE_STATUS_DATA","GIMBAL_DEVICE_CAP_FLAGS_HAS_NEUTRAL","GIMBAL_DEVICE_CAP_FLAGS_HAS_PITCH_AXIS","GIMBAL_DEVICE_CAP_FLAGS_HAS_PITCH_FOLLOW","GIMBAL_DEVICE_CAP_FLAGS_HAS_PITCH_LOCK","GIMBAL_DEVICE_CAP_FLAGS_HAS_RC_INPUTS","GIMBAL_DEVICE_CAP_FLAGS_HAS_RETRACT","GIMBAL_DEVICE_CAP_FLAGS_HAS_ROLL_AXIS","GIMBAL_DEVICE_CAP_FLAGS_HAS_ROLL_FOLLOW","GIMBAL_DEVICE_CAP_FLAGS_HAS_ROLL_LOCK","GIMBAL_DEVICE_CAP_FLAGS_HAS_YAW_AXIS","GIMBAL_DEVICE_CAP_FLAGS_HAS_YAW_FOLLOW","GIMBAL_DEVICE_CAP_FLAGS_HAS_YAW_LOCK","GIMBAL_DEVICE_CAP_FLAGS_SUPPORTS_INFINITE_YAW","GIMBAL_DEVICE_CAP_FLAGS_SUPPORTS_YAW_IN_EARTH_FRAME","GIMBAL_DEVICE_ERROR_FLAGS_AT_PITCH_LIMIT","GIMBAL_DEVICE_ERROR_FLAGS_AT_ROLL_LIMIT","GIMBAL_DEVICE_ERROR_FLAGS_AT_YAW_LIMIT","GIMBAL_DEVICE_ERROR_FLAGS_CALIBRATION_RUNNING","GIMBAL_DEVICE_ERROR_FLAGS_COMMS_ERROR","GIMBAL_DEVICE_ERROR_FLAGS_ENCODER_ERROR","GIMBAL_DEVICE_ERROR_FLAGS_MOTOR_ERROR","GIMBAL_DEVICE_ERROR_FLAGS_NO_MANAGER","GIMBAL_DEVICE_ERROR_FLAGS_POWER_ERROR","GIMBAL_DEVICE_ERROR_FLAGS_SOFTWARE_ERROR","GIMBAL_DEVICE_FLAGS_ACCEPTS_YAW_IN_EARTH_FRAME","GIMBAL_DEVICE_FLAGS_NEUTRAL","GIMBAL_DEVICE_FLAGS_PITCH_LOCK","GIMBAL_DEVICE_FLAGS_RC_EXCLUSIVE","GIMBAL_DEVICE_FLAGS_RC_MIXED","GIMBAL_DEVICE_FLAGS_RETRACT","GIMBAL_DEVICE_FLAGS_ROLL_LOCK","GIMBAL_DEVICE_FLAGS_YAW_IN_EARTH_FRAME","GIMBAL_DEVICE_FLAGS_YAW_IN_VEHICLE_FRAME","GIMBAL_DEVICE_FLAGS_YAW_LOCK","GIMBAL_DEVICE_INFORMATION","GIMBAL_DEVICE_INFORMATION_DATA","GIMBAL_DEVICE_SET_ATTITUDE","GIMBAL_DEVICE_SET_ATTITUDE_DATA","GIMBAL_MANAGER_CAP_FLAGS_CAN_POINT_LOCATION_GLOBAL","GIMBAL_MANAGER_CAP_FLAGS_CAN_POINT_LOCATION_LOCAL","GIMBAL_MANAGER_CAP_FLAGS_HAS_NEUTRAL","GIMBAL_MANAGER_CAP_FLAGS_HAS_PITCH_AXIS","GIMBAL_MANAGER_CAP_FLAGS_HAS_PITCH_FOLLOW","GIMBAL_MANAGER_CAP_FLAGS_HAS_PITCH_LOCK","GIMBAL_MANAGER_CAP_FLAGS_HAS_RC_INPUTS","GIMBAL_MANAGER_CAP_FLAGS_HAS_RETRACT","GIMBAL_MANAGER_CAP_FLAGS_HAS_ROLL_AXIS","GIMBAL_MANAGER_CAP_FLAGS_HAS_ROLL_FOLLOW","GIMBAL_MANAGER_CAP_FLAGS_HAS_ROLL_LOCK","GIMBAL_MANAGER_CAP_FLAGS_HAS_YAW_AXIS","GIMBAL_MANAGER_CAP_FLAGS_HAS_YAW_FOLLOW","GIMBAL_MANAGER_CAP_FLAGS_HAS_YAW_LOCK","GIMBAL_MANAGER_CAP_FLAGS_SUPPORTS_INFINITE_YAW","GIMBAL_MANAGER_CAP_FLAGS_SUPPORTS_YAW_IN_EARTH_FRAME","GIMBAL_MANAGER_FLAGS_ACCEPTS_YAW_IN_EARTH_FRAME","GIMBAL_MANAGER_FLAGS_NEUTRAL","GIMBAL_MANAGER_FLAGS_PITCH_LOCK","GIMBAL_MANAGER_FLAGS_RC_EXCLUSIVE","GIMBAL_MANAGER_FLAGS_RC_MIXED","GIMBAL_MANAGER_FLAGS_RETRACT","GIMBAL_MANAGER_FLAGS_ROLL_LOCK","GIMBAL_MANAGER_FLAGS_YAW_IN_EARTH_FRAME","GIMBAL_MANAGER_FLAGS_YAW_IN_VEHICLE_FRAME","GIMBAL_MANAGER_FLAGS_YAW_LOCK","GIMBAL_MANAGER_INFORMATION","GIMBAL_MANAGER_INFORMATION_DATA","GIMBAL_MANAGER_SET_ATTITUDE","GIMBAL_MANAGER_SET_ATTITUDE_DATA","GIMBAL_MANAGER_SET_MANUAL_CONTROL","GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA","GIMBAL_MANAGER_SET_PITCHYAW","GIMBAL_MANAGER_SET_PITCHYAW_DATA","GIMBAL_MANAGER_STATUS","GIMBAL_MANAGER_STATUS_DATA","GLOBAL_POSITION_INT","GLOBAL_POSITION_INT_COV","GLOBAL_POSITION_INT_COV_DATA","GLOBAL_POSITION_INT_DATA","GLOBAL_VISION_POSITION_ESTIMATE","GLOBAL_VISION_POSITION_ESTIMATE_DATA","GPS2_RAW","GPS2_RAW_DATA","GPS2_RTK","GPS2_RTK_DATA","GPS_FIX_TYPE_2D_FIX","GPS_FIX_TYPE_3D_FIX","GPS_FIX_TYPE_DGPS","GPS_FIX_TYPE_NO_FIX","GPS_FIX_TYPE_NO_GPS","GPS_FIX_TYPE_PPP","GPS_FIX_TYPE_RTK_FIXED","GPS_FIX_TYPE_RTK_FLOAT","GPS_FIX_TYPE_STATIC","GPS_GLOBAL_ORIGIN","GPS_GLOBAL_ORIGIN_DATA","GPS_INJECT_DATA","GPS_INJECT_DATA_DATA","GPS_INPUT","GPS_INPUT_DATA","GPS_INPUT_IGNORE_FLAG_ALT","GPS_INPUT_IGNORE_FLAG_HDOP","GPS_INPUT_IGNORE_FLAG_HORIZONTAL_ACCURACY","GPS_INPUT_IGNORE_FLAG_SPEED_ACCURACY","GPS_INPUT_IGNORE_FLAG_VDOP","GPS_INPUT_IGNORE_FLAG_VEL_HORIZ","GPS_INPUT_IGNORE_FLAG_VEL_VERT","GPS_INPUT_IGNORE_FLAG_VERTICAL_ACCURACY","GPS_RAW_INT","GPS_RAW_INT_DATA","GPS_RTCM_DATA","GPS_RTCM_DATA_DATA","GPS_RTK","GPS_RTK_DATA","GPS_STATUS","GPS_STATUS_DATA","GRIPPER_ACTION_GRAB","GRIPPER_ACTION_RELEASE","GimbalDeviceCapFlags","GimbalDeviceErrorFlags","GimbalDeviceFlags","GimbalManagerCapFlags","GimbalManagerFlags","GpsFixType","GpsInputIgnoreFlags","GripperActions","HEARTBEAT","HEARTBEAT_DATA","HIGHRES_IMU","HIGHRES_IMU_DATA","HIGHRES_IMU_UPDATED_ABS_PRESSURE","HIGHRES_IMU_UPDATED_ALL","HIGHRES_IMU_UPDATED_DIFF_PRESSURE","HIGHRES_IMU_UPDATED_NONE","HIGHRES_IMU_UPDATED_PRESSURE_ALT","HIGHRES_IMU_UPDATED_TEMPERATURE","HIGHRES_IMU_UPDATED_XACC","HIGHRES_IMU_UPDATED_XGYRO","HIGHRES_IMU_UPDATED_XMAG","HIGHRES_IMU_UPDATED_YACC","HIGHRES_IMU_UPDATED_YGYRO","HIGHRES_IMU_UPDATED_YMAG","HIGHRES_IMU_UPDATED_ZACC","HIGHRES_IMU_UPDATED_ZGYRO","HIGHRES_IMU_UPDATED_ZMAG","HIGH_LATENCY","HIGH_LATENCY2","HIGH_LATENCY2_DATA","HIGH_LATENCY_DATA","HIL_ACTUATOR_CONTROLS","HIL_ACTUATOR_CONTROLS_DATA","HIL_CONTROLS","HIL_CONTROLS_DATA","HIL_GPS","HIL_GPS_DATA","HIL_OPTICAL_FLOW","HIL_OPTICAL_FLOW_DATA","HIL_RC_INPUTS_RAW","HIL_RC_INPUTS_RAW_DATA","HIL_SENSOR","HIL_SENSOR_DATA","HIL_SENSOR_UPDATED_ABS_PRESSURE","HIL_SENSOR_UPDATED_DIFF_PRESSURE","HIL_SENSOR_UPDATED_NONE","HIL_SENSOR_UPDATED_PRESSURE_ALT","HIL_SENSOR_UPDATED_RESET","HIL_SENSOR_UPDATED_TEMPERATURE","HIL_SENSOR_UPDATED_XACC","HIL_SENSOR_UPDATED_XGYRO","HIL_SENSOR_UPDATED_XMAG","HIL_SENSOR_UPDATED_YACC","HIL_SENSOR_UPDATED_YGYRO","HIL_SENSOR_UPDATED_YMAG","HIL_SENSOR_UPDATED_ZACC","HIL_SENSOR_UPDATED_ZGYRO","HIL_SENSOR_UPDATED_ZMAG","HIL_STATE","HIL_STATE_DATA","HIL_STATE_QUATERNION","HIL_STATE_QUATERNION_DATA","HL_FAILURE_FLAG_3D_ACCEL","HL_FAILURE_FLAG_3D_GYRO","HL_FAILURE_FLAG_3D_MAG","HL_FAILURE_FLAG_ABSOLUTE_PRESSURE","HL_FAILURE_FLAG_BATTERY","HL_FAILURE_FLAG_DIFFERENTIAL_PRESSURE","HL_FAILURE_FLAG_ENGINE","HL_FAILURE_FLAG_ESTIMATOR","HL_FAILURE_FLAG_GEOFENCE","HL_FAILURE_FLAG_GPS","HL_FAILURE_FLAG_MISSION","HL_FAILURE_FLAG_OFFBOARD_LINK","HL_FAILURE_FLAG_RC_RECEIVER","HL_FAILURE_FLAG_TERRAIN","HOME_POSITION","HOME_POSITION_DATA","HYGROMETER_SENSOR","HYGROMETER_SENSOR_DATA","HighresImuUpdatedFlags","HilSensorUpdatedFlags","HlFailureFlag","ICAO","ICAO_address","ISBD_LINK_STATUS","ISBD_LINK_STATUS_DATA","LANDING_TARGET","LANDING_TARGET_DATA","LANDING_TARGET_TYPE_LIGHT_BEACON","LANDING_TARGET_TYPE_RADIO_BEACON","LANDING_TARGET_TYPE_VISION_FIDUCIAL","LANDING_TARGET_TYPE_VISION_OTHER","LINK_NODE_STATUS","LINK_NODE_STATUS_DATA","LOCAL_POSITION_NED","LOCAL_POSITION_NED_COV","LOCAL_POSITION_NED_COV_DATA","LOCAL_POSITION_NED_DATA","LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET","LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA","LOGGING_ACK","LOGGING_ACK_DATA","LOGGING_DATA","LOGGING_DATA_ACKED","LOGGING_DATA_ACKED_DATA","LOGGING_DATA_DATA","LOG_DATA","LOG_DATA_DATA","LOG_ENTRY","LOG_ENTRY_DATA","LOG_ERASE","LOG_ERASE_DATA","LOG_REQUEST_DATA","LOG_REQUEST_DATA_DATA","LOG_REQUEST_END","LOG_REQUEST_END_DATA","LOG_REQUEST_LIST","LOG_REQUEST_LIST_DATA","LandingTargetType","MAG_CAL_BAD_ORIENTATION","MAG_CAL_BAD_RADIUS","MAG_CAL_FAILED","MAG_CAL_NOT_STARTED","MAG_CAL_REPORT","MAG_CAL_REPORT_DATA","MAG_CAL_RUNNING_STEP_ONE","MAG_CAL_RUNNING_STEP_TWO","MAG_CAL_SUCCESS","MAG_CAL_WAITING_TO_START","MANUAL_CONTROL","MANUAL_CONTROL_DATA","MANUAL_SETPOINT","MANUAL_SETPOINT_DATA","MAVLINK_DATA_STREAM_IMG_BMP","MAVLINK_DATA_STREAM_IMG_JPEG","MAVLINK_DATA_STREAM_IMG_PGM","MAVLINK_DATA_STREAM_IMG_PNG","MAVLINK_DATA_STREAM_IMG_RAW32U","MAVLINK_DATA_STREAM_IMG_RAW8U","MAV_ARM_AUTH_DENIED_REASON_AIRSPACE_IN_USE","MAV_ARM_AUTH_DENIED_REASON_BAD_WEATHER","MAV_ARM_AUTH_DENIED_REASON_GENERIC","MAV_ARM_AUTH_DENIED_REASON_INVALID_WAYPOINT","MAV_ARM_AUTH_DENIED_REASON_NONE","MAV_ARM_AUTH_DENIED_REASON_TIMEOUT","MAV_AUTOPILOT_AEROB","MAV_AUTOPILOT_AIRRAILS","MAV_AUTOPILOT_ARDUPILOTMEGA","MAV_AUTOPILOT_ARMAZILA","MAV_AUTOPILOT_ASLUAV","MAV_AUTOPILOT_AUTOQUAD","MAV_AUTOPILOT_FP","MAV_AUTOPILOT_GENERIC","MAV_AUTOPILOT_GENERIC_MISSION_FULL","MAV_AUTOPILOT_GENERIC_WAYPOINTS_AND_SIMPLE_NAVIGATION_ONLY","MAV_AUTOPILOT_GENERIC_WAYPOINTS_ONLY","MAV_AUTOPILOT_INVALID","MAV_AUTOPILOT_OPENPILOT","MAV_AUTOPILOT_PPZ","MAV_AUTOPILOT_PX4","MAV_AUTOPILOT_REFLEX","MAV_AUTOPILOT_RESERVED","MAV_AUTOPILOT_SLUGS","MAV_AUTOPILOT_SMACCMPILOT","MAV_AUTOPILOT_SMARTAP","MAV_AUTOPILOT_UDB","MAV_BATTERY_CHARGE_STATE_CHARGING","MAV_BATTERY_CHARGE_STATE_CRITICAL","MAV_BATTERY_CHARGE_STATE_EMERGENCY","MAV_BATTERY_CHARGE_STATE_FAILED","MAV_BATTERY_CHARGE_STATE_LOW","MAV_BATTERY_CHARGE_STATE_OK","MAV_BATTERY_CHARGE_STATE_UNDEFINED","MAV_BATTERY_CHARGE_STATE_UNHEALTHY","MAV_BATTERY_FAULT_CELL_FAIL","MAV_BATTERY_FAULT_DEEP_DISCHARGE","MAV_BATTERY_FAULT_INCOMPATIBLE_FIRMWARE","MAV_BATTERY_FAULT_INCOMPATIBLE_VOLTAGE","MAV_BATTERY_FAULT_OVER_CURRENT","MAV_BATTERY_FAULT_OVER_TEMPERATURE","MAV_BATTERY_FAULT_SPIKES","MAV_BATTERY_FAULT_UNDER_TEMPERATURE","MAV_BATTERY_FUNCTION_ALL","MAV_BATTERY_FUNCTION_AVIONICS","MAV_BATTERY_FUNCTION_PAYLOAD","MAV_BATTERY_FUNCTION_PROPULSION","MAV_BATTERY_FUNCTION_UNKNOWN","MAV_BATTERY_MODE_AUTO_DISCHARGING","MAV_BATTERY_MODE_HOT_SWAP","MAV_BATTERY_MODE_UNKNOWN","MAV_BATTERY_TYPE_LIFE","MAV_BATTERY_TYPE_LION","MAV_BATTERY_TYPE_LIPO","MAV_BATTERY_TYPE_NIMH","MAV_BATTERY_TYPE_UNKNOWN","MAV_CMD_ACK_ERR_ACCESS_DENIED","MAV_CMD_ACK_ERR_COORDINATES_OUT_OF_RANGE","MAV_CMD_ACK_ERR_COORDINATE_FRAME_NOT_SUPPORTED","MAV_CMD_ACK_ERR_FAIL","MAV_CMD_ACK_ERR_NOT_SUPPORTED","MAV_CMD_ACK_ERR_X_LAT_OUT_OF_RANGE","MAV_CMD_ACK_ERR_Y_LON_OUT_OF_RANGE","MAV_CMD_ACK_ERR_Z_ALT_OUT_OF_RANGE","MAV_CMD_ACK_OK","MAV_CMD_ACTUATOR_TEST","MAV_CMD_AIRFRAME_CONFIGURATION","MAV_CMD_ARM_AUTHORIZATION_REQUEST","MAV_CMD_CAMERA_STOP_TRACKING","MAV_CMD_CAMERA_TRACK_POINT","MAV_CMD_CAMERA_TRACK_RECTANGLE","MAV_CMD_CAN_FORWARD","MAV_CMD_COMPONENT_ARM_DISARM","MAV_CMD_CONDITION_CHANGE_ALT","MAV_CMD_CONDITION_DELAY","MAV_CMD_CONDITION_DISTANCE","MAV_CMD_CONDITION_GATE","MAV_CMD_CONDITION_LAST","MAV_CMD_CONDITION_YAW","MAV_CMD_CONFIGURE_ACTUATOR","MAV_CMD_CONTROL_HIGH_LATENCY","MAV_CMD_DO_ADSB_OUT_IDENT","MAV_CMD_DO_AUTOTUNE_ENABLE","MAV_CMD_DO_CHANGE_ALTITUDE","MAV_CMD_DO_CHANGE_SPEED","MAV_CMD_DO_CONTROL_VIDEO","MAV_CMD_DO_DIGICAM_CONFIGURE","MAV_CMD_DO_DIGICAM_CONTROL","MAV_CMD_DO_ENGINE_CONTROL","MAV_CMD_DO_FENCE_ENABLE","MAV_CMD_DO_FLIGHTTERMINATION","MAV_CMD_DO_FOLLOW","MAV_CMD_DO_FOLLOW_REPOSITION","MAV_CMD_DO_GIMBAL_MANAGER_CONFIGURE","MAV_CMD_DO_GIMBAL_MANAGER_PITCHYAW","MAV_CMD_DO_GO_AROUND","MAV_CMD_DO_GRIPPER","MAV_CMD_DO_GUIDED_LIMITS","MAV_CMD_DO_GUIDED_MASTER","MAV_CMD_DO_INVERTED_FLIGHT","MAV_CMD_DO_JUMP","MAV_CMD_DO_JUMP_TAG","MAV_CMD_DO_LAND_START","MAV_CMD_DO_LAST","MAV_CMD_DO_MOTOR_TEST","MAV_CMD_DO_MOUNT_CONFIGURE","MAV_CMD_DO_MOUNT_CONTROL","MAV_CMD_DO_MOUNT_CONTROL_QUAT","MAV_CMD_DO_ORBIT","MAV_CMD_DO_PARACHUTE","MAV_CMD_DO_PAUSE_CONTINUE","MAV_CMD_DO_RALLY_LAND","MAV_CMD_DO_REPEAT_RELAY","MAV_CMD_DO_REPEAT_SERVO","MAV_CMD_DO_REPOSITION","MAV_CMD_DO_SET_ACTUATOR","MAV_CMD_DO_SET_CAM_TRIGG_DIST","MAV_CMD_DO_SET_CAM_TRIGG_INTERVAL","MAV_CMD_DO_SET_HOME","MAV_CMD_DO_SET_MISSION_CURRENT","MAV_CMD_DO_SET_MODE","MAV_CMD_DO_SET_PARAMETER","MAV_CMD_DO_SET_RELAY","MAV_CMD_DO_SET_REVERSE","MAV_CMD_DO_SET_ROI","MAV_CMD_DO_SET_ROI_LOCATION","MAV_CMD_DO_SET_ROI_NONE","MAV_CMD_DO_SET_ROI_SYSID","MAV_CMD_DO_SET_ROI_WPNEXT_OFFSET","MAV_CMD_DO_SET_SERVO","MAV_CMD_DO_TRIGGER_CONTROL","MAV_CMD_DO_VTOL_TRANSITION","MAV_CMD_DO_WINCH","MAV_CMD_FIXED_MAG_CAL_YAW","MAV_CMD_GET_HOME_POSITION","MAV_CMD_GET_MESSAGE_INTERVAL","MAV_CMD_ILLUMINATOR_ON_OFF","MAV_CMD_IMAGE_START_CAPTURE","MAV_CMD_IMAGE_STOP_CAPTURE","MAV_CMD_INJECT_FAILURE","MAV_CMD_JUMP_TAG","MAV_CMD_LOGGING_START","MAV_CMD_LOGGING_STOP","MAV_CMD_MISSION_START","MAV_CMD_NAV_CONTINUE_AND_CHANGE_ALT","MAV_CMD_NAV_DELAY","MAV_CMD_NAV_FENCE_CIRCLE_EXCLUSION","MAV_CMD_NAV_FENCE_CIRCLE_INCLUSION","MAV_CMD_NAV_FENCE_POLYGON_VERTEX_EXCLUSION","MAV_CMD_NAV_FENCE_POLYGON_VERTEX_INCLUSION","MAV_CMD_NAV_FENCE_RETURN_POINT","MAV_CMD_NAV_FOLLOW","MAV_CMD_NAV_GUIDED_ENABLE","MAV_CMD_NAV_LAND","MAV_CMD_NAV_LAND_LOCAL","MAV_CMD_NAV_LAST","MAV_CMD_NAV_LOITER_TIME","MAV_CMD_NAV_LOITER_TO_ALT","MAV_CMD_NAV_LOITER_TURNS","MAV_CMD_NAV_LOITER_UNLIM","MAV_CMD_NAV_PATHPLANNING","MAV_CMD_NAV_PAYLOAD_PLACE","MAV_CMD_NAV_RALLY_POINT","MAV_CMD_NAV_RETURN_TO_LAUNCH","MAV_CMD_NAV_ROI","MAV_CMD_NAV_SET_YAW_SPEED","MAV_CMD_NAV_SPLINE_WAYPOINT","MAV_CMD_NAV_TAKEOFF","MAV_CMD_NAV_TAKEOFF_LOCAL","MAV_CMD_NAV_VTOL_LAND","MAV_CMD_NAV_VTOL_TAKEOFF","MAV_CMD_NAV_WAYPOINT","MAV_CMD_OBLIQUE_SURVEY","MAV_CMD_OVERRIDE_GOTO","MAV_CMD_PANORAMA_CREATE","MAV_CMD_PAYLOAD_CONTROL_DEPLOY","MAV_CMD_PAYLOAD_PREPARE_DEPLOY","MAV_CMD_PREFLIGHT_CALIBRATION","MAV_CMD_PREFLIGHT_REBOOT_SHUTDOWN","MAV_CMD_PREFLIGHT_SET_SENSOR_OFFSETS","MAV_CMD_PREFLIGHT_STORAGE","MAV_CMD_PREFLIGHT_UAVCAN","MAV_CMD_REQUEST_AUTOPILOT_CAPABILITIES","MAV_CMD_REQUEST_CAMERA_CAPTURE_STATUS","MAV_CMD_REQUEST_CAMERA_IMAGE_CAPTURE","MAV_CMD_REQUEST_CAMERA_INFORMATION","MAV_CMD_REQUEST_CAMERA_SETTINGS","MAV_CMD_REQUEST_FLIGHT_INFORMATION","MAV_CMD_REQUEST_MESSAGE","MAV_CMD_REQUEST_PROTOCOL_VERSION","MAV_CMD_REQUEST_STORAGE_INFORMATION","MAV_CMD_REQUEST_VIDEO_STREAM_INFORMATION","MAV_CMD_REQUEST_VIDEO_STREAM_STATUS","MAV_CMD_RESET_CAMERA_SETTINGS","MAV_CMD_RUN_PREARM_CHECKS","MAV_CMD_SET_CAMERA_FOCUS","MAV_CMD_SET_CAMERA_MODE","MAV_CMD_SET_CAMERA_ZOOM","MAV_CMD_SET_GUIDED_SUBMODE_CIRCLE","MAV_CMD_SET_GUIDED_SUBMODE_STANDARD","MAV_CMD_SET_MESSAGE_INTERVAL","MAV_CMD_SET_STORAGE_USAGE","MAV_CMD_SPATIAL_USER_1","MAV_CMD_SPATIAL_USER_2","MAV_CMD_SPATIAL_USER_3","MAV_CMD_SPATIAL_USER_4","MAV_CMD_SPATIAL_USER_5","MAV_CMD_START_RX_PAIR","MAV_CMD_STORAGE_FORMAT","MAV_CMD_UAVCAN_GET_NODE_INFO","MAV_CMD_USER_1","MAV_CMD_USER_2","MAV_CMD_USER_3","MAV_CMD_USER_4","MAV_CMD_USER_5","MAV_CMD_VIDEO_START_CAPTURE","MAV_CMD_VIDEO_START_STREAMING","MAV_CMD_VIDEO_STOP_CAPTURE","MAV_CMD_VIDEO_STOP_STREAMING","MAV_CMD_WAYPOINT_USER_1","MAV_CMD_WAYPOINT_USER_2","MAV_CMD_WAYPOINT_USER_3","MAV_CMD_WAYPOINT_USER_4","MAV_CMD_WAYPOINT_USER_5","MAV_COLLISION_ACTION_ASCEND_OR_DESCEND","MAV_COLLISION_ACTION_HOVER","MAV_COLLISION_ACTION_MOVE_HORIZONTALLY","MAV_COLLISION_ACTION_MOVE_PERPENDICULAR","MAV_COLLISION_ACTION_NONE","MAV_COLLISION_ACTION_REPORT","MAV_COLLISION_ACTION_RTL","MAV_COLLISION_SRC_ADSB","MAV_COLLISION_SRC_MAVLINK_GPS_GLOBAL_INT","MAV_COLLISION_THREAT_LEVEL_HIGH","MAV_COLLISION_THREAT_LEVEL_LOW","MAV_COLLISION_THREAT_LEVEL_NONE","MAV_COMP_ID_ADSB","MAV_COMP_ID_ALL","MAV_COMP_ID_AUTOPILOT1","MAV_COMP_ID_BATTERY","MAV_COMP_ID_BATTERY2","MAV_COMP_ID_CAMERA","MAV_COMP_ID_CAMERA2","MAV_COMP_ID_CAMERA3","MAV_COMP_ID_CAMERA4","MAV_COMP_ID_CAMERA5","MAV_COMP_ID_CAMERA6","MAV_COMP_ID_FLARM","MAV_COMP_ID_GIMBAL","MAV_COMP_ID_GIMBAL2","MAV_COMP_ID_GIMBAL3","MAV_COMP_ID_GIMBAL4","MAV_COMP_ID_GIMBAL5","MAV_COMP_ID_GIMBAL6","MAV_COMP_ID_GPS","MAV_COMP_ID_GPS2","MAV_COMP_ID_IMU","MAV_COMP_ID_IMU_2","MAV_COMP_ID_IMU_3","MAV_COMP_ID_LOG","MAV_COMP_ID_MAVCAN","MAV_COMP_ID_MISSIONPLANNER","MAV_COMP_ID_OBSTACLE_AVOIDANCE","MAV_COMP_ID_ODID_TXRX_1","MAV_COMP_ID_ODID_TXRX_2","MAV_COMP_ID_ODID_TXRX_3","MAV_COMP_ID_ONBOARD_COMPUTER","MAV_COMP_ID_ONBOARD_COMPUTER2","MAV_COMP_ID_ONBOARD_COMPUTER3","MAV_COMP_ID_ONBOARD_COMPUTER4","MAV_COMP_ID_OSD","MAV_COMP_ID_PAIRING_MANAGER","MAV_COMP_ID_PARACHUTE","MAV_COMP_ID_PATHPLANNER","MAV_COMP_ID_PERIPHERAL","MAV_COMP_ID_QX1_GIMBAL","MAV_COMP_ID_SERVO1","MAV_COMP_ID_SERVO10","MAV_COMP_ID_SERVO11","MAV_COMP_ID_SERVO12","MAV_COMP_ID_SERVO13","MAV_COMP_ID_SERVO14","MAV_COMP_ID_SERVO2","MAV_COMP_ID_SERVO3","MAV_COMP_ID_SERVO4","MAV_COMP_ID_SERVO5","MAV_COMP_ID_SERVO6","MAV_COMP_ID_SERVO7","MAV_COMP_ID_SERVO8","MAV_COMP_ID_SERVO9","MAV_COMP_ID_SYSTEM_CONTROL","MAV_COMP_ID_TELEMETRY_RADIO","MAV_COMP_ID_TUNNEL_NODE","MAV_COMP_ID_UART_BRIDGE","MAV_COMP_ID_UDP_BRIDGE","MAV_COMP_ID_USER1","MAV_COMP_ID_USER10","MAV_COMP_ID_USER11","MAV_COMP_ID_USER12","MAV_COMP_ID_USER13","MAV_COMP_ID_USER14","MAV_COMP_ID_USER15","MAV_COMP_ID_USER16","MAV_COMP_ID_USER17","MAV_COMP_ID_USER18","MAV_COMP_ID_USER19","MAV_COMP_ID_USER2","MAV_COMP_ID_USER20","MAV_COMP_ID_USER21","MAV_COMP_ID_USER22","MAV_COMP_ID_USER23","MAV_COMP_ID_USER24","MAV_COMP_ID_USER25","MAV_COMP_ID_USER26","MAV_COMP_ID_USER27","MAV_COMP_ID_USER28","MAV_COMP_ID_USER29","MAV_COMP_ID_USER3","MAV_COMP_ID_USER30","MAV_COMP_ID_USER31","MAV_COMP_ID_USER32","MAV_COMP_ID_USER33","MAV_COMP_ID_USER34","MAV_COMP_ID_USER35","MAV_COMP_ID_USER36","MAV_COMP_ID_USER37","MAV_COMP_ID_USER38","MAV_COMP_ID_USER39","MAV_COMP_ID_USER4","MAV_COMP_ID_USER40","MAV_COMP_ID_USER41","MAV_COMP_ID_USER42","MAV_COMP_ID_USER43","MAV_COMP_ID_USER45","MAV_COMP_ID_USER46","MAV_COMP_ID_USER47","MAV_COMP_ID_USER48","MAV_COMP_ID_USER49","MAV_COMP_ID_USER5","MAV_COMP_ID_USER50","MAV_COMP_ID_USER51","MAV_COMP_ID_USER52","MAV_COMP_ID_USER53","MAV_COMP_ID_USER54","MAV_COMP_ID_USER55","MAV_COMP_ID_USER56","MAV_COMP_ID_USER57","MAV_COMP_ID_USER58","MAV_COMP_ID_USER59","MAV_COMP_ID_USER6","MAV_COMP_ID_USER60","MAV_COMP_ID_USER61","MAV_COMP_ID_USER62","MAV_COMP_ID_USER63","MAV_COMP_ID_USER64","MAV_COMP_ID_USER65","MAV_COMP_ID_USER66","MAV_COMP_ID_USER67","MAV_COMP_ID_USER68","MAV_COMP_ID_USER69","MAV_COMP_ID_USER7","MAV_COMP_ID_USER70","MAV_COMP_ID_USER71","MAV_COMP_ID_USER72","MAV_COMP_ID_USER73","MAV_COMP_ID_USER74","MAV_COMP_ID_USER75","MAV_COMP_ID_USER8","MAV_COMP_ID_USER9","MAV_COMP_ID_VISUAL_INERTIAL_ODOMETRY","MAV_COMP_ID_WINCH","MAV_DATA_STREAM_ALL","MAV_DATA_STREAM_EXTENDED_STATUS","MAV_DATA_STREAM_EXTRA1","MAV_DATA_STREAM_EXTRA2","MAV_DATA_STREAM_EXTRA3","MAV_DATA_STREAM_POSITION","MAV_DATA_STREAM_RAW_CONTROLLER","MAV_DATA_STREAM_RAW_SENSORS","MAV_DATA_STREAM_RC_CHANNELS","MAV_DISTANCE_SENSOR_INFRARED","MAV_DISTANCE_SENSOR_LASER","MAV_DISTANCE_SENSOR_RADAR","MAV_DISTANCE_SENSOR_ULTRASOUND","MAV_DISTANCE_SENSOR_UNKNOWN","MAV_DO_REPOSITION_FLAGS_CHANGE_MODE","MAV_ESTIMATOR_TYPE_AUTOPILOT","MAV_ESTIMATOR_TYPE_GPS","MAV_ESTIMATOR_TYPE_GPS_INS","MAV_ESTIMATOR_TYPE_LIDAR","MAV_ESTIMATOR_TYPE_MOCAP","MAV_ESTIMATOR_TYPE_NAIVE","MAV_ESTIMATOR_TYPE_UNKNOWN","MAV_ESTIMATOR_TYPE_VIO","MAV_ESTIMATOR_TYPE_VISION","MAV_EVENT_CURRENT_SEQUENCE_FLAGS_RESET","MAV_EVENT_ERROR_REASON_UNAVAILABLE","MAV_FRAME_BODY_FRD","MAV_FRAME_BODY_NED","MAV_FRAME_BODY_OFFSET_NED","MAV_FRAME_GLOBAL","MAV_FRAME_GLOBAL_INT","MAV_FRAME_GLOBAL_RELATIVE_ALT","MAV_FRAME_GLOBAL_RELATIVE_ALT_INT","MAV_FRAME_GLOBAL_TERRAIN_ALT","MAV_FRAME_GLOBAL_TERRAIN_ALT_INT","MAV_FRAME_LOCAL_ENU","MAV_FRAME_LOCAL_FLU","MAV_FRAME_LOCAL_FRD","MAV_FRAME_LOCAL_NED","MAV_FRAME_LOCAL_OFFSET_NED","MAV_FRAME_MISSION","MAV_FRAME_RESERVED_13","MAV_FRAME_RESERVED_14","MAV_FRAME_RESERVED_15","MAV_FRAME_RESERVED_16","MAV_FRAME_RESERVED_17","MAV_FRAME_RESERVED_18","MAV_FRAME_RESERVED_19","MAV_FTP_ERR_EOF","MAV_FTP_ERR_FAIL","MAV_FTP_ERR_FAILERRNO","MAV_FTP_ERR_FILEEXISTS","MAV_FTP_ERR_FILENOTFOUND","MAV_FTP_ERR_FILEPROTECTED","MAV_FTP_ERR_INVALIDDATASIZE","MAV_FTP_ERR_INVALIDSESSION","MAV_FTP_ERR_NONE","MAV_FTP_ERR_NOSESSIONSAVAILABLE","MAV_FTP_ERR_UNKNOWNCOMMAND","MAV_FTP_OPCODE_ACK","MAV_FTP_OPCODE_BURSTREADFILE","MAV_FTP_OPCODE_CALCFILECRC","MAV_FTP_OPCODE_CREATEDIRECTORY","MAV_FTP_OPCODE_CREATEFILE","MAV_FTP_OPCODE_LISTDIRECTORY","MAV_FTP_OPCODE_NAK","MAV_FTP_OPCODE_NONE","MAV_FTP_OPCODE_OPENFILERO","MAV_FTP_OPCODE_OPENFILEWO","MAV_FTP_OPCODE_READFILE","MAV_FTP_OPCODE_REMOVEDIRECTORY","MAV_FTP_OPCODE_REMOVEFILE","MAV_FTP_OPCODE_RENAME","MAV_FTP_OPCODE_RESETSESSION","MAV_FTP_OPCODE_TERMINATESESSION","MAV_FTP_OPCODE_TRUNCATEFILE","MAV_FTP_OPCODE_WRITEFILE","MAV_GENERATOR_STATUS_FLAG_BATTERY_OVERCHARGE_CURRENT_FAULT","MAV_GENERATOR_STATUS_FLAG_BATTERY_UNDERVOLT_FAULT","MAV_GENERATOR_STATUS_FLAG_CHARGING","MAV_GENERATOR_STATUS_FLAG_COMMUNICATION_WARNING","MAV_GENERATOR_STATUS_FLAG_COOLING_WARNING","MAV_GENERATOR_STATUS_FLAG_ELECTRONICS_FAULT","MAV_GENERATOR_STATUS_FLAG_ELECTRONICS_OVERTEMP_FAULT","MAV_GENERATOR_STATUS_FLAG_ELECTRONICS_OVERTEMP_WARNING","MAV_GENERATOR_STATUS_FLAG_GENERATING","MAV_GENERATOR_STATUS_FLAG_IDLE","MAV_GENERATOR_STATUS_FLAG_MAINTENANCE_REQUIRED","MAV_GENERATOR_STATUS_FLAG_MAXPOWER","MAV_GENERATOR_STATUS_FLAG_OFF","MAV_GENERATOR_STATUS_FLAG_OVERCURRENT_FAULT","MAV_GENERATOR_STATUS_FLAG_OVERTEMP_FAULT","MAV_GENERATOR_STATUS_FLAG_OVERTEMP_WARNING","MAV_GENERATOR_STATUS_FLAG_OVERVOLTAGE_FAULT","MAV_GENERATOR_STATUS_FLAG_POWERSOURCE_FAULT","MAV_GENERATOR_STATUS_FLAG_POWER_RAIL_FAULT","MAV_GENERATOR_STATUS_FLAG_READY","MAV_GENERATOR_STATUS_FLAG_REDUCED_POWER","MAV_GENERATOR_STATUS_FLAG_START_INHIBITED","MAV_GENERATOR_STATUS_FLAG_WARMING_UP","MAV_GOTO_DO_CONTINUE","MAV_GOTO_DO_HOLD","MAV_GOTO_HOLD_AT_CURRENT_POSITION","MAV_GOTO_HOLD_AT_SPECIFIED_POSITION","MAV_LANDED_STATE_IN_AIR","MAV_LANDED_STATE_LANDING","MAV_LANDED_STATE_ON_GROUND","MAV_LANDED_STATE_TAKEOFF","MAV_LANDED_STATE_UNDEFINED","MAV_MISSION_ACCEPTED","MAV_MISSION_DENIED","MAV_MISSION_ERROR","MAV_MISSION_INVALID","MAV_MISSION_INVALID_PARAM1","MAV_MISSION_INVALID_PARAM2","MAV_MISSION_INVALID_PARAM3","MAV_MISSION_INVALID_PARAM4","MAV_MISSION_INVALID_PARAM5_X","MAV_MISSION_INVALID_PARAM6_Y","MAV_MISSION_INVALID_PARAM7","MAV_MISSION_INVALID_SEQUENCE","MAV_MISSION_NO_SPACE","MAV_MISSION_OPERATION_CANCELLED","MAV_MISSION_TYPE_ALL","MAV_MISSION_TYPE_FENCE","MAV_MISSION_TYPE_MISSION","MAV_MISSION_TYPE_RALLY","MAV_MISSION_UNSUPPORTED","MAV_MISSION_UNSUPPORTED_FRAME","MAV_MODE_AUTO_ARMED","MAV_MODE_AUTO_DISARMED","MAV_MODE_FLAG_AUTO_ENABLED","MAV_MODE_FLAG_CUSTOM_MODE_ENABLED","MAV_MODE_FLAG_DECODE_POSITION_AUTO","MAV_MODE_FLAG_DECODE_POSITION_CUSTOM_MODE","MAV_MODE_FLAG_DECODE_POSITION_GUIDED","MAV_MODE_FLAG_DECODE_POSITION_HIL","MAV_MODE_FLAG_DECODE_POSITION_MANUAL","MAV_MODE_FLAG_DECODE_POSITION_SAFETY","MAV_MODE_FLAG_DECODE_POSITION_STABILIZE","MAV_MODE_FLAG_DECODE_POSITION_TEST","MAV_MODE_FLAG_GUIDED_ENABLED","MAV_MODE_FLAG_HIL_ENABLED","MAV_MODE_FLAG_MANUAL_INPUT_ENABLED","MAV_MODE_FLAG_SAFETY_ARMED","MAV_MODE_FLAG_STABILIZE_ENABLED","MAV_MODE_FLAG_TEST_ENABLED","MAV_MODE_GUIDED_ARMED","MAV_MODE_GUIDED_DISARMED","MAV_MODE_MANUAL_ARMED","MAV_MODE_MANUAL_DISARMED","MAV_MODE_PREFLIGHT","MAV_MODE_STABILIZE_ARMED","MAV_MODE_STABILIZE_DISARMED","MAV_MODE_TEST_ARMED","MAV_MODE_TEST_DISARMED","MAV_MOUNT_MODE_GPS_POINT","MAV_MOUNT_MODE_HOME_LOCATION","MAV_MOUNT_MODE_MAVLINK_TARGETING","MAV_MOUNT_MODE_NEUTRAL","MAV_MOUNT_MODE_RC_TARGETING","MAV_MOUNT_MODE_RETRACT","MAV_MOUNT_MODE_SYSID_TARGET","MAV_ODID_ARM_STATUS_GOOD_TO_ARM","MAV_ODID_ARM_STATUS_PRE_ARM_FAIL_GENERIC","MAV_ODID_AUTH_TYPE_MESSAGE_SET_SIGNATURE","MAV_ODID_AUTH_TYPE_NETWORK_REMOTE_ID","MAV_ODID_AUTH_TYPE_NONE","MAV_ODID_AUTH_TYPE_OPERATOR_ID_SIGNATURE","MAV_ODID_AUTH_TYPE_SPECIFIC_AUTHENTICATION","MAV_ODID_AUTH_TYPE_UAS_ID_SIGNATURE","MAV_ODID_CATEGORY_EU_CERTIFIED","MAV_ODID_CATEGORY_EU_OPEN","MAV_ODID_CATEGORY_EU_SPECIFIC","MAV_ODID_CATEGORY_EU_UNDECLARED","MAV_ODID_CLASSIFICATION_TYPE_EU","MAV_ODID_CLASSIFICATION_TYPE_UNDECLARED","MAV_ODID_CLASS_EU_CLASS_0","MAV_ODID_CLASS_EU_CLASS_1","MAV_ODID_CLASS_EU_CLASS_2","MAV_ODID_CLASS_EU_CLASS_3","MAV_ODID_CLASS_EU_CLASS_4","MAV_ODID_CLASS_EU_CLASS_5","MAV_ODID_CLASS_EU_CLASS_6","MAV_ODID_CLASS_EU_UNDECLARED","MAV_ODID_DESC_TYPE_EMERGENCY","MAV_ODID_DESC_TYPE_EXTENDED_STATUS","MAV_ODID_DESC_TYPE_TEXT","MAV_ODID_HEIGHT_REF_OVER_GROUND","MAV_ODID_HEIGHT_REF_OVER_TAKEOFF","MAV_ODID_HOR_ACC_0_05NM","MAV_ODID_HOR_ACC_0_1NM","MAV_ODID_HOR_ACC_0_3NM","MAV_ODID_HOR_ACC_0_5NM","MAV_ODID_HOR_ACC_10NM","MAV_ODID_HOR_ACC_10_METER","MAV_ODID_HOR_ACC_1NM","MAV_ODID_HOR_ACC_1_METER","MAV_ODID_HOR_ACC_2NM","MAV_ODID_HOR_ACC_30_METER","MAV_ODID_HOR_ACC_3_METER","MAV_ODID_HOR_ACC_4NM","MAV_ODID_HOR_ACC_UNKNOWN","MAV_ODID_ID_TYPE_CAA_REGISTRATION_ID","MAV_ODID_ID_TYPE_NONE","MAV_ODID_ID_TYPE_SERIAL_NUMBER","MAV_ODID_ID_TYPE_SPECIFIC_SESSION_ID","MAV_ODID_ID_TYPE_UTM_ASSIGNED_UUID","MAV_ODID_OPERATOR_ID_TYPE_CAA","MAV_ODID_OPERATOR_LOCATION_TYPE_FIXED","MAV_ODID_OPERATOR_LOCATION_TYPE_LIVE_GNSS","MAV_ODID_OPERATOR_LOCATION_TYPE_TAKEOFF","MAV_ODID_SPEED_ACC_0_3_METERS_PER_SECOND","MAV_ODID_SPEED_ACC_10_METERS_PER_SECOND","MAV_ODID_SPEED_ACC_1_METERS_PER_SECOND","MAV_ODID_SPEED_ACC_3_METERS_PER_SECOND","MAV_ODID_SPEED_ACC_UNKNOWN","MAV_ODID_STATUS_AIRBORNE","MAV_ODID_STATUS_EMERGENCY","MAV_ODID_STATUS_GROUND","MAV_ODID_STATUS_REMOTE_ID_SYSTEM_FAILURE","MAV_ODID_STATUS_UNDECLARED","MAV_ODID_TIME_ACC_0_1_SECOND","MAV_ODID_TIME_ACC_0_2_SECOND","MAV_ODID_TIME_ACC_0_3_SECOND","MAV_ODID_TIME_ACC_0_4_SECOND","MAV_ODID_TIME_ACC_0_5_SECOND","MAV_ODID_TIME_ACC_0_6_SECOND","MAV_ODID_TIME_ACC_0_7_SECOND","MAV_ODID_TIME_ACC_0_8_SECOND","MAV_ODID_TIME_ACC_0_9_SECOND","MAV_ODID_TIME_ACC_1_0_SECOND","MAV_ODID_TIME_ACC_1_1_SECOND","MAV_ODID_TIME_ACC_1_2_SECOND","MAV_ODID_TIME_ACC_1_3_SECOND","MAV_ODID_TIME_ACC_1_4_SECOND","MAV_ODID_TIME_ACC_1_5_SECOND","MAV_ODID_TIME_ACC_UNKNOWN","MAV_ODID_UA_TYPE_AEROPLANE","MAV_ODID_UA_TYPE_AIRSHIP","MAV_ODID_UA_TYPE_CAPTIVE_BALLOON","MAV_ODID_UA_TYPE_FREE_BALLOON","MAV_ODID_UA_TYPE_FREE_FALL_PARACHUTE","MAV_ODID_UA_TYPE_GLIDER","MAV_ODID_UA_TYPE_GROUND_OBSTACLE","MAV_ODID_UA_TYPE_GYROPLANE","MAV_ODID_UA_TYPE_HELICOPTER_OR_MULTIROTOR","MAV_ODID_UA_TYPE_HYBRID_LIFT","MAV_ODID_UA_TYPE_KITE","MAV_ODID_UA_TYPE_NONE","MAV_ODID_UA_TYPE_ORNITHOPTER","MAV_ODID_UA_TYPE_OTHER","MAV_ODID_UA_TYPE_ROCKET","MAV_ODID_UA_TYPE_TETHERED_POWERED_AIRCRAFT","MAV_ODID_VER_ACC_10_METER","MAV_ODID_VER_ACC_150_METER","MAV_ODID_VER_ACC_1_METER","MAV_ODID_VER_ACC_25_METER","MAV_ODID_VER_ACC_3_METER","MAV_ODID_VER_ACC_45_METER","MAV_ODID_VER_ACC_UNKNOWN","MAV_PARAM_EXT_TYPE_CUSTOM","MAV_PARAM_EXT_TYPE_INT16","MAV_PARAM_EXT_TYPE_INT32","MAV_PARAM_EXT_TYPE_INT64","MAV_PARAM_EXT_TYPE_INT8","MAV_PARAM_EXT_TYPE_REAL32","MAV_PARAM_EXT_TYPE_REAL64","MAV_PARAM_EXT_TYPE_UINT16","MAV_PARAM_EXT_TYPE_UINT32","MAV_PARAM_EXT_TYPE_UINT64","MAV_PARAM_EXT_TYPE_UINT8","MAV_PARAM_TYPE_INT16","MAV_PARAM_TYPE_INT32","MAV_PARAM_TYPE_INT64","MAV_PARAM_TYPE_INT8","MAV_PARAM_TYPE_REAL32","MAV_PARAM_TYPE_REAL64","MAV_PARAM_TYPE_UINT16","MAV_PARAM_TYPE_UINT32","MAV_PARAM_TYPE_UINT64","MAV_PARAM_TYPE_UINT8","MAV_POWER_STATUS_BRICK_VALID","MAV_POWER_STATUS_CHANGED","MAV_POWER_STATUS_PERIPH_HIPOWER_OVERCURRENT","MAV_POWER_STATUS_PERIPH_OVERCURRENT","MAV_POWER_STATUS_SERVO_VALID","MAV_POWER_STATUS_USB_CONNECTED","MAV_PROTOCOL_CAPABILITY_COMMAND_INT","MAV_PROTOCOL_CAPABILITY_COMPASS_CALIBRATION","MAV_PROTOCOL_CAPABILITY_FLIGHT_TERMINATION","MAV_PROTOCOL_CAPABILITY_FTP","MAV_PROTOCOL_CAPABILITY_MAVLINK2","MAV_PROTOCOL_CAPABILITY_MISSION_FENCE","MAV_PROTOCOL_CAPABILITY_MISSION_FLOAT","MAV_PROTOCOL_CAPABILITY_MISSION_INT","MAV_PROTOCOL_CAPABILITY_MISSION_RALLY","MAV_PROTOCOL_CAPABILITY_PARAM_ENCODE_BYTEWISE","MAV_PROTOCOL_CAPABILITY_PARAM_ENCODE_C_CAST","MAV_PROTOCOL_CAPABILITY_PARAM_FLOAT","MAV_PROTOCOL_CAPABILITY_RESERVED2","MAV_PROTOCOL_CAPABILITY_SET_ACTUATOR_TARGET","MAV_PROTOCOL_CAPABILITY_SET_ATTITUDE_TARGET","MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_GLOBAL_INT","MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_LOCAL_NED","MAV_PROTOCOL_CAPABILITY_TERRAIN","MAV_RESULT_ACCEPTED","MAV_RESULT_CANCELLED","MAV_RESULT_DENIED","MAV_RESULT_FAILED","MAV_RESULT_IN_PROGRESS","MAV_RESULT_TEMPORARILY_REJECTED","MAV_RESULT_UNSUPPORTED","MAV_ROI_LOCATION","MAV_ROI_NONE","MAV_ROI_TARGET","MAV_ROI_WPINDEX","MAV_ROI_WPNEXT","MAV_SENSOR_ROTATION_CUSTOM","MAV_SENSOR_ROTATION_NONE","MAV_SENSOR_ROTATION_PITCH_180","MAV_SENSOR_ROTATION_PITCH_180_YAW_270","MAV_SENSOR_ROTATION_PITCH_180_YAW_90","MAV_SENSOR_ROTATION_PITCH_270","MAV_SENSOR_ROTATION_PITCH_315","MAV_SENSOR_ROTATION_PITCH_90","MAV_SENSOR_ROTATION_ROLL_180","MAV_SENSOR_ROTATION_ROLL_180_PITCH_270","MAV_SENSOR_ROTATION_ROLL_180_PITCH_90","MAV_SENSOR_ROTATION_ROLL_180_YAW_135","MAV_SENSOR_ROTATION_ROLL_180_YAW_225","MAV_SENSOR_ROTATION_ROLL_180_YAW_270","MAV_SENSOR_ROTATION_ROLL_180_YAW_315","MAV_SENSOR_ROTATION_ROLL_180_YAW_45","MAV_SENSOR_ROTATION_ROLL_180_YAW_90","MAV_SENSOR_ROTATION_ROLL_270","MAV_SENSOR_ROTATION_ROLL_270_PITCH_180","MAV_SENSOR_ROTATION_ROLL_270_PITCH_270","MAV_SENSOR_ROTATION_ROLL_270_PITCH_90","MAV_SENSOR_ROTATION_ROLL_270_YAW_135","MAV_SENSOR_ROTATION_ROLL_270_YAW_45","MAV_SENSOR_ROTATION_ROLL_270_YAW_90","MAV_SENSOR_ROTATION_ROLL_90","MAV_SENSOR_ROTATION_ROLL_90_PITCH_180","MAV_SENSOR_ROTATION_ROLL_90_PITCH_180_YAW_90","MAV_SENSOR_ROTATION_ROLL_90_PITCH_270","MAV_SENSOR_ROTATION_ROLL_90_PITCH_315","MAV_SENSOR_ROTATION_ROLL_90_PITCH_68_YAW_293","MAV_SENSOR_ROTATION_ROLL_90_PITCH_90","MAV_SENSOR_ROTATION_ROLL_90_YAW_135","MAV_SENSOR_ROTATION_ROLL_90_YAW_270","MAV_SENSOR_ROTATION_ROLL_90_YAW_45","MAV_SENSOR_ROTATION_ROLL_90_YAW_90","MAV_SENSOR_ROTATION_YAW_135","MAV_SENSOR_ROTATION_YAW_180","MAV_SENSOR_ROTATION_YAW_225","MAV_SENSOR_ROTATION_YAW_270","MAV_SENSOR_ROTATION_YAW_315","MAV_SENSOR_ROTATION_YAW_45","MAV_SENSOR_ROTATION_YAW_90","MAV_SEVERITY_ALERT","MAV_SEVERITY_CRITICAL","MAV_SEVERITY_DEBUG","MAV_SEVERITY_EMERGENCY","MAV_SEVERITY_ERROR","MAV_SEVERITY_INFO","MAV_SEVERITY_NOTICE","MAV_SEVERITY_WARNING","MAV_STATE_ACTIVE","MAV_STATE_BOOT","MAV_STATE_CALIBRATING","MAV_STATE_CRITICAL","MAV_STATE_EMERGENCY","MAV_STATE_FLIGHT_TERMINATION","MAV_STATE_POWEROFF","MAV_STATE_STANDBY","MAV_STATE_UNINIT","MAV_SYS_STATUS_AHRS","MAV_SYS_STATUS_EXTENSION_USED","MAV_SYS_STATUS_GEOFENCE","MAV_SYS_STATUS_LOGGING","MAV_SYS_STATUS_OBSTACLE_AVOIDANCE","MAV_SYS_STATUS_PREARM_CHECK","MAV_SYS_STATUS_RECOVERY_SYSTEM","MAV_SYS_STATUS_REVERSE_MOTOR","MAV_SYS_STATUS_SENSOR_3D_ACCEL","MAV_SYS_STATUS_SENSOR_3D_ACCEL2","MAV_SYS_STATUS_SENSOR_3D_GYRO","MAV_SYS_STATUS_SENSOR_3D_GYRO2","MAV_SYS_STATUS_SENSOR_3D_MAG","MAV_SYS_STATUS_SENSOR_3D_MAG2","MAV_SYS_STATUS_SENSOR_ABSOLUTE_PRESSURE","MAV_SYS_STATUS_SENSOR_ANGULAR_RATE_CONTROL","MAV_SYS_STATUS_SENSOR_ATTITUDE_STABILIZATION","MAV_SYS_STATUS_SENSOR_BATTERY","MAV_SYS_STATUS_SENSOR_DIFFERENTIAL_PRESSURE","MAV_SYS_STATUS_SENSOR_EXTERNAL_GROUND_TRUTH","MAV_SYS_STATUS_SENSOR_GPS","MAV_SYS_STATUS_SENSOR_LASER_POSITION","MAV_SYS_STATUS_SENSOR_MOTOR_OUTPUTS","MAV_SYS_STATUS_SENSOR_OPTICAL_FLOW","MAV_SYS_STATUS_SENSOR_PROPULSION","MAV_SYS_STATUS_SENSOR_PROXIMITY","MAV_SYS_STATUS_SENSOR_RC_RECEIVER","MAV_SYS_STATUS_SENSOR_SATCOM","MAV_SYS_STATUS_SENSOR_VISION_POSITION","MAV_SYS_STATUS_SENSOR_XY_POSITION_CONTROL","MAV_SYS_STATUS_SENSOR_YAW_POSITION","MAV_SYS_STATUS_SENSOR_Z_ALTITUDE_CONTROL","MAV_SYS_STATUS_TERRAIN","MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED0","MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED1","MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED2","MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED3","MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED4","MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED5","MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED6","MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED7","MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED8","MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED9","MAV_TUNNEL_PAYLOAD_TYPE_UNKNOWN","MAV_TYPE_ADSB","MAV_TYPE_AIRSHIP","MAV_TYPE_ANTENNA_TRACKER","MAV_TYPE_BATTERY","MAV_TYPE_CAMERA","MAV_TYPE_CHARGING_STATION","MAV_TYPE_COAXIAL","MAV_TYPE_DECAROTOR","MAV_TYPE_DODECAROTOR","MAV_TYPE_FIXED_WING","MAV_TYPE_FLAPPING_WING","MAV_TYPE_FLARM","MAV_TYPE_FREE_BALLOON","MAV_TYPE_GCS","MAV_TYPE_GENERIC","MAV_TYPE_GIMBAL","MAV_TYPE_GPS","MAV_TYPE_GROUND_ROVER","MAV_TYPE_HELICOPTER","MAV_TYPE_HEXAROTOR","MAV_TYPE_IMU","MAV_TYPE_KITE","MAV_TYPE_LOG","MAV_TYPE_OCTOROTOR","MAV_TYPE_ODID","MAV_TYPE_ONBOARD_CONTROLLER","MAV_TYPE_OSD","MAV_TYPE_PARACHUTE","MAV_TYPE_PARAFOIL","MAV_TYPE_QUADROTOR","MAV_TYPE_ROCKET","MAV_TYPE_SERVO","MAV_TYPE_SUBMARINE","MAV_TYPE_SURFACE_BOAT","MAV_TYPE_TRICOPTER","MAV_TYPE_VTOL_FIXEDROTOR","MAV_TYPE_VTOL_RESERVED5","MAV_TYPE_VTOL_TAILSITTER","MAV_TYPE_VTOL_TAILSITTER_DUOROTOR","MAV_TYPE_VTOL_TAILSITTER_QUADROTOR","MAV_TYPE_VTOL_TILTROTOR","MAV_TYPE_VTOL_TILTWING","MAV_TYPE_WINCH","MAV_VTOL_STATE_FW","MAV_VTOL_STATE_MC","MAV_VTOL_STATE_TRANSITION_TO_FW","MAV_VTOL_STATE_TRANSITION_TO_MC","MAV_VTOL_STATE_UNDEFINED","MAV_WINCH_STATUS_ABANDON_LINE","MAV_WINCH_STATUS_ARRESTING","MAV_WINCH_STATUS_CLUTCH_ENGAGED","MAV_WINCH_STATUS_DROPPING","MAV_WINCH_STATUS_FULLY_RETRACTED","MAV_WINCH_STATUS_GROUND_SENSE","MAV_WINCH_STATUS_HEALTHY","MAV_WINCH_STATUS_LOAD_LINE","MAV_WINCH_STATUS_LOAD_PAYLOAD","MAV_WINCH_STATUS_LOCKED","MAV_WINCH_STATUS_LOCKING","MAV_WINCH_STATUS_MOVING","MAV_WINCH_STATUS_REDELIVER","MAV_WINCH_STATUS_RETRACTING","MEMORY_VECT","MEMORY_VECT_DATA","MESSAGE_INTERVAL","MESSAGE_INTERVAL_DATA","MISSION_ACK","MISSION_ACK_DATA","MISSION_CLEAR_ALL","MISSION_CLEAR_ALL_DATA","MISSION_COUNT","MISSION_COUNT_DATA","MISSION_CURRENT","MISSION_CURRENT_DATA","MISSION_ITEM","MISSION_ITEM_DATA","MISSION_ITEM_INT","MISSION_ITEM_INT_DATA","MISSION_ITEM_REACHED","MISSION_ITEM_REACHED_DATA","MISSION_READ_PERSISTENT","MISSION_REQUEST","MISSION_REQUEST_DATA","MISSION_REQUEST_INT","MISSION_REQUEST_INT_DATA","MISSION_REQUEST_LIST","MISSION_REQUEST_LIST_DATA","MISSION_REQUEST_PARTIAL_LIST","MISSION_REQUEST_PARTIAL_LIST_DATA","MISSION_RESET_DEFAULT","MISSION_SET_CURRENT","MISSION_SET_CURRENT_DATA","MISSION_STATE_ACTIVE","MISSION_STATE_COMPLETE","MISSION_STATE_NOT_STARTED","MISSION_STATE_NO_MISSION","MISSION_STATE_PAUSED","MISSION_STATE_UNKNOWN","MISSION_WRITE_PARTIAL_LIST","MISSION_WRITE_PARTIAL_LIST_DATA","MISSION_WRITE_PERSISTENT","MMSI","MOTOR_TEST_COMPASS_CAL","MOTOR_TEST_ORDER_BOARD","MOTOR_TEST_ORDER_DEFAULT","MOTOR_TEST_ORDER_SEQUENCE","MOTOR_TEST_THROTTLE_PERCENT","MOTOR_TEST_THROTTLE_PILOT","MOTOR_TEST_THROTTLE_PWM","MOUNT_ORIENTATION","MOUNT_ORIENTATION_DATA","MagCalStatus","MavArmAuthDeniedReason","MavAutopilot","MavBatteryChargeState","MavBatteryFault","MavBatteryFunction","MavBatteryMode","MavBatteryType","MavCmd","MavCmdAck","MavCollisionAction","MavCollisionSrc","MavCollisionThreatLevel","MavComponent","MavDataStream","MavDistanceSensor","MavDoRepositionFlags","MavEstimatorType","MavEventCurrentSequenceFlags","MavEventErrorReason","MavFrame","MavFtpErr","MavFtpOpcode","MavGeneratorStatusFlag","MavGoto","MavLandedState","MavMessage","MavMissionResult","MavMissionType","MavMode","MavModeFlag","MavModeFlagDecodePosition","MavMountMode","MavOdidArmStatus","MavOdidAuthType","MavOdidCategoryEu","MavOdidClassEu","MavOdidClassificationType","MavOdidDescType","MavOdidHeightRef","MavOdidHorAcc","MavOdidIdType","MavOdidOperatorIdType","MavOdidOperatorLocationType","MavOdidSpeedAcc","MavOdidStatus","MavOdidTimeAcc","MavOdidUaType","MavOdidVerAcc","MavParamExtType","MavParamType","MavPowerStatus","MavProtocolCapability","MavResult","MavRoi","MavSensorOrientation","MavSeverity","MavState","MavSysStatusSensor","MavSysStatusSensorExtended","MavTunnelPayloadType","MavType","MavVtolState","MavWinchStatusFlag","MavlinkDataStreamType","MissionState","MotorTestOrder","MotorTestThrottleType","NAMED_VALUE_FLOAT","NAMED_VALUE_FLOAT_DATA","NAMED_VALUE_INT","NAMED_VALUE_INT_DATA","NAV_CONTROLLER_OUTPUT","NAV_CONTROLLER_OUTPUT_DATA","NAV_VTOL_LAND_OPTIONS_DEFAULT","NAV_VTOL_LAND_OPTIONS_FW_DESCENT","NAV_VTOL_LAND_OPTIONS_HOVER_DESCENT","NavVtolLandOptions","OBSTACLE_DISTANCE","OBSTACLE_DISTANCE_DATA","ODOMETRY","ODOMETRY_DATA","ONBOARD_COMPUTER_STATUS","ONBOARD_COMPUTER_STATUS_DATA","OPEN_DRONE_ID_ARM_STATUS","OPEN_DRONE_ID_ARM_STATUS_DATA","OPEN_DRONE_ID_AUTHENTICATION","OPEN_DRONE_ID_AUTHENTICATION_DATA","OPEN_DRONE_ID_BASIC_ID","OPEN_DRONE_ID_BASIC_ID_DATA","OPEN_DRONE_ID_LOCATION","OPEN_DRONE_ID_LOCATION_DATA","OPEN_DRONE_ID_MESSAGE_PACK","OPEN_DRONE_ID_MESSAGE_PACK_DATA","OPEN_DRONE_ID_OPERATOR_ID","OPEN_DRONE_ID_OPERATOR_ID_DATA","OPEN_DRONE_ID_SELF_ID","OPEN_DRONE_ID_SELF_ID_DATA","OPEN_DRONE_ID_SYSTEM","OPEN_DRONE_ID_SYSTEM_DATA","OPEN_DRONE_ID_SYSTEM_UPDATE","OPEN_DRONE_ID_SYSTEM_UPDATE_DATA","OPTICAL_FLOW","OPTICAL_FLOW_DATA","OPTICAL_FLOW_RAD","OPTICAL_FLOW_RAD_DATA","ORBIT_EXECUTION_STATUS","ORBIT_EXECUTION_STATUS_DATA","ORBIT_YAW_BEHAVIOUR_HOLD_FRONT_TANGENT_TO_CIRCLE","ORBIT_YAW_BEHAVIOUR_HOLD_FRONT_TO_CIRCLE_CENTER","ORBIT_YAW_BEHAVIOUR_HOLD_INITIAL_HEADING","ORBIT_YAW_BEHAVIOUR_RC_CONTROLLED","ORBIT_YAW_BEHAVIOUR_UNCONTROLLED","OrbitYawBehaviour","PARACHUTE_DISABLE","PARACHUTE_ENABLE","PARACHUTE_RELEASE","PARAM_ACK_ACCEPTED","PARAM_ACK_FAILED","PARAM_ACK_IN_PROGRESS","PARAM_ACK_VALUE_UNSUPPORTED","PARAM_EXT_ACK","PARAM_EXT_ACK_DATA","PARAM_EXT_REQUEST_LIST","PARAM_EXT_REQUEST_LIST_DATA","PARAM_EXT_REQUEST_READ","PARAM_EXT_REQUEST_READ_DATA","PARAM_EXT_SET","PARAM_EXT_SET_DATA","PARAM_EXT_VALUE","PARAM_EXT_VALUE_DATA","PARAM_MAP_RC","PARAM_MAP_RC_DATA","PARAM_READ_PERSISTENT","PARAM_REQUEST_LIST","PARAM_REQUEST_LIST_DATA","PARAM_REQUEST_READ","PARAM_REQUEST_READ_DATA","PARAM_RESET_ALL_DEFAULT","PARAM_RESET_CONFIG_DEFAULT","PARAM_RESET_SENSOR_DEFAULT","PARAM_SET","PARAM_SET_DATA","PARAM_VALUE","PARAM_VALUE_DATA","PARAM_WRITE_PERSISTENT","PING","PING_DATA","PLAY_TUNE","PLAY_TUNE_DATA","PLAY_TUNE_V2","PLAY_TUNE_V2_DATA","POSITION_TARGET_GLOBAL_INT","POSITION_TARGET_GLOBAL_INT_DATA","POSITION_TARGET_LOCAL_NED","POSITION_TARGET_LOCAL_NED_DATA","POSITION_TARGET_TYPEMASK_AX_IGNORE","POSITION_TARGET_TYPEMASK_AY_IGNORE","POSITION_TARGET_TYPEMASK_AZ_IGNORE","POSITION_TARGET_TYPEMASK_FORCE_SET","POSITION_TARGET_TYPEMASK_VX_IGNORE","POSITION_TARGET_TYPEMASK_VY_IGNORE","POSITION_TARGET_TYPEMASK_VZ_IGNORE","POSITION_TARGET_TYPEMASK_X_IGNORE","POSITION_TARGET_TYPEMASK_YAW_IGNORE","POSITION_TARGET_TYPEMASK_YAW_RATE_IGNORE","POSITION_TARGET_TYPEMASK_Y_IGNORE","POSITION_TARGET_TYPEMASK_Z_IGNORE","POWER_STATUS","POWER_STATUS_DATA","PRECISION_LAND_MODE_DISABLED","PRECISION_LAND_MODE_OPPORTUNISTIC","PRECISION_LAND_MODE_REQUIRED","PROTOCOL_VERSION","PROTOCOL_VERSION_DATA","ParachuteAction","ParamAck","PositionTargetTypemask","PrecisionLandMode","PreflightStorageMissionAction","PreflightStorageParameterAction","RADIO_STATUS","RADIO_STATUS_DATA","RAW_IMU","RAW_IMU_DATA","RAW_PRESSURE","RAW_PRESSURE_DATA","RAW_RPM","RAW_RPM_DATA","RC_CHANNELS","RC_CHANNELS_DATA","RC_CHANNELS_OVERRIDE","RC_CHANNELS_OVERRIDE_DATA","RC_CHANNELS_RAW","RC_CHANNELS_RAW_DATA","RC_CHANNELS_SCALED","RC_CHANNELS_SCALED_DATA","RC_TYPE_SPEKTRUM_DSM2","RC_TYPE_SPEKTRUM_DSMX","REQUEST_DATA_STREAM","REQUEST_DATA_STREAM_DATA","REQUEST_EVENT","REQUEST_EVENT_DATA","RESOURCE_REQUEST","RESOURCE_REQUEST_DATA","RESPONSE_EVENT_ERROR","RESPONSE_EVENT_ERROR_DATA","RTK_BASELINE_COORDINATE_SYSTEM_ECEF","RTK_BASELINE_COORDINATE_SYSTEM_NED","RcType","RtkBaselineCoordinateSystem","SAFETY_ALLOWED_AREA","SAFETY_ALLOWED_AREA_DATA","SAFETY_SET_ALLOWED_AREA","SAFETY_SET_ALLOWED_AREA_DATA","SCALED_IMU","SCALED_IMU2","SCALED_IMU2_DATA","SCALED_IMU3","SCALED_IMU3_DATA","SCALED_IMU_DATA","SCALED_PRESSURE","SCALED_PRESSURE2","SCALED_PRESSURE2_DATA","SCALED_PRESSURE3","SCALED_PRESSURE3_DATA","SCALED_PRESSURE_DATA","SERIAL_CONTROL","SERIAL_CONTROL_DATA","SERIAL_CONTROL_DEV_GPS1","SERIAL_CONTROL_DEV_GPS2","SERIAL_CONTROL_DEV_SHELL","SERIAL_CONTROL_DEV_TELEM1","SERIAL_CONTROL_DEV_TELEM2","SERIAL_CONTROL_FLAG_BLOCKING","SERIAL_CONTROL_FLAG_EXCLUSIVE","SERIAL_CONTROL_FLAG_MULTI","SERIAL_CONTROL_FLAG_REPLY","SERIAL_CONTROL_FLAG_RESPOND","SERIAL_CONTROL_SERIAL0","SERIAL_CONTROL_SERIAL1","SERIAL_CONTROL_SERIAL2","SERIAL_CONTROL_SERIAL3","SERIAL_CONTROL_SERIAL4","SERIAL_CONTROL_SERIAL5","SERIAL_CONTROL_SERIAL6","SERIAL_CONTROL_SERIAL7","SERIAL_CONTROL_SERIAL8","SERIAL_CONTROL_SERIAL9","SERVO_OUTPUT_RAW","SERVO_OUTPUT_RAW_DATA","SETUP_SIGNING","SETUP_SIGNING_DATA","SET_ACTUATOR_CONTROL_TARGET","SET_ACTUATOR_CONTROL_TARGET_DATA","SET_ATTITUDE_TARGET","SET_ATTITUDE_TARGET_DATA","SET_GPS_GLOBAL_ORIGIN","SET_GPS_GLOBAL_ORIGIN_DATA","SET_HOME_POSITION","SET_HOME_POSITION_DATA","SET_MODE","SET_MODE_DATA","SET_POSITION_TARGET_GLOBAL_INT","SET_POSITION_TARGET_GLOBAL_INT_DATA","SET_POSITION_TARGET_LOCAL_NED","SET_POSITION_TARGET_LOCAL_NED_DATA","SIM_STATE","SIM_STATE_DATA","SMART_BATTERY_INFO","SMART_BATTERY_INFO_DATA","STATUSTEXT","STATUSTEXT_DATA","STORAGE_INFORMATION","STORAGE_INFORMATION_DATA","STORAGE_STATUS_EMPTY","STORAGE_STATUS_NOT_SUPPORTED","STORAGE_STATUS_READY","STORAGE_STATUS_UNFORMATTED","STORAGE_TYPE_CF","STORAGE_TYPE_CFE","STORAGE_TYPE_HD","STORAGE_TYPE_MICROSD","STORAGE_TYPE_OTHER","STORAGE_TYPE_SD","STORAGE_TYPE_UNKNOWN","STORAGE_TYPE_USB_STICK","STORAGE_TYPE_XQD","STORAGE_USAGE_FLAG_LOGS","STORAGE_USAGE_FLAG_PHOTO","STORAGE_USAGE_FLAG_SET","STORAGE_USAGE_FLAG_VIDEO","SUPPORTED_TUNES","SUPPORTED_TUNES_DATA","SYSTEM_TIME","SYSTEM_TIME_DATA","SYS_STATUS","SYS_STATUS_DATA","SerialControlDev","SerialControlFlag","SetFocusType","StorageStatus","StorageType","StorageUsageFlag","TERRAIN_CHECK","TERRAIN_CHECK_DATA","TERRAIN_DATA","TERRAIN_DATA_DATA","TERRAIN_REPORT","TERRAIN_REPORT_DATA","TERRAIN_REQUEST","TERRAIN_REQUEST_DATA","TIMESYNC","TIMESYNC_DATA","TIME_ESTIMATE_TO_TARGET","TIME_ESTIMATE_TO_TARGET_DATA","TRAJECTORY_REPRESENTATION_BEZIER","TRAJECTORY_REPRESENTATION_BEZIER_DATA","TRAJECTORY_REPRESENTATION_WAYPOINTS","TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA","TUNE_FORMAT_MML_MODERN","TUNE_FORMAT_QBASIC1_1","TUNNEL","TUNNEL_DATA","TuneFormat","UAVCAN_NODE_HEALTH_CRITICAL","UAVCAN_NODE_HEALTH_ERROR","UAVCAN_NODE_HEALTH_OK","UAVCAN_NODE_HEALTH_WARNING","UAVCAN_NODE_INFO","UAVCAN_NODE_INFO_DATA","UAVCAN_NODE_MODE_INITIALIZATION","UAVCAN_NODE_MODE_MAINTENANCE","UAVCAN_NODE_MODE_OFFLINE","UAVCAN_NODE_MODE_OPERATIONAL","UAVCAN_NODE_MODE_SOFTWARE_UPDATE","UAVCAN_NODE_STATUS","UAVCAN_NODE_STATUS_DATA","UAVIONIX_ADSB_OUT_CFG","UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L15M_W23M","UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L25M_W28P5M","UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L25_34M","UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L35_33M","UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L35_38M","UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L45_39P5M","UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L45_45M","UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L55_45M","UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L55_52M","UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L65_59P5M","UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L65_67M","UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L75_W72P5M","UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L75_W80M","UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L85_W80M","UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L85_W90M","UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_NO_DATA","UAVIONIX_ADSB_OUT_CFG_DATA","UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_LEFT_2M","UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_LEFT_4M","UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_LEFT_6M","UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_NO_DATA","UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_RIGHT_0M","UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_RIGHT_2M","UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_RIGHT_4M","UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_RIGHT_6M","UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LON_APPLIED_BY_SENSOR","UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LON_NO_DATA","UAVIONIX_ADSB_OUT_DOWNED_AIRCRAFT_EMERGENCY","UAVIONIX_ADSB_OUT_DYNAMIC","UAVIONIX_ADSB_OUT_DYNAMIC_DATA","UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX_2D","UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX_3D","UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX_DGPS","UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX_NONE_0","UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX_NONE_1","UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX_RTK","UAVIONIX_ADSB_OUT_DYNAMIC_STATE_AUTOPILOT_ENABLED","UAVIONIX_ADSB_OUT_DYNAMIC_STATE_IDENT","UAVIONIX_ADSB_OUT_DYNAMIC_STATE_INTENT_CHANGE","UAVIONIX_ADSB_OUT_DYNAMIC_STATE_NICBARO_CROSSCHECKED","UAVIONIX_ADSB_OUT_DYNAMIC_STATE_ON_GROUND","UAVIONIX_ADSB_OUT_GENERAL_EMERGENCY","UAVIONIX_ADSB_OUT_LIFEGUARD_EMERGENCY","UAVIONIX_ADSB_OUT_MINIMUM_FUEL_EMERGENCY","UAVIONIX_ADSB_OUT_NO_COMM_EMERGENCY","UAVIONIX_ADSB_OUT_NO_EMERGENCY","UAVIONIX_ADSB_OUT_RESERVED","UAVIONIX_ADSB_OUT_RF_SELECT_RX_ENABLED","UAVIONIX_ADSB_OUT_RF_SELECT_STANDBY","UAVIONIX_ADSB_OUT_RF_SELECT_TX_ENABLED","UAVIONIX_ADSB_OUT_UNLAWFUL_INTERFERANCE_EMERGENCY","UAVIONIX_ADSB_RF_HEALTH_FAIL_RX","UAVIONIX_ADSB_RF_HEALTH_FAIL_TX","UAVIONIX_ADSB_RF_HEALTH_INITIALIZING","UAVIONIX_ADSB_RF_HEALTH_OK","UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT","UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA","UNDER_WAY","UTM_DATA_AVAIL_FLAGS_ALTITUDE_AVAILABLE","UTM_DATA_AVAIL_FLAGS_HORIZONTAL_VELO_AVAILABLE","UTM_DATA_AVAIL_FLAGS_NEXT_WAYPOINT_AVAILABLE","UTM_DATA_AVAIL_FLAGS_POSITION_AVAILABLE","UTM_DATA_AVAIL_FLAGS_RELATIVE_ALTITUDE_AVAILABLE","UTM_DATA_AVAIL_FLAGS_TIME_VALID","UTM_DATA_AVAIL_FLAGS_UAS_ID_AVAILABLE","UTM_DATA_AVAIL_FLAGS_VERTICAL_VELO_AVAILABLE","UTM_FLIGHT_STATE_AIRBORNE","UTM_FLIGHT_STATE_EMERGENCY","UTM_FLIGHT_STATE_GROUND","UTM_FLIGHT_STATE_NOCTRL","UTM_FLIGHT_STATE_UNKNOWN","UTM_GLOBAL_POSITION","UTM_GLOBAL_POSITION_DATA","UavcanNodeHealth","UavcanNodeMode","UavionixAdsbEmergencyStatus","UavionixAdsbOutCfgAircraftSize","UavionixAdsbOutCfgGpsOffsetLat","UavionixAdsbOutCfgGpsOffsetLon","UavionixAdsbOutDynamicGpsFix","UavionixAdsbOutDynamicState","UavionixAdsbOutRfSelect","UavionixAdsbRfHealth","UtmDataAvailFlags","UtmFlightState","V2_EXTENSION","V2_EXTENSION_DATA","VFR_HUD","VFR_HUD_DATA","VIBRATION","VIBRATION_DATA","VICON_POSITION_ESTIMATE","VICON_POSITION_ESTIMATE_DATA","VIDEO_STREAM_INFORMATION","VIDEO_STREAM_INFORMATION_DATA","VIDEO_STREAM_STATUS","VIDEO_STREAM_STATUS_DATA","VIDEO_STREAM_STATUS_FLAGS_RUNNING","VIDEO_STREAM_STATUS_FLAGS_THERMAL","VIDEO_STREAM_TYPE_MPEG_TS_H264","VIDEO_STREAM_TYPE_RTPUDP","VIDEO_STREAM_TYPE_RTSP","VIDEO_STREAM_TYPE_TCP_MPEG","VISION_POSITION_ESTIMATE","VISION_POSITION_ESTIMATE_DATA","VISION_SPEED_ESTIMATE","VISION_SPEED_ESTIMATE_DATA","VTOL_TRANSITION_HEADING_ANY","VTOL_TRANSITION_HEADING_NEXT_WAYPOINT","VTOL_TRANSITION_HEADING_SPECIFIED","VTOL_TRANSITION_HEADING_TAKEOFF","VTOL_TRANSITION_HEADING_VEHICLE_DEFAULT","Vcc","VelEW","VideoStreamStatusFlags","VideoStreamType","Vservo","VtolTransitionHeading","WHEEL_DISTANCE","WHEEL_DISTANCE_DATA","WIFI_CONFIG_AP","WIFI_CONFIG_AP_DATA","WIFI_CONFIG_AP_MODE_AP","WIFI_CONFIG_AP_MODE_DISABLED","WIFI_CONFIG_AP_MODE_STATION","WIFI_CONFIG_AP_MODE_UNDEFINED","WIFI_CONFIG_AP_RESPONSE_ACCEPTED","WIFI_CONFIG_AP_RESPONSE_MODE_ERROR","WIFI_CONFIG_AP_RESPONSE_PASSWORD_ERROR","WIFI_CONFIG_AP_RESPONSE_REJECTED","WIFI_CONFIG_AP_RESPONSE_SSID_ERROR","WIFI_CONFIG_AP_RESPONSE_UNDEFINED","WINCH_ABANDON_LINE","WINCH_DELIVER","WINCH_HOLD","WINCH_LOAD_LINE","WINCH_LOAD_PAYLOAD","WINCH_LOCK","WINCH_RATE_CONTROL","WINCH_RELATIVE_LENGTH_CONTROL","WINCH_RELAXED","WINCH_RETRACT","WINCH_STATUS","WINCH_STATUS_DATA","WIND_COV","WIND_COV_DATA","WifiConfigApMode","WifiConfigApResponse","WinchActions","ZOOM_TYPE_CONTINUOUS","ZOOM_TYPE_FOCAL_LENGTH","ZOOM_TYPE_RANGE","ZOOM_TYPE_STEP","abs_pressure","abs_pressure","acc","acc_x","acc_y","acc_z","accuracy","accuracy","accuracyHor","accuracyVel","accuracyVert","ack","action","active","actuator","address","afx","afx","afx","afx","afy","afy","afy","afy","afz","afz","afz","afz","aircraftSize","airspeed","airspeed","airspeed","airspeed","airspeed_sp","airspeed_sp","all","all","all","all","all","all","all","all","all","all","all","all","all","all","all","all","all","all","all","all","all","all","all","all","all","all","all","all","alt","alt","alt","alt","alt","alt","alt","alt","alt","alt","alt","alt","alt","alt","alt","alt","alt_camera","alt_error","alt_image","altitude","altitude","altitude","altitude","altitude","altitude","altitude_amsl","altitude_amsl","altitude_barometric","altitude_geodetic","altitude_local","altitude_minimum_delta","altitude_monotonic","altitude_relative","altitude_sp","altitude_terrain","altitude_type","angle_x","angle_y","angular_velocity_x","angular_velocity_x","angular_velocity_x","angular_velocity_y","angular_velocity_y","angular_velocity_y","angular_velocity_z","angular_velocity_z","angular_velocity_z","apn","approach_x","approach_x","approach_y","approach_y","approach_z","approach_z","area_ceiling","area_count","area_floor","area_radius","arguments","arming_time_utc","array_id","aspd_error","attitude_q","attitude_quaternion","authentication_data","authentication_type","autocontinue","autocontinue","autocontinue","autopilot","autopilot","autosaved","aux1","aux2","aux3","aux4","available_capacity","available_capacity","ax","ay","az","baroAltMSL","barometer_accuracy","barometric_pressure","base_mode","base_mode","base_mode","baseline_a_mm","baseline_a_mm","baseline_b_mm","baseline_b_mm","baseline_c_mm","baseline_c_mm","baseline_coords_type","baseline_coords_type","bat_current_setpoint","battery","battery_current","battery_function","battery_function","battery_remaining","battery_remaining","battery_remaining","baudrate","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitand_assign","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitor_assign","bitrate","bitrate","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bits","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","bitxor_assign","board_version","body_pitch_rate","body_pitch_rate","body_roll_rate","body_roll_rate","body_yaw_rate","body_yaw_rate","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","bottom_clearance","breach_count","breach_status","breach_time","breach_type","bus","bus","bus","bus_voltage","buttons","cal_mask","cal_status","callsign","callsign","callsign","cam_definition_uri","cam_definition_version","camera_id","cap_flags","cap_flags","capabilities","capacity_full","capacity_full_specification","capture_result","category_eu","chan10_raw","chan10_raw","chan11_raw","chan11_raw","chan12_raw","chan12_raw","chan13_raw","chan14_raw","chan15_raw","chan16_raw","chan17_raw","chan18_raw","chan1_raw","chan1_raw","chan1_raw","chan1_raw","chan1_scaled","chan2_raw","chan2_raw","chan2_raw","chan2_raw","chan2_scaled","chan3_raw","chan3_raw","chan3_raw","chan3_raw","chan3_scaled","chan4_raw","chan4_raw","chan4_raw","chan4_raw","chan4_scaled","chan5_raw","chan5_raw","chan5_raw","chan5_raw","chan5_scaled","chan6_raw","chan6_raw","chan6_raw","chan6_raw","chan6_scaled","chan7_raw","chan7_raw","chan7_raw","chan7_raw","chan7_scaled","chan8_raw","chan8_raw","chan8_raw","chan8_raw","chan8_scaled","chan9_raw","chan9_raw","chancount","charging_minimum_voltage","child_frame_id","class_eu","classification_type","climb","climb_rate","climb_rate","clipping_0","clipping_1","clipping_2","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cog","cog","cog","command","command","command","command","command","command","command","commanded_action","compass_id","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","complement","confirmation","connection_type","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","contains","control_request","control_request","controls","controls","controls","coordinate_frame","coordinate_frame","coordinate_frame","coordinate_frame","count","count","count","count","count","count","count","counter","covariance","covariance","covariance","covariance","cpu_combined","cpu_cores","current","current","current","current","current","current_battery","current_battery","current_consumed","current_distance","current_height","custom0","custom1","custom2","custom_cap_flags","custom_mode","custom_mode","custom_mode","custom_mode","custom_name","custom_state","cycle_count","cylinder_head_temperature","data","data","data","data","data","data","data","data","data","data","data_page","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default","default_message_from_id","delta","description","description_type","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deser","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","destination_component","destination_system","device","device_name","dgps_age","dgps_numch","diag_x","diag_y","diag_z","diff_pressure","diff_pressure","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","difference","dimension_bow","dimension_port","dimension_starboard","dimension_stern","direction","discharge_minimum_voltage","dist","distance","distance","distance","distance","distances","drop_rate_comm","ecu_index","emergencyStatus","emitterType","emitter_type","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","enable_lte","enable_pin","end","end_index","end_index","energy_consumed","engine_load","eph","eph","eph","eph","epv","epv","epv","epv","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","error","error_count","errors_comm","errors_count1","errors_count2","errors_count3","errors_count4","est_capabilities","estimator_status","estimator_type","estimator_type","event_time_boot_ms","exhaust_gas_temperature","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend","extra_crc","failed_sessions","failsafe","failure_flags","failure_flags","failure_flags","failure_reason","fan_speed","feed_forward_angular_velocity_z","fields_updated","fields_updated","file_crc","file_url","firmware_version","firmware_version","first_message_offset","first_message_offset","first_sequence","fitness","fix_type","fix_type","fix_type","fix_type","fixed","flags","flags","flags","flags","flags","flags","flags","flags","flags","flags","flags","flags","flags","flags","flags","flags","flags","flags","flight_custom_version","flight_state","flight_sw_version","flight_uuid","flow_comp_m_x","flow_comp_m_y","flow_x","flow_y","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","focal_length","format","format","frame","frame","frame","frame","frame","frame","frame","frame_id","framerate","framerate","frequency","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_i64","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_iter","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","from_u64","fuel_consumed","fuel_flow","gcs_system_id","general_metadata_file_crc","general_metadata_uri","generator_speed","generator_temperature","gimbal_device_id","gimbal_device_id","gimbal_device_id","gimbal_device_id","gimbal_device_id","gpsAlt","gpsFix","gpsLat","gpsLon","gpsOffsetLat","gpsOffsetLon","gps_fix_type","gps_id","gps_nsat","gpu_combined","gpu_cores","grid_spacing","grid_spacing","gridbit","ground_distance","groundspeed","groundspeed","groundspeed","group_mlx","group_mlx","h_acc","h_acc","hagl_ratio","hardware_version","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hdg","hdg","hdg_acc","hdop","heading","heading","heading","heading","heading","heading_sp","health","health","height","height","height_reference","hfov","hfov","hfov","hor_velocity","horiz_accuracy","horiz_accuracy","horizontal_accuracy","horizontal_minimum_delta","humidity","hw_unique_id","hw_version_major","hw_version_minor","iar_num_hypotheses","iar_num_hypotheses","id","id","id","id","id","id","id","id","id","id","id","id_or_mac","id_or_mac","id_or_mac","id_or_mac","id_or_mac","id_or_mac","id_or_mac","id_type","ids","ignition_timing","ignore_flags","image_index","image_interval","image_status","increment","ind","ind_airspeed","index","index","index","info","initial_timestamp","injection_time","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","insert","intake_manifold_pressure","intake_manifold_temperature","integrated_x","integrated_x","integrated_xgyro","integrated_xgyro","integrated_y","integrated_y","integrated_ygyro","integrated_ygyro","integrated_zgyro","integrated_zgyro","integration_time_us","integration_time_us","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersection","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","intersects","interval_us","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_all","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","is_empty","jpg_quality","key","lac","land","landed_state","landed_state","landed_state","last_change_ms","last_heartbeat","last_log_num","last_page_index","last_sequence","lat","lat","lat","lat","lat","lat","lat","lat","lat","lat","lat","lat","lat","lat","lat","lat","lat","lat","lat","lat_camera","lat_image","lat_int","lat_int","latitude","latitude","latitude","latitude","latitude","latitude","latitude","len","len","len","len","length","length","length","lens_id","library_version_hash","line_length","link_rx_max","link_rx_rate","link_tx_max","link_tx_rate","link_type","load","load_current","loaded","log_levels","lon","lon","lon","lon","lon","lon","lon","lon","lon","lon","lon","lon","lon","lon","lon","lon","lon","lon","lon","lon_camera","lon_image","lon_int","lon_int","longitude","longitude","longitude","longitude","longitude","longitude","longitude","mag_ratio","manual_override_switch","mask","mavlink_version","mavtype","mavtype","mavtype","mavtype","mavtype","mavtype","mavtype","mavtype","mavtype","mavtype","mavtype","mavtype","max_distance","max_distance","max_version","mcc","message_id","message_id","message_id_from_name","message_name","message_rate","message_type","messages","messages_lost","messages_received","messages_sent","middleware_custom_version","middleware_sw_version","min_distance","min_distance","min_version","mission_end","mission_next_item","mnc","mode","mode","mode","mode_id","mode_switch","model_name","model_name","msg_pack_size","name","name","name","name","name","name","name","nav_bearing","nav_mode","nav_pitch","nav_roll","navigational_status","new_pin","next_alt","next_lat","next_lon","noise","not","not","not","not","not","not","not","not","not","not","not","not","not","not","not","not","not","not","not","not","not","not","not","not","not","not","not","not","nsats","nsats","numSats","num_ids","num_logs","offdiag_x","offdiag_y","offdiag_z","ofs","ofs","ofs_x","ofs_y","ofs_z","on_off","onboard_control_sensors_enabled","onboard_control_sensors_health","onboard_control_sensors_present","operation","operator_altitude_geo","operator_altitude_geo","operator_id","operator_id_type","operator_latitude","operator_latitude","operator_location_type","operator_longitude","operator_longitude","orientation","os_custom_version","os_sw_version","p1x","p1x","p1y","p1y","p1z","p1z","p2x","p2x","p2y","p2y","p2z","p2z","packets","param1","param1","param1","param1","param2","param2","param2","param2","param3","param3","param3","param3","param4","param4","param4","param4","param5","param6","param7","param_count","param_count","param_id","param_id","param_id","param_id","param_id","param_id","param_id","param_id","param_index","param_index","param_index","param_index","param_index","param_result","param_type","param_type","param_type","param_type","param_type","param_value","param_value","param_value","param_value","param_value","param_value0","param_value_max","param_value_min","parameter_rc_channel_index","parse","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","passkey","password","payload","payload","payload","payload","payload_length","payload_type","pending","peripherals_metadata_file_crc","peripherals_metadata_uri","pin","pitch","pitch","pitch","pitch","pitch","pitch","pitch","pitch","pitch","pitch","pitch","pitch","pitch_elevator","pitch_max","pitch_max","pitch_min","pitch_min","pitch_rate","pitch_rate","pitch_rate","pitchspeed","pitchspeed","pitchspeed","pitchspeed","pitchspeed","pitchspeed","point_x","point_y","port","port","port","pos_horiz_accuracy","pos_horiz_ratio","pos_variance","pos_vert_accuracy","pos_vert_ratio","pos_x","pos_x","pos_y","pos_y","pos_yaw","pos_yaw","pos_z","pos_z","pose_covariance","position_cov","power_generated","press_abs","press_abs","press_abs","press_abs","press_diff","press_diff","press_diff","press_diff1","press_diff2","pressure_alt","pressure_alt","primary_control_compid","primary_control_sysid","product_id","pt_compensation","puk","q","q","q","q","q","q","q","q","q","q","q","q","q","q","q1","q1","q2","q2","q3","q3","q4","q4","q_estimated_delay_us","quality","quality","quality","quality","r","radius","radius","ram_total","ram_usage","rates","read_speed","reason","rec_bottom_x","rec_bottom_y","rec_top_x","rec_top_y","recording_time_ms","rectifier_temperature","relative_alt","relative_alt","relative_alt","relative_alt","remnoise","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remove","remrssi","req_message_rate","req_stream_id","request_id","resolution_h","resolution_h","resolution_h","resolution_v","resolution_v","resolution_v","response","resting_minimum_voltage","result","rfHealth","rfSelect","ring_pending","roaming","roll","roll","roll","roll","roll","roll","roll","roll","roll","roll","roll_ailerons","roll_max","roll_max","roll_min","roll_min","roll_rate","rollspeed","rollspeed","rollspeed","rollspeed","rollspeed","rollspeed","rotation","rotation","rpm","rpm","rssi","rssi","rssi","rssi","rssi","rtk_health","rtk_health","rtk_rate","rtk_rate","rtk_receiver_id","rtk_receiver_id","runtime","rx_buf","rx_overflows","rx_parse_err","rx_rate","rx_session_pending","rxerrors","safe_return","satellite_azimuth","satellite_elevation","satellite_prn","satellite_snr","satellite_used","satellites_visible","satellites_visible","satellites_visible","satellites_visible","satellites_visible","scale","secondary_control_compid","secondary_control_sysid","secret_key","sensor_id","sensor_id","sensor_id","sensor_size_h","sensor_size_v","sensor_type","seq","seq","seq","seq","seq","seq","seq","seq","seq","seqnr","sequence","sequence","sequence","sequence","sequence","sequence","sequence_oldest_available","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","ser","serial_number","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize","servo1_raw","servo2_raw","servo3_raw","servo4_raw","servo5_raw","servo6_raw","servo7_raw","servo8_raw","set","set","set","set","set","set","set","set","set","set","set","set","set","set","set","set","set","set","set","set","set","set","set","set","set","set","set","set","severity","signal_quality","single_message_size","size","size","size_x","size_y","spacing","spark_dwell_time","spec_version_hash","speed","speed_accuracy","speed_accuracy","speed_horizontal","speed_vertical","squawk","squawk","src","ssid","stallSpeed","start","start_index","start_index","start_stop","state","state","status","status","status","status","status","status","std_dev_horz","std_dev_vert","storage","storage_count","storage_id","storage_total","storage_type","storage_usage","stream_id","stream_id","stream_id","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_mode","successful_sessions","sw_vcs_commit","sw_version_major","sw_version_minor","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","symmetric_difference","system_status","takeoff_time_utc","target","target_altitude","target_bearing","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_component","target_data","target_distance","target_heading","target_network","target_network","target_num","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","target_system","tas_ratio","tc1","temperature","temperature","temperature","temperature","temperature","temperature","temperature","temperature","temperature","temperature","temperature","temperature","temperature","temperature_air","temperature_air","temperature_board","temperature_core","tension","terrain_height","text","threat_level","throttle","throttle","throttle","throttle","throttle_out","throttle_position","thrust","thrust","thrust","time","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_ms","time_boot_us","time_delta_distance_us","time_delta_distance_us","time_last_baseline_ms","time_last_baseline_ms","time_to_minimum_delta","time_unix_usec","time_until_maintenance","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_usec","time_utc","time_utc","time_week","time_week_ms","timeout","timestamp","timestamp","timestamp","timestamp","timestamp","timestamp","timestamp","timestamp","timestamp_accuracy","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_i64","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","to_u64","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","toggle","total_capacity","tow","tow","tracking_mode","tracking_status","tracking_status","transfer_type","true_airspeed","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","ts1","tslc","tslc","tune","tune","turn_rate","tx_buf","tx_overflows","tx_rate","tx_session_pending","txbuf","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_mask","type_mask","type_mask","type_mask","type_mask","type_mask","ua_type","uas_id","uas_id","uid","uid","union","union","union","union","union","union","union","union","union","union","union","union","union","union","union","union","union","union","union","union","union","union","union","union","union","union","union","union","update_rate","uptime","uptime_sec","uptime_sec","uri","uri","uri","uri_type","usec","usec","usec","usec","used_capacity","utcTime","v_acc","v_acc","v_estimated_delay_us","valid_points","valid_points","value","value","value","value","var_horiz","var_vert","vd","vd","vd","vdop","ve","ve","ve","vel","vel","vel","vel","velNS","velVert","vel_acc","vel_acc","vel_d","vel_e","vel_n","vel_ratio","vel_variance","vel_x","vel_y","vel_yaw","vel_z","velocity","velocity_covariance","vendor_id","vendor_name","vendor_name","vendor_specific_status_code","ver","ver_velocity","version","version","vert_accuracy","vert_accuracy","vertical_accuracy","vfov","vibration_x","vibration_y","vibration_z","video_status","vn","vn","vn","voltage","voltage","voltage_battery","voltages","vtol_state","vx","vx","vx","vx","vx","vx","vx","vx","vx","vx","vx","vx","vx","vy","vy","vy","vy","vy","vy","vy","vy","vy","vy","vy","vy","vy","vz","vz","vz","vz","vz","vz","vz","vz","vz","vz","vz","vz","vz","weight","width","wind_alt","wind_heading","wind_x","wind_y","wind_z","windspeed","wn","wn","wp_dist","wp_distance","wp_num","wp_num","write_speed","x","x","x","x","x","x","x","x","x","x","x","x","x","x","x","x","x","x","x","x_acc","x_pos","x_vel","xacc","xacc","xacc","xacc","xacc","xacc","xacc","xacc","xacc","xgyro","xgyro","xgyro","xgyro","xgyro","xgyro","xgyro","xmag","xmag","xmag","xmag","xmag","xmag","xtrack_error","y","y","y","y","y","y","y","y","y","y","y","y","y","y","y","y","y","y","y","y_acc","y_pos","y_vel","yacc","yacc","yacc","yacc","yacc","yacc","yacc","yacc","yacc","yaw","yaw","yaw","yaw","yaw","yaw","yaw","yaw","yaw","yaw","yaw","yaw","yaw","yaw","yaw","yaw_max","yaw_max","yaw_min","yaw_min","yaw_rate","yaw_rate","yaw_rate","yaw_rate","yaw_rate","yaw_rate","yaw_rate","yaw_rudder","yawspeed","yawspeed","yawspeed","yawspeed","yawspeed","yawspeed","ygyro","ygyro","ygyro","ygyro","ygyro","ygyro","ygyro","ymag","ymag","ymag","ymag","ymag","ymag","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z_acc","z_pos","z_vel","zacc","zacc","zacc","zacc","zacc","zacc","zacc","zacc","zacc","zgyro","zgyro","zgyro","zgyro","zgyro","zgyro","zgyro","zmag","zmag","zmag","zmag","zmag","zmag","remove_trailing_zeroes"],"q":[[0,"mavlink"],[156,"mavlink::ardupilotmega"],[15498,"mavlink::bytes"],[15522,"mavlink::bytes_mut"],[15547,"mavlink::common"],[27060,"mavlink::error"],[27102,"mavlink::error::ParserError"],[27107,"mavlink::icarous"],[27239,"mavlink::peek_reader"],[27254,"mavlink::uavionix"],[39174,"mavlink::utils"],[39175,"mavlink_core"],[39176,"core::clone"],[39177,"mavlink_core::connection"],[39178,"alloc::boxed"],[39179,"std::io::error"],[39180,"core::result"],[39181,"mavlink_core::error"],[39182,"serde::de"],[39183,"core::fmt"],[39184,"mavlink_core::peek_reader"],[39185,"std::io"],[39186,"serde::ser"],[39187,"core::any"],[39188,"core::cmp"],[39189,"core::iter::traits::collect"],[39190,"core::option"],[39191,"core::hash"],[39192,"mavlink_core::bytes"],[39193,"mavlink_core::bytes_mut"],[39194,"alloc::string"],[39195,"mavlink_core::utils"]],"i":[19,19,19,0,0,0,0,0,0,0,0,0,0,19,0,19,7,7,0,6,7,8,4,5,6,7,8,4,5,0,0,0,4,5,6,7,8,4,5,6,7,8,4,5,0,5,4,5,6,0,6,4,5,10,19,8,6,6,7,4,5,0,10,6,7,8,4,5,6,7,8,4,5,13,4,5,8,4,5,8,0,5,6,7,8,4,5,10,4,5,10,10,8,4,5,10,4,5,4,5,0,8,4,5,0,0,0,0,0,13,13,13,13,13,4,5,6,10,19,8,6,7,8,4,5,4,5,13,4,5,6,6,7,8,4,5,6,7,8,4,5,6,7,8,4,5,6,7,8,4,5,0,0,0,0,0,520,520,520,520,520,520,520,520,375,375,375,375,375,375,69,0,431,431,431,431,431,431,431,431,431,431,431,431,431,431,431,431,431,431,431,431,431,431,431,431,431,431,431,431,431,431,431,431,431,69,0,69,0,500,500,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,44,44,44,44,44,44,44,44,44,44,69,0,69,69,0,69,0,0,69,0,58,58,58,58,58,58,58,58,58,58,58,58,58,444,444,444,444,444,444,444,444,444,444,444,444,444,444,444,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,69,0,69,0,181,69,0,69,0,69,0,69,69,0,0,69,0,55,55,55,55,55,55,69,0,69,0,69,0,69,0,69,0,486,486,486,486,0,0,0,0,0,0,0,0,0,0,0,69,0,512,69,0,69,0,69,0,51,51,51,51,51,51,51,51,51,51,51,51,69,491,491,0,491,491,491,69,0,69,0,69,0,377,377,377,69,0,69,0,495,495,495,495,495,495,495,69,0,69,0,521,521,521,519,519,519,467,467,467,467,69,0,69,0,514,69,0,514,514,69,0,69,463,0,463,463,463,463,425,425,425,425,497,497,497,497,497,69,0,420,420,420,420,420,420,420,420,420,420,420,420,420,69,69,0,0,90,69,0,69,0,69,0,69,0,69,0,69,0,69,0,69,0,371,371,371,371,371,371,69,0,408,408,408,408,408,408,408,408,408,408,408,408,408,408,408,408,408,408,408,408,408,408,408,408,408,69,0,69,0,69,0,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,307,307,307,0,148,69,0,69,0,69,0,69,0,69,0,69,0,69,0,69,0,69,0,69,0,411,411,411,411,411,411,411,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,36,367,37,368,369,38,39,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,40,387,388,389,390,391,41,392,393,394,395,396,397,42,398,399,400,43,44,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,45,433,434,435,436,437,438,46,439,440,441,442,443,444,445,446,47,447,448,449,450,48,451,452,453,454,455,456,49,457,458,50,459,460,51,52,461,462,463,464,465,466,467,468,469,470,471,53,472,473,474,54,475,55,476,477,56,478,479,480,481,482,483,484,485,57,486,487,488,58,489,490,59,60,491,492,61,493,494,62,495,496,63,497,498,499,500,501,502,503,504,505,506,507,64,65,508,509,510,511,66,512,67,513,514,515,516,517,518,519,520,521,522,523,524,525,526,395,395,69,0,69,0,69,0,69,0,69,0,69,0,69,0,0,0,348,69,0,53,53,53,53,53,53,53,53,69,0,53,53,53,69,0,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,445,445,445,445,445,445,52,52,52,52,52,52,52,52,69,0,69,0,69,0,69,0,69,0,48,48,48,48,48,48,48,48,48,48,69,0,48,48,69,0,69,0,0,0,0,0,410,410,410,410,410,410,410,410,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,63,468,468,468,468,468,468,468,468,464,464,464,464,69,0,450,450,450,69,0,69,0,148,69,0,447,447,447,447,447,69,0,516,516,516,516,516,516,516,69,0,0,0,0,0,0,0,69,0,483,483,483,481,481,481,475,475,475,69,0,69,0,62,62,62,62,62,62,62,62,62,62,62,62,62,62,45,45,45,45,45,45,45,45,45,45,47,47,47,47,47,47,47,47,47,47,69,0,69,0,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,382,382,382,382,382,382,382,382,382,382,69,0,69,0,69,0,69,0,69,0,69,0,69,0,69,69,0,0,69,0,460,460,460,460,460,460,460,460,460,388,388,388,388,388,388,388,388,443,443,466,466,466,466,466,466,466,466,466,466,466,466,466,466,466,466,466,398,398,398,67,498,498,498,498,498,498,498,498,498,498,498,498,498,498,69,0,69,0,69,0,451,451,451,451,508,508,508,508,508,446,446,446,446,446,455,455,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,461,461,461,461,461,472,472,472,441,441,441,441,441,413,413,384,384,384,384,384,384,384,384,384,384,384,384,384,384,69,0,69,0,415,69,0,69,0,370,370,370,370,370,370,370,370,370,69,0,69,0,69,0,40,40,40,40,40,40,40,40,69,0,69,0,69,0,69,0,502,502,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,393,393,69,0,69,0,69,0,69,0,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,69,69,0,0,69,0,69,0,69,0,69,0,69,0,69,0,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,69,0,69,0,49,49,49,49,49,49,49,49,49,49,49,49,49,49,69,0,69,0,69,0,0,0,0,0,148,321,328,332,427,427,427,427,427,427,69,0,69,0,434,434,434,69,0,0,0,69,0,510,510,510,510,63,69,0,381,381,381,492,492,492,492,492,69,0,492,43,43,43,69,0,69,69,0,0,69,0,69,0,69,69,0,0,69,0,69,0,69,0,69,0,69,0,69,0,0,0,0,0,525,525,525,525,69,0,69,0,525,525,525,525,69,0,69,0,507,507,507,507,507,507,383,383,383,383,383,383,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,418,418,418,418,418,418,418,418,512,512,512,512,512,512,512,512,524,524,524,524,524,412,412,412,474,474,474,474,474,476,458,458,458,458,458,458,458,458,458,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,403,403,403,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,392,392,392,392,392,392,392,477,477,405,405,405,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,369,369,369,369,369,369,369,369,369,509,509,509,509,509,414,489,489,489,489,489,489,489,489,489,64,505,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,493,493,493,493,493,493,493,493,493,493,493,452,452,452,452,452,452,452,452,452,452,452,452,452,452,452,452,452,452,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,459,459,459,459,429,429,429,429,429,484,484,484,484,484,484,484,484,484,484,484,484,484,484,402,402,402,402,484,484,499,499,50,50,504,504,504,504,504,504,504,504,50,50,50,50,50,50,386,386,386,386,386,386,386,499,499,499,499,499,499,499,499,499,399,399,399,399,399,399,399,417,417,376,376,376,376,376,376,385,385,385,385,432,432,440,440,440,440,440,440,440,440,423,423,423,373,373,424,424,424,424,424,424,424,424,424,424,424,424,424,439,439,439,439,439,390,513,513,513,480,480,480,480,480,494,494,494,494,494,404,404,404,404,404,404,404,404,404,404,404,404,404,404,404,404,419,419,419,419,419,419,419,419,419,419,419,419,419,419,419,419,396,396,396,396,396,396,396,453,453,453,453,453,453,453,453,453,453,453,394,394,394,394,394,394,394,394,394,394,37,37,37,37,37,37,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,490,490,469,469,465,465,465,465,465,465,465,379,379,379,379,379,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,501,501,501,501,501,501,501,501,462,462,462,462,462,462,462,462,462,66,66,66,66,66,66,400,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,407,407,407,407,407,407,407,407,407,407,407,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,421,421,421,421,421,41,41,41,41,41,41,41,41,41,41,41,41,41,41,69,0,192,192,192,192,69,0,69,0,69,0,69,0,69,0,69,0,69,0,69,0,69,0,69,0,488,69,0,69,0,69,0,69,0,488,69,0,374,374,374,374,374,374,69,0,488,90,457,368,368,368,457,457,457,69,0,69,0,69,0,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,0,69,0,69,0,506,506,506,0,69,69,0,0,69,0,69,0,69,0,69,0,69,0,69,0,69,0,69,0,69,0,69,0,69,0,69,0,69,0,69,0,433,433,433,433,433,482,69,0,69,0,482,482,482,482,511,511,511,482,482,482,482,69,0,69,0,511,0,0,0,148,436,436,436,406,406,406,406,69,0,69,0,69,0,69,0,69,0,69,0,435,69,0,69,0,435,435,435,69,0,69,0,435,69,526,0,526,526,526,526,526,69,0,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,69,0,69,0,69,0,69,0,36,36,36,36,36,36,36,36,36,36,36,36,69,0,372,372,372,69,0,0,0,348,348,348,0,0,0,0,0,0,69,0,69,0,69,0,69,0,69,0,69,0,69,0,69,0,69,0,69,0,69,0,69,0,387,387,69,0,69,0,69,0,69,0,69,0,69,0,479,479,479,479,479,479,479,479,479,479,479,479,69,0,523,523,0,0,0,0,69,0,69,0,69,69,0,69,0,0,69,69,0,69,0,0,430,430,430,430,69,0,69,0,380,380,380,380,380,42,42,42,42,42,380,380,380,380,380,380,380,380,380,380,69,0,69,0,69,0,69,0,69,0,69,0,69,0,69,0,69,0,69,0,69,0,69,0,69,0,515,515,181,69,0,69,0,397,397,397,397,454,454,454,454,454,454,454,454,454,391,391,391,391,428,428,428,428,428,428,428,428,428,69,0,69,0,69,0,0,0,0,0,0,0,0,0,0,69,0,69,0,69,0,69,0,69,0,69,0,378,378,378,378,378,378,69,0,69,0,39,39,69,0,0,0,437,437,437,437,69,0,426,426,426,426,426,69,0,69,470,470,470,470,470,470,470,470,470,470,470,470,470,470,470,470,0,416,416,416,416,416,416,416,416,485,485,473,69,0,496,496,496,496,496,496,57,57,57,57,57,473,473,473,473,473,473,38,38,38,473,59,59,59,59,69,0,444,46,46,46,46,46,46,46,46,471,471,471,471,471,69,0,0,0,0,0,0,0,0,0,0,0,0,0,69,0,69,0,69,0,69,0,69,0,69,0,442,442,518,518,518,518,69,0,69,0,69,0,448,448,448,448,448,321,323,286,0,0,323,0,69,0,69,0,69,0,478,478,478,478,522,522,522,522,522,522,449,449,449,449,449,449,449,449,449,449,69,0,69,69,0,0,0,0,0,438,438,438,438,91,164,337,360,360,360,272,272,272,297,223,309,286,286,286,148,291,255,85,298,298,119,119,119,119,119,119,125,202,253,290,320,354,359,290,320,354,359,290,320,354,359,328,149,183,229,355,149,183,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,72,84,87,118,136,167,174,230,233,240,268,288,290,295,319,337,354,355,79,163,79,144,144,80,105,142,183,266,271,332,344,347,149,352,252,252,352,85,352,352,149,352,332,145,251,251,74,139,146,74,139,146,74,139,146,269,273,80,344,80,344,80,344,142,142,151,151,151,151,248,300,185,163,116,337,136,162,162,191,215,294,183,365,108,121,121,121,121,92,258,180,148,291,180,180,176,286,252,353,75,149,365,223,309,223,309,223,309,223,309,123,183,123,246,250,149,250,333,193,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,82,239,335,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,120,157,244,157,244,157,244,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,36,367,37,368,369,38,39,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,40,387,388,389,390,391,41,392,393,394,395,396,397,42,398,399,400,43,44,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,45,433,434,435,436,437,438,46,439,440,441,442,443,444,445,446,47,447,448,449,450,48,451,452,453,454,455,456,49,457,458,50,459,460,51,52,461,462,463,464,465,466,467,468,469,470,471,53,472,473,474,54,475,55,476,477,56,478,479,480,481,482,483,484,485,57,486,487,488,58,489,490,59,60,491,492,61,493,494,62,495,496,63,497,498,499,500,501,502,503,504,505,506,507,64,65,508,509,510,511,66,512,67,513,514,515,516,517,518,519,520,521,522,523,524,525,526,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,36,367,37,368,369,38,39,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,40,387,388,389,390,391,41,392,393,394,395,396,397,42,398,399,400,43,44,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,45,433,434,435,436,437,438,46,439,440,441,442,443,444,445,446,47,447,448,449,450,48,451,452,453,454,455,456,49,457,458,50,459,460,51,52,461,462,463,464,465,466,467,468,469,470,471,53,472,473,474,54,475,55,476,477,56,478,479,480,481,482,483,484,485,57,486,487,488,58,489,490,59,60,491,492,61,493,494,62,495,496,63,497,498,499,500,501,502,503,504,505,506,507,64,65,508,509,510,511,66,512,67,513,514,515,516,517,518,519,520,521,522,523,524,525,526,352,178,327,327,327,327,240,217,125,209,253,293,336,123,125,253,125,253,243,108,116,108,116,90,328,332,73,73,144,318,82,319,184,305,120,246,246,109,319,151,76,170,76,170,76,170,170,170,170,170,170,170,76,170,263,339,86,76,170,263,339,86,76,170,263,339,86,76,170,263,339,86,76,170,263,339,86,76,170,263,339,86,76,170,263,339,86,76,170,263,339,86,76,170,170,246,103,151,151,355,149,183,222,222,222,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,36,367,37,368,369,38,39,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,40,387,388,389,390,391,41,392,393,394,395,396,397,42,398,399,400,43,44,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,45,433,434,435,436,437,438,46,439,440,441,442,443,444,445,446,47,447,448,449,450,48,451,452,453,454,455,456,49,457,458,50,459,460,51,52,461,462,463,464,465,466,467,468,469,470,471,53,472,473,474,54,475,55,476,477,56,478,479,480,481,482,483,484,485,57,486,487,488,58,489,490,59,60,491,492,61,493,494,62,495,496,63,497,498,499,500,501,502,503,504,505,506,507,64,65,508,509,510,511,66,512,67,513,514,515,516,517,518,519,520,521,522,523,524,525,526,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,36,367,37,368,369,38,39,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,40,387,388,389,390,391,41,392,393,394,395,396,397,42,398,399,400,43,44,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,45,433,434,435,436,437,438,46,439,440,441,442,443,444,445,446,47,447,448,449,450,48,451,452,453,454,455,456,49,457,458,50,459,460,51,52,461,462,463,464,465,466,467,468,469,470,471,53,472,473,474,54,475,55,476,477,56,478,479,480,481,482,483,484,485,57,486,487,488,58,489,490,59,60,491,492,61,493,494,62,495,496,63,497,498,499,500,501,502,503,504,505,506,507,64,65,508,509,510,511,66,512,67,513,514,515,516,517,518,519,520,521,522,523,524,525,526,96,140,249,361,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,230,268,288,112,191,197,215,285,294,360,196,269,357,108,116,279,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,116,116,145,158,207,112,152,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,255,264,311,322,338,290,320,354,359,83,125,132,152,156,159,187,193,194,227,239,240,253,292,343,152,72,114,131,180,141,141,89,142,83,106,166,191,194,215,227,294,307,88,250,333,250,114,211,183,183,183,216,305,216,75,149,183,365,305,337,246,353,98,111,132,161,193,209,214,237,253,259,277,292,299,301,325,336,345,162,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,36,367,37,368,369,38,39,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,40,387,388,389,390,391,41,392,393,394,395,396,397,42,398,399,400,43,44,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,45,433,434,435,436,437,438,46,439,440,441,442,443,444,445,446,47,447,448,449,450,48,451,452,453,454,455,456,49,457,458,50,459,460,51,52,461,462,463,464,465,466,467,468,469,470,471,53,472,473,474,54,475,55,476,477,56,478,479,480,481,482,483,484,485,57,486,487,488,58,489,490,59,60,491,492,61,493,494,62,495,496,63,497,498,499,500,501,502,503,504,505,506,507,64,65,508,509,510,511,66,512,67,513,514,515,516,517,518,519,520,521,522,523,524,525,526,69,130,155,155,155,155,155,155,155,115,115,115,267,267,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,36,367,37,368,369,38,39,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,40,387,388,389,390,391,41,392,393,394,395,396,397,42,398,399,400,43,44,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,45,433,434,435,436,437,438,46,439,440,441,442,443,444,445,446,47,447,448,449,450,48,451,452,453,454,455,456,49,457,458,50,459,460,51,52,461,462,463,464,465,466,467,468,469,470,471,53,472,473,474,54,475,55,476,477,56,478,479,480,481,482,483,484,485,57,486,487,488,58,489,490,59,60,491,492,61,493,494,62,495,496,63,497,498,499,500,501,502,503,504,505,506,507,64,65,508,509,510,511,66,512,67,513,514,515,516,517,518,519,520,521,522,523,524,525,526,148,291,248,248,193,246,268,268,108,108,108,91,164,348,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,90,90,90,90,252,314,116,116,116,246,167,84,147,203,213,251,343,350,333,353,176,286,328,332,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,273,273,270,262,340,250,269,353,183,230,268,288,183,230,268,288,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,36,367,37,368,369,38,39,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,40,387,388,389,390,391,41,392,393,394,395,396,397,42,398,399,400,43,44,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,45,433,434,435,436,437,438,46,439,440,441,442,443,444,445,446,47,447,448,449,450,48,451,452,453,454,455,456,49,457,458,50,459,460,51,52,461,462,463,464,465,466,467,468,469,470,471,53,472,473,474,54,475,55,476,477,56,478,479,480,481,482,483,484,485,57,486,487,488,58,489,490,59,60,491,492,61,493,494,62,495,496,63,497,498,499,500,501,502,503,504,505,506,507,64,65,508,509,510,511,66,512,67,513,514,515,516,517,518,519,520,521,522,523,524,525,526,291,303,152,297,297,333,333,333,333,333,337,206,72,180,318,248,353,142,269,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,69,196,269,196,269,291,291,171,149,139,152,183,126,141,206,91,164,225,319,73,305,161,345,208,108,230,233,268,288,127,346,73,74,90,109,134,139,144,146,193,200,214,239,240,247,279,295,311,323,330,332,335,342,120,295,120,300,110,110,110,110,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,36,36,36,36,36,367,37,37,37,37,37,368,369,38,38,38,38,38,39,39,39,39,39,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,40,40,40,40,40,387,388,389,390,391,41,41,41,41,41,392,393,394,395,396,397,42,42,42,42,42,398,399,400,43,43,43,43,43,44,44,44,44,44,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,45,45,45,45,45,433,434,435,436,437,438,46,46,46,46,46,439,440,441,442,443,444,445,446,47,47,47,47,47,447,448,449,450,48,48,48,48,48,451,452,453,454,455,456,49,49,49,49,49,457,458,50,50,50,50,50,459,460,51,51,51,51,51,52,52,52,52,52,461,462,463,464,465,466,467,468,469,470,471,53,53,53,53,53,472,473,474,54,54,54,54,54,475,55,55,55,55,55,476,477,56,56,56,56,56,478,479,480,481,482,483,484,485,57,57,57,57,57,486,487,488,58,58,58,58,58,489,490,59,59,59,59,59,60,60,60,60,60,491,492,61,61,61,61,61,493,494,62,62,62,62,62,495,496,63,63,63,63,63,497,498,499,500,501,502,503,504,505,506,507,64,64,64,64,64,65,65,65,65,65,508,509,510,511,66,66,66,66,66,512,67,67,67,67,67,513,514,515,516,517,518,519,520,521,522,523,524,525,526,144,73,196,304,356,129,191,201,215,251,254,278,294,103,82,239,335,217,190,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,36,367,37,368,369,38,39,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,40,387,388,389,390,391,41,392,393,394,395,396,397,42,398,399,400,43,44,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,45,433,434,435,436,437,438,46,439,440,441,442,443,444,445,446,47,447,448,449,450,48,451,452,453,454,455,456,49,457,458,50,459,460,51,52,461,462,463,464,465,466,467,468,469,470,471,53,472,473,474,54,475,55,476,477,56,478,479,480,481,482,483,484,485,57,486,487,488,58,489,490,59,60,491,492,61,493,494,62,495,496,63,497,498,499,500,501,502,503,504,505,506,507,64,65,508,509,510,511,66,512,67,513,514,515,516,517,518,519,520,521,522,523,524,525,526,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526,353,353,255,177,177,123,123,74,184,200,247,342,286,286,286,286,328,328,149,233,149,141,141,277,315,277,110,149,183,355,322,338,272,272,272,167,295,330,305,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,87,167,167,233,90,149,183,332,355,149,310,353,84,252,313,252,79,239,335,332,233,331,252,85,308,204,204,204,223,309,84,85,114,132,156,192,209,232,246,248,250,308,336,99,151,162,189,238,252,267,238,293,159,195,240,242,353,233,319,258,258,144,318,158,207,350,228,136,152,166,190,152,102,353,226,226,226,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,216,353,353,203,213,203,213,203,213,203,213,203,213,203,213,307,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,107,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,36,367,37,368,369,38,39,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,40,387,388,389,390,391,41,392,393,394,395,396,397,42,398,399,400,43,44,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,45,433,434,435,436,437,438,46,439,440,441,442,443,444,445,446,47,447,448,449,450,48,451,452,453,454,455,456,49,457,458,50,459,460,51,52,461,462,463,464,465,466,467,468,469,470,471,53,472,473,474,54,475,55,476,477,56,478,479,480,481,482,483,484,485,57,486,487,488,58,489,490,59,60,491,492,61,493,494,62,495,496,63,497,498,499,500,501,502,503,504,505,506,507,64,65,508,509,510,511,66,512,67,513,514,515,516,517,518,519,520,521,522,523,524,525,526,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,269,155,155,155,313,198,126,357,240,149,206,306,142,142,178,143,178,171,232,162,178,208,178,72,84,87,90,118,136,144,159,167,168,174,211,230,233,240,257,266,268,271,277,288,295,315,319,332,337,79,79,290,354,80,105,149,183,252,344,347,98,111,209,214,259,301,325,336,161,162,345,73,289,178,106,141,141,141,141,141,84,144,159,168,240,266,271,333,123,211,248,72,87,90,118,136,167,174,211,230,233,257,268,277,288,295,315,319,332,337,79,79,290,354,80,105,149,183,252,344,347,272,234,272,234,272,234,272,330,324,315,365,90,98,114,126,141,179,183,202,239,246,250,259,301,313,325,365,256,256,256,256,256,114,278,350,158,207,289,126,69,107,69,69,188,210,99,349,349,349,120,120,256,256,256,256,256,114,278,350,158,207,289,357,357,126,121,269,310,311,135,324,73,305,178,178,178,284,99,90,122,185,204,224,239,296,163,121,163,163,90,273,295,295,295,127,346,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,223,309,256,286,293,232,278,108,108,108,169,132,156,108,108,108,291,297,297,297,291,188,333,333,333,293,151,329,189,189,151,329,151,151,329,114,120,120,207,363,207,363,318,129,201,129,201,129,201,318,129,201,129,201,129,201,318,318,313,112,191,215,294,112,191,215,294,112,191,215,294,112,191,215,294,112,112,112,154,316,77,117,154,158,172,207,219,281,316,334,77,117,154,281,316,219,154,172,219,316,334,154,172,219,316,334,117,117,117,117,69,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,264,124,142,142,216,210,312,313,341,312,312,211,177,177,273,84,101,104,118,144,149,168,174,199,205,241,247,265,266,271,324,342,121,184,305,184,305,229,247,342,103,118,131,136,205,245,280,280,175,175,175,86,153,339,330,330,279,229,330,330,279,130,360,130,360,130,360,130,360,103,337,145,123,78,95,302,351,78,95,302,351,351,91,164,200,200,120,353,273,74,79,80,103,131,139,146,157,206,229,244,282,319,344,174,245,174,245,174,245,174,245,206,110,126,203,213,243,254,280,141,141,337,348,272,272,92,70,280,280,280,280,258,123,125,253,292,72,87,295,319,127,346,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,127,346,297,94,94,125,133,137,158,207,236,253,292,363,73,82,239,335,73,82,239,335,273,246,137,158,197,236,292,150,328,171,176,273,84,101,104,118,144,149,168,174,199,205,241,265,266,271,324,121,184,305,184,305,229,103,118,131,136,205,245,82,239,335,83,166,194,227,353,275,275,76,86,127,170,339,346,223,309,223,309,223,309,123,349,349,349,349,171,127,346,357,71,71,71,71,71,71,230,233,268,288,226,117,200,200,102,110,203,213,73,73,278,350,173,215,218,221,235,261,274,294,364,97,299,237,70,134,161,248,283,345,70,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,246,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,36,367,37,368,369,38,39,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,40,387,388,389,390,391,41,392,393,394,395,396,397,42,398,399,400,43,44,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,45,433,434,435,436,437,438,46,439,440,441,442,443,444,445,446,47,447,448,449,450,48,451,452,453,454,455,456,49,457,458,50,459,460,51,52,461,462,463,464,465,466,467,468,469,470,471,53,472,473,474,54,475,55,476,477,56,478,479,480,481,482,483,484,485,57,486,487,488,58,489,490,59,60,491,492,61,493,494,62,495,496,63,497,498,499,500,501,502,503,504,505,506,507,64,65,508,509,510,511,66,512,67,513,514,515,516,517,518,519,520,521,522,523,524,525,526,153,153,153,153,153,153,153,153,196,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,128,196,269,291,291,171,99,89,232,313,251,251,211,353,289,106,314,233,252,252,252,314,286,332,85,124,284,284,284,142,328,270,262,340,94,143,286,348,348,348,82,92,97,106,109,123,126,140,160,249,252,303,174,174,133,92,92,141,141,141,188,239,335,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,310,171,204,204,204,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,365,300,243,183,163,70,74,77,81,89,93,94,96,97,99,100,102,111,112,115,117,125,138,139,146,151,155,156,159,161,162,169,172,173,175,176,179,182,187,189,191,195,196,201,206,207,208,209,210,215,216,218,226,234,235,238,240,242,244,247,252,253,260,262,263,267,269,270,274,276,281,283,284,285,290,293,294,299,304,312,320,322,326,329,334,336,340,341,342,345,356,361,363,280,183,183,210,341,251,70,74,75,77,80,81,89,93,94,96,97,99,100,102,111,112,115,117,125,138,139,144,146,151,155,156,159,161,162,169,172,173,175,176,179,182,187,189,191,195,196,201,206,207,208,209,210,215,216,218,226,234,235,238,240,242,244,247,252,253,260,262,263,264,267,269,270,274,276,281,283,284,285,290,293,294,299,304,312,318,320,322,326,329,334,336,340,341,342,345,347,356,361,363,330,362,78,83,84,91,95,106,149,152,164,194,203,213,227,250,302,308,351,149,183,141,141,106,279,211,128,291,291,85,121,149,183,307,355,353,353,157,244,324,295,73,78,79,84,86,87,92,95,101,104,113,114,122,135,139,143,157,170,177,184,186,200,205,224,225,228,244,245,258,278,287,290,300,302,305,317,319,320,324,339,354,358,359,206,203,213,145,223,309,85,113,123,72,76,91,103,106,110,118,121,130,131,136,141,144,145,152,153,164,166,180,181,185,203,204,213,222,229,230,231,233,235,251,254,261,268,282,288,296,298,310,311,318,322,330,331,338,343,350,351,352,360,232,319,233,233,193,151,162,171,183,252,329,337,349,252,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,36,367,37,368,369,38,39,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,40,387,388,389,390,391,41,392,393,394,395,396,397,42,398,399,400,43,44,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,45,433,434,435,436,437,438,46,439,440,441,442,443,444,445,446,47,447,448,449,450,48,451,452,453,454,455,456,49,457,458,50,459,460,51,52,461,462,463,464,465,466,467,468,469,470,471,53,472,473,474,54,475,55,476,477,56,478,479,480,481,482,483,484,485,57,486,487,488,58,489,490,59,60,491,492,61,493,494,62,495,496,63,497,498,499,500,501,502,503,504,505,506,507,64,65,508,509,510,511,66,512,67,513,514,515,516,517,518,519,520,521,522,523,524,525,526,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,92,83,194,227,223,309,280,167,280,133,136,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,36,367,37,368,369,38,39,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,40,387,388,389,390,391,41,392,393,394,395,396,397,42,398,399,400,43,44,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,45,433,434,435,436,437,438,46,439,440,441,442,443,444,445,446,47,447,448,449,450,48,451,452,453,454,455,456,49,457,458,50,459,460,51,52,461,462,463,464,465,466,467,468,469,470,471,53,472,473,474,54,475,55,476,477,56,478,479,480,481,482,483,484,485,57,486,487,488,58,489,490,59,60,491,492,61,493,494,62,495,496,63,497,498,499,500,501,502,503,504,505,506,507,64,65,508,509,510,511,66,512,67,513,514,515,516,517,518,519,520,521,522,523,524,525,526,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,36,367,37,368,369,38,39,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,40,387,388,389,390,391,41,392,393,394,395,396,397,42,398,399,400,43,44,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,45,433,434,435,436,437,438,46,439,440,441,442,443,444,445,446,47,447,448,449,450,48,451,452,453,454,455,456,49,457,458,50,459,460,51,52,461,462,463,464,465,466,467,468,469,470,471,53,472,473,474,54,475,55,476,477,56,478,479,480,481,482,483,484,485,57,486,487,488,58,489,490,59,60,491,492,61,493,494,62,495,496,63,497,498,499,500,501,502,503,504,505,506,507,64,65,508,509,510,511,66,512,67,513,514,515,516,517,518,519,520,521,522,523,524,525,526,362,90,332,182,304,90,349,349,349,171,127,346,256,256,256,256,256,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,36,367,37,368,369,38,39,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,40,387,388,389,390,391,41,392,393,394,395,396,397,42,398,399,400,43,44,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,45,433,434,435,436,437,438,46,439,440,441,442,443,444,445,446,47,447,448,449,450,48,451,452,453,454,455,456,49,457,458,50,459,460,51,52,461,462,463,464,465,466,467,468,469,470,471,53,472,473,474,54,475,55,476,477,56,478,479,480,481,482,483,484,485,57,486,487,488,58,489,490,59,60,491,492,61,493,494,62,495,496,63,497,498,499,500,501,502,503,504,505,506,507,64,65,508,509,510,511,66,512,67,513,514,515,516,517,518,519,520,521,522,523,524,525,526,157,244,290,320,354,359,291,238,238,295,120,305,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,295,141,204,310,82,133,225,239,133,199,212,241,265,92,286,271,271,271,271,167,295,206,130,360,96,122,140,202,224,228,331,331,174,233,288,233,174,233,288,230,268,288,337,286,286,167,295,167,167,167,330,229,360,360,360,360,90,103,279,120,73,305,310,202,332,264,289,233,331,252,79,222,222,222,258,174,233,288,83,88,106,147,166,194,227,333,250,306,72,87,103,118,136,180,206,290,295,320,348,354,358,359,72,87,103,118,136,180,206,290,295,320,348,354,358,359,72,87,103,118,136,180,206,290,295,320,348,354,358,359,246,313,331,183,331,331,331,183,223,309,163,149,149,183,92,80,101,103,180,191,199,212,215,241,243,254,265,278,282,294,296,320,344,358,359,229,229,229,91,118,136,164,168,174,186,231,287,317,91,164,168,174,186,231,287,317,91,164,186,231,287,317,163,80,101,103,180,191,199,212,215,241,243,254,265,278,282,294,296,320,344,358,359,229,229,229,91,118,136,164,168,174,186,231,287,317,84,101,104,118,144,168,174,199,205,241,247,265,266,271,290,320,324,342,354,359,184,305,184,305,229,247,290,320,342,354,359,121,103,118,131,136,205,245,91,164,168,174,186,231,287,317,91,164,186,231,287,317,80,101,103,180,191,199,212,215,241,243,254,265,278,282,294,296,320,344,358,359,229,229,229,91,118,136,164,168,174,186,231,287,317,91,164,168,174,186,231,287,317,91,164,186,231,287,317,196,196,0,534,534,534,534,534,534,534,534,534,534,534,534,534,534,534,534,534,534,534,534,534,534,534,0,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,885,885,885,885,885,885,567,0,833,833,833,833,833,833,833,833,833,833,833,833,833,833,833,833,833,833,833,833,833,833,833,833,833,833,833,833,833,833,833,833,833,567,0,886,886,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,561,561,561,561,561,561,561,561,561,561,567,0,542,542,542,542,542,542,542,542,542,542,542,542,542,863,863,863,863,863,863,863,863,863,863,863,863,863,863,863,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,567,0,567,0,567,0,567,567,0,0,567,0,566,566,566,566,566,566,567,0,567,0,567,0,567,0,798,798,798,798,0,0,0,0,0,0,0,0,0,0,852,567,0,567,0,567,0,547,547,547,547,547,547,547,547,547,547,547,547,567,0,567,0,567,0,821,821,821,567,0,567,0,567,0,884,884,884,819,819,819,847,847,847,847,567,0,567,0,888,567,0,888,888,567,0,567,893,0,893,893,893,893,824,824,824,824,813,813,813,813,813,567,0,855,855,855,855,855,855,855,855,855,855,855,855,855,567,567,0,0,698,567,0,567,0,567,0,567,0,567,0,567,0,567,0,896,896,896,896,896,896,567,0,567,0,0,0,0,0,0,0,0,0,0,0,0,0,567,0,567,0,567,0,567,0,567,0,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,660,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,699,700,701,702,703,704,705,706,707,708,709,710,711,712,713,714,715,716,717,718,719,720,721,722,723,724,725,726,727,728,729,730,731,732,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,788,789,790,542,791,792,543,793,794,795,796,797,544,798,799,800,801,802,803,804,805,806,807,808,545,546,809,547,810,811,812,813,814,815,816,817,818,548,819,820,821,549,822,823,824,825,826,550,551,827,828,829,830,831,832,833,552,834,835,553,554,836,837,555,838,556,839,840,841,557,558,842,843,844,845,846,847,559,848,849,560,850,851,852,853,854,855,561,562,856,857,858,859,563,860,861,564,862,863,864,865,866,565,867,868,869,870,871,872,873,874,875,876,877,878,879,880,881,882,883,884,885,886,887,888,889,890,891,892,893,894,895,566,896,897,898,899,900,567,0,567,0,567,0,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,660,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,699,700,701,702,703,704,705,706,707,708,709,710,711,712,713,714,715,716,717,718,719,720,721,722,723,724,725,726,727,728,729,730,731,732,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,788,879,879,879,879,879,879,552,552,552,552,552,552,552,552,567,0,567,0,551,551,551,551,551,551,551,551,551,551,567,0,551,551,567,0,567,0,0,0,0,862,862,862,862,862,862,862,862,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,797,797,797,797,797,797,797,797,825,825,825,825,887,887,887,567,0,567,0,895,895,895,895,895,567,0,790,790,790,790,790,790,790,567,0,0,0,0,0,0,0,567,0,567,0,550,550,550,550,550,550,550,550,550,550,550,550,550,550,560,560,560,560,560,560,560,560,560,560,544,544,544,544,544,544,544,544,544,544,567,0,567,0,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,871,871,871,871,871,871,871,871,871,871,567,0,567,0,567,0,567,0,567,0,567,567,0,0,567,0,567,0,567,0,841,841,841,841,841,841,841,841,841,567,0,567,0,567,0,556,556,556,556,556,556,556,556,567,0,567,0,567,0,567,0,853,853,0,0,0,0,0,0,0,0,567,0,567,0,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,567,567,0,0,567,0,567,0,567,0,567,0,567,0,567,0,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,567,0,567,0,563,563,563,563,563,563,563,563,563,563,563,563,563,563,567,0,567,0,0,0,0,613,567,0,567,0,815,815,815,815,567,0,567,567,0,0,567,0,567,0,567,567,0,0,567,0,567,0,567,0,567,0,567,0,567,0,0,835,835,835,835,567,0,835,835,835,835,567,0,567,0,808,808,808,808,808,808,791,791,791,791,791,791,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,826,826,826,826,826,826,826,826,852,852,852,852,852,852,852,852,869,869,869,869,869,876,876,876,809,809,809,809,809,860,860,860,860,860,860,860,860,860,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,836,836,836,836,836,836,836,874,874,859,859,859,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,818,818,818,818,818,818,818,818,818,898,898,898,898,898,807,850,850,850,850,850,850,850,850,850,565,840,889,889,889,889,889,889,889,889,889,889,889,889,889,889,889,889,889,889,889,889,889,889,844,844,844,844,844,844,844,844,844,844,844,832,832,832,832,832,832,832,832,832,832,832,832,832,832,832,832,832,832,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,857,857,857,857,870,870,870,870,870,817,817,817,817,817,817,817,817,817,817,817,817,817,817,795,795,795,795,817,817,868,868,548,548,849,849,849,849,849,849,849,849,548,548,548,548,548,548,868,868,868,868,868,868,868,868,868,823,823,823,823,823,823,823,881,881,829,829,829,829,829,829,894,894,894,894,804,804,866,866,866,866,866,866,866,866,838,838,838,820,820,858,858,858,858,858,858,858,858,858,858,858,858,858,883,883,883,883,883,837,878,878,878,792,792,792,792,792,864,864,864,864,864,867,867,867,867,867,867,867,867,867,867,867,867,867,867,867,867,843,843,843,843,843,843,843,843,843,843,843,843,843,843,843,843,789,789,789,789,789,789,789,873,873,873,873,873,873,873,873,873,873,873,872,872,872,872,872,872,872,872,872,872,557,557,557,557,557,557,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,839,839,839,839,839,839,839,865,865,865,865,865,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,793,793,793,793,793,793,793,793,810,810,810,810,810,810,810,810,810,555,555,555,555,555,555,854,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,830,830,830,830,830,830,830,830,830,830,830,856,856,856,856,856,856,856,856,856,856,856,856,856,856,856,856,856,856,856,856,856,856,856,856,856,856,856,856,856,856,856,856,856,856,856,856,856,856,856,856,856,856,856,842,842,842,842,842,554,554,554,554,554,554,554,554,554,554,554,554,554,554,567,0,567,0,567,0,567,0,567,0,567,0,567,0,567,0,567,0,800,567,0,567,0,567,0,567,0,800,567,0,827,827,827,827,827,827,567,0,800,698,861,812,812,812,861,861,861,567,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,567,0,567,0,567,0,801,801,801,0,567,0,567,0,567,0,567,0,567,0,567,0,567,0,567,0,567,0,567,0,567,0,567,0,567,0,567,0,567,0,846,846,846,846,846,0,890,890,890,892,892,892,892,567,0,567,0,567,0,567,0,567,0,567,0,880,567,0,567,0,880,880,880,567,0,567,0,880,567,0,567,0,567,0,567,0,567,0,564,564,564,564,564,564,564,564,564,564,564,564,567,0,899,899,899,567,0,0,0,0,0,0,0,567,0,567,0,567,0,567,0,567,0,567,0,567,0,567,0,875,875,567,0,567,0,567,0,567,0,822,822,0,0,567,0,567,0,567,567,0,567,0,0,567,567,0,567,0,0,567,0,877,877,877,877,877,543,543,543,543,543,877,877,877,877,877,877,877,877,877,877,567,0,567,0,567,0,567,0,567,0,567,0,567,0,567,0,567,0,567,0,567,0,567,0,567,0,802,802,802,802,848,848,848,848,848,848,848,848,848,806,806,806,806,567,0,567,0,567,0,0,0,0,0,0,0,567,0,567,0,567,0,567,0,567,0,567,0,567,0,567,0,549,549,567,0,0,794,794,794,794,567,0,814,814,814,814,814,567,0,863,559,559,559,559,559,559,559,559,805,805,805,805,805,567,0,0,0,0,0,567,0,567,0,567,0,567,0,567,0,567,0,831,831,799,799,799,799,567,0,567,0,828,828,828,828,828,632,0,0,632,0,567,0,567,0,834,834,834,834,891,891,891,891,891,891,796,796,796,796,796,796,796,796,796,796,567,0,567,0,0,0,0,882,882,882,882,576,653,630,754,754,754,581,709,666,708,593,593,705,661,670,720,739,661,670,720,739,661,670,720,739,569,612,669,769,669,769,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,569,590,600,606,616,630,633,652,668,670,680,692,710,720,731,738,721,762,721,613,669,679,684,723,734,769,770,742,742,770,708,770,770,769,770,613,693,693,641,744,767,641,744,767,641,744,767,729,679,734,679,734,679,734,584,584,584,584,587,601,697,762,630,738,572,572,712,719,751,659,669,629,741,741,741,741,578,583,780,780,780,742,689,570,659,769,581,709,581,709,581,709,581,709,728,669,728,694,753,694,761,769,626,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,625,673,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,773,648,724,648,724,648,724,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,660,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,699,700,701,702,703,704,705,706,707,708,709,710,711,712,713,714,715,716,717,718,719,720,721,722,723,724,725,726,727,728,729,730,731,732,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,788,789,790,542,791,792,543,793,794,795,796,797,544,798,799,800,801,802,803,804,805,806,807,808,545,546,809,547,810,811,812,813,814,815,816,817,818,548,819,820,821,549,822,823,824,825,826,550,551,827,828,829,830,831,832,833,552,834,835,553,554,836,837,555,838,556,839,840,841,557,558,842,843,844,845,846,847,559,848,849,560,850,851,852,853,854,855,561,562,856,857,858,859,563,860,861,564,862,863,864,865,866,565,867,868,869,870,871,872,873,874,875,876,877,878,879,880,881,882,883,884,885,886,887,888,889,890,891,892,893,894,895,566,896,897,898,899,900,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,660,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,699,700,701,702,703,704,705,706,707,708,709,710,711,712,713,714,715,716,717,718,719,720,721,722,723,724,725,726,727,728,729,730,731,732,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,788,789,790,542,791,792,543,793,794,795,796,797,544,798,799,800,801,802,803,804,805,806,807,808,545,546,809,547,810,811,812,813,814,815,816,817,818,548,819,820,821,549,822,823,824,825,826,550,551,827,828,829,830,831,832,833,552,834,835,553,554,836,837,555,838,556,839,840,841,557,558,842,843,844,845,846,847,559,848,849,560,850,851,852,853,854,855,561,562,856,857,858,859,563,860,861,564,862,863,864,865,866,565,867,868,869,870,871,872,873,874,875,876,877,878,879,880,881,882,883,884,885,886,887,888,889,890,891,892,893,894,895,566,896,897,898,899,900,770,774,774,774,774,640,672,727,728,749,629,629,613,698,785,785,606,665,704,773,753,753,606,584,617,779,617,779,617,779,617,617,617,617,617,617,617,662,715,779,588,617,662,715,779,588,617,662,715,779,588,617,662,715,779,588,617,662,715,779,588,617,662,715,779,588,617,662,715,779,588,617,662,715,779,588,617,779,617,753,624,584,584,569,669,769,602,602,602,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,660,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,699,700,701,702,703,704,705,706,707,708,709,710,711,712,713,714,715,716,717,718,719,720,721,722,723,724,725,726,727,728,729,730,731,732,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,788,789,790,542,791,792,543,793,794,795,796,797,544,798,799,800,801,802,803,804,805,806,807,808,545,546,809,547,810,811,812,813,814,815,816,817,818,548,819,820,821,549,822,823,824,825,826,550,551,827,828,829,830,831,832,833,552,834,835,553,554,836,837,555,838,556,839,840,841,557,558,842,843,844,845,846,847,559,848,849,560,850,851,852,853,854,855,561,562,856,857,858,859,563,860,861,564,862,863,864,865,866,565,867,868,869,870,871,872,873,874,875,876,877,878,879,880,881,882,883,884,885,886,887,888,889,890,891,892,893,894,895,566,896,897,898,899,900,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,660,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,699,700,701,702,703,704,705,706,707,708,709,710,711,712,713,714,715,716,717,718,719,720,721,722,723,724,725,726,727,728,729,730,731,732,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,788,789,790,542,791,792,543,793,794,795,796,797,544,798,799,800,801,802,803,804,805,806,807,808,545,546,809,547,810,811,812,813,814,815,816,817,818,548,819,820,821,549,822,823,824,825,826,550,551,827,828,829,830,831,832,833,552,834,835,553,554,836,837,555,838,556,839,840,841,557,558,842,843,844,845,846,847,559,848,849,560,850,851,852,853,854,855,561,562,856,857,858,859,563,860,861,564,862,863,864,865,866,565,867,868,869,870,871,872,873,874,875,876,877,878,879,880,881,882,883,884,885,886,887,888,889,890,891,892,893,894,895,566,896,897,898,899,900,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,600,652,710,712,719,733,745,751,754,758,746,629,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,745,580,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,666,759,639,683,722,661,670,720,739,574,580,586,604,626,673,760,580,615,668,736,780,707,707,655,712,719,751,772,694,761,694,736,579,669,669,669,704,570,659,669,769,704,630,753,689,577,598,608,626,672,685,700,727,732,760,572,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,660,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,699,700,701,702,703,704,705,706,707,708,709,710,711,712,713,714,715,716,717,718,719,720,721,722,723,724,725,726,727,728,729,730,731,732,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,788,789,790,542,791,792,543,793,794,795,796,797,544,798,799,800,801,802,803,804,805,806,807,808,545,546,809,547,810,811,812,813,814,815,816,817,818,548,819,820,821,549,822,823,824,825,826,550,551,827,828,829,830,831,832,833,552,834,835,553,554,836,837,555,838,556,839,840,841,557,558,842,843,844,845,846,847,559,848,849,560,850,851,852,853,854,855,561,562,856,857,858,859,563,860,861,564,862,863,864,865,866,565,867,868,869,870,871,872,873,874,875,876,877,878,879,880,881,882,883,884,885,886,887,888,889,890,891,892,893,894,895,566,896,897,898,899,900,567,771,687,687,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,660,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,699,700,701,702,703,704,705,706,707,708,709,710,711,712,713,714,715,716,717,718,719,720,721,722,723,724,725,726,727,728,729,730,731,732,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,788,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,660,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,699,700,701,702,703,704,705,706,707,708,709,710,711,712,713,714,715,716,717,718,719,720,721,722,723,724,725,726,727,728,729,730,731,732,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,788,789,790,542,791,792,543,793,794,795,796,797,544,798,799,800,801,802,803,804,805,806,807,808,545,546,809,547,810,811,812,813,814,815,816,817,818,548,819,820,821,549,822,823,824,825,826,550,551,827,828,829,830,831,832,833,552,834,835,553,554,836,837,555,838,556,839,840,841,557,558,842,843,844,845,846,847,559,848,849,560,850,851,852,853,854,855,561,562,856,857,858,859,563,860,861,564,862,863,864,865,866,565,867,868,869,870,871,872,873,874,875,876,877,878,879,880,881,882,883,884,885,886,887,888,889,890,891,892,893,894,895,566,896,897,898,899,900,587,587,626,753,710,710,629,629,629,576,653,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,698,698,698,698,742,753,692,568,586,693,757,571,761,689,613,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,729,729,748,681,695,694,689,600,652,669,710,600,652,669,710,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,660,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,699,700,701,702,703,704,705,706,707,708,709,710,711,712,713,714,715,716,717,718,719,720,721,722,723,724,725,726,727,728,729,730,731,732,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,788,789,790,542,791,792,543,793,794,795,796,797,544,798,799,800,801,802,803,804,805,806,807,808,545,546,809,547,810,811,812,813,814,815,816,817,818,548,819,820,821,549,822,823,824,825,826,550,551,827,828,829,830,831,832,833,552,834,835,553,554,836,837,555,838,556,839,840,841,557,558,842,843,844,845,846,847,559,848,849,560,850,851,852,853,854,855,561,562,856,857,858,859,563,860,861,564,862,863,864,865,866,565,867,868,869,870,871,872,873,874,875,876,877,878,879,880,881,882,883,884,885,886,887,888,889,890,891,892,893,894,895,566,896,897,898,899,900,575,580,761,761,761,761,761,630,787,668,780,587,689,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,713,769,580,641,669,623,707,787,576,653,664,606,704,785,598,700,691,629,600,652,710,731,614,596,613,620,625,626,632,639,641,673,680,685,698,718,743,744,767,778,785,773,680,773,601,628,628,628,628,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,660,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,699,700,701,702,703,704,705,706,707,708,709,710,711,712,713,714,715,716,717,718,719,720,721,722,723,724,725,726,727,728,729,730,731,732,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,788,789,790,542,542,542,542,542,791,792,543,543,543,543,543,793,794,795,796,797,544,544,544,544,544,798,799,800,801,802,803,804,805,806,807,808,545,545,545,545,545,546,546,546,546,546,809,547,547,547,547,547,810,811,812,813,814,815,816,817,818,548,548,548,548,548,819,820,821,549,549,549,549,549,822,823,824,825,826,550,550,550,550,550,551,551,551,551,551,827,828,829,830,831,832,833,552,552,552,552,552,834,835,553,553,553,553,553,554,554,554,554,554,836,837,555,555,555,555,555,838,556,556,556,556,556,839,840,841,557,557,557,557,557,558,558,558,558,558,842,843,844,845,846,847,559,559,559,559,559,848,849,560,560,560,560,560,850,851,852,853,854,855,561,561,561,561,561,562,562,562,562,562,856,857,858,859,563,563,563,563,563,860,861,564,564,564,564,564,862,863,864,865,866,565,565,565,565,565,867,868,869,870,871,872,873,874,875,876,877,878,879,880,881,882,883,884,885,886,887,888,889,890,891,892,893,894,895,566,566,566,566,566,896,897,898,899,900,785,677,702,690,693,712,719,751,756,777,624,625,673,595,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,660,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,699,700,701,702,703,704,705,706,707,708,709,710,711,712,713,714,715,716,717,718,719,720,721,722,723,724,725,726,727,728,729,730,731,732,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,788,789,790,542,791,792,543,793,794,795,796,797,544,798,799,800,801,802,803,804,805,806,807,808,545,546,809,547,810,811,812,813,814,815,816,817,818,548,819,820,821,549,822,823,824,825,826,550,551,827,828,829,830,831,832,833,552,834,835,553,554,836,837,555,838,556,839,840,841,557,558,842,843,844,845,846,847,559,848,849,560,850,851,852,853,854,855,561,562,856,857,858,859,563,860,861,564,862,863,864,865,866,565,867,868,869,870,871,872,873,874,875,876,877,878,879,880,881,882,883,884,885,886,887,888,889,890,891,892,893,894,895,566,896,897,898,899,900,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,789,790,791,792,793,794,795,796,797,798,799,800,801,802,803,804,805,806,807,808,809,810,811,812,813,814,815,816,817,818,819,820,821,822,823,824,825,826,827,828,829,830,831,832,833,834,835,836,837,838,839,840,841,842,843,844,845,846,847,848,849,850,851,852,853,854,855,856,857,858,859,860,861,862,863,864,865,866,867,868,869,870,871,872,873,874,875,876,877,878,879,880,881,882,883,884,885,886,887,888,889,890,891,892,893,894,895,896,897,898,899,900,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,789,790,791,792,793,794,795,796,797,798,799,800,801,802,803,804,805,806,807,808,809,810,811,812,813,814,815,816,817,818,819,820,821,822,823,824,825,826,827,828,829,830,831,832,833,834,835,836,837,838,839,840,841,842,843,844,845,846,847,848,849,850,851,852,853,854,855,856,857,858,859,860,861,862,863,864,865,866,867,868,869,870,871,872,873,874,875,876,877,878,879,880,881,882,883,884,885,886,887,888,889,890,891,892,893,894,895,896,897,898,899,900,689,689,666,591,591,728,728,596,620,665,743,744,769,731,769,707,707,608,651,608,628,569,669,769,683,722,680,692,778,704,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,616,692,692,731,569,613,669,698,769,769,689,730,647,742,742,625,673,721,613,731,750,742,708,671,678,678,678,581,709,587,604,671,672,694,708,711,727,736,753,760,572,584,585,643,687,726,742,643,640,689,731,606,578,578,571,706,738,580,595,772,580,737,689,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,689,689,568,757,568,757,568,757,568,757,568,757,568,757,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,646,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,660,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,699,700,701,702,703,704,705,706,707,708,709,710,711,712,713,714,715,716,717,718,719,720,721,722,723,724,725,726,727,728,729,730,731,732,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,788,789,790,542,791,792,543,793,794,795,796,797,544,798,799,800,801,802,803,804,805,806,807,808,545,546,809,547,810,811,812,813,814,815,816,817,818,548,819,820,821,549,822,823,824,825,826,550,551,827,828,829,830,831,832,833,552,834,835,553,554,836,837,555,838,556,839,840,841,557,558,842,843,844,845,846,847,559,848,849,560,850,851,852,853,854,855,561,562,856,857,858,859,563,860,861,564,862,863,864,865,866,565,867,868,869,870,871,872,873,874,875,876,877,878,879,880,881,882,883,884,885,886,887,888,889,890,891,892,893,894,895,566,896,897,898,899,900,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,647,714,623,746,703,769,787,682,713,711,572,691,579,590,594,600,606,608,613,616,630,633,651,652,668,680,692,698,710,731,738,721,721,670,720,669,679,684,723,734,742,769,672,685,727,732,572,598,700,785,627,655,707,707,707,707,707,761,728,579,587,579,590,594,600,606,608,613,616,630,633,651,652,668,680,692,698,710,731,738,721,721,670,720,669,679,684,723,734,742,769,778,781,651,659,623,647,659,669,673,694,698,705,707,717,736,753,571,736,627,623,567,646,567,567,674,592,726,699,699,699,773,773,571,736,627,746,746,623,639,730,741,701,781,704,785,726,637,667,673,678,697,698,755,762,741,762,762,698,729,680,680,680,614,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,581,709,640,711,629,629,629,604,760,629,629,629,674,761,761,761,640,584,622,585,585,584,622,584,584,622,736,773,773,690,777,690,777,690,777,690,777,690,777,690,777,647,712,719,745,751,712,719,745,751,712,719,745,751,712,719,745,751,745,745,745,582,656,582,597,654,656,660,696,752,783,582,654,656,752,783,696,582,597,656,660,696,582,597,656,660,696,752,752,752,752,567,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,759,658,592,645,647,765,645,645,579,591,591,729,590,599,605,609,620,633,650,686,743,747,769,781,741,665,704,665,704,612,620,743,590,607,615,624,650,738,589,589,588,619,662,778,778,612,778,778,754,771,754,771,754,771,754,771,624,630,728,631,642,768,788,631,642,768,788,788,576,653,596,596,773,689,729,606,612,615,624,636,641,648,679,721,724,734,744,767,787,607,633,607,633,607,633,607,633,787,568,623,628,757,749,589,756,707,707,630,583,763,589,589,589,589,578,728,606,616,668,680,614,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,614,638,638,784,625,673,785,625,673,785,729,753,758,713,729,590,599,605,609,633,650,686,747,769,781,741,665,704,665,704,612,590,607,615,624,650,738,625,673,689,772,588,614,617,662,779,581,709,581,709,581,709,728,699,699,699,699,713,614,746,634,634,634,634,634,600,634,652,710,731,752,596,596,737,568,628,757,785,785,571,603,675,719,725,735,740,751,764,776,577,587,598,663,700,718,763,763,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,660,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,699,700,701,702,703,704,705,706,707,708,709,710,711,712,713,714,715,716,717,718,719,720,721,722,723,724,725,726,727,728,729,730,731,732,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,788,753,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,660,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,699,700,701,702,703,704,705,706,707,708,709,710,711,712,713,714,715,716,717,718,719,720,721,722,723,724,725,726,727,728,729,730,731,732,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,788,789,790,542,791,792,543,793,794,795,796,797,544,798,799,800,801,802,803,804,805,806,807,808,545,546,809,547,810,811,812,813,814,815,816,817,818,548,819,820,821,549,822,823,824,825,826,550,551,827,828,829,830,831,832,833,552,834,835,553,554,836,837,555,838,556,839,840,841,557,558,842,843,844,845,846,847,559,848,849,560,850,851,852,853,854,855,561,562,856,857,858,859,563,860,861,564,862,863,864,865,866,565,867,868,869,870,871,872,873,874,875,876,877,878,879,880,881,882,883,884,885,886,887,888,889,890,891,892,893,894,895,566,896,897,898,899,900,619,619,619,619,619,619,619,619,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,688,713,726,647,711,693,693,579,689,627,655,731,742,742,742,613,708,658,748,681,695,638,682,575,583,623,655,728,742,633,633,784,583,583,707,707,707,625,673,674,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,730,713,678,678,678,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,659,601,749,669,762,572,573,574,584,585,592,597,598,603,604,610,620,621,622,635,638,640,641,643,645,654,660,663,672,675,676,677,681,687,690,691,695,700,702,712,715,716,717,719,720,722,724,726,727,732,733,737,739,740,742,743,744,745,748,751,752,763,764,765,767,783,786,787,589,669,669,592,765,693,570,572,573,574,584,585,592,597,598,603,604,610,620,621,622,635,638,640,641,643,645,654,660,663,672,675,676,677,681,684,687,690,691,695,700,702,712,715,716,717,719,720,722,724,726,727,732,733,734,737,739,740,742,743,744,745,748,751,752,759,763,764,765,767,783,786,787,778,618,568,576,580,631,642,653,655,671,694,757,768,769,788,669,769,707,707,655,579,688,708,569,669,741,769,689,689,648,724,781,680,578,583,588,591,596,599,601,606,607,611,616,617,631,637,641,642,648,649,650,657,661,662,664,665,667,670,682,686,701,704,706,720,721,724,736,739,768,775,781,782,785,787,568,757,581,709,708,649,728,568,571,576,580,586,590,593,600,602,603,612,615,619,624,628,636,639,644,652,653,655,668,678,683,693,697,707,710,722,730,731,738,741,750,754,755,756,757,770,771,772,776,778,779,780,788,606,711,731,731,626,572,584,622,630,669,699,713,742,742,789,790,791,792,793,794,795,796,797,798,799,800,801,802,803,804,805,806,807,808,809,810,811,812,813,814,815,816,817,818,819,820,821,822,823,824,825,826,827,828,829,830,831,832,833,834,835,836,837,838,839,840,841,842,843,844,845,846,847,848,849,850,851,852,853,854,855,856,857,858,859,860,861,862,863,864,865,866,867,868,869,870,871,872,873,874,875,876,877,878,879,880,881,882,883,884,885,886,887,888,889,890,891,892,893,894,895,896,897,898,899,900,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,660,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,699,700,701,702,703,704,705,706,707,708,709,710,711,712,713,714,715,716,717,718,719,720,721,722,723,724,725,726,727,728,729,730,731,732,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,788,789,790,542,791,792,543,793,794,795,796,797,544,798,799,800,801,802,803,804,805,806,807,808,545,546,809,547,810,811,812,813,814,815,816,817,818,548,819,820,821,549,822,823,824,825,826,550,551,827,828,829,830,831,832,833,552,834,835,553,554,836,837,555,838,556,839,840,841,557,558,842,843,844,845,846,847,559,848,849,560,850,851,852,853,854,855,561,562,856,857,858,859,563,860,861,564,862,863,864,865,866,565,867,868,869,870,871,872,873,874,875,876,877,878,879,880,881,882,883,884,885,886,887,888,889,890,891,892,893,894,895,566,896,897,898,899,900,789,790,791,792,793,794,795,796,797,798,799,800,801,802,803,804,805,806,807,808,809,810,811,812,813,814,815,816,817,818,819,820,821,822,823,824,825,826,827,828,829,830,831,832,833,834,835,836,837,838,839,840,841,842,843,844,845,846,847,848,849,850,851,852,853,854,855,856,857,858,859,860,861,862,863,864,865,866,867,868,869,870,871,872,873,874,875,876,877,878,879,880,881,882,883,884,885,886,887,888,889,890,891,892,893,894,895,896,897,898,899,900,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,583,581,709,589,589,692,784,738,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,660,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,699,700,701,702,703,704,705,706,707,708,709,710,711,712,713,714,715,716,717,718,719,720,721,722,723,724,725,726,727,728,729,730,731,732,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,788,789,790,542,791,792,543,793,794,795,796,797,544,798,799,800,801,802,803,804,805,806,807,808,545,546,809,547,810,811,812,813,814,815,816,817,818,548,819,820,821,549,822,823,824,825,826,550,551,827,828,829,830,831,832,833,552,834,835,553,554,836,837,555,838,556,839,840,841,557,558,842,843,844,845,846,847,559,848,849,560,850,851,852,853,854,855,561,562,856,857,858,859,563,860,861,564,862,863,864,865,866,565,867,868,869,870,871,872,873,874,875,876,877,878,879,880,881,882,883,884,885,886,887,888,889,890,891,892,893,894,895,566,896,897,898,899,900,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,660,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,699,700,701,702,703,704,705,706,707,708,709,710,711,712,713,714,715,716,717,718,719,720,721,722,723,724,725,726,727,728,729,730,731,732,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,788,789,790,542,791,792,543,793,794,795,796,797,544,798,799,800,801,802,803,804,805,806,807,808,545,546,809,547,810,811,812,813,814,815,816,817,818,548,819,820,821,549,822,823,824,825,826,550,551,827,828,829,830,831,832,833,552,834,835,553,554,836,837,555,838,556,839,840,841,557,558,842,843,844,845,846,847,559,848,849,560,850,851,852,853,854,855,561,562,856,857,858,859,563,860,861,564,862,863,864,865,866,565,867,868,869,870,871,872,873,874,875,876,877,878,879,880,881,882,883,884,885,886,887,888,889,890,891,892,893,894,895,566,896,897,898,899,900,618,613,698,635,677,698,699,699,699,713,614,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,660,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,699,700,701,702,703,704,705,706,707,708,709,710,711,712,713,714,715,716,717,718,719,720,721,722,723,724,725,726,727,728,729,730,731,732,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,788,789,790,542,791,792,543,793,794,795,796,797,544,798,799,800,801,802,803,804,805,806,807,808,545,546,809,547,810,811,812,813,814,815,816,817,818,548,819,820,821,549,822,823,824,825,826,550,551,827,828,829,830,831,832,833,552,834,835,553,554,836,837,555,838,556,839,840,841,557,558,842,843,844,845,846,847,559,848,849,560,850,851,852,853,854,855,561,562,856,857,858,859,563,860,861,564,862,863,864,865,866,565,867,868,869,870,871,872,873,874,875,876,877,878,879,880,881,882,883,884,885,886,887,888,889,890,891,892,893,894,895,566,896,897,898,899,900,648,661,670,720,724,739,643,643,680,704,773,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,680,707,678,730,664,673,784,784,605,609,747,766,583,680,692,787,754,771,637,667,705,706,750,750,633,652,731,731,633,652,731,600,630,652,710,680,692,692,692,692,778,612,754,754,754,754,698,624,773,704,785,730,705,613,627,759,731,750,742,721,602,602,602,578,633,652,731,655,772,761,694,703,590,616,624,661,668,670,680,720,738,739,780,782,787,590,616,624,661,668,670,680,720,738,739,780,782,787,590,616,624,661,668,670,680,720,738,739,780,782,787,753,647,750,669,750,750,750,669,581,709,762,769,669,769,583,605,609,624,636,661,679,686,712,719,734,739,747,749,751,755,756,766,780,782,612,612,612,576,590,611,633,644,653,657,738,775,576,611,633,644,653,657,775,576,611,644,653,657,775,762,605,609,624,636,661,679,686,712,719,734,739,747,749,751,755,756,766,780,782,612,612,612,576,590,611,633,644,653,657,738,775,590,599,605,609,620,633,650,661,670,686,720,739,743,747,781,665,704,665,704,612,620,661,670,720,739,743,741,590,607,615,624,650,738,576,611,633,644,653,657,775,576,611,644,653,657,775,605,609,624,636,661,679,686,712,719,734,739,747,749,751,755,756,766,780,782,612,612,612,576,590,611,633,644,653,657,738,775,576,611,633,644,653,657,775,576,611,644,653,657,775,20,20,28,31,0,0,28,0,20,20,28,31,20,28,31,20,20,28,28,31,31,20,28,28,28,31,31,20,28,31,20,28,31,20,28,31,20,28,31,20,28,31,1277,1278,1279,1278,1277,903,904,905,906,903,904,905,905,905,905,905,905,902,0,902,0,906,906,906,0,0,0,902,903,904,905,906,902,903,904,905,906,902,903,904,905,906,902,903,904,905,906,903,904,905,906,902,903,904,902,903,904,905,906,902,903,904,905,906,902,902,903,904,905,906,902,903,904,905,906,905,906,905,906,902,903,904,905,906,904,904,904,904,904,902,902,902,904,904,904,904,904,904,902,902,903,904,902,903,904,905,906,903,905,906,902,903,904,905,906,905,906,902,903,904,905,906,902,903,904,905,906,904,904,904,904,904,902,903,904,905,906,0,26,26,26,26,26,26,26,26,26,26,26,26,26,26,1190,1190,1190,1190,1190,1190,935,0,1176,1176,1176,1176,1176,1176,1176,1176,1176,1176,1176,1176,1176,1176,1176,1176,1176,1176,1176,1176,1176,1176,1176,1176,1176,1176,1176,1176,1176,1176,1176,1176,1176,935,0,1175,1175,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,923,923,923,923,923,923,923,923,923,923,935,0,928,928,928,928,928,928,928,928,928,928,928,928,928,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1239,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,1191,935,0,935,0,935,0,935,935,0,0,935,0,932,932,932,932,932,932,935,0,935,0,935,0,935,0,1222,1222,1222,1222,0,0,0,0,0,0,0,0,0,0,1205,935,0,935,0,935,0,927,927,927,927,927,927,927,927,927,927,927,927,935,0,935,0,935,0,1226,1226,1226,935,0,935,0,935,0,1162,1162,1162,1223,1223,1223,1206,1206,1206,1206,935,0,935,0,1272,935,0,1272,1272,935,0,935,1230,0,1230,1230,1230,1230,1268,1268,1268,1268,1253,1253,1253,1253,1253,935,0,1225,1225,1225,1225,1225,1225,1225,1225,1225,1225,1225,1225,1225,935,935,0,0,1125,935,0,935,0,935,0,935,0,935,0,935,0,935,0,1231,1231,1231,1231,1231,1231,935,0,935,0,0,0,0,0,0,0,0,0,0,0,0,0,935,0,935,0,935,0,935,0,935,0,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,975,976,977,978,979,980,981,982,983,984,985,986,987,988,989,990,991,992,993,994,995,996,997,998,999,1000,1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1011,1012,1013,1014,1015,1016,1017,1018,1019,1020,1021,1022,1023,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1120,1121,1122,1123,1124,1125,1126,1127,1128,1129,1130,1131,1132,1133,1134,1135,1136,1137,1138,1139,1140,1141,1142,1143,1144,1145,1146,1147,1148,1149,1150,1151,1152,1153,1154,1155,1156,1157,1158,1159,1160,1161,1162,1163,907,1164,1165,1166,908,909,1167,1168,1169,1170,1171,1172,910,1173,911,1174,1175,912,1176,1177,1178,1179,1180,1181,913,1182,1183,1184,1185,914,1186,1187,1188,1189,1190,1191,1192,915,916,1193,1194,1195,1196,1197,917,1198,1199,1200,918,1201,1202,1203,919,1204,1205,1206,1207,1208,920,921,1209,922,923,1210,924,1211,1212,1213,925,1214,1215,1216,1217,926,927,928,1218,1219,1220,1221,1222,1223,1224,929,1225,930,1226,1227,1228,1229,1230,931,932,1231,1232,1233,1234,1235,1236,1237,1238,1239,1240,1241,1242,1243,1244,1245,1246,1247,1248,1249,1250,933,1251,1252,1253,1254,1255,1256,1257,1258,1259,1260,1261,1262,1263,1264,1265,1266,1267,1268,1269,1270,1271,934,1272,1273,1274,1275,1276,935,0,935,0,935,0,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,975,976,977,978,979,980,981,982,983,984,985,986,987,988,989,990,991,992,993,994,995,996,997,998,999,1000,1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1011,1012,1013,1014,1015,1016,1017,1018,1019,1020,1021,1022,1023,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1120,1121,1122,1123,1124,1125,1126,1127,1128,1129,1130,1131,1132,1133,1134,1135,1136,1137,1138,1139,1140,1141,1142,1143,1144,1145,1146,1147,1148,1149,1150,1151,1152,1153,1154,1155,1156,1157,1158,1159,1198,1198,1198,1198,1198,1198,930,930,930,930,930,930,930,930,935,0,935,0,907,907,907,907,907,907,907,907,907,907,935,0,907,907,935,0,935,0,0,0,0,1264,1264,1264,1264,1264,1264,1264,1264,1195,1195,1195,1195,1195,1195,1195,1195,1195,1195,1195,1195,1195,1195,1195,1160,1160,1160,1160,1160,1160,1160,1160,1234,1234,1234,1234,1243,1243,1243,935,0,935,0,1184,1184,1184,1184,1184,935,0,1227,1227,1227,1227,1227,1227,1227,935,0,0,0,0,0,0,0,935,0,935,0,912,912,912,912,912,912,912,912,912,912,912,912,912,912,913,913,913,913,913,913,913,913,913,913,918,918,918,918,918,918,918,918,918,918,935,0,935,0,931,931,931,931,931,931,931,931,931,931,931,931,931,931,931,931,1181,1181,1181,1181,1181,1181,1181,1181,1181,1181,935,0,935,0,935,0,935,0,935,0,935,935,0,0,935,0,935,0,935,0,1202,1202,1202,1202,1202,1202,1202,1202,1202,935,0,935,0,935,0,911,911,911,911,911,911,911,911,935,0,935,0,935,0,935,0,1266,1266,0,0,0,0,0,0,0,0,935,0,935,0,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,935,935,0,0,935,0,935,0,935,0,935,0,935,0,935,0,921,921,921,921,921,921,921,921,921,921,921,921,921,921,921,935,0,935,0,926,926,926,926,926,926,926,926,926,926,926,926,926,926,935,0,935,0,0,0,0,1159,1158,935,0,935,0,1229,1229,1229,1229,935,0,935,935,0,0,935,0,935,0,935,935,0,0,935,0,935,0,935,0,935,0,935,0,935,0,0,1169,1169,1169,1169,935,0,1169,1169,1169,1169,935,0,935,0,1208,1208,1208,1208,1208,1208,1211,1211,1211,1211,1211,1211,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1180,1212,1212,1212,1212,1212,1212,1212,1212,1205,1205,1205,1205,1205,1205,1205,1205,1173,1173,1173,1173,1173,1241,1241,1241,1179,1179,1179,1179,1179,1273,1273,1273,1273,1273,1273,1273,1273,1273,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1194,1269,1269,1269,1269,1269,1269,1269,1217,1217,1255,1255,1255,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1237,1257,1257,1257,1257,1257,1257,1257,1257,1257,1228,1228,1228,1228,1228,1188,1174,1174,1174,1174,1174,1174,1174,1174,1174,920,1248,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,1224,1216,1216,1216,1216,1216,1216,1216,1216,1216,1216,1216,1166,1166,1166,1166,1166,1166,1166,1166,1166,1166,1166,1166,1166,1166,1166,1166,1166,1166,909,909,909,909,909,909,909,909,909,909,909,909,909,909,909,909,909,909,909,909,909,909,909,1219,1219,1219,1219,1207,1207,1207,1207,1207,1262,1262,1262,1262,1262,1262,1262,1262,1262,1262,1262,1262,1262,1262,1259,1259,1259,1259,1262,1262,1165,1165,933,933,1247,1247,1247,1247,1247,1247,1247,1247,933,933,933,933,933,933,1165,1165,1165,1165,1165,1165,1165,1165,1165,1213,1213,1213,1213,1213,1213,1213,1270,1270,1203,1203,1203,1203,1203,1203,1260,1260,1260,1260,1210,1210,1265,1265,1265,1265,1265,1265,1265,1265,1214,1214,1214,1171,1171,1256,1256,1256,1256,1256,1256,1256,1256,1256,1256,1256,1256,1256,1238,1238,1238,1238,1238,1178,1242,1242,1242,1220,1220,1220,1220,1220,1172,1172,1172,1172,1172,1258,1258,1258,1258,1258,1258,1258,1258,1258,1258,1258,1258,1258,1258,1258,1258,1254,1254,1254,1254,1254,1254,1254,1254,1254,1254,1254,1254,1254,1254,1254,1254,1233,1233,1233,1233,1233,1233,1233,1245,1245,1245,1245,1245,1245,1245,1245,1245,1245,1245,1244,1244,1244,1244,1244,1244,1244,1244,1244,1244,914,914,914,914,914,914,924,924,924,924,924,924,924,924,924,924,924,924,924,924,924,924,924,924,1249,1249,1249,1249,1249,1249,1249,1263,1263,1263,1263,1263,1187,1187,1187,1187,1187,1187,1187,1187,1187,1187,1187,1187,1187,1187,1187,1187,1187,1187,1187,1187,1187,1187,1187,1187,1187,1187,1187,1187,1187,1187,1187,1187,1187,1187,1187,1187,1187,1187,1187,1187,1187,1187,1170,1170,1170,1170,1170,1170,1170,1170,1246,1246,1246,1246,1246,1246,1246,1246,1246,908,908,908,908,908,908,1185,908,908,908,908,908,908,908,908,908,908,908,908,908,908,908,908,908,908,908,908,908,908,908,908,908,908,1221,1221,1221,1221,1221,1221,1221,1221,1221,1221,1221,1196,1196,1196,1196,1196,1196,1196,1196,1196,1196,1196,1196,1196,1196,1196,1196,1196,1196,1196,1196,1196,1196,1196,1196,1196,1196,1196,1196,1196,1196,1196,1196,1196,1196,1196,1196,1196,1196,1196,1196,1196,1196,1196,1193,1193,1193,1193,1193,915,915,915,915,915,915,915,915,915,915,915,915,915,915,935,0,935,0,935,0,935,0,935,0,935,0,935,0,935,0,935,0,1274,935,0,935,0,935,0,935,0,1274,935,0,1186,1186,1186,1186,1186,1186,935,0,1274,1125,1200,1199,1199,1199,1200,1200,1200,935,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,935,0,935,0,935,0,1275,1275,1275,0,935,0,935,0,935,0,935,0,935,0,935,0,935,0,935,0,935,0,935,0,935,0,935,0,935,0,935,0,935,0,1209,1209,1209,1209,1209,0,1215,1215,1215,1218,1218,1218,1218,935,0,935,0,935,0,935,0,935,0,935,0,1197,935,0,935,0,1197,1197,1197,935,0,935,0,1197,935,0,935,0,935,0,935,0,935,0,919,919,919,919,919,919,919,919,919,919,919,919,935,0,1271,1271,1271,935,0,0,0,0,0,0,0,935,0,935,0,935,0,935,0,935,0,935,0,935,0,935,0,1236,1236,935,0,935,0,935,0,935,0,1250,1250,0,0,935,0,935,0,935,935,0,935,0,0,935,935,0,935,0,0,935,0,1204,1204,1204,1204,1204,916,916,916,916,916,1204,1204,1204,1204,1204,1204,1204,1204,1204,1204,935,0,935,0,935,0,935,0,935,0,935,0,935,0,935,0,935,0,935,0,935,0,935,0,935,0,1182,1182,1182,1182,1261,1261,1261,1261,1261,1261,1261,1261,1261,1183,1183,1183,1183,935,0,935,0,935,0,0,0,0,0,0,0,935,0,935,0,935,0,935,0,935,0,935,0,935,0,935,0,929,929,935,0,0,1267,1267,1267,1267,935,0,1189,1189,1189,1189,1189,935,0,935,1232,1232,1232,1232,1232,1232,1232,1232,1232,1232,1232,1232,1232,1232,1232,1232,0,1161,1161,1161,1161,1161,1161,1161,1161,1252,1252,1163,935,0,1168,1168,1168,1168,1168,1168,925,925,925,925,925,1163,1163,1163,1163,1163,1163,934,934,934,1163,922,922,922,922,935,0,1239,917,917,917,917,917,917,917,917,1177,1177,1177,1177,1177,935,0,0,0,0,0,0,0,0,0,0,0,0,0,935,0,935,0,935,0,935,0,935,0,935,0,1201,1201,1276,1276,1276,1276,935,0,935,0,1251,1251,1251,1251,1251,991,1136,0,0,991,0,935,0,935,0,1167,1167,1167,1167,1235,1235,1235,1235,1235,1235,1164,1164,1164,1164,1164,1164,1164,1164,1164,1164,935,0,935,0,0,0,0,1240,1240,1240,1240,988,1117,974,1111,1111,1111,1056,1075,1136,1136,1136,1068,1070,1026,1026,1004,964,975,994,1072,964,975,994,1072,964,975,994,1072,1159,968,971,1067,1153,968,1153,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,940,961,969,971,974,975,994,1030,1034,1085,1103,1105,1110,1123,1148,1149,955,1150,955,948,950,1092,1132,1153,1158,965,968,958,958,965,1070,965,965,968,965,1158,953,953,1011,1038,1076,1011,1038,1076,1011,1038,1076,1069,948,950,948,950,948,950,998,998,998,998,1118,1096,1126,1150,974,1085,1053,1053,1102,1141,1157,1109,1153,1020,1131,1131,1131,1131,1019,1135,942,942,942,1136,958,1139,968,1062,1109,1056,1075,1056,1075,1056,1075,1056,1075,945,1153,945,1021,1114,968,1021,1033,1001,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,984,1037,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,1047,982,1154,982,1154,982,1154,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,975,976,977,978,979,980,981,982,983,984,985,986,987,988,989,990,991,992,993,994,995,996,997,998,999,1000,1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1011,1012,1013,1014,1015,1016,1017,1018,1019,1020,1021,1022,1023,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1120,1121,1122,1123,1124,1125,1126,1127,1128,1129,1130,1131,1132,1133,1134,1135,1136,1137,1138,1139,1140,1141,1142,1143,1144,1145,1146,1147,1148,1149,1150,1151,1152,1153,1154,1155,1156,1157,1158,1159,1160,1161,1162,1163,907,1164,1165,1166,908,909,1167,1168,1169,1170,1171,1172,910,1173,911,1174,1175,912,1176,1177,1178,1179,1180,1181,913,1182,1183,1184,1185,914,1186,1187,1188,1189,1190,1191,1192,915,916,1193,1194,1195,1196,1197,917,1198,1199,1200,918,1201,1202,1203,919,1204,1205,1206,1207,1208,920,921,1209,922,923,1210,924,1211,1212,1213,925,1214,1215,1216,1217,926,927,928,1218,1219,1220,1221,1222,1223,1224,929,1225,930,1226,1227,1228,1229,1230,931,932,1231,1232,1233,1234,1235,1236,1237,1238,1239,1240,1241,1242,1243,1244,1245,1246,1247,1248,1249,1250,933,1251,1252,1253,1254,1255,1256,1257,1258,1259,1260,1261,1262,1263,1264,1265,1266,1267,1268,1269,1270,1271,934,1272,1273,1274,1275,1276,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,975,976,977,978,979,980,981,982,983,984,985,986,987,988,989,990,991,992,993,994,995,996,997,998,999,1000,1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1011,1012,1013,1014,1015,1016,1017,1018,1019,1020,1021,1022,1023,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1120,1121,1122,1123,1124,1125,1126,1127,1128,1129,1130,1131,1132,1133,1134,1135,1136,1137,1138,1139,1140,1141,1142,1143,1144,1145,1146,1147,1148,1149,1150,1151,1152,1153,1154,1155,1156,1157,1158,1159,1160,1161,1162,1163,907,1164,1165,1166,908,909,1167,1168,1169,1170,1171,1172,910,1173,911,1174,1175,912,1176,1177,1178,1179,1180,1181,913,1182,1183,1184,1185,914,1186,1187,1188,1189,1190,1191,1192,915,916,1193,1194,1195,1196,1197,917,1198,1199,1200,918,1201,1202,1203,919,1204,1205,1206,1207,1208,920,921,1209,922,923,1210,924,1211,1212,1213,925,1214,1215,1216,1217,926,927,928,1218,1219,1220,1221,1222,1223,1224,929,1225,930,1226,1227,1228,1229,1230,931,932,1231,1232,1233,1234,1235,1236,1237,1238,1239,1240,1241,1242,1243,1244,1245,1246,1247,1248,1249,1250,933,1251,1252,1253,1254,1255,1256,1257,1258,1259,1260,1261,1262,1263,1264,1265,1266,1267,1268,1269,1270,1271,934,1272,1273,1274,1275,1276,965,1119,1119,1119,1119,947,1065,1088,945,1134,1020,1020,1125,1158,1159,1031,1031,1110,951,996,1047,1114,1114,1110,998,1015,1101,1015,1101,1015,1101,1015,1015,1015,1015,1015,1015,954,1015,1084,1101,1066,954,1015,1084,1101,1066,954,1015,1084,1101,1066,954,1015,1084,1101,1066,954,1015,1084,1101,1066,954,1015,1084,1101,1066,954,1015,1084,1101,1066,954,1015,1084,1101,1066,1015,1101,1015,1114,1032,998,998,971,968,1153,1058,1058,1058,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,975,976,977,978,979,980,981,982,983,984,985,986,987,988,989,990,991,992,993,994,995,996,997,998,999,1000,1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1011,1012,1013,1014,1015,1016,1017,1018,1019,1020,1021,1022,1023,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1120,1121,1122,1123,1124,1125,1126,1127,1128,1129,1130,1131,1132,1133,1134,1135,1136,1137,1138,1139,1140,1141,1142,1143,1144,1145,1146,1147,1148,1149,1150,1151,1152,1153,1154,1155,1156,1157,1158,1159,1160,1161,1162,1163,907,1164,1165,1166,908,909,1167,1168,1169,1170,1171,1172,910,1173,911,1174,1175,912,1176,1177,1178,1179,1180,1181,913,1182,1183,1184,1185,914,1186,1187,1188,1189,1190,1191,1192,915,916,1193,1194,1195,1196,1197,917,1198,1199,1200,918,1201,1202,1203,919,1204,1205,1206,1207,1208,920,921,1209,922,923,1210,924,1211,1212,1213,925,1214,1215,1216,1217,926,927,928,1218,1219,1220,1221,1222,1223,1224,929,1225,930,1226,1227,1228,1229,1230,931,932,1231,1232,1233,1234,1235,1236,1237,1238,1239,1240,1241,1242,1243,1244,1245,1246,1247,1248,1249,1250,933,1251,1252,1253,1254,1255,1256,1257,1258,1259,1260,1261,1262,1263,1264,1265,1266,1267,1268,1269,1270,1271,934,1272,1273,1274,1275,1276,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,975,976,977,978,979,980,981,982,983,984,985,986,987,988,989,990,991,992,993,994,995,996,997,998,999,1000,1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1011,1012,1013,1014,1015,1016,1017,1018,1019,1020,1021,1022,1023,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1120,1121,1122,1123,1124,1125,1126,1127,1128,1129,1130,1131,1132,1133,1134,1135,1136,1137,1138,1139,1140,1141,1142,1143,1144,1145,1146,1147,1148,1149,1150,1151,1152,1153,1154,1155,1156,1157,1158,1159,1160,1161,1162,1163,907,1164,1165,1166,908,909,1167,1168,1169,1170,1171,1172,910,1173,911,1174,1175,912,1176,1177,1178,1179,1180,1181,913,1182,1183,1184,1185,914,1186,1187,1188,1189,1190,1191,1192,915,916,1193,1194,1195,1196,1197,917,1198,1199,1200,918,1201,1202,1203,919,1204,1205,1206,1207,1208,920,921,1209,922,923,1210,924,1211,1212,1213,925,1214,1215,1216,1217,926,927,928,1218,1219,1220,1221,1222,1223,1224,929,1225,930,1226,1227,1228,1229,1230,931,932,1231,1232,1233,1234,1235,1236,1237,1238,1239,1240,1241,1242,1243,1244,1245,1246,1247,1248,1249,1250,933,1251,1252,1253,1254,1255,1256,1257,1258,1259,1260,1261,1262,1263,1264,1265,1266,1267,1268,1269,1270,1271,934,1272,1273,1274,1275,1276,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,961,969,1105,999,1086,1100,1102,1111,1141,1157,1128,1020,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,1086,987,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,1060,1068,1013,1028,1143,964,975,994,1072,970,981,984,987,1001,1090,1120,987,942,1034,1083,1124,1155,1155,979,1102,1104,1141,1157,1021,1033,1021,1083,1027,1153,1153,1153,951,968,1062,1109,1153,951,974,1114,1139,946,957,1001,1014,1061,1065,1088,1090,1094,1146,1053,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,975,976,977,978,979,980,981,982,983,984,985,986,987,988,989,990,991,992,993,994,995,996,997,998,999,1000,1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1011,1012,1013,1014,1015,1016,1017,1018,1019,1020,1021,1022,1023,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1120,1121,1122,1123,1124,1125,1126,1127,1128,1129,1130,1131,1132,1133,1134,1135,1136,1137,1138,1139,1140,1141,1142,1143,1144,1145,1146,1147,1148,1149,1150,1151,1152,1153,1154,1155,1156,1157,1158,1159,1160,1161,1162,1163,907,1164,1165,1166,908,909,1167,1168,1169,1170,1171,1172,910,1173,911,1174,1175,912,1176,1177,1178,1179,1180,1181,913,1182,1183,1184,1185,914,1186,1187,1188,1189,1190,1191,1192,915,916,1193,1194,1195,1196,1197,917,1198,1199,1200,918,1201,1202,1203,919,1204,1205,1206,1207,1208,920,921,1209,922,923,1210,924,1211,1212,1213,925,1214,1215,1216,1217,926,927,928,1218,1219,1220,1221,1222,1223,1224,929,1225,930,1226,1227,1228,1229,1230,931,932,1231,1232,1233,1234,1235,1236,1237,1238,1239,1240,1241,1242,1243,1244,1245,1246,1247,1248,1249,1250,933,1251,1252,1253,1254,1255,1256,1257,1258,1259,1260,1261,1262,1263,1264,1265,1266,1267,1268,1269,1270,1271,934,1272,1273,1274,1275,1276,935,1099,1129,1129,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,975,976,977,978,979,980,981,982,983,984,985,986,987,988,989,990,991,992,993,994,995,996,997,998,999,1000,1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1011,1012,1013,1014,1015,1016,1017,1018,1019,1020,1021,1022,1023,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1120,1121,1122,1123,1124,1125,1126,1127,1128,1129,1130,1131,1132,1133,1134,1135,1136,1137,1138,1139,1140,1141,1142,1143,1144,1145,1146,1147,1148,1149,1150,1151,1152,1153,1154,1155,1156,1157,1158,1159,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,975,976,977,978,979,980,981,982,983,984,985,986,987,988,989,990,991,992,993,994,995,996,997,998,999,1000,1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1011,1012,1013,1014,1015,1016,1017,1018,1019,1020,1021,1022,1023,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1120,1121,1122,1123,1124,1125,1126,1127,1128,1129,1130,1131,1132,1133,1134,1135,1136,1137,1138,1139,1140,1141,1142,1143,1144,1145,1146,1147,1148,1149,1150,1151,1152,1153,1154,1155,1156,1157,1158,1159,1160,1161,1162,1163,907,1164,1165,1166,908,909,1167,1168,1169,1170,1171,1172,910,1173,911,1174,1175,912,1176,1177,1178,1179,1180,1181,913,1182,1183,1184,1185,914,1186,1187,1188,1189,1190,1191,1192,915,916,1193,1194,1195,1196,1197,917,1198,1199,1200,918,1201,1202,1203,919,1204,1205,1206,1207,1208,920,921,1209,922,923,1210,924,1211,1212,1213,925,1214,1215,1216,1217,926,927,928,1218,1219,1220,1221,1222,1223,1224,929,1225,930,1226,1227,1228,1229,1230,931,932,1231,1232,1233,1234,1235,1236,1237,1238,1239,1240,1241,1242,1243,1244,1245,1246,1247,1248,1249,1250,933,1251,1252,1253,1254,1255,1256,1257,1258,1259,1260,1261,1262,1263,1264,1265,1266,1267,1268,1269,1270,1271,934,1272,1273,1274,1275,1276,1118,1118,1001,1114,969,969,1020,1020,1020,988,1117,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,1125,1125,1125,1125,958,1114,1103,953,981,1002,1016,1121,1033,1139,1136,1159,1158,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,1069,1069,937,983,1046,1021,1139,961,969,1105,1153,961,969,1105,1153,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,975,976,977,978,979,980,981,982,983,984,985,986,987,988,989,990,991,992,993,994,995,996,997,998,999,1000,1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1011,1012,1013,1014,1015,1016,1017,1018,1019,1020,1021,1022,1023,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1120,1121,1122,1123,1124,1125,1126,1127,1128,1129,1130,1131,1132,1133,1134,1135,1136,1137,1138,1139,1140,1141,1142,1143,1144,1145,1146,1147,1148,1149,1150,1151,1152,1153,1154,1155,1156,1157,1158,1159,1160,1161,1162,1163,907,1164,1165,1166,908,909,1167,1168,1169,1170,1171,1172,910,1173,911,1174,1175,912,1176,1177,1178,1179,1180,1181,913,1182,1183,1184,1185,914,1186,1187,1188,1189,1190,1191,1192,915,916,1193,1194,1195,1196,1197,917,1198,1199,1200,918,1201,1202,1203,919,1204,1205,1206,1207,1208,920,921,1209,922,923,1210,924,1211,1212,1213,925,1214,1215,1216,1217,926,927,928,1218,1219,1220,1221,1222,1223,1224,929,1225,930,1226,1227,1228,1229,1230,931,932,1231,1232,1233,1234,1235,1236,1237,1238,1239,1240,1241,1242,1243,1244,1245,1246,1247,1248,1249,1250,933,1251,1252,1253,1254,1255,1256,1257,1258,1259,1260,1261,1262,1263,1264,1265,1266,1267,1268,1269,1270,1271,934,1272,1273,1274,1275,1276,1008,987,1033,1033,1033,1033,1033,974,993,942,1034,1118,1139,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,935,952,968,987,1011,1153,1054,1155,993,988,1117,941,1110,951,1031,1094,1146,973,1020,961,969,1105,1148,967,963,984,991,1001,1011,1014,1023,1031,1037,1038,1063,1076,1093,1125,1133,1143,1149,1158,1047,1149,1047,1096,1130,1130,1130,1130,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,975,976,977,978,979,980,981,982,983,984,985,986,987,988,989,990,991,992,993,994,995,996,997,998,999,1000,1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1011,1012,1013,1014,1015,1016,1017,1018,1019,1020,1021,1022,1023,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1120,1121,1122,1123,1124,1125,1126,1127,1128,1129,1130,1131,1132,1133,1134,1135,1136,1137,1138,1139,1140,1141,1142,1143,1144,1145,1146,1147,1148,1149,1150,1151,1152,1153,1154,1155,1156,1157,1158,1159,1160,1161,1162,1163,907,907,907,907,907,1164,1165,1166,908,908,908,908,908,909,909,909,909,909,1167,1168,1169,1170,1171,1172,910,910,910,910,910,1173,911,911,911,911,911,1174,1175,912,912,912,912,912,1176,1177,1178,1179,1180,1181,913,913,913,913,913,1182,1183,1184,1185,914,914,914,914,914,1186,1187,1188,1189,1190,1191,1192,915,915,915,915,915,916,916,916,916,916,1193,1194,1195,1196,1197,917,917,917,917,917,1198,1199,1200,918,918,918,918,918,1201,1202,1203,919,919,919,919,919,1204,1205,1206,1207,1208,920,920,920,920,920,921,921,921,921,921,1209,922,922,922,922,922,923,923,923,923,923,1210,924,924,924,924,924,1211,1212,1213,925,925,925,925,925,1214,1215,1216,1217,926,926,926,926,926,927,927,927,927,927,928,928,928,928,928,1218,1219,1220,1221,1222,1223,1224,929,929,929,929,929,1225,930,930,930,930,930,1226,1227,1228,1229,1230,931,931,931,931,931,932,932,932,932,932,1231,1232,1233,1234,1235,1236,1237,1238,1239,1240,1241,1242,1243,1244,1245,1246,1247,1248,1249,1250,933,933,933,933,933,1251,1252,1253,1254,1255,1256,1257,1258,1259,1260,1261,1262,1263,1264,1265,1266,1267,1268,1269,1270,1271,934,934,934,934,934,1272,1273,1274,1275,1276,1031,1024,1055,953,1012,1035,1078,1102,1141,1157,1032,984,1037,1145,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,975,976,977,978,979,980,981,982,983,984,985,986,987,988,989,990,991,992,993,994,995,996,997,998,999,1000,1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1011,1012,1013,1014,1015,1016,1017,1018,1019,1020,1021,1022,1023,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1120,1121,1122,1123,1124,1125,1126,1127,1128,1129,1130,1131,1132,1133,1134,1135,1136,1137,1138,1139,1140,1141,1142,1143,1144,1145,1146,1147,1148,1149,1150,1151,1152,1153,1154,1155,1156,1157,1158,1159,1160,1161,1162,1163,907,1164,1165,1166,908,909,1167,1168,1169,1170,1171,1172,910,1173,911,1174,1175,912,1176,1177,1178,1179,1180,1181,913,1182,1183,1184,1185,914,1186,1187,1188,1189,1190,1191,1192,915,916,1193,1194,1195,1196,1197,917,1198,1199,1200,918,1201,1202,1203,919,1204,1205,1206,1207,1208,920,921,1209,922,923,1210,924,1211,1212,1213,925,1214,1215,1216,1217,926,927,928,1218,1219,1220,1221,1222,1223,1224,929,1225,930,1226,1227,1228,1229,1230,931,932,1231,1232,1233,1234,1235,1236,1237,1238,1239,1240,1241,1242,1243,1244,1245,1246,1247,1248,1249,1250,933,1251,1252,1253,1254,1255,1256,1257,1258,1259,1260,1261,1262,1263,1264,1265,1266,1267,1268,1269,1270,1271,934,1272,1273,1274,1275,1276,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,1160,1161,1162,1163,1164,1165,1166,1167,1168,1169,1170,1171,1172,1173,1174,1175,1176,1177,1178,1179,1180,1181,1182,1183,1184,1185,1186,1187,1188,1189,1190,1191,1192,1193,1194,1195,1196,1197,1198,1199,1200,1201,1202,1203,1204,1205,1206,1207,1208,1209,1210,1211,1212,1213,1214,1215,1216,1217,1218,1219,1220,1221,1222,1223,1224,1225,1226,1227,1228,1229,1230,1231,1232,1233,1234,1235,1236,1237,1238,1239,1240,1241,1242,1243,1244,1245,1246,1247,1248,1249,1250,1251,1252,1253,1254,1255,1256,1257,1258,1259,1260,1261,1262,1263,1264,1265,1266,1267,1268,1269,1270,1271,1272,1273,1274,1275,1276,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,1160,1161,1162,1163,1164,1165,1166,1167,1168,1169,1170,1171,1172,1173,1174,1175,1176,1177,1178,1179,1180,1181,1182,1183,1184,1185,1186,1187,1188,1189,1190,1191,1192,1193,1194,1195,1196,1197,1198,1199,1200,1201,1202,1203,1204,1205,1206,1207,1208,1209,1210,1211,1212,1213,1214,1215,1216,1217,1218,1219,1220,1221,1222,1223,1224,1225,1226,1227,1228,1229,1230,1231,1232,1233,1234,1235,1236,1237,1238,1239,1240,1241,1242,1243,1244,1245,1246,1247,1248,1249,1250,1251,1252,1253,1254,1255,1256,1257,1258,1259,1260,1261,1262,1263,1264,1265,1266,1267,1268,1269,1270,1271,1272,1273,1274,1275,1276,1139,1139,1068,949,949,945,945,963,996,1063,1076,1133,1136,1136,1136,1136,1159,1159,968,1148,968,1155,1155,1061,1073,1061,1130,968,971,1153,1013,1028,1103,1149,1093,951,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,1103,1123,1103,1148,968,971,1125,1153,1158,968,1139,1147,958,1000,958,955,984,1037,1158,1071,1148,958,1070,995,1036,1036,1036,1056,1075,970,995,1021,1065,1070,1083,1088,1090,1114,1118,1122,938,943,958,998,1039,1053,1129,938,947,1139,1148,1110,1135,1135,1121,1091,1085,987,1104,1145,987,1018,1139,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,1139,1139,1002,1016,1002,1016,1002,1016,1002,1016,1002,1016,1002,1016,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,944,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,975,976,977,978,979,980,981,982,983,984,985,986,987,988,989,990,991,992,993,994,995,996,997,998,999,1000,1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1011,1012,1013,1014,1015,1016,1017,1018,1019,1020,1021,1022,1023,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1120,1121,1122,1123,1124,1125,1126,1127,1128,1129,1130,1131,1132,1133,1134,1135,1136,1137,1138,1139,1140,1141,1142,1143,1144,1145,1146,1147,1148,1149,1150,1151,1152,1153,1154,1155,1156,1157,1158,1159,1160,1161,1162,1163,907,1164,1165,1166,908,909,1167,1168,1169,1170,1171,1172,910,1173,911,1174,1175,912,1176,1177,1178,1179,1180,1181,913,1182,1183,1184,1185,914,1186,1187,1188,1189,1190,1191,1192,915,916,1193,1194,1195,1196,1197,917,1198,1199,1200,918,1201,1202,1203,919,1204,1205,1206,1207,1208,920,921,1209,922,923,1210,924,1211,1212,1213,925,1214,1215,1216,1217,926,927,928,1218,1219,1220,1221,1222,1223,1224,929,1225,930,1226,1227,1228,1229,1230,931,932,1231,1232,1233,1234,1235,1236,1237,1238,1239,1240,1241,1242,1243,1244,1245,1246,1247,1248,1249,1250,933,1251,1252,1253,1254,1255,1256,1257,1258,1259,1260,1261,1262,1263,1264,1265,1266,1267,1268,1269,1270,1271,934,1272,1273,1274,1275,1276,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,1000,1081,1054,1128,968,993,1040,990,952,1122,1053,973,940,961,969,974,1027,1030,1034,1061,1073,1085,1103,1105,1110,1112,1123,1125,1148,1149,1158,955,955,975,994,948,950,958,968,1092,1132,1153,957,1014,1065,1088,1053,1094,1146,1031,1074,979,1155,1155,1155,1155,1155,1033,945,1027,1118,940,961,969,974,1027,1030,1034,1061,1073,1085,1103,1105,1110,1112,1123,1125,1148,1149,1158,955,955,975,994,948,950,958,968,1092,1132,1153,1093,1107,1073,1109,984,1000,1004,1021,1054,1080,1083,1109,1114,1125,1153,1155,1083,1121,1074,1054,935,944,935,935,992,1115,943,1005,1005,1005,1047,1047,1083,1121,1074,1128,1128,1054,1131,1143,1147,1077,1107,951,1031,943,972,984,1036,1050,1125,1126,1152,1150,1131,1150,1150,1125,1069,1149,1149,1149,967,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,1056,1075,1136,947,1122,1020,1020,1020,970,1090,1020,1020,1020,992,1033,1033,1033,947,936,998,1039,1039,936,998,998,936,998,1083,1047,1047,1035,1078,1035,1078,1035,1078,1035,1078,1035,1078,1035,1078,1000,1086,1102,1141,1157,1086,1102,1141,1157,1086,1102,1141,1157,1086,1102,1141,1157,1086,1086,1086,997,1127,997,1022,1025,1042,1043,1059,1113,1127,997,1025,1043,1059,1127,1042,997,1022,1042,1113,1127,997,1022,1042,1113,1127,1059,1059,1059,1059,935,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,1060,1041,956,977,1000,1115,977,977,1027,949,949,1069,940,963,968,980,1009,1017,1030,1057,1064,1107,1133,1140,1131,951,996,951,996,963,1067,1133,1009,1030,1032,1049,1085,1124,1029,1029,939,1066,1084,1093,1093,1067,1093,1093,1099,1111,1099,1111,1099,1111,1099,1111,1032,974,945,966,1044,1051,1095,1044,1051,1095,966,966,988,1117,1063,1063,1047,1139,1069,948,950,955,982,993,1006,1011,1032,1038,1067,1076,1110,1124,1154,940,1049,940,1049,940,1049,940,1049,993,1002,1016,1054,1130,1134,1012,1029,1155,1155,974,1019,1052,1029,1029,1029,1029,1135,945,1034,1110,1123,1149,967,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,967,1137,1137,1079,984,1031,1037,984,1031,1037,1069,1114,999,1097,1159,952,1069,940,968,980,1009,1017,1030,1057,1064,1107,1140,1131,951,996,951,996,1067,1009,1030,1032,1049,1085,1124,984,1037,1104,1139,967,1015,1066,1084,1101,1056,1075,1056,1075,1056,1075,945,1005,1005,1005,1005,952,967,1128,1003,1003,1003,1003,1003,961,969,1003,1105,1148,1059,1063,1063,1018,1002,1016,1130,1031,1031,1121,985,1010,1087,1098,1138,1141,1144,1156,1157,946,1007,1023,1052,1094,1118,1146,1052,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,975,976,977,978,979,980,981,982,983,984,985,986,987,988,989,990,991,992,993,994,995,996,997,998,999,1000,1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1011,1012,1013,1014,1015,1016,1017,1018,1019,1020,1021,1022,1023,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1120,1121,1122,1123,1124,1125,1126,1127,1128,1129,1130,1131,1132,1133,1134,1135,1136,1137,1138,1139,1140,1141,1142,1143,1144,1145,1146,1147,1148,1149,1150,1151,1152,1153,1154,1155,1156,1157,1158,1159,1114,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,975,976,977,978,979,980,981,982,983,984,985,986,987,988,989,990,991,992,993,994,995,996,997,998,999,1000,1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1011,1012,1013,1014,1015,1016,1017,1018,1019,1020,1021,1022,1023,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1120,1121,1122,1123,1124,1125,1126,1127,1128,1129,1130,1131,1132,1133,1134,1135,1136,1137,1138,1139,1140,1141,1142,1143,1144,1145,1146,1147,1148,1149,1150,1151,1152,1153,1154,1155,1156,1157,1158,1159,1160,1161,1162,1163,907,1164,1165,1166,908,909,1167,1168,1169,1170,1171,1172,910,1173,911,1174,1175,912,1176,1177,1178,1179,1180,1181,913,1182,1183,1184,1185,914,1186,1187,1188,1189,1190,1191,1192,915,916,1193,1194,1195,1196,1197,917,1198,1199,1200,918,1201,1202,1203,919,1204,1205,1206,1207,1208,920,921,1209,922,923,1210,924,1211,1212,1213,925,1214,1215,1216,1217,926,927,928,1218,1219,1220,1221,1222,1223,1224,929,1225,930,1226,1227,1228,1229,1230,931,932,1231,1232,1233,1234,1235,1236,1237,1238,1239,1240,1241,1242,1243,1244,1245,1246,1247,1248,1249,1250,933,1251,1252,1253,1254,1255,1256,1257,1258,1259,1260,1261,1262,1263,1264,1265,1266,1267,1268,1269,1270,1271,934,1272,1273,1274,1275,1276,939,939,939,939,939,939,939,939,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,989,952,943,1000,1122,953,953,1027,1139,1074,979,958,1148,958,958,1136,1158,1070,1041,1159,937,983,1046,1137,990,1136,945,958,979,1008,1019,1054,940,940,1079,1019,1019,1155,1155,1155,984,992,1037,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,1147,952,1036,1036,1036,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,1109,1096,1134,1153,1150,936,937,938,943,947,954,956,957,958,960,963,964,970,973,975,976,977,978,982,983,985,993,998,1007,1010,1011,1018,1022,1024,1025,1028,1035,1038,1039,1043,1046,1052,1053,1055,1059,1065,1076,1080,1082,1086,1087,1088,1094,1100,1102,1108,1113,1115,1120,1129,1133,1137,1141,1142,1144,1146,1151,1157,1029,1153,1153,956,1115,953,936,937,938,943,947,950,954,956,957,958,960,963,964,970,973,975,976,977,978,982,983,985,993,998,1007,1010,1011,1018,1022,1024,1025,1028,1035,1038,1039,1043,1046,1052,1053,1055,1059,1060,1062,1065,1076,1080,1082,1086,1087,1088,1092,1094,1100,1102,1108,1113,1115,1120,1129,1133,1137,1141,1142,1144,1146,1151,1157,1093,1048,966,968,979,987,988,995,1002,1016,1021,1044,1051,1095,1117,968,1153,1155,1155,979,1027,989,1070,968,971,1131,1153,1139,1139,982,1107,1154,1149,941,949,951,955,959,962,964,972,975,982,986,990,994,996,1009,1011,1015,1017,1019,1031,1044,1049,1050,1051,1063,1066,1072,1077,1083,1084,1089,1091,1095,1096,1106,1107,1110,1123,1135,1140,1154,993,1002,1016,1056,1075,1070,1106,945,939,942,953,961,965,966,969,979,981,987,988,1002,1006,1010,1012,1013,1016,1026,1028,1030,1032,1034,1036,1058,1067,1071,1085,1093,1099,1101,1104,1105,1111,1116,1117,1121,1124,1126,1130,1131,1143,1147,1148,1152,1155,1156,1110,1122,1148,1148,1001,936,952,958,974,998,1005,1053,1153,958,1160,1161,1162,1163,1164,1165,1166,1167,1168,1169,1170,1171,1172,1173,1174,1175,1176,1177,1178,1179,1180,1181,1182,1183,1184,1185,1186,1187,1188,1189,1190,1191,1192,1193,1194,1195,1196,1197,1198,1199,1200,1201,1202,1203,1204,1205,1206,1207,1208,1209,1210,1211,1212,1213,1214,1215,1216,1217,1218,1219,1220,1221,1222,1223,1224,1225,1226,1227,1228,1229,1230,1231,1232,1233,1234,1235,1236,1237,1238,1239,1240,1241,1242,1243,1244,1245,1246,1247,1248,1249,1250,1251,1252,1253,1254,1255,1256,1257,1258,1259,1260,1261,1262,1263,1264,1265,1266,1267,1268,1269,1270,1271,1272,1273,1274,1275,1276,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,975,976,977,978,979,980,981,982,983,984,985,986,987,988,989,990,991,992,993,994,995,996,997,998,999,1000,1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1011,1012,1013,1014,1015,1016,1017,1018,1019,1020,1021,1022,1023,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1120,1121,1122,1123,1124,1125,1126,1127,1128,1129,1130,1131,1132,1133,1134,1135,1136,1137,1138,1139,1140,1141,1142,1143,1144,1145,1146,1147,1148,1149,1150,1151,1152,1153,1154,1155,1156,1157,1158,1159,1160,1161,1162,1163,907,1164,1165,1166,908,909,1167,1168,1169,1170,1171,1172,910,1173,911,1174,1175,912,1176,1177,1178,1179,1180,1181,913,1182,1183,1184,1185,914,1186,1187,1188,1189,1190,1191,1192,915,916,1193,1194,1195,1196,1197,917,1198,1199,1200,918,1201,1202,1203,919,1204,1205,1206,1207,1208,920,921,1209,922,923,1210,924,1211,1212,1213,925,1214,1215,1216,1217,926,927,928,1218,1219,1220,1221,1222,1223,1224,929,1225,930,1226,1227,1228,1229,1230,931,932,1231,1232,1233,1234,1235,1236,1237,1238,1239,1240,1241,1242,1243,1244,1245,1246,1247,1248,1249,1250,933,1251,1252,1253,1254,1255,1256,1257,1258,1259,1260,1261,1262,1263,1264,1265,1266,1267,1268,1269,1270,1271,934,1272,1273,1274,1275,1276,1160,1161,1162,1163,1164,1165,1166,1167,1168,1169,1170,1171,1172,1173,1174,1175,1176,1177,1178,1179,1180,1181,1182,1183,1184,1185,1186,1187,1188,1189,1190,1191,1192,1193,1194,1195,1196,1197,1198,1199,1200,1201,1202,1203,1204,1205,1206,1207,1208,1209,1210,1211,1212,1213,1214,1215,1216,1217,1218,1219,1220,1221,1222,1223,1224,1225,1226,1227,1228,1229,1230,1231,1232,1233,1234,1235,1236,1237,1238,1239,1240,1241,1242,1243,1244,1245,1246,1247,1248,1249,1250,1251,1252,1253,1254,1255,1256,1257,1258,1259,1260,1261,1262,1263,1264,1265,1266,1267,1268,1269,1270,1271,1272,1273,1274,1275,1276,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,1019,1056,1075,1029,1029,1103,1079,1085,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,975,976,977,978,979,980,981,982,983,984,985,986,987,988,989,990,991,992,993,994,995,996,997,998,999,1000,1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1011,1012,1013,1014,1015,1016,1017,1018,1019,1020,1021,1022,1023,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1120,1121,1122,1123,1124,1125,1126,1127,1128,1129,1130,1131,1132,1133,1134,1135,1136,1137,1138,1139,1140,1141,1142,1143,1144,1145,1146,1147,1148,1149,1150,1151,1152,1153,1154,1155,1156,1157,1158,1159,1160,1161,1162,1163,907,1164,1165,1166,908,909,1167,1168,1169,1170,1171,1172,910,1173,911,1174,1175,912,1176,1177,1178,1179,1180,1181,913,1182,1183,1184,1185,914,1186,1187,1188,1189,1190,1191,1192,915,916,1193,1194,1195,1196,1197,917,1198,1199,1200,918,1201,1202,1203,919,1204,1205,1206,1207,1208,920,921,1209,922,923,1210,924,1211,1212,1213,925,1214,1215,1216,1217,926,927,928,1218,1219,1220,1221,1222,1223,1224,929,1225,930,1226,1227,1228,1229,1230,931,932,1231,1232,1233,1234,1235,1236,1237,1238,1239,1240,1241,1242,1243,1244,1245,1246,1247,1248,1249,1250,933,1251,1252,1253,1254,1255,1256,1257,1258,1259,1260,1261,1262,1263,1264,1265,1266,1267,1268,1269,1270,1271,934,1272,1273,1274,1275,1276,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,975,976,977,978,979,980,981,982,983,984,985,986,987,988,989,990,991,992,993,994,995,996,997,998,999,1000,1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1011,1012,1013,1014,1015,1016,1017,1018,1019,1020,1021,1022,1023,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1120,1121,1122,1123,1124,1125,1126,1127,1128,1129,1130,1131,1132,1133,1134,1135,1136,1137,1138,1139,1140,1141,1142,1143,1144,1145,1146,1147,1148,1149,1150,1151,1152,1153,1154,1155,1156,1157,1158,1159,1160,1161,1162,1163,907,1164,1165,1166,908,909,1167,1168,1169,1170,1171,1172,910,1173,911,1174,1175,912,1176,1177,1178,1179,1180,1181,913,1182,1183,1184,1185,914,1186,1187,1188,1189,1190,1191,1192,915,916,1193,1194,1195,1196,1197,917,1198,1199,1200,918,1201,1202,1203,919,1204,1205,1206,1207,1208,920,921,1209,922,923,1210,924,1211,1212,1213,925,1214,1215,1216,1217,926,927,928,1218,1219,1220,1221,1222,1223,1224,929,1225,930,1226,1227,1228,1229,1230,931,932,1231,1232,1233,1234,1235,1236,1237,1238,1239,1240,1241,1242,1243,1244,1245,1246,1247,1248,1249,1250,933,1251,1252,1253,1254,1255,1256,1257,1258,1259,1260,1261,1262,1263,1264,1265,1266,1267,1268,1269,1270,1271,934,1272,1273,1274,1275,1276,1048,1125,1158,978,1055,1125,1005,1005,1005,952,967,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,975,976,977,978,979,980,981,982,983,984,985,986,987,988,989,990,991,992,993,994,995,996,997,998,999,1000,1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1011,1012,1013,1014,1015,1016,1017,1018,1019,1020,1021,1022,1023,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1120,1121,1122,1123,1124,1125,1126,1127,1128,1129,1130,1131,1132,1133,1134,1135,1136,1137,1138,1139,1140,1141,1142,1143,1144,1145,1146,1147,1148,1149,1150,1151,1152,1153,1154,1155,1156,1157,1158,1159,1160,1161,1162,1163,907,1164,1165,1166,908,909,1167,1168,1169,1170,1171,1172,910,1173,911,1174,1175,912,1176,1177,1178,1179,1180,1181,913,1182,1183,1184,1185,914,1186,1187,1188,1189,1190,1191,1192,915,916,1193,1194,1195,1196,1197,917,1198,1199,1200,918,1201,1202,1203,919,1204,1205,1206,1207,1208,920,921,1209,922,923,1210,924,1211,1212,1213,925,1214,1215,1216,1217,926,927,928,1218,1219,1220,1221,1222,1223,1224,929,1225,930,1226,1227,1228,1229,1230,931,932,1231,1232,1233,1234,1235,1236,1237,1238,1239,1240,1241,1242,1243,1244,1245,1246,1247,1248,1249,1250,933,1251,1252,1253,1254,1255,1256,1257,1258,1259,1260,1261,1262,1263,1264,1265,1266,1267,1268,1269,1270,1271,934,1272,1273,1274,1275,1276,964,975,982,994,1072,1154,938,938,1149,951,1047,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,1149,1155,1036,1147,941,984,1079,1079,980,1045,1057,1064,1019,1136,1103,1149,993,1099,1111,972,1004,1050,1091,1071,1071,940,1105,1148,1148,940,1105,1148,961,969,974,1105,1136,1136,1103,1149,1103,1103,1103,1093,1067,1111,1111,1111,1111,1125,1032,1047,951,1031,1147,1004,1158,1060,1074,1071,1148,958,955,1058,1058,1058,1135,940,1105,1148,979,1104,1033,1021,1040,942,964,975,993,994,1030,1032,1034,1072,1085,1089,1123,1149,942,964,975,993,994,1030,1032,1034,1072,1085,1089,1123,1149,942,964,975,993,994,1030,1032,1034,1072,1085,1089,1123,1149,1114,1000,1071,1153,1071,1071,1071,1153,1056,1075,1150,968,968,1153,1019,942,948,950,964,980,1006,1012,1032,1045,1057,1064,1072,1089,1102,1134,1140,1141,1152,1157,1067,1067,1067,940,959,962,986,988,1030,1085,1116,1117,940,959,962,986,988,1116,1117,959,962,986,988,1116,1117,1150,942,948,950,964,980,1006,1012,1032,1045,1057,1064,1072,1089,1102,1134,1140,1141,1152,1157,1067,1067,1067,940,959,962,986,988,1030,1085,1116,1117,940,963,964,975,980,994,1009,1017,1030,1057,1064,1072,1107,1133,1140,951,996,951,996,963,964,975,994,1067,1072,1133,1131,1009,1030,1032,1049,1085,1124,940,959,962,986,988,1116,1117,959,962,986,988,1116,1117,942,948,950,964,980,1006,1012,1032,1045,1057,1064,1072,1089,1102,1134,1140,1141,1152,1157,1067,1067,1067,940,959,962,986,988,1030,1085,1116,1117,940,959,962,986,988,1116,1117,959,962,986,988,1116,1117,0],"f":"```````````````````{ce{}{}}000000000``{{{d{b}}b}f}{hf}{jf}{ll}{nn}{{{A`{c}}}{{A`{c}}}{AbAd}}{hh}{jj}{{ce}Af{}{}}0000`{jb}{hb}1`{Ah{{B`{{Al{Aj}}An}}}}{{}l}{{}h}{{}j}{Bb{{B`{AdAh}}}}{{n{d{b}}}{{B`{{Bf{}{{Bd{c}}}}Bh}}}Ad}{{n{d{b}}}{{B`{{A`{c}}Bh}}}Ad}{c{{B`{l}}}Bj}{{ll}Bl}{{nn}Bl}{{hh}Bl}{{jj}Bl}`{Bbb}{{lBn}{{B`{AfC`}}}}{{nBn}{{B`{AfC`}}}}{{{A`{c}}Bn}{{B`{AfC`}}}{CbAd}}{{hBn}{{B`{AfC`}}}}{{jBn}{{B`{AfC`}}}}{cc{}}0000{Ajn}{hBl}{jBl}{{{A`{c}}}lAd}{h{{d{b}}}}{j{{d{b}}}}``{jb}{ce{}{}}0000{AdBb}{hb}{jBb}{Ah{{B`{BbAh}}}}{AdAh}`{{}h}{{}j}{{nBb{d{b}}}{{B`{AdBh}}}};:69``;:{{{Cd{c}}}{{B`{{Cf{le}}Ch}}}CjAd}{{{Cd{c}}}{{B`{hCh}}}Cj}1{{{Cd{c}}}{{B`{jCh}}}Cj}{{{Cd{c}}n}{{B`{{Cf{le}}Ch}}}CjAd}{Aj{{B`{{Cf{lc}}Ch}}}Ad}{Aj{{B`{{A`{c}}Ch}}}Ad}{{Ajlc}{{B`{ClCn}}}Ad}{{Ajc}{{B`{ClCn}}}Ad}{{Aj{A`{c}}}{{B`{ClCn}}}Ad}?{jb}`{{Adn{d{b}}}Cl}{{{Bf{}{{Bd{c}}}}n{d{b}}}ClAd}{{{A`{c}}{d{b}}}ClAd}{{lc}B`D`}{{nc}B`D`}{{{A`{c}}e}B`{AdDb}D`}{{hlc}AfAd}{{jlc}AfAd}{{hlc}AfBf}{{jlc}AfBf}{{Ajn}Af}{hb}<`{ce{}{}}0000{c{{B`{e}}}{}{}}000000000{cDd{}}0000``{{cle}{{B`{ClCn}}}DfAd}0{{cnle}{{B`{ClCn}}}DfAd}`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{{}Dh}{{}Dj}{{}Dl}{{}Dn}{{}E`}{{}Eb}{{}Ed}{{}Ef}{{}Eh}{{}Ej}{{}El}{{}En}{{}F`}{{}Fb}{{}Fd}{{}Ff}{{}Fh}{{}Fj}{{}Fl}{{}Fn}{{}G`}{{}Gb}{{}Gd}{{}Gf}{{}Gh}{{}Gj}{{}Gl}{{}Gn}{{}H`}{{}Hb}{{}Hd}{{}Hf}```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{{DhDh}Dh}{{DjDj}Dj}{{DlDl}Dl}{{DnDn}Dn}{{E`E`}E`}{{EbEb}Eb}{{EdEd}Ed}{{EfEf}Ef}{{EhEh}Eh}{{EjEj}Ej}{{ElEl}El}{{EnEn}En}{{F`F`}F`}{{FbFb}Fb}{{FdFd}Fd}{{FfFf}Ff}{{FhFh}Fh}{{FjFj}Fj}{{FlFl}Fl}{{FnFn}Fn}{{G`G`}G`}{{GbGb}Gb}{{GdGd}Gd}{{GfGf}Gf}{{GhGh}Gh}{{GjGj}Gj}{{GlGl}Gl}{{GnGn}Gn}{{H`H`}H`}{{HbHb}Hb}{{HdHd}Hd}{{HfHf}Hf}{{DhDh}Af}{{DjDj}Af}{{DlDl}Af}{{DnDn}Af}{{E`E`}Af}{{EbEb}Af}{{EdEd}Af}{{EfEf}Af}{{EhEh}Af}{{EjEj}Af}{{ElEl}Af}{{EnEn}Af}{{F`F`}Af}{{FbFb}Af}{{FdFd}Af}{{FfFf}Af}{{FhFh}Af}{{FjFj}Af}{{FlFl}Af}{{FnFn}Af}{{G`G`}Af}{{GbGb}Af}{{GdGd}Af}{{GfGf}Af}{{GhGh}Af}{{GjGj}Af}{{GlGl}Af}{{GnGn}Af}{{H`H`}Af}{{HbHb}Af}{{HdHd}Af}{{HfHf}Af}{{DhDh}Dh}{{DjDj}Dj}{{DlDl}Dl}{{DnDn}Dn}{{E`E`}E`}{{EbEb}Eb}{{EdEd}Ed}{{EfEf}Ef}{{EhEh}Eh}{{EjEj}Ej}{{ElEl}El}{{EnEn}En}{{F`F`}F`}{{FbFb}Fb}{{FdFd}Fd}{{FfFf}Ff}{{FhFh}Fh}{{FjFj}Fj}{{FlFl}Fl}{{FnFn}Fn}{{G`G`}G`}{{GbGb}Gb}{{GdGd}Gd}{{GfGf}Gf}{{GhGh}Gh}{{GjGj}Gj}{{GlGl}Gl}{{GnGn}Gn}{{H`H`}H`}{{HbHb}Hb}{{HdHd}Hd}{{HfHf}Hf}{{DhDh}Af}{{DjDj}Af}{{DlDl}Af}{{DnDn}Af}{{E`E`}Af}{{EbEb}Af}{{EdEd}Af}{{EfEf}Af}{{EhEh}Af}{{EjEj}Af}{{ElEl}Af}{{EnEn}Af}{{F`F`}Af}{{FbFb}Af}{{FdFd}Af}{{FfFf}Af}{{FhFh}Af}{{FjFj}Af}{{FlFl}Af}{{FnFn}Af}{{G`G`}Af}{{GbGb}Af}{{GdGd}Af}{{GfGf}Af}{{GhGh}Af}{{GjGj}Af}{{GlGl}Af}{{GnGn}Af}{{H`H`}Af}{{HbHb}Af}{{HdHd}Af}{{HfHf}Af}```{Dhf}{Djf}{Dlb}{DnBb}{E`f}{EbBb}{Edb}{Efb}{Ehf}{EjBb}{Elb}{Enf}{F`f}{Fbf}{Fdb}{FfBb}{Fhf}{Fjf}{FlHh}{Fnb}{G`f}{Gbf}{Gdf}{Gfb}{GhBb}{GjBb}{Glf}{Gnb}{H`b}{HbHh}{HdBb}{Hfb}{{DhDh}Dh}{{DjDj}Dj}{{DlDl}Dl}{{DnDn}Dn}{{E`E`}E`}{{EbEb}Eb}{{EdEd}Ed}{{EfEf}Ef}{{EhEh}Eh}{{EjEj}Ej}{{ElEl}El}{{EnEn}En}{{F`F`}F`}{{FbFb}Fb}{{FdFd}Fd}{{FfFf}Ff}{{FhFh}Fh}{{FjFj}Fj}{{FlFl}Fl}{{FnFn}Fn}{{G`G`}G`}{{GbGb}Gb}{{GdGd}Gd}{{GfGf}Gf}{{GhGh}Gh}{{GjGj}Gj}{{GlGl}Gl}{{GnGn}Gn}{{H`H`}H`}{{HbHb}Hb}{{HdHd}Hd}{{HfHf}Hf}{{DhDh}Af}{{DjDj}Af}{{DlDl}Af}{{DnDn}Af}{{E`E`}Af}{{EbEb}Af}{{EdEd}Af}{{EfEf}Af}{{EhEh}Af}{{EjEj}Af}{{ElEl}Af}{{EnEn}Af}{{F`F`}Af}{{FbFb}Af}{{FdFd}Af}{{FfFf}Af}{{FhFh}Af}{{FjFj}Af}{{FlFl}Af}{{FnFn}Af}{{G`G`}Af}{{GbGb}Af}{{GdGd}Af}{{GfGf}Af}{{GhGh}Af}{{GjGj}Af}{{GlGl}Af}{{GnGn}Af}{{H`H`}Af}{{HbHb}Af}{{HdHd}Af}{{HfHf}Af}```````{ce{}{}}0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000`````````````````````````````````````````````````````````````````````````````````````````````````````````{HjHj}{HlHl}{HnHn}{I`I`}{IbIb}{IdId}{IfIf}{IhIh}{IjIj}{IlIl}{InIn}{J`J`}{JbJb}{JdJd}{JfJf}{JhJh}{JjJj}{JlJl}{JnJn}{K`K`}{KbKb}{KdKd}{KfKf}{KhKh}{KjKj}{KlKl}{KnKn}{L`L`}{LbLb}{LdLd}{LfLf}{LhLh}{LjLj}{LlLl}{LnLn}{M`M`}{MbMb}{MdMd}{MfMf}{MhMh}{MjMj}{MlMl}{MnMn}{N`N`}{NbNb}{NdNd}{NfNf}{NhNh}{NjNj}{NlNl}{NnNn}{O`O`}{ObOb}{OdOd}{OfOf}{OhOh}{OjOj}{OlOl}{OnOn}{A@`A@`}{A@bA@b}{A@dA@d}{A@fA@f}{A@hA@h}{A@jA@j}{A@lA@l}{A@nA@n}{AA`AA`}{AAbAAb}{AAdAAd}{AAfAAf}{AAhAAh}{AAjAAj}{AAlAAl}{AAnAAn}{AB`AB`}{ABbABb}{ABdABd}{ABfABf}{ABhABh}{ABjABj}{ABlABl}{ABnABn}{AC`AC`}{ACbACb}{ACdACd}{ACfACf}{AChACh}{ACjACj}{AClACl}{ACnACn}{AD`AD`}{ADbADb}{ADdADd}{ADfADf}{ADhADh}{ADjADj}{ADlADl}{ADnADn}{AE`AE`}{AEbAEb}{AEdAEd}{AEfAEf}{AEhAEh}{AEjAEj}{AElAEl}{AEnAEn}{AF`AF`}{AFbAFb}{AFdAFd}{AFfAFf}{AFhAFh}{AFjAFj}{AFlAFl}{AFnAFn}{AG`AG`}{AGbAGb}{AGdAGd}{AGfAGf}{AGhAGh}{AGjAGj}{AGlAGl}{AGnAGn}{AH`AH`}{AHbAHb}{AHdAHd}{AHfAHf}{AHhAHh}{AHjAHj}{AHlAHl}{AHnAHn}{AI`AI`}{AIbAIb}{AIdAId}{AIfAIf}{AIhAIh}{AIjAIj}{AIlAIl}{AInAIn}{AJ`AJ`}{AJbAJb}{AJdAJd}{AJfAJf}{AJhAJh}{AJjAJj}{AJlAJl}{AJnAJn}{AK`AK`}{AKbAKb}{AKdAKd}{AKfAKf}{AKhAKh}{AKjAKj}{AKlAKl}{AKnAKn}{AL`AL`}{ALbALb}{ALdALd}{ALfALf}{ALhALh}{ALjALj}{ALlALl}{ALnALn}{AM`AM`}{AMbAMb}{AMdAMd}{AMfAMf}{AMhAMh}{AMjAMj}{AMlAMl}{AMnAMn}{AN`AN`}{ANbANb}{ANdANd}{ANfANf}{ANhANh}{ANjANj}{ANlANl}{ANnANn}{AO`AO`}{AObAOb}{AOdAOd}{AOfAOf}{AOhAOh}{AOjAOj}{AOlAOl}{AOnAOn}{B@`B@`}{B@bB@b}{B@dB@d}{B@fB@f}{B@hB@h}{B@jB@j}{B@lB@l}{B@nB@n}{BA`BA`}{BAbBAb}{BAdBAd}{BAfBAf}{BAhBAh}{BAjBAj}{BAlBAl}{BAnBAn}{BB`BB`}{BBbBBb}{BBdBBd}{BBfBBf}{BBhBBh}{BBjBBj}{BBlBBl}{BBnBBn}{BC`BC`}{BCbBCb}{BCdBCd}{BCfBCf}{BChBCh}{BCjBCj}{BClBCl}{BCnBCn}{BD`BD`}{BDbBDb}{BDdBDd}{BDfBDf}{BDhBDh}{BDjBDj}{BDlBDl}{BDnBDn}{BE`BE`}{BEbBEb}{BEdBEd}{BEfBEf}{BEhBEh}{BEjBEj}{BElBEl}{BEnBEn}{BF`BF`}{BFbBFb}{BFdBFd}{BFfBFf}{BFhBFh}{BFjBFj}{BFlBFl}{BFnBFn}{BG`BG`}{BGbBGb}{BGdBGd}{BGfBGf}{BGhBGh}{BGjBGj}{BGlBGl}{BGnBGn}{BH`BH`}{BHbBHb}{BHdBHd}{BHfBHf}{BHhBHh}{BHjBHj}{BHlBHl}{BHnBHn}{BI`BI`}{BIbBIb}{BIdBId}{BIfBIf}{BIhBIh}{BIjBIj}{BIlBIl}{BInBIn}{BJ`BJ`}{BJbBJb}{BJdBJd}{BJfBJf}{BJhBJh}{BJjBJj}{BJlBJl}{BJnBJn}{BK`BK`}{BKbBKb}{BKdBKd}{BKfBKf}{BKhBKh}{BKjBKj}{BKlBKl}{BKnBKn}{BL`BL`}{BLbBLb}{BLdBLd}{BLfBLf}{BLhBLh}{BLjBLj}{BLlBLl}{BLnBLn}{BM`BM`}{BMbBMb}{BMdBMd}{BMfBMf}{BMhBMh}{BMjBMj}{BMlBMl}{DhDh}{BMnBMn}{DjDj}{BN`BN`}{BNbBNb}{DlDl}{DnDn}{BNdBNd}{BNfBNf}{BNhBNh}{BNjBNj}{BNlBNl}{BNnBNn}{BO`BO`}{BObBOb}{BOdBOd}{BOfBOf}{BOhBOh}{BOjBOj}{BOlBOl}{BOnBOn}{C@`C@`}{C@bC@b}{C@dC@d}{E`E`}{C@fC@f}{C@hC@h}{C@jC@j}{C@lC@l}{C@nC@n}{EbEb}{CA`CA`}{CAbCAb}{CAdCAd}{CAfCAf}{CAhCAh}{CAjCAj}{EdEd}{CAlCAl}{CAnCAn}{CB`CB`}{EfEf}{EhEh}{CBbCBb}{CBdCBd}{CBfCBf}{CBhCBh}{CBjCBj}{CBlCBl}{CBnCBn}{CC`CC`}{CCbCCb}{CCdCCd}{CCfCCf}{CChCCh}{CCjCCj}{CClCCl}{CCnCCn}{CD`CD`}{CDbCDb}{CDdCDd}{CDfCDf}{CDhCDh}{CDjCDj}{CDlCDl}{CDnCDn}{CE`CE`}{CEbCEb}{CEdCEd}{CEfCEf}{CEhCEh}{CEjCEj}{CElCEl}{CEnCEn}{CF`CF`}{EjEj}{CFbCFb}{CFdCFd}{CFfCFf}{CFhCFh}{CFjCFj}{CFlCFl}{ElEl}{CFnCFn}{CG`CG`}{CGbCGb}{CGdCGd}{CGfCGf}{CGhCGh}{CGjCGj}{CGlCGl}{EnEn}{CGnCGn}{CH`CH`}{CHbCHb}{CHdCHd}{F`F`}{CHfCHf}{CHhCHh}{CHjCHj}{CHlCHl}{CHnCHn}{CI`CI`}{FbFb}{CIbCIb}{CIdCId}{FdFd}{CIfCIf}{CIhCIh}{FfFf}{FhFh}{CIjCIj}{CIlCIl}{CInCIn}{CJ`CJ`}{CJbCJb}{CJdCJd}{CJfCJf}{CJhCJh}{CJjCJj}{CJlCJl}{CJnCJn}{FjFj}{CK`CK`}{CKbCKb}{CKdCKd}{FlFl}{CKfCKf}{FnFn}{CKhCKh}{CKjCKj}{G`G`}{CKlCKl}{CKnCKn}{CL`CL`}{CLbCLb}{CLdCLd}{CLfCLf}{CLhCLh}{CLjCLj}{GbGb}{CLlCLl}{CLnCLn}{CM`CM`}{GdGd}{CMbCMb}{CMdCMd}{GfGf}{GhGh}{CMfCMf}{CMhCMh}{GjGj}{CMjCMj}{CMlCMl}{GlGl}{CMnCMn}{CN`CN`}{GnGn}{CNbCNb}{CNdCNd}{CNfCNf}{CNhCNh}{CNjCNj}{CNlCNl}{CNnCNn}{CO`CO`}{CObCOb}{COdCOd}{COfCOf}{H`H`}{HbHb}{COhCOh}{COjCOj}{COlCOl}{COnCOn}{HdHd}{D@`D@`}{HfHf}{D@bD@b}{D@dD@d}{D@fD@f}{D@hD@h}{D@jD@j}{D@lD@l}{D@nD@n}{DA`DA`}{DAbDAb}{DAdDAd}{DAfDAf}{DAhDAh}{DAjDAj}{DAlDAl}{{ce}Af{}{}}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000````{{DhDh}DAn}{{DjDj}DAn}{{DlDl}DAn}{{DnDn}DAn}{{E`E`}DAn}{{EbEb}DAn}{{EdEd}DAn}{{EfEf}DAn}{{EhEh}DAn}{{EjEj}DAn}{{ElEl}DAn}{{EnEn}DAn}{{F`F`}DAn}{{FbFb}DAn}{{FdFd}DAn}{{FfFf}DAn}{{FhFh}DAn}{{FjFj}DAn}{{FlFl}DAn}{{FnFn}DAn}{{G`G`}DAn}{{GbGb}DAn}{{GdGd}DAn}{{GfGf}DAn}{{GhGh}DAn}{{GjGj}DAn}{{GlGl}DAn}{{GnGn}DAn}{{H`H`}DAn}{{HbHb}DAn}{{HdHd}DAn}{{HfHf}DAn}````````````````{DhDh}{DjDj}{DlDl}{DnDn}{E`E`}{EbEb}{EdEd}{EfEf}{EhEh}{EjEj}{ElEl}{EnEn}{F`F`}{FbFb}{FdFd}{FfFf}{FhFh}{FjFj}{FlFl}{FnFn}{G`G`}{GbGb}{GdGd}{GfGf}{GhGh}{GjGj}{GlGl}{GnGn}{H`H`}{HbHb}{HdHd}{HfHf}```````{{DhDh}Bl}{{DjDj}Bl}{{DlDl}Bl}{{DnDn}Bl}{{E`E`}Bl}{{EbEb}Bl}{{EdEd}Bl}{{EfEf}Bl}{{EhEh}Bl}{{EjEj}Bl}{{ElEl}Bl}{{EnEn}Bl}{{F`F`}Bl}{{FbFb}Bl}{{FdFd}Bl}{{FfFf}Bl}{{FhFh}Bl}{{FjFj}Bl}{{FlFl}Bl}{{FnFn}Bl}{{G`G`}Bl}{{GbGb}Bl}{{GdGd}Bl}{{GfGf}Bl}{{GhGh}Bl}{{GjGj}Bl}{{GlGl}Bl}{{GnGn}Bl}{{H`H`}Bl}{{HbHb}Bl}{{HdHd}Bl}{{HfHf}Bl}````````````````````````````````````````````````````````````````````````````````{{}Hl}{{}Hn}{{}I`}{{}Ib}{{}Id}{{}If}{{}Ih}{{}Ij}{{}Il}{{}In}{{}J`}{{}Jb}{{}Jd}{{}Jf}{{}Jh}{{}Jj}{{}Jl}{{}Jn}{{}K`}{{}Kb}{{}Kd}{{}Kf}{{}Kh}{{}Kj}{{}Kl}{{}Kn}{{}L`}{{}Lb}{{}Ld}{{}Lf}{{}Lh}{{}Lj}{{}Ll}{{}Ln}{{}M`}{{}Mb}{{}Md}{{}Mf}{{}Mh}{{}Mj}{{}Ml}{{}Mn}{{}N`}{{}Nb}{{}Nd}{{}Nf}{{}Nh}{{}Nj}{{}Nl}{{}Nn}{{}O`}{{}Ob}{{}Od}{{}Of}{{}Oh}{{}Oj}{{}Ol}{{}On}{{}A@`}{{}A@b}{{}A@d}{{}A@f}{{}A@h}{{}A@j}{{}A@l}{{}A@n}{{}AA`}{{}AAb}{{}AAd}{{}AAf}{{}AAh}{{}AAj}{{}AAl}{{}AAn}{{}AB`}{{}ABb}{{}ABd}{{}ABf}{{}ABh}{{}ABj}{{}ABl}{{}ABn}{{}AC`}{{}ACb}{{}ACd}{{}ACf}{{}ACh}{{}ACj}{{}ACl}{{}ACn}{{}AD`}{{}ADb}{{}ADd}{{}ADf}{{}ADh}{{}ADj}{{}ADl}{{}ADn}{{}AE`}{{}AEb}{{}AEd}{{}AEf}{{}AEh}{{}AEj}{{}AEl}{{}AEn}{{}AF`}{{}AFb}{{}AFd}{{}AFf}{{}AFh}{{}AFj}{{}AFl}{{}AFn}{{}AG`}{{}AGb}{{}AGd}{{}AGf}{{}AGh}{{}AGj}{{}AGl}{{}AGn}{{}AH`}{{}AHb}{{}AHd}{{}AHf}{{}AHh}{{}AHj}{{}AHl}{{}AHn}{{}AI`}{{}AIb}{{}AId}{{}AIf}{{}AIh}{{}AIj}{{}AIl}{{}AIn}{{}AJ`}{{}AJb}{{}AJd}{{}AJf}{{}AJh}{{}AJj}{{}AJl}{{}AJn}{{}AK`}{{}AKb}{{}AKd}{{}AKf}{{}AKh}{{}AKj}{{}AKl}{{}AKn}{{}AL`}{{}ALb}{{}ALd}{{}ALf}{{}ALh}{{}ALj}{{}ALl}{{}ALn}{{}AM`}{{}AMb}{{}AMd}{{}AMf}{{}AMh}{{}AMj}{{}AMl}{{}AMn}{{}AN`}{{}ANb}{{}ANd}{{}ANf}{{}ANh}{{}ANj}{{}ANl}{{}ANn}{{}AO`}{{}AOb}{{}AOd}{{}AOf}{{}AOh}{{}AOj}{{}AOl}{{}AOn}{{}B@`}{{}B@b}{{}B@d}{{}B@f}{{}B@h}{{}B@j}{{}B@l}{{}B@n}{{}BA`}{{}BAb}{{}BAd}{{}BAf}{{}BAh}{{}BAj}{{}BAl}{{}BAn}{{}BB`}{{}BBb}{{}BBd}{{}BBf}{{}BBh}{{}BBj}{{}BBl}{{}BBn}{{}BC`}{{}BCb}{{}BCd}{{}BCf}{{}BCh}{{}BCj}{{}BCl}{{}BCn}{{}BD`}{{}BDb}{{}BDd}{{}BDf}{{}BDh}{{}BDj}{{}BDl}{{}BDn}{{}BE`}{{}BEb}{{}BEd}{{}BEf}{{}BEh}{{}BEj}{{}BEl}{{}BEn}{{}BF`}{{}BFb}{{}BFd}{{}BFf}{{}BFh}{{}BFj}{{}BFl}{{}BFn}{{}BG`}{{}BGb}{{}BGd}{{}BGf}{{}BGh}{{}BGj}{{}BGl}{{}BGn}{{}BH`}{{}BHb}{{}BHd}{{}BHf}{{}BHh}{{}BHj}{{}BHl}{{}BHn}{{}BI`}{{}BIb}{{}BId}{{}BIf}{{}BIh}{{}BIj}{{}BIl}{{}BIn}{{}BJ`}{{}BJb}{{}BJd}{{}BJf}{{}BJh}{{}BJj}{{}BJl}{{}BJn}{{}BK`}{{}BKb}{{}BKd}{{}BKf}{{}BKh}{{}BKj}{{}BKl}{{}BKn}{{}BL`}{{}BLb}{{}BLd}{{}BLf}{{}BLh}{{}BLj}{{}BLl}{{}BLn}{{}BM`}{{}BMb}{{}BMd}{{}BMf}{{}BMh}{{}BMj}{{}BMl}{{}Dh}{{}BMn}{{}Dj}{{}BN`}{{}BNb}{{}Dl}{{}Dn}{{}BNd}{{}BNf}{{}BNh}{{}BNj}{{}BNl}{{}BNn}{{}BO`}{{}BOb}{{}BOd}{{}BOf}{{}BOh}{{}BOj}{{}BOl}{{}BOn}{{}C@`}{{}C@b}{{}C@d}{{}E`}{{}C@f}{{}C@h}{{}C@j}{{}C@l}{{}C@n}{{}Eb}{{}CA`}{{}CAb}{{}CAd}{{}CAf}{{}CAh}{{}CAj}{{}Ed}{{}CAl}{{}CAn}{{}CB`}{{}Ef}{{}Eh}{{}CBb}{{}CBd}{{}CBf}{{}CBh}{{}CBj}{{}CBl}{{}CBn}{{}CC`}{{}CCb}{{}CCd}{{}CCf}{{}CCh}{{}CCj}{{}CCl}{{}CCn}{{}CD`}{{}CDb}{{}CDd}{{}CDf}{{}CDh}{{}CDj}{{}CDl}{{}CDn}{{}CE`}{{}CEb}{{}CEd}{{}CEf}{{}CEh}{{}CEj}{{}CEl}{{}CEn}{{}CF`}{{}Ej}{{}CFb}{{}CFd}{{}CFf}{{}CFh}{{}CFj}{{}CFl}{{}El}{{}CFn}{{}CG`}{{}CGb}{{}CGd}{{}CGf}{{}CGh}{{}CGj}{{}CGl}{{}En}{{}CGn}{{}CH`}{{}CHb}{{}CHd}{{}F`}{{}CHf}{{}CHh}{{}CHj}{{}CHl}{{}CHn}{{}CI`}{{}Fb}{{}CIb}{{}CId}{{}Fd}{{}CIf}{{}CIh}{{}Ff}{{}Fh}{{}CIj}{{}CIl}{{}CIn}{{}CJ`}{{}CJb}{{}CJd}{{}CJf}{{}CJh}{{}CJj}{{}CJl}{{}CJn}{{}Fj}{{}CK`}{{}CKb}{{}CKd}{{}Fl}{{}CKf}{{}Fn}{{}CKh}{{}CKj}{{}G`}{{}CKl}{{}CKn}{{}CL`}{{}CLb}{{}CLd}{{}CLf}{{}CLh}{{}CLj}{{}Gb}{{}CLl}{{}CLn}{{}CM`}{{}Gd}{{}CMb}{{}CMd}{{}Gf}{{}Gh}{{}CMf}{{}CMh}{{}Gj}{{}CMj}{{}CMl}{{}Gl}{{}CMn}{{}CN`}{{}Gn}{{}CNb}{{}CNd}{{}CNf}{{}CNh}{{}CNj}{{}CNl}{{}CNn}{{}CO`}{{}COb}{{}COd}{{}COf}{{}H`}{{}Hb}{{}COh}{{}COj}{{}COl}{{}COn}{{}Hd}{{}D@`}{{}Hf}{{}D@b}{{}D@d}{{}D@f}{{}D@h}{{}D@j}{{}D@l}{{}D@n}{{}DA`}{{}DAb}{{}DAd}{{}DAf}{{}DAh}{{}DAj}{{}DAl}{Bb{{B`{HjAh}}}}`````````````{{n{d{b}}}{{B`{HlBh}}}}{{n{d{b}}}{{B`{HnBh}}}}{{n{d{b}}}{{B`{I`Bh}}}}{{n{d{b}}}{{B`{IbBh}}}}{{n{d{b}}}{{B`{IdBh}}}}{{n{d{b}}}{{B`{IfBh}}}}{{n{d{b}}}{{B`{IhBh}}}}{{n{d{b}}}{{B`{IjBh}}}}{{n{d{b}}}{{B`{IlBh}}}}{{n{d{b}}}{{B`{InBh}}}}{{n{d{b}}}{{B`{J`Bh}}}}{{n{d{b}}}{{B`{JbBh}}}}{{n{d{b}}}{{B`{JdBh}}}}{{n{d{b}}}{{B`{JfBh}}}}{{n{d{b}}}{{B`{JhBh}}}}{{n{d{b}}}{{B`{JjBh}}}}{{n{d{b}}}{{B`{JlBh}}}}{{n{d{b}}}{{B`{JnBh}}}}{{n{d{b}}}{{B`{K`Bh}}}}{{n{d{b}}}{{B`{KbBh}}}}{{n{d{b}}}{{B`{KdBh}}}}{{n{d{b}}}{{B`{KfBh}}}}{{n{d{b}}}{{B`{KhBh}}}}{{n{d{b}}}{{B`{KjBh}}}}{{n{d{b}}}{{B`{KlBh}}}}{{n{d{b}}}{{B`{KnBh}}}}{{n{d{b}}}{{B`{L`Bh}}}}{{n{d{b}}}{{B`{LbBh}}}}{{n{d{b}}}{{B`{LdBh}}}}{{n{d{b}}}{{B`{LfBh}}}}{{n{d{b}}}{{B`{LhBh}}}}{{n{d{b}}}{{B`{LjBh}}}}{{n{d{b}}}{{B`{LlBh}}}}{{n{d{b}}}{{B`{LnBh}}}}{{n{d{b}}}{{B`{M`Bh}}}}{{n{d{b}}}{{B`{MbBh}}}}{{n{d{b}}}{{B`{MdBh}}}}{{n{d{b}}}{{B`{MfBh}}}}{{n{d{b}}}{{B`{MhBh}}}}{{n{d{b}}}{{B`{MjBh}}}}{{n{d{b}}}{{B`{MlBh}}}}{{n{d{b}}}{{B`{MnBh}}}}{{n{d{b}}}{{B`{N`Bh}}}}{{n{d{b}}}{{B`{NbBh}}}}{{n{d{b}}}{{B`{NdBh}}}}{{n{d{b}}}{{B`{NfBh}}}}{{n{d{b}}}{{B`{NhBh}}}}{{n{d{b}}}{{B`{NjBh}}}}{{n{d{b}}}{{B`{NlBh}}}}{{n{d{b}}}{{B`{NnBh}}}}{{n{d{b}}}{{B`{O`Bh}}}}{{n{d{b}}}{{B`{ObBh}}}}{{n{d{b}}}{{B`{OdBh}}}}{{n{d{b}}}{{B`{OfBh}}}}{{n{d{b}}}{{B`{OhBh}}}}{{n{d{b}}}{{B`{OjBh}}}}{{n{d{b}}}{{B`{OlBh}}}}{{n{d{b}}}{{B`{OnBh}}}}{{n{d{b}}}{{B`{A@`Bh}}}}{{n{d{b}}}{{B`{A@bBh}}}}{{n{d{b}}}{{B`{A@dBh}}}}{{n{d{b}}}{{B`{A@fBh}}}}{{n{d{b}}}{{B`{A@hBh}}}}{{n{d{b}}}{{B`{A@jBh}}}}{{n{d{b}}}{{B`{A@lBh}}}}{{n{d{b}}}{{B`{A@nBh}}}}{{n{d{b}}}{{B`{AA`Bh}}}}{{n{d{b}}}{{B`{AAbBh}}}}{{n{d{b}}}{{B`{AAdBh}}}}{{n{d{b}}}{{B`{AAfBh}}}}{{n{d{b}}}{{B`{AAhBh}}}}{{n{d{b}}}{{B`{AAjBh}}}}{{n{d{b}}}{{B`{AAlBh}}}}{{n{d{b}}}{{B`{AAnBh}}}}{{n{d{b}}}{{B`{AB`Bh}}}}{{n{d{b}}}{{B`{ABbBh}}}}{{n{d{b}}}{{B`{ABdBh}}}}{{n{d{b}}}{{B`{ABfBh}}}}{{n{d{b}}}{{B`{ABhBh}}}}{{n{d{b}}}{{B`{ABjBh}}}}{{n{d{b}}}{{B`{ABlBh}}}}{{n{d{b}}}{{B`{ABnBh}}}}{{n{d{b}}}{{B`{AC`Bh}}}}{{n{d{b}}}{{B`{ACbBh}}}}{{n{d{b}}}{{B`{ACdBh}}}}{{n{d{b}}}{{B`{ACfBh}}}}{{n{d{b}}}{{B`{AChBh}}}}{{n{d{b}}}{{B`{ACjBh}}}}{{n{d{b}}}{{B`{AClBh}}}}{{n{d{b}}}{{B`{ACnBh}}}}{{n{d{b}}}{{B`{AD`Bh}}}}{{n{d{b}}}{{B`{ADbBh}}}}{{n{d{b}}}{{B`{ADdBh}}}}{{n{d{b}}}{{B`{ADfBh}}}}{{n{d{b}}}{{B`{ADhBh}}}}{{n{d{b}}}{{B`{ADjBh}}}}{{n{d{b}}}{{B`{ADlBh}}}}{{n{d{b}}}{{B`{ADnBh}}}}{{n{d{b}}}{{B`{AE`Bh}}}}{{n{d{b}}}{{B`{AEbBh}}}}{{n{d{b}}}{{B`{AEdBh}}}}{{n{d{b}}}{{B`{AEfBh}}}}{{n{d{b}}}{{B`{AEhBh}}}}{{n{d{b}}}{{B`{AEjBh}}}}{{n{d{b}}}{{B`{AElBh}}}}{{n{d{b}}}{{B`{AEnBh}}}}{{n{d{b}}}{{B`{AF`Bh}}}}{{n{d{b}}}{{B`{AFbBh}}}}{{n{d{b}}}{{B`{AFdBh}}}}{{n{d{b}}}{{B`{AFfBh}}}}{{n{d{b}}}{{B`{AFhBh}}}}{{n{d{b}}}{{B`{AFjBh}}}}{{n{d{b}}}{{B`{AFlBh}}}}{{n{d{b}}}{{B`{AFnBh}}}}{{n{d{b}}}{{B`{AG`Bh}}}}{{n{d{b}}}{{B`{AGbBh}}}}{{n{d{b}}}{{B`{AGdBh}}}}{{n{d{b}}}{{B`{AGfBh}}}}{{n{d{b}}}{{B`{AGhBh}}}}{{n{d{b}}}{{B`{AGjBh}}}}{{n{d{b}}}{{B`{AGlBh}}}}{{n{d{b}}}{{B`{AGnBh}}}}{{n{d{b}}}{{B`{AH`Bh}}}}{{n{d{b}}}{{B`{AHbBh}}}}{{n{d{b}}}{{B`{AHdBh}}}}{{n{d{b}}}{{B`{AHfBh}}}}{{n{d{b}}}{{B`{AHhBh}}}}{{n{d{b}}}{{B`{AHjBh}}}}{{n{d{b}}}{{B`{AHlBh}}}}{{n{d{b}}}{{B`{AHnBh}}}}{{n{d{b}}}{{B`{AI`Bh}}}}{{n{d{b}}}{{B`{AIbBh}}}}{{n{d{b}}}{{B`{AIdBh}}}}{{n{d{b}}}{{B`{AIfBh}}}}{{n{d{b}}}{{B`{AIhBh}}}}{{n{d{b}}}{{B`{AIjBh}}}}{{n{d{b}}}{{B`{AIlBh}}}}{{n{d{b}}}{{B`{AInBh}}}}{{n{d{b}}}{{B`{AJ`Bh}}}}{{n{d{b}}}{{B`{AJbBh}}}}{{n{d{b}}}{{B`{AJdBh}}}}{{n{d{b}}}{{B`{AJfBh}}}}{{n{d{b}}}{{B`{AJhBh}}}}{{n{d{b}}}{{B`{AJjBh}}}}{{n{d{b}}}{{B`{AJlBh}}}}{{n{d{b}}}{{B`{AJnBh}}}}{{n{d{b}}}{{B`{AK`Bh}}}}{{n{d{b}}}{{B`{AKbBh}}}}{{n{d{b}}}{{B`{AKdBh}}}}{{n{d{b}}}{{B`{AKfBh}}}}{{n{d{b}}}{{B`{AKhBh}}}}{{n{d{b}}}{{B`{AKjBh}}}}{{n{d{b}}}{{B`{AKlBh}}}}{{n{d{b}}}{{B`{AKnBh}}}}{{n{d{b}}}{{B`{AL`Bh}}}}{{n{d{b}}}{{B`{ALbBh}}}}{{n{d{b}}}{{B`{ALdBh}}}}{{n{d{b}}}{{B`{ALfBh}}}}{{n{d{b}}}{{B`{ALhBh}}}}{{n{d{b}}}{{B`{ALjBh}}}}{{n{d{b}}}{{B`{ALlBh}}}}{{n{d{b}}}{{B`{ALnBh}}}}{{n{d{b}}}{{B`{AM`Bh}}}}{{n{d{b}}}{{B`{AMbBh}}}}{{n{d{b}}}{{B`{AMdBh}}}}{{n{d{b}}}{{B`{AMfBh}}}}{{n{d{b}}}{{B`{AMhBh}}}}{{n{d{b}}}{{B`{AMjBh}}}}{{n{d{b}}}{{B`{AMlBh}}}}{{n{d{b}}}{{B`{AMnBh}}}}{{n{d{b}}}{{B`{AN`Bh}}}}{{n{d{b}}}{{B`{ANbBh}}}}{{n{d{b}}}{{B`{ANdBh}}}}{{n{d{b}}}{{B`{ANfBh}}}}{{n{d{b}}}{{B`{ANhBh}}}}{{n{d{b}}}{{B`{ANjBh}}}}{{n{d{b}}}{{B`{ANlBh}}}}{{n{d{b}}}{{B`{ANnBh}}}}{{n{d{b}}}{{B`{AO`Bh}}}}{{n{d{b}}}{{B`{AObBh}}}}{{n{d{b}}}{{B`{AOdBh}}}}{{n{d{b}}}{{B`{AOfBh}}}}{{n{d{b}}}{{B`{AOhBh}}}}{{n{d{b}}}{{B`{AOjBh}}}}{{n{d{b}}}{{B`{AOlBh}}}}{{n{d{b}}}{{B`{AOnBh}}}}{{n{d{b}}}{{B`{B@`Bh}}}}{{n{d{b}}}{{B`{B@bBh}}}}{{n{d{b}}}{{B`{B@dBh}}}}{{n{d{b}}}{{B`{B@fBh}}}}{{n{d{b}}}{{B`{B@hBh}}}}{{n{d{b}}}{{B`{B@jBh}}}}{{n{d{b}}}{{B`{B@lBh}}}}{{n{d{b}}}{{B`{B@nBh}}}}{{n{d{b}}}{{B`{BA`Bh}}}}{{n{d{b}}}{{B`{BAbBh}}}}{{n{d{b}}}{{B`{BAdBh}}}}{{n{d{b}}}{{B`{BAfBh}}}}{{n{d{b}}}{{B`{BAhBh}}}}{{n{d{b}}}{{B`{BAjBh}}}}{{n{d{b}}}{{B`{BAlBh}}}}{{n{d{b}}}{{B`{BAnBh}}}}{{n{d{b}}}{{B`{BB`Bh}}}}{{n{d{b}}}{{B`{BBbBh}}}}{{n{d{b}}}{{B`{BBdBh}}}}{{n{d{b}}}{{B`{BBfBh}}}}{{n{d{b}}}{{B`{BBhBh}}}}{{n{d{b}}}{{B`{BBjBh}}}}{{n{d{b}}}{{B`{BBlBh}}}}{{n{d{b}}}{{B`{BBnBh}}}}{{n{d{b}}}{{B`{BC`Bh}}}}{{n{d{b}}}{{B`{BCbBh}}}}{{n{d{b}}}{{B`{BCdBh}}}}{{n{d{b}}}{{B`{BCfBh}}}}{{n{d{b}}}{{B`{BChBh}}}}{{n{d{b}}}{{B`{BCjBh}}}}{{n{d{b}}}{{B`{BClBh}}}}{{n{d{b}}}{{B`{BCnBh}}}}{{n{d{b}}}{{B`{BD`Bh}}}}{{n{d{b}}}{{B`{BDbBh}}}}{{n{d{b}}}{{B`{BDdBh}}}}{{n{d{b}}}{{B`{BDfBh}}}}{{n{d{b}}}{{B`{BDhBh}}}}{{n{d{b}}}{{B`{BDjBh}}}}{{n{d{b}}}{{B`{BDlBh}}}}{{n{d{b}}}{{B`{BDnBh}}}}{{n{d{b}}}{{B`{BE`Bh}}}}{{n{d{b}}}{{B`{BEbBh}}}}{{n{d{b}}}{{B`{BEdBh}}}}{{n{d{b}}}{{B`{BEfBh}}}}{{n{d{b}}}{{B`{BEhBh}}}}{{n{d{b}}}{{B`{BEjBh}}}}{{n{d{b}}}{{B`{BElBh}}}}{{n{d{b}}}{{B`{BEnBh}}}}{{n{d{b}}}{{B`{BF`Bh}}}}{{n{d{b}}}{{B`{BFbBh}}}}{{n{d{b}}}{{B`{BFdBh}}}}{{n{d{b}}}{{B`{BFfBh}}}}{{n{d{b}}}{{B`{BFhBh}}}}{{n{d{b}}}{{B`{BFjBh}}}}{{n{d{b}}}{{B`{BFlBh}}}}{{n{d{b}}}{{B`{BFnBh}}}}{{n{d{b}}}{{B`{BG`Bh}}}}{{n{d{b}}}{{B`{BGbBh}}}}{{n{d{b}}}{{B`{BGdBh}}}}{{n{d{b}}}{{B`{BGfBh}}}}{{n{d{b}}}{{B`{BGhBh}}}}{{n{d{b}}}{{B`{BGjBh}}}}{{n{d{b}}}{{B`{BGlBh}}}}{{n{d{b}}}{{B`{BGnBh}}}}{{n{d{b}}}{{B`{BH`Bh}}}}{{n{d{b}}}{{B`{BHbBh}}}}{{n{d{b}}}{{B`{BHdBh}}}}{{n{d{b}}}{{B`{BHfBh}}}}{{n{d{b}}}{{B`{BHhBh}}}}{{n{d{b}}}{{B`{BHjBh}}}}{{n{d{b}}}{{B`{BHlBh}}}}{{n{d{b}}}{{B`{BHnBh}}}}{{n{d{b}}}{{B`{BI`Bh}}}}{{n{d{b}}}{{B`{BIbBh}}}}{{n{d{b}}}{{B`{BIdBh}}}}{{n{d{b}}}{{B`{BIfBh}}}}{{n{d{b}}}{{B`{BIhBh}}}}{{n{d{b}}}{{B`{BIjBh}}}}{{n{d{b}}}{{B`{BIlBh}}}}{{n{d{b}}}{{B`{BInBh}}}}{{n{d{b}}}{{B`{BJ`Bh}}}}{{n{d{b}}}{{B`{BJbBh}}}}{{n{d{b}}}{{B`{BJdBh}}}}{{n{d{b}}}{{B`{BJfBh}}}}{{n{d{b}}}{{B`{BJhBh}}}}{{n{d{b}}}{{B`{BJjBh}}}}{{n{d{b}}}{{B`{BJlBh}}}}{{n{d{b}}}{{B`{BJnBh}}}}{{n{d{b}}}{{B`{BK`Bh}}}}{{n{d{b}}}{{B`{BKbBh}}}}{{n{d{b}}}{{B`{BKdBh}}}}{{n{d{b}}}{{B`{BKfBh}}}}{{n{d{b}}}{{B`{BKhBh}}}}{{n{d{b}}}{{B`{BKjBh}}}}{{n{d{b}}}{{B`{BKlBh}}}}{{n{d{b}}}{{B`{BKnBh}}}}{{n{d{b}}}{{B`{BL`Bh}}}}{{n{d{b}}}{{B`{BLbBh}}}}{{n{d{b}}}{{B`{BLdBh}}}}{{n{d{b}}}{{B`{BLfBh}}}}{{n{d{b}}}{{B`{BLhBh}}}}{{n{d{b}}}{{B`{BLjBh}}}}{{n{d{b}}}{{B`{BLlBh}}}}{{n{d{b}}}{{B`{BLnBh}}}}{{n{d{b}}}{{B`{BM`Bh}}}}{{n{d{b}}}{{B`{BMbBh}}}}{{n{d{b}}}{{B`{BMdBh}}}}{{n{d{b}}}{{B`{BMfBh}}}}{{n{d{b}}}{{B`{BMhBh}}}}{{n{d{b}}}{{B`{BMjBh}}}}{c{{B`{Hj}}}Bj}{c{{B`{Hl}}}Bj}{c{{B`{Hn}}}Bj}{c{{B`{I`}}}Bj}{c{{B`{Ib}}}Bj}{c{{B`{Id}}}Bj}{c{{B`{If}}}Bj}{c{{B`{Ih}}}Bj}{c{{B`{Ij}}}Bj}{c{{B`{Il}}}Bj}{c{{B`{In}}}Bj}{c{{B`{J`}}}Bj}{c{{B`{Jb}}}Bj}{c{{B`{Jd}}}Bj}{c{{B`{Jf}}}Bj}{c{{B`{Jh}}}Bj}{c{{B`{Jj}}}Bj}{c{{B`{Jl}}}Bj}{c{{B`{Jn}}}Bj}{c{{B`{K`}}}Bj}{c{{B`{Kb}}}Bj}{c{{B`{Kd}}}Bj}{c{{B`{Kf}}}Bj}{c{{B`{Kh}}}Bj}{c{{B`{Kj}}}Bj}{c{{B`{Kl}}}Bj}{c{{B`{Kn}}}Bj}{c{{B`{L`}}}Bj}{c{{B`{Lb}}}Bj}{c{{B`{Ld}}}Bj}{c{{B`{Lf}}}Bj}{c{{B`{Lh}}}Bj}{c{{B`{Lj}}}Bj}{c{{B`{Ll}}}Bj}{c{{B`{Ln}}}Bj}{c{{B`{M`}}}Bj}{c{{B`{Mb}}}Bj}{c{{B`{Md}}}Bj}{c{{B`{Mf}}}Bj}{c{{B`{Mh}}}Bj}{c{{B`{Mj}}}Bj}{c{{B`{Ml}}}Bj}{c{{B`{Mn}}}Bj}{c{{B`{N`}}}Bj}{c{{B`{Nb}}}Bj}{c{{B`{Nd}}}Bj}{c{{B`{Nf}}}Bj}{c{{B`{Nh}}}Bj}{c{{B`{Nj}}}Bj}{c{{B`{Nl}}}Bj}{c{{B`{Nn}}}Bj}{c{{B`{O`}}}Bj}{c{{B`{Ob}}}Bj}{c{{B`{Od}}}Bj}{c{{B`{Of}}}Bj}{c{{B`{Oh}}}Bj}{c{{B`{Oj}}}Bj}{c{{B`{Ol}}}Bj}{c{{B`{On}}}Bj}{c{{B`{A@`}}}Bj}{c{{B`{A@b}}}Bj}{c{{B`{A@d}}}Bj}{c{{B`{A@f}}}Bj}{c{{B`{A@h}}}Bj}{c{{B`{A@j}}}Bj}{c{{B`{A@l}}}Bj}{c{{B`{A@n}}}Bj}{c{{B`{AA`}}}Bj}{c{{B`{AAb}}}Bj}{c{{B`{AAd}}}Bj}{c{{B`{AAf}}}Bj}{c{{B`{AAh}}}Bj}{c{{B`{AAj}}}Bj}{c{{B`{AAl}}}Bj}{c{{B`{AAn}}}Bj}{c{{B`{AB`}}}Bj}{c{{B`{ABb}}}Bj}{c{{B`{ABd}}}Bj}{c{{B`{ABf}}}Bj}{c{{B`{ABh}}}Bj}{c{{B`{ABj}}}Bj}{c{{B`{ABl}}}Bj}{c{{B`{ABn}}}Bj}{c{{B`{AC`}}}Bj}{c{{B`{ACb}}}Bj}{c{{B`{ACd}}}Bj}{c{{B`{ACf}}}Bj}{c{{B`{ACh}}}Bj}{c{{B`{ACj}}}Bj}{c{{B`{ACl}}}Bj}{c{{B`{ACn}}}Bj}{c{{B`{AD`}}}Bj}{c{{B`{ADb}}}Bj}{c{{B`{ADd}}}Bj}{c{{B`{ADf}}}Bj}{c{{B`{ADh}}}Bj}{c{{B`{ADj}}}Bj}{c{{B`{ADl}}}Bj}{c{{B`{ADn}}}Bj}{c{{B`{AE`}}}Bj}{c{{B`{AEb}}}Bj}{c{{B`{AEd}}}Bj}{c{{B`{AEf}}}Bj}{c{{B`{AEh}}}Bj}{c{{B`{AEj}}}Bj}{c{{B`{AEl}}}Bj}{c{{B`{AEn}}}Bj}{c{{B`{AF`}}}Bj}{c{{B`{AFb}}}Bj}{c{{B`{AFd}}}Bj}{c{{B`{AFf}}}Bj}{c{{B`{AFh}}}Bj}{c{{B`{AFj}}}Bj}{c{{B`{AFl}}}Bj}{c{{B`{AFn}}}Bj}{c{{B`{AG`}}}Bj}{c{{B`{AGb}}}Bj}{c{{B`{AGd}}}Bj}{c{{B`{AGf}}}Bj}{c{{B`{AGh}}}Bj}{c{{B`{AGj}}}Bj}{c{{B`{AGl}}}Bj}{c{{B`{AGn}}}Bj}{c{{B`{AH`}}}Bj}{c{{B`{AHb}}}Bj}{c{{B`{AHd}}}Bj}{c{{B`{AHf}}}Bj}{c{{B`{AHh}}}Bj}{c{{B`{AHj}}}Bj}{c{{B`{AHl}}}Bj}{c{{B`{AHn}}}Bj}{c{{B`{AI`}}}Bj}{c{{B`{AIb}}}Bj}{c{{B`{AId}}}Bj}{c{{B`{AIf}}}Bj}{c{{B`{AIh}}}Bj}{c{{B`{AIj}}}Bj}{c{{B`{AIl}}}Bj}{c{{B`{AIn}}}Bj}{c{{B`{AJ`}}}Bj}{c{{B`{AJb}}}Bj}{c{{B`{AJd}}}Bj}{c{{B`{AJf}}}Bj}{c{{B`{AJh}}}Bj}{c{{B`{AJj}}}Bj}{c{{B`{AJl}}}Bj}{c{{B`{AJn}}}Bj}{c{{B`{AK`}}}Bj}{c{{B`{AKb}}}Bj}{c{{B`{AKd}}}Bj}{c{{B`{AKf}}}Bj}{c{{B`{AKh}}}Bj}{c{{B`{AKj}}}Bj}{c{{B`{AKl}}}Bj}{c{{B`{AKn}}}Bj}{c{{B`{AL`}}}Bj}{c{{B`{ALb}}}Bj}{c{{B`{ALd}}}Bj}{c{{B`{ALf}}}Bj}{c{{B`{ALh}}}Bj}{c{{B`{ALj}}}Bj}{c{{B`{ALl}}}Bj}{c{{B`{ALn}}}Bj}{c{{B`{AM`}}}Bj}{c{{B`{AMb}}}Bj}{c{{B`{AMd}}}Bj}{c{{B`{AMf}}}Bj}{c{{B`{AMh}}}Bj}{c{{B`{AMj}}}Bj}{c{{B`{AMl}}}Bj}{c{{B`{AMn}}}Bj}{c{{B`{AN`}}}Bj}{c{{B`{ANb}}}Bj}{c{{B`{ANd}}}Bj}{c{{B`{ANf}}}Bj}{c{{B`{ANh}}}Bj}{c{{B`{ANj}}}Bj}{c{{B`{ANl}}}Bj}{c{{B`{ANn}}}Bj}{c{{B`{AO`}}}Bj}{c{{B`{AOb}}}Bj}{c{{B`{AOd}}}Bj}{c{{B`{AOf}}}Bj}{c{{B`{AOh}}}Bj}{c{{B`{AOj}}}Bj}{c{{B`{AOl}}}Bj}{c{{B`{AOn}}}Bj}{c{{B`{B@`}}}Bj}{c{{B`{B@b}}}Bj}{c{{B`{B@d}}}Bj}{c{{B`{B@f}}}Bj}{c{{B`{B@h}}}Bj}{c{{B`{B@j}}}Bj}{c{{B`{B@l}}}Bj}{c{{B`{B@n}}}Bj}{c{{B`{BA`}}}Bj}{c{{B`{BAb}}}Bj}{c{{B`{BAd}}}Bj}{c{{B`{BAf}}}Bj}{c{{B`{BAh}}}Bj}{c{{B`{BAj}}}Bj}{c{{B`{BAl}}}Bj}{c{{B`{BAn}}}Bj}{c{{B`{BB`}}}Bj}{c{{B`{BBb}}}Bj}{c{{B`{BBd}}}Bj}{c{{B`{BBf}}}Bj}{c{{B`{BBh}}}Bj}{c{{B`{BBj}}}Bj}{c{{B`{BBl}}}Bj}{c{{B`{BBn}}}Bj}{c{{B`{BC`}}}Bj}{c{{B`{BCb}}}Bj}{c{{B`{BCd}}}Bj}{c{{B`{BCf}}}Bj}{c{{B`{BCh}}}Bj}{c{{B`{BCj}}}Bj}{c{{B`{BCl}}}Bj}{c{{B`{BCn}}}Bj}{c{{B`{BD`}}}Bj}{c{{B`{BDb}}}Bj}{c{{B`{BDd}}}Bj}{c{{B`{BDf}}}Bj}{c{{B`{BDh}}}Bj}{c{{B`{BDj}}}Bj}{c{{B`{BDl}}}Bj}{c{{B`{BDn}}}Bj}{c{{B`{BE`}}}Bj}{c{{B`{BEb}}}Bj}{c{{B`{BEd}}}Bj}{c{{B`{BEf}}}Bj}{c{{B`{BEh}}}Bj}{c{{B`{BEj}}}Bj}{c{{B`{BEl}}}Bj}{c{{B`{BEn}}}Bj}{c{{B`{BF`}}}Bj}{c{{B`{BFb}}}Bj}{c{{B`{BFd}}}Bj}{c{{B`{BFf}}}Bj}{c{{B`{BFh}}}Bj}{c{{B`{BFj}}}Bj}{c{{B`{BFl}}}Bj}{c{{B`{BFn}}}Bj}{c{{B`{BG`}}}Bj}{c{{B`{BGb}}}Bj}{c{{B`{BGd}}}Bj}{c{{B`{BGf}}}Bj}{c{{B`{BGh}}}Bj}{c{{B`{BGj}}}Bj}{c{{B`{BGl}}}Bj}{c{{B`{BGn}}}Bj}{c{{B`{BH`}}}Bj}{c{{B`{BHb}}}Bj}{c{{B`{BHd}}}Bj}{c{{B`{BHf}}}Bj}{c{{B`{BHh}}}Bj}{c{{B`{BHj}}}Bj}{c{{B`{BHl}}}Bj}{c{{B`{BHn}}}Bj}{c{{B`{BI`}}}Bj}{c{{B`{BIb}}}Bj}{c{{B`{BId}}}Bj}{c{{B`{BIf}}}Bj}{c{{B`{BIh}}}Bj}{c{{B`{BIj}}}Bj}{c{{B`{BIl}}}Bj}{c{{B`{BIn}}}Bj}{c{{B`{BJ`}}}Bj}{c{{B`{BJb}}}Bj}{c{{B`{BJd}}}Bj}{c{{B`{BJf}}}Bj}{c{{B`{BJh}}}Bj}{c{{B`{BJj}}}Bj}{c{{B`{BJl}}}Bj}{c{{B`{BJn}}}Bj}{c{{B`{BK`}}}Bj}{c{{B`{BKb}}}Bj}{c{{B`{BKd}}}Bj}{c{{B`{BKf}}}Bj}{c{{B`{BKh}}}Bj}{c{{B`{BKj}}}Bj}{c{{B`{BKl}}}Bj}{c{{B`{BKn}}}Bj}{c{{B`{BL`}}}Bj}{c{{B`{BLb}}}Bj}{c{{B`{BLd}}}Bj}{c{{B`{BLf}}}Bj}{c{{B`{BLh}}}Bj}{c{{B`{BLj}}}Bj}{c{{B`{BLl}}}Bj}{c{{B`{BLn}}}Bj}{c{{B`{BM`}}}Bj}{c{{B`{BMb}}}Bj}{c{{B`{BMd}}}Bj}{c{{B`{BMf}}}Bj}{c{{B`{BMh}}}Bj}{c{{B`{BMj}}}Bj}{c{{B`{BMl}}}Bj}{c{{B`{Dh}}}Bj}{c{{B`{BMn}}}Bj}{c{{B`{Dj}}}Bj}{c{{B`{BN`}}}Bj}{c{{B`{BNb}}}Bj}{c{{B`{Dl}}}Bj}{c{{B`{Dn}}}Bj}{c{{B`{BNd}}}Bj}{c{{B`{BNf}}}Bj}{c{{B`{BNh}}}Bj}{c{{B`{BNj}}}Bj}{c{{B`{BNl}}}Bj}{c{{B`{BNn}}}Bj}{c{{B`{BO`}}}Bj}{c{{B`{BOb}}}Bj}{c{{B`{BOd}}}Bj}{c{{B`{BOf}}}Bj}{c{{B`{BOh}}}Bj}{c{{B`{BOj}}}Bj}{c{{B`{BOl}}}Bj}{c{{B`{BOn}}}Bj}{c{{B`{C@`}}}Bj}{c{{B`{C@b}}}Bj}{c{{B`{C@d}}}Bj}{c{{B`{E`}}}Bj}{c{{B`{C@f}}}Bj}{c{{B`{C@h}}}Bj}{c{{B`{C@j}}}Bj}{c{{B`{C@l}}}Bj}{c{{B`{C@n}}}Bj}{c{{B`{Eb}}}Bj}{c{{B`{CA`}}}Bj}{c{{B`{CAb}}}Bj}{c{{B`{CAd}}}Bj}{c{{B`{CAf}}}Bj}{c{{B`{CAh}}}Bj}{c{{B`{CAj}}}Bj}{c{{B`{Ed}}}Bj}{c{{B`{CAl}}}Bj}{c{{B`{CAn}}}Bj}{c{{B`{CB`}}}Bj}{c{{B`{Ef}}}Bj}{c{{B`{Eh}}}Bj}{c{{B`{CBb}}}Bj}{c{{B`{CBd}}}Bj}{c{{B`{CBf}}}Bj}{c{{B`{CBh}}}Bj}{c{{B`{CBj}}}Bj}{c{{B`{CBl}}}Bj}{c{{B`{CBn}}}Bj}{c{{B`{CC`}}}Bj}{c{{B`{CCb}}}Bj}{c{{B`{CCd}}}Bj}{c{{B`{CCf}}}Bj}{c{{B`{CCh}}}Bj}{c{{B`{CCj}}}Bj}{c{{B`{CCl}}}Bj}{c{{B`{CCn}}}Bj}{c{{B`{CD`}}}Bj}{c{{B`{CDb}}}Bj}{c{{B`{CDd}}}Bj}{c{{B`{CDf}}}Bj}{c{{B`{CDh}}}Bj}{c{{B`{CDj}}}Bj}{c{{B`{CDl}}}Bj}{c{{B`{CDn}}}Bj}{c{{B`{CE`}}}Bj}{c{{B`{CEb}}}Bj}{c{{B`{CEd}}}Bj}{c{{B`{CEf}}}Bj}{c{{B`{CEh}}}Bj}{c{{B`{CEj}}}Bj}{c{{B`{CEl}}}Bj}{c{{B`{CEn}}}Bj}{c{{B`{CF`}}}Bj}{c{{B`{Ej}}}Bj}{c{{B`{CFb}}}Bj}{c{{B`{CFd}}}Bj}{c{{B`{CFf}}}Bj}{c{{B`{CFh}}}Bj}{c{{B`{CFj}}}Bj}{c{{B`{CFl}}}Bj}{c{{B`{El}}}Bj}{c{{B`{CFn}}}Bj}{c{{B`{CG`}}}Bj}{c{{B`{CGb}}}Bj}{c{{B`{CGd}}}Bj}{c{{B`{CGf}}}Bj}{c{{B`{CGh}}}Bj}{c{{B`{CGj}}}Bj}{c{{B`{CGl}}}Bj}{c{{B`{En}}}Bj}{c{{B`{CGn}}}Bj}{c{{B`{CH`}}}Bj}{c{{B`{CHb}}}Bj}{c{{B`{CHd}}}Bj}{c{{B`{F`}}}Bj}{c{{B`{CHf}}}Bj}{c{{B`{CHh}}}Bj}{c{{B`{CHj}}}Bj}{c{{B`{CHl}}}Bj}{c{{B`{CHn}}}Bj}{c{{B`{CI`}}}Bj}{c{{B`{Fb}}}Bj}{c{{B`{CIb}}}Bj}{c{{B`{CId}}}Bj}{c{{B`{Fd}}}Bj}{c{{B`{CIf}}}Bj}{c{{B`{CIh}}}Bj}{c{{B`{Ff}}}Bj}{c{{B`{Fh}}}Bj}{c{{B`{CIj}}}Bj}{c{{B`{CIl}}}Bj}{c{{B`{CIn}}}Bj}{c{{B`{CJ`}}}Bj}{c{{B`{CJb}}}Bj}{c{{B`{CJd}}}Bj}{c{{B`{CJf}}}Bj}{c{{B`{CJh}}}Bj}{c{{B`{CJj}}}Bj}{c{{B`{CJl}}}Bj}{c{{B`{CJn}}}Bj}{c{{B`{Fj}}}Bj}{c{{B`{CK`}}}Bj}{c{{B`{CKb}}}Bj}{c{{B`{CKd}}}Bj}{c{{B`{Fl}}}Bj}{c{{B`{CKf}}}Bj}{c{{B`{Fn}}}Bj}{c{{B`{CKh}}}Bj}{c{{B`{CKj}}}Bj}{c{{B`{G`}}}Bj}{c{{B`{CKl}}}Bj}{c{{B`{CKn}}}Bj}{c{{B`{CL`}}}Bj}{c{{B`{CLb}}}Bj}{c{{B`{CLd}}}Bj}{c{{B`{CLf}}}Bj}{c{{B`{CLh}}}Bj}{c{{B`{CLj}}}Bj}{c{{B`{Gb}}}Bj}{c{{B`{CLl}}}Bj}{c{{B`{CLn}}}Bj}{c{{B`{CM`}}}Bj}{c{{B`{Gd}}}Bj}{c{{B`{CMb}}}Bj}{c{{B`{CMd}}}Bj}{c{{B`{Gf}}}Bj}{c{{B`{Gh}}}Bj}{c{{B`{CMf}}}Bj}{c{{B`{CMh}}}Bj}{c{{B`{Gj}}}Bj}{c{{B`{CMj}}}Bj}{c{{B`{CMl}}}Bj}{c{{B`{Gl}}}Bj}{c{{B`{CMn}}}Bj}{c{{B`{CN`}}}Bj}{c{{B`{Gn}}}Bj}{c{{B`{CNb}}}Bj}{c{{B`{CNd}}}Bj}{c{{B`{CNf}}}Bj}{c{{B`{CNh}}}Bj}{c{{B`{CNj}}}Bj}{c{{B`{CNl}}}Bj}{c{{B`{CNn}}}Bj}{c{{B`{CO`}}}Bj}{c{{B`{COb}}}Bj}{c{{B`{COd}}}Bj}{c{{B`{COf}}}Bj}{c{{B`{H`}}}Bj}{c{{B`{Hb}}}Bj}{c{{B`{COh}}}Bj}{c{{B`{COj}}}Bj}{c{{B`{COl}}}Bj}{c{{B`{COn}}}Bj}{c{{B`{Hd}}}Bj}{c{{B`{D@`}}}Bj}{c{{B`{Hf}}}Bj}{c{{B`{D@b}}}Bj}{c{{B`{D@d}}}Bj}{c{{B`{D@f}}}Bj}{c{{B`{D@h}}}Bj}{c{{B`{D@j}}}Bj}{c{{B`{D@l}}}Bj}{c{{B`{D@n}}}Bj}{c{{B`{DA`}}}Bj}{c{{B`{DAb}}}Bj}{c{{B`{DAd}}}Bj}{c{{B`{DAf}}}Bj}{c{{B`{DAh}}}Bj}{c{{B`{DAj}}}Bj}{c{{B`{DAl}}}Bj}``````````````{{DhDh}Dh}{{DjDj}Dj}{{DlDl}Dl}{{DnDn}Dn}{{E`E`}E`}{{EbEb}Eb}{{EdEd}Ed}{{EfEf}Ef}{{EhEh}Eh}{{EjEj}Ej}{{ElEl}El}{{EnEn}En}{{F`F`}F`}{{FbFb}Fb}{{FdFd}Fd}{{FfFf}Ff}{{FhFh}Fh}{{FjFj}Fj}{{FlFl}Fl}{{FnFn}Fn}{{G`G`}G`}{{GbGb}Gb}{{GdGd}Gd}{{GfGf}Gf}{{GhGh}Gh}{{GjGj}Gj}{{GlGl}Gl}{{GnGn}Gn}{{H`H`}H`}{{HbHb}Hb}{{HdHd}Hd}{{HfHf}Hf}````````````````````````{{}Dh}{{}Dj}{{}Dl}{{}Dn}{{}E`}{{}Eb}{{}Ed}{{}Ef}{{}Eh}{{}Ej}{{}El}{{}En}{{}F`}{{}Fb}{{}Fd}{{}Ff}{{}Fh}{{}Fj}{{}Fl}{{}Fn}{{}G`}{{}Gb}{{}Gd}{{}Gf}{{}Gh}{{}Gj}{{}Gl}{{}Gn}{{}H`}{{}Hb}{{}Hd}{{}Hf}````````````````{{HjHj}Bl}{{HlHl}Bl}{{HnHn}Bl}{{I`I`}Bl}{{IbIb}Bl}{{IdId}Bl}{{IfIf}Bl}{{IhIh}Bl}{{IjIj}Bl}{{IlIl}Bl}{{InIn}Bl}{{J`J`}Bl}{{JbJb}Bl}{{JdJd}Bl}{{JfJf}Bl}{{JhJh}Bl}{{JjJj}Bl}{{JlJl}Bl}{{JnJn}Bl}{{K`K`}Bl}{{KbKb}Bl}{{KdKd}Bl}{{KfKf}Bl}{{KhKh}Bl}{{KjKj}Bl}{{KlKl}Bl}{{KnKn}Bl}{{L`L`}Bl}{{LbLb}Bl}{{LdLd}Bl}{{LfLf}Bl}{{LhLh}Bl}{{LjLj}Bl}{{LlLl}Bl}{{LnLn}Bl}{{M`M`}Bl}{{MbMb}Bl}{{MdMd}Bl}{{MfMf}Bl}{{MhMh}Bl}{{MjMj}Bl}{{MlMl}Bl}{{MnMn}Bl}{{N`N`}Bl}{{NbNb}Bl}{{NdNd}Bl}{{NfNf}Bl}{{NhNh}Bl}{{NjNj}Bl}{{NlNl}Bl}{{NnNn}Bl}{{O`O`}Bl}{{ObOb}Bl}{{OdOd}Bl}{{OfOf}Bl}{{OhOh}Bl}{{OjOj}Bl}{{OlOl}Bl}{{OnOn}Bl}{{A@`A@`}Bl}{{A@bA@b}Bl}{{A@dA@d}Bl}{{A@fA@f}Bl}{{A@hA@h}Bl}{{A@jA@j}Bl}{{A@lA@l}Bl}{{A@nA@n}Bl}{{AA`AA`}Bl}{{AAbAAb}Bl}{{AAdAAd}Bl}{{AAfAAf}Bl}{{AAhAAh}Bl}{{AAjAAj}Bl}{{AAlAAl}Bl}{{AAnAAn}Bl}{{AB`AB`}Bl}{{ABbABb}Bl}{{ABdABd}Bl}{{ABfABf}Bl}{{ABhABh}Bl}{{ABjABj}Bl}{{ABlABl}Bl}{{ABnABn}Bl}{{AC`AC`}Bl}{{ACbACb}Bl}{{ACdACd}Bl}{{ACfACf}Bl}{{AChACh}Bl}{{ACjACj}Bl}{{AClACl}Bl}{{ACnACn}Bl}{{AD`AD`}Bl}{{ADbADb}Bl}{{ADdADd}Bl}{{ADfADf}Bl}{{ADhADh}Bl}{{ADjADj}Bl}{{ADlADl}Bl}{{ADnADn}Bl}{{AE`AE`}Bl}{{AEbAEb}Bl}{{AEdAEd}Bl}{{AEfAEf}Bl}{{AEhAEh}Bl}{{AEjAEj}Bl}{{AElAEl}Bl}{{AEnAEn}Bl}{{AF`AF`}Bl}{{AFbAFb}Bl}{{AFdAFd}Bl}{{AFfAFf}Bl}{{AFhAFh}Bl}{{AFjAFj}Bl}{{AFlAFl}Bl}{{AFnAFn}Bl}{{AG`AG`}Bl}{{AGbAGb}Bl}{{AGdAGd}Bl}{{AGfAGf}Bl}{{AGhAGh}Bl}{{AGjAGj}Bl}{{AGlAGl}Bl}{{AGnAGn}Bl}{{AH`AH`}Bl}{{AHbAHb}Bl}{{AHdAHd}Bl}{{AHfAHf}Bl}{{AHhAHh}Bl}{{AHjAHj}Bl}{{AHlAHl}Bl}{{AHnAHn}Bl}{{AI`AI`}Bl}{{AIbAIb}Bl}{{AIdAId}Bl}{{AIfAIf}Bl}{{AIhAIh}Bl}{{AIjAIj}Bl}{{AIlAIl}Bl}{{AInAIn}Bl}{{AJ`AJ`}Bl}{{AJbAJb}Bl}{{AJdAJd}Bl}{{AJfAJf}Bl}{{AJhAJh}Bl}{{AJjAJj}Bl}{{AJlAJl}Bl}{{AJnAJn}Bl}{{AK`AK`}Bl}{{AKbAKb}Bl}{{AKdAKd}Bl}{{AKfAKf}Bl}{{AKhAKh}Bl}{{AKjAKj}Bl}{{AKlAKl}Bl}{{AKnAKn}Bl}{{AL`AL`}Bl}{{ALbALb}Bl}{{ALdALd}Bl}{{ALfALf}Bl}{{ALhALh}Bl}{{ALjALj}Bl}{{ALlALl}Bl}{{ALnALn}Bl}{{AM`AM`}Bl}{{AMbAMb}Bl}{{AMdAMd}Bl}{{AMfAMf}Bl}{{AMhAMh}Bl}{{AMjAMj}Bl}{{AMlAMl}Bl}{{AMnAMn}Bl}{{AN`AN`}Bl}{{ANbANb}Bl}{{ANdANd}Bl}{{ANfANf}Bl}{{ANhANh}Bl}{{ANjANj}Bl}{{ANlANl}Bl}{{ANnANn}Bl}{{AO`AO`}Bl}{{AObAOb}Bl}{{AOdAOd}Bl}{{AOfAOf}Bl}{{AOhAOh}Bl}{{AOjAOj}Bl}{{AOlAOl}Bl}{{AOnAOn}Bl}{{B@`B@`}Bl}{{B@bB@b}Bl}{{B@dB@d}Bl}{{B@fB@f}Bl}{{B@hB@h}Bl}{{B@jB@j}Bl}{{B@lB@l}Bl}{{B@nB@n}Bl}{{BA`BA`}Bl}{{BAbBAb}Bl}{{BAdBAd}Bl}{{BAfBAf}Bl}{{BAhBAh}Bl}{{BAjBAj}Bl}{{BAlBAl}Bl}{{BAnBAn}Bl}{{BB`BB`}Bl}{{BBbBBb}Bl}{{BBdBBd}Bl}{{BBfBBf}Bl}{{BBhBBh}Bl}{{BBjBBj}Bl}{{BBlBBl}Bl}{{BBnBBn}Bl}{{BC`BC`}Bl}{{BCbBCb}Bl}{{BCdBCd}Bl}{{BCfBCf}Bl}{{BChBCh}Bl}{{BCjBCj}Bl}{{BClBCl}Bl}{{BCnBCn}Bl}{{BD`BD`}Bl}{{BDbBDb}Bl}{{BDdBDd}Bl}{{BDfBDf}Bl}{{BDhBDh}Bl}{{BDjBDj}Bl}{{BDlBDl}Bl}{{BDnBDn}Bl}{{BE`BE`}Bl}{{BEbBEb}Bl}{{BEdBEd}Bl}{{BEfBEf}Bl}{{BEhBEh}Bl}{{BEjBEj}Bl}{{BElBEl}Bl}{{BEnBEn}Bl}{{BF`BF`}Bl}{{BFbBFb}Bl}{{BFdBFd}Bl}{{BFfBFf}Bl}{{BFhBFh}Bl}{{BFjBFj}Bl}{{BFlBFl}Bl}{{BFnBFn}Bl}{{BG`BG`}Bl}{{BGbBGb}Bl}{{BGdBGd}Bl}{{BGfBGf}Bl}{{BGhBGh}Bl}{{BGjBGj}Bl}{{BGlBGl}Bl}{{BGnBGn}Bl}{{BH`BH`}Bl}{{BHbBHb}Bl}{{BHdBHd}Bl}{{BHfBHf}Bl}{{BHhBHh}Bl}{{BHjBHj}Bl}{{BHlBHl}Bl}{{BHnBHn}Bl}{{BI`BI`}Bl}{{BIbBIb}Bl}{{BIdBId}Bl}{{BIfBIf}Bl}{{BIhBIh}Bl}{{BIjBIj}Bl}{{BIlBIl}Bl}{{BInBIn}Bl}{{BJ`BJ`}Bl}{{BJbBJb}Bl}{{BJdBJd}Bl}{{BJfBJf}Bl}{{BJhBJh}Bl}{{BJjBJj}Bl}{{BJlBJl}Bl}{{BJnBJn}Bl}{{BK`BK`}Bl}{{BKbBKb}Bl}{{BKdBKd}Bl}{{BKfBKf}Bl}{{BKhBKh}Bl}{{BKjBKj}Bl}{{BKlBKl}Bl}{{BKnBKn}Bl}{{BL`BL`}Bl}{{BLbBLb}Bl}{{BLdBLd}Bl}{{BLfBLf}Bl}{{BLhBLh}Bl}{{BLjBLj}Bl}{{BLlBLl}Bl}{{BLnBLn}Bl}{{BM`BM`}Bl}{{BMbBMb}Bl}{{BMdBMd}Bl}{{BMfBMf}Bl}{{BMhBMh}Bl}{{BMjBMj}Bl}{{BMlBMl}Bl}{{DhDh}Bl}{{BMnBMn}Bl}{{DjDj}Bl}{{BN`BN`}Bl}{{BNbBNb}Bl}{{DlDl}Bl}{{DnDn}Bl}{{BNdBNd}Bl}{{BNfBNf}Bl}{{BNhBNh}Bl}{{BNjBNj}Bl}{{BNlBNl}Bl}{{BNnBNn}Bl}{{BO`BO`}Bl}{{BObBOb}Bl}{{BOdBOd}Bl}{{BOfBOf}Bl}{{BOhBOh}Bl}{{BOjBOj}Bl}{{BOlBOl}Bl}{{BOnBOn}Bl}{{C@`C@`}Bl}{{C@bC@b}Bl}{{C@dC@d}Bl}{{E`E`}Bl}{{C@fC@f}Bl}{{C@hC@h}Bl}{{C@jC@j}Bl}{{C@lC@l}Bl}{{C@nC@n}Bl}{{EbEb}Bl}{{CA`CA`}Bl}{{CAbCAb}Bl}{{CAdCAd}Bl}{{CAfCAf}Bl}{{CAhCAh}Bl}{{CAjCAj}Bl}{{EdEd}Bl}{{CAlCAl}Bl}{{CAnCAn}Bl}{{CB`CB`}Bl}{{EfEf}Bl}{{EhEh}Bl}{{CBbCBb}Bl}{{CBdCBd}Bl}{{CBfCBf}Bl}{{CBhCBh}Bl}{{CBjCBj}Bl}{{CBlCBl}Bl}{{CBnCBn}Bl}{{CC`CC`}Bl}{{CCbCCb}Bl}{{CCdCCd}Bl}{{CCfCCf}Bl}{{CChCCh}Bl}{{CCjCCj}Bl}{{CClCCl}Bl}{{CCnCCn}Bl}{{CD`CD`}Bl}{{CDbCDb}Bl}{{CDdCDd}Bl}{{CDfCDf}Bl}{{CDhCDh}Bl}{{CDjCDj}Bl}{{CDlCDl}Bl}{{CDnCDn}Bl}{{CE`CE`}Bl}{{CEbCEb}Bl}{{CEdCEd}Bl}{{CEfCEf}Bl}{{CEhCEh}Bl}{{CEjCEj}Bl}{{CElCEl}Bl}{{CEnCEn}Bl}{{CF`CF`}Bl}{{EjEj}Bl}{{CFbCFb}Bl}{{CFdCFd}Bl}{{CFfCFf}Bl}{{CFhCFh}Bl}{{CFjCFj}Bl}{{CFlCFl}Bl}{{ElEl}Bl}{{CFnCFn}Bl}{{CG`CG`}Bl}{{CGbCGb}Bl}{{CGdCGd}Bl}{{CGfCGf}Bl}{{CGhCGh}Bl}{{CGjCGj}Bl}{{CGlCGl}Bl}{{EnEn}Bl}{{CGnCGn}Bl}{{CH`CH`}Bl}{{CHbCHb}Bl}{{CHdCHd}Bl}{{F`F`}Bl}{{CHfCHf}Bl}{{CHhCHh}Bl}{{CHjCHj}Bl}{{CHlCHl}Bl}{{CHnCHn}Bl}{{CI`CI`}Bl}{{FbFb}Bl}{{CIbCIb}Bl}{{CIdCId}Bl}{{FdFd}Bl}{{CIfCIf}Bl}{{CIhCIh}Bl}{{FfFf}Bl}{{FhFh}Bl}{{CIjCIj}Bl}{{CIlCIl}Bl}{{CInCIn}Bl}{{CJ`CJ`}Bl}{{CJbCJb}Bl}{{CJdCJd}Bl}{{CJfCJf}Bl}{{CJhCJh}Bl}{{CJjCJj}Bl}{{CJlCJl}Bl}{{CJnCJn}Bl}{{FjFj}Bl}{{CK`CK`}Bl}{{CKbCKb}Bl}{{CKdCKd}Bl}{{FlFl}Bl}{{CKfCKf}Bl}{{FnFn}Bl}{{CKhCKh}Bl}{{CKjCKj}Bl}{{G`G`}Bl}{{CKlCKl}Bl}{{CKnCKn}Bl}{{CL`CL`}Bl}{{CLbCLb}Bl}{{CLdCLd}Bl}{{CLfCLf}Bl}{{CLhCLh}Bl}{{CLjCLj}Bl}{{GbGb}Bl}{{CLlCLl}Bl}{{CLnCLn}Bl}{{CM`CM`}Bl}{{GdGd}Bl}{{CMbCMb}Bl}{{CMdCMd}Bl}{{GfGf}Bl}{{GhGh}Bl}{{CMfCMf}Bl}{{CMhCMh}Bl}{{GjGj}Bl}{{CMjCMj}Bl}{{CMlCMl}Bl}{{GlGl}Bl}{{CMnCMn}Bl}{{CN`CN`}Bl}{{GnGn}Bl}{{CNbCNb}Bl}{{CNdCNd}Bl}{{CNfCNf}Bl}{{CNhCNh}Bl}{{CNjCNj}Bl}{{CNlCNl}Bl}{{CNnCNn}Bl}{{CO`CO`}Bl}{{CObCOb}Bl}{{COdCOd}Bl}{{COfCOf}Bl}{{H`H`}Bl}{{HbHb}Bl}{{COhCOh}Bl}{{COjCOj}Bl}{{COlCOl}Bl}{{COnCOn}Bl}{{HdHd}Bl}{{D@`D@`}Bl}{{HfHf}Bl}{{D@bD@b}Bl}{{D@dD@d}Bl}{{D@fD@f}Bl}{{D@hD@h}Bl}{{D@jD@j}Bl}{{D@lD@l}Bl}{{D@nD@n}Bl}{{DA`DA`}Bl}{{DAbDAb}Bl}{{DAdDAd}Bl}{{DAfDAf}Bl}{{DAhDAh}Bl}{{DAjDAj}Bl}{{DAlDAl}Bl}```````````````````{{Dhc}Af{{DBb{}{{DB`{Dh}}}}}}{{Djc}Af{{DBb{}{{DB`{Dj}}}}}}{{Dlc}Af{{DBb{}{{DB`{Dl}}}}}}{{Dnc}Af{{DBb{}{{DB`{Dn}}}}}}{{E`c}Af{{DBb{}{{DB`{E`}}}}}}{{Ebc}Af{{DBb{}{{DB`{Eb}}}}}}{{Edc}Af{{DBb{}{{DB`{Ed}}}}}}{{Efc}Af{{DBb{}{{DB`{Ef}}}}}}{{Ehc}Af{{DBb{}{{DB`{Eh}}}}}}{{Ejc}Af{{DBb{}{{DB`{Ej}}}}}}{{Elc}Af{{DBb{}{{DB`{El}}}}}}{{Enc}Af{{DBb{}{{DB`{En}}}}}}{{F`c}Af{{DBb{}{{DB`{F`}}}}}}{{Fbc}Af{{DBb{}{{DB`{Fb}}}}}}{{Fdc}Af{{DBb{}{{DB`{Fd}}}}}}{{Ffc}Af{{DBb{}{{DB`{Ff}}}}}}{{Fhc}Af{{DBb{}{{DB`{Fh}}}}}}{{Fjc}Af{{DBb{}{{DB`{Fj}}}}}}{{Flc}Af{{DBb{}{{DB`{Fl}}}}}}{{Fnc}Af{{DBb{}{{DB`{Fn}}}}}}{{G`c}Af{{DBb{}{{DB`{G`}}}}}}{{Gbc}Af{{DBb{}{{DB`{Gb}}}}}}{{Gdc}Af{{DBb{}{{DB`{Gd}}}}}}{{Gfc}Af{{DBb{}{{DB`{Gf}}}}}}{{Ghc}Af{{DBb{}{{DB`{Gh}}}}}}{{Gjc}Af{{DBb{}{{DB`{Gj}}}}}}{{Glc}Af{{DBb{}{{DB`{Gl}}}}}}{{Gnc}Af{{DBb{}{{DB`{Gn}}}}}}{{H`c}Af{{DBb{}{{DB`{H`}}}}}}{{Hbc}Af{{DBb{}{{DB`{Hb}}}}}}{{Hdc}Af{{DBb{}{{DB`{Hd}}}}}}{{Hfc}Af{{DBb{}{{DB`{Hf}}}}}}{Bbb}````````````````````````````````````````````````````````````{{HjBn}DBd}{{HlBn}DBd}{{HnBn}DBd}{{I`Bn}DBd}{{IbBn}DBd}{{IdBn}DBd}{{IfBn}DBd}{{IhBn}DBd}{{IjBn}DBd}{{IlBn}DBd}{{InBn}DBd}{{J`Bn}DBd}{{JbBn}DBd}{{JdBn}DBd}{{JfBn}DBd}{{JhBn}DBd}{{JjBn}DBd}{{JlBn}DBd}{{JnBn}DBd}{{K`Bn}DBd}{{KbBn}DBd}{{KdBn}DBd}{{KfBn}DBd}{{KhBn}DBd}{{KjBn}DBd}{{KlBn}DBd}{{KnBn}DBd}{{L`Bn}DBd}{{LbBn}DBd}{{LdBn}DBd}{{LfBn}DBd}{{LhBn}DBd}{{LjBn}DBd}{{LlBn}DBd}{{LnBn}DBd}{{M`Bn}DBd}{{MbBn}DBd}{{MdBn}DBd}{{MfBn}DBd}{{MhBn}DBd}{{MjBn}DBd}{{MlBn}DBd}{{MnBn}DBd}{{N`Bn}DBd}{{NbBn}DBd}{{NdBn}DBd}{{NfBn}DBd}{{NhBn}DBd}{{NjBn}DBd}{{NlBn}DBd}{{NnBn}DBd}{{O`Bn}DBd}{{ObBn}DBd}{{OdBn}DBd}{{OfBn}DBd}{{OhBn}DBd}{{OjBn}DBd}{{OlBn}DBd}{{OnBn}DBd}{{A@`Bn}DBd}{{A@bBn}DBd}{{A@dBn}DBd}{{A@fBn}DBd}{{A@hBn}DBd}{{A@jBn}DBd}{{A@lBn}DBd}{{A@nBn}DBd}{{AA`Bn}DBd}{{AAbBn}DBd}{{AAdBn}DBd}{{AAfBn}DBd}{{AAhBn}DBd}{{AAjBn}DBd}{{AAlBn}DBd}{{AAnBn}DBd}{{AB`Bn}DBd}{{ABbBn}DBd}{{ABdBn}DBd}{{ABfBn}DBd}{{ABhBn}DBd}{{ABjBn}DBd}{{ABlBn}DBd}{{ABnBn}DBd}{{AC`Bn}DBd}{{ACbBn}DBd}{{ACdBn}DBd}{{ACfBn}DBd}{{AChBn}DBd}{{ACjBn}DBd}{{AClBn}DBd}{{ACnBn}DBd}{{AD`Bn}DBd}{{ADbBn}DBd}{{ADdBn}DBd}{{ADfBn}DBd}{{ADhBn}DBd}{{ADjBn}DBd}{{ADlBn}DBd}{{ADnBn}DBd}{{AE`Bn}DBd}{{AEbBn}DBd}{{AEdBn}DBd}{{AEfBn}DBd}{{AEhBn}DBd}{{AEjBn}DBd}{{AElBn}DBd}{{AEnBn}DBd}{{AF`Bn}DBd}{{AFbBn}DBd}{{AFdBn}DBd}{{AFfBn}DBd}{{AFhBn}DBd}{{AFjBn}DBd}{{AFlBn}DBd}{{AFnBn}DBd}{{AG`Bn}DBd}{{AGbBn}DBd}{{AGdBn}DBd}{{AGfBn}DBd}{{AGhBn}DBd}{{AGjBn}DBd}{{AGlBn}DBd}{{AGnBn}DBd}{{AH`Bn}DBd}{{AHbBn}DBd}{{AHdBn}DBd}{{AHfBn}DBd}{{AHhBn}DBd}{{AHjBn}DBd}{{AHlBn}DBd}{{AHnBn}DBd}{{AI`Bn}DBd}{{AIbBn}DBd}{{AIdBn}DBd}{{AIfBn}DBd}{{AIhBn}DBd}{{AIjBn}DBd}{{AIlBn}DBd}{{AInBn}DBd}{{AJ`Bn}DBd}{{AJbBn}DBd}{{AJdBn}DBd}{{AJfBn}DBd}{{AJhBn}DBd}{{AJjBn}DBd}{{AJlBn}DBd}{{AJnBn}DBd}{{AK`Bn}DBd}{{AKbBn}DBd}{{AKdBn}DBd}{{AKfBn}DBd}{{AKhBn}DBd}{{AKjBn}DBd}{{AKlBn}DBd}{{AKnBn}DBd}{{AL`Bn}DBd}{{ALbBn}DBd}{{ALdBn}DBd}{{ALfBn}DBd}{{ALhBn}DBd}{{ALjBn}DBd}{{ALlBn}DBd}{{ALnBn}DBd}{{AM`Bn}DBd}{{AMbBn}DBd}{{AMdBn}DBd}{{AMfBn}DBd}{{AMhBn}DBd}{{AMjBn}DBd}{{AMlBn}DBd}{{AMnBn}DBd}{{AN`Bn}DBd}{{ANbBn}DBd}{{ANdBn}DBd}{{ANfBn}DBd}{{ANhBn}DBd}{{ANjBn}DBd}{{ANlBn}DBd}{{ANnBn}DBd}{{AO`Bn}DBd}{{AObBn}DBd}{{AOdBn}DBd}{{AOfBn}DBd}{{AOhBn}DBd}{{AOjBn}DBd}{{AOlBn}DBd}{{AOnBn}DBd}{{B@`Bn}DBd}{{B@bBn}DBd}{{B@dBn}DBd}{{B@fBn}DBd}{{B@hBn}DBd}{{B@jBn}DBd}{{B@lBn}DBd}{{B@nBn}DBd}{{BA`Bn}DBd}{{BAbBn}DBd}{{BAdBn}DBd}{{BAfBn}DBd}{{BAhBn}DBd}{{BAjBn}DBd}{{BAlBn}DBd}{{BAnBn}DBd}{{BB`Bn}DBd}{{BBbBn}DBd}{{BBdBn}DBd}{{BBfBn}DBd}{{BBhBn}DBd}{{BBjBn}DBd}{{BBlBn}DBd}{{BBnBn}DBd}{{BC`Bn}DBd}{{BCbBn}DBd}{{BCdBn}DBd}{{BCfBn}DBd}{{BChBn}DBd}{{BCjBn}DBd}{{BClBn}DBd}{{BCnBn}DBd}{{BD`Bn}DBd}{{BDbBn}DBd}{{BDdBn}DBd}{{BDfBn}DBd}{{BDhBn}DBd}{{BDjBn}DBd}{{BDlBn}DBd}{{BDnBn}DBd}{{BE`Bn}DBd}{{BEbBn}DBd}{{BEdBn}DBd}{{BEfBn}DBd}{{BEhBn}DBd}{{BEjBn}DBd}{{BElBn}DBd}{{BEnBn}DBd}{{BF`Bn}DBd}{{BFbBn}DBd}{{BFdBn}DBd}{{BFfBn}DBd}{{BFhBn}DBd}{{BFjBn}DBd}{{BFlBn}DBd}{{BFnBn}DBd}{{BG`Bn}DBd}{{BGbBn}DBd}{{BGdBn}DBd}{{BGfBn}DBd}{{BGhBn}DBd}{{BGjBn}DBd}{{BGlBn}DBd}{{BGnBn}DBd}{{BH`Bn}DBd}{{BHbBn}DBd}{{BHdBn}DBd}{{BHfBn}DBd}{{BHhBn}DBd}{{BHjBn}DBd}{{BHlBn}DBd}{{BHnBn}DBd}{{BI`Bn}DBd}{{BIbBn}DBd}{{BIdBn}DBd}{{BIfBn}DBd}{{BIhBn}DBd}{{BIjBn}DBd}{{BIlBn}DBd}{{BInBn}DBd}{{BJ`Bn}DBd}{{BJbBn}DBd}{{BJdBn}DBd}{{BJfBn}DBd}{{BJhBn}DBd}{{BJjBn}DBd}{{BJlBn}DBd}{{BJnBn}DBd}{{BK`Bn}DBd}{{BKbBn}DBd}{{BKdBn}DBd}{{BKfBn}DBd}{{BKhBn}DBd}{{BKjBn}DBd}{{BKlBn}DBd}{{BKnBn}DBd}{{BL`Bn}DBd}{{BLbBn}DBd}{{BLdBn}DBd}{{BLfBn}DBd}{{BLhBn}DBd}{{BLjBn}DBd}{{BLlBn}DBd}{{BLnBn}DBd}{{BM`Bn}DBd}{{BMbBn}DBd}{{BMdBn}DBd}{{BMfBn}DBd}{{BMhBn}DBd}{{BMjBn}DBd}{{BMlBn}DBd}{{DhBn}DBd}0000{{BMnBn}DBd}{{DjBn}DBd}0000{{BN`Bn}DBd}{{BNbBn}DBd}{{DlBn}DBd}0000{{DnBn}DBd}0000{{BNdBn}DBd}{{BNfBn}DBd}{{BNhBn}DBd}{{BNjBn}DBd}{{BNlBn}DBd}{{BNnBn}DBd}{{BO`Bn}DBd}{{BObBn}DBd}{{BOdBn}DBd}{{BOfBn}DBd}{{BOhBn}DBd}{{BOjBn}DBd}{{BOlBn}DBd}{{BOnBn}DBd}{{C@`Bn}DBd}{{C@bBn}DBd}{{C@dBn}DBd}{{E`Bn}DBd}0000{{C@fBn}DBd}{{C@hBn}DBd}{{C@jBn}DBd}{{C@lBn}DBd}{{C@nBn}DBd}{{EbBn}DBd}0000{{CA`Bn}DBd}{{CAbBn}DBd}{{CAdBn}DBd}{{CAfBn}DBd}{{CAhBn}DBd}{{CAjBn}DBd}{{EdBn}DBd}0000{{CAlBn}DBd}{{CAnBn}DBd}{{CB`Bn}DBd}{{EfBn}DBd}0000{{EhBn}DBd}0000{{CBbBn}DBd}{{CBdBn}DBd}{{CBfBn}DBd}{{CBhBn}DBd}{{CBjBn}DBd}{{CBlBn}DBd}{{CBnBn}DBd}{{CC`Bn}DBd}{{CCbBn}DBd}{{CCdBn}DBd}{{CCfBn}DBd}{{CChBn}DBd}{{CCjBn}DBd}{{CClBn}DBd}{{CCnBn}DBd}{{CD`Bn}DBd}{{CDbBn}DBd}{{CDdBn}DBd}{{CDfBn}DBd}{{CDhBn}DBd}{{CDjBn}DBd}{{CDlBn}DBd}{{CDnBn}DBd}{{CE`Bn}DBd}{{CEbBn}DBd}{{CEdBn}DBd}{{CEfBn}DBd}{{CEhBn}DBd}{{CEjBn}DBd}{{CElBn}DBd}{{CEnBn}DBd}{{CF`Bn}DBd}{{EjBn}DBd}0000{{CFbBn}DBd}{{CFdBn}DBd}{{CFfBn}DBd}{{CFhBn}DBd}{{CFjBn}DBd}{{CFlBn}DBd}{{ElBn}DBd}0000{{CFnBn}DBd}{{CG`Bn}DBd}{{CGbBn}DBd}{{CGdBn}DBd}{{CGfBn}DBd}{{CGhBn}DBd}{{CGjBn}DBd}{{CGlBn}DBd}{{EnBn}DBd}0000{{CGnBn}DBd}{{CH`Bn}DBd}{{CHbBn}DBd}{{CHdBn}DBd}{{F`Bn}DBd}0000{{CHfBn}DBd}{{CHhBn}DBd}{{CHjBn}DBd}{{CHlBn}DBd}{{CHnBn}DBd}{{CI`Bn}DBd}{{FbBn}DBd}0000{{CIbBn}DBd}{{CIdBn}DBd}{{FdBn}DBd}0000{{CIfBn}DBd}{{CIhBn}DBd}{{FfBn}DBd}0000{{FhBn}DBd}0000{{CIjBn}DBd}{{CIlBn}DBd}{{CInBn}DBd}{{CJ`Bn}DBd}{{CJbBn}DBd}{{CJdBn}DBd}{{CJfBn}DBd}{{CJhBn}DBd}{{CJjBn}DBd}{{CJlBn}DBd}{{CJnBn}DBd}{{FjBn}DBd}0000{{CK`Bn}DBd}{{CKbBn}DBd}{{CKdBn}DBd}{{FlBn}DBd}0000{{CKfBn}DBd}{{FnBn}DBd}0000{{CKhBn}DBd}{{CKjBn}DBd}{{G`Bn}DBd}0000{{CKlBn}DBd}{{CKnBn}DBd}{{CL`Bn}DBd}{{CLbBn}DBd}{{CLdBn}DBd}{{CLfBn}DBd}{{CLhBn}DBd}{{CLjBn}DBd}{{GbBn}DBd}0000{{CLlBn}DBd}{{CLnBn}DBd}{{CM`Bn}DBd}{{GdBn}DBd}0000{{CMbBn}DBd}{{CMdBn}DBd}{{GfBn}DBd}0000{{GhBn}DBd}0000{{CMfBn}DBd}{{CMhBn}DBd}{{GjBn}DBd}0000{{CMjBn}DBd}{{CMlBn}DBd}{{GlBn}DBd}0000{{CMnBn}DBd}{{CN`Bn}DBd}{{GnBn}DBd}0000{{CNbBn}DBd}{{CNdBn}DBd}{{CNfBn}DBd}{{CNhBn}DBd}{{CNjBn}DBd}{{CNlBn}DBd}{{CNnBn}DBd}{{CO`Bn}DBd}{{CObBn}DBd}{{COdBn}DBd}{{COfBn}DBd}{{H`Bn}DBd}0000{{HbBn}DBd}0000{{COhBn}DBd}{{COjBn}DBd}{{COlBn}DBd}{{COnBn}DBd}{{HdBn}DBd}0000{{D@`Bn}DBd}{{HfBn}DBd}0000{{D@bBn}DBd}{{D@dBn}DBd}{{D@fBn}DBd}{{D@hBn}DBd}{{D@jBn}DBd}{{D@lBn}DBd}{{D@nBn}DBd}{{DA`Bn}DBd}{{DAbBn}DBd}{{DAdBn}DBd}{{DAfBn}DBd}{{DAhBn}DBd}{{DAjBn}DBd}{{DAlBn}DBd}```````````````````{cc{}}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{f{{DBf{Dh}}}}{f{{DBf{Dj}}}}{b{{DBf{Dl}}}}{Bb{{DBf{Dn}}}}{f{{DBf{E`}}}}{Bb{{DBf{Eb}}}}{b{{DBf{Ed}}}}{b{{DBf{Ef}}}}{f{{DBf{Eh}}}}{Bb{{DBf{Ej}}}}{b{{DBf{El}}}}{f{{DBf{En}}}}{f{{DBf{F`}}}}{f{{DBf{Fb}}}}{b{{DBf{Fd}}}}{Bb{{DBf{Ff}}}}{f{{DBf{Fh}}}}{f{{DBf{Fj}}}}{Hh{{DBf{Fl}}}}{b{{DBf{Fn}}}}{f{{DBf{G`}}}}{f{{DBf{Gb}}}}{f{{DBf{Gd}}}}{b{{DBf{Gf}}}}{Bb{{DBf{Gh}}}}{Bb{{DBf{Gj}}}}{f{{DBf{Gl}}}}{b{{DBf{Gn}}}}{b{{DBf{H`}}}}{Hh{{DBf{Hb}}}}{Bb{{DBf{Hd}}}}{b{{DBf{Hf}}}}{fDh}{fDj}{bDl}{BbDn}{fE`}{BbEb}{bEd}{bEf}{fEh}{BbEj}{bEl}{fEn}{fF`}{fFb}{bFd}{BbFf}{fFh}{fFj}{HhFl}{bFn}{fG`}{fGb}{fGd}{bGf}{BbGh}{BbGj}{fGl}{bGn}{bH`}{HhHb}{BbHd}{bHf}{fDh}{fDj}{bDl}{BbDn}{fE`}{BbEb}{bEd}{bEf}{fEh}{BbEj}{bEl}{fEn}{fF`}{fFb}{bFd}{BbFf}{fFh}{fFj}{HhFl}{bFn}{fG`}{fGb}{fGd}{bGf}{BbGh}{BbGj}{fGl}{bGn}{bH`}{HhHb}{BbHd}{bHf}{DBh{{DBf{BMl}}}}{DBh{{DBf{BMn}}}}{DBh{{DBf{BN`}}}}{DBh{{DBf{BNb}}}}{DBh{{DBf{BNd}}}}{DBh{{DBf{BNf}}}}{DBh{{DBf{BNh}}}}{DBh{{DBf{BNj}}}}{DBh{{DBf{BNl}}}}{DBh{{DBf{BNn}}}}{DBh{{DBf{BO`}}}}{DBh{{DBf{BOb}}}}{DBh{{DBf{BOd}}}}{DBh{{DBf{BOf}}}}{DBh{{DBf{BOh}}}}{DBh{{DBf{BOj}}}}{DBh{{DBf{BOl}}}}{DBh{{DBf{BOn}}}}{DBh{{DBf{C@`}}}}{DBh{{DBf{C@b}}}}{DBh{{DBf{C@d}}}}{DBh{{DBf{C@f}}}}{DBh{{DBf{C@h}}}}{DBh{{DBf{C@j}}}}{DBh{{DBf{C@l}}}}{DBh{{DBf{C@n}}}}{DBh{{DBf{CA`}}}}{DBh{{DBf{CAb}}}}{DBh{{DBf{CAd}}}}{DBh{{DBf{CAf}}}}{DBh{{DBf{CAh}}}}{DBh{{DBf{CAj}}}}{DBh{{DBf{CAl}}}}{DBh{{DBf{CAn}}}}{DBh{{DBf{CB`}}}}{DBh{{DBf{CBb}}}}{DBh{{DBf{CBd}}}}{DBh{{DBf{CBf}}}}{DBh{{DBf{CBh}}}}{DBh{{DBf{CBj}}}}{DBh{{DBf{CBl}}}}{DBh{{DBf{CBn}}}}{DBh{{DBf{CC`}}}}{DBh{{DBf{CCb}}}}{DBh{{DBf{CCd}}}}{DBh{{DBf{CCf}}}}{DBh{{DBf{CCh}}}}{DBh{{DBf{CCj}}}}{DBh{{DBf{CCl}}}}{DBh{{DBf{CCn}}}}{DBh{{DBf{CD`}}}}{DBh{{DBf{CDb}}}}{DBh{{DBf{CDd}}}}{DBh{{DBf{CDf}}}}{DBh{{DBf{CDh}}}}{DBh{{DBf{CDj}}}}{DBh{{DBf{CDl}}}}{DBh{{DBf{CDn}}}}{DBh{{DBf{CE`}}}}{DBh{{DBf{CEb}}}}{DBh{{DBf{CEd}}}}{DBh{{DBf{CEf}}}}{DBh{{DBf{CEh}}}}{DBh{{DBf{CEj}}}}{DBh{{DBf{CEl}}}}{DBh{{DBf{CEn}}}}{DBh{{DBf{CF`}}}}{DBh{{DBf{CFb}}}}{DBh{{DBf{CFd}}}}{DBh{{DBf{CFf}}}}{DBh{{DBf{CFh}}}}{DBh{{DBf{CFj}}}}{DBh{{DBf{CFl}}}}{DBh{{DBf{CFn}}}}{DBh{{DBf{CG`}}}}{DBh{{DBf{CGb}}}}{DBh{{DBf{CGd}}}}{DBh{{DBf{CGf}}}}{DBh{{DBf{CGh}}}}{DBh{{DBf{CGj}}}}{DBh{{DBf{CGl}}}}{DBh{{DBf{CGn}}}}{DBh{{DBf{CH`}}}}{DBh{{DBf{CHb}}}}{DBh{{DBf{CHd}}}}{DBh{{DBf{CHf}}}}{DBh{{DBf{CHh}}}}{DBh{{DBf{CHj}}}}{DBh{{DBf{CHl}}}}{DBh{{DBf{CHn}}}}{DBh{{DBf{CI`}}}}{DBh{{DBf{CIb}}}}{DBh{{DBf{CId}}}}{DBh{{DBf{CIf}}}}{DBh{{DBf{CIh}}}}{DBh{{DBf{CIj}}}}{DBh{{DBf{CIl}}}}{DBh{{DBf{CIn}}}}{DBh{{DBf{CJ`}}}}{DBh{{DBf{CJb}}}}{DBh{{DBf{CJd}}}}{DBh{{DBf{CJf}}}}{DBh{{DBf{CJh}}}}{DBh{{DBf{CJj}}}}{DBh{{DBf{CJl}}}}{DBh{{DBf{CJn}}}}{DBh{{DBf{CK`}}}}{DBh{{DBf{CKb}}}}{DBh{{DBf{CKd}}}}{DBh{{DBf{CKf}}}}{DBh{{DBf{CKh}}}}{DBh{{DBf{CKj}}}}{DBh{{DBf{CKl}}}}{DBh{{DBf{CKn}}}}{DBh{{DBf{CL`}}}}{DBh{{DBf{CLb}}}}{DBh{{DBf{CLd}}}}{DBh{{DBf{CLf}}}}{DBh{{DBf{CLh}}}}{DBh{{DBf{CLj}}}}{DBh{{DBf{CLl}}}}{DBh{{DBf{CLn}}}}{DBh{{DBf{CM`}}}}{DBh{{DBf{CMb}}}}{DBh{{DBf{CMd}}}}{DBh{{DBf{CMf}}}}{DBh{{DBf{CMh}}}}{DBh{{DBf{CMj}}}}{DBh{{DBf{CMl}}}}{DBh{{DBf{CMn}}}}{DBh{{DBf{CN`}}}}{DBh{{DBf{CNb}}}}{DBh{{DBf{CNd}}}}{DBh{{DBf{CNf}}}}{DBh{{DBf{CNh}}}}{DBh{{DBf{CNj}}}}{DBh{{DBf{CNl}}}}{DBh{{DBf{CNn}}}}{DBh{{DBf{CO`}}}}{DBh{{DBf{COb}}}}{DBh{{DBf{COd}}}}{DBh{{DBf{COf}}}}{DBh{{DBf{COh}}}}{DBh{{DBf{COj}}}}{DBh{{DBf{COl}}}}{DBh{{DBf{COn}}}}{DBh{{DBf{D@`}}}}{DBh{{DBf{D@b}}}}{DBh{{DBf{D@d}}}}{DBh{{DBf{D@f}}}}{DBh{{DBf{D@h}}}}{DBh{{DBf{D@j}}}}{DBh{{DBf{D@l}}}}{DBh{{DBf{D@n}}}}{DBh{{DBf{DA`}}}}{DBh{{DBf{DAb}}}}{DBh{{DBf{DAd}}}}{DBh{{DBf{DAf}}}}{DBh{{DBf{DAh}}}}{DBh{{DBf{DAj}}}}{DBh{{DBf{DAl}}}}{cDh{{DBb{}{{DB`{Dh}}}}}}{cDj{{DBb{}{{DB`{Dj}}}}}}{cDl{{DBb{}{{DB`{Dl}}}}}}{cDn{{DBb{}{{DB`{Dn}}}}}}{cE`{{DBb{}{{DB`{E`}}}}}}{cEb{{DBb{}{{DB`{Eb}}}}}}{cEd{{DBb{}{{DB`{Ed}}}}}}{cEf{{DBb{}{{DB`{Ef}}}}}}{cEh{{DBb{}{{DB`{Eh}}}}}}{cEj{{DBb{}{{DB`{Ej}}}}}}{cEl{{DBb{}{{DB`{El}}}}}}{cEn{{DBb{}{{DB`{En}}}}}}{cF`{{DBb{}{{DB`{F`}}}}}}{cFb{{DBb{}{{DB`{Fb}}}}}}{cFd{{DBb{}{{DB`{Fd}}}}}}{cFf{{DBb{}{{DB`{Ff}}}}}}{cFh{{DBb{}{{DB`{Fh}}}}}}{cFj{{DBb{}{{DB`{Fj}}}}}}{cFl{{DBb{}{{DB`{Fl}}}}}}{cFn{{DBb{}{{DB`{Fn}}}}}}{cG`{{DBb{}{{DB`{G`}}}}}}{cGb{{DBb{}{{DB`{Gb}}}}}}{cGd{{DBb{}{{DB`{Gd}}}}}}{cGf{{DBb{}{{DB`{Gf}}}}}}{cGh{{DBb{}{{DB`{Gh}}}}}}{cGj{{DBb{}{{DB`{Gj}}}}}}{cGl{{DBb{}{{DB`{Gl}}}}}}{cGn{{DBb{}{{DB`{Gn}}}}}}{cH`{{DBb{}{{DB`{H`}}}}}}{cHb{{DBb{}{{DB`{Hb}}}}}}{cHd{{DBb{}{{DB`{Hd}}}}}}{cHf{{DBb{}{{DB`{Hf}}}}}}{Hh{{DBf{BMl}}}}{Hh{{DBf{BMn}}}}{Hh{{DBf{BN`}}}}{Hh{{DBf{BNb}}}}{Hh{{DBf{BNd}}}}{Hh{{DBf{BNf}}}}{Hh{{DBf{BNh}}}}{Hh{{DBf{BNj}}}}{Hh{{DBf{BNl}}}}{Hh{{DBf{BNn}}}}{Hh{{DBf{BO`}}}}{Hh{{DBf{BOb}}}}{Hh{{DBf{BOd}}}}{Hh{{DBf{BOf}}}}{Hh{{DBf{BOh}}}}{Hh{{DBf{BOj}}}}{Hh{{DBf{BOl}}}}{Hh{{DBf{BOn}}}}{Hh{{DBf{C@`}}}}{Hh{{DBf{C@b}}}}{Hh{{DBf{C@d}}}}{Hh{{DBf{C@f}}}}{Hh{{DBf{C@h}}}}{Hh{{DBf{C@j}}}}{Hh{{DBf{C@l}}}}{Hh{{DBf{C@n}}}}{Hh{{DBf{CA`}}}}{Hh{{DBf{CAb}}}}{Hh{{DBf{CAd}}}}{Hh{{DBf{CAf}}}}{Hh{{DBf{CAh}}}}{Hh{{DBf{CAj}}}}{Hh{{DBf{CAl}}}}{Hh{{DBf{CAn}}}}{Hh{{DBf{CB`}}}}{Hh{{DBf{CBb}}}}{Hh{{DBf{CBd}}}}{Hh{{DBf{CBf}}}}{Hh{{DBf{CBh}}}}{Hh{{DBf{CBj}}}}{Hh{{DBf{CBl}}}}{Hh{{DBf{CBn}}}}{Hh{{DBf{CC`}}}}{Hh{{DBf{CCb}}}}{Hh{{DBf{CCd}}}}{Hh{{DBf{CCf}}}}{Hh{{DBf{CCh}}}}{Hh{{DBf{CCj}}}}{Hh{{DBf{CCl}}}}{Hh{{DBf{CCn}}}}{Hh{{DBf{CD`}}}}{Hh{{DBf{CDb}}}}{Hh{{DBf{CDd}}}}{Hh{{DBf{CDf}}}}{Hh{{DBf{CDh}}}}{Hh{{DBf{CDj}}}}{Hh{{DBf{CDl}}}}{Hh{{DBf{CDn}}}}{Hh{{DBf{CE`}}}}{Hh{{DBf{CEb}}}}{Hh{{DBf{CEd}}}}{Hh{{DBf{CEf}}}}{Hh{{DBf{CEh}}}}{Hh{{DBf{CEj}}}}{Hh{{DBf{CEl}}}}{Hh{{DBf{CEn}}}}{Hh{{DBf{CF`}}}}{Hh{{DBf{CFb}}}}{Hh{{DBf{CFd}}}}{Hh{{DBf{CFf}}}}{Hh{{DBf{CFh}}}}{Hh{{DBf{CFj}}}}{Hh{{DBf{CFl}}}}{Hh{{DBf{CFn}}}}{Hh{{DBf{CG`}}}}{Hh{{DBf{CGb}}}}{Hh{{DBf{CGd}}}}{Hh{{DBf{CGf}}}}{Hh{{DBf{CGh}}}}{Hh{{DBf{CGj}}}}{Hh{{DBf{CGl}}}}{Hh{{DBf{CGn}}}}{Hh{{DBf{CH`}}}}{Hh{{DBf{CHb}}}}{Hh{{DBf{CHd}}}}{Hh{{DBf{CHf}}}}{Hh{{DBf{CHh}}}}{Hh{{DBf{CHj}}}}{Hh{{DBf{CHl}}}}{Hh{{DBf{CHn}}}}{Hh{{DBf{CI`}}}}{Hh{{DBf{CIb}}}}{Hh{{DBf{CId}}}}{Hh{{DBf{CIf}}}}{Hh{{DBf{CIh}}}}{Hh{{DBf{CIj}}}}{Hh{{DBf{CIl}}}}{Hh{{DBf{CIn}}}}{Hh{{DBf{CJ`}}}}{Hh{{DBf{CJb}}}}{Hh{{DBf{CJd}}}}{Hh{{DBf{CJf}}}}{Hh{{DBf{CJh}}}}{Hh{{DBf{CJj}}}}{Hh{{DBf{CJl}}}}{Hh{{DBf{CJn}}}}{Hh{{DBf{CK`}}}}{Hh{{DBf{CKb}}}}{Hh{{DBf{CKd}}}}{Hh{{DBf{CKf}}}}{Hh{{DBf{CKh}}}}{Hh{{DBf{CKj}}}}{Hh{{DBf{CKl}}}}{Hh{{DBf{CKn}}}}{Hh{{DBf{CL`}}}}{Hh{{DBf{CLb}}}}{Hh{{DBf{CLd}}}}{Hh{{DBf{CLf}}}}{Hh{{DBf{CLh}}}}{Hh{{DBf{CLj}}}}{Hh{{DBf{CLl}}}}{Hh{{DBf{CLn}}}}{Hh{{DBf{CM`}}}}{Hh{{DBf{CMb}}}}{Hh{{DBf{CMd}}}}{Hh{{DBf{CMf}}}}{Hh{{DBf{CMh}}}}{Hh{{DBf{CMj}}}}{Hh{{DBf{CMl}}}}{Hh{{DBf{CMn}}}}{Hh{{DBf{CN`}}}}{Hh{{DBf{CNb}}}}{Hh{{DBf{CNd}}}}{Hh{{DBf{CNf}}}}{Hh{{DBf{CNh}}}}{Hh{{DBf{CNj}}}}{Hh{{DBf{CNl}}}}{Hh{{DBf{CNn}}}}{Hh{{DBf{CO`}}}}{Hh{{DBf{COb}}}}{Hh{{DBf{COd}}}}{Hh{{DBf{COf}}}}{Hh{{DBf{COh}}}}{Hh{{DBf{COj}}}}{Hh{{DBf{COl}}}}{Hh{{DBf{COn}}}}{Hh{{DBf{D@`}}}}{Hh{{DBf{D@b}}}}{Hh{{DBf{D@d}}}}{Hh{{DBf{D@f}}}}{Hh{{DBf{D@h}}}}{Hh{{DBf{D@j}}}}{Hh{{DBf{D@l}}}}{Hh{{DBf{D@n}}}}{Hh{{DBf{DA`}}}}{Hh{{DBf{DAb}}}}{Hh{{DBf{DAd}}}}{Hh{{DBf{DAf}}}}{Hh{{DBf{DAh}}}}{Hh{{DBf{DAj}}}}{Hh{{DBf{DAl}}}}```````````````````````````````````````{{Dhc}AfDBj}{{Djc}AfDBj}{{Dlc}AfDBj}{{Dnc}AfDBj}{{E`c}AfDBj}{{Ebc}AfDBj}{{Edc}AfDBj}{{Efc}AfDBj}{{Ehc}AfDBj}{{Ejc}AfDBj}{{Elc}AfDBj}{{Enc}AfDBj}{{F`c}AfDBj}{{Fbc}AfDBj}{{Fdc}AfDBj}{{Ffc}AfDBj}{{Fhc}AfDBj}{{Fjc}AfDBj}{{Flc}AfDBj}{{Fnc}AfDBj}{{G`c}AfDBj}{{Gbc}AfDBj}{{Gdc}AfDBj}{{Gfc}AfDBj}{{Ghc}AfDBj}{{Gjc}AfDBj}{{Glc}AfDBj}{{Gnc}AfDBj}{{H`c}AfDBj}{{Hbc}AfDBj}{{Hdc}AfDBj}{{Hfc}AfDBj}`````````````````````````````````````````````````````````````````````````````{{DhDh}Af}{{DjDj}Af}{{DlDl}Af}{{DnDn}Af}{{E`E`}Af}{{EbEb}Af}{{EdEd}Af}{{EfEf}Af}{{EhEh}Af}{{EjEj}Af}{{ElEl}Af}{{EnEn}Af}{{F`F`}Af}{{FbFb}Af}{{FdFd}Af}{{FfFf}Af}{{FhFh}Af}{{FjFj}Af}{{FlFl}Af}{{FnFn}Af}{{G`G`}Af}{{GbGb}Af}{{GdGd}Af}{{GfGf}Af}{{GhGh}Af}{{GjGj}Af}{{GlGl}Af}{{GnGn}Af}{{H`H`}Af}{{HbHb}Af}{{HdHd}Af}{{HfHf}Af}````````````````{{DhDh}Dh}{{DjDj}Dj}{{DlDl}Dl}{{DnDn}Dn}{{E`E`}E`}{{EbEb}Eb}{{EdEd}Ed}{{EfEf}Ef}{{EhEh}Eh}{{EjEj}Ej}{{ElEl}El}{{EnEn}En}{{F`F`}F`}{{FbFb}Fb}{{FdFd}Fd}{{FfFf}Ff}{{FhFh}Fh}{{FjFj}Fj}{{FlFl}Fl}{{FnFn}Fn}{{G`G`}G`}{{GbGb}Gb}{{GdGd}Gd}{{GfGf}Gf}{{GhGh}Gh}{{GjGj}Gj}{{GlGl}Gl}{{GnGn}Gn}{{H`H`}H`}{{HbHb}Hb}{{HdHd}Hd}{{HfHf}Hf}{{DhDh}Bl}{{DjDj}Bl}{{DlDl}Bl}{{DnDn}Bl}{{E`E`}Bl}{{EbEb}Bl}{{EdEd}Bl}{{EfEf}Bl}{{EhEh}Bl}{{EjEj}Bl}{{ElEl}Bl}{{EnEn}Bl}{{F`F`}Bl}{{FbFb}Bl}{{FdFd}Bl}{{FfFf}Bl}{{FhFh}Bl}{{FjFj}Bl}{{FlFl}Bl}{{FnFn}Bl}{{G`G`}Bl}{{GbGb}Bl}{{GdGd}Bl}{{GfGf}Bl}{{GhGh}Bl}{{GjGj}Bl}{{GlGl}Bl}{{GnGn}Bl}{{H`H`}Bl}{{HbHb}Bl}{{HdHd}Bl}{{HfHf}Bl}`{ce{}{}}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{DhBl}{DjBl}{DlBl}{DnBl}{E`Bl}{EbBl}{EdBl}{EfBl}{EhBl}{EjBl}{ElBl}{EnBl}{F`Bl}{FbBl}{FdBl}{FfBl}{FhBl}{FjBl}{FlBl}{FnBl}{G`Bl}{GbBl}{GdBl}{GfBl}{GhBl}{GjBl}{GlBl}{GnBl}{H`Bl}{HbBl}{HdBl}{HfBl}{DhBl}{DjBl}{DlBl}{DnBl}{E`Bl}{EbBl}{EdBl}{EfBl}{EhBl}{EjBl}{ElBl}{EnBl}{F`Bl}{FbBl}{FdBl}{FfBl}{FhBl}{FjBl}{FlBl}{FnBl}{G`Bl}{GbBl}{GdBl}{GfBl}{GhBl}{GjBl}{GlBl}{GnBl}{H`Bl}{HbBl}{HdBl}{HfBl}````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{HjBb}`{Ah{{B`{BbAh}}}}{HjAh}`````````````````````````````````````````````````````{DhDh}{DjDj}{DlDl}{DnDn}{E`E`}{EbEb}{EdEd}{EfEf}{EhEh}{EjEj}{ElEl}{EnEn}{F`F`}{FbFb}{FdFd}{FfFf}{FhFh}{FjFj}{FlFl}{FnFn}{G`G`}{GbGb}{GdGd}{GfGf}{GhGh}{GjGj}{GlGl}{GnGn}{H`H`}{HbHb}{HdHd}{HfHf}``````````````````````````````````````````````````````````````````````````````````````````````````````````````{{nBb{d{b}}}{{B`{HjBh}}}}{{DhDh}{{DBf{DAn}}}}{{DjDj}{{DBf{DAn}}}}{{DlDl}{{DBf{DAn}}}}{{DnDn}{{DBf{DAn}}}}{{E`E`}{{DBf{DAn}}}}{{EbEb}{{DBf{DAn}}}}{{EdEd}{{DBf{DAn}}}}{{EfEf}{{DBf{DAn}}}}{{EhEh}{{DBf{DAn}}}}{{EjEj}{{DBf{DAn}}}}{{ElEl}{{DBf{DAn}}}}{{EnEn}{{DBf{DAn}}}}{{F`F`}{{DBf{DAn}}}}{{FbFb}{{DBf{DAn}}}}{{FdFd}{{DBf{DAn}}}}{{FfFf}{{DBf{DAn}}}}{{FhFh}{{DBf{DAn}}}}{{FjFj}{{DBf{DAn}}}}{{FlFl}{{DBf{DAn}}}}{{FnFn}{{DBf{DAn}}}}{{G`G`}{{DBf{DAn}}}}{{GbGb}{{DBf{DAn}}}}{{GdGd}{{DBf{DAn}}}}{{GfGf}{{DBf{DAn}}}}{{GhGh}{{DBf{DAn}}}}{{GjGj}{{DBf{DAn}}}}{{GlGl}{{DBf{DAn}}}}{{GnGn}{{DBf{DAn}}}}{{H`H`}{{DBf{DAn}}}}{{HbHb}{{DBf{DAn}}}}{{HdHd}{{DBf{DAn}}}}{{HfHf}{{DBf{DAn}}}}``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{{DhDh}Af}{{DjDj}Af}{{DlDl}Af}{{DnDn}Af}{{E`E`}Af}{{EbEb}Af}{{EdEd}Af}{{EfEf}Af}{{EhEh}Af}{{EjEj}Af}{{ElEl}Af}{{EnEn}Af}{{F`F`}Af}{{FbFb}Af}{{FdFd}Af}{{FfFf}Af}{{FhFh}Af}{{FjFj}Af}{{FlFl}Af}{{FnFn}Af}{{G`G`}Af}{{GbGb}Af}{{GdGd}Af}{{GfGf}Af}{{GhGh}Af}{{GjGj}Af}{{GlGl}Af}{{GnGn}Af}{{H`H`}Af}{{HbHb}Af}{{HdHd}Af}{{HfHf}Af}`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{{Hjn{d{b}}}Cl}{{Hln{d{b}}}Cl}{{Hnn{d{b}}}Cl}{{I`n{d{b}}}Cl}{{Ibn{d{b}}}Cl}{{Idn{d{b}}}Cl}{{Ifn{d{b}}}Cl}{{Ihn{d{b}}}Cl}{{Ijn{d{b}}}Cl}{{Iln{d{b}}}Cl}{{Inn{d{b}}}Cl}{{J`n{d{b}}}Cl}{{Jbn{d{b}}}Cl}{{Jdn{d{b}}}Cl}{{Jfn{d{b}}}Cl}{{Jhn{d{b}}}Cl}{{Jjn{d{b}}}Cl}{{Jln{d{b}}}Cl}{{Jnn{d{b}}}Cl}{{K`n{d{b}}}Cl}{{Kbn{d{b}}}Cl}{{Kdn{d{b}}}Cl}{{Kfn{d{b}}}Cl}{{Khn{d{b}}}Cl}{{Kjn{d{b}}}Cl}{{Kln{d{b}}}Cl}{{Knn{d{b}}}Cl}{{L`n{d{b}}}Cl}{{Lbn{d{b}}}Cl}{{Ldn{d{b}}}Cl}{{Lfn{d{b}}}Cl}{{Lhn{d{b}}}Cl}{{Ljn{d{b}}}Cl}{{Lln{d{b}}}Cl}{{Lnn{d{b}}}Cl}{{M`n{d{b}}}Cl}{{Mbn{d{b}}}Cl}{{Mdn{d{b}}}Cl}{{Mfn{d{b}}}Cl}{{Mhn{d{b}}}Cl}{{Mjn{d{b}}}Cl}{{Mln{d{b}}}Cl}{{Mnn{d{b}}}Cl}{{N`n{d{b}}}Cl}{{Nbn{d{b}}}Cl}{{Ndn{d{b}}}Cl}{{Nfn{d{b}}}Cl}{{Nhn{d{b}}}Cl}{{Njn{d{b}}}Cl}{{Nln{d{b}}}Cl}{{Nnn{d{b}}}Cl}{{O`n{d{b}}}Cl}{{Obn{d{b}}}Cl}{{Odn{d{b}}}Cl}{{Ofn{d{b}}}Cl}{{Ohn{d{b}}}Cl}{{Ojn{d{b}}}Cl}{{Oln{d{b}}}Cl}{{Onn{d{b}}}Cl}{{A@`n{d{b}}}Cl}{{A@bn{d{b}}}Cl}{{A@dn{d{b}}}Cl}{{A@fn{d{b}}}Cl}{{A@hn{d{b}}}Cl}{{A@jn{d{b}}}Cl}{{A@ln{d{b}}}Cl}{{A@nn{d{b}}}Cl}{{AA`n{d{b}}}Cl}{{AAbn{d{b}}}Cl}{{AAdn{d{b}}}Cl}{{AAfn{d{b}}}Cl}{{AAhn{d{b}}}Cl}{{AAjn{d{b}}}Cl}{{AAln{d{b}}}Cl}{{AAnn{d{b}}}Cl}{{AB`n{d{b}}}Cl}{{ABbn{d{b}}}Cl}{{ABdn{d{b}}}Cl}{{ABfn{d{b}}}Cl}{{ABhn{d{b}}}Cl}{{ABjn{d{b}}}Cl}{{ABln{d{b}}}Cl}{{ABnn{d{b}}}Cl}{{AC`n{d{b}}}Cl}{{ACbn{d{b}}}Cl}{{ACdn{d{b}}}Cl}{{ACfn{d{b}}}Cl}{{AChn{d{b}}}Cl}{{ACjn{d{b}}}Cl}{{ACln{d{b}}}Cl}{{ACnn{d{b}}}Cl}{{AD`n{d{b}}}Cl}{{ADbn{d{b}}}Cl}{{ADdn{d{b}}}Cl}{{ADfn{d{b}}}Cl}{{ADhn{d{b}}}Cl}{{ADjn{d{b}}}Cl}{{ADln{d{b}}}Cl}{{ADnn{d{b}}}Cl}{{AE`n{d{b}}}Cl}{{AEbn{d{b}}}Cl}{{AEdn{d{b}}}Cl}{{AEfn{d{b}}}Cl}{{AEhn{d{b}}}Cl}{{AEjn{d{b}}}Cl}{{AEln{d{b}}}Cl}{{AEnn{d{b}}}Cl}{{AF`n{d{b}}}Cl}{{AFbn{d{b}}}Cl}{{AFdn{d{b}}}Cl}{{AFfn{d{b}}}Cl}{{AFhn{d{b}}}Cl}{{AFjn{d{b}}}Cl}{{AFln{d{b}}}Cl}{{AFnn{d{b}}}Cl}{{AG`n{d{b}}}Cl}{{AGbn{d{b}}}Cl}{{AGdn{d{b}}}Cl}{{AGfn{d{b}}}Cl}{{AGhn{d{b}}}Cl}{{AGjn{d{b}}}Cl}{{AGln{d{b}}}Cl}{{AGnn{d{b}}}Cl}{{AH`n{d{b}}}Cl}{{AHbn{d{b}}}Cl}{{AHdn{d{b}}}Cl}{{AHfn{d{b}}}Cl}{{AHhn{d{b}}}Cl}{{AHjn{d{b}}}Cl}{{AHln{d{b}}}Cl}{{AHnn{d{b}}}Cl}{{AI`n{d{b}}}Cl}{{AIbn{d{b}}}Cl}{{AIdn{d{b}}}Cl}{{AIfn{d{b}}}Cl}{{AIhn{d{b}}}Cl}{{AIjn{d{b}}}Cl}{{AIln{d{b}}}Cl}{{AInn{d{b}}}Cl}{{AJ`n{d{b}}}Cl}{{AJbn{d{b}}}Cl}{{AJdn{d{b}}}Cl}{{AJfn{d{b}}}Cl}{{AJhn{d{b}}}Cl}{{AJjn{d{b}}}Cl}{{AJln{d{b}}}Cl}{{AJnn{d{b}}}Cl}{{AK`n{d{b}}}Cl}{{AKbn{d{b}}}Cl}{{AKdn{d{b}}}Cl}{{AKfn{d{b}}}Cl}{{AKhn{d{b}}}Cl}{{AKjn{d{b}}}Cl}{{AKln{d{b}}}Cl}{{AKnn{d{b}}}Cl}{{AL`n{d{b}}}Cl}{{ALbn{d{b}}}Cl}{{ALdn{d{b}}}Cl}{{ALfn{d{b}}}Cl}{{ALhn{d{b}}}Cl}{{ALjn{d{b}}}Cl}{{ALln{d{b}}}Cl}{{ALnn{d{b}}}Cl}{{AM`n{d{b}}}Cl}{{AMbn{d{b}}}Cl}{{AMdn{d{b}}}Cl}{{AMfn{d{b}}}Cl}{{AMhn{d{b}}}Cl}{{AMjn{d{b}}}Cl}{{AMln{d{b}}}Cl}{{AMnn{d{b}}}Cl}{{AN`n{d{b}}}Cl}{{ANbn{d{b}}}Cl}{{ANdn{d{b}}}Cl}{{ANfn{d{b}}}Cl}{{ANhn{d{b}}}Cl}{{ANjn{d{b}}}Cl}{{ANln{d{b}}}Cl}{{ANnn{d{b}}}Cl}{{AO`n{d{b}}}Cl}{{AObn{d{b}}}Cl}{{AOdn{d{b}}}Cl}{{AOfn{d{b}}}Cl}{{AOhn{d{b}}}Cl}{{AOjn{d{b}}}Cl}{{AOln{d{b}}}Cl}{{AOnn{d{b}}}Cl}{{B@`n{d{b}}}Cl}{{B@bn{d{b}}}Cl}{{B@dn{d{b}}}Cl}{{B@fn{d{b}}}Cl}{{B@hn{d{b}}}Cl}{{B@jn{d{b}}}Cl}{{B@ln{d{b}}}Cl}{{B@nn{d{b}}}Cl}{{BA`n{d{b}}}Cl}{{BAbn{d{b}}}Cl}{{BAdn{d{b}}}Cl}{{BAfn{d{b}}}Cl}{{BAhn{d{b}}}Cl}{{BAjn{d{b}}}Cl}{{BAln{d{b}}}Cl}{{BAnn{d{b}}}Cl}{{BB`n{d{b}}}Cl}{{BBbn{d{b}}}Cl}{{BBdn{d{b}}}Cl}{{BBfn{d{b}}}Cl}{{BBhn{d{b}}}Cl}{{BBjn{d{b}}}Cl}{{BBln{d{b}}}Cl}{{BBnn{d{b}}}Cl}{{BC`n{d{b}}}Cl}{{BCbn{d{b}}}Cl}{{BCdn{d{b}}}Cl}{{BCfn{d{b}}}Cl}{{BChn{d{b}}}Cl}{{BCjn{d{b}}}Cl}{{BCln{d{b}}}Cl}{{BCnn{d{b}}}Cl}{{BD`n{d{b}}}Cl}{{BDbn{d{b}}}Cl}{{BDdn{d{b}}}Cl}{{BDfn{d{b}}}Cl}{{BDhn{d{b}}}Cl}{{BDjn{d{b}}}Cl}{{BDln{d{b}}}Cl}{{BDnn{d{b}}}Cl}{{BE`n{d{b}}}Cl}{{BEbn{d{b}}}Cl}{{BEdn{d{b}}}Cl}{{BEfn{d{b}}}Cl}{{BEhn{d{b}}}Cl}{{BEjn{d{b}}}Cl}{{BEln{d{b}}}Cl}{{BEnn{d{b}}}Cl}{{BF`n{d{b}}}Cl}{{BFbn{d{b}}}Cl}{{BFdn{d{b}}}Cl}{{BFfn{d{b}}}Cl}{{BFhn{d{b}}}Cl}{{BFjn{d{b}}}Cl}{{BFln{d{b}}}Cl}{{BFnn{d{b}}}Cl}{{BG`n{d{b}}}Cl}{{BGbn{d{b}}}Cl}{{BGdn{d{b}}}Cl}{{BGfn{d{b}}}Cl}{{BGhn{d{b}}}Cl}{{BGjn{d{b}}}Cl}{{BGln{d{b}}}Cl}{{BGnn{d{b}}}Cl}{{BH`n{d{b}}}Cl}{{BHbn{d{b}}}Cl}{{BHdn{d{b}}}Cl}{{BHfn{d{b}}}Cl}{{BHhn{d{b}}}Cl}{{BHjn{d{b}}}Cl}{{BHln{d{b}}}Cl}{{BHnn{d{b}}}Cl}{{BI`n{d{b}}}Cl}{{BIbn{d{b}}}Cl}{{BIdn{d{b}}}Cl}{{BIfn{d{b}}}Cl}{{BIhn{d{b}}}Cl}{{BIjn{d{b}}}Cl}{{BIln{d{b}}}Cl}{{BInn{d{b}}}Cl}{{BJ`n{d{b}}}Cl}{{BJbn{d{b}}}Cl}{{BJdn{d{b}}}Cl}{{BJfn{d{b}}}Cl}{{BJhn{d{b}}}Cl}{{BJjn{d{b}}}Cl}{{BJln{d{b}}}Cl}{{BJnn{d{b}}}Cl}{{BK`n{d{b}}}Cl}{{BKbn{d{b}}}Cl}{{BKdn{d{b}}}Cl}{{BKfn{d{b}}}Cl}{{BKhn{d{b}}}Cl}{{BKjn{d{b}}}Cl}{{BKln{d{b}}}Cl}{{BKnn{d{b}}}Cl}{{BL`n{d{b}}}Cl}{{BLbn{d{b}}}Cl}{{BLdn{d{b}}}Cl}{{BLfn{d{b}}}Cl}{{BLhn{d{b}}}Cl}{{BLjn{d{b}}}Cl}{{BLln{d{b}}}Cl}{{BLnn{d{b}}}Cl}{{BM`n{d{b}}}Cl}{{BMbn{d{b}}}Cl}{{BMdn{d{b}}}Cl}{{BMfn{d{b}}}Cl}{{BMhn{d{b}}}Cl}{{BMjn{d{b}}}Cl}`{{Hjc}B`D`}{{Hlc}B`D`}{{Hnc}B`D`}{{I`c}B`D`}{{Ibc}B`D`}{{Idc}B`D`}{{Ifc}B`D`}{{Ihc}B`D`}{{Ijc}B`D`}{{Ilc}B`D`}{{Inc}B`D`}{{J`c}B`D`}{{Jbc}B`D`}{{Jdc}B`D`}{{Jfc}B`D`}{{Jhc}B`D`}{{Jjc}B`D`}{{Jlc}B`D`}{{Jnc}B`D`}{{K`c}B`D`}{{Kbc}B`D`}{{Kdc}B`D`}{{Kfc}B`D`}{{Khc}B`D`}{{Kjc}B`D`}{{Klc}B`D`}{{Knc}B`D`}{{L`c}B`D`}{{Lbc}B`D`}{{Ldc}B`D`}{{Lfc}B`D`}{{Lhc}B`D`}{{Ljc}B`D`}{{Llc}B`D`}{{Lnc}B`D`}{{M`c}B`D`}{{Mbc}B`D`}{{Mdc}B`D`}{{Mfc}B`D`}{{Mhc}B`D`}{{Mjc}B`D`}{{Mlc}B`D`}{{Mnc}B`D`}{{N`c}B`D`}{{Nbc}B`D`}{{Ndc}B`D`}{{Nfc}B`D`}{{Nhc}B`D`}{{Njc}B`D`}{{Nlc}B`D`}{{Nnc}B`D`}{{O`c}B`D`}{{Obc}B`D`}{{Odc}B`D`}{{Ofc}B`D`}{{Ohc}B`D`}{{Ojc}B`D`}{{Olc}B`D`}{{Onc}B`D`}{{A@`c}B`D`}{{A@bc}B`D`}{{A@dc}B`D`}{{A@fc}B`D`}{{A@hc}B`D`}{{A@jc}B`D`}{{A@lc}B`D`}{{A@nc}B`D`}{{AA`c}B`D`}{{AAbc}B`D`}{{AAdc}B`D`}{{AAfc}B`D`}{{AAhc}B`D`}{{AAjc}B`D`}{{AAlc}B`D`}{{AAnc}B`D`}{{AB`c}B`D`}{{ABbc}B`D`}{{ABdc}B`D`}{{ABfc}B`D`}{{ABhc}B`D`}{{ABjc}B`D`}{{ABlc}B`D`}{{ABnc}B`D`}{{AC`c}B`D`}{{ACbc}B`D`}{{ACdc}B`D`}{{ACfc}B`D`}{{AChc}B`D`}{{ACjc}B`D`}{{AClc}B`D`}{{ACnc}B`D`}{{AD`c}B`D`}{{ADbc}B`D`}{{ADdc}B`D`}{{ADfc}B`D`}{{ADhc}B`D`}{{ADjc}B`D`}{{ADlc}B`D`}{{ADnc}B`D`}{{AE`c}B`D`}{{AEbc}B`D`}{{AEdc}B`D`}{{AEfc}B`D`}{{AEhc}B`D`}{{AEjc}B`D`}{{AElc}B`D`}{{AEnc}B`D`}{{AF`c}B`D`}{{AFbc}B`D`}{{AFdc}B`D`}{{AFfc}B`D`}{{AFhc}B`D`}{{AFjc}B`D`}{{AFlc}B`D`}{{AFnc}B`D`}{{AG`c}B`D`}{{AGbc}B`D`}{{AGdc}B`D`}{{AGfc}B`D`}{{AGhc}B`D`}{{AGjc}B`D`}{{AGlc}B`D`}{{AGnc}B`D`}{{AH`c}B`D`}{{AHbc}B`D`}{{AHdc}B`D`}{{AHfc}B`D`}{{AHhc}B`D`}{{AHjc}B`D`}{{AHlc}B`D`}{{AHnc}B`D`}{{AI`c}B`D`}{{AIbc}B`D`}{{AIdc}B`D`}{{AIfc}B`D`}{{AIhc}B`D`}{{AIjc}B`D`}{{AIlc}B`D`}{{AInc}B`D`}{{AJ`c}B`D`}{{AJbc}B`D`}{{AJdc}B`D`}{{AJfc}B`D`}{{AJhc}B`D`}{{AJjc}B`D`}{{AJlc}B`D`}{{AJnc}B`D`}{{AK`c}B`D`}{{AKbc}B`D`}{{AKdc}B`D`}{{AKfc}B`D`}{{AKhc}B`D`}{{AKjc}B`D`}{{AKlc}B`D`}{{AKnc}B`D`}{{AL`c}B`D`}{{ALbc}B`D`}{{ALdc}B`D`}{{ALfc}B`D`}{{ALhc}B`D`}{{ALjc}B`D`}{{ALlc}B`D`}{{ALnc}B`D`}{{AM`c}B`D`}{{AMbc}B`D`}{{AMdc}B`D`}{{AMfc}B`D`}{{AMhc}B`D`}{{AMjc}B`D`}{{AMlc}B`D`}{{AMnc}B`D`}{{AN`c}B`D`}{{ANbc}B`D`}{{ANdc}B`D`}{{ANfc}B`D`}{{ANhc}B`D`}{{ANjc}B`D`}{{ANlc}B`D`}{{ANnc}B`D`}{{AO`c}B`D`}{{AObc}B`D`}{{AOdc}B`D`}{{AOfc}B`D`}{{AOhc}B`D`}{{AOjc}B`D`}{{AOlc}B`D`}{{AOnc}B`D`}{{B@`c}B`D`}{{B@bc}B`D`}{{B@dc}B`D`}{{B@fc}B`D`}{{B@hc}B`D`}{{B@jc}B`D`}{{B@lc}B`D`}{{B@nc}B`D`}{{BA`c}B`D`}{{BAbc}B`D`}{{BAdc}B`D`}{{BAfc}B`D`}{{BAhc}B`D`}{{BAjc}B`D`}{{BAlc}B`D`}{{BAnc}B`D`}{{BB`c}B`D`}{{BBbc}B`D`}{{BBdc}B`D`}{{BBfc}B`D`}{{BBhc}B`D`}{{BBjc}B`D`}{{BBlc}B`D`}{{BBnc}B`D`}{{BC`c}B`D`}{{BCbc}B`D`}{{BCdc}B`D`}{{BCfc}B`D`}{{BChc}B`D`}{{BCjc}B`D`}{{BClc}B`D`}{{BCnc}B`D`}{{BD`c}B`D`}{{BDbc}B`D`}{{BDdc}B`D`}{{BDfc}B`D`}{{BDhc}B`D`}{{BDjc}B`D`}{{BDlc}B`D`}{{BDnc}B`D`}{{BE`c}B`D`}{{BEbc}B`D`}{{BEdc}B`D`}{{BEfc}B`D`}{{BEhc}B`D`}{{BEjc}B`D`}{{BElc}B`D`}{{BEnc}B`D`}{{BF`c}B`D`}{{BFbc}B`D`}{{BFdc}B`D`}{{BFfc}B`D`}{{BFhc}B`D`}{{BFjc}B`D`}{{BFlc}B`D`}{{BFnc}B`D`}{{BG`c}B`D`}{{BGbc}B`D`}{{BGdc}B`D`}{{BGfc}B`D`}{{BGhc}B`D`}{{BGjc}B`D`}{{BGlc}B`D`}{{BGnc}B`D`}{{BH`c}B`D`}{{BHbc}B`D`}{{BHdc}B`D`}{{BHfc}B`D`}{{BHhc}B`D`}{{BHjc}B`D`}{{BHlc}B`D`}{{BHnc}B`D`}{{BI`c}B`D`}{{BIbc}B`D`}{{BIdc}B`D`}{{BIfc}B`D`}{{BIhc}B`D`}{{BIjc}B`D`}{{BIlc}B`D`}{{BInc}B`D`}{{BJ`c}B`D`}{{BJbc}B`D`}{{BJdc}B`D`}{{BJfc}B`D`}{{BJhc}B`D`}{{BJjc}B`D`}{{BJlc}B`D`}{{BJnc}B`D`}{{BK`c}B`D`}{{BKbc}B`D`}{{BKdc}B`D`}{{BKfc}B`D`}{{BKhc}B`D`}{{BKjc}B`D`}{{BKlc}B`D`}{{BKnc}B`D`}{{BL`c}B`D`}{{BLbc}B`D`}{{BLdc}B`D`}{{BLfc}B`D`}{{BLhc}B`D`}{{BLjc}B`D`}{{BLlc}B`D`}{{BLnc}B`D`}{{BM`c}B`D`}{{BMbc}B`D`}{{BMdc}B`D`}{{BMfc}B`D`}{{BMhc}B`D`}{{BMjc}B`D`}{{BMlc}B`D`}{{Dhc}B`D`}{{BMnc}B`D`}{{Djc}B`D`}{{BN`c}B`D`}{{BNbc}B`D`}{{Dlc}B`D`}{{Dnc}B`D`}{{BNdc}B`D`}{{BNfc}B`D`}{{BNhc}B`D`}{{BNjc}B`D`}{{BNlc}B`D`}{{BNnc}B`D`}{{BO`c}B`D`}{{BObc}B`D`}{{BOdc}B`D`}{{BOfc}B`D`}{{BOhc}B`D`}{{BOjc}B`D`}{{BOlc}B`D`}{{BOnc}B`D`}{{C@`c}B`D`}{{C@bc}B`D`}{{C@dc}B`D`}{{E`c}B`D`}{{C@fc}B`D`}{{C@hc}B`D`}{{C@jc}B`D`}{{C@lc}B`D`}{{C@nc}B`D`}{{Ebc}B`D`}{{CA`c}B`D`}{{CAbc}B`D`}{{CAdc}B`D`}{{CAfc}B`D`}{{CAhc}B`D`}{{CAjc}B`D`}{{Edc}B`D`}{{CAlc}B`D`}{{CAnc}B`D`}{{CB`c}B`D`}{{Efc}B`D`}{{Ehc}B`D`}{{CBbc}B`D`}{{CBdc}B`D`}{{CBfc}B`D`}{{CBhc}B`D`}{{CBjc}B`D`}{{CBlc}B`D`}{{CBnc}B`D`}{{CC`c}B`D`}{{CCbc}B`D`}{{CCdc}B`D`}{{CCfc}B`D`}{{CChc}B`D`}{{CCjc}B`D`}{{CClc}B`D`}{{CCnc}B`D`}{{CD`c}B`D`}{{CDbc}B`D`}{{CDdc}B`D`}{{CDfc}B`D`}{{CDhc}B`D`}{{CDjc}B`D`}{{CDlc}B`D`}{{CDnc}B`D`}{{CE`c}B`D`}{{CEbc}B`D`}{{CEdc}B`D`}{{CEfc}B`D`}{{CEhc}B`D`}{{CEjc}B`D`}{{CElc}B`D`}{{CEnc}B`D`}{{CF`c}B`D`}{{Ejc}B`D`}{{CFbc}B`D`}{{CFdc}B`D`}{{CFfc}B`D`}{{CFhc}B`D`}{{CFjc}B`D`}{{CFlc}B`D`}{{Elc}B`D`}{{CFnc}B`D`}{{CG`c}B`D`}{{CGbc}B`D`}{{CGdc}B`D`}{{CGfc}B`D`}{{CGhc}B`D`}{{CGjc}B`D`}{{CGlc}B`D`}{{Enc}B`D`}{{CGnc}B`D`}{{CH`c}B`D`}{{CHbc}B`D`}{{CHdc}B`D`}{{F`c}B`D`}{{CHfc}B`D`}{{CHhc}B`D`}{{CHjc}B`D`}{{CHlc}B`D`}{{CHnc}B`D`}{{CI`c}B`D`}{{Fbc}B`D`}{{CIbc}B`D`}{{CIdc}B`D`}{{Fdc}B`D`}{{CIfc}B`D`}{{CIhc}B`D`}{{Ffc}B`D`}{{Fhc}B`D`}{{CIjc}B`D`}{{CIlc}B`D`}{{CInc}B`D`}{{CJ`c}B`D`}{{CJbc}B`D`}{{CJdc}B`D`}{{CJfc}B`D`}{{CJhc}B`D`}{{CJjc}B`D`}{{CJlc}B`D`}{{CJnc}B`D`}{{Fjc}B`D`}{{CK`c}B`D`}{{CKbc}B`D`}{{CKdc}B`D`}{{Flc}B`D`}{{CKfc}B`D`}{{Fnc}B`D`}{{CKhc}B`D`}{{CKjc}B`D`}{{G`c}B`D`}{{CKlc}B`D`}{{CKnc}B`D`}{{CL`c}B`D`}{{CLbc}B`D`}{{CLdc}B`D`}{{CLfc}B`D`}{{CLhc}B`D`}{{CLjc}B`D`}{{Gbc}B`D`}{{CLlc}B`D`}{{CLnc}B`D`}{{CM`c}B`D`}{{Gdc}B`D`}{{CMbc}B`D`}{{CMdc}B`D`}{{Gfc}B`D`}{{Ghc}B`D`}{{CMfc}B`D`}{{CMhc}B`D`}{{Gjc}B`D`}{{CMjc}B`D`}{{CMlc}B`D`}{{Glc}B`D`}{{CMnc}B`D`}{{CN`c}B`D`}{{Gnc}B`D`}{{CNbc}B`D`}{{CNdc}B`D`}{{CNfc}B`D`}{{CNhc}B`D`}{{CNjc}B`D`}{{CNlc}B`D`}{{CNnc}B`D`}{{CO`c}B`D`}{{CObc}B`D`}{{COdc}B`D`}{{COfc}B`D`}{{H`c}B`D`}{{Hbc}B`D`}{{COhc}B`D`}{{COjc}B`D`}{{COlc}B`D`}{{COnc}B`D`}{{Hdc}B`D`}{{D@`c}B`D`}{{Hfc}B`D`}{{D@bc}B`D`}{{D@dc}B`D`}{{D@fc}B`D`}{{D@hc}B`D`}{{D@jc}B`D`}{{D@lc}B`D`}{{D@nc}B`D`}{{DA`c}B`D`}{{DAbc}B`D`}{{DAdc}B`D`}{{DAfc}B`D`}{{DAhc}B`D`}{{DAjc}B`D`}{{DAlc}B`D`}`````````{{DhDhBl}Af}{{DjDjBl}Af}{{DlDlBl}Af}{{DnDnBl}Af}{{E`E`Bl}Af}{{EbEbBl}Af}{{EdEdBl}Af}{{EfEfBl}Af}{{EhEhBl}Af}{{EjEjBl}Af}{{ElElBl}Af}{{EnEnBl}Af}{{F`F`Bl}Af}{{FbFbBl}Af}{{FdFdBl}Af}{{FfFfBl}Af}{{FhFhBl}Af}{{FjFjBl}Af}{{FlFlBl}Af}{{FnFnBl}Af}{{G`G`Bl}Af}{{GbGbBl}Af}{{GdGdBl}Af}{{GfGfBl}Af}{{GhGhBl}Af}{{GjGjBl}Af}{{GlGlBl}Af}{{GnGnBl}Af}{{H`H`Bl}Af}{{HbHbBl}Af}{{HdHdBl}Af}{{HfHfBl}Af}```````````````````````````````````````````````````````````````{{DhDh}Dh}{{DjDj}Dj}{{DlDl}Dl}{{DnDn}Dn}{{E`E`}E`}{{EbEb}Eb}{{EdEd}Ed}{{EfEf}Ef}{{EhEh}Eh}{{EjEj}Ej}{{ElEl}El}{{EnEn}En}{{F`F`}F`}{{FbFb}Fb}{{FdFd}Fd}{{FfFf}Ff}{{FhFh}Fh}{{FjFj}Fj}{{FlFl}Fl}{{FnFn}Fn}{{G`G`}G`}{{GbGb}Gb}{{GdGd}Gd}{{GfGf}Gf}{{GhGh}Gh}{{GjGj}Gj}{{GlGl}Gl}{{GnGn}Gn}{{H`H`}H`}{{HbHb}Hb}{{HdHd}Hd}{{HfHf}Hf}{{DhDh}Af}{{DjDj}Af}{{DlDl}Af}{{DnDn}Af}{{E`E`}Af}{{EbEb}Af}{{EdEd}Af}{{EfEf}Af}{{EhEh}Af}{{EjEj}Af}{{ElEl}Af}{{EnEn}Af}{{F`F`}Af}{{FbFb}Af}{{FdFd}Af}{{FfFf}Af}{{FhFh}Af}{{FjFj}Af}{{FlFl}Af}{{FnFn}Af}{{G`G`}Af}{{GbGb}Af}{{GdGd}Af}{{GfGf}Af}{{GhGh}Af}{{GjGj}Af}{{GlGl}Af}{{GnGn}Af}{{H`H`}Af}{{HbHb}Af}{{HdHd}Af}{{HfHf}Af}`````{{DhDh}Dh}{{DjDj}Dj}{{DlDl}Dl}{{DnDn}Dn}{{E`E`}E`}{{EbEb}Eb}{{EdEd}Ed}{{EfEf}Ef}{{EhEh}Eh}{{EjEj}Ej}{{ElEl}El}{{EnEn}En}{{F`F`}F`}{{FbFb}Fb}{{FdFd}Fd}{{FfFf}Ff}{{FhFh}Fh}{{FjFj}Fj}{{FlFl}Fl}{{FnFn}Fn}{{G`G`}G`}{{GbGb}Gb}{{GdGd}Gd}{{GfGf}Gf}{{GhGh}Gh}{{GjGj}Gj}{{GlGl}Gl}{{GnGn}Gn}{{H`H`}H`}{{HbHb}Hb}{{HdHd}Hd}{{HfHf}Hf}``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{BMl{{DBf{DBh}}}}{BMn{{DBf{DBh}}}}{BN`{{DBf{DBh}}}}{BNb{{DBf{DBh}}}}{BNd{{DBf{DBh}}}}{BNf{{DBf{DBh}}}}{BNh{{DBf{DBh}}}}{BNj{{DBf{DBh}}}}{BNl{{DBf{DBh}}}}{BNn{{DBf{DBh}}}}{BO`{{DBf{DBh}}}}{BOb{{DBf{DBh}}}}{BOd{{DBf{DBh}}}}{BOf{{DBf{DBh}}}}{BOh{{DBf{DBh}}}}{BOj{{DBf{DBh}}}}{BOl{{DBf{DBh}}}}{BOn{{DBf{DBh}}}}{C@`{{DBf{DBh}}}}{C@b{{DBf{DBh}}}}{C@d{{DBf{DBh}}}}{C@f{{DBf{DBh}}}}{C@h{{DBf{DBh}}}}{C@j{{DBf{DBh}}}}{C@l{{DBf{DBh}}}}{C@n{{DBf{DBh}}}}{CA`{{DBf{DBh}}}}{CAb{{DBf{DBh}}}}{CAd{{DBf{DBh}}}}{CAf{{DBf{DBh}}}}{CAh{{DBf{DBh}}}}{CAj{{DBf{DBh}}}}{CAl{{DBf{DBh}}}}{CAn{{DBf{DBh}}}}{CB`{{DBf{DBh}}}}{CBb{{DBf{DBh}}}}{CBd{{DBf{DBh}}}}{CBf{{DBf{DBh}}}}{CBh{{DBf{DBh}}}}{CBj{{DBf{DBh}}}}{CBl{{DBf{DBh}}}}{CBn{{DBf{DBh}}}}{CC`{{DBf{DBh}}}}{CCb{{DBf{DBh}}}}{CCd{{DBf{DBh}}}}{CCf{{DBf{DBh}}}}{CCh{{DBf{DBh}}}}{CCj{{DBf{DBh}}}}{CCl{{DBf{DBh}}}}{CCn{{DBf{DBh}}}}{CD`{{DBf{DBh}}}}{CDb{{DBf{DBh}}}}{CDd{{DBf{DBh}}}}{CDf{{DBf{DBh}}}}{CDh{{DBf{DBh}}}}{CDj{{DBf{DBh}}}}{CDl{{DBf{DBh}}}}{CDn{{DBf{DBh}}}}{CE`{{DBf{DBh}}}}{CEb{{DBf{DBh}}}}{CEd{{DBf{DBh}}}}{CEf{{DBf{DBh}}}}{CEh{{DBf{DBh}}}}{CEj{{DBf{DBh}}}}{CEl{{DBf{DBh}}}}{CEn{{DBf{DBh}}}}{CF`{{DBf{DBh}}}}{CFb{{DBf{DBh}}}}{CFd{{DBf{DBh}}}}{CFf{{DBf{DBh}}}}{CFh{{DBf{DBh}}}}{CFj{{DBf{DBh}}}}{CFl{{DBf{DBh}}}}{CFn{{DBf{DBh}}}}{CG`{{DBf{DBh}}}}{CGb{{DBf{DBh}}}}{CGd{{DBf{DBh}}}}{CGf{{DBf{DBh}}}}{CGh{{DBf{DBh}}}}{CGj{{DBf{DBh}}}}{CGl{{DBf{DBh}}}}{CGn{{DBf{DBh}}}}{CH`{{DBf{DBh}}}}{CHb{{DBf{DBh}}}}{CHd{{DBf{DBh}}}}{CHf{{DBf{DBh}}}}{CHh{{DBf{DBh}}}}{CHj{{DBf{DBh}}}}{CHl{{DBf{DBh}}}}{CHn{{DBf{DBh}}}}{CI`{{DBf{DBh}}}}{CIb{{DBf{DBh}}}}{CId{{DBf{DBh}}}}{CIf{{DBf{DBh}}}}{CIh{{DBf{DBh}}}}{CIj{{DBf{DBh}}}}{CIl{{DBf{DBh}}}}{CIn{{DBf{DBh}}}}{CJ`{{DBf{DBh}}}}{CJb{{DBf{DBh}}}}{CJd{{DBf{DBh}}}}{CJf{{DBf{DBh}}}}{CJh{{DBf{DBh}}}}{CJj{{DBf{DBh}}}}{CJl{{DBf{DBh}}}}{CJn{{DBf{DBh}}}}{CK`{{DBf{DBh}}}}{CKb{{DBf{DBh}}}}{CKd{{DBf{DBh}}}}{CKf{{DBf{DBh}}}}{CKh{{DBf{DBh}}}}{CKj{{DBf{DBh}}}}{CKl{{DBf{DBh}}}}{CKn{{DBf{DBh}}}}{CL`{{DBf{DBh}}}}{CLb{{DBf{DBh}}}}{CLd{{DBf{DBh}}}}{CLf{{DBf{DBh}}}}{CLh{{DBf{DBh}}}}{CLj{{DBf{DBh}}}}{CLl{{DBf{DBh}}}}{CLn{{DBf{DBh}}}}{CM`{{DBf{DBh}}}}{CMb{{DBf{DBh}}}}{CMd{{DBf{DBh}}}}{CMf{{DBf{DBh}}}}{CMh{{DBf{DBh}}}}{CMj{{DBf{DBh}}}}{CMl{{DBf{DBh}}}}{CMn{{DBf{DBh}}}}{CN`{{DBf{DBh}}}}{CNb{{DBf{DBh}}}}{CNd{{DBf{DBh}}}}{CNf{{DBf{DBh}}}}{CNh{{DBf{DBh}}}}{CNj{{DBf{DBh}}}}{CNl{{DBf{DBh}}}}{CNn{{DBf{DBh}}}}{CO`{{DBf{DBh}}}}{COb{{DBf{DBh}}}}{COd{{DBf{DBh}}}}{COf{{DBf{DBh}}}}{COh{{DBf{DBh}}}}{COj{{DBf{DBh}}}}{COl{{DBf{DBh}}}}{COn{{DBf{DBh}}}}{D@`{{DBf{DBh}}}}{D@b{{DBf{DBh}}}}{D@d{{DBf{DBh}}}}{D@f{{DBf{DBh}}}}{D@h{{DBf{DBh}}}}{D@j{{DBf{DBh}}}}{D@l{{DBf{DBh}}}}{D@n{{DBf{DBh}}}}{DA`{{DBf{DBh}}}}{DAb{{DBf{DBh}}}}{DAd{{DBf{DBh}}}}{DAf{{DBf{DBh}}}}{DAh{{DBf{DBh}}}}{DAj{{DBf{DBh}}}}{DAl{{DBf{DBh}}}}{ce{}{}}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{BMl{{DBf{Hh}}}}{BMn{{DBf{Hh}}}}{BN`{{DBf{Hh}}}}{BNb{{DBf{Hh}}}}{BNd{{DBf{Hh}}}}{BNf{{DBf{Hh}}}}{BNh{{DBf{Hh}}}}{BNj{{DBf{Hh}}}}{BNl{{DBf{Hh}}}}{BNn{{DBf{Hh}}}}{BO`{{DBf{Hh}}}}{BOb{{DBf{Hh}}}}{BOd{{DBf{Hh}}}}{BOf{{DBf{Hh}}}}{BOh{{DBf{Hh}}}}{BOj{{DBf{Hh}}}}{BOl{{DBf{Hh}}}}{BOn{{DBf{Hh}}}}{C@`{{DBf{Hh}}}}{C@b{{DBf{Hh}}}}{C@d{{DBf{Hh}}}}{C@f{{DBf{Hh}}}}{C@h{{DBf{Hh}}}}{C@j{{DBf{Hh}}}}{C@l{{DBf{Hh}}}}{C@n{{DBf{Hh}}}}{CA`{{DBf{Hh}}}}{CAb{{DBf{Hh}}}}{CAd{{DBf{Hh}}}}{CAf{{DBf{Hh}}}}{CAh{{DBf{Hh}}}}{CAj{{DBf{Hh}}}}{CAl{{DBf{Hh}}}}{CAn{{DBf{Hh}}}}{CB`{{DBf{Hh}}}}{CBb{{DBf{Hh}}}}{CBd{{DBf{Hh}}}}{CBf{{DBf{Hh}}}}{CBh{{DBf{Hh}}}}{CBj{{DBf{Hh}}}}{CBl{{DBf{Hh}}}}{CBn{{DBf{Hh}}}}{CC`{{DBf{Hh}}}}{CCb{{DBf{Hh}}}}{CCd{{DBf{Hh}}}}{CCf{{DBf{Hh}}}}{CCh{{DBf{Hh}}}}{CCj{{DBf{Hh}}}}{CCl{{DBf{Hh}}}}{CCn{{DBf{Hh}}}}{CD`{{DBf{Hh}}}}{CDb{{DBf{Hh}}}}{CDd{{DBf{Hh}}}}{CDf{{DBf{Hh}}}}{CDh{{DBf{Hh}}}}{CDj{{DBf{Hh}}}}{CDl{{DBf{Hh}}}}{CDn{{DBf{Hh}}}}{CE`{{DBf{Hh}}}}{CEb{{DBf{Hh}}}}{CEd{{DBf{Hh}}}}{CEf{{DBf{Hh}}}}{CEh{{DBf{Hh}}}}{CEj{{DBf{Hh}}}}{CEl{{DBf{Hh}}}}{CEn{{DBf{Hh}}}}{CF`{{DBf{Hh}}}}{CFb{{DBf{Hh}}}}{CFd{{DBf{Hh}}}}{CFf{{DBf{Hh}}}}{CFh{{DBf{Hh}}}}{CFj{{DBf{Hh}}}}{CFl{{DBf{Hh}}}}{CFn{{DBf{Hh}}}}{CG`{{DBf{Hh}}}}{CGb{{DBf{Hh}}}}{CGd{{DBf{Hh}}}}{CGf{{DBf{Hh}}}}{CGh{{DBf{Hh}}}}{CGj{{DBf{Hh}}}}{CGl{{DBf{Hh}}}}{CGn{{DBf{Hh}}}}{CH`{{DBf{Hh}}}}{CHb{{DBf{Hh}}}}{CHd{{DBf{Hh}}}}{CHf{{DBf{Hh}}}}{CHh{{DBf{Hh}}}}{CHj{{DBf{Hh}}}}{CHl{{DBf{Hh}}}}{CHn{{DBf{Hh}}}}{CI`{{DBf{Hh}}}}{CIb{{DBf{Hh}}}}{CId{{DBf{Hh}}}}{CIf{{DBf{Hh}}}}{CIh{{DBf{Hh}}}}{CIj{{DBf{Hh}}}}{CIl{{DBf{Hh}}}}{CIn{{DBf{Hh}}}}{CJ`{{DBf{Hh}}}}{CJb{{DBf{Hh}}}}{CJd{{DBf{Hh}}}}{CJf{{DBf{Hh}}}}{CJh{{DBf{Hh}}}}{CJj{{DBf{Hh}}}}{CJl{{DBf{Hh}}}}{CJn{{DBf{Hh}}}}{CK`{{DBf{Hh}}}}{CKb{{DBf{Hh}}}}{CKd{{DBf{Hh}}}}{CKf{{DBf{Hh}}}}{CKh{{DBf{Hh}}}}{CKj{{DBf{Hh}}}}{CKl{{DBf{Hh}}}}{CKn{{DBf{Hh}}}}{CL`{{DBf{Hh}}}}{CLb{{DBf{Hh}}}}{CLd{{DBf{Hh}}}}{CLf{{DBf{Hh}}}}{CLh{{DBf{Hh}}}}{CLj{{DBf{Hh}}}}{CLl{{DBf{Hh}}}}{CLn{{DBf{Hh}}}}{CM`{{DBf{Hh}}}}{CMb{{DBf{Hh}}}}{CMd{{DBf{Hh}}}}{CMf{{DBf{Hh}}}}{CMh{{DBf{Hh}}}}{CMj{{DBf{Hh}}}}{CMl{{DBf{Hh}}}}{CMn{{DBf{Hh}}}}{CN`{{DBf{Hh}}}}{CNb{{DBf{Hh}}}}{CNd{{DBf{Hh}}}}{CNf{{DBf{Hh}}}}{CNh{{DBf{Hh}}}}{CNj{{DBf{Hh}}}}{CNl{{DBf{Hh}}}}{CNn{{DBf{Hh}}}}{CO`{{DBf{Hh}}}}{COb{{DBf{Hh}}}}{COd{{DBf{Hh}}}}{COf{{DBf{Hh}}}}{COh{{DBf{Hh}}}}{COj{{DBf{Hh}}}}{COl{{DBf{Hh}}}}{COn{{DBf{Hh}}}}{D@`{{DBf{Hh}}}}{D@b{{DBf{Hh}}}}{D@d{{DBf{Hh}}}}{D@f{{DBf{Hh}}}}{D@h{{DBf{Hh}}}}{D@j{{DBf{Hh}}}}{D@l{{DBf{Hh}}}}{D@n{{DBf{Hh}}}}{DA`{{DBf{Hh}}}}{DAb{{DBf{Hh}}}}{DAd{{DBf{Hh}}}}{DAf{{DBf{Hh}}}}{DAh{{DBf{Hh}}}}{DAj{{DBf{Hh}}}}{DAl{{DBf{Hh}}}}{{DhDh}Af}{{DjDj}Af}{{DlDl}Af}{{DnDn}Af}{{E`E`}Af}{{EbEb}Af}{{EdEd}Af}{{EfEf}Af}{{EhEh}Af}{{EjEj}Af}{{ElEl}Af}{{EnEn}Af}{{F`F`}Af}{{FbFb}Af}{{FdFd}Af}{{FfFf}Af}{{FhFh}Af}{{FjFj}Af}{{FlFl}Af}{{FnFn}Af}{{G`G`}Af}{{GbGb}Af}{{GdGd}Af}{{GfGf}Af}{{GhGh}Af}{{GjGj}Af}{{GlGl}Af}{{GnGn}Af}{{H`H`}Af}{{HbHb}Af}{{HdHd}Af}{{HfHf}Af}```````````{c{{B`{e}}}{}{}}0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000`````````````````{cDd{}}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000````````````{{DhDh}Dh}{{DjDj}Dj}{{DlDl}Dl}{{DnDn}Dn}{{E`E`}E`}{{EbEb}Eb}{{EdEd}Ed}{{EfEf}Ef}{{EhEh}Eh}{{EjEj}Ej}{{ElEl}El}{{EnEn}En}{{F`F`}F`}{{FbFb}Fb}{{FdFd}Fd}{{FfFf}Ff}{{FhFh}Fh}{{FjFj}Fj}{{FlFl}Fl}{{FnFn}Fn}{{G`G`}G`}{{GbGb}Gb}{{GdGd}Gd}{{GfGf}Gf}{{GhGh}Gh}{{GjGj}Gj}{{GlGl}Gl}{{GnGn}Gn}{{H`H`}H`}{{HbHb}Hb}{{HdHd}Hd}{{HfHf}Hf}````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{ce{}{}}0{cc{}}{DBl{{DBn{b}}}}{{DBlCl}{{d{b}}}}{DBlDC`}{DBlDCb}{DBlDCd}{DBlDCf}0{DBlDBh}{DBlDCh}{DBlf}{DBlBb}0{DBlHh}{DBlb}={{{d{b}}}DBl}{DBl{{d{b}}}}{c{{B`{e}}}{}{}}0{cDd{}}`{ce{}{}}0{cc{}}1{DCjBl}{DCjCl}{{{d{b}}}DCj}{{DCjDC`}Af}{{DCjDCb}Af}{{DCjDCd}Af}{{DCjDCf}Af}0{{DCjDBh}Af}{{DCjDCh}Af}{{DCj{d{b}}}Af}{{DCjf}Af}{{DCjBb}Af}0{{DCjHh}Af}{{DCjb}Af}<{c{{B`{e}}}{}{}}0{cDd{}}`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{{}DCl}{{}DCn}{{}DD`}{{}DDb}{{}DDd}{{}DDf}{{}DDh}{{}DDj}{{}DDl}{{}DDn}{{}DE`}{{}DEb}{{}DEd}{{}DEf}{{}DEh}{{}DEj}{{}DEl}{{}DEn}{{}DF`}{{}DFb}{{}DFd}{{}DFf}{{}DFh}{{}DFj}{{}DFl}```````````````````````````````````````````````````````````````````````````````````````````````````````{{DClDCl}DCl}{{DCnDCn}DCn}{{DD`DD`}DD`}{{DDbDDb}DDb}{{DDdDDd}DDd}{{DDfDDf}DDf}{{DDhDDh}DDh}{{DDjDDj}DDj}{{DDlDDl}DDl}{{DDnDDn}DDn}{{DE`DE`}DE`}{{DEbDEb}DEb}{{DEdDEd}DEd}{{DEfDEf}DEf}{{DEhDEh}DEh}{{DEjDEj}DEj}{{DElDEl}DEl}{{DEnDEn}DEn}{{DF`DF`}DF`}{{DFbDFb}DFb}{{DFdDFd}DFd}{{DFfDFf}DFf}{{DFhDFh}DFh}{{DFjDFj}DFj}{{DFlDFl}DFl}{{DClDCl}Af}{{DCnDCn}Af}{{DD`DD`}Af}{{DDbDDb}Af}{{DDdDDd}Af}{{DDfDDf}Af}{{DDhDDh}Af}{{DDjDDj}Af}{{DDlDDl}Af}{{DDnDDn}Af}{{DE`DE`}Af}{{DEbDEb}Af}{{DEdDEd}Af}{{DEfDEf}Af}{{DEhDEh}Af}{{DEjDEj}Af}{{DElDEl}Af}{{DEnDEn}Af}{{DF`DF`}Af}{{DFbDFb}Af}{{DFdDFd}Af}{{DFfDFf}Af}{{DFhDFh}Af}{{DFjDFj}Af}{{DFlDFl}Af}{{DClDCl}DCl}{{DCnDCn}DCn}{{DD`DD`}DD`}{{DDbDDb}DDb}{{DDdDDd}DDd}{{DDfDDf}DDf}{{DDhDDh}DDh}{{DDjDDj}DDj}{{DDlDDl}DDl}{{DDnDDn}DDn}{{DE`DE`}DE`}{{DEbDEb}DEb}{{DEdDEd}DEd}{{DEfDEf}DEf}{{DEhDEh}DEh}{{DEjDEj}DEj}{{DElDEl}DEl}{{DEnDEn}DEn}{{DF`DF`}DF`}{{DFbDFb}DFb}{{DFdDFd}DFd}{{DFfDFf}DFf}{{DFhDFh}DFh}{{DFjDFj}DFj}{{DFlDFl}DFl}{{DClDCl}Af}{{DCnDCn}Af}{{DD`DD`}Af}{{DDbDDb}Af}{{DDdDDd}Af}{{DDfDDf}Af}{{DDhDDh}Af}{{DDjDDj}Af}{{DDlDDl}Af}{{DDnDDn}Af}{{DE`DE`}Af}{{DEbDEb}Af}{{DEdDEd}Af}{{DEfDEf}Af}{{DEhDEh}Af}{{DEjDEj}Af}{{DElDEl}Af}{{DEnDEn}Af}{{DF`DF`}Af}{{DFbDFb}Af}{{DFdDFd}Af}{{DFfDFf}Af}{{DFhDFh}Af}{{DFjDFj}Af}{{DFlDFl}Af}``{DClf}{DCnb}{DD`f}{DDbBb}{DDdBb}{DDfBb}{DDhb}{DDjBb}{DDlf}{DDnf}{DE`f}{DEbHh}{DEdBb}{DEfBb}{DEhf}{DEjf}{DElHh}{DEnb}{DF`Bb}{DFbf}{DFdf}{DFff}{DFhf}{DFjb}{DFlb}{{DClDCl}DCl}{{DCnDCn}DCn}{{DD`DD`}DD`}{{DDbDDb}DDb}{{DDdDDd}DDd}{{DDfDDf}DDf}{{DDhDDh}DDh}{{DDjDDj}DDj}{{DDlDDl}DDl}{{DDnDDn}DDn}{{DE`DE`}DE`}{{DEbDEb}DEb}{{DEdDEd}DEd}{{DEfDEf}DEf}{{DEhDEh}DEh}{{DEjDEj}DEj}{{DElDEl}DEl}{{DEnDEn}DEn}{{DF`DF`}DF`}{{DFbDFb}DFb}{{DFdDFd}DFd}{{DFfDFf}DFf}{{DFhDFh}DFh}{{DFjDFj}DFj}{{DFlDFl}DFl}{{DClDCl}Af}{{DCnDCn}Af}{{DD`DD`}Af}{{DDbDDb}Af}{{DDdDDd}Af}{{DDfDDf}Af}{{DDhDDh}Af}{{DDjDDj}Af}{{DDlDDl}Af}{{DDnDDn}Af}{{DE`DE`}Af}{{DEbDEb}Af}{{DEdDEd}Af}{{DEfDEf}Af}{{DEhDEh}Af}{{DEjDEj}Af}{{DElDEl}Af}{{DEnDEn}Af}{{DF`DF`}Af}{{DFbDFb}Af}{{DFdDFd}Af}{{DFfDFf}Af}{{DFhDFh}Af}{{DFjDFj}Af}{{DFlDFl}Af}```````{ce{}{}}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000`````````````````````````````````````````````````````````````````````````````````````````{DFnDFn}{DG`DG`}{DGbDGb}{DGdDGd}{DGfDGf}{DGhDGh}{DGjDGj}{DGlDGl}{DGnDGn}{DH`DH`}{DHbDHb}{DHdDHd}{DHfDHf}{DHhDHh}{DHjDHj}{DHlDHl}{DHnDHn}{DI`DI`}{DIbDIb}{DIdDId}{DIfDIf}{DIhDIh}{DIjDIj}{DIlDIl}{DInDIn}{DJ`DJ`}{DJbDJb}{DJdDJd}{DJfDJf}{DJhDJh}{DJjDJj}{DJlDJl}{DJnDJn}{DK`DK`}{DKbDKb}{DKdDKd}{DKfDKf}{DKhDKh}{DKjDKj}{DKlDKl}{DKnDKn}{DL`DL`}{DLbDLb}{DLdDLd}{DLfDLf}{DLhDLh}{DLjDLj}{DLlDLl}{DLnDLn}{DM`DM`}{DMbDMb}{DMdDMd}{DMfDMf}{DMhDMh}{DMjDMj}{DMlDMl}{DMnDMn}{DN`DN`}{DNbDNb}{DNdDNd}{DNfDNf}{DNhDNh}{DNjDNj}{DNlDNl}{DNnDNn}{DO`DO`}{DObDOb}{DOdDOd}{DOfDOf}{DOhDOh}{DOjDOj}{DOlDOl}{DOnDOn}{E@`E@`}{E@bE@b}{E@dE@d}{E@fE@f}{E@hE@h}{E@jE@j}{E@lE@l}{E@nE@n}{EA`EA`}{EAbEAb}{EAdEAd}{EAfEAf}{EAhEAh}{EAjEAj}{EAlEAl}{EAnEAn}{EB`EB`}{EBbEBb}{EBdEBd}{EBfEBf}{EBhEBh}{EBjEBj}{EBlEBl}{EBnEBn}{EC`EC`}{ECbECb}{ECdECd}{ECfECf}{EChECh}{ECjECj}{EClECl}{ECnECn}{ED`ED`}{EDbEDb}{EDdEDd}{EDfEDf}{EDhEDh}{EDjEDj}{EDlEDl}{EDnEDn}{EE`EE`}{EEbEEb}{EEdEEd}{EEfEEf}{EEhEEh}{EEjEEj}{EElEEl}{EEnEEn}{EF`EF`}{EFbEFb}{EFdEFd}{EFfEFf}{EFhEFh}{EFjEFj}{EFlEFl}{EFnEFn}{EG`EG`}{EGbEGb}{EGdEGd}{EGfEGf}{EGhEGh}{EGjEGj}{EGlEGl}{EGnEGn}{EH`EH`}{EHbEHb}{EHdEHd}{EHfEHf}{EHhEHh}{EHjEHj}{EHlEHl}{EHnEHn}{EI`EI`}{EIbEIb}{EIdEId}{EIfEIf}{EIhEIh}{EIjEIj}{EIlEIl}{EInEIn}{EJ`EJ`}{EJbEJb}{EJdEJd}{EJfEJf}{EJhEJh}{EJjEJj}{EJlEJl}{EJnEJn}{EK`EK`}{EKbEKb}{EKdEKd}{EKfEKf}{EKhEKh}{EKjEKj}{EKlEKl}{EKnEKn}{EL`EL`}{ELbELb}{ELdELd}{ELfELf}{ELhELh}{ELjELj}{ELlELl}{ELnELn}{EM`EM`}{EMbEMb}{EMdEMd}{EMfEMf}{EMhEMh}{EMjEMj}{EMlEMl}{EMnEMn}{EN`EN`}{ENbENb}{ENdENd}{ENfENf}{ENhENh}{ENjENj}{ENlENl}{ENnENn}{EO`EO`}{EObEOb}{EOdEOd}{EOfEOf}{EOhEOh}{EOjEOj}{EOlEOl}{EOnEOn}{F@`F@`}{F@bF@b}{F@dF@d}{F@fF@f}{F@hF@h}{F@jF@j}{F@lF@l}{F@nF@n}{FA`FA`}{FAbFAb}{FAdFAd}{FAfFAf}{FAhFAh}{FAjFAj}{FAlFAl}{FAnFAn}{FB`FB`}{FBbFBb}{FBdFBd}{FBfFBf}{FBhFBh}{FBjFBj}{FBlFBl}{DClDCl}{FBnFBn}{FC`FC`}{DCnDCn}{FCbFCb}{FCdFCd}{FCfFCf}{FChFCh}{FCjFCj}{DD`DD`}{FClFCl}{FCnFCn}{FD`FD`}{FDbFDb}{FDdFDd}{FDfFDf}{FDhFDh}{FDjFDj}{FDlFDl}{FDnFDn}{FE`FE`}{DDbDDb}{DDdDDd}{FEbFEb}{DDfDDf}{FEdFEd}{FEfFEf}{FEhFEh}{FEjFEj}{FElFEl}{FEnFEn}{FF`FF`}{FFbFFb}{FFdFFd}{DDhDDh}{FFfFFf}{FFhFFh}{FFjFFj}{DDjDDj}{FFlFFl}{FFnFFn}{FG`FG`}{FGbFGb}{FGdFGd}{DDlDDl}{DDnDDn}{FGfFGf}{FGhFGh}{FGjFGj}{FGlFGl}{FGnFGn}{FH`FH`}{FHbFHb}{DE`DE`}{FHdFHd}{FHfFHf}{DEbDEb}{DEdDEd}{FHhFHh}{FHjFHj}{DEfDEf}{FHlFHl}{DEhDEh}{FHnFHn}{FI`FI`}{FIbFIb}{DEjDEj}{DElDEl}{FIdFId}{FIfFIf}{FIhFIh}{FIjFIj}{FIlFIl}{FInFIn}{DEnDEn}{FJ`FJ`}{FJbFJb}{DF`DF`}{FJdFJd}{FJfFJf}{FJhFJh}{FJjFJj}{FJlFJl}{FJnFJn}{DFbDFb}{DFdDFd}{FK`FK`}{FKbFKb}{FKdFKd}{FKfFKf}{DFfDFf}{FKhFKh}{FKjFKj}{DFhDFh}{FKlFKl}{FKnFKn}{FL`FL`}{FLbFLb}{FLdFLd}{DFjDFj}{FLfFLf}{FLhFLh}{FLjFLj}{FLlFLl}{FLnFLn}{FM`FM`}{FMbFMb}{FMdFMd}{FMfFMf}{FMhFMh}{FMjFMj}{FMlFMl}{FMnFMn}{FN`FN`}{FNbFNb}{FNdFNd}{FNfFNf}{FNhFNh}{FNjFNj}{FNlFNl}{FNnFNn}{FO`FO`}{FObFOb}{FOdFOd}{FOfFOf}{FOhFOh}{FOjFOj}{FOlFOl}{FOnFOn}{DFlDFl}{G@`G@`}{G@bG@b}{G@dG@d}{G@fG@f}{G@hG@h}{{ce}Af{}{}}0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{{DClDCl}DAn}{{DCnDCn}DAn}{{DD`DD`}DAn}{{DDbDDb}DAn}{{DDdDDd}DAn}{{DDfDDf}DAn}{{DDhDDh}DAn}{{DDjDDj}DAn}{{DDlDDl}DAn}{{DDnDDn}DAn}{{DE`DE`}DAn}{{DEbDEb}DAn}{{DEdDEd}DAn}{{DEfDEf}DAn}{{DEhDEh}DAn}{{DEjDEj}DAn}{{DElDEl}DAn}{{DEnDEn}DAn}{{DF`DF`}DAn}{{DFbDFb}DAn}{{DFdDFd}DAn}{{DFfDFf}DAn}{{DFhDFh}DAn}{{DFjDFj}DAn}{{DFlDFl}DAn}````````````{DClDCl}{DCnDCn}{DD`DD`}{DDbDDb}{DDdDDd}{DDfDDf}{DDhDDh}{DDjDDj}{DDlDDl}{DDnDDn}{DE`DE`}{DEbDEb}{DEdDEd}{DEfDEf}{DEhDEh}{DEjDEj}{DElDEl}{DEnDEn}{DF`DF`}{DFbDFb}{DFdDFd}{DFfDFf}{DFhDFh}{DFjDFj}{DFlDFl}``{{DClDCl}Bl}{{DCnDCn}Bl}{{DD`DD`}Bl}{{DDbDDb}Bl}{{DDdDDd}Bl}{{DDfDDf}Bl}{{DDhDDh}Bl}{{DDjDDj}Bl}{{DDlDDl}Bl}{{DDnDDn}Bl}{{DE`DE`}Bl}{{DEbDEb}Bl}{{DEdDEd}Bl}{{DEfDEf}Bl}{{DEhDEh}Bl}{{DEjDEj}Bl}{{DElDEl}Bl}{{DEnDEn}Bl}{{DF`DF`}Bl}{{DFbDFb}Bl}{{DFdDFd}Bl}{{DFfDFf}Bl}{{DFhDFh}Bl}{{DFjDFj}Bl}{{DFlDFl}Bl}````````````````````````````````````````````````````````{{}DG`}{{}DGb}{{}DGd}{{}DGf}{{}DGh}{{}DGj}{{}DGl}{{}DGn}{{}DH`}{{}DHb}{{}DHd}{{}DHf}{{}DHh}{{}DHj}{{}DHl}{{}DHn}{{}DI`}{{}DIb}{{}DId}{{}DIf}{{}DIh}{{}DIj}{{}DIl}{{}DIn}{{}DJ`}{{}DJb}{{}DJd}{{}DJf}{{}DJh}{{}DJj}{{}DJl}{{}DJn}{{}DK`}{{}DKb}{{}DKd}{{}DKf}{{}DKh}{{}DKj}{{}DKl}{{}DKn}{{}DL`}{{}DLb}{{}DLd}{{}DLf}{{}DLh}{{}DLj}{{}DLl}{{}DLn}{{}DM`}{{}DMb}{{}DMd}{{}DMf}{{}DMh}{{}DMj}{{}DMl}{{}DMn}{{}DN`}{{}DNb}{{}DNd}{{}DNf}{{}DNh}{{}DNj}{{}DNl}{{}DNn}{{}DO`}{{}DOb}{{}DOd}{{}DOf}{{}DOh}{{}DOj}{{}DOl}{{}DOn}{{}E@`}{{}E@b}{{}E@d}{{}E@f}{{}E@h}{{}E@j}{{}E@l}{{}E@n}{{}EA`}{{}EAb}{{}EAd}{{}EAf}{{}EAh}{{}EAj}{{}EAl}{{}EAn}{{}EB`}{{}EBb}{{}EBd}{{}EBf}{{}EBh}{{}EBj}{{}EBl}{{}EBn}{{}EC`}{{}ECb}{{}ECd}{{}ECf}{{}ECh}{{}ECj}{{}ECl}{{}ECn}{{}ED`}{{}EDb}{{}EDd}{{}EDf}{{}EDh}{{}EDj}{{}EDl}{{}EDn}{{}EE`}{{}EEb}{{}EEd}{{}EEf}{{}EEh}{{}EEj}{{}EEl}{{}EEn}{{}EF`}{{}EFb}{{}EFd}{{}EFf}{{}EFh}{{}EFj}{{}EFl}{{}EFn}{{}EG`}{{}EGb}{{}EGd}{{}EGf}{{}EGh}{{}EGj}{{}EGl}{{}EGn}{{}EH`}{{}EHb}{{}EHd}{{}EHf}{{}EHh}{{}EHj}{{}EHl}{{}EHn}{{}EI`}{{}EIb}{{}EId}{{}EIf}{{}EIh}{{}EIj}{{}EIl}{{}EIn}{{}EJ`}{{}EJb}{{}EJd}{{}EJf}{{}EJh}{{}EJj}{{}EJl}{{}EJn}{{}EK`}{{}EKb}{{}EKd}{{}EKf}{{}EKh}{{}EKj}{{}EKl}{{}EKn}{{}EL`}{{}ELb}{{}ELd}{{}ELf}{{}ELh}{{}ELj}{{}ELl}{{}ELn}{{}EM`}{{}EMb}{{}EMd}{{}EMf}{{}EMh}{{}EMj}{{}EMl}{{}EMn}{{}EN`}{{}ENb}{{}ENd}{{}ENf}{{}ENh}{{}ENj}{{}ENl}{{}ENn}{{}EO`}{{}EOb}{{}EOd}{{}EOf}{{}EOh}{{}EOj}{{}EOl}{{}EOn}{{}F@`}{{}F@b}{{}F@d}{{}F@f}{{}F@h}{{}F@j}{{}F@l}{{}F@n}{{}FA`}{{}FAb}{{}FAd}{{}FAf}{{}FAh}{{}FAj}{{}FAl}{{}FAn}{{}FB`}{{}FBb}{{}FBd}{{}FBf}{{}FBh}{{}FBj}{{}FBl}{{}DCl}{{}FBn}{{}FC`}{{}DCn}{{}FCb}{{}FCd}{{}FCf}{{}FCh}{{}FCj}{{}DD`}{{}FCl}{{}FCn}{{}FD`}{{}FDb}{{}FDd}{{}FDf}{{}FDh}{{}FDj}{{}FDl}{{}FDn}{{}FE`}{{}DDb}{{}DDd}{{}FEb}{{}DDf}{{}FEd}{{}FEf}{{}FEh}{{}FEj}{{}FEl}{{}FEn}{{}FF`}{{}FFb}{{}FFd}{{}DDh}{{}FFf}{{}FFh}{{}FFj}{{}DDj}{{}FFl}{{}FFn}{{}FG`}{{}FGb}{{}FGd}{{}DDl}{{}DDn}{{}FGf}{{}FGh}{{}FGj}{{}FGl}{{}FGn}{{}FH`}{{}FHb}{{}DE`}{{}FHd}{{}FHf}{{}DEb}{{}DEd}{{}FHh}{{}FHj}{{}DEf}{{}FHl}{{}DEh}{{}FHn}{{}FI`}{{}FIb}{{}DEj}{{}DEl}{{}FId}{{}FIf}{{}FIh}{{}FIj}{{}FIl}{{}FIn}{{}DEn}{{}FJ`}{{}FJb}{{}DF`}{{}FJd}{{}FJf}{{}FJh}{{}FJj}{{}FJl}{{}FJn}{{}DFb}{{}DFd}{{}FK`}{{}FKb}{{}FKd}{{}FKf}{{}DFf}{{}FKh}{{}FKj}{{}DFh}{{}FKl}{{}FKn}{{}FL`}{{}FLb}{{}FLd}{{}DFj}{{}FLf}{{}FLh}{{}FLj}{{}FLl}{{}FLn}{{}FM`}{{}FMb}{{}FMd}{{}FMf}{{}FMh}{{}FMj}{{}FMl}{{}FMn}{{}FN`}{{}FNb}{{}FNd}{{}FNf}{{}FNh}{{}FNj}{{}FNl}{{}FNn}{{}FO`}{{}FOb}{{}FOd}{{}FOf}{{}FOh}{{}FOj}{{}FOl}{{}FOn}{{}DFl}{{}G@`}{{}G@b}{{}G@d}{{}G@f}{{}G@h}{Bb{{B`{DFnAh}}}}```{{n{d{b}}}{{B`{DG`Bh}}}}{{n{d{b}}}{{B`{DGbBh}}}}{{n{d{b}}}{{B`{DGdBh}}}}{{n{d{b}}}{{B`{DGfBh}}}}{{n{d{b}}}{{B`{DGhBh}}}}{{n{d{b}}}{{B`{DGjBh}}}}{{n{d{b}}}{{B`{DGlBh}}}}{{n{d{b}}}{{B`{DGnBh}}}}{{n{d{b}}}{{B`{DH`Bh}}}}{{n{d{b}}}{{B`{DHbBh}}}}{{n{d{b}}}{{B`{DHdBh}}}}{{n{d{b}}}{{B`{DHfBh}}}}{{n{d{b}}}{{B`{DHhBh}}}}{{n{d{b}}}{{B`{DHjBh}}}}{{n{d{b}}}{{B`{DHlBh}}}}{{n{d{b}}}{{B`{DHnBh}}}}{{n{d{b}}}{{B`{DI`Bh}}}}{{n{d{b}}}{{B`{DIbBh}}}}{{n{d{b}}}{{B`{DIdBh}}}}{{n{d{b}}}{{B`{DIfBh}}}}{{n{d{b}}}{{B`{DIhBh}}}}{{n{d{b}}}{{B`{DIjBh}}}}{{n{d{b}}}{{B`{DIlBh}}}}{{n{d{b}}}{{B`{DInBh}}}}{{n{d{b}}}{{B`{DJ`Bh}}}}{{n{d{b}}}{{B`{DJbBh}}}}{{n{d{b}}}{{B`{DJdBh}}}}{{n{d{b}}}{{B`{DJfBh}}}}{{n{d{b}}}{{B`{DJhBh}}}}{{n{d{b}}}{{B`{DJjBh}}}}{{n{d{b}}}{{B`{DJlBh}}}}{{n{d{b}}}{{B`{DJnBh}}}}{{n{d{b}}}{{B`{DK`Bh}}}}{{n{d{b}}}{{B`{DKbBh}}}}{{n{d{b}}}{{B`{DKdBh}}}}{{n{d{b}}}{{B`{DKfBh}}}}{{n{d{b}}}{{B`{DKhBh}}}}{{n{d{b}}}{{B`{DKjBh}}}}{{n{d{b}}}{{B`{DKlBh}}}}{{n{d{b}}}{{B`{DKnBh}}}}{{n{d{b}}}{{B`{DL`Bh}}}}{{n{d{b}}}{{B`{DLbBh}}}}{{n{d{b}}}{{B`{DLdBh}}}}{{n{d{b}}}{{B`{DLfBh}}}}{{n{d{b}}}{{B`{DLhBh}}}}{{n{d{b}}}{{B`{DLjBh}}}}{{n{d{b}}}{{B`{DLlBh}}}}{{n{d{b}}}{{B`{DLnBh}}}}{{n{d{b}}}{{B`{DM`Bh}}}}{{n{d{b}}}{{B`{DMbBh}}}}{{n{d{b}}}{{B`{DMdBh}}}}{{n{d{b}}}{{B`{DMfBh}}}}{{n{d{b}}}{{B`{DMhBh}}}}{{n{d{b}}}{{B`{DMjBh}}}}{{n{d{b}}}{{B`{DMlBh}}}}{{n{d{b}}}{{B`{DMnBh}}}}{{n{d{b}}}{{B`{DN`Bh}}}}{{n{d{b}}}{{B`{DNbBh}}}}{{n{d{b}}}{{B`{DNdBh}}}}{{n{d{b}}}{{B`{DNfBh}}}}{{n{d{b}}}{{B`{DNhBh}}}}{{n{d{b}}}{{B`{DNjBh}}}}{{n{d{b}}}{{B`{DNlBh}}}}{{n{d{b}}}{{B`{DNnBh}}}}{{n{d{b}}}{{B`{DO`Bh}}}}{{n{d{b}}}{{B`{DObBh}}}}{{n{d{b}}}{{B`{DOdBh}}}}{{n{d{b}}}{{B`{DOfBh}}}}{{n{d{b}}}{{B`{DOhBh}}}}{{n{d{b}}}{{B`{DOjBh}}}}{{n{d{b}}}{{B`{DOlBh}}}}{{n{d{b}}}{{B`{DOnBh}}}}{{n{d{b}}}{{B`{E@`Bh}}}}{{n{d{b}}}{{B`{E@bBh}}}}{{n{d{b}}}{{B`{E@dBh}}}}{{n{d{b}}}{{B`{E@fBh}}}}{{n{d{b}}}{{B`{E@hBh}}}}{{n{d{b}}}{{B`{E@jBh}}}}{{n{d{b}}}{{B`{E@lBh}}}}{{n{d{b}}}{{B`{E@nBh}}}}{{n{d{b}}}{{B`{EA`Bh}}}}{{n{d{b}}}{{B`{EAbBh}}}}{{n{d{b}}}{{B`{EAdBh}}}}{{n{d{b}}}{{B`{EAfBh}}}}{{n{d{b}}}{{B`{EAhBh}}}}{{n{d{b}}}{{B`{EAjBh}}}}{{n{d{b}}}{{B`{EAlBh}}}}{{n{d{b}}}{{B`{EAnBh}}}}{{n{d{b}}}{{B`{EB`Bh}}}}{{n{d{b}}}{{B`{EBbBh}}}}{{n{d{b}}}{{B`{EBdBh}}}}{{n{d{b}}}{{B`{EBfBh}}}}{{n{d{b}}}{{B`{EBhBh}}}}{{n{d{b}}}{{B`{EBjBh}}}}{{n{d{b}}}{{B`{EBlBh}}}}{{n{d{b}}}{{B`{EBnBh}}}}{{n{d{b}}}{{B`{EC`Bh}}}}{{n{d{b}}}{{B`{ECbBh}}}}{{n{d{b}}}{{B`{ECdBh}}}}{{n{d{b}}}{{B`{ECfBh}}}}{{n{d{b}}}{{B`{EChBh}}}}{{n{d{b}}}{{B`{ECjBh}}}}{{n{d{b}}}{{B`{EClBh}}}}{{n{d{b}}}{{B`{ECnBh}}}}{{n{d{b}}}{{B`{ED`Bh}}}}{{n{d{b}}}{{B`{EDbBh}}}}{{n{d{b}}}{{B`{EDdBh}}}}{{n{d{b}}}{{B`{EDfBh}}}}{{n{d{b}}}{{B`{EDhBh}}}}{{n{d{b}}}{{B`{EDjBh}}}}{{n{d{b}}}{{B`{EDlBh}}}}{{n{d{b}}}{{B`{EDnBh}}}}{{n{d{b}}}{{B`{EE`Bh}}}}{{n{d{b}}}{{B`{EEbBh}}}}{{n{d{b}}}{{B`{EEdBh}}}}{{n{d{b}}}{{B`{EEfBh}}}}{{n{d{b}}}{{B`{EEhBh}}}}{{n{d{b}}}{{B`{EEjBh}}}}{{n{d{b}}}{{B`{EElBh}}}}{{n{d{b}}}{{B`{EEnBh}}}}{{n{d{b}}}{{B`{EF`Bh}}}}{{n{d{b}}}{{B`{EFbBh}}}}{{n{d{b}}}{{B`{EFdBh}}}}{{n{d{b}}}{{B`{EFfBh}}}}{{n{d{b}}}{{B`{EFhBh}}}}{{n{d{b}}}{{B`{EFjBh}}}}{{n{d{b}}}{{B`{EFlBh}}}}{{n{d{b}}}{{B`{EFnBh}}}}{{n{d{b}}}{{B`{EG`Bh}}}}{{n{d{b}}}{{B`{EGbBh}}}}{{n{d{b}}}{{B`{EGdBh}}}}{{n{d{b}}}{{B`{EGfBh}}}}{{n{d{b}}}{{B`{EGhBh}}}}{{n{d{b}}}{{B`{EGjBh}}}}{{n{d{b}}}{{B`{EGlBh}}}}{{n{d{b}}}{{B`{EGnBh}}}}{{n{d{b}}}{{B`{EH`Bh}}}}{{n{d{b}}}{{B`{EHbBh}}}}{{n{d{b}}}{{B`{EHdBh}}}}{{n{d{b}}}{{B`{EHfBh}}}}{{n{d{b}}}{{B`{EHhBh}}}}{{n{d{b}}}{{B`{EHjBh}}}}{{n{d{b}}}{{B`{EHlBh}}}}{{n{d{b}}}{{B`{EHnBh}}}}{{n{d{b}}}{{B`{EI`Bh}}}}{{n{d{b}}}{{B`{EIbBh}}}}{{n{d{b}}}{{B`{EIdBh}}}}{{n{d{b}}}{{B`{EIfBh}}}}{{n{d{b}}}{{B`{EIhBh}}}}{{n{d{b}}}{{B`{EIjBh}}}}{{n{d{b}}}{{B`{EIlBh}}}}{{n{d{b}}}{{B`{EInBh}}}}{{n{d{b}}}{{B`{EJ`Bh}}}}{{n{d{b}}}{{B`{EJbBh}}}}{{n{d{b}}}{{B`{EJdBh}}}}{{n{d{b}}}{{B`{EJfBh}}}}{{n{d{b}}}{{B`{EJhBh}}}}{{n{d{b}}}{{B`{EJjBh}}}}{{n{d{b}}}{{B`{EJlBh}}}}{{n{d{b}}}{{B`{EJnBh}}}}{{n{d{b}}}{{B`{EK`Bh}}}}{{n{d{b}}}{{B`{EKbBh}}}}{{n{d{b}}}{{B`{EKdBh}}}}{{n{d{b}}}{{B`{EKfBh}}}}{{n{d{b}}}{{B`{EKhBh}}}}{{n{d{b}}}{{B`{EKjBh}}}}{{n{d{b}}}{{B`{EKlBh}}}}{{n{d{b}}}{{B`{EKnBh}}}}{{n{d{b}}}{{B`{EL`Bh}}}}{{n{d{b}}}{{B`{ELbBh}}}}{{n{d{b}}}{{B`{ELdBh}}}}{{n{d{b}}}{{B`{ELfBh}}}}{{n{d{b}}}{{B`{ELhBh}}}}{{n{d{b}}}{{B`{ELjBh}}}}{{n{d{b}}}{{B`{ELlBh}}}}{{n{d{b}}}{{B`{ELnBh}}}}{{n{d{b}}}{{B`{EM`Bh}}}}{{n{d{b}}}{{B`{EMbBh}}}}{{n{d{b}}}{{B`{EMdBh}}}}{{n{d{b}}}{{B`{EMfBh}}}}{{n{d{b}}}{{B`{EMhBh}}}}{{n{d{b}}}{{B`{EMjBh}}}}{{n{d{b}}}{{B`{EMlBh}}}}{{n{d{b}}}{{B`{EMnBh}}}}{{n{d{b}}}{{B`{EN`Bh}}}}{{n{d{b}}}{{B`{ENbBh}}}}{{n{d{b}}}{{B`{ENdBh}}}}{{n{d{b}}}{{B`{ENfBh}}}}{{n{d{b}}}{{B`{ENhBh}}}}{{n{d{b}}}{{B`{ENjBh}}}}{{n{d{b}}}{{B`{ENlBh}}}}{{n{d{b}}}{{B`{ENnBh}}}}{{n{d{b}}}{{B`{EO`Bh}}}}{{n{d{b}}}{{B`{EObBh}}}}{{n{d{b}}}{{B`{EOdBh}}}}{{n{d{b}}}{{B`{EOfBh}}}}{{n{d{b}}}{{B`{EOhBh}}}}{{n{d{b}}}{{B`{EOjBh}}}}{{n{d{b}}}{{B`{EOlBh}}}}{{n{d{b}}}{{B`{EOnBh}}}}{{n{d{b}}}{{B`{F@`Bh}}}}{{n{d{b}}}{{B`{F@bBh}}}}{{n{d{b}}}{{B`{F@dBh}}}}{{n{d{b}}}{{B`{F@fBh}}}}{{n{d{b}}}{{B`{F@hBh}}}}{{n{d{b}}}{{B`{F@jBh}}}}{{n{d{b}}}{{B`{F@lBh}}}}{{n{d{b}}}{{B`{F@nBh}}}}{{n{d{b}}}{{B`{FA`Bh}}}}{{n{d{b}}}{{B`{FAbBh}}}}{{n{d{b}}}{{B`{FAdBh}}}}{{n{d{b}}}{{B`{FAfBh}}}}{{n{d{b}}}{{B`{FAhBh}}}}{{n{d{b}}}{{B`{FAjBh}}}}{{n{d{b}}}{{B`{FAlBh}}}}{{n{d{b}}}{{B`{FAnBh}}}}{{n{d{b}}}{{B`{FB`Bh}}}}{{n{d{b}}}{{B`{FBbBh}}}}{{n{d{b}}}{{B`{FBdBh}}}}{{n{d{b}}}{{B`{FBfBh}}}}{{n{d{b}}}{{B`{FBhBh}}}}{c{{B`{DFn}}}Bj}{c{{B`{DG`}}}Bj}{c{{B`{DGb}}}Bj}{c{{B`{DGd}}}Bj}{c{{B`{DGf}}}Bj}{c{{B`{DGh}}}Bj}{c{{B`{DGj}}}Bj}{c{{B`{DGl}}}Bj}{c{{B`{DGn}}}Bj}{c{{B`{DH`}}}Bj}{c{{B`{DHb}}}Bj}{c{{B`{DHd}}}Bj}{c{{B`{DHf}}}Bj}{c{{B`{DHh}}}Bj}{c{{B`{DHj}}}Bj}{c{{B`{DHl}}}Bj}{c{{B`{DHn}}}Bj}{c{{B`{DI`}}}Bj}{c{{B`{DIb}}}Bj}{c{{B`{DId}}}Bj}{c{{B`{DIf}}}Bj}{c{{B`{DIh}}}Bj}{c{{B`{DIj}}}Bj}{c{{B`{DIl}}}Bj}{c{{B`{DIn}}}Bj}{c{{B`{DJ`}}}Bj}{c{{B`{DJb}}}Bj}{c{{B`{DJd}}}Bj}{c{{B`{DJf}}}Bj}{c{{B`{DJh}}}Bj}{c{{B`{DJj}}}Bj}{c{{B`{DJl}}}Bj}{c{{B`{DJn}}}Bj}{c{{B`{DK`}}}Bj}{c{{B`{DKb}}}Bj}{c{{B`{DKd}}}Bj}{c{{B`{DKf}}}Bj}{c{{B`{DKh}}}Bj}{c{{B`{DKj}}}Bj}{c{{B`{DKl}}}Bj}{c{{B`{DKn}}}Bj}{c{{B`{DL`}}}Bj}{c{{B`{DLb}}}Bj}{c{{B`{DLd}}}Bj}{c{{B`{DLf}}}Bj}{c{{B`{DLh}}}Bj}{c{{B`{DLj}}}Bj}{c{{B`{DLl}}}Bj}{c{{B`{DLn}}}Bj}{c{{B`{DM`}}}Bj}{c{{B`{DMb}}}Bj}{c{{B`{DMd}}}Bj}{c{{B`{DMf}}}Bj}{c{{B`{DMh}}}Bj}{c{{B`{DMj}}}Bj}{c{{B`{DMl}}}Bj}{c{{B`{DMn}}}Bj}{c{{B`{DN`}}}Bj}{c{{B`{DNb}}}Bj}{c{{B`{DNd}}}Bj}{c{{B`{DNf}}}Bj}{c{{B`{DNh}}}Bj}{c{{B`{DNj}}}Bj}{c{{B`{DNl}}}Bj}{c{{B`{DNn}}}Bj}{c{{B`{DO`}}}Bj}{c{{B`{DOb}}}Bj}{c{{B`{DOd}}}Bj}{c{{B`{DOf}}}Bj}{c{{B`{DOh}}}Bj}{c{{B`{DOj}}}Bj}{c{{B`{DOl}}}Bj}{c{{B`{DOn}}}Bj}{c{{B`{E@`}}}Bj}{c{{B`{E@b}}}Bj}{c{{B`{E@d}}}Bj}{c{{B`{E@f}}}Bj}{c{{B`{E@h}}}Bj}{c{{B`{E@j}}}Bj}{c{{B`{E@l}}}Bj}{c{{B`{E@n}}}Bj}{c{{B`{EA`}}}Bj}{c{{B`{EAb}}}Bj}{c{{B`{EAd}}}Bj}{c{{B`{EAf}}}Bj}{c{{B`{EAh}}}Bj}{c{{B`{EAj}}}Bj}{c{{B`{EAl}}}Bj}{c{{B`{EAn}}}Bj}{c{{B`{EB`}}}Bj}{c{{B`{EBb}}}Bj}{c{{B`{EBd}}}Bj}{c{{B`{EBf}}}Bj}{c{{B`{EBh}}}Bj}{c{{B`{EBj}}}Bj}{c{{B`{EBl}}}Bj}{c{{B`{EBn}}}Bj}{c{{B`{EC`}}}Bj}{c{{B`{ECb}}}Bj}{c{{B`{ECd}}}Bj}{c{{B`{ECf}}}Bj}{c{{B`{ECh}}}Bj}{c{{B`{ECj}}}Bj}{c{{B`{ECl}}}Bj}{c{{B`{ECn}}}Bj}{c{{B`{ED`}}}Bj}{c{{B`{EDb}}}Bj}{c{{B`{EDd}}}Bj}{c{{B`{EDf}}}Bj}{c{{B`{EDh}}}Bj}{c{{B`{EDj}}}Bj}{c{{B`{EDl}}}Bj}{c{{B`{EDn}}}Bj}{c{{B`{EE`}}}Bj}{c{{B`{EEb}}}Bj}{c{{B`{EEd}}}Bj}{c{{B`{EEf}}}Bj}{c{{B`{EEh}}}Bj}{c{{B`{EEj}}}Bj}{c{{B`{EEl}}}Bj}{c{{B`{EEn}}}Bj}{c{{B`{EF`}}}Bj}{c{{B`{EFb}}}Bj}{c{{B`{EFd}}}Bj}{c{{B`{EFf}}}Bj}{c{{B`{EFh}}}Bj}{c{{B`{EFj}}}Bj}{c{{B`{EFl}}}Bj}{c{{B`{EFn}}}Bj}{c{{B`{EG`}}}Bj}{c{{B`{EGb}}}Bj}{c{{B`{EGd}}}Bj}{c{{B`{EGf}}}Bj}{c{{B`{EGh}}}Bj}{c{{B`{EGj}}}Bj}{c{{B`{EGl}}}Bj}{c{{B`{EGn}}}Bj}{c{{B`{EH`}}}Bj}{c{{B`{EHb}}}Bj}{c{{B`{EHd}}}Bj}{c{{B`{EHf}}}Bj}{c{{B`{EHh}}}Bj}{c{{B`{EHj}}}Bj}{c{{B`{EHl}}}Bj}{c{{B`{EHn}}}Bj}{c{{B`{EI`}}}Bj}{c{{B`{EIb}}}Bj}{c{{B`{EId}}}Bj}{c{{B`{EIf}}}Bj}{c{{B`{EIh}}}Bj}{c{{B`{EIj}}}Bj}{c{{B`{EIl}}}Bj}{c{{B`{EIn}}}Bj}{c{{B`{EJ`}}}Bj}{c{{B`{EJb}}}Bj}{c{{B`{EJd}}}Bj}{c{{B`{EJf}}}Bj}{c{{B`{EJh}}}Bj}{c{{B`{EJj}}}Bj}{c{{B`{EJl}}}Bj}{c{{B`{EJn}}}Bj}{c{{B`{EK`}}}Bj}{c{{B`{EKb}}}Bj}{c{{B`{EKd}}}Bj}{c{{B`{EKf}}}Bj}{c{{B`{EKh}}}Bj}{c{{B`{EKj}}}Bj}{c{{B`{EKl}}}Bj}{c{{B`{EKn}}}Bj}{c{{B`{EL`}}}Bj}{c{{B`{ELb}}}Bj}{c{{B`{ELd}}}Bj}{c{{B`{ELf}}}Bj}{c{{B`{ELh}}}Bj}{c{{B`{ELj}}}Bj}{c{{B`{ELl}}}Bj}{c{{B`{ELn}}}Bj}{c{{B`{EM`}}}Bj}{c{{B`{EMb}}}Bj}{c{{B`{EMd}}}Bj}{c{{B`{EMf}}}Bj}{c{{B`{EMh}}}Bj}{c{{B`{EMj}}}Bj}{c{{B`{EMl}}}Bj}{c{{B`{EMn}}}Bj}{c{{B`{EN`}}}Bj}{c{{B`{ENb}}}Bj}{c{{B`{ENd}}}Bj}{c{{B`{ENf}}}Bj}{c{{B`{ENh}}}Bj}{c{{B`{ENj}}}Bj}{c{{B`{ENl}}}Bj}{c{{B`{ENn}}}Bj}{c{{B`{EO`}}}Bj}{c{{B`{EOb}}}Bj}{c{{B`{EOd}}}Bj}{c{{B`{EOf}}}Bj}{c{{B`{EOh}}}Bj}{c{{B`{EOj}}}Bj}{c{{B`{EOl}}}Bj}{c{{B`{EOn}}}Bj}{c{{B`{F@`}}}Bj}{c{{B`{F@b}}}Bj}{c{{B`{F@d}}}Bj}{c{{B`{F@f}}}Bj}{c{{B`{F@h}}}Bj}{c{{B`{F@j}}}Bj}{c{{B`{F@l}}}Bj}{c{{B`{F@n}}}Bj}{c{{B`{FA`}}}Bj}{c{{B`{FAb}}}Bj}{c{{B`{FAd}}}Bj}{c{{B`{FAf}}}Bj}{c{{B`{FAh}}}Bj}{c{{B`{FAj}}}Bj}{c{{B`{FAl}}}Bj}{c{{B`{FAn}}}Bj}{c{{B`{FB`}}}Bj}{c{{B`{FBb}}}Bj}{c{{B`{FBd}}}Bj}{c{{B`{FBf}}}Bj}{c{{B`{FBh}}}Bj}{c{{B`{FBj}}}Bj}{c{{B`{FBl}}}Bj}{c{{B`{DCl}}}Bj}{c{{B`{FBn}}}Bj}{c{{B`{FC`}}}Bj}{c{{B`{DCn}}}Bj}{c{{B`{FCb}}}Bj}{c{{B`{FCd}}}Bj}{c{{B`{FCf}}}Bj}{c{{B`{FCh}}}Bj}{c{{B`{FCj}}}Bj}{c{{B`{DD`}}}Bj}{c{{B`{FCl}}}Bj}{c{{B`{FCn}}}Bj}{c{{B`{FD`}}}Bj}{c{{B`{FDb}}}Bj}{c{{B`{FDd}}}Bj}{c{{B`{FDf}}}Bj}{c{{B`{FDh}}}Bj}{c{{B`{FDj}}}Bj}{c{{B`{FDl}}}Bj}{c{{B`{FDn}}}Bj}{c{{B`{FE`}}}Bj}{c{{B`{DDb}}}Bj}{c{{B`{DDd}}}Bj}{c{{B`{FEb}}}Bj}{c{{B`{DDf}}}Bj}{c{{B`{FEd}}}Bj}{c{{B`{FEf}}}Bj}{c{{B`{FEh}}}Bj}{c{{B`{FEj}}}Bj}{c{{B`{FEl}}}Bj}{c{{B`{FEn}}}Bj}{c{{B`{FF`}}}Bj}{c{{B`{FFb}}}Bj}{c{{B`{FFd}}}Bj}{c{{B`{DDh}}}Bj}{c{{B`{FFf}}}Bj}{c{{B`{FFh}}}Bj}{c{{B`{FFj}}}Bj}{c{{B`{DDj}}}Bj}{c{{B`{FFl}}}Bj}{c{{B`{FFn}}}Bj}{c{{B`{FG`}}}Bj}{c{{B`{FGb}}}Bj}{c{{B`{FGd}}}Bj}{c{{B`{DDl}}}Bj}{c{{B`{DDn}}}Bj}{c{{B`{FGf}}}Bj}{c{{B`{FGh}}}Bj}{c{{B`{FGj}}}Bj}{c{{B`{FGl}}}Bj}{c{{B`{FGn}}}Bj}{c{{B`{FH`}}}Bj}{c{{B`{FHb}}}Bj}{c{{B`{DE`}}}Bj}{c{{B`{FHd}}}Bj}{c{{B`{FHf}}}Bj}{c{{B`{DEb}}}Bj}{c{{B`{DEd}}}Bj}{c{{B`{FHh}}}Bj}{c{{B`{FHj}}}Bj}{c{{B`{DEf}}}Bj}{c{{B`{FHl}}}Bj}{c{{B`{DEh}}}Bj}{c{{B`{FHn}}}Bj}{c{{B`{FI`}}}Bj}{c{{B`{FIb}}}Bj}{c{{B`{DEj}}}Bj}{c{{B`{DEl}}}Bj}{c{{B`{FId}}}Bj}{c{{B`{FIf}}}Bj}{c{{B`{FIh}}}Bj}{c{{B`{FIj}}}Bj}{c{{B`{FIl}}}Bj}{c{{B`{FIn}}}Bj}{c{{B`{DEn}}}Bj}{c{{B`{FJ`}}}Bj}{c{{B`{FJb}}}Bj}{c{{B`{DF`}}}Bj}{c{{B`{FJd}}}Bj}{c{{B`{FJf}}}Bj}{c{{B`{FJh}}}Bj}{c{{B`{FJj}}}Bj}{c{{B`{FJl}}}Bj}{c{{B`{FJn}}}Bj}{c{{B`{DFb}}}Bj}{c{{B`{DFd}}}Bj}{c{{B`{FK`}}}Bj}{c{{B`{FKb}}}Bj}{c{{B`{FKd}}}Bj}{c{{B`{FKf}}}Bj}{c{{B`{DFf}}}Bj}{c{{B`{FKh}}}Bj}{c{{B`{FKj}}}Bj}{c{{B`{DFh}}}Bj}{c{{B`{FKl}}}Bj}{c{{B`{FKn}}}Bj}{c{{B`{FL`}}}Bj}{c{{B`{FLb}}}Bj}{c{{B`{FLd}}}Bj}{c{{B`{DFj}}}Bj}{c{{B`{FLf}}}Bj}{c{{B`{FLh}}}Bj}{c{{B`{FLj}}}Bj}{c{{B`{FLl}}}Bj}{c{{B`{FLn}}}Bj}{c{{B`{FM`}}}Bj}{c{{B`{FMb}}}Bj}{c{{B`{FMd}}}Bj}{c{{B`{FMf}}}Bj}{c{{B`{FMh}}}Bj}{c{{B`{FMj}}}Bj}{c{{B`{FMl}}}Bj}{c{{B`{FMn}}}Bj}{c{{B`{FN`}}}Bj}{c{{B`{FNb}}}Bj}{c{{B`{FNd}}}Bj}{c{{B`{FNf}}}Bj}{c{{B`{FNh}}}Bj}{c{{B`{FNj}}}Bj}{c{{B`{FNl}}}Bj}{c{{B`{FNn}}}Bj}{c{{B`{FO`}}}Bj}{c{{B`{FOb}}}Bj}{c{{B`{FOd}}}Bj}{c{{B`{FOf}}}Bj}{c{{B`{FOh}}}Bj}{c{{B`{FOj}}}Bj}{c{{B`{FOl}}}Bj}{c{{B`{FOn}}}Bj}{c{{B`{DFl}}}Bj}{c{{B`{G@`}}}Bj}{c{{B`{G@b}}}Bj}{c{{B`{G@d}}}Bj}{c{{B`{G@f}}}Bj}{c{{B`{G@h}}}Bj}```````````{{DClDCl}DCl}{{DCnDCn}DCn}{{DD`DD`}DD`}{{DDbDDb}DDb}{{DDdDDd}DDd}{{DDfDDf}DDf}{{DDhDDh}DDh}{{DDjDDj}DDj}{{DDlDDl}DDl}{{DDnDDn}DDn}{{DE`DE`}DE`}{{DEbDEb}DEb}{{DEdDEd}DEd}{{DEfDEf}DEf}{{DEhDEh}DEh}{{DEjDEj}DEj}{{DElDEl}DEl}{{DEnDEn}DEn}{{DF`DF`}DF`}{{DFbDFb}DFb}{{DFdDFd}DFd}{{DFfDFf}DFf}{{DFhDFh}DFh}{{DFjDFj}DFj}{{DFlDFl}DFl}```````````````{{}DCl}{{}DCn}{{}DD`}{{}DDb}{{}DDd}{{}DDf}{{}DDh}{{}DDj}{{}DDl}{{}DDn}{{}DE`}{{}DEb}{{}DEd}{{}DEf}{{}DEh}{{}DEj}{{}DEl}{{}DEn}{{}DF`}{{}DFb}{{}DFd}{{}DFf}{{}DFh}{{}DFj}{{}DFl}```````````````{{DFnDFn}Bl}{{DG`DG`}Bl}{{DGbDGb}Bl}{{DGdDGd}Bl}{{DGfDGf}Bl}{{DGhDGh}Bl}{{DGjDGj}Bl}{{DGlDGl}Bl}{{DGnDGn}Bl}{{DH`DH`}Bl}{{DHbDHb}Bl}{{DHdDHd}Bl}{{DHfDHf}Bl}{{DHhDHh}Bl}{{DHjDHj}Bl}{{DHlDHl}Bl}{{DHnDHn}Bl}{{DI`DI`}Bl}{{DIbDIb}Bl}{{DIdDId}Bl}{{DIfDIf}Bl}{{DIhDIh}Bl}{{DIjDIj}Bl}{{DIlDIl}Bl}{{DInDIn}Bl}{{DJ`DJ`}Bl}{{DJbDJb}Bl}{{DJdDJd}Bl}{{DJfDJf}Bl}{{DJhDJh}Bl}{{DJjDJj}Bl}{{DJlDJl}Bl}{{DJnDJn}Bl}{{DK`DK`}Bl}{{DKbDKb}Bl}{{DKdDKd}Bl}{{DKfDKf}Bl}{{DKhDKh}Bl}{{DKjDKj}Bl}{{DKlDKl}Bl}{{DKnDKn}Bl}{{DL`DL`}Bl}{{DLbDLb}Bl}{{DLdDLd}Bl}{{DLfDLf}Bl}{{DLhDLh}Bl}{{DLjDLj}Bl}{{DLlDLl}Bl}{{DLnDLn}Bl}{{DM`DM`}Bl}{{DMbDMb}Bl}{{DMdDMd}Bl}{{DMfDMf}Bl}{{DMhDMh}Bl}{{DMjDMj}Bl}{{DMlDMl}Bl}{{DMnDMn}Bl}{{DN`DN`}Bl}{{DNbDNb}Bl}{{DNdDNd}Bl}{{DNfDNf}Bl}{{DNhDNh}Bl}{{DNjDNj}Bl}{{DNlDNl}Bl}{{DNnDNn}Bl}{{DO`DO`}Bl}{{DObDOb}Bl}{{DOdDOd}Bl}{{DOfDOf}Bl}{{DOhDOh}Bl}{{DOjDOj}Bl}{{DOlDOl}Bl}{{DOnDOn}Bl}{{E@`E@`}Bl}{{E@bE@b}Bl}{{E@dE@d}Bl}{{E@fE@f}Bl}{{E@hE@h}Bl}{{E@jE@j}Bl}{{E@lE@l}Bl}{{E@nE@n}Bl}{{EA`EA`}Bl}{{EAbEAb}Bl}{{EAdEAd}Bl}{{EAfEAf}Bl}{{EAhEAh}Bl}{{EAjEAj}Bl}{{EAlEAl}Bl}{{EAnEAn}Bl}{{EB`EB`}Bl}{{EBbEBb}Bl}{{EBdEBd}Bl}{{EBfEBf}Bl}{{EBhEBh}Bl}{{EBjEBj}Bl}{{EBlEBl}Bl}{{EBnEBn}Bl}{{EC`EC`}Bl}{{ECbECb}Bl}{{ECdECd}Bl}{{ECfECf}Bl}{{EChECh}Bl}{{ECjECj}Bl}{{EClECl}Bl}{{ECnECn}Bl}{{ED`ED`}Bl}{{EDbEDb}Bl}{{EDdEDd}Bl}{{EDfEDf}Bl}{{EDhEDh}Bl}{{EDjEDj}Bl}{{EDlEDl}Bl}{{EDnEDn}Bl}{{EE`EE`}Bl}{{EEbEEb}Bl}{{EEdEEd}Bl}{{EEfEEf}Bl}{{EEhEEh}Bl}{{EEjEEj}Bl}{{EElEEl}Bl}{{EEnEEn}Bl}{{EF`EF`}Bl}{{EFbEFb}Bl}{{EFdEFd}Bl}{{EFfEFf}Bl}{{EFhEFh}Bl}{{EFjEFj}Bl}{{EFlEFl}Bl}{{EFnEFn}Bl}{{EG`EG`}Bl}{{EGbEGb}Bl}{{EGdEGd}Bl}{{EGfEGf}Bl}{{EGhEGh}Bl}{{EGjEGj}Bl}{{EGlEGl}Bl}{{EGnEGn}Bl}{{EH`EH`}Bl}{{EHbEHb}Bl}{{EHdEHd}Bl}{{EHfEHf}Bl}{{EHhEHh}Bl}{{EHjEHj}Bl}{{EHlEHl}Bl}{{EHnEHn}Bl}{{EI`EI`}Bl}{{EIbEIb}Bl}{{EIdEId}Bl}{{EIfEIf}Bl}{{EIhEIh}Bl}{{EIjEIj}Bl}{{EIlEIl}Bl}{{EInEIn}Bl}{{EJ`EJ`}Bl}{{EJbEJb}Bl}{{EJdEJd}Bl}{{EJfEJf}Bl}{{EJhEJh}Bl}{{EJjEJj}Bl}{{EJlEJl}Bl}{{EJnEJn}Bl}{{EK`EK`}Bl}{{EKbEKb}Bl}{{EKdEKd}Bl}{{EKfEKf}Bl}{{EKhEKh}Bl}{{EKjEKj}Bl}{{EKlEKl}Bl}{{EKnEKn}Bl}{{EL`EL`}Bl}{{ELbELb}Bl}{{ELdELd}Bl}{{ELfELf}Bl}{{ELhELh}Bl}{{ELjELj}Bl}{{ELlELl}Bl}{{ELnELn}Bl}{{EM`EM`}Bl}{{EMbEMb}Bl}{{EMdEMd}Bl}{{EMfEMf}Bl}{{EMhEMh}Bl}{{EMjEMj}Bl}{{EMlEMl}Bl}{{EMnEMn}Bl}{{EN`EN`}Bl}{{ENbENb}Bl}{{ENdENd}Bl}{{ENfENf}Bl}{{ENhENh}Bl}{{ENjENj}Bl}{{ENlENl}Bl}{{ENnENn}Bl}{{EO`EO`}Bl}{{EObEOb}Bl}{{EOdEOd}Bl}{{EOfEOf}Bl}{{EOhEOh}Bl}{{EOjEOj}Bl}{{EOlEOl}Bl}{{EOnEOn}Bl}{{F@`F@`}Bl}{{F@bF@b}Bl}{{F@dF@d}Bl}{{F@fF@f}Bl}{{F@hF@h}Bl}{{F@jF@j}Bl}{{F@lF@l}Bl}{{F@nF@n}Bl}{{FA`FA`}Bl}{{FAbFAb}Bl}{{FAdFAd}Bl}{{FAfFAf}Bl}{{FAhFAh}Bl}{{FAjFAj}Bl}{{FAlFAl}Bl}{{FAnFAn}Bl}{{FB`FB`}Bl}{{FBbFBb}Bl}{{FBdFBd}Bl}{{FBfFBf}Bl}{{FBhFBh}Bl}{{FBjFBj}Bl}{{FBlFBl}Bl}{{DClDCl}Bl}{{FBnFBn}Bl}{{FC`FC`}Bl}{{DCnDCn}Bl}{{FCbFCb}Bl}{{FCdFCd}Bl}{{FCfFCf}Bl}{{FChFCh}Bl}{{FCjFCj}Bl}{{DD`DD`}Bl}{{FClFCl}Bl}{{FCnFCn}Bl}{{FD`FD`}Bl}{{FDbFDb}Bl}{{FDdFDd}Bl}{{FDfFDf}Bl}{{FDhFDh}Bl}{{FDjFDj}Bl}{{FDlFDl}Bl}{{FDnFDn}Bl}{{FE`FE`}Bl}{{DDbDDb}Bl}{{DDdDDd}Bl}{{FEbFEb}Bl}{{DDfDDf}Bl}{{FEdFEd}Bl}{{FEfFEf}Bl}{{FEhFEh}Bl}{{FEjFEj}Bl}{{FElFEl}Bl}{{FEnFEn}Bl}{{FF`FF`}Bl}{{FFbFFb}Bl}{{FFdFFd}Bl}{{DDhDDh}Bl}{{FFfFFf}Bl}{{FFhFFh}Bl}{{FFjFFj}Bl}{{DDjDDj}Bl}{{FFlFFl}Bl}{{FFnFFn}Bl}{{FG`FG`}Bl}{{FGbFGb}Bl}{{FGdFGd}Bl}{{DDlDDl}Bl}{{DDnDDn}Bl}{{FGfFGf}Bl}{{FGhFGh}Bl}{{FGjFGj}Bl}{{FGlFGl}Bl}{{FGnFGn}Bl}{{FH`FH`}Bl}{{FHbFHb}Bl}{{DE`DE`}Bl}{{FHdFHd}Bl}{{FHfFHf}Bl}{{DEbDEb}Bl}{{DEdDEd}Bl}{{FHhFHh}Bl}{{FHjFHj}Bl}{{DEfDEf}Bl}{{FHlFHl}Bl}{{DEhDEh}Bl}{{FHnFHn}Bl}{{FI`FI`}Bl}{{FIbFIb}Bl}{{DEjDEj}Bl}{{DElDEl}Bl}{{FIdFId}Bl}{{FIfFIf}Bl}{{FIhFIh}Bl}{{FIjFIj}Bl}{{FIlFIl}Bl}{{FInFIn}Bl}{{DEnDEn}Bl}{{FJ`FJ`}Bl}{{FJbFJb}Bl}{{DF`DF`}Bl}{{FJdFJd}Bl}{{FJfFJf}Bl}{{FJhFJh}Bl}{{FJjFJj}Bl}{{FJlFJl}Bl}{{FJnFJn}Bl}{{DFbDFb}Bl}{{DFdDFd}Bl}{{FK`FK`}Bl}{{FKbFKb}Bl}{{FKdFKd}Bl}{{FKfFKf}Bl}{{DFfDFf}Bl}{{FKhFKh}Bl}{{FKjFKj}Bl}{{DFhDFh}Bl}{{FKlFKl}Bl}{{FKnFKn}Bl}{{FL`FL`}Bl}{{FLbFLb}Bl}{{FLdFLd}Bl}{{DFjDFj}Bl}{{FLfFLf}Bl}{{FLhFLh}Bl}{{FLjFLj}Bl}{{FLlFLl}Bl}{{FLnFLn}Bl}{{FM`FM`}Bl}{{FMbFMb}Bl}{{FMdFMd}Bl}{{FMfFMf}Bl}{{FMhFMh}Bl}{{FMjFMj}Bl}{{FMlFMl}Bl}{{FMnFMn}Bl}{{FN`FN`}Bl}{{FNbFNb}Bl}{{FNdFNd}Bl}{{FNfFNf}Bl}{{FNhFNh}Bl}{{FNjFNj}Bl}{{FNlFNl}Bl}{{FNnFNn}Bl}{{FO`FO`}Bl}{{FObFOb}Bl}{{FOdFOd}Bl}{{FOfFOf}Bl}{{FOhFOh}Bl}{{FOjFOj}Bl}{{FOlFOl}Bl}{{FOnFOn}Bl}{{DFlDFl}Bl}{{G@`G@`}Bl}{{G@bG@b}Bl}{{G@dG@d}Bl}{{G@fG@f}Bl}{{G@hG@h}Bl}`````````````{{DClc}Af{{DBb{}{{DB`{DCl}}}}}}{{DCnc}Af{{DBb{}{{DB`{DCn}}}}}}{{DD`c}Af{{DBb{}{{DB`{DD`}}}}}}{{DDbc}Af{{DBb{}{{DB`{DDb}}}}}}{{DDdc}Af{{DBb{}{{DB`{DDd}}}}}}{{DDfc}Af{{DBb{}{{DB`{DDf}}}}}}{{DDhc}Af{{DBb{}{{DB`{DDh}}}}}}{{DDjc}Af{{DBb{}{{DB`{DDj}}}}}}{{DDlc}Af{{DBb{}{{DB`{DDl}}}}}}{{DDnc}Af{{DBb{}{{DB`{DDn}}}}}}{{DE`c}Af{{DBb{}{{DB`{DE`}}}}}}{{DEbc}Af{{DBb{}{{DB`{DEb}}}}}}{{DEdc}Af{{DBb{}{{DB`{DEd}}}}}}{{DEfc}Af{{DBb{}{{DB`{DEf}}}}}}{{DEhc}Af{{DBb{}{{DB`{DEh}}}}}}{{DEjc}Af{{DBb{}{{DB`{DEj}}}}}}{{DElc}Af{{DBb{}{{DB`{DEl}}}}}}{{DEnc}Af{{DBb{}{{DB`{DEn}}}}}}{{DF`c}Af{{DBb{}{{DB`{DF`}}}}}}{{DFbc}Af{{DBb{}{{DB`{DFb}}}}}}{{DFdc}Af{{DBb{}{{DB`{DFd}}}}}}{{DFfc}Af{{DBb{}{{DB`{DFf}}}}}}{{DFhc}Af{{DBb{}{{DB`{DFh}}}}}}{{DFjc}Af{{DBb{}{{DB`{DFj}}}}}}{{DFlc}Af{{DBb{}{{DB`{DFl}}}}}}{Bbb}`````````````````````````````````````````````````{{DFnBn}DBd}{{DG`Bn}DBd}{{DGbBn}DBd}{{DGdBn}DBd}{{DGfBn}DBd}{{DGhBn}DBd}{{DGjBn}DBd}{{DGlBn}DBd}{{DGnBn}DBd}{{DH`Bn}DBd}{{DHbBn}DBd}{{DHdBn}DBd}{{DHfBn}DBd}{{DHhBn}DBd}{{DHjBn}DBd}{{DHlBn}DBd}{{DHnBn}DBd}{{DI`Bn}DBd}{{DIbBn}DBd}{{DIdBn}DBd}{{DIfBn}DBd}{{DIhBn}DBd}{{DIjBn}DBd}{{DIlBn}DBd}{{DInBn}DBd}{{DJ`Bn}DBd}{{DJbBn}DBd}{{DJdBn}DBd}{{DJfBn}DBd}{{DJhBn}DBd}{{DJjBn}DBd}{{DJlBn}DBd}{{DJnBn}DBd}{{DK`Bn}DBd}{{DKbBn}DBd}{{DKdBn}DBd}{{DKfBn}DBd}{{DKhBn}DBd}{{DKjBn}DBd}{{DKlBn}DBd}{{DKnBn}DBd}{{DL`Bn}DBd}{{DLbBn}DBd}{{DLdBn}DBd}{{DLfBn}DBd}{{DLhBn}DBd}{{DLjBn}DBd}{{DLlBn}DBd}{{DLnBn}DBd}{{DM`Bn}DBd}{{DMbBn}DBd}{{DMdBn}DBd}{{DMfBn}DBd}{{DMhBn}DBd}{{DMjBn}DBd}{{DMlBn}DBd}{{DMnBn}DBd}{{DN`Bn}DBd}{{DNbBn}DBd}{{DNdBn}DBd}{{DNfBn}DBd}{{DNhBn}DBd}{{DNjBn}DBd}{{DNlBn}DBd}{{DNnBn}DBd}{{DO`Bn}DBd}{{DObBn}DBd}{{DOdBn}DBd}{{DOfBn}DBd}{{DOhBn}DBd}{{DOjBn}DBd}{{DOlBn}DBd}{{DOnBn}DBd}{{E@`Bn}DBd}{{E@bBn}DBd}{{E@dBn}DBd}{{E@fBn}DBd}{{E@hBn}DBd}{{E@jBn}DBd}{{E@lBn}DBd}{{E@nBn}DBd}{{EA`Bn}DBd}{{EAbBn}DBd}{{EAdBn}DBd}{{EAfBn}DBd}{{EAhBn}DBd}{{EAjBn}DBd}{{EAlBn}DBd}{{EAnBn}DBd}{{EB`Bn}DBd}{{EBbBn}DBd}{{EBdBn}DBd}{{EBfBn}DBd}{{EBhBn}DBd}{{EBjBn}DBd}{{EBlBn}DBd}{{EBnBn}DBd}{{EC`Bn}DBd}{{ECbBn}DBd}{{ECdBn}DBd}{{ECfBn}DBd}{{EChBn}DBd}{{ECjBn}DBd}{{EClBn}DBd}{{ECnBn}DBd}{{ED`Bn}DBd}{{EDbBn}DBd}{{EDdBn}DBd}{{EDfBn}DBd}{{EDhBn}DBd}{{EDjBn}DBd}{{EDlBn}DBd}{{EDnBn}DBd}{{EE`Bn}DBd}{{EEbBn}DBd}{{EEdBn}DBd}{{EEfBn}DBd}{{EEhBn}DBd}{{EEjBn}DBd}{{EElBn}DBd}{{EEnBn}DBd}{{EF`Bn}DBd}{{EFbBn}DBd}{{EFdBn}DBd}{{EFfBn}DBd}{{EFhBn}DBd}{{EFjBn}DBd}{{EFlBn}DBd}{{EFnBn}DBd}{{EG`Bn}DBd}{{EGbBn}DBd}{{EGdBn}DBd}{{EGfBn}DBd}{{EGhBn}DBd}{{EGjBn}DBd}{{EGlBn}DBd}{{EGnBn}DBd}{{EH`Bn}DBd}{{EHbBn}DBd}{{EHdBn}DBd}{{EHfBn}DBd}{{EHhBn}DBd}{{EHjBn}DBd}{{EHlBn}DBd}{{EHnBn}DBd}{{EI`Bn}DBd}{{EIbBn}DBd}{{EIdBn}DBd}{{EIfBn}DBd}{{EIhBn}DBd}{{EIjBn}DBd}{{EIlBn}DBd}{{EInBn}DBd}{{EJ`Bn}DBd}{{EJbBn}DBd}{{EJdBn}DBd}{{EJfBn}DBd}{{EJhBn}DBd}{{EJjBn}DBd}{{EJlBn}DBd}{{EJnBn}DBd}{{EK`Bn}DBd}{{EKbBn}DBd}{{EKdBn}DBd}{{EKfBn}DBd}{{EKhBn}DBd}{{EKjBn}DBd}{{EKlBn}DBd}{{EKnBn}DBd}{{EL`Bn}DBd}{{ELbBn}DBd}{{ELdBn}DBd}{{ELfBn}DBd}{{ELhBn}DBd}{{ELjBn}DBd}{{ELlBn}DBd}{{ELnBn}DBd}{{EM`Bn}DBd}{{EMbBn}DBd}{{EMdBn}DBd}{{EMfBn}DBd}{{EMhBn}DBd}{{EMjBn}DBd}{{EMlBn}DBd}{{EMnBn}DBd}{{EN`Bn}DBd}{{ENbBn}DBd}{{ENdBn}DBd}{{ENfBn}DBd}{{ENhBn}DBd}{{ENjBn}DBd}{{ENlBn}DBd}{{ENnBn}DBd}{{EO`Bn}DBd}{{EObBn}DBd}{{EOdBn}DBd}{{EOfBn}DBd}{{EOhBn}DBd}{{EOjBn}DBd}{{EOlBn}DBd}{{EOnBn}DBd}{{F@`Bn}DBd}{{F@bBn}DBd}{{F@dBn}DBd}{{F@fBn}DBd}{{F@hBn}DBd}{{F@jBn}DBd}{{F@lBn}DBd}{{F@nBn}DBd}{{FA`Bn}DBd}{{FAbBn}DBd}{{FAdBn}DBd}{{FAfBn}DBd}{{FAhBn}DBd}{{FAjBn}DBd}{{FAlBn}DBd}{{FAnBn}DBd}{{FB`Bn}DBd}{{FBbBn}DBd}{{FBdBn}DBd}{{FBfBn}DBd}{{FBhBn}DBd}{{FBjBn}DBd}{{FBlBn}DBd}{{DClBn}DBd}0000{{FBnBn}DBd}{{FC`Bn}DBd}{{DCnBn}DBd}0000{{FCbBn}DBd}{{FCdBn}DBd}{{FCfBn}DBd}{{FChBn}DBd}{{FCjBn}DBd}{{DD`Bn}DBd}0000{{FClBn}DBd}{{FCnBn}DBd}{{FD`Bn}DBd}{{FDbBn}DBd}{{FDdBn}DBd}{{FDfBn}DBd}{{FDhBn}DBd}{{FDjBn}DBd}{{FDlBn}DBd}{{FDnBn}DBd}{{FE`Bn}DBd}{{DDbBn}DBd}0000{{DDdBn}DBd}0000{{FEbBn}DBd}{{DDfBn}DBd}0000{{FEdBn}DBd}{{FEfBn}DBd}{{FEhBn}DBd}{{FEjBn}DBd}{{FElBn}DBd}{{FEnBn}DBd}{{FF`Bn}DBd}{{FFbBn}DBd}{{FFdBn}DBd}{{DDhBn}DBd}0000{{FFfBn}DBd}{{FFhBn}DBd}{{FFjBn}DBd}{{DDjBn}DBd}0000{{FFlBn}DBd}{{FFnBn}DBd}{{FG`Bn}DBd}{{FGbBn}DBd}{{FGdBn}DBd}{{DDlBn}DBd}0000{{DDnBn}DBd}0000{{FGfBn}DBd}{{FGhBn}DBd}{{FGjBn}DBd}{{FGlBn}DBd}{{FGnBn}DBd}{{FH`Bn}DBd}{{FHbBn}DBd}{{DE`Bn}DBd}0000{{FHdBn}DBd}{{FHfBn}DBd}{{DEbBn}DBd}0000{{DEdBn}DBd}0000{{FHhBn}DBd}{{FHjBn}DBd}{{DEfBn}DBd}0000{{FHlBn}DBd}{{DEhBn}DBd}0000{{FHnBn}DBd}{{FI`Bn}DBd}{{FIbBn}DBd}{{DEjBn}DBd}0000{{DElBn}DBd}0000{{FIdBn}DBd}{{FIfBn}DBd}{{FIhBn}DBd}{{FIjBn}DBd}{{FIlBn}DBd}{{FInBn}DBd}{{DEnBn}DBd}0000{{FJ`Bn}DBd}{{FJbBn}DBd}{{DF`Bn}DBd}0000{{FJdBn}DBd}{{FJfBn}DBd}{{FJhBn}DBd}{{FJjBn}DBd}{{FJlBn}DBd}{{FJnBn}DBd}{{DFbBn}DBd}0000{{DFdBn}DBd}0000{{FK`Bn}DBd}{{FKbBn}DBd}{{FKdBn}DBd}{{FKfBn}DBd}{{DFfBn}DBd}0000{{FKhBn}DBd}{{FKjBn}DBd}{{DFhBn}DBd}0000{{FKlBn}DBd}{{FKnBn}DBd}{{FL`Bn}DBd}{{FLbBn}DBd}{{FLdBn}DBd}{{DFjBn}DBd}0000{{FLfBn}DBd}{{FLhBn}DBd}{{FLjBn}DBd}{{FLlBn}DBd}{{FLnBn}DBd}{{FM`Bn}DBd}{{FMbBn}DBd}{{FMdBn}DBd}{{FMfBn}DBd}{{FMhBn}DBd}{{FMjBn}DBd}{{FMlBn}DBd}{{FMnBn}DBd}{{FN`Bn}DBd}{{FNbBn}DBd}{{FNdBn}DBd}{{FNfBn}DBd}{{FNhBn}DBd}{{FNjBn}DBd}{{FNlBn}DBd}{{FNnBn}DBd}{{FO`Bn}DBd}{{FObBn}DBd}{{FOdBn}DBd}{{FOfBn}DBd}{{FOhBn}DBd}{{FOjBn}DBd}{{FOlBn}DBd}{{FOnBn}DBd}{{DFlBn}DBd}0000{{G@`Bn}DBd}{{G@bBn}DBd}{{G@dBn}DBd}{{G@fBn}DBd}{{G@hBn}DBd}``````````````{cc{}}0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{f{{DBf{DCl}}}}{b{{DBf{DCn}}}}{f{{DBf{DD`}}}}{Bb{{DBf{DDb}}}}{Bb{{DBf{DDd}}}}{Bb{{DBf{DDf}}}}{b{{DBf{DDh}}}}{Bb{{DBf{DDj}}}}{f{{DBf{DDl}}}}{f{{DBf{DDn}}}}{f{{DBf{DE`}}}}{Hh{{DBf{DEb}}}}{Bb{{DBf{DEd}}}}{Bb{{DBf{DEf}}}}{f{{DBf{DEh}}}}{f{{DBf{DEj}}}}{Hh{{DBf{DEl}}}}{b{{DBf{DEn}}}}{Bb{{DBf{DF`}}}}{f{{DBf{DFb}}}}{f{{DBf{DFd}}}}{f{{DBf{DFf}}}}{f{{DBf{DFh}}}}{b{{DBf{DFj}}}}{b{{DBf{DFl}}}}{fDCl}{bDCn}{fDD`}{BbDDb}{BbDDd}{BbDDf}{bDDh}{BbDDj}{fDDl}{fDDn}{fDE`}{HhDEb}{BbDEd}{BbDEf}{fDEh}{fDEj}{HhDEl}{bDEn}{BbDF`}{fDFb}{fDFd}{fDFf}{fDFh}{bDFj}{bDFl}{fDCl}{bDCn}{fDD`}{BbDDb}{BbDDd}{BbDDf}{bDDh}{BbDDj}{fDDl}{fDDn}{fDE`}{HhDEb}{BbDEd}{BbDEf}{fDEh}{fDEj}{HhDEl}{bDEn}{BbDF`}{fDFb}{fDFd}{fDFf}{fDFh}{bDFj}{bDFl}{DBh{{DBf{FBj}}}}{DBh{{DBf{FBl}}}}{DBh{{DBf{FBn}}}}{DBh{{DBf{FC`}}}}{DBh{{DBf{FCb}}}}{DBh{{DBf{FCd}}}}{DBh{{DBf{FCf}}}}{DBh{{DBf{FCh}}}}{DBh{{DBf{FCj}}}}{DBh{{DBf{FCl}}}}{DBh{{DBf{FCn}}}}{DBh{{DBf{FD`}}}}{DBh{{DBf{FDb}}}}{DBh{{DBf{FDd}}}}{DBh{{DBf{FDf}}}}{DBh{{DBf{FDh}}}}{DBh{{DBf{FDj}}}}{DBh{{DBf{FDl}}}}{DBh{{DBf{FDn}}}}{DBh{{DBf{FE`}}}}{DBh{{DBf{FEb}}}}{DBh{{DBf{FEd}}}}{DBh{{DBf{FEf}}}}{DBh{{DBf{FEh}}}}{DBh{{DBf{FEj}}}}{DBh{{DBf{FEl}}}}{DBh{{DBf{FEn}}}}{DBh{{DBf{FF`}}}}{DBh{{DBf{FFb}}}}{DBh{{DBf{FFd}}}}{DBh{{DBf{FFf}}}}{DBh{{DBf{FFh}}}}{DBh{{DBf{FFj}}}}{DBh{{DBf{FFl}}}}{DBh{{DBf{FFn}}}}{DBh{{DBf{FG`}}}}{DBh{{DBf{FGb}}}}{DBh{{DBf{FGd}}}}{DBh{{DBf{FGf}}}}{DBh{{DBf{FGh}}}}{DBh{{DBf{FGj}}}}{DBh{{DBf{FGl}}}}{DBh{{DBf{FGn}}}}{DBh{{DBf{FH`}}}}{DBh{{DBf{FHb}}}}{DBh{{DBf{FHd}}}}{DBh{{DBf{FHf}}}}{DBh{{DBf{FHh}}}}{DBh{{DBf{FHj}}}}{DBh{{DBf{FHl}}}}{DBh{{DBf{FHn}}}}{DBh{{DBf{FI`}}}}{DBh{{DBf{FIb}}}}{DBh{{DBf{FId}}}}{DBh{{DBf{FIf}}}}{DBh{{DBf{FIh}}}}{DBh{{DBf{FIj}}}}{DBh{{DBf{FIl}}}}{DBh{{DBf{FIn}}}}{DBh{{DBf{FJ`}}}}{DBh{{DBf{FJb}}}}{DBh{{DBf{FJd}}}}{DBh{{DBf{FJf}}}}{DBh{{DBf{FJh}}}}{DBh{{DBf{FJj}}}}{DBh{{DBf{FJl}}}}{DBh{{DBf{FJn}}}}{DBh{{DBf{FK`}}}}{DBh{{DBf{FKb}}}}{DBh{{DBf{FKd}}}}{DBh{{DBf{FKf}}}}{DBh{{DBf{FKh}}}}{DBh{{DBf{FKj}}}}{DBh{{DBf{FKl}}}}{DBh{{DBf{FKn}}}}{DBh{{DBf{FL`}}}}{DBh{{DBf{FLb}}}}{DBh{{DBf{FLd}}}}{DBh{{DBf{FLf}}}}{DBh{{DBf{FLh}}}}{DBh{{DBf{FLj}}}}{DBh{{DBf{FLl}}}}{DBh{{DBf{FLn}}}}{DBh{{DBf{FM`}}}}{DBh{{DBf{FMb}}}}{DBh{{DBf{FMd}}}}{DBh{{DBf{FMf}}}}{DBh{{DBf{FMh}}}}{DBh{{DBf{FMj}}}}{DBh{{DBf{FMl}}}}{DBh{{DBf{FMn}}}}{DBh{{DBf{FN`}}}}{DBh{{DBf{FNb}}}}{DBh{{DBf{FNd}}}}{DBh{{DBf{FNf}}}}{DBh{{DBf{FNh}}}}{DBh{{DBf{FNj}}}}{DBh{{DBf{FNl}}}}{DBh{{DBf{FNn}}}}{DBh{{DBf{FO`}}}}{DBh{{DBf{FOb}}}}{DBh{{DBf{FOd}}}}{DBh{{DBf{FOf}}}}{DBh{{DBf{FOh}}}}{DBh{{DBf{FOj}}}}{DBh{{DBf{FOl}}}}{DBh{{DBf{FOn}}}}{DBh{{DBf{G@`}}}}{DBh{{DBf{G@b}}}}{DBh{{DBf{G@d}}}}{DBh{{DBf{G@f}}}}{DBh{{DBf{G@h}}}}{cDCl{{DBb{}{{DB`{DCl}}}}}}{cDCn{{DBb{}{{DB`{DCn}}}}}}{cDD`{{DBb{}{{DB`{DD`}}}}}}{cDDb{{DBb{}{{DB`{DDb}}}}}}{cDDd{{DBb{}{{DB`{DDd}}}}}}{cDDf{{DBb{}{{DB`{DDf}}}}}}{cDDh{{DBb{}{{DB`{DDh}}}}}}{cDDj{{DBb{}{{DB`{DDj}}}}}}{cDDl{{DBb{}{{DB`{DDl}}}}}}{cDDn{{DBb{}{{DB`{DDn}}}}}}{cDE`{{DBb{}{{DB`{DE`}}}}}}{cDEb{{DBb{}{{DB`{DEb}}}}}}{cDEd{{DBb{}{{DB`{DEd}}}}}}{cDEf{{DBb{}{{DB`{DEf}}}}}}{cDEh{{DBb{}{{DB`{DEh}}}}}}{cDEj{{DBb{}{{DB`{DEj}}}}}}{cDEl{{DBb{}{{DB`{DEl}}}}}}{cDEn{{DBb{}{{DB`{DEn}}}}}}{cDF`{{DBb{}{{DB`{DF`}}}}}}{cDFb{{DBb{}{{DB`{DFb}}}}}}{cDFd{{DBb{}{{DB`{DFd}}}}}}{cDFf{{DBb{}{{DB`{DFf}}}}}}{cDFh{{DBb{}{{DB`{DFh}}}}}}{cDFj{{DBb{}{{DB`{DFj}}}}}}{cDFl{{DBb{}{{DB`{DFl}}}}}}{Hh{{DBf{FBj}}}}{Hh{{DBf{FBl}}}}{Hh{{DBf{FBn}}}}{Hh{{DBf{FC`}}}}{Hh{{DBf{FCb}}}}{Hh{{DBf{FCd}}}}{Hh{{DBf{FCf}}}}{Hh{{DBf{FCh}}}}{Hh{{DBf{FCj}}}}{Hh{{DBf{FCl}}}}{Hh{{DBf{FCn}}}}{Hh{{DBf{FD`}}}}{Hh{{DBf{FDb}}}}{Hh{{DBf{FDd}}}}{Hh{{DBf{FDf}}}}{Hh{{DBf{FDh}}}}{Hh{{DBf{FDj}}}}{Hh{{DBf{FDl}}}}{Hh{{DBf{FDn}}}}{Hh{{DBf{FE`}}}}{Hh{{DBf{FEb}}}}{Hh{{DBf{FEd}}}}{Hh{{DBf{FEf}}}}{Hh{{DBf{FEh}}}}{Hh{{DBf{FEj}}}}{Hh{{DBf{FEl}}}}{Hh{{DBf{FEn}}}}{Hh{{DBf{FF`}}}}{Hh{{DBf{FFb}}}}{Hh{{DBf{FFd}}}}{Hh{{DBf{FFf}}}}{Hh{{DBf{FFh}}}}{Hh{{DBf{FFj}}}}{Hh{{DBf{FFl}}}}{Hh{{DBf{FFn}}}}{Hh{{DBf{FG`}}}}{Hh{{DBf{FGb}}}}{Hh{{DBf{FGd}}}}{Hh{{DBf{FGf}}}}{Hh{{DBf{FGh}}}}{Hh{{DBf{FGj}}}}{Hh{{DBf{FGl}}}}{Hh{{DBf{FGn}}}}{Hh{{DBf{FH`}}}}{Hh{{DBf{FHb}}}}{Hh{{DBf{FHd}}}}{Hh{{DBf{FHf}}}}{Hh{{DBf{FHh}}}}{Hh{{DBf{FHj}}}}{Hh{{DBf{FHl}}}}{Hh{{DBf{FHn}}}}{Hh{{DBf{FI`}}}}{Hh{{DBf{FIb}}}}{Hh{{DBf{FId}}}}{Hh{{DBf{FIf}}}}{Hh{{DBf{FIh}}}}{Hh{{DBf{FIj}}}}{Hh{{DBf{FIl}}}}{Hh{{DBf{FIn}}}}{Hh{{DBf{FJ`}}}}{Hh{{DBf{FJb}}}}{Hh{{DBf{FJd}}}}{Hh{{DBf{FJf}}}}{Hh{{DBf{FJh}}}}{Hh{{DBf{FJj}}}}{Hh{{DBf{FJl}}}}{Hh{{DBf{FJn}}}}{Hh{{DBf{FK`}}}}{Hh{{DBf{FKb}}}}{Hh{{DBf{FKd}}}}{Hh{{DBf{FKf}}}}{Hh{{DBf{FKh}}}}{Hh{{DBf{FKj}}}}{Hh{{DBf{FKl}}}}{Hh{{DBf{FKn}}}}{Hh{{DBf{FL`}}}}{Hh{{DBf{FLb}}}}{Hh{{DBf{FLd}}}}{Hh{{DBf{FLf}}}}{Hh{{DBf{FLh}}}}{Hh{{DBf{FLj}}}}{Hh{{DBf{FLl}}}}{Hh{{DBf{FLn}}}}{Hh{{DBf{FM`}}}}{Hh{{DBf{FMb}}}}{Hh{{DBf{FMd}}}}{Hh{{DBf{FMf}}}}{Hh{{DBf{FMh}}}}{Hh{{DBf{FMj}}}}{Hh{{DBf{FMl}}}}{Hh{{DBf{FMn}}}}{Hh{{DBf{FN`}}}}{Hh{{DBf{FNb}}}}{Hh{{DBf{FNd}}}}{Hh{{DBf{FNf}}}}{Hh{{DBf{FNh}}}}{Hh{{DBf{FNj}}}}{Hh{{DBf{FNl}}}}{Hh{{DBf{FNn}}}}{Hh{{DBf{FO`}}}}{Hh{{DBf{FOb}}}}{Hh{{DBf{FOd}}}}{Hh{{DBf{FOf}}}}{Hh{{DBf{FOh}}}}{Hh{{DBf{FOj}}}}{Hh{{DBf{FOl}}}}{Hh{{DBf{FOn}}}}{Hh{{DBf{G@`}}}}{Hh{{DBf{G@b}}}}{Hh{{DBf{G@d}}}}{Hh{{DBf{G@f}}}}{Hh{{DBf{G@h}}}}``````````````````````````````{{DClc}AfDBj}{{DCnc}AfDBj}{{DD`c}AfDBj}{{DDbc}AfDBj}{{DDdc}AfDBj}{{DDfc}AfDBj}{{DDhc}AfDBj}{{DDjc}AfDBj}{{DDlc}AfDBj}{{DDnc}AfDBj}{{DE`c}AfDBj}{{DEbc}AfDBj}{{DEdc}AfDBj}{{DEfc}AfDBj}{{DEhc}AfDBj}{{DEjc}AfDBj}{{DElc}AfDBj}{{DEnc}AfDBj}{{DF`c}AfDBj}{{DFbc}AfDBj}{{DFdc}AfDBj}{{DFfc}AfDBj}{{DFhc}AfDBj}{{DFjc}AfDBj}{{DFlc}AfDBj}```````````````````````````````````````````````````````````````{{DClDCl}Af}{{DCnDCn}Af}{{DD`DD`}Af}{{DDbDDb}Af}{{DDdDDd}Af}{{DDfDDf}Af}{{DDhDDh}Af}{{DDjDDj}Af}{{DDlDDl}Af}{{DDnDDn}Af}{{DE`DE`}Af}{{DEbDEb}Af}{{DEdDEd}Af}{{DEfDEf}Af}{{DEhDEh}Af}{{DEjDEj}Af}{{DElDEl}Af}{{DEnDEn}Af}{{DF`DF`}Af}{{DFbDFb}Af}{{DFdDFd}Af}{{DFfDFf}Af}{{DFhDFh}Af}{{DFjDFj}Af}{{DFlDFl}Af}``````````````{{DClDCl}DCl}{{DCnDCn}DCn}{{DD`DD`}DD`}{{DDbDDb}DDb}{{DDdDDd}DDd}{{DDfDDf}DDf}{{DDhDDh}DDh}{{DDjDDj}DDj}{{DDlDDl}DDl}{{DDnDDn}DDn}{{DE`DE`}DE`}{{DEbDEb}DEb}{{DEdDEd}DEd}{{DEfDEf}DEf}{{DEhDEh}DEh}{{DEjDEj}DEj}{{DElDEl}DEl}{{DEnDEn}DEn}{{DF`DF`}DF`}{{DFbDFb}DFb}{{DFdDFd}DFd}{{DFfDFf}DFf}{{DFhDFh}DFh}{{DFjDFj}DFj}{{DFlDFl}DFl}{{DClDCl}Bl}{{DCnDCn}Bl}{{DD`DD`}Bl}{{DDbDDb}Bl}{{DDdDDd}Bl}{{DDfDDf}Bl}{{DDhDDh}Bl}{{DDjDDj}Bl}{{DDlDDl}Bl}{{DDnDDn}Bl}{{DE`DE`}Bl}{{DEbDEb}Bl}{{DEdDEd}Bl}{{DEfDEf}Bl}{{DEhDEh}Bl}{{DEjDEj}Bl}{{DElDEl}Bl}{{DEnDEn}Bl}{{DF`DF`}Bl}{{DFbDFb}Bl}{{DFdDFd}Bl}{{DFfDFf}Bl}{{DFhDFh}Bl}{{DFjDFj}Bl}{{DFlDFl}Bl}`{ce{}{}}0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{DClBl}{DCnBl}{DD`Bl}{DDbBl}{DDdBl}{DDfBl}{DDhBl}{DDjBl}{DDlBl}{DDnBl}{DE`Bl}{DEbBl}{DEdBl}{DEfBl}{DEhBl}{DEjBl}{DElBl}{DEnBl}{DF`Bl}{DFbBl}{DFdBl}{DFfBl}{DFhBl}{DFjBl}{DFlBl}{DClBl}{DCnBl}{DD`Bl}{DDbBl}{DDdBl}{DDfBl}{DDhBl}{DDjBl}{DDlBl}{DDnBl}{DE`Bl}{DEbBl}{DEdBl}{DEfBl}{DEhBl}{DEjBl}{DElBl}{DEnBl}{DF`Bl}{DFbBl}{DFdBl}{DFfBl}{DFhBl}{DFjBl}{DFlBl}```````````````````````````````````````````````````````````````````````````````````````````````````````````````{DFnBb}`{Ah{{B`{BbAh}}}}{DFnAh}```````````````````````````````````````{DClDCl}{DCnDCn}{DD`DD`}{DDbDDb}{DDdDDd}{DDfDDf}{DDhDDh}{DDjDDj}{DDlDDl}{DDnDDn}{DE`DE`}{DEbDEb}{DEdDEd}{DEfDEf}{DEhDEh}{DEjDEj}{DElDEl}{DEnDEn}{DF`DF`}{DFbDFb}{DFdDFd}{DFfDFf}{DFhDFh}{DFjDFj}{DFlDFl}```````````````````````````````````````````````````````````````````````````````````````````{{nBb{d{b}}}{{B`{DFnBh}}}}{{DClDCl}{{DBf{DAn}}}}{{DCnDCn}{{DBf{DAn}}}}{{DD`DD`}{{DBf{DAn}}}}{{DDbDDb}{{DBf{DAn}}}}{{DDdDDd}{{DBf{DAn}}}}{{DDfDDf}{{DBf{DAn}}}}{{DDhDDh}{{DBf{DAn}}}}{{DDjDDj}{{DBf{DAn}}}}{{DDlDDl}{{DBf{DAn}}}}{{DDnDDn}{{DBf{DAn}}}}{{DE`DE`}{{DBf{DAn}}}}{{DEbDEb}{{DBf{DAn}}}}{{DEdDEd}{{DBf{DAn}}}}{{DEfDEf}{{DBf{DAn}}}}{{DEhDEh}{{DBf{DAn}}}}{{DEjDEj}{{DBf{DAn}}}}{{DElDEl}{{DBf{DAn}}}}{{DEnDEn}{{DBf{DAn}}}}{{DF`DF`}{{DBf{DAn}}}}{{DFbDFb}{{DBf{DAn}}}}{{DFdDFd}{{DBf{DAn}}}}{{DFfDFf}{{DBf{DAn}}}}{{DFhDFh}{{DBf{DAn}}}}{{DFjDFj}{{DBf{DAn}}}}{{DFlDFl}{{DBf{DAn}}}}`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{{DClDCl}Af}{{DCnDCn}Af}{{DD`DD`}Af}{{DDbDDb}Af}{{DDdDDd}Af}{{DDfDDf}Af}{{DDhDDh}Af}{{DDjDDj}Af}{{DDlDDl}Af}{{DDnDDn}Af}{{DE`DE`}Af}{{DEbDEb}Af}{{DEdDEd}Af}{{DEfDEf}Af}{{DEhDEh}Af}{{DEjDEj}Af}{{DElDEl}Af}{{DEnDEn}Af}{{DF`DF`}Af}{{DFbDFb}Af}{{DFdDFd}Af}{{DFfDFf}Af}{{DFhDFh}Af}{{DFjDFj}Af}{{DFlDFl}Af}`````````````````````````````````````````````````````````````````````````````````````````````````{{DFnn{d{b}}}Cl}{{DG`n{d{b}}}Cl}{{DGbn{d{b}}}Cl}{{DGdn{d{b}}}Cl}{{DGfn{d{b}}}Cl}{{DGhn{d{b}}}Cl}{{DGjn{d{b}}}Cl}{{DGln{d{b}}}Cl}{{DGnn{d{b}}}Cl}{{DH`n{d{b}}}Cl}{{DHbn{d{b}}}Cl}{{DHdn{d{b}}}Cl}{{DHfn{d{b}}}Cl}{{DHhn{d{b}}}Cl}{{DHjn{d{b}}}Cl}{{DHln{d{b}}}Cl}{{DHnn{d{b}}}Cl}{{DI`n{d{b}}}Cl}{{DIbn{d{b}}}Cl}{{DIdn{d{b}}}Cl}{{DIfn{d{b}}}Cl}{{DIhn{d{b}}}Cl}{{DIjn{d{b}}}Cl}{{DIln{d{b}}}Cl}{{DInn{d{b}}}Cl}{{DJ`n{d{b}}}Cl}{{DJbn{d{b}}}Cl}{{DJdn{d{b}}}Cl}{{DJfn{d{b}}}Cl}{{DJhn{d{b}}}Cl}{{DJjn{d{b}}}Cl}{{DJln{d{b}}}Cl}{{DJnn{d{b}}}Cl}{{DK`n{d{b}}}Cl}{{DKbn{d{b}}}Cl}{{DKdn{d{b}}}Cl}{{DKfn{d{b}}}Cl}{{DKhn{d{b}}}Cl}{{DKjn{d{b}}}Cl}{{DKln{d{b}}}Cl}{{DKnn{d{b}}}Cl}{{DL`n{d{b}}}Cl}{{DLbn{d{b}}}Cl}{{DLdn{d{b}}}Cl}{{DLfn{d{b}}}Cl}{{DLhn{d{b}}}Cl}{{DLjn{d{b}}}Cl}{{DLln{d{b}}}Cl}{{DLnn{d{b}}}Cl}{{DM`n{d{b}}}Cl}{{DMbn{d{b}}}Cl}{{DMdn{d{b}}}Cl}{{DMfn{d{b}}}Cl}{{DMhn{d{b}}}Cl}{{DMjn{d{b}}}Cl}{{DMln{d{b}}}Cl}{{DMnn{d{b}}}Cl}{{DN`n{d{b}}}Cl}{{DNbn{d{b}}}Cl}{{DNdn{d{b}}}Cl}{{DNfn{d{b}}}Cl}{{DNhn{d{b}}}Cl}{{DNjn{d{b}}}Cl}{{DNln{d{b}}}Cl}{{DNnn{d{b}}}Cl}{{DO`n{d{b}}}Cl}{{DObn{d{b}}}Cl}{{DOdn{d{b}}}Cl}{{DOfn{d{b}}}Cl}{{DOhn{d{b}}}Cl}{{DOjn{d{b}}}Cl}{{DOln{d{b}}}Cl}{{DOnn{d{b}}}Cl}{{E@`n{d{b}}}Cl}{{E@bn{d{b}}}Cl}{{E@dn{d{b}}}Cl}{{E@fn{d{b}}}Cl}{{E@hn{d{b}}}Cl}{{E@jn{d{b}}}Cl}{{E@ln{d{b}}}Cl}{{E@nn{d{b}}}Cl}{{EA`n{d{b}}}Cl}{{EAbn{d{b}}}Cl}{{EAdn{d{b}}}Cl}{{EAfn{d{b}}}Cl}{{EAhn{d{b}}}Cl}{{EAjn{d{b}}}Cl}{{EAln{d{b}}}Cl}{{EAnn{d{b}}}Cl}{{EB`n{d{b}}}Cl}{{EBbn{d{b}}}Cl}{{EBdn{d{b}}}Cl}{{EBfn{d{b}}}Cl}{{EBhn{d{b}}}Cl}{{EBjn{d{b}}}Cl}{{EBln{d{b}}}Cl}{{EBnn{d{b}}}Cl}{{EC`n{d{b}}}Cl}{{ECbn{d{b}}}Cl}{{ECdn{d{b}}}Cl}{{ECfn{d{b}}}Cl}{{EChn{d{b}}}Cl}{{ECjn{d{b}}}Cl}{{ECln{d{b}}}Cl}{{ECnn{d{b}}}Cl}{{ED`n{d{b}}}Cl}{{EDbn{d{b}}}Cl}{{EDdn{d{b}}}Cl}{{EDfn{d{b}}}Cl}{{EDhn{d{b}}}Cl}{{EDjn{d{b}}}Cl}{{EDln{d{b}}}Cl}{{EDnn{d{b}}}Cl}{{EE`n{d{b}}}Cl}{{EEbn{d{b}}}Cl}{{EEdn{d{b}}}Cl}{{EEfn{d{b}}}Cl}{{EEhn{d{b}}}Cl}{{EEjn{d{b}}}Cl}{{EEln{d{b}}}Cl}{{EEnn{d{b}}}Cl}{{EF`n{d{b}}}Cl}{{EFbn{d{b}}}Cl}{{EFdn{d{b}}}Cl}{{EFfn{d{b}}}Cl}{{EFhn{d{b}}}Cl}{{EFjn{d{b}}}Cl}{{EFln{d{b}}}Cl}{{EFnn{d{b}}}Cl}{{EG`n{d{b}}}Cl}{{EGbn{d{b}}}Cl}{{EGdn{d{b}}}Cl}{{EGfn{d{b}}}Cl}{{EGhn{d{b}}}Cl}{{EGjn{d{b}}}Cl}{{EGln{d{b}}}Cl}{{EGnn{d{b}}}Cl}{{EH`n{d{b}}}Cl}{{EHbn{d{b}}}Cl}{{EHdn{d{b}}}Cl}{{EHfn{d{b}}}Cl}{{EHhn{d{b}}}Cl}{{EHjn{d{b}}}Cl}{{EHln{d{b}}}Cl}{{EHnn{d{b}}}Cl}{{EI`n{d{b}}}Cl}{{EIbn{d{b}}}Cl}{{EIdn{d{b}}}Cl}{{EIfn{d{b}}}Cl}{{EIhn{d{b}}}Cl}{{EIjn{d{b}}}Cl}{{EIln{d{b}}}Cl}{{EInn{d{b}}}Cl}{{EJ`n{d{b}}}Cl}{{EJbn{d{b}}}Cl}{{EJdn{d{b}}}Cl}{{EJfn{d{b}}}Cl}{{EJhn{d{b}}}Cl}{{EJjn{d{b}}}Cl}{{EJln{d{b}}}Cl}{{EJnn{d{b}}}Cl}{{EK`n{d{b}}}Cl}{{EKbn{d{b}}}Cl}{{EKdn{d{b}}}Cl}{{EKfn{d{b}}}Cl}{{EKhn{d{b}}}Cl}{{EKjn{d{b}}}Cl}{{EKln{d{b}}}Cl}{{EKnn{d{b}}}Cl}{{EL`n{d{b}}}Cl}{{ELbn{d{b}}}Cl}{{ELdn{d{b}}}Cl}{{ELfn{d{b}}}Cl}{{ELhn{d{b}}}Cl}{{ELjn{d{b}}}Cl}{{ELln{d{b}}}Cl}{{ELnn{d{b}}}Cl}{{EM`n{d{b}}}Cl}{{EMbn{d{b}}}Cl}{{EMdn{d{b}}}Cl}{{EMfn{d{b}}}Cl}{{EMhn{d{b}}}Cl}{{EMjn{d{b}}}Cl}{{EMln{d{b}}}Cl}{{EMnn{d{b}}}Cl}{{EN`n{d{b}}}Cl}{{ENbn{d{b}}}Cl}{{ENdn{d{b}}}Cl}{{ENfn{d{b}}}Cl}{{ENhn{d{b}}}Cl}{{ENjn{d{b}}}Cl}{{ENln{d{b}}}Cl}{{ENnn{d{b}}}Cl}{{EO`n{d{b}}}Cl}{{EObn{d{b}}}Cl}{{EOdn{d{b}}}Cl}{{EOfn{d{b}}}Cl}{{EOhn{d{b}}}Cl}{{EOjn{d{b}}}Cl}{{EOln{d{b}}}Cl}{{EOnn{d{b}}}Cl}{{F@`n{d{b}}}Cl}{{F@bn{d{b}}}Cl}{{F@dn{d{b}}}Cl}{{F@fn{d{b}}}Cl}{{F@hn{d{b}}}Cl}{{F@jn{d{b}}}Cl}{{F@ln{d{b}}}Cl}{{F@nn{d{b}}}Cl}{{FA`n{d{b}}}Cl}{{FAbn{d{b}}}Cl}{{FAdn{d{b}}}Cl}{{FAfn{d{b}}}Cl}{{FAhn{d{b}}}Cl}{{FAjn{d{b}}}Cl}{{FAln{d{b}}}Cl}{{FAnn{d{b}}}Cl}{{FB`n{d{b}}}Cl}{{FBbn{d{b}}}Cl}{{FBdn{d{b}}}Cl}{{FBfn{d{b}}}Cl}{{FBhn{d{b}}}Cl}`{{DFnc}B`D`}{{DG`c}B`D`}{{DGbc}B`D`}{{DGdc}B`D`}{{DGfc}B`D`}{{DGhc}B`D`}{{DGjc}B`D`}{{DGlc}B`D`}{{DGnc}B`D`}{{DH`c}B`D`}{{DHbc}B`D`}{{DHdc}B`D`}{{DHfc}B`D`}{{DHhc}B`D`}{{DHjc}B`D`}{{DHlc}B`D`}{{DHnc}B`D`}{{DI`c}B`D`}{{DIbc}B`D`}{{DIdc}B`D`}{{DIfc}B`D`}{{DIhc}B`D`}{{DIjc}B`D`}{{DIlc}B`D`}{{DInc}B`D`}{{DJ`c}B`D`}{{DJbc}B`D`}{{DJdc}B`D`}{{DJfc}B`D`}{{DJhc}B`D`}{{DJjc}B`D`}{{DJlc}B`D`}{{DJnc}B`D`}{{DK`c}B`D`}{{DKbc}B`D`}{{DKdc}B`D`}{{DKfc}B`D`}{{DKhc}B`D`}{{DKjc}B`D`}{{DKlc}B`D`}{{DKnc}B`D`}{{DL`c}B`D`}{{DLbc}B`D`}{{DLdc}B`D`}{{DLfc}B`D`}{{DLhc}B`D`}{{DLjc}B`D`}{{DLlc}B`D`}{{DLnc}B`D`}{{DM`c}B`D`}{{DMbc}B`D`}{{DMdc}B`D`}{{DMfc}B`D`}{{DMhc}B`D`}{{DMjc}B`D`}{{DMlc}B`D`}{{DMnc}B`D`}{{DN`c}B`D`}{{DNbc}B`D`}{{DNdc}B`D`}{{DNfc}B`D`}{{DNhc}B`D`}{{DNjc}B`D`}{{DNlc}B`D`}{{DNnc}B`D`}{{DO`c}B`D`}{{DObc}B`D`}{{DOdc}B`D`}{{DOfc}B`D`}{{DOhc}B`D`}{{DOjc}B`D`}{{DOlc}B`D`}{{DOnc}B`D`}{{E@`c}B`D`}{{E@bc}B`D`}{{E@dc}B`D`}{{E@fc}B`D`}{{E@hc}B`D`}{{E@jc}B`D`}{{E@lc}B`D`}{{E@nc}B`D`}{{EA`c}B`D`}{{EAbc}B`D`}{{EAdc}B`D`}{{EAfc}B`D`}{{EAhc}B`D`}{{EAjc}B`D`}{{EAlc}B`D`}{{EAnc}B`D`}{{EB`c}B`D`}{{EBbc}B`D`}{{EBdc}B`D`}{{EBfc}B`D`}{{EBhc}B`D`}{{EBjc}B`D`}{{EBlc}B`D`}{{EBnc}B`D`}{{EC`c}B`D`}{{ECbc}B`D`}{{ECdc}B`D`}{{ECfc}B`D`}{{EChc}B`D`}{{ECjc}B`D`}{{EClc}B`D`}{{ECnc}B`D`}{{ED`c}B`D`}{{EDbc}B`D`}{{EDdc}B`D`}{{EDfc}B`D`}{{EDhc}B`D`}{{EDjc}B`D`}{{EDlc}B`D`}{{EDnc}B`D`}{{EE`c}B`D`}{{EEbc}B`D`}{{EEdc}B`D`}{{EEfc}B`D`}{{EEhc}B`D`}{{EEjc}B`D`}{{EElc}B`D`}{{EEnc}B`D`}{{EF`c}B`D`}{{EFbc}B`D`}{{EFdc}B`D`}{{EFfc}B`D`}{{EFhc}B`D`}{{EFjc}B`D`}{{EFlc}B`D`}{{EFnc}B`D`}{{EG`c}B`D`}{{EGbc}B`D`}{{EGdc}B`D`}{{EGfc}B`D`}{{EGhc}B`D`}{{EGjc}B`D`}{{EGlc}B`D`}{{EGnc}B`D`}{{EH`c}B`D`}{{EHbc}B`D`}{{EHdc}B`D`}{{EHfc}B`D`}{{EHhc}B`D`}{{EHjc}B`D`}{{EHlc}B`D`}{{EHnc}B`D`}{{EI`c}B`D`}{{EIbc}B`D`}{{EIdc}B`D`}{{EIfc}B`D`}{{EIhc}B`D`}{{EIjc}B`D`}{{EIlc}B`D`}{{EInc}B`D`}{{EJ`c}B`D`}{{EJbc}B`D`}{{EJdc}B`D`}{{EJfc}B`D`}{{EJhc}B`D`}{{EJjc}B`D`}{{EJlc}B`D`}{{EJnc}B`D`}{{EK`c}B`D`}{{EKbc}B`D`}{{EKdc}B`D`}{{EKfc}B`D`}{{EKhc}B`D`}{{EKjc}B`D`}{{EKlc}B`D`}{{EKnc}B`D`}{{EL`c}B`D`}{{ELbc}B`D`}{{ELdc}B`D`}{{ELfc}B`D`}{{ELhc}B`D`}{{ELjc}B`D`}{{ELlc}B`D`}{{ELnc}B`D`}{{EM`c}B`D`}{{EMbc}B`D`}{{EMdc}B`D`}{{EMfc}B`D`}{{EMhc}B`D`}{{EMjc}B`D`}{{EMlc}B`D`}{{EMnc}B`D`}{{EN`c}B`D`}{{ENbc}B`D`}{{ENdc}B`D`}{{ENfc}B`D`}{{ENhc}B`D`}{{ENjc}B`D`}{{ENlc}B`D`}{{ENnc}B`D`}{{EO`c}B`D`}{{EObc}B`D`}{{EOdc}B`D`}{{EOfc}B`D`}{{EOhc}B`D`}{{EOjc}B`D`}{{EOlc}B`D`}{{EOnc}B`D`}{{F@`c}B`D`}{{F@bc}B`D`}{{F@dc}B`D`}{{F@fc}B`D`}{{F@hc}B`D`}{{F@jc}B`D`}{{F@lc}B`D`}{{F@nc}B`D`}{{FA`c}B`D`}{{FAbc}B`D`}{{FAdc}B`D`}{{FAfc}B`D`}{{FAhc}B`D`}{{FAjc}B`D`}{{FAlc}B`D`}{{FAnc}B`D`}{{FB`c}B`D`}{{FBbc}B`D`}{{FBdc}B`D`}{{FBfc}B`D`}{{FBhc}B`D`}{{FBjc}B`D`}{{FBlc}B`D`}{{DClc}B`D`}{{FBnc}B`D`}{{FC`c}B`D`}{{DCnc}B`D`}{{FCbc}B`D`}{{FCdc}B`D`}{{FCfc}B`D`}{{FChc}B`D`}{{FCjc}B`D`}{{DD`c}B`D`}{{FClc}B`D`}{{FCnc}B`D`}{{FD`c}B`D`}{{FDbc}B`D`}{{FDdc}B`D`}{{FDfc}B`D`}{{FDhc}B`D`}{{FDjc}B`D`}{{FDlc}B`D`}{{FDnc}B`D`}{{FE`c}B`D`}{{DDbc}B`D`}{{DDdc}B`D`}{{FEbc}B`D`}{{DDfc}B`D`}{{FEdc}B`D`}{{FEfc}B`D`}{{FEhc}B`D`}{{FEjc}B`D`}{{FElc}B`D`}{{FEnc}B`D`}{{FF`c}B`D`}{{FFbc}B`D`}{{FFdc}B`D`}{{DDhc}B`D`}{{FFfc}B`D`}{{FFhc}B`D`}{{FFjc}B`D`}{{DDjc}B`D`}{{FFlc}B`D`}{{FFnc}B`D`}{{FG`c}B`D`}{{FGbc}B`D`}{{FGdc}B`D`}{{DDlc}B`D`}{{DDnc}B`D`}{{FGfc}B`D`}{{FGhc}B`D`}{{FGjc}B`D`}{{FGlc}B`D`}{{FGnc}B`D`}{{FH`c}B`D`}{{FHbc}B`D`}{{DE`c}B`D`}{{FHdc}B`D`}{{FHfc}B`D`}{{DEbc}B`D`}{{DEdc}B`D`}{{FHhc}B`D`}{{FHjc}B`D`}{{DEfc}B`D`}{{FHlc}B`D`}{{DEhc}B`D`}{{FHnc}B`D`}{{FI`c}B`D`}{{FIbc}B`D`}{{DEjc}B`D`}{{DElc}B`D`}{{FIdc}B`D`}{{FIfc}B`D`}{{FIhc}B`D`}{{FIjc}B`D`}{{FIlc}B`D`}{{FInc}B`D`}{{DEnc}B`D`}{{FJ`c}B`D`}{{FJbc}B`D`}{{DF`c}B`D`}{{FJdc}B`D`}{{FJfc}B`D`}{{FJhc}B`D`}{{FJjc}B`D`}{{FJlc}B`D`}{{FJnc}B`D`}{{DFbc}B`D`}{{DFdc}B`D`}{{FK`c}B`D`}{{FKbc}B`D`}{{FKdc}B`D`}{{FKfc}B`D`}{{DFfc}B`D`}{{FKhc}B`D`}{{FKjc}B`D`}{{DFhc}B`D`}{{FKlc}B`D`}{{FKnc}B`D`}{{FL`c}B`D`}{{FLbc}B`D`}{{FLdc}B`D`}{{DFjc}B`D`}{{FLfc}B`D`}{{FLhc}B`D`}{{FLjc}B`D`}{{FLlc}B`D`}{{FLnc}B`D`}{{FM`c}B`D`}{{FMbc}B`D`}{{FMdc}B`D`}{{FMfc}B`D`}{{FMhc}B`D`}{{FMjc}B`D`}{{FMlc}B`D`}{{FMnc}B`D`}{{FN`c}B`D`}{{FNbc}B`D`}{{FNdc}B`D`}{{FNfc}B`D`}{{FNhc}B`D`}{{FNjc}B`D`}{{FNlc}B`D`}{{FNnc}B`D`}{{FO`c}B`D`}{{FObc}B`D`}{{FOdc}B`D`}{{FOfc}B`D`}{{FOhc}B`D`}{{FOjc}B`D`}{{FOlc}B`D`}{{FOnc}B`D`}{{DFlc}B`D`}{{G@`c}B`D`}{{G@bc}B`D`}{{G@dc}B`D`}{{G@fc}B`D`}{{G@hc}B`D`}````````{{DClDClBl}Af}{{DCnDCnBl}Af}{{DD`DD`Bl}Af}{{DDbDDbBl}Af}{{DDdDDdBl}Af}{{DDfDDfBl}Af}{{DDhDDhBl}Af}{{DDjDDjBl}Af}{{DDlDDlBl}Af}{{DDnDDnBl}Af}{{DE`DE`Bl}Af}{{DEbDEbBl}Af}{{DEdDEdBl}Af}{{DEfDEfBl}Af}{{DEhDEhBl}Af}{{DEjDEjBl}Af}{{DElDElBl}Af}{{DEnDEnBl}Af}{{DF`DF`Bl}Af}{{DFbDFbBl}Af}{{DFdDFdBl}Af}{{DFfDFfBl}Af}{{DFhDFhBl}Af}{{DFjDFjBl}Af}{{DFlDFlBl}Af}````````````````````````````````````````{{DClDCl}DCl}{{DCnDCn}DCn}{{DD`DD`}DD`}{{DDbDDb}DDb}{{DDdDDd}DDd}{{DDfDDf}DDf}{{DDhDDh}DDh}{{DDjDDj}DDj}{{DDlDDl}DDl}{{DDnDDn}DDn}{{DE`DE`}DE`}{{DEbDEb}DEb}{{DEdDEd}DEd}{{DEfDEf}DEf}{{DEhDEh}DEh}{{DEjDEj}DEj}{{DElDEl}DEl}{{DEnDEn}DEn}{{DF`DF`}DF`}{{DFbDFb}DFb}{{DFdDFd}DFd}{{DFfDFf}DFf}{{DFhDFh}DFh}{{DFjDFj}DFj}{{DFlDFl}DFl}{{DClDCl}Af}{{DCnDCn}Af}{{DD`DD`}Af}{{DDbDDb}Af}{{DDdDDd}Af}{{DDfDDf}Af}{{DDhDDh}Af}{{DDjDDj}Af}{{DDlDDl}Af}{{DDnDDn}Af}{{DE`DE`}Af}{{DEbDEb}Af}{{DEdDEd}Af}{{DEfDEf}Af}{{DEhDEh}Af}{{DEjDEj}Af}{{DElDEl}Af}{{DEnDEn}Af}{{DF`DF`}Af}{{DFbDFb}Af}{{DFdDFd}Af}{{DFfDFf}Af}{{DFhDFh}Af}{{DFjDFj}Af}{{DFlDFl}Af}`````{{DClDCl}DCl}{{DCnDCn}DCn}{{DD`DD`}DD`}{{DDbDDb}DDb}{{DDdDDd}DDd}{{DDfDDf}DDf}{{DDhDDh}DDh}{{DDjDDj}DDj}{{DDlDDl}DDl}{{DDnDDn}DDn}{{DE`DE`}DE`}{{DEbDEb}DEb}{{DEdDEd}DEd}{{DEfDEf}DEf}{{DEhDEh}DEh}{{DEjDEj}DEj}{{DElDEl}DEl}{{DEnDEn}DEn}{{DF`DF`}DF`}{{DFbDFb}DFb}{{DFdDFd}DFd}{{DFfDFf}DFf}{{DFhDFh}DFh}{{DFjDFj}DFj}{{DFlDFl}DFl}```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{FBj{{DBf{DBh}}}}{FBl{{DBf{DBh}}}}{FBn{{DBf{DBh}}}}{FC`{{DBf{DBh}}}}{FCb{{DBf{DBh}}}}{FCd{{DBf{DBh}}}}{FCf{{DBf{DBh}}}}{FCh{{DBf{DBh}}}}{FCj{{DBf{DBh}}}}{FCl{{DBf{DBh}}}}{FCn{{DBf{DBh}}}}{FD`{{DBf{DBh}}}}{FDb{{DBf{DBh}}}}{FDd{{DBf{DBh}}}}{FDf{{DBf{DBh}}}}{FDh{{DBf{DBh}}}}{FDj{{DBf{DBh}}}}{FDl{{DBf{DBh}}}}{FDn{{DBf{DBh}}}}{FE`{{DBf{DBh}}}}{FEb{{DBf{DBh}}}}{FEd{{DBf{DBh}}}}{FEf{{DBf{DBh}}}}{FEh{{DBf{DBh}}}}{FEj{{DBf{DBh}}}}{FEl{{DBf{DBh}}}}{FEn{{DBf{DBh}}}}{FF`{{DBf{DBh}}}}{FFb{{DBf{DBh}}}}{FFd{{DBf{DBh}}}}{FFf{{DBf{DBh}}}}{FFh{{DBf{DBh}}}}{FFj{{DBf{DBh}}}}{FFl{{DBf{DBh}}}}{FFn{{DBf{DBh}}}}{FG`{{DBf{DBh}}}}{FGb{{DBf{DBh}}}}{FGd{{DBf{DBh}}}}{FGf{{DBf{DBh}}}}{FGh{{DBf{DBh}}}}{FGj{{DBf{DBh}}}}{FGl{{DBf{DBh}}}}{FGn{{DBf{DBh}}}}{FH`{{DBf{DBh}}}}{FHb{{DBf{DBh}}}}{FHd{{DBf{DBh}}}}{FHf{{DBf{DBh}}}}{FHh{{DBf{DBh}}}}{FHj{{DBf{DBh}}}}{FHl{{DBf{DBh}}}}{FHn{{DBf{DBh}}}}{FI`{{DBf{DBh}}}}{FIb{{DBf{DBh}}}}{FId{{DBf{DBh}}}}{FIf{{DBf{DBh}}}}{FIh{{DBf{DBh}}}}{FIj{{DBf{DBh}}}}{FIl{{DBf{DBh}}}}{FIn{{DBf{DBh}}}}{FJ`{{DBf{DBh}}}}{FJb{{DBf{DBh}}}}{FJd{{DBf{DBh}}}}{FJf{{DBf{DBh}}}}{FJh{{DBf{DBh}}}}{FJj{{DBf{DBh}}}}{FJl{{DBf{DBh}}}}{FJn{{DBf{DBh}}}}{FK`{{DBf{DBh}}}}{FKb{{DBf{DBh}}}}{FKd{{DBf{DBh}}}}{FKf{{DBf{DBh}}}}{FKh{{DBf{DBh}}}}{FKj{{DBf{DBh}}}}{FKl{{DBf{DBh}}}}{FKn{{DBf{DBh}}}}{FL`{{DBf{DBh}}}}{FLb{{DBf{DBh}}}}{FLd{{DBf{DBh}}}}{FLf{{DBf{DBh}}}}{FLh{{DBf{DBh}}}}{FLj{{DBf{DBh}}}}{FLl{{DBf{DBh}}}}{FLn{{DBf{DBh}}}}{FM`{{DBf{DBh}}}}{FMb{{DBf{DBh}}}}{FMd{{DBf{DBh}}}}{FMf{{DBf{DBh}}}}{FMh{{DBf{DBh}}}}{FMj{{DBf{DBh}}}}{FMl{{DBf{DBh}}}}{FMn{{DBf{DBh}}}}{FN`{{DBf{DBh}}}}{FNb{{DBf{DBh}}}}{FNd{{DBf{DBh}}}}{FNf{{DBf{DBh}}}}{FNh{{DBf{DBh}}}}{FNj{{DBf{DBh}}}}{FNl{{DBf{DBh}}}}{FNn{{DBf{DBh}}}}{FO`{{DBf{DBh}}}}{FOb{{DBf{DBh}}}}{FOd{{DBf{DBh}}}}{FOf{{DBf{DBh}}}}{FOh{{DBf{DBh}}}}{FOj{{DBf{DBh}}}}{FOl{{DBf{DBh}}}}{FOn{{DBf{DBh}}}}{G@`{{DBf{DBh}}}}{G@b{{DBf{DBh}}}}{G@d{{DBf{DBh}}}}{G@f{{DBf{DBh}}}}{G@h{{DBf{DBh}}}}{ce{}{}}0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{FBj{{DBf{Hh}}}}{FBl{{DBf{Hh}}}}{FBn{{DBf{Hh}}}}{FC`{{DBf{Hh}}}}{FCb{{DBf{Hh}}}}{FCd{{DBf{Hh}}}}{FCf{{DBf{Hh}}}}{FCh{{DBf{Hh}}}}{FCj{{DBf{Hh}}}}{FCl{{DBf{Hh}}}}{FCn{{DBf{Hh}}}}{FD`{{DBf{Hh}}}}{FDb{{DBf{Hh}}}}{FDd{{DBf{Hh}}}}{FDf{{DBf{Hh}}}}{FDh{{DBf{Hh}}}}{FDj{{DBf{Hh}}}}{FDl{{DBf{Hh}}}}{FDn{{DBf{Hh}}}}{FE`{{DBf{Hh}}}}{FEb{{DBf{Hh}}}}{FEd{{DBf{Hh}}}}{FEf{{DBf{Hh}}}}{FEh{{DBf{Hh}}}}{FEj{{DBf{Hh}}}}{FEl{{DBf{Hh}}}}{FEn{{DBf{Hh}}}}{FF`{{DBf{Hh}}}}{FFb{{DBf{Hh}}}}{FFd{{DBf{Hh}}}}{FFf{{DBf{Hh}}}}{FFh{{DBf{Hh}}}}{FFj{{DBf{Hh}}}}{FFl{{DBf{Hh}}}}{FFn{{DBf{Hh}}}}{FG`{{DBf{Hh}}}}{FGb{{DBf{Hh}}}}{FGd{{DBf{Hh}}}}{FGf{{DBf{Hh}}}}{FGh{{DBf{Hh}}}}{FGj{{DBf{Hh}}}}{FGl{{DBf{Hh}}}}{FGn{{DBf{Hh}}}}{FH`{{DBf{Hh}}}}{FHb{{DBf{Hh}}}}{FHd{{DBf{Hh}}}}{FHf{{DBf{Hh}}}}{FHh{{DBf{Hh}}}}{FHj{{DBf{Hh}}}}{FHl{{DBf{Hh}}}}{FHn{{DBf{Hh}}}}{FI`{{DBf{Hh}}}}{FIb{{DBf{Hh}}}}{FId{{DBf{Hh}}}}{FIf{{DBf{Hh}}}}{FIh{{DBf{Hh}}}}{FIj{{DBf{Hh}}}}{FIl{{DBf{Hh}}}}{FIn{{DBf{Hh}}}}{FJ`{{DBf{Hh}}}}{FJb{{DBf{Hh}}}}{FJd{{DBf{Hh}}}}{FJf{{DBf{Hh}}}}{FJh{{DBf{Hh}}}}{FJj{{DBf{Hh}}}}{FJl{{DBf{Hh}}}}{FJn{{DBf{Hh}}}}{FK`{{DBf{Hh}}}}{FKb{{DBf{Hh}}}}{FKd{{DBf{Hh}}}}{FKf{{DBf{Hh}}}}{FKh{{DBf{Hh}}}}{FKj{{DBf{Hh}}}}{FKl{{DBf{Hh}}}}{FKn{{DBf{Hh}}}}{FL`{{DBf{Hh}}}}{FLb{{DBf{Hh}}}}{FLd{{DBf{Hh}}}}{FLf{{DBf{Hh}}}}{FLh{{DBf{Hh}}}}{FLj{{DBf{Hh}}}}{FLl{{DBf{Hh}}}}{FLn{{DBf{Hh}}}}{FM`{{DBf{Hh}}}}{FMb{{DBf{Hh}}}}{FMd{{DBf{Hh}}}}{FMf{{DBf{Hh}}}}{FMh{{DBf{Hh}}}}{FMj{{DBf{Hh}}}}{FMl{{DBf{Hh}}}}{FMn{{DBf{Hh}}}}{FN`{{DBf{Hh}}}}{FNb{{DBf{Hh}}}}{FNd{{DBf{Hh}}}}{FNf{{DBf{Hh}}}}{FNh{{DBf{Hh}}}}{FNj{{DBf{Hh}}}}{FNl{{DBf{Hh}}}}{FNn{{DBf{Hh}}}}{FO`{{DBf{Hh}}}}{FOb{{DBf{Hh}}}}{FOd{{DBf{Hh}}}}{FOf{{DBf{Hh}}}}{FOh{{DBf{Hh}}}}{FOj{{DBf{Hh}}}}{FOl{{DBf{Hh}}}}{FOn{{DBf{Hh}}}}{G@`{{DBf{Hh}}}}{G@b{{DBf{Hh}}}}{G@d{{DBf{Hh}}}}{G@f{{DBf{Hh}}}}{G@h{{DBf{Hh}}}}{{DClDCl}Af}{{DCnDCn}Af}{{DD`DD`}Af}{{DDbDDb}Af}{{DDdDDd}Af}{{DDfDDf}Af}{{DDhDDh}Af}{{DDjDDj}Af}{{DDlDDl}Af}{{DDnDDn}Af}{{DE`DE`}Af}{{DEbDEb}Af}{{DEdDEd}Af}{{DEfDEf}Af}{{DEhDEh}Af}{{DEjDEj}Af}{{DElDEl}Af}{{DEnDEn}Af}{{DF`DF`}Af}{{DFbDFb}Af}{{DFdDFd}Af}{{DFfDFf}Af}{{DFhDFh}Af}{{DFjDFj}Af}{{DFlDFl}Af}````````{c{{B`{e}}}{}{}}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000```````````{cDd{}}0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000```````````{{DClDCl}DCl}{{DCnDCn}DCn}{{DD`DD`}DD`}{{DDbDDb}DDb}{{DDdDDd}DDd}{{DDfDDf}DDf}{{DDhDDh}DDh}{{DDjDDj}DDj}{{DDlDDl}DDl}{{DDnDDn}DDn}{{DE`DE`}DE`}{{DEbDEb}DEb}{{DEdDEd}DEd}{{DEfDEf}DEf}{{DEhDEh}DEh}{{DEjDEj}DEj}{{DElDEl}DEl}{{DEnDEn}DEn}{{DF`DF`}DF`}{{DFbDFb}DFb}{{DFdDFd}DFd}{{DFfDFf}DFf}{{DFhDFh}DFh}{{DFjDFj}DFj}{{DFlDFl}DFl}`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{ce{}{}}00000{{BhBn}{{B`{AfC`}}}}0{{ChBn}{{B`{AfC`}}}}0{{CnBn}{{B`{AfC`}}}}0{cc{}}{BhCh}{AnCh}2{AnCn}3777{cG@j{}}00{c{{B`{e}}}{}{}}00000{cDd{}}00```````````````````````````::::::::::{G@lG@l}{G@nG@n}{GA`GA`}{GAbGAb}{GAdGAd}{{ce}Af{}{}}0000{{}G@n}{{}GA`}{{}GAb}{{}GAd}{Bb{{B`{G@lAh}}}}{{n{d{b}}}{{B`{G@nBh}}}}{{n{d{b}}}{{B`{GA`Bh}}}}{c{{B`{G@l}}}Bj}{c{{B`{G@n}}}Bj}{c{{B`{GA`}}}Bj}{c{{B`{GAb}}}Bj}{c{{B`{GAd}}}Bj}{{G@lG@l}Bl}{{G@nG@n}Bl}{{GA`GA`}Bl}{{GAbGAb}Bl}{{GAdGAd}Bl}{Bbb}{{G@lBn}DBd}{{G@nBn}DBd}{{GA`Bn}DBd}{{GAbBn}DBd}{{GAdBn}DBd}{cc{}}0000{DBh{{DBf{GAb}}}}{DBh{{DBf{GAd}}}}{Hh{{DBf{GAb}}}}{Hh{{DBf{GAd}}}}{ce{}{}}0000`````{G@lBb}{Ah{{B`{BbAh}}}}{G@lAh}``````{{nBb{d{b}}}{{B`{G@lBh}}}}{{G@ln{d{b}}}Cl}{{G@nn{d{b}}}Cl}{{GA`n{d{b}}}Cl}{{G@lc}B`D`}{{G@nc}B`D`}{{GA`c}B`D`}{{GAbc}B`D`}{{GAdc}B`D`}`{GAb{{DBf{DBh}}}}{GAd{{DBf{DBh}}}}>>>>>{GAb{{DBf{Hh}}}}{GAd{{DBf{Hh}}}}{c{{B`{e}}}{}{}}000000000`````{cDd{}}0000`{ce{}{}}0{{{Cd{c}}Cl}ClCj}{cc{}}2{c{{Cd{c}}}Cj}{{{Cd{c}}Cl}{{B`{{d{b}}Ch}}}Cj}0{{{Cd{c}}}{{B`{bCh}}}Cj}{{{Cd{c}}}cCj}0887```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{{}GAf}{{}GAh}{{}GAj}{{}GAl}{{}GAn}{{}GB`}{{}GBb}{{}GBd}{{}GBf}{{}GBh}{{}GBj}{{}GBl}{{}GBn}{{}GC`}{{}GCb}{{}GCd}{{}GCf}{{}GCh}{{}GCj}{{}GCl}{{}GCn}{{}GD`}{{}GDb}{{}GDd}{{}GDf}{{}GDh}{{}GDj}{{}GDl}````````````````````````````````````````````````````````````````````````````````````````````````````````{{GAfGAf}GAf}{{GAhGAh}GAh}{{GAjGAj}GAj}{{GAlGAl}GAl}{{GAnGAn}GAn}{{GB`GB`}GB`}{{GBbGBb}GBb}{{GBdGBd}GBd}{{GBfGBf}GBf}{{GBhGBh}GBh}{{GBjGBj}GBj}{{GBlGBl}GBl}{{GBnGBn}GBn}{{GC`GC`}GC`}{{GCbGCb}GCb}{{GCdGCd}GCd}{{GCfGCf}GCf}{{GChGCh}GCh}{{GCjGCj}GCj}{{GClGCl}GCl}{{GCnGCn}GCn}{{GD`GD`}GD`}{{GDbGDb}GDb}{{GDdGDd}GDd}{{GDfGDf}GDf}{{GDhGDh}GDh}{{GDjGDj}GDj}{{GDlGDl}GDl}{{GAfGAf}Af}{{GAhGAh}Af}{{GAjGAj}Af}{{GAlGAl}Af}{{GAnGAn}Af}{{GB`GB`}Af}{{GBbGBb}Af}{{GBdGBd}Af}{{GBfGBf}Af}{{GBhGBh}Af}{{GBjGBj}Af}{{GBlGBl}Af}{{GBnGBn}Af}{{GC`GC`}Af}{{GCbGCb}Af}{{GCdGCd}Af}{{GCfGCf}Af}{{GChGCh}Af}{{GCjGCj}Af}{{GClGCl}Af}{{GCnGCn}Af}{{GD`GD`}Af}{{GDbGDb}Af}{{GDdGDd}Af}{{GDfGDf}Af}{{GDhGDh}Af}{{GDjGDj}Af}{{GDlGDl}Af}{{GAfGAf}GAf}{{GAhGAh}GAh}{{GAjGAj}GAj}{{GAlGAl}GAl}{{GAnGAn}GAn}{{GB`GB`}GB`}{{GBbGBb}GBb}{{GBdGBd}GBd}{{GBfGBf}GBf}{{GBhGBh}GBh}{{GBjGBj}GBj}{{GBlGBl}GBl}{{GBnGBn}GBn}{{GC`GC`}GC`}{{GCbGCb}GCb}{{GCdGCd}GCd}{{GCfGCf}GCf}{{GChGCh}GCh}{{GCjGCj}GCj}{{GClGCl}GCl}{{GCnGCn}GCn}{{GD`GD`}GD`}{{GDbGDb}GDb}{{GDdGDd}GDd}{{GDfGDf}GDf}{{GDhGDh}GDh}{{GDjGDj}GDj}{{GDlGDl}GDl}{{GAfGAf}Af}{{GAhGAh}Af}{{GAjGAj}Af}{{GAlGAl}Af}{{GAnGAn}Af}{{GB`GB`}Af}{{GBbGBb}Af}{{GBdGBd}Af}{{GBfGBf}Af}{{GBhGBh}Af}{{GBjGBj}Af}{{GBlGBl}Af}{{GBnGBn}Af}{{GC`GC`}Af}{{GCbGCb}Af}{{GCdGCd}Af}{{GCfGCf}Af}{{GChGCh}Af}{{GCjGCj}Af}{{GClGCl}Af}{{GCnGCn}Af}{{GD`GD`}Af}{{GDbGDb}Af}{{GDdGDd}Af}{{GDfGDf}Af}{{GDhGDh}Af}{{GDjGDj}Af}{{GDlGDl}Af}``{GAff}{GAhBb}{GAjHh}{GAlf}{GAnf}{GB`f}{GBbBb}{GBdf}{GBfBb}{GBhb}{GBjb}{GBlf}{GBnf}{GC`b}{GCbBb}{GCdb}{GCff}{GChHh}{GCjf}{GClf}{GCnBb}{GD`f}{GDbBb}{GDdf}{GDfBb}{GDhb}{GDjb}{GDlb}{{GAfGAf}GAf}{{GAhGAh}GAh}{{GAjGAj}GAj}{{GAlGAl}GAl}{{GAnGAn}GAn}{{GB`GB`}GB`}{{GBbGBb}GBb}{{GBdGBd}GBd}{{GBfGBf}GBf}{{GBhGBh}GBh}{{GBjGBj}GBj}{{GBlGBl}GBl}{{GBnGBn}GBn}{{GC`GC`}GC`}{{GCbGCb}GCb}{{GCdGCd}GCd}{{GCfGCf}GCf}{{GChGCh}GCh}{{GCjGCj}GCj}{{GClGCl}GCl}{{GCnGCn}GCn}{{GD`GD`}GD`}{{GDbGDb}GDb}{{GDdGDd}GDd}{{GDfGDf}GDf}{{GDhGDh}GDh}{{GDjGDj}GDj}{{GDlGDl}GDl}{{GAfGAf}Af}{{GAhGAh}Af}{{GAjGAj}Af}{{GAlGAl}Af}{{GAnGAn}Af}{{GB`GB`}Af}{{GBbGBb}Af}{{GBdGBd}Af}{{GBfGBf}Af}{{GBhGBh}Af}{{GBjGBj}Af}{{GBlGBl}Af}{{GBnGBn}Af}{{GC`GC`}Af}{{GCbGCb}Af}{{GCdGCd}Af}{{GCfGCf}Af}{{GChGCh}Af}{{GCjGCj}Af}{{GClGCl}Af}{{GCnGCn}Af}{{GD`GD`}Af}{{GDbGDb}Af}{{GDdGDd}Af}{{GDfGDf}Af}{{GDhGDh}Af}{{GDjGDj}Af}{{GDlGDl}Af}```````{ce{}{}}0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000``````````````````````````````````````````````````````````````````````````````````````````{GDnGDn}{GE`GE`}{GEbGEb}{GEdGEd}{GEfGEf}{GEhGEh}{GEjGEj}{GElGEl}{GEnGEn}{GF`GF`}{GFbGFb}{GFdGFd}{GFfGFf}{GFhGFh}{GFjGFj}{GFlGFl}{GFnGFn}{GG`GG`}{GGbGGb}{GGdGGd}{GGfGGf}{GGhGGh}{GGjGGj}{GGlGGl}{GGnGGn}{GH`GH`}{GHbGHb}{GHdGHd}{GHfGHf}{GHhGHh}{GHjGHj}{GHlGHl}{GHnGHn}{GI`GI`}{GIbGIb}{GIdGId}{GIfGIf}{GIhGIh}{GIjGIj}{GIlGIl}{GInGIn}{GJ`GJ`}{GJbGJb}{GJdGJd}{GJfGJf}{GJhGJh}{GJjGJj}{GJlGJl}{GJnGJn}{GK`GK`}{GKbGKb}{GKdGKd}{GKfGKf}{GKhGKh}{GKjGKj}{GKlGKl}{GKnGKn}{GL`GL`}{GLbGLb}{GLdGLd}{GLfGLf}{GLhGLh}{GLjGLj}{GLlGLl}{GLnGLn}{GM`GM`}{GMbGMb}{GMdGMd}{GMfGMf}{GMhGMh}{GMjGMj}{GMlGMl}{GMnGMn}{GN`GN`}{GNbGNb}{GNdGNd}{GNfGNf}{GNhGNh}{GNjGNj}{GNlGNl}{GNnGNn}{GO`GO`}{GObGOb}{GOdGOd}{GOfGOf}{GOhGOh}{GOjGOj}{GOlGOl}{GOnGOn}{H@`H@`}{H@bH@b}{H@dH@d}{H@fH@f}{H@hH@h}{H@jH@j}{H@lH@l}{H@nH@n}{HA`HA`}{HAbHAb}{HAdHAd}{HAfHAf}{HAhHAh}{HAjHAj}{HAlHAl}{HAnHAn}{HB`HB`}{HBbHBb}{HBdHBd}{HBfHBf}{HBhHBh}{HBjHBj}{HBlHBl}{HBnHBn}{HC`HC`}{HCbHCb}{HCdHCd}{HCfHCf}{HChHCh}{HCjHCj}{HClHCl}{HCnHCn}{HD`HD`}{HDbHDb}{HDdHDd}{HDfHDf}{HDhHDh}{HDjHDj}{HDlHDl}{HDnHDn}{HE`HE`}{HEbHEb}{HEdHEd}{HEfHEf}{HEhHEh}{HEjHEj}{HElHEl}{HEnHEn}{HF`HF`}{HFbHFb}{HFdHFd}{HFfHFf}{HFhHFh}{HFjHFj}{HFlHFl}{HFnHFn}{HG`HG`}{HGbHGb}{HGdHGd}{HGfHGf}{HGhHGh}{HGjHGj}{HGlHGl}{HGnHGn}{HH`HH`}{HHbHHb}{HHdHHd}{HHfHHf}{HHhHHh}{HHjHHj}{HHlHHl}{HHnHHn}{HI`HI`}{HIbHIb}{HIdHId}{HIfHIf}{HIhHIh}{HIjHIj}{HIlHIl}{HInHIn}{HJ`HJ`}{HJbHJb}{HJdHJd}{HJfHJf}{HJhHJh}{HJjHJj}{HJlHJl}{HJnHJn}{HK`HK`}{HKbHKb}{HKdHKd}{HKfHKf}{HKhHKh}{HKjHKj}{HKlHKl}{HKnHKn}{HL`HL`}{HLbHLb}{HLdHLd}{HLfHLf}{HLhHLh}{HLjHLj}{HLlHLl}{HLnHLn}{HM`HM`}{HMbHMb}{HMdHMd}{HMfHMf}{HMhHMh}{HMjHMj}{HMlHMl}{HMnHMn}{HN`HN`}{HNbHNb}{HNdHNd}{HNfHNf}{HNhHNh}{HNjHNj}{HNlHNl}{HNnHNn}{HO`HO`}{HObHOb}{HOdHOd}{HOfHOf}{HOhHOh}{HOjHOj}{HOlHOl}{HOnHOn}{I@`I@`}{I@bI@b}{I@dI@d}{I@fI@f}{I@hI@h}{I@jI@j}{I@lI@l}{I@nI@n}{IA`IA`}{IAbIAb}{IAdIAd}{IAfIAf}{GAfGAf}{IAhIAh}{IAjIAj}{IAlIAl}{GAhGAh}{GAjGAj}{IAnIAn}{IB`IB`}{IBbIBb}{IBdIBd}{IBfIBf}{IBhIBh}{GAlGAl}{IBjIBj}{GAnGAn}{IBlIBl}{IBnIBn}{GB`GB`}{IC`IC`}{ICbICb}{ICdICd}{ICfICf}{IChICh}{ICjICj}{GBbGBb}{IClICl}{ICnICn}{ID`ID`}{IDbIDb}{GBdGBd}{IDdIDd}{IDfIDf}{IDhIDh}{IDjIDj}{IDlIDl}{IDnIDn}{IE`IE`}{GBfGBf}{GBhGBh}{IEbIEb}{IEdIEd}{IEfIEf}{IEhIEh}{IEjIEj}{GBjGBj}{IElIEl}{IEnIEn}{IF`IF`}{GBlGBl}{IFbIFb}{IFdIFd}{IFfIFf}{GBnGBn}{IFhIFh}{IFjIFj}{IFlIFl}{IFnIFn}{IG`IG`}{GC`GC`}{GCbGCb}{IGbIGb}{GCdGCd}{GCfGCf}{IGdIGd}{GChGCh}{IGfIGf}{IGhIGh}{IGjIGj}{GCjGCj}{IGlIGl}{IGnIGn}{IH`IH`}{IHbIHb}{GClGCl}{GCnGCn}{GD`GD`}{IHdIHd}{IHfIHf}{IHhIHh}{IHjIHj}{IHlIHl}{IHnIHn}{II`II`}{GDbGDb}{IIbIIb}{GDdGDd}{IIdIId}{IIfIIf}{IIhIIh}{IIjIIj}{IIlIIl}{GDfGDf}{GDhGDh}{IInIIn}{IJ`IJ`}{IJbIJb}{IJdIJd}{IJfIJf}{IJhIJh}{IJjIJj}{IJlIJl}{IJnIJn}{IK`IK`}{IKbIKb}{IKdIKd}{IKfIKf}{IKhIKh}{IKjIKj}{IKlIKl}{IKnIKn}{IL`IL`}{ILbILb}{ILdILd}{GDjGDj}{ILfILf}{ILhILh}{ILjILj}{ILlILl}{ILnILn}{IM`IM`}{IMbIMb}{IMdIMd}{IMfIMf}{IMhIMh}{IMjIMj}{IMlIMl}{IMnIMn}{IN`IN`}{INbINb}{INdINd}{INfINf}{INhINh}{INjINj}{INlINl}{INnINn}{GDlGDl}{IO`IO`}{IObIOb}{IOdIOd}{IOfIOf}{IOhIOh}{{ce}Af{}{}}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{{GAfGAf}DAn}{{GAhGAh}DAn}{{GAjGAj}DAn}{{GAlGAl}DAn}{{GAnGAn}DAn}{{GB`GB`}DAn}{{GBbGBb}DAn}{{GBdGBd}DAn}{{GBfGBf}DAn}{{GBhGBh}DAn}{{GBjGBj}DAn}{{GBlGBl}DAn}{{GBnGBn}DAn}{{GC`GC`}DAn}{{GCbGCb}DAn}{{GCdGCd}DAn}{{GCfGCf}DAn}{{GChGCh}DAn}{{GCjGCj}DAn}{{GClGCl}DAn}{{GCnGCn}DAn}{{GD`GD`}DAn}{{GDbGDb}DAn}{{GDdGDd}DAn}{{GDfGDf}DAn}{{GDhGDh}DAn}{{GDjGDj}DAn}{{GDlGDl}DAn}````````````{GAfGAf}{GAhGAh}{GAjGAj}{GAlGAl}{GAnGAn}{GB`GB`}{GBbGBb}{GBdGBd}{GBfGBf}{GBhGBh}{GBjGBj}{GBlGBl}{GBnGBn}{GC`GC`}{GCbGCb}{GCdGCd}{GCfGCf}{GChGCh}{GCjGCj}{GClGCl}{GCnGCn}{GD`GD`}{GDbGDb}{GDdGDd}{GDfGDf}{GDhGDh}{GDjGDj}{GDlGDl}``{{GAfGAf}Bl}{{GAhGAh}Bl}{{GAjGAj}Bl}{{GAlGAl}Bl}{{GAnGAn}Bl}{{GB`GB`}Bl}{{GBbGBb}Bl}{{GBdGBd}Bl}{{GBfGBf}Bl}{{GBhGBh}Bl}{{GBjGBj}Bl}{{GBlGBl}Bl}{{GBnGBn}Bl}{{GC`GC`}Bl}{{GCbGCb}Bl}{{GCdGCd}Bl}{{GCfGCf}Bl}{{GChGCh}Bl}{{GCjGCj}Bl}{{GClGCl}Bl}{{GCnGCn}Bl}{{GD`GD`}Bl}{{GDbGDb}Bl}{{GDdGDd}Bl}{{GDfGDf}Bl}{{GDhGDh}Bl}{{GDjGDj}Bl}{{GDlGDl}Bl}````````````````````````````````````````````````````````{{}GE`}{{}GEb}{{}GEd}{{}GEf}{{}GEh}{{}GEj}{{}GEl}{{}GEn}{{}GF`}{{}GFb}{{}GFd}{{}GFf}{{}GFh}{{}GFj}{{}GFl}{{}GFn}{{}GG`}{{}GGb}{{}GGd}{{}GGf}{{}GGh}{{}GGj}{{}GGl}{{}GGn}{{}GH`}{{}GHb}{{}GHd}{{}GHf}{{}GHh}{{}GHj}{{}GHl}{{}GHn}{{}GI`}{{}GIb}{{}GId}{{}GIf}{{}GIh}{{}GIj}{{}GIl}{{}GIn}{{}GJ`}{{}GJb}{{}GJd}{{}GJf}{{}GJh}{{}GJj}{{}GJl}{{}GJn}{{}GK`}{{}GKb}{{}GKd}{{}GKf}{{}GKh}{{}GKj}{{}GKl}{{}GKn}{{}GL`}{{}GLb}{{}GLd}{{}GLf}{{}GLh}{{}GLj}{{}GLl}{{}GLn}{{}GM`}{{}GMb}{{}GMd}{{}GMf}{{}GMh}{{}GMj}{{}GMl}{{}GMn}{{}GN`}{{}GNb}{{}GNd}{{}GNf}{{}GNh}{{}GNj}{{}GNl}{{}GNn}{{}GO`}{{}GOb}{{}GOd}{{}GOf}{{}GOh}{{}GOj}{{}GOl}{{}GOn}{{}H@`}{{}H@b}{{}H@d}{{}H@f}{{}H@h}{{}H@j}{{}H@l}{{}H@n}{{}HA`}{{}HAb}{{}HAd}{{}HAf}{{}HAh}{{}HAj}{{}HAl}{{}HAn}{{}HB`}{{}HBb}{{}HBd}{{}HBf}{{}HBh}{{}HBj}{{}HBl}{{}HBn}{{}HC`}{{}HCb}{{}HCd}{{}HCf}{{}HCh}{{}HCj}{{}HCl}{{}HCn}{{}HD`}{{}HDb}{{}HDd}{{}HDf}{{}HDh}{{}HDj}{{}HDl}{{}HDn}{{}HE`}{{}HEb}{{}HEd}{{}HEf}{{}HEh}{{}HEj}{{}HEl}{{}HEn}{{}HF`}{{}HFb}{{}HFd}{{}HFf}{{}HFh}{{}HFj}{{}HFl}{{}HFn}{{}HG`}{{}HGb}{{}HGd}{{}HGf}{{}HGh}{{}HGj}{{}HGl}{{}HGn}{{}HH`}{{}HHb}{{}HHd}{{}HHf}{{}HHh}{{}HHj}{{}HHl}{{}HHn}{{}HI`}{{}HIb}{{}HId}{{}HIf}{{}HIh}{{}HIj}{{}HIl}{{}HIn}{{}HJ`}{{}HJb}{{}HJd}{{}HJf}{{}HJh}{{}HJj}{{}HJl}{{}HJn}{{}HK`}{{}HKb}{{}HKd}{{}HKf}{{}HKh}{{}HKj}{{}HKl}{{}HKn}{{}HL`}{{}HLb}{{}HLd}{{}HLf}{{}HLh}{{}HLj}{{}HLl}{{}HLn}{{}HM`}{{}HMb}{{}HMd}{{}HMf}{{}HMh}{{}HMj}{{}HMl}{{}HMn}{{}HN`}{{}HNb}{{}HNd}{{}HNf}{{}HNh}{{}HNj}{{}HNl}{{}HNn}{{}HO`}{{}HOb}{{}HOd}{{}HOf}{{}HOh}{{}HOj}{{}HOl}{{}HOn}{{}I@`}{{}I@b}{{}I@d}{{}I@f}{{}I@h}{{}I@j}{{}I@l}{{}I@n}{{}IA`}{{}IAb}{{}IAd}{{}IAf}{{}GAf}{{}IAh}{{}IAj}{{}IAl}{{}GAh}{{}GAj}{{}IAn}{{}IB`}{{}IBb}{{}IBd}{{}IBf}{{}IBh}{{}GAl}{{}IBj}{{}GAn}{{}IBl}{{}IBn}{{}GB`}{{}IC`}{{}ICb}{{}ICd}{{}ICf}{{}ICh}{{}ICj}{{}GBb}{{}ICl}{{}ICn}{{}ID`}{{}IDb}{{}GBd}{{}IDd}{{}IDf}{{}IDh}{{}IDj}{{}IDl}{{}IDn}{{}IE`}{{}GBf}{{}GBh}{{}IEb}{{}IEd}{{}IEf}{{}IEh}{{}IEj}{{}GBj}{{}IEl}{{}IEn}{{}IF`}{{}GBl}{{}IFb}{{}IFd}{{}IFf}{{}GBn}{{}IFh}{{}IFj}{{}IFl}{{}IFn}{{}IG`}{{}GC`}{{}GCb}{{}IGb}{{}GCd}{{}GCf}{{}IGd}{{}GCh}{{}IGf}{{}IGh}{{}IGj}{{}GCj}{{}IGl}{{}IGn}{{}IH`}{{}IHb}{{}GCl}{{}GCn}{{}GD`}{{}IHd}{{}IHf}{{}IHh}{{}IHj}{{}IHl}{{}IHn}{{}II`}{{}GDb}{{}IIb}{{}GDd}{{}IId}{{}IIf}{{}IIh}{{}IIj}{{}IIl}{{}GDf}{{}GDh}{{}IIn}{{}IJ`}{{}IJb}{{}IJd}{{}IJf}{{}IJh}{{}IJj}{{}IJl}{{}IJn}{{}IK`}{{}IKb}{{}IKd}{{}IKf}{{}IKh}{{}IKj}{{}IKl}{{}IKn}{{}IL`}{{}ILb}{{}ILd}{{}GDj}{{}ILf}{{}ILh}{{}ILj}{{}ILl}{{}ILn}{{}IM`}{{}IMb}{{}IMd}{{}IMf}{{}IMh}{{}IMj}{{}IMl}{{}IMn}{{}IN`}{{}INb}{{}INd}{{}INf}{{}INh}{{}INj}{{}INl}{{}INn}{{}GDl}{{}IO`}{{}IOb}{{}IOd}{{}IOf}{{}IOh}{Bb{{B`{GDnAh}}}}```{{n{d{b}}}{{B`{GE`Bh}}}}{{n{d{b}}}{{B`{GEbBh}}}}{{n{d{b}}}{{B`{GEdBh}}}}{{n{d{b}}}{{B`{GEfBh}}}}{{n{d{b}}}{{B`{GEhBh}}}}{{n{d{b}}}{{B`{GEjBh}}}}{{n{d{b}}}{{B`{GElBh}}}}{{n{d{b}}}{{B`{GEnBh}}}}{{n{d{b}}}{{B`{GF`Bh}}}}{{n{d{b}}}{{B`{GFbBh}}}}{{n{d{b}}}{{B`{GFdBh}}}}{{n{d{b}}}{{B`{GFfBh}}}}{{n{d{b}}}{{B`{GFhBh}}}}{{n{d{b}}}{{B`{GFjBh}}}}{{n{d{b}}}{{B`{GFlBh}}}}{{n{d{b}}}{{B`{GFnBh}}}}{{n{d{b}}}{{B`{GG`Bh}}}}{{n{d{b}}}{{B`{GGbBh}}}}{{n{d{b}}}{{B`{GGdBh}}}}{{n{d{b}}}{{B`{GGfBh}}}}{{n{d{b}}}{{B`{GGhBh}}}}{{n{d{b}}}{{B`{GGjBh}}}}{{n{d{b}}}{{B`{GGlBh}}}}{{n{d{b}}}{{B`{GGnBh}}}}{{n{d{b}}}{{B`{GH`Bh}}}}{{n{d{b}}}{{B`{GHbBh}}}}{{n{d{b}}}{{B`{GHdBh}}}}{{n{d{b}}}{{B`{GHfBh}}}}{{n{d{b}}}{{B`{GHhBh}}}}{{n{d{b}}}{{B`{GHjBh}}}}{{n{d{b}}}{{B`{GHlBh}}}}{{n{d{b}}}{{B`{GHnBh}}}}{{n{d{b}}}{{B`{GI`Bh}}}}{{n{d{b}}}{{B`{GIbBh}}}}{{n{d{b}}}{{B`{GIdBh}}}}{{n{d{b}}}{{B`{GIfBh}}}}{{n{d{b}}}{{B`{GIhBh}}}}{{n{d{b}}}{{B`{GIjBh}}}}{{n{d{b}}}{{B`{GIlBh}}}}{{n{d{b}}}{{B`{GInBh}}}}{{n{d{b}}}{{B`{GJ`Bh}}}}{{n{d{b}}}{{B`{GJbBh}}}}{{n{d{b}}}{{B`{GJdBh}}}}{{n{d{b}}}{{B`{GJfBh}}}}{{n{d{b}}}{{B`{GJhBh}}}}{{n{d{b}}}{{B`{GJjBh}}}}{{n{d{b}}}{{B`{GJlBh}}}}{{n{d{b}}}{{B`{GJnBh}}}}{{n{d{b}}}{{B`{GK`Bh}}}}{{n{d{b}}}{{B`{GKbBh}}}}{{n{d{b}}}{{B`{GKdBh}}}}{{n{d{b}}}{{B`{GKfBh}}}}{{n{d{b}}}{{B`{GKhBh}}}}{{n{d{b}}}{{B`{GKjBh}}}}{{n{d{b}}}{{B`{GKlBh}}}}{{n{d{b}}}{{B`{GKnBh}}}}{{n{d{b}}}{{B`{GL`Bh}}}}{{n{d{b}}}{{B`{GLbBh}}}}{{n{d{b}}}{{B`{GLdBh}}}}{{n{d{b}}}{{B`{GLfBh}}}}{{n{d{b}}}{{B`{GLhBh}}}}{{n{d{b}}}{{B`{GLjBh}}}}{{n{d{b}}}{{B`{GLlBh}}}}{{n{d{b}}}{{B`{GLnBh}}}}{{n{d{b}}}{{B`{GM`Bh}}}}{{n{d{b}}}{{B`{GMbBh}}}}{{n{d{b}}}{{B`{GMdBh}}}}{{n{d{b}}}{{B`{GMfBh}}}}{{n{d{b}}}{{B`{GMhBh}}}}{{n{d{b}}}{{B`{GMjBh}}}}{{n{d{b}}}{{B`{GMlBh}}}}{{n{d{b}}}{{B`{GMnBh}}}}{{n{d{b}}}{{B`{GN`Bh}}}}{{n{d{b}}}{{B`{GNbBh}}}}{{n{d{b}}}{{B`{GNdBh}}}}{{n{d{b}}}{{B`{GNfBh}}}}{{n{d{b}}}{{B`{GNhBh}}}}{{n{d{b}}}{{B`{GNjBh}}}}{{n{d{b}}}{{B`{GNlBh}}}}{{n{d{b}}}{{B`{GNnBh}}}}{{n{d{b}}}{{B`{GO`Bh}}}}{{n{d{b}}}{{B`{GObBh}}}}{{n{d{b}}}{{B`{GOdBh}}}}{{n{d{b}}}{{B`{GOfBh}}}}{{n{d{b}}}{{B`{GOhBh}}}}{{n{d{b}}}{{B`{GOjBh}}}}{{n{d{b}}}{{B`{GOlBh}}}}{{n{d{b}}}{{B`{GOnBh}}}}{{n{d{b}}}{{B`{H@`Bh}}}}{{n{d{b}}}{{B`{H@bBh}}}}{{n{d{b}}}{{B`{H@dBh}}}}{{n{d{b}}}{{B`{H@fBh}}}}{{n{d{b}}}{{B`{H@hBh}}}}{{n{d{b}}}{{B`{H@jBh}}}}{{n{d{b}}}{{B`{H@lBh}}}}{{n{d{b}}}{{B`{H@nBh}}}}{{n{d{b}}}{{B`{HA`Bh}}}}{{n{d{b}}}{{B`{HAbBh}}}}{{n{d{b}}}{{B`{HAdBh}}}}{{n{d{b}}}{{B`{HAfBh}}}}{{n{d{b}}}{{B`{HAhBh}}}}{{n{d{b}}}{{B`{HAjBh}}}}{{n{d{b}}}{{B`{HAlBh}}}}{{n{d{b}}}{{B`{HAnBh}}}}{{n{d{b}}}{{B`{HB`Bh}}}}{{n{d{b}}}{{B`{HBbBh}}}}{{n{d{b}}}{{B`{HBdBh}}}}{{n{d{b}}}{{B`{HBfBh}}}}{{n{d{b}}}{{B`{HBhBh}}}}{{n{d{b}}}{{B`{HBjBh}}}}{{n{d{b}}}{{B`{HBlBh}}}}{{n{d{b}}}{{B`{HBnBh}}}}{{n{d{b}}}{{B`{HC`Bh}}}}{{n{d{b}}}{{B`{HCbBh}}}}{{n{d{b}}}{{B`{HCdBh}}}}{{n{d{b}}}{{B`{HCfBh}}}}{{n{d{b}}}{{B`{HChBh}}}}{{n{d{b}}}{{B`{HCjBh}}}}{{n{d{b}}}{{B`{HClBh}}}}{{n{d{b}}}{{B`{HCnBh}}}}{{n{d{b}}}{{B`{HD`Bh}}}}{{n{d{b}}}{{B`{HDbBh}}}}{{n{d{b}}}{{B`{HDdBh}}}}{{n{d{b}}}{{B`{HDfBh}}}}{{n{d{b}}}{{B`{HDhBh}}}}{{n{d{b}}}{{B`{HDjBh}}}}{{n{d{b}}}{{B`{HDlBh}}}}{{n{d{b}}}{{B`{HDnBh}}}}{{n{d{b}}}{{B`{HE`Bh}}}}{{n{d{b}}}{{B`{HEbBh}}}}{{n{d{b}}}{{B`{HEdBh}}}}{{n{d{b}}}{{B`{HEfBh}}}}{{n{d{b}}}{{B`{HEhBh}}}}{{n{d{b}}}{{B`{HEjBh}}}}{{n{d{b}}}{{B`{HElBh}}}}{{n{d{b}}}{{B`{HEnBh}}}}{{n{d{b}}}{{B`{HF`Bh}}}}{{n{d{b}}}{{B`{HFbBh}}}}{{n{d{b}}}{{B`{HFdBh}}}}{{n{d{b}}}{{B`{HFfBh}}}}{{n{d{b}}}{{B`{HFhBh}}}}{{n{d{b}}}{{B`{HFjBh}}}}{{n{d{b}}}{{B`{HFlBh}}}}{{n{d{b}}}{{B`{HFnBh}}}}{{n{d{b}}}{{B`{HG`Bh}}}}{{n{d{b}}}{{B`{HGbBh}}}}{{n{d{b}}}{{B`{HGdBh}}}}{{n{d{b}}}{{B`{HGfBh}}}}{{n{d{b}}}{{B`{HGhBh}}}}{{n{d{b}}}{{B`{HGjBh}}}}{{n{d{b}}}{{B`{HGlBh}}}}{{n{d{b}}}{{B`{HGnBh}}}}{{n{d{b}}}{{B`{HH`Bh}}}}{{n{d{b}}}{{B`{HHbBh}}}}{{n{d{b}}}{{B`{HHdBh}}}}{{n{d{b}}}{{B`{HHfBh}}}}{{n{d{b}}}{{B`{HHhBh}}}}{{n{d{b}}}{{B`{HHjBh}}}}{{n{d{b}}}{{B`{HHlBh}}}}{{n{d{b}}}{{B`{HHnBh}}}}{{n{d{b}}}{{B`{HI`Bh}}}}{{n{d{b}}}{{B`{HIbBh}}}}{{n{d{b}}}{{B`{HIdBh}}}}{{n{d{b}}}{{B`{HIfBh}}}}{{n{d{b}}}{{B`{HIhBh}}}}{{n{d{b}}}{{B`{HIjBh}}}}{{n{d{b}}}{{B`{HIlBh}}}}{{n{d{b}}}{{B`{HInBh}}}}{{n{d{b}}}{{B`{HJ`Bh}}}}{{n{d{b}}}{{B`{HJbBh}}}}{{n{d{b}}}{{B`{HJdBh}}}}{{n{d{b}}}{{B`{HJfBh}}}}{{n{d{b}}}{{B`{HJhBh}}}}{{n{d{b}}}{{B`{HJjBh}}}}{{n{d{b}}}{{B`{HJlBh}}}}{{n{d{b}}}{{B`{HJnBh}}}}{{n{d{b}}}{{B`{HK`Bh}}}}{{n{d{b}}}{{B`{HKbBh}}}}{{n{d{b}}}{{B`{HKdBh}}}}{{n{d{b}}}{{B`{HKfBh}}}}{{n{d{b}}}{{B`{HKhBh}}}}{{n{d{b}}}{{B`{HKjBh}}}}{{n{d{b}}}{{B`{HKlBh}}}}{{n{d{b}}}{{B`{HKnBh}}}}{{n{d{b}}}{{B`{HL`Bh}}}}{{n{d{b}}}{{B`{HLbBh}}}}{{n{d{b}}}{{B`{HLdBh}}}}{{n{d{b}}}{{B`{HLfBh}}}}{{n{d{b}}}{{B`{HLhBh}}}}{{n{d{b}}}{{B`{HLjBh}}}}{{n{d{b}}}{{B`{HLlBh}}}}{{n{d{b}}}{{B`{HLnBh}}}}{{n{d{b}}}{{B`{HM`Bh}}}}{{n{d{b}}}{{B`{HMbBh}}}}{{n{d{b}}}{{B`{HMdBh}}}}{{n{d{b}}}{{B`{HMfBh}}}}{{n{d{b}}}{{B`{HMhBh}}}}{{n{d{b}}}{{B`{HMjBh}}}}{{n{d{b}}}{{B`{HMlBh}}}}{{n{d{b}}}{{B`{HMnBh}}}}{{n{d{b}}}{{B`{HN`Bh}}}}{{n{d{b}}}{{B`{HNbBh}}}}{{n{d{b}}}{{B`{HNdBh}}}}{{n{d{b}}}{{B`{HNfBh}}}}{{n{d{b}}}{{B`{HNhBh}}}}{{n{d{b}}}{{B`{HNjBh}}}}{{n{d{b}}}{{B`{HNlBh}}}}{{n{d{b}}}{{B`{HNnBh}}}}{{n{d{b}}}{{B`{HO`Bh}}}}{{n{d{b}}}{{B`{HObBh}}}}{{n{d{b}}}{{B`{HOdBh}}}}{{n{d{b}}}{{B`{HOfBh}}}}{{n{d{b}}}{{B`{HOhBh}}}}{{n{d{b}}}{{B`{HOjBh}}}}{{n{d{b}}}{{B`{HOlBh}}}}{{n{d{b}}}{{B`{HOnBh}}}}{{n{d{b}}}{{B`{I@`Bh}}}}{{n{d{b}}}{{B`{I@bBh}}}}{{n{d{b}}}{{B`{I@dBh}}}}{{n{d{b}}}{{B`{I@fBh}}}}{{n{d{b}}}{{B`{I@hBh}}}}{{n{d{b}}}{{B`{I@jBh}}}}{{n{d{b}}}{{B`{I@lBh}}}}{{n{d{b}}}{{B`{I@nBh}}}}{c{{B`{GDn}}}Bj}{c{{B`{GE`}}}Bj}{c{{B`{GEb}}}Bj}{c{{B`{GEd}}}Bj}{c{{B`{GEf}}}Bj}{c{{B`{GEh}}}Bj}{c{{B`{GEj}}}Bj}{c{{B`{GEl}}}Bj}{c{{B`{GEn}}}Bj}{c{{B`{GF`}}}Bj}{c{{B`{GFb}}}Bj}{c{{B`{GFd}}}Bj}{c{{B`{GFf}}}Bj}{c{{B`{GFh}}}Bj}{c{{B`{GFj}}}Bj}{c{{B`{GFl}}}Bj}{c{{B`{GFn}}}Bj}{c{{B`{GG`}}}Bj}{c{{B`{GGb}}}Bj}{c{{B`{GGd}}}Bj}{c{{B`{GGf}}}Bj}{c{{B`{GGh}}}Bj}{c{{B`{GGj}}}Bj}{c{{B`{GGl}}}Bj}{c{{B`{GGn}}}Bj}{c{{B`{GH`}}}Bj}{c{{B`{GHb}}}Bj}{c{{B`{GHd}}}Bj}{c{{B`{GHf}}}Bj}{c{{B`{GHh}}}Bj}{c{{B`{GHj}}}Bj}{c{{B`{GHl}}}Bj}{c{{B`{GHn}}}Bj}{c{{B`{GI`}}}Bj}{c{{B`{GIb}}}Bj}{c{{B`{GId}}}Bj}{c{{B`{GIf}}}Bj}{c{{B`{GIh}}}Bj}{c{{B`{GIj}}}Bj}{c{{B`{GIl}}}Bj}{c{{B`{GIn}}}Bj}{c{{B`{GJ`}}}Bj}{c{{B`{GJb}}}Bj}{c{{B`{GJd}}}Bj}{c{{B`{GJf}}}Bj}{c{{B`{GJh}}}Bj}{c{{B`{GJj}}}Bj}{c{{B`{GJl}}}Bj}{c{{B`{GJn}}}Bj}{c{{B`{GK`}}}Bj}{c{{B`{GKb}}}Bj}{c{{B`{GKd}}}Bj}{c{{B`{GKf}}}Bj}{c{{B`{GKh}}}Bj}{c{{B`{GKj}}}Bj}{c{{B`{GKl}}}Bj}{c{{B`{GKn}}}Bj}{c{{B`{GL`}}}Bj}{c{{B`{GLb}}}Bj}{c{{B`{GLd}}}Bj}{c{{B`{GLf}}}Bj}{c{{B`{GLh}}}Bj}{c{{B`{GLj}}}Bj}{c{{B`{GLl}}}Bj}{c{{B`{GLn}}}Bj}{c{{B`{GM`}}}Bj}{c{{B`{GMb}}}Bj}{c{{B`{GMd}}}Bj}{c{{B`{GMf}}}Bj}{c{{B`{GMh}}}Bj}{c{{B`{GMj}}}Bj}{c{{B`{GMl}}}Bj}{c{{B`{GMn}}}Bj}{c{{B`{GN`}}}Bj}{c{{B`{GNb}}}Bj}{c{{B`{GNd}}}Bj}{c{{B`{GNf}}}Bj}{c{{B`{GNh}}}Bj}{c{{B`{GNj}}}Bj}{c{{B`{GNl}}}Bj}{c{{B`{GNn}}}Bj}{c{{B`{GO`}}}Bj}{c{{B`{GOb}}}Bj}{c{{B`{GOd}}}Bj}{c{{B`{GOf}}}Bj}{c{{B`{GOh}}}Bj}{c{{B`{GOj}}}Bj}{c{{B`{GOl}}}Bj}{c{{B`{GOn}}}Bj}{c{{B`{H@`}}}Bj}{c{{B`{H@b}}}Bj}{c{{B`{H@d}}}Bj}{c{{B`{H@f}}}Bj}{c{{B`{H@h}}}Bj}{c{{B`{H@j}}}Bj}{c{{B`{H@l}}}Bj}{c{{B`{H@n}}}Bj}{c{{B`{HA`}}}Bj}{c{{B`{HAb}}}Bj}{c{{B`{HAd}}}Bj}{c{{B`{HAf}}}Bj}{c{{B`{HAh}}}Bj}{c{{B`{HAj}}}Bj}{c{{B`{HAl}}}Bj}{c{{B`{HAn}}}Bj}{c{{B`{HB`}}}Bj}{c{{B`{HBb}}}Bj}{c{{B`{HBd}}}Bj}{c{{B`{HBf}}}Bj}{c{{B`{HBh}}}Bj}{c{{B`{HBj}}}Bj}{c{{B`{HBl}}}Bj}{c{{B`{HBn}}}Bj}{c{{B`{HC`}}}Bj}{c{{B`{HCb}}}Bj}{c{{B`{HCd}}}Bj}{c{{B`{HCf}}}Bj}{c{{B`{HCh}}}Bj}{c{{B`{HCj}}}Bj}{c{{B`{HCl}}}Bj}{c{{B`{HCn}}}Bj}{c{{B`{HD`}}}Bj}{c{{B`{HDb}}}Bj}{c{{B`{HDd}}}Bj}{c{{B`{HDf}}}Bj}{c{{B`{HDh}}}Bj}{c{{B`{HDj}}}Bj}{c{{B`{HDl}}}Bj}{c{{B`{HDn}}}Bj}{c{{B`{HE`}}}Bj}{c{{B`{HEb}}}Bj}{c{{B`{HEd}}}Bj}{c{{B`{HEf}}}Bj}{c{{B`{HEh}}}Bj}{c{{B`{HEj}}}Bj}{c{{B`{HEl}}}Bj}{c{{B`{HEn}}}Bj}{c{{B`{HF`}}}Bj}{c{{B`{HFb}}}Bj}{c{{B`{HFd}}}Bj}{c{{B`{HFf}}}Bj}{c{{B`{HFh}}}Bj}{c{{B`{HFj}}}Bj}{c{{B`{HFl}}}Bj}{c{{B`{HFn}}}Bj}{c{{B`{HG`}}}Bj}{c{{B`{HGb}}}Bj}{c{{B`{HGd}}}Bj}{c{{B`{HGf}}}Bj}{c{{B`{HGh}}}Bj}{c{{B`{HGj}}}Bj}{c{{B`{HGl}}}Bj}{c{{B`{HGn}}}Bj}{c{{B`{HH`}}}Bj}{c{{B`{HHb}}}Bj}{c{{B`{HHd}}}Bj}{c{{B`{HHf}}}Bj}{c{{B`{HHh}}}Bj}{c{{B`{HHj}}}Bj}{c{{B`{HHl}}}Bj}{c{{B`{HHn}}}Bj}{c{{B`{HI`}}}Bj}{c{{B`{HIb}}}Bj}{c{{B`{HId}}}Bj}{c{{B`{HIf}}}Bj}{c{{B`{HIh}}}Bj}{c{{B`{HIj}}}Bj}{c{{B`{HIl}}}Bj}{c{{B`{HIn}}}Bj}{c{{B`{HJ`}}}Bj}{c{{B`{HJb}}}Bj}{c{{B`{HJd}}}Bj}{c{{B`{HJf}}}Bj}{c{{B`{HJh}}}Bj}{c{{B`{HJj}}}Bj}{c{{B`{HJl}}}Bj}{c{{B`{HJn}}}Bj}{c{{B`{HK`}}}Bj}{c{{B`{HKb}}}Bj}{c{{B`{HKd}}}Bj}{c{{B`{HKf}}}Bj}{c{{B`{HKh}}}Bj}{c{{B`{HKj}}}Bj}{c{{B`{HKl}}}Bj}{c{{B`{HKn}}}Bj}{c{{B`{HL`}}}Bj}{c{{B`{HLb}}}Bj}{c{{B`{HLd}}}Bj}{c{{B`{HLf}}}Bj}{c{{B`{HLh}}}Bj}{c{{B`{HLj}}}Bj}{c{{B`{HLl}}}Bj}{c{{B`{HLn}}}Bj}{c{{B`{HM`}}}Bj}{c{{B`{HMb}}}Bj}{c{{B`{HMd}}}Bj}{c{{B`{HMf}}}Bj}{c{{B`{HMh}}}Bj}{c{{B`{HMj}}}Bj}{c{{B`{HMl}}}Bj}{c{{B`{HMn}}}Bj}{c{{B`{HN`}}}Bj}{c{{B`{HNb}}}Bj}{c{{B`{HNd}}}Bj}{c{{B`{HNf}}}Bj}{c{{B`{HNh}}}Bj}{c{{B`{HNj}}}Bj}{c{{B`{HNl}}}Bj}{c{{B`{HNn}}}Bj}{c{{B`{HO`}}}Bj}{c{{B`{HOb}}}Bj}{c{{B`{HOd}}}Bj}{c{{B`{HOf}}}Bj}{c{{B`{HOh}}}Bj}{c{{B`{HOj}}}Bj}{c{{B`{HOl}}}Bj}{c{{B`{HOn}}}Bj}{c{{B`{I@`}}}Bj}{c{{B`{I@b}}}Bj}{c{{B`{I@d}}}Bj}{c{{B`{I@f}}}Bj}{c{{B`{I@h}}}Bj}{c{{B`{I@j}}}Bj}{c{{B`{I@l}}}Bj}{c{{B`{I@n}}}Bj}{c{{B`{IA`}}}Bj}{c{{B`{IAb}}}Bj}{c{{B`{IAd}}}Bj}{c{{B`{IAf}}}Bj}{c{{B`{GAf}}}Bj}{c{{B`{IAh}}}Bj}{c{{B`{IAj}}}Bj}{c{{B`{IAl}}}Bj}{c{{B`{GAh}}}Bj}{c{{B`{GAj}}}Bj}{c{{B`{IAn}}}Bj}{c{{B`{IB`}}}Bj}{c{{B`{IBb}}}Bj}{c{{B`{IBd}}}Bj}{c{{B`{IBf}}}Bj}{c{{B`{IBh}}}Bj}{c{{B`{GAl}}}Bj}{c{{B`{IBj}}}Bj}{c{{B`{GAn}}}Bj}{c{{B`{IBl}}}Bj}{c{{B`{IBn}}}Bj}{c{{B`{GB`}}}Bj}{c{{B`{IC`}}}Bj}{c{{B`{ICb}}}Bj}{c{{B`{ICd}}}Bj}{c{{B`{ICf}}}Bj}{c{{B`{ICh}}}Bj}{c{{B`{ICj}}}Bj}{c{{B`{GBb}}}Bj}{c{{B`{ICl}}}Bj}{c{{B`{ICn}}}Bj}{c{{B`{ID`}}}Bj}{c{{B`{IDb}}}Bj}{c{{B`{GBd}}}Bj}{c{{B`{IDd}}}Bj}{c{{B`{IDf}}}Bj}{c{{B`{IDh}}}Bj}{c{{B`{IDj}}}Bj}{c{{B`{IDl}}}Bj}{c{{B`{IDn}}}Bj}{c{{B`{IE`}}}Bj}{c{{B`{GBf}}}Bj}{c{{B`{GBh}}}Bj}{c{{B`{IEb}}}Bj}{c{{B`{IEd}}}Bj}{c{{B`{IEf}}}Bj}{c{{B`{IEh}}}Bj}{c{{B`{IEj}}}Bj}{c{{B`{GBj}}}Bj}{c{{B`{IEl}}}Bj}{c{{B`{IEn}}}Bj}{c{{B`{IF`}}}Bj}{c{{B`{GBl}}}Bj}{c{{B`{IFb}}}Bj}{c{{B`{IFd}}}Bj}{c{{B`{IFf}}}Bj}{c{{B`{GBn}}}Bj}{c{{B`{IFh}}}Bj}{c{{B`{IFj}}}Bj}{c{{B`{IFl}}}Bj}{c{{B`{IFn}}}Bj}{c{{B`{IG`}}}Bj}{c{{B`{GC`}}}Bj}{c{{B`{GCb}}}Bj}{c{{B`{IGb}}}Bj}{c{{B`{GCd}}}Bj}{c{{B`{GCf}}}Bj}{c{{B`{IGd}}}Bj}{c{{B`{GCh}}}Bj}{c{{B`{IGf}}}Bj}{c{{B`{IGh}}}Bj}{c{{B`{IGj}}}Bj}{c{{B`{GCj}}}Bj}{c{{B`{IGl}}}Bj}{c{{B`{IGn}}}Bj}{c{{B`{IH`}}}Bj}{c{{B`{IHb}}}Bj}{c{{B`{GCl}}}Bj}{c{{B`{GCn}}}Bj}{c{{B`{GD`}}}Bj}{c{{B`{IHd}}}Bj}{c{{B`{IHf}}}Bj}{c{{B`{IHh}}}Bj}{c{{B`{IHj}}}Bj}{c{{B`{IHl}}}Bj}{c{{B`{IHn}}}Bj}{c{{B`{II`}}}Bj}{c{{B`{GDb}}}Bj}{c{{B`{IIb}}}Bj}{c{{B`{GDd}}}Bj}{c{{B`{IId}}}Bj}{c{{B`{IIf}}}Bj}{c{{B`{IIh}}}Bj}{c{{B`{IIj}}}Bj}{c{{B`{IIl}}}Bj}{c{{B`{GDf}}}Bj}{c{{B`{GDh}}}Bj}{c{{B`{IIn}}}Bj}{c{{B`{IJ`}}}Bj}{c{{B`{IJb}}}Bj}{c{{B`{IJd}}}Bj}{c{{B`{IJf}}}Bj}{c{{B`{IJh}}}Bj}{c{{B`{IJj}}}Bj}{c{{B`{IJl}}}Bj}{c{{B`{IJn}}}Bj}{c{{B`{IK`}}}Bj}{c{{B`{IKb}}}Bj}{c{{B`{IKd}}}Bj}{c{{B`{IKf}}}Bj}{c{{B`{IKh}}}Bj}{c{{B`{IKj}}}Bj}{c{{B`{IKl}}}Bj}{c{{B`{IKn}}}Bj}{c{{B`{IL`}}}Bj}{c{{B`{ILb}}}Bj}{c{{B`{ILd}}}Bj}{c{{B`{GDj}}}Bj}{c{{B`{ILf}}}Bj}{c{{B`{ILh}}}Bj}{c{{B`{ILj}}}Bj}{c{{B`{ILl}}}Bj}{c{{B`{ILn}}}Bj}{c{{B`{IM`}}}Bj}{c{{B`{IMb}}}Bj}{c{{B`{IMd}}}Bj}{c{{B`{IMf}}}Bj}{c{{B`{IMh}}}Bj}{c{{B`{IMj}}}Bj}{c{{B`{IMl}}}Bj}{c{{B`{IMn}}}Bj}{c{{B`{IN`}}}Bj}{c{{B`{INb}}}Bj}{c{{B`{INd}}}Bj}{c{{B`{INf}}}Bj}{c{{B`{INh}}}Bj}{c{{B`{INj}}}Bj}{c{{B`{INl}}}Bj}{c{{B`{INn}}}Bj}{c{{B`{GDl}}}Bj}{c{{B`{IO`}}}Bj}{c{{B`{IOb}}}Bj}{c{{B`{IOd}}}Bj}{c{{B`{IOf}}}Bj}{c{{B`{IOh}}}Bj}```````````{{GAfGAf}GAf}{{GAhGAh}GAh}{{GAjGAj}GAj}{{GAlGAl}GAl}{{GAnGAn}GAn}{{GB`GB`}GB`}{{GBbGBb}GBb}{{GBdGBd}GBd}{{GBfGBf}GBf}{{GBhGBh}GBh}{{GBjGBj}GBj}{{GBlGBl}GBl}{{GBnGBn}GBn}{{GC`GC`}GC`}{{GCbGCb}GCb}{{GCdGCd}GCd}{{GCfGCf}GCf}{{GChGCh}GCh}{{GCjGCj}GCj}{{GClGCl}GCl}{{GCnGCn}GCn}{{GD`GD`}GD`}{{GDbGDb}GDb}{{GDdGDd}GDd}{{GDfGDf}GDf}{{GDhGDh}GDh}{{GDjGDj}GDj}{{GDlGDl}GDl}`````````````````{{}GAf}{{}GAh}{{}GAj}{{}GAl}{{}GAn}{{}GB`}{{}GBb}{{}GBd}{{}GBf}{{}GBh}{{}GBj}{{}GBl}{{}GBn}{{}GC`}{{}GCb}{{}GCd}{{}GCf}{{}GCh}{{}GCj}{{}GCl}{{}GCn}{{}GD`}{{}GDb}{{}GDd}{{}GDf}{{}GDh}{{}GDj}{{}GDl}```````````````{{GDnGDn}Bl}{{GE`GE`}Bl}{{GEbGEb}Bl}{{GEdGEd}Bl}{{GEfGEf}Bl}{{GEhGEh}Bl}{{GEjGEj}Bl}{{GElGEl}Bl}{{GEnGEn}Bl}{{GF`GF`}Bl}{{GFbGFb}Bl}{{GFdGFd}Bl}{{GFfGFf}Bl}{{GFhGFh}Bl}{{GFjGFj}Bl}{{GFlGFl}Bl}{{GFnGFn}Bl}{{GG`GG`}Bl}{{GGbGGb}Bl}{{GGdGGd}Bl}{{GGfGGf}Bl}{{GGhGGh}Bl}{{GGjGGj}Bl}{{GGlGGl}Bl}{{GGnGGn}Bl}{{GH`GH`}Bl}{{GHbGHb}Bl}{{GHdGHd}Bl}{{GHfGHf}Bl}{{GHhGHh}Bl}{{GHjGHj}Bl}{{GHlGHl}Bl}{{GHnGHn}Bl}{{GI`GI`}Bl}{{GIbGIb}Bl}{{GIdGId}Bl}{{GIfGIf}Bl}{{GIhGIh}Bl}{{GIjGIj}Bl}{{GIlGIl}Bl}{{GInGIn}Bl}{{GJ`GJ`}Bl}{{GJbGJb}Bl}{{GJdGJd}Bl}{{GJfGJf}Bl}{{GJhGJh}Bl}{{GJjGJj}Bl}{{GJlGJl}Bl}{{GJnGJn}Bl}{{GK`GK`}Bl}{{GKbGKb}Bl}{{GKdGKd}Bl}{{GKfGKf}Bl}{{GKhGKh}Bl}{{GKjGKj}Bl}{{GKlGKl}Bl}{{GKnGKn}Bl}{{GL`GL`}Bl}{{GLbGLb}Bl}{{GLdGLd}Bl}{{GLfGLf}Bl}{{GLhGLh}Bl}{{GLjGLj}Bl}{{GLlGLl}Bl}{{GLnGLn}Bl}{{GM`GM`}Bl}{{GMbGMb}Bl}{{GMdGMd}Bl}{{GMfGMf}Bl}{{GMhGMh}Bl}{{GMjGMj}Bl}{{GMlGMl}Bl}{{GMnGMn}Bl}{{GN`GN`}Bl}{{GNbGNb}Bl}{{GNdGNd}Bl}{{GNfGNf}Bl}{{GNhGNh}Bl}{{GNjGNj}Bl}{{GNlGNl}Bl}{{GNnGNn}Bl}{{GO`GO`}Bl}{{GObGOb}Bl}{{GOdGOd}Bl}{{GOfGOf}Bl}{{GOhGOh}Bl}{{GOjGOj}Bl}{{GOlGOl}Bl}{{GOnGOn}Bl}{{H@`H@`}Bl}{{H@bH@b}Bl}{{H@dH@d}Bl}{{H@fH@f}Bl}{{H@hH@h}Bl}{{H@jH@j}Bl}{{H@lH@l}Bl}{{H@nH@n}Bl}{{HA`HA`}Bl}{{HAbHAb}Bl}{{HAdHAd}Bl}{{HAfHAf}Bl}{{HAhHAh}Bl}{{HAjHAj}Bl}{{HAlHAl}Bl}{{HAnHAn}Bl}{{HB`HB`}Bl}{{HBbHBb}Bl}{{HBdHBd}Bl}{{HBfHBf}Bl}{{HBhHBh}Bl}{{HBjHBj}Bl}{{HBlHBl}Bl}{{HBnHBn}Bl}{{HC`HC`}Bl}{{HCbHCb}Bl}{{HCdHCd}Bl}{{HCfHCf}Bl}{{HChHCh}Bl}{{HCjHCj}Bl}{{HClHCl}Bl}{{HCnHCn}Bl}{{HD`HD`}Bl}{{HDbHDb}Bl}{{HDdHDd}Bl}{{HDfHDf}Bl}{{HDhHDh}Bl}{{HDjHDj}Bl}{{HDlHDl}Bl}{{HDnHDn}Bl}{{HE`HE`}Bl}{{HEbHEb}Bl}{{HEdHEd}Bl}{{HEfHEf}Bl}{{HEhHEh}Bl}{{HEjHEj}Bl}{{HElHEl}Bl}{{HEnHEn}Bl}{{HF`HF`}Bl}{{HFbHFb}Bl}{{HFdHFd}Bl}{{HFfHFf}Bl}{{HFhHFh}Bl}{{HFjHFj}Bl}{{HFlHFl}Bl}{{HFnHFn}Bl}{{HG`HG`}Bl}{{HGbHGb}Bl}{{HGdHGd}Bl}{{HGfHGf}Bl}{{HGhHGh}Bl}{{HGjHGj}Bl}{{HGlHGl}Bl}{{HGnHGn}Bl}{{HH`HH`}Bl}{{HHbHHb}Bl}{{HHdHHd}Bl}{{HHfHHf}Bl}{{HHhHHh}Bl}{{HHjHHj}Bl}{{HHlHHl}Bl}{{HHnHHn}Bl}{{HI`HI`}Bl}{{HIbHIb}Bl}{{HIdHId}Bl}{{HIfHIf}Bl}{{HIhHIh}Bl}{{HIjHIj}Bl}{{HIlHIl}Bl}{{HInHIn}Bl}{{HJ`HJ`}Bl}{{HJbHJb}Bl}{{HJdHJd}Bl}{{HJfHJf}Bl}{{HJhHJh}Bl}{{HJjHJj}Bl}{{HJlHJl}Bl}{{HJnHJn}Bl}{{HK`HK`}Bl}{{HKbHKb}Bl}{{HKdHKd}Bl}{{HKfHKf}Bl}{{HKhHKh}Bl}{{HKjHKj}Bl}{{HKlHKl}Bl}{{HKnHKn}Bl}{{HL`HL`}Bl}{{HLbHLb}Bl}{{HLdHLd}Bl}{{HLfHLf}Bl}{{HLhHLh}Bl}{{HLjHLj}Bl}{{HLlHLl}Bl}{{HLnHLn}Bl}{{HM`HM`}Bl}{{HMbHMb}Bl}{{HMdHMd}Bl}{{HMfHMf}Bl}{{HMhHMh}Bl}{{HMjHMj}Bl}{{HMlHMl}Bl}{{HMnHMn}Bl}{{HN`HN`}Bl}{{HNbHNb}Bl}{{HNdHNd}Bl}{{HNfHNf}Bl}{{HNhHNh}Bl}{{HNjHNj}Bl}{{HNlHNl}Bl}{{HNnHNn}Bl}{{HO`HO`}Bl}{{HObHOb}Bl}{{HOdHOd}Bl}{{HOfHOf}Bl}{{HOhHOh}Bl}{{HOjHOj}Bl}{{HOlHOl}Bl}{{HOnHOn}Bl}{{I@`I@`}Bl}{{I@bI@b}Bl}{{I@dI@d}Bl}{{I@fI@f}Bl}{{I@hI@h}Bl}{{I@jI@j}Bl}{{I@lI@l}Bl}{{I@nI@n}Bl}{{IA`IA`}Bl}{{IAbIAb}Bl}{{IAdIAd}Bl}{{IAfIAf}Bl}{{GAfGAf}Bl}{{IAhIAh}Bl}{{IAjIAj}Bl}{{IAlIAl}Bl}{{GAhGAh}Bl}{{GAjGAj}Bl}{{IAnIAn}Bl}{{IB`IB`}Bl}{{IBbIBb}Bl}{{IBdIBd}Bl}{{IBfIBf}Bl}{{IBhIBh}Bl}{{GAlGAl}Bl}{{IBjIBj}Bl}{{GAnGAn}Bl}{{IBlIBl}Bl}{{IBnIBn}Bl}{{GB`GB`}Bl}{{IC`IC`}Bl}{{ICbICb}Bl}{{ICdICd}Bl}{{ICfICf}Bl}{{IChICh}Bl}{{ICjICj}Bl}{{GBbGBb}Bl}{{IClICl}Bl}{{ICnICn}Bl}{{ID`ID`}Bl}{{IDbIDb}Bl}{{GBdGBd}Bl}{{IDdIDd}Bl}{{IDfIDf}Bl}{{IDhIDh}Bl}{{IDjIDj}Bl}{{IDlIDl}Bl}{{IDnIDn}Bl}{{IE`IE`}Bl}{{GBfGBf}Bl}{{GBhGBh}Bl}{{IEbIEb}Bl}{{IEdIEd}Bl}{{IEfIEf}Bl}{{IEhIEh}Bl}{{IEjIEj}Bl}{{GBjGBj}Bl}{{IElIEl}Bl}{{IEnIEn}Bl}{{IF`IF`}Bl}{{GBlGBl}Bl}{{IFbIFb}Bl}{{IFdIFd}Bl}{{IFfIFf}Bl}{{GBnGBn}Bl}{{IFhIFh}Bl}{{IFjIFj}Bl}{{IFlIFl}Bl}{{IFnIFn}Bl}{{IG`IG`}Bl}{{GC`GC`}Bl}{{GCbGCb}Bl}{{IGbIGb}Bl}{{GCdGCd}Bl}{{GCfGCf}Bl}{{IGdIGd}Bl}{{GChGCh}Bl}{{IGfIGf}Bl}{{IGhIGh}Bl}{{IGjIGj}Bl}{{GCjGCj}Bl}{{IGlIGl}Bl}{{IGnIGn}Bl}{{IH`IH`}Bl}{{IHbIHb}Bl}{{GClGCl}Bl}{{GCnGCn}Bl}{{GD`GD`}Bl}{{IHdIHd}Bl}{{IHfIHf}Bl}{{IHhIHh}Bl}{{IHjIHj}Bl}{{IHlIHl}Bl}{{IHnIHn}Bl}{{II`II`}Bl}{{GDbGDb}Bl}{{IIbIIb}Bl}{{GDdGDd}Bl}{{IIdIId}Bl}{{IIfIIf}Bl}{{IIhIIh}Bl}{{IIjIIj}Bl}{{IIlIIl}Bl}{{GDfGDf}Bl}{{GDhGDh}Bl}{{IInIIn}Bl}{{IJ`IJ`}Bl}{{IJbIJb}Bl}{{IJdIJd}Bl}{{IJfIJf}Bl}{{IJhIJh}Bl}{{IJjIJj}Bl}{{IJlIJl}Bl}{{IJnIJn}Bl}{{IK`IK`}Bl}{{IKbIKb}Bl}{{IKdIKd}Bl}{{IKfIKf}Bl}{{IKhIKh}Bl}{{IKjIKj}Bl}{{IKlIKl}Bl}{{IKnIKn}Bl}{{IL`IL`}Bl}{{ILbILb}Bl}{{ILdILd}Bl}{{GDjGDj}Bl}{{ILfILf}Bl}{{ILhILh}Bl}{{ILjILj}Bl}{{ILlILl}Bl}{{ILnILn}Bl}{{IM`IM`}Bl}{{IMbIMb}Bl}{{IMdIMd}Bl}{{IMfIMf}Bl}{{IMhIMh}Bl}{{IMjIMj}Bl}{{IMlIMl}Bl}{{IMnIMn}Bl}{{IN`IN`}Bl}{{INbINb}Bl}{{INdINd}Bl}{{INfINf}Bl}{{INhINh}Bl}{{INjINj}Bl}{{INlINl}Bl}{{INnINn}Bl}{{GDlGDl}Bl}{{IO`IO`}Bl}{{IObIOb}Bl}{{IOdIOd}Bl}{{IOfIOf}Bl}{{IOhIOh}Bl}`````````````{{GAfc}Af{{DBb{}{{DB`{GAf}}}}}}{{GAhc}Af{{DBb{}{{DB`{GAh}}}}}}{{GAjc}Af{{DBb{}{{DB`{GAj}}}}}}{{GAlc}Af{{DBb{}{{DB`{GAl}}}}}}{{GAnc}Af{{DBb{}{{DB`{GAn}}}}}}{{GB`c}Af{{DBb{}{{DB`{GB`}}}}}}{{GBbc}Af{{DBb{}{{DB`{GBb}}}}}}{{GBdc}Af{{DBb{}{{DB`{GBd}}}}}}{{GBfc}Af{{DBb{}{{DB`{GBf}}}}}}{{GBhc}Af{{DBb{}{{DB`{GBh}}}}}}{{GBjc}Af{{DBb{}{{DB`{GBj}}}}}}{{GBlc}Af{{DBb{}{{DB`{GBl}}}}}}{{GBnc}Af{{DBb{}{{DB`{GBn}}}}}}{{GC`c}Af{{DBb{}{{DB`{GC`}}}}}}{{GCbc}Af{{DBb{}{{DB`{GCb}}}}}}{{GCdc}Af{{DBb{}{{DB`{GCd}}}}}}{{GCfc}Af{{DBb{}{{DB`{GCf}}}}}}{{GChc}Af{{DBb{}{{DB`{GCh}}}}}}{{GCjc}Af{{DBb{}{{DB`{GCj}}}}}}{{GClc}Af{{DBb{}{{DB`{GCl}}}}}}{{GCnc}Af{{DBb{}{{DB`{GCn}}}}}}{{GD`c}Af{{DBb{}{{DB`{GD`}}}}}}{{GDbc}Af{{DBb{}{{DB`{GDb}}}}}}{{GDdc}Af{{DBb{}{{DB`{GDd}}}}}}{{GDfc}Af{{DBb{}{{DB`{GDf}}}}}}{{GDhc}Af{{DBb{}{{DB`{GDh}}}}}}{{GDjc}Af{{DBb{}{{DB`{GDj}}}}}}{{GDlc}Af{{DBb{}{{DB`{GDl}}}}}}{Bbb}`````````````````````````````````````````````````{{GDnBn}DBd}{{GE`Bn}DBd}{{GEbBn}DBd}{{GEdBn}DBd}{{GEfBn}DBd}{{GEhBn}DBd}{{GEjBn}DBd}{{GElBn}DBd}{{GEnBn}DBd}{{GF`Bn}DBd}{{GFbBn}DBd}{{GFdBn}DBd}{{GFfBn}DBd}{{GFhBn}DBd}{{GFjBn}DBd}{{GFlBn}DBd}{{GFnBn}DBd}{{GG`Bn}DBd}{{GGbBn}DBd}{{GGdBn}DBd}{{GGfBn}DBd}{{GGhBn}DBd}{{GGjBn}DBd}{{GGlBn}DBd}{{GGnBn}DBd}{{GH`Bn}DBd}{{GHbBn}DBd}{{GHdBn}DBd}{{GHfBn}DBd}{{GHhBn}DBd}{{GHjBn}DBd}{{GHlBn}DBd}{{GHnBn}DBd}{{GI`Bn}DBd}{{GIbBn}DBd}{{GIdBn}DBd}{{GIfBn}DBd}{{GIhBn}DBd}{{GIjBn}DBd}{{GIlBn}DBd}{{GInBn}DBd}{{GJ`Bn}DBd}{{GJbBn}DBd}{{GJdBn}DBd}{{GJfBn}DBd}{{GJhBn}DBd}{{GJjBn}DBd}{{GJlBn}DBd}{{GJnBn}DBd}{{GK`Bn}DBd}{{GKbBn}DBd}{{GKdBn}DBd}{{GKfBn}DBd}{{GKhBn}DBd}{{GKjBn}DBd}{{GKlBn}DBd}{{GKnBn}DBd}{{GL`Bn}DBd}{{GLbBn}DBd}{{GLdBn}DBd}{{GLfBn}DBd}{{GLhBn}DBd}{{GLjBn}DBd}{{GLlBn}DBd}{{GLnBn}DBd}{{GM`Bn}DBd}{{GMbBn}DBd}{{GMdBn}DBd}{{GMfBn}DBd}{{GMhBn}DBd}{{GMjBn}DBd}{{GMlBn}DBd}{{GMnBn}DBd}{{GN`Bn}DBd}{{GNbBn}DBd}{{GNdBn}DBd}{{GNfBn}DBd}{{GNhBn}DBd}{{GNjBn}DBd}{{GNlBn}DBd}{{GNnBn}DBd}{{GO`Bn}DBd}{{GObBn}DBd}{{GOdBn}DBd}{{GOfBn}DBd}{{GOhBn}DBd}{{GOjBn}DBd}{{GOlBn}DBd}{{GOnBn}DBd}{{H@`Bn}DBd}{{H@bBn}DBd}{{H@dBn}DBd}{{H@fBn}DBd}{{H@hBn}DBd}{{H@jBn}DBd}{{H@lBn}DBd}{{H@nBn}DBd}{{HA`Bn}DBd}{{HAbBn}DBd}{{HAdBn}DBd}{{HAfBn}DBd}{{HAhBn}DBd}{{HAjBn}DBd}{{HAlBn}DBd}{{HAnBn}DBd}{{HB`Bn}DBd}{{HBbBn}DBd}{{HBdBn}DBd}{{HBfBn}DBd}{{HBhBn}DBd}{{HBjBn}DBd}{{HBlBn}DBd}{{HBnBn}DBd}{{HC`Bn}DBd}{{HCbBn}DBd}{{HCdBn}DBd}{{HCfBn}DBd}{{HChBn}DBd}{{HCjBn}DBd}{{HClBn}DBd}{{HCnBn}DBd}{{HD`Bn}DBd}{{HDbBn}DBd}{{HDdBn}DBd}{{HDfBn}DBd}{{HDhBn}DBd}{{HDjBn}DBd}{{HDlBn}DBd}{{HDnBn}DBd}{{HE`Bn}DBd}{{HEbBn}DBd}{{HEdBn}DBd}{{HEfBn}DBd}{{HEhBn}DBd}{{HEjBn}DBd}{{HElBn}DBd}{{HEnBn}DBd}{{HF`Bn}DBd}{{HFbBn}DBd}{{HFdBn}DBd}{{HFfBn}DBd}{{HFhBn}DBd}{{HFjBn}DBd}{{HFlBn}DBd}{{HFnBn}DBd}{{HG`Bn}DBd}{{HGbBn}DBd}{{HGdBn}DBd}{{HGfBn}DBd}{{HGhBn}DBd}{{HGjBn}DBd}{{HGlBn}DBd}{{HGnBn}DBd}{{HH`Bn}DBd}{{HHbBn}DBd}{{HHdBn}DBd}{{HHfBn}DBd}{{HHhBn}DBd}{{HHjBn}DBd}{{HHlBn}DBd}{{HHnBn}DBd}{{HI`Bn}DBd}{{HIbBn}DBd}{{HIdBn}DBd}{{HIfBn}DBd}{{HIhBn}DBd}{{HIjBn}DBd}{{HIlBn}DBd}{{HInBn}DBd}{{HJ`Bn}DBd}{{HJbBn}DBd}{{HJdBn}DBd}{{HJfBn}DBd}{{HJhBn}DBd}{{HJjBn}DBd}{{HJlBn}DBd}{{HJnBn}DBd}{{HK`Bn}DBd}{{HKbBn}DBd}{{HKdBn}DBd}{{HKfBn}DBd}{{HKhBn}DBd}{{HKjBn}DBd}{{HKlBn}DBd}{{HKnBn}DBd}{{HL`Bn}DBd}{{HLbBn}DBd}{{HLdBn}DBd}{{HLfBn}DBd}{{HLhBn}DBd}{{HLjBn}DBd}{{HLlBn}DBd}{{HLnBn}DBd}{{HM`Bn}DBd}{{HMbBn}DBd}{{HMdBn}DBd}{{HMfBn}DBd}{{HMhBn}DBd}{{HMjBn}DBd}{{HMlBn}DBd}{{HMnBn}DBd}{{HN`Bn}DBd}{{HNbBn}DBd}{{HNdBn}DBd}{{HNfBn}DBd}{{HNhBn}DBd}{{HNjBn}DBd}{{HNlBn}DBd}{{HNnBn}DBd}{{HO`Bn}DBd}{{HObBn}DBd}{{HOdBn}DBd}{{HOfBn}DBd}{{HOhBn}DBd}{{HOjBn}DBd}{{HOlBn}DBd}{{HOnBn}DBd}{{I@`Bn}DBd}{{I@bBn}DBd}{{I@dBn}DBd}{{I@fBn}DBd}{{I@hBn}DBd}{{I@jBn}DBd}{{I@lBn}DBd}{{I@nBn}DBd}{{IA`Bn}DBd}{{IAbBn}DBd}{{IAdBn}DBd}{{IAfBn}DBd}{{GAfBn}DBd}0000{{IAhBn}DBd}{{IAjBn}DBd}{{IAlBn}DBd}{{GAhBn}DBd}0000{{GAjBn}DBd}0000{{IAnBn}DBd}{{IB`Bn}DBd}{{IBbBn}DBd}{{IBdBn}DBd}{{IBfBn}DBd}{{IBhBn}DBd}{{GAlBn}DBd}0000{{IBjBn}DBd}{{GAnBn}DBd}0000{{IBlBn}DBd}{{IBnBn}DBd}{{GB`Bn}DBd}0000{{IC`Bn}DBd}{{ICbBn}DBd}{{ICdBn}DBd}{{ICfBn}DBd}{{IChBn}DBd}{{ICjBn}DBd}{{GBbBn}DBd}0000{{IClBn}DBd}{{ICnBn}DBd}{{ID`Bn}DBd}{{IDbBn}DBd}{{GBdBn}DBd}0000{{IDdBn}DBd}{{IDfBn}DBd}{{IDhBn}DBd}{{IDjBn}DBd}{{IDlBn}DBd}{{IDnBn}DBd}{{IE`Bn}DBd}{{GBfBn}DBd}0000{{GBhBn}DBd}0000{{IEbBn}DBd}{{IEdBn}DBd}{{IEfBn}DBd}{{IEhBn}DBd}{{IEjBn}DBd}{{GBjBn}DBd}0000{{IElBn}DBd}{{IEnBn}DBd}{{IF`Bn}DBd}{{GBlBn}DBd}0000{{IFbBn}DBd}{{IFdBn}DBd}{{IFfBn}DBd}{{GBnBn}DBd}0000{{IFhBn}DBd}{{IFjBn}DBd}{{IFlBn}DBd}{{IFnBn}DBd}{{IG`Bn}DBd}{{GC`Bn}DBd}0000{{GCbBn}DBd}0000{{IGbBn}DBd}{{GCdBn}DBd}0000{{GCfBn}DBd}0000{{IGdBn}DBd}{{GChBn}DBd}0000{{IGfBn}DBd}{{IGhBn}DBd}{{IGjBn}DBd}{{GCjBn}DBd}0000{{IGlBn}DBd}{{IGnBn}DBd}{{IH`Bn}DBd}{{IHbBn}DBd}{{GClBn}DBd}0000{{GCnBn}DBd}0000{{GD`Bn}DBd}0000{{IHdBn}DBd}{{IHfBn}DBd}{{IHhBn}DBd}{{IHjBn}DBd}{{IHlBn}DBd}{{IHnBn}DBd}{{II`Bn}DBd}{{GDbBn}DBd}0000{{IIbBn}DBd}{{GDdBn}DBd}0000{{IIdBn}DBd}{{IIfBn}DBd}{{IIhBn}DBd}{{IIjBn}DBd}{{IIlBn}DBd}{{GDfBn}DBd}0000{{GDhBn}DBd}0000{{IInBn}DBd}{{IJ`Bn}DBd}{{IJbBn}DBd}{{IJdBn}DBd}{{IJfBn}DBd}{{IJhBn}DBd}{{IJjBn}DBd}{{IJlBn}DBd}{{IJnBn}DBd}{{IK`Bn}DBd}{{IKbBn}DBd}{{IKdBn}DBd}{{IKfBn}DBd}{{IKhBn}DBd}{{IKjBn}DBd}{{IKlBn}DBd}{{IKnBn}DBd}{{IL`Bn}DBd}{{ILbBn}DBd}{{ILdBn}DBd}{{GDjBn}DBd}0000{{ILfBn}DBd}{{ILhBn}DBd}{{ILjBn}DBd}{{ILlBn}DBd}{{ILnBn}DBd}{{IM`Bn}DBd}{{IMbBn}DBd}{{IMdBn}DBd}{{IMfBn}DBd}{{IMhBn}DBd}{{IMjBn}DBd}{{IMlBn}DBd}{{IMnBn}DBd}{{IN`Bn}DBd}{{INbBn}DBd}{{INdBn}DBd}{{INfBn}DBd}{{INhBn}DBd}{{INjBn}DBd}{{INlBn}DBd}{{INnBn}DBd}{{GDlBn}DBd}0000{{IO`Bn}DBd}{{IObBn}DBd}{{IOdBn}DBd}{{IOfBn}DBd}{{IOhBn}DBd}``````````````{cc{}}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{f{{DBf{GAf}}}}{Bb{{DBf{GAh}}}}{Hh{{DBf{GAj}}}}{f{{DBf{GAl}}}}{f{{DBf{GAn}}}}{f{{DBf{GB`}}}}{Bb{{DBf{GBb}}}}{f{{DBf{GBd}}}}{Bb{{DBf{GBf}}}}{b{{DBf{GBh}}}}{b{{DBf{GBj}}}}{f{{DBf{GBl}}}}{f{{DBf{GBn}}}}{b{{DBf{GC`}}}}{Bb{{DBf{GCb}}}}{b{{DBf{GCd}}}}{f{{DBf{GCf}}}}{Hh{{DBf{GCh}}}}{f{{DBf{GCj}}}}{f{{DBf{GCl}}}}{Bb{{DBf{GCn}}}}{f{{DBf{GD`}}}}{Bb{{DBf{GDb}}}}{f{{DBf{GDd}}}}{Bb{{DBf{GDf}}}}{b{{DBf{GDh}}}}{b{{DBf{GDj}}}}{b{{DBf{GDl}}}}{fGAf}{BbGAh}{HhGAj}{fGAl}{fGAn}{fGB`}{BbGBb}{fGBd}{BbGBf}{bGBh}{bGBj}{fGBl}{fGBn}{bGC`}{BbGCb}{bGCd}{fGCf}{HhGCh}{fGCj}{fGCl}{BbGCn}{fGD`}{BbGDb}{fGDd}{BbGDf}{bGDh}{bGDj}{bGDl}{fGAf}{BbGAh}{HhGAj}{fGAl}{fGAn}{fGB`}{BbGBb}{fGBd}{BbGBf}{bGBh}{bGBj}{fGBl}{fGBn}{bGC`}{BbGCb}{bGCd}{fGCf}{HhGCh}{fGCj}{fGCl}{BbGCn}{fGD`}{BbGDb}{fGDd}{BbGDf}{bGDh}{bGDj}{bGDl}{DBh{{DBf{IA`}}}}{DBh{{DBf{IAb}}}}{DBh{{DBf{IAd}}}}{DBh{{DBf{IAf}}}}{DBh{{DBf{IAh}}}}{DBh{{DBf{IAj}}}}{DBh{{DBf{IAl}}}}{DBh{{DBf{IAn}}}}{DBh{{DBf{IB`}}}}{DBh{{DBf{IBb}}}}{DBh{{DBf{IBd}}}}{DBh{{DBf{IBf}}}}{DBh{{DBf{IBh}}}}{DBh{{DBf{IBj}}}}{DBh{{DBf{IBl}}}}{DBh{{DBf{IBn}}}}{DBh{{DBf{IC`}}}}{DBh{{DBf{ICb}}}}{DBh{{DBf{ICd}}}}{DBh{{DBf{ICf}}}}{DBh{{DBf{ICh}}}}{DBh{{DBf{ICj}}}}{DBh{{DBf{ICl}}}}{DBh{{DBf{ICn}}}}{DBh{{DBf{ID`}}}}{DBh{{DBf{IDb}}}}{DBh{{DBf{IDd}}}}{DBh{{DBf{IDf}}}}{DBh{{DBf{IDh}}}}{DBh{{DBf{IDj}}}}{DBh{{DBf{IDl}}}}{DBh{{DBf{IDn}}}}{DBh{{DBf{IE`}}}}{DBh{{DBf{IEb}}}}{DBh{{DBf{IEd}}}}{DBh{{DBf{IEf}}}}{DBh{{DBf{IEh}}}}{DBh{{DBf{IEj}}}}{DBh{{DBf{IEl}}}}{DBh{{DBf{IEn}}}}{DBh{{DBf{IF`}}}}{DBh{{DBf{IFb}}}}{DBh{{DBf{IFd}}}}{DBh{{DBf{IFf}}}}{DBh{{DBf{IFh}}}}{DBh{{DBf{IFj}}}}{DBh{{DBf{IFl}}}}{DBh{{DBf{IFn}}}}{DBh{{DBf{IG`}}}}{DBh{{DBf{IGb}}}}{DBh{{DBf{IGd}}}}{DBh{{DBf{IGf}}}}{DBh{{DBf{IGh}}}}{DBh{{DBf{IGj}}}}{DBh{{DBf{IGl}}}}{DBh{{DBf{IGn}}}}{DBh{{DBf{IH`}}}}{DBh{{DBf{IHb}}}}{DBh{{DBf{IHd}}}}{DBh{{DBf{IHf}}}}{DBh{{DBf{IHh}}}}{DBh{{DBf{IHj}}}}{DBh{{DBf{IHl}}}}{DBh{{DBf{IHn}}}}{DBh{{DBf{II`}}}}{DBh{{DBf{IIb}}}}{DBh{{DBf{IId}}}}{DBh{{DBf{IIf}}}}{DBh{{DBf{IIh}}}}{DBh{{DBf{IIj}}}}{DBh{{DBf{IIl}}}}{DBh{{DBf{IIn}}}}{DBh{{DBf{IJ`}}}}{DBh{{DBf{IJb}}}}{DBh{{DBf{IJd}}}}{DBh{{DBf{IJf}}}}{DBh{{DBf{IJh}}}}{DBh{{DBf{IJj}}}}{DBh{{DBf{IJl}}}}{DBh{{DBf{IJn}}}}{DBh{{DBf{IK`}}}}{DBh{{DBf{IKb}}}}{DBh{{DBf{IKd}}}}{DBh{{DBf{IKf}}}}{DBh{{DBf{IKh}}}}{DBh{{DBf{IKj}}}}{DBh{{DBf{IKl}}}}{DBh{{DBf{IKn}}}}{DBh{{DBf{IL`}}}}{DBh{{DBf{ILb}}}}{DBh{{DBf{ILd}}}}{DBh{{DBf{ILf}}}}{DBh{{DBf{ILh}}}}{DBh{{DBf{ILj}}}}{DBh{{DBf{ILl}}}}{DBh{{DBf{ILn}}}}{DBh{{DBf{IM`}}}}{DBh{{DBf{IMb}}}}{DBh{{DBf{IMd}}}}{DBh{{DBf{IMf}}}}{DBh{{DBf{IMh}}}}{DBh{{DBf{IMj}}}}{DBh{{DBf{IMl}}}}{DBh{{DBf{IMn}}}}{DBh{{DBf{IN`}}}}{DBh{{DBf{INb}}}}{DBh{{DBf{INd}}}}{DBh{{DBf{INf}}}}{DBh{{DBf{INh}}}}{DBh{{DBf{INj}}}}{DBh{{DBf{INl}}}}{DBh{{DBf{INn}}}}{DBh{{DBf{IO`}}}}{DBh{{DBf{IOb}}}}{DBh{{DBf{IOd}}}}{DBh{{DBf{IOf}}}}{DBh{{DBf{IOh}}}}{cGAf{{DBb{}{{DB`{GAf}}}}}}{cGAh{{DBb{}{{DB`{GAh}}}}}}{cGAj{{DBb{}{{DB`{GAj}}}}}}{cGAl{{DBb{}{{DB`{GAl}}}}}}{cGAn{{DBb{}{{DB`{GAn}}}}}}{cGB`{{DBb{}{{DB`{GB`}}}}}}{cGBb{{DBb{}{{DB`{GBb}}}}}}{cGBd{{DBb{}{{DB`{GBd}}}}}}{cGBf{{DBb{}{{DB`{GBf}}}}}}{cGBh{{DBb{}{{DB`{GBh}}}}}}{cGBj{{DBb{}{{DB`{GBj}}}}}}{cGBl{{DBb{}{{DB`{GBl}}}}}}{cGBn{{DBb{}{{DB`{GBn}}}}}}{cGC`{{DBb{}{{DB`{GC`}}}}}}{cGCb{{DBb{}{{DB`{GCb}}}}}}{cGCd{{DBb{}{{DB`{GCd}}}}}}{cGCf{{DBb{}{{DB`{GCf}}}}}}{cGCh{{DBb{}{{DB`{GCh}}}}}}{cGCj{{DBb{}{{DB`{GCj}}}}}}{cGCl{{DBb{}{{DB`{GCl}}}}}}{cGCn{{DBb{}{{DB`{GCn}}}}}}{cGD`{{DBb{}{{DB`{GD`}}}}}}{cGDb{{DBb{}{{DB`{GDb}}}}}}{cGDd{{DBb{}{{DB`{GDd}}}}}}{cGDf{{DBb{}{{DB`{GDf}}}}}}{cGDh{{DBb{}{{DB`{GDh}}}}}}{cGDj{{DBb{}{{DB`{GDj}}}}}}{cGDl{{DBb{}{{DB`{GDl}}}}}}{Hh{{DBf{IA`}}}}{Hh{{DBf{IAb}}}}{Hh{{DBf{IAd}}}}{Hh{{DBf{IAf}}}}{Hh{{DBf{IAh}}}}{Hh{{DBf{IAj}}}}{Hh{{DBf{IAl}}}}{Hh{{DBf{IAn}}}}{Hh{{DBf{IB`}}}}{Hh{{DBf{IBb}}}}{Hh{{DBf{IBd}}}}{Hh{{DBf{IBf}}}}{Hh{{DBf{IBh}}}}{Hh{{DBf{IBj}}}}{Hh{{DBf{IBl}}}}{Hh{{DBf{IBn}}}}{Hh{{DBf{IC`}}}}{Hh{{DBf{ICb}}}}{Hh{{DBf{ICd}}}}{Hh{{DBf{ICf}}}}{Hh{{DBf{ICh}}}}{Hh{{DBf{ICj}}}}{Hh{{DBf{ICl}}}}{Hh{{DBf{ICn}}}}{Hh{{DBf{ID`}}}}{Hh{{DBf{IDb}}}}{Hh{{DBf{IDd}}}}{Hh{{DBf{IDf}}}}{Hh{{DBf{IDh}}}}{Hh{{DBf{IDj}}}}{Hh{{DBf{IDl}}}}{Hh{{DBf{IDn}}}}{Hh{{DBf{IE`}}}}{Hh{{DBf{IEb}}}}{Hh{{DBf{IEd}}}}{Hh{{DBf{IEf}}}}{Hh{{DBf{IEh}}}}{Hh{{DBf{IEj}}}}{Hh{{DBf{IEl}}}}{Hh{{DBf{IEn}}}}{Hh{{DBf{IF`}}}}{Hh{{DBf{IFb}}}}{Hh{{DBf{IFd}}}}{Hh{{DBf{IFf}}}}{Hh{{DBf{IFh}}}}{Hh{{DBf{IFj}}}}{Hh{{DBf{IFl}}}}{Hh{{DBf{IFn}}}}{Hh{{DBf{IG`}}}}{Hh{{DBf{IGb}}}}{Hh{{DBf{IGd}}}}{Hh{{DBf{IGf}}}}{Hh{{DBf{IGh}}}}{Hh{{DBf{IGj}}}}{Hh{{DBf{IGl}}}}{Hh{{DBf{IGn}}}}{Hh{{DBf{IH`}}}}{Hh{{DBf{IHb}}}}{Hh{{DBf{IHd}}}}{Hh{{DBf{IHf}}}}{Hh{{DBf{IHh}}}}{Hh{{DBf{IHj}}}}{Hh{{DBf{IHl}}}}{Hh{{DBf{IHn}}}}{Hh{{DBf{II`}}}}{Hh{{DBf{IIb}}}}{Hh{{DBf{IId}}}}{Hh{{DBf{IIf}}}}{Hh{{DBf{IIh}}}}{Hh{{DBf{IIj}}}}{Hh{{DBf{IIl}}}}{Hh{{DBf{IIn}}}}{Hh{{DBf{IJ`}}}}{Hh{{DBf{IJb}}}}{Hh{{DBf{IJd}}}}{Hh{{DBf{IJf}}}}{Hh{{DBf{IJh}}}}{Hh{{DBf{IJj}}}}{Hh{{DBf{IJl}}}}{Hh{{DBf{IJn}}}}{Hh{{DBf{IK`}}}}{Hh{{DBf{IKb}}}}{Hh{{DBf{IKd}}}}{Hh{{DBf{IKf}}}}{Hh{{DBf{IKh}}}}{Hh{{DBf{IKj}}}}{Hh{{DBf{IKl}}}}{Hh{{DBf{IKn}}}}{Hh{{DBf{IL`}}}}{Hh{{DBf{ILb}}}}{Hh{{DBf{ILd}}}}{Hh{{DBf{ILf}}}}{Hh{{DBf{ILh}}}}{Hh{{DBf{ILj}}}}{Hh{{DBf{ILl}}}}{Hh{{DBf{ILn}}}}{Hh{{DBf{IM`}}}}{Hh{{DBf{IMb}}}}{Hh{{DBf{IMd}}}}{Hh{{DBf{IMf}}}}{Hh{{DBf{IMh}}}}{Hh{{DBf{IMj}}}}{Hh{{DBf{IMl}}}}{Hh{{DBf{IMn}}}}{Hh{{DBf{IN`}}}}{Hh{{DBf{INb}}}}{Hh{{DBf{INd}}}}{Hh{{DBf{INf}}}}{Hh{{DBf{INh}}}}{Hh{{DBf{INj}}}}{Hh{{DBf{INl}}}}{Hh{{DBf{INn}}}}{Hh{{DBf{IO`}}}}{Hh{{DBf{IOb}}}}{Hh{{DBf{IOd}}}}{Hh{{DBf{IOf}}}}{Hh{{DBf{IOh}}}}````````````````````````````````````{{GAfc}AfDBj}{{GAhc}AfDBj}{{GAjc}AfDBj}{{GAlc}AfDBj}{{GAnc}AfDBj}{{GB`c}AfDBj}{{GBbc}AfDBj}{{GBdc}AfDBj}{{GBfc}AfDBj}{{GBhc}AfDBj}{{GBjc}AfDBj}{{GBlc}AfDBj}{{GBnc}AfDBj}{{GC`c}AfDBj}{{GCbc}AfDBj}{{GCdc}AfDBj}{{GCfc}AfDBj}{{GChc}AfDBj}{{GCjc}AfDBj}{{GClc}AfDBj}{{GCnc}AfDBj}{{GD`c}AfDBj}{{GDbc}AfDBj}{{GDdc}AfDBj}{{GDfc}AfDBj}{{GDhc}AfDBj}{{GDjc}AfDBj}{{GDlc}AfDBj}```````````````````````````````````````````````````````````````{{GAfGAf}Af}{{GAhGAh}Af}{{GAjGAj}Af}{{GAlGAl}Af}{{GAnGAn}Af}{{GB`GB`}Af}{{GBbGBb}Af}{{GBdGBd}Af}{{GBfGBf}Af}{{GBhGBh}Af}{{GBjGBj}Af}{{GBlGBl}Af}{{GBnGBn}Af}{{GC`GC`}Af}{{GCbGCb}Af}{{GCdGCd}Af}{{GCfGCf}Af}{{GChGCh}Af}{{GCjGCj}Af}{{GClGCl}Af}{{GCnGCn}Af}{{GD`GD`}Af}{{GDbGDb}Af}{{GDdGDd}Af}{{GDfGDf}Af}{{GDhGDh}Af}{{GDjGDj}Af}{{GDlGDl}Af}``````````````{{GAfGAf}GAf}{{GAhGAh}GAh}{{GAjGAj}GAj}{{GAlGAl}GAl}{{GAnGAn}GAn}{{GB`GB`}GB`}{{GBbGBb}GBb}{{GBdGBd}GBd}{{GBfGBf}GBf}{{GBhGBh}GBh}{{GBjGBj}GBj}{{GBlGBl}GBl}{{GBnGBn}GBn}{{GC`GC`}GC`}{{GCbGCb}GCb}{{GCdGCd}GCd}{{GCfGCf}GCf}{{GChGCh}GCh}{{GCjGCj}GCj}{{GClGCl}GCl}{{GCnGCn}GCn}{{GD`GD`}GD`}{{GDbGDb}GDb}{{GDdGDd}GDd}{{GDfGDf}GDf}{{GDhGDh}GDh}{{GDjGDj}GDj}{{GDlGDl}GDl}{{GAfGAf}Bl}{{GAhGAh}Bl}{{GAjGAj}Bl}{{GAlGAl}Bl}{{GAnGAn}Bl}{{GB`GB`}Bl}{{GBbGBb}Bl}{{GBdGBd}Bl}{{GBfGBf}Bl}{{GBhGBh}Bl}{{GBjGBj}Bl}{{GBlGBl}Bl}{{GBnGBn}Bl}{{GC`GC`}Bl}{{GCbGCb}Bl}{{GCdGCd}Bl}{{GCfGCf}Bl}{{GChGCh}Bl}{{GCjGCj}Bl}{{GClGCl}Bl}{{GCnGCn}Bl}{{GD`GD`}Bl}{{GDbGDb}Bl}{{GDdGDd}Bl}{{GDfGDf}Bl}{{GDhGDh}Bl}{{GDjGDj}Bl}{{GDlGDl}Bl}`{ce{}{}}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{GAfBl}{GAhBl}{GAjBl}{GAlBl}{GAnBl}{GB`Bl}{GBbBl}{GBdBl}{GBfBl}{GBhBl}{GBjBl}{GBlBl}{GBnBl}{GC`Bl}{GCbBl}{GCdBl}{GCfBl}{GChBl}{GCjBl}{GClBl}{GCnBl}{GD`Bl}{GDbBl}{GDdBl}{GDfBl}{GDhBl}{GDjBl}{GDlBl}{GAfBl}{GAhBl}{GAjBl}{GAlBl}{GAnBl}{GB`Bl}{GBbBl}{GBdBl}{GBfBl}{GBhBl}{GBjBl}{GBlBl}{GBnBl}{GC`Bl}{GCbBl}{GCdBl}{GCfBl}{GChBl}{GCjBl}{GClBl}{GCnBl}{GD`Bl}{GDbBl}{GDdBl}{GDfBl}{GDhBl}{GDjBl}{GDlBl}```````````````````````````````````````````````````````````````````````````````````````````````````````````````{GDnBb}`{Ah{{B`{BbAh}}}}{GDnAh}```````````````````````````````````````{GAfGAf}{GAhGAh}{GAjGAj}{GAlGAl}{GAnGAn}{GB`GB`}{GBbGBb}{GBdGBd}{GBfGBf}{GBhGBh}{GBjGBj}{GBlGBl}{GBnGBn}{GC`GC`}{GCbGCb}{GCdGCd}{GCfGCf}{GChGCh}{GCjGCj}{GClGCl}{GCnGCn}{GD`GD`}{GDbGDb}{GDdGDd}{GDfGDf}{GDhGDh}{GDjGDj}{GDlGDl}````````````````````````````````````````````````````````````````````````````````````````````{{nBb{d{b}}}{{B`{GDnBh}}}}{{GAfGAf}{{DBf{DAn}}}}{{GAhGAh}{{DBf{DAn}}}}{{GAjGAj}{{DBf{DAn}}}}{{GAlGAl}{{DBf{DAn}}}}{{GAnGAn}{{DBf{DAn}}}}{{GB`GB`}{{DBf{DAn}}}}{{GBbGBb}{{DBf{DAn}}}}{{GBdGBd}{{DBf{DAn}}}}{{GBfGBf}{{DBf{DAn}}}}{{GBhGBh}{{DBf{DAn}}}}{{GBjGBj}{{DBf{DAn}}}}{{GBlGBl}{{DBf{DAn}}}}{{GBnGBn}{{DBf{DAn}}}}{{GC`GC`}{{DBf{DAn}}}}{{GCbGCb}{{DBf{DAn}}}}{{GCdGCd}{{DBf{DAn}}}}{{GCfGCf}{{DBf{DAn}}}}{{GChGCh}{{DBf{DAn}}}}{{GCjGCj}{{DBf{DAn}}}}{{GClGCl}{{DBf{DAn}}}}{{GCnGCn}{{DBf{DAn}}}}{{GD`GD`}{{DBf{DAn}}}}{{GDbGDb}{{DBf{DAn}}}}{{GDdGDd}{{DBf{DAn}}}}{{GDfGDf}{{DBf{DAn}}}}{{GDhGDh}{{DBf{DAn}}}}{{GDjGDj}{{DBf{DAn}}}}{{GDlGDl}{{DBf{DAn}}}}`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{{GAfGAf}Af}{{GAhGAh}Af}{{GAjGAj}Af}{{GAlGAl}Af}{{GAnGAn}Af}{{GB`GB`}Af}{{GBbGBb}Af}{{GBdGBd}Af}{{GBfGBf}Af}{{GBhGBh}Af}{{GBjGBj}Af}{{GBlGBl}Af}{{GBnGBn}Af}{{GC`GC`}Af}{{GCbGCb}Af}{{GCdGCd}Af}{{GCfGCf}Af}{{GChGCh}Af}{{GCjGCj}Af}{{GClGCl}Af}{{GCnGCn}Af}{{GD`GD`}Af}{{GDbGDb}Af}{{GDdGDd}Af}{{GDfGDf}Af}{{GDhGDh}Af}{{GDjGDj}Af}{{GDlGDl}Af}```````````````````````````````````````````````````````````````````````````````````````````````````{{GDnn{d{b}}}Cl}{{GE`n{d{b}}}Cl}{{GEbn{d{b}}}Cl}{{GEdn{d{b}}}Cl}{{GEfn{d{b}}}Cl}{{GEhn{d{b}}}Cl}{{GEjn{d{b}}}Cl}{{GEln{d{b}}}Cl}{{GEnn{d{b}}}Cl}{{GF`n{d{b}}}Cl}{{GFbn{d{b}}}Cl}{{GFdn{d{b}}}Cl}{{GFfn{d{b}}}Cl}{{GFhn{d{b}}}Cl}{{GFjn{d{b}}}Cl}{{GFln{d{b}}}Cl}{{GFnn{d{b}}}Cl}{{GG`n{d{b}}}Cl}{{GGbn{d{b}}}Cl}{{GGdn{d{b}}}Cl}{{GGfn{d{b}}}Cl}{{GGhn{d{b}}}Cl}{{GGjn{d{b}}}Cl}{{GGln{d{b}}}Cl}{{GGnn{d{b}}}Cl}{{GH`n{d{b}}}Cl}{{GHbn{d{b}}}Cl}{{GHdn{d{b}}}Cl}{{GHfn{d{b}}}Cl}{{GHhn{d{b}}}Cl}{{GHjn{d{b}}}Cl}{{GHln{d{b}}}Cl}{{GHnn{d{b}}}Cl}{{GI`n{d{b}}}Cl}{{GIbn{d{b}}}Cl}{{GIdn{d{b}}}Cl}{{GIfn{d{b}}}Cl}{{GIhn{d{b}}}Cl}{{GIjn{d{b}}}Cl}{{GIln{d{b}}}Cl}{{GInn{d{b}}}Cl}{{GJ`n{d{b}}}Cl}{{GJbn{d{b}}}Cl}{{GJdn{d{b}}}Cl}{{GJfn{d{b}}}Cl}{{GJhn{d{b}}}Cl}{{GJjn{d{b}}}Cl}{{GJln{d{b}}}Cl}{{GJnn{d{b}}}Cl}{{GK`n{d{b}}}Cl}{{GKbn{d{b}}}Cl}{{GKdn{d{b}}}Cl}{{GKfn{d{b}}}Cl}{{GKhn{d{b}}}Cl}{{GKjn{d{b}}}Cl}{{GKln{d{b}}}Cl}{{GKnn{d{b}}}Cl}{{GL`n{d{b}}}Cl}{{GLbn{d{b}}}Cl}{{GLdn{d{b}}}Cl}{{GLfn{d{b}}}Cl}{{GLhn{d{b}}}Cl}{{GLjn{d{b}}}Cl}{{GLln{d{b}}}Cl}{{GLnn{d{b}}}Cl}{{GM`n{d{b}}}Cl}{{GMbn{d{b}}}Cl}{{GMdn{d{b}}}Cl}{{GMfn{d{b}}}Cl}{{GMhn{d{b}}}Cl}{{GMjn{d{b}}}Cl}{{GMln{d{b}}}Cl}{{GMnn{d{b}}}Cl}{{GN`n{d{b}}}Cl}{{GNbn{d{b}}}Cl}{{GNdn{d{b}}}Cl}{{GNfn{d{b}}}Cl}{{GNhn{d{b}}}Cl}{{GNjn{d{b}}}Cl}{{GNln{d{b}}}Cl}{{GNnn{d{b}}}Cl}{{GO`n{d{b}}}Cl}{{GObn{d{b}}}Cl}{{GOdn{d{b}}}Cl}{{GOfn{d{b}}}Cl}{{GOhn{d{b}}}Cl}{{GOjn{d{b}}}Cl}{{GOln{d{b}}}Cl}{{GOnn{d{b}}}Cl}{{H@`n{d{b}}}Cl}{{H@bn{d{b}}}Cl}{{H@dn{d{b}}}Cl}{{H@fn{d{b}}}Cl}{{H@hn{d{b}}}Cl}{{H@jn{d{b}}}Cl}{{H@ln{d{b}}}Cl}{{H@nn{d{b}}}Cl}{{HA`n{d{b}}}Cl}{{HAbn{d{b}}}Cl}{{HAdn{d{b}}}Cl}{{HAfn{d{b}}}Cl}{{HAhn{d{b}}}Cl}{{HAjn{d{b}}}Cl}{{HAln{d{b}}}Cl}{{HAnn{d{b}}}Cl}{{HB`n{d{b}}}Cl}{{HBbn{d{b}}}Cl}{{HBdn{d{b}}}Cl}{{HBfn{d{b}}}Cl}{{HBhn{d{b}}}Cl}{{HBjn{d{b}}}Cl}{{HBln{d{b}}}Cl}{{HBnn{d{b}}}Cl}{{HC`n{d{b}}}Cl}{{HCbn{d{b}}}Cl}{{HCdn{d{b}}}Cl}{{HCfn{d{b}}}Cl}{{HChn{d{b}}}Cl}{{HCjn{d{b}}}Cl}{{HCln{d{b}}}Cl}{{HCnn{d{b}}}Cl}{{HD`n{d{b}}}Cl}{{HDbn{d{b}}}Cl}{{HDdn{d{b}}}Cl}{{HDfn{d{b}}}Cl}{{HDhn{d{b}}}Cl}{{HDjn{d{b}}}Cl}{{HDln{d{b}}}Cl}{{HDnn{d{b}}}Cl}{{HE`n{d{b}}}Cl}{{HEbn{d{b}}}Cl}{{HEdn{d{b}}}Cl}{{HEfn{d{b}}}Cl}{{HEhn{d{b}}}Cl}{{HEjn{d{b}}}Cl}{{HEln{d{b}}}Cl}{{HEnn{d{b}}}Cl}{{HF`n{d{b}}}Cl}{{HFbn{d{b}}}Cl}{{HFdn{d{b}}}Cl}{{HFfn{d{b}}}Cl}{{HFhn{d{b}}}Cl}{{HFjn{d{b}}}Cl}{{HFln{d{b}}}Cl}{{HFnn{d{b}}}Cl}{{HG`n{d{b}}}Cl}{{HGbn{d{b}}}Cl}{{HGdn{d{b}}}Cl}{{HGfn{d{b}}}Cl}{{HGhn{d{b}}}Cl}{{HGjn{d{b}}}Cl}{{HGln{d{b}}}Cl}{{HGnn{d{b}}}Cl}{{HH`n{d{b}}}Cl}{{HHbn{d{b}}}Cl}{{HHdn{d{b}}}Cl}{{HHfn{d{b}}}Cl}{{HHhn{d{b}}}Cl}{{HHjn{d{b}}}Cl}{{HHln{d{b}}}Cl}{{HHnn{d{b}}}Cl}{{HI`n{d{b}}}Cl}{{HIbn{d{b}}}Cl}{{HIdn{d{b}}}Cl}{{HIfn{d{b}}}Cl}{{HIhn{d{b}}}Cl}{{HIjn{d{b}}}Cl}{{HIln{d{b}}}Cl}{{HInn{d{b}}}Cl}{{HJ`n{d{b}}}Cl}{{HJbn{d{b}}}Cl}{{HJdn{d{b}}}Cl}{{HJfn{d{b}}}Cl}{{HJhn{d{b}}}Cl}{{HJjn{d{b}}}Cl}{{HJln{d{b}}}Cl}{{HJnn{d{b}}}Cl}{{HK`n{d{b}}}Cl}{{HKbn{d{b}}}Cl}{{HKdn{d{b}}}Cl}{{HKfn{d{b}}}Cl}{{HKhn{d{b}}}Cl}{{HKjn{d{b}}}Cl}{{HKln{d{b}}}Cl}{{HKnn{d{b}}}Cl}{{HL`n{d{b}}}Cl}{{HLbn{d{b}}}Cl}{{HLdn{d{b}}}Cl}{{HLfn{d{b}}}Cl}{{HLhn{d{b}}}Cl}{{HLjn{d{b}}}Cl}{{HLln{d{b}}}Cl}{{HLnn{d{b}}}Cl}{{HM`n{d{b}}}Cl}{{HMbn{d{b}}}Cl}{{HMdn{d{b}}}Cl}{{HMfn{d{b}}}Cl}{{HMhn{d{b}}}Cl}{{HMjn{d{b}}}Cl}{{HMln{d{b}}}Cl}{{HMnn{d{b}}}Cl}{{HN`n{d{b}}}Cl}{{HNbn{d{b}}}Cl}{{HNdn{d{b}}}Cl}{{HNfn{d{b}}}Cl}{{HNhn{d{b}}}Cl}{{HNjn{d{b}}}Cl}{{HNln{d{b}}}Cl}{{HNnn{d{b}}}Cl}{{HO`n{d{b}}}Cl}{{HObn{d{b}}}Cl}{{HOdn{d{b}}}Cl}{{HOfn{d{b}}}Cl}{{HOhn{d{b}}}Cl}{{HOjn{d{b}}}Cl}{{HOln{d{b}}}Cl}{{HOnn{d{b}}}Cl}{{I@`n{d{b}}}Cl}{{I@bn{d{b}}}Cl}{{I@dn{d{b}}}Cl}{{I@fn{d{b}}}Cl}{{I@hn{d{b}}}Cl}{{I@jn{d{b}}}Cl}{{I@ln{d{b}}}Cl}{{I@nn{d{b}}}Cl}`{{GDnc}B`D`}{{GE`c}B`D`}{{GEbc}B`D`}{{GEdc}B`D`}{{GEfc}B`D`}{{GEhc}B`D`}{{GEjc}B`D`}{{GElc}B`D`}{{GEnc}B`D`}{{GF`c}B`D`}{{GFbc}B`D`}{{GFdc}B`D`}{{GFfc}B`D`}{{GFhc}B`D`}{{GFjc}B`D`}{{GFlc}B`D`}{{GFnc}B`D`}{{GG`c}B`D`}{{GGbc}B`D`}{{GGdc}B`D`}{{GGfc}B`D`}{{GGhc}B`D`}{{GGjc}B`D`}{{GGlc}B`D`}{{GGnc}B`D`}{{GH`c}B`D`}{{GHbc}B`D`}{{GHdc}B`D`}{{GHfc}B`D`}{{GHhc}B`D`}{{GHjc}B`D`}{{GHlc}B`D`}{{GHnc}B`D`}{{GI`c}B`D`}{{GIbc}B`D`}{{GIdc}B`D`}{{GIfc}B`D`}{{GIhc}B`D`}{{GIjc}B`D`}{{GIlc}B`D`}{{GInc}B`D`}{{GJ`c}B`D`}{{GJbc}B`D`}{{GJdc}B`D`}{{GJfc}B`D`}{{GJhc}B`D`}{{GJjc}B`D`}{{GJlc}B`D`}{{GJnc}B`D`}{{GK`c}B`D`}{{GKbc}B`D`}{{GKdc}B`D`}{{GKfc}B`D`}{{GKhc}B`D`}{{GKjc}B`D`}{{GKlc}B`D`}{{GKnc}B`D`}{{GL`c}B`D`}{{GLbc}B`D`}{{GLdc}B`D`}{{GLfc}B`D`}{{GLhc}B`D`}{{GLjc}B`D`}{{GLlc}B`D`}{{GLnc}B`D`}{{GM`c}B`D`}{{GMbc}B`D`}{{GMdc}B`D`}{{GMfc}B`D`}{{GMhc}B`D`}{{GMjc}B`D`}{{GMlc}B`D`}{{GMnc}B`D`}{{GN`c}B`D`}{{GNbc}B`D`}{{GNdc}B`D`}{{GNfc}B`D`}{{GNhc}B`D`}{{GNjc}B`D`}{{GNlc}B`D`}{{GNnc}B`D`}{{GO`c}B`D`}{{GObc}B`D`}{{GOdc}B`D`}{{GOfc}B`D`}{{GOhc}B`D`}{{GOjc}B`D`}{{GOlc}B`D`}{{GOnc}B`D`}{{H@`c}B`D`}{{H@bc}B`D`}{{H@dc}B`D`}{{H@fc}B`D`}{{H@hc}B`D`}{{H@jc}B`D`}{{H@lc}B`D`}{{H@nc}B`D`}{{HA`c}B`D`}{{HAbc}B`D`}{{HAdc}B`D`}{{HAfc}B`D`}{{HAhc}B`D`}{{HAjc}B`D`}{{HAlc}B`D`}{{HAnc}B`D`}{{HB`c}B`D`}{{HBbc}B`D`}{{HBdc}B`D`}{{HBfc}B`D`}{{HBhc}B`D`}{{HBjc}B`D`}{{HBlc}B`D`}{{HBnc}B`D`}{{HC`c}B`D`}{{HCbc}B`D`}{{HCdc}B`D`}{{HCfc}B`D`}{{HChc}B`D`}{{HCjc}B`D`}{{HClc}B`D`}{{HCnc}B`D`}{{HD`c}B`D`}{{HDbc}B`D`}{{HDdc}B`D`}{{HDfc}B`D`}{{HDhc}B`D`}{{HDjc}B`D`}{{HDlc}B`D`}{{HDnc}B`D`}{{HE`c}B`D`}{{HEbc}B`D`}{{HEdc}B`D`}{{HEfc}B`D`}{{HEhc}B`D`}{{HEjc}B`D`}{{HElc}B`D`}{{HEnc}B`D`}{{HF`c}B`D`}{{HFbc}B`D`}{{HFdc}B`D`}{{HFfc}B`D`}{{HFhc}B`D`}{{HFjc}B`D`}{{HFlc}B`D`}{{HFnc}B`D`}{{HG`c}B`D`}{{HGbc}B`D`}{{HGdc}B`D`}{{HGfc}B`D`}{{HGhc}B`D`}{{HGjc}B`D`}{{HGlc}B`D`}{{HGnc}B`D`}{{HH`c}B`D`}{{HHbc}B`D`}{{HHdc}B`D`}{{HHfc}B`D`}{{HHhc}B`D`}{{HHjc}B`D`}{{HHlc}B`D`}{{HHnc}B`D`}{{HI`c}B`D`}{{HIbc}B`D`}{{HIdc}B`D`}{{HIfc}B`D`}{{HIhc}B`D`}{{HIjc}B`D`}{{HIlc}B`D`}{{HInc}B`D`}{{HJ`c}B`D`}{{HJbc}B`D`}{{HJdc}B`D`}{{HJfc}B`D`}{{HJhc}B`D`}{{HJjc}B`D`}{{HJlc}B`D`}{{HJnc}B`D`}{{HK`c}B`D`}{{HKbc}B`D`}{{HKdc}B`D`}{{HKfc}B`D`}{{HKhc}B`D`}{{HKjc}B`D`}{{HKlc}B`D`}{{HKnc}B`D`}{{HL`c}B`D`}{{HLbc}B`D`}{{HLdc}B`D`}{{HLfc}B`D`}{{HLhc}B`D`}{{HLjc}B`D`}{{HLlc}B`D`}{{HLnc}B`D`}{{HM`c}B`D`}{{HMbc}B`D`}{{HMdc}B`D`}{{HMfc}B`D`}{{HMhc}B`D`}{{HMjc}B`D`}{{HMlc}B`D`}{{HMnc}B`D`}{{HN`c}B`D`}{{HNbc}B`D`}{{HNdc}B`D`}{{HNfc}B`D`}{{HNhc}B`D`}{{HNjc}B`D`}{{HNlc}B`D`}{{HNnc}B`D`}{{HO`c}B`D`}{{HObc}B`D`}{{HOdc}B`D`}{{HOfc}B`D`}{{HOhc}B`D`}{{HOjc}B`D`}{{HOlc}B`D`}{{HOnc}B`D`}{{I@`c}B`D`}{{I@bc}B`D`}{{I@dc}B`D`}{{I@fc}B`D`}{{I@hc}B`D`}{{I@jc}B`D`}{{I@lc}B`D`}{{I@nc}B`D`}{{IA`c}B`D`}{{IAbc}B`D`}{{IAdc}B`D`}{{IAfc}B`D`}{{GAfc}B`D`}{{IAhc}B`D`}{{IAjc}B`D`}{{IAlc}B`D`}{{GAhc}B`D`}{{GAjc}B`D`}{{IAnc}B`D`}{{IB`c}B`D`}{{IBbc}B`D`}{{IBdc}B`D`}{{IBfc}B`D`}{{IBhc}B`D`}{{GAlc}B`D`}{{IBjc}B`D`}{{GAnc}B`D`}{{IBlc}B`D`}{{IBnc}B`D`}{{GB`c}B`D`}{{IC`c}B`D`}{{ICbc}B`D`}{{ICdc}B`D`}{{ICfc}B`D`}{{IChc}B`D`}{{ICjc}B`D`}{{GBbc}B`D`}{{IClc}B`D`}{{ICnc}B`D`}{{ID`c}B`D`}{{IDbc}B`D`}{{GBdc}B`D`}{{IDdc}B`D`}{{IDfc}B`D`}{{IDhc}B`D`}{{IDjc}B`D`}{{IDlc}B`D`}{{IDnc}B`D`}{{IE`c}B`D`}{{GBfc}B`D`}{{GBhc}B`D`}{{IEbc}B`D`}{{IEdc}B`D`}{{IEfc}B`D`}{{IEhc}B`D`}{{IEjc}B`D`}{{GBjc}B`D`}{{IElc}B`D`}{{IEnc}B`D`}{{IF`c}B`D`}{{GBlc}B`D`}{{IFbc}B`D`}{{IFdc}B`D`}{{IFfc}B`D`}{{GBnc}B`D`}{{IFhc}B`D`}{{IFjc}B`D`}{{IFlc}B`D`}{{IFnc}B`D`}{{IG`c}B`D`}{{GC`c}B`D`}{{GCbc}B`D`}{{IGbc}B`D`}{{GCdc}B`D`}{{GCfc}B`D`}{{IGdc}B`D`}{{GChc}B`D`}{{IGfc}B`D`}{{IGhc}B`D`}{{IGjc}B`D`}{{GCjc}B`D`}{{IGlc}B`D`}{{IGnc}B`D`}{{IH`c}B`D`}{{IHbc}B`D`}{{GClc}B`D`}{{GCnc}B`D`}{{GD`c}B`D`}{{IHdc}B`D`}{{IHfc}B`D`}{{IHhc}B`D`}{{IHjc}B`D`}{{IHlc}B`D`}{{IHnc}B`D`}{{II`c}B`D`}{{GDbc}B`D`}{{IIbc}B`D`}{{GDdc}B`D`}{{IIdc}B`D`}{{IIfc}B`D`}{{IIhc}B`D`}{{IIjc}B`D`}{{IIlc}B`D`}{{GDfc}B`D`}{{GDhc}B`D`}{{IInc}B`D`}{{IJ`c}B`D`}{{IJbc}B`D`}{{IJdc}B`D`}{{IJfc}B`D`}{{IJhc}B`D`}{{IJjc}B`D`}{{IJlc}B`D`}{{IJnc}B`D`}{{IK`c}B`D`}{{IKbc}B`D`}{{IKdc}B`D`}{{IKfc}B`D`}{{IKhc}B`D`}{{IKjc}B`D`}{{IKlc}B`D`}{{IKnc}B`D`}{{IL`c}B`D`}{{ILbc}B`D`}{{ILdc}B`D`}{{GDjc}B`D`}{{ILfc}B`D`}{{ILhc}B`D`}{{ILjc}B`D`}{{ILlc}B`D`}{{ILnc}B`D`}{{IM`c}B`D`}{{IMbc}B`D`}{{IMdc}B`D`}{{IMfc}B`D`}{{IMhc}B`D`}{{IMjc}B`D`}{{IMlc}B`D`}{{IMnc}B`D`}{{IN`c}B`D`}{{INbc}B`D`}{{INdc}B`D`}{{INfc}B`D`}{{INhc}B`D`}{{INjc}B`D`}{{INlc}B`D`}{{INnc}B`D`}{{GDlc}B`D`}{{IO`c}B`D`}{{IObc}B`D`}{{IOdc}B`D`}{{IOfc}B`D`}{{IOhc}B`D`}````````{{GAfGAfBl}Af}{{GAhGAhBl}Af}{{GAjGAjBl}Af}{{GAlGAlBl}Af}{{GAnGAnBl}Af}{{GB`GB`Bl}Af}{{GBbGBbBl}Af}{{GBdGBdBl}Af}{{GBfGBfBl}Af}{{GBhGBhBl}Af}{{GBjGBjBl}Af}{{GBlGBlBl}Af}{{GBnGBnBl}Af}{{GC`GC`Bl}Af}{{GCbGCbBl}Af}{{GCdGCdBl}Af}{{GCfGCfBl}Af}{{GChGChBl}Af}{{GCjGCjBl}Af}{{GClGClBl}Af}{{GCnGCnBl}Af}{{GD`GD`Bl}Af}{{GDbGDbBl}Af}{{GDdGDdBl}Af}{{GDfGDfBl}Af}{{GDhGDhBl}Af}{{GDjGDjBl}Af}{{GDlGDlBl}Af}```````````````````````````````````````````{{GAfGAf}GAf}{{GAhGAh}GAh}{{GAjGAj}GAj}{{GAlGAl}GAl}{{GAnGAn}GAn}{{GB`GB`}GB`}{{GBbGBb}GBb}{{GBdGBd}GBd}{{GBfGBf}GBf}{{GBhGBh}GBh}{{GBjGBj}GBj}{{GBlGBl}GBl}{{GBnGBn}GBn}{{GC`GC`}GC`}{{GCbGCb}GCb}{{GCdGCd}GCd}{{GCfGCf}GCf}{{GChGCh}GCh}{{GCjGCj}GCj}{{GClGCl}GCl}{{GCnGCn}GCn}{{GD`GD`}GD`}{{GDbGDb}GDb}{{GDdGDd}GDd}{{GDfGDf}GDf}{{GDhGDh}GDh}{{GDjGDj}GDj}{{GDlGDl}GDl}{{GAfGAf}Af}{{GAhGAh}Af}{{GAjGAj}Af}{{GAlGAl}Af}{{GAnGAn}Af}{{GB`GB`}Af}{{GBbGBb}Af}{{GBdGBd}Af}{{GBfGBf}Af}{{GBhGBh}Af}{{GBjGBj}Af}{{GBlGBl}Af}{{GBnGBn}Af}{{GC`GC`}Af}{{GCbGCb}Af}{{GCdGCd}Af}{{GCfGCf}Af}{{GChGCh}Af}{{GCjGCj}Af}{{GClGCl}Af}{{GCnGCn}Af}{{GD`GD`}Af}{{GDbGDb}Af}{{GDdGDd}Af}{{GDfGDf}Af}{{GDhGDh}Af}{{GDjGDj}Af}{{GDlGDl}Af}`````{{GAfGAf}GAf}{{GAhGAh}GAh}{{GAjGAj}GAj}{{GAlGAl}GAl}{{GAnGAn}GAn}{{GB`GB`}GB`}{{GBbGBb}GBb}{{GBdGBd}GBd}{{GBfGBf}GBf}{{GBhGBh}GBh}{{GBjGBj}GBj}{{GBlGBl}GBl}{{GBnGBn}GBn}{{GC`GC`}GC`}{{GCbGCb}GCb}{{GCdGCd}GCd}{{GCfGCf}GCf}{{GChGCh}GCh}{{GCjGCj}GCj}{{GClGCl}GCl}{{GCnGCn}GCn}{{GD`GD`}GD`}{{GDbGDb}GDb}{{GDdGDd}GDd}{{GDfGDf}GDf}{{GDhGDh}GDh}{{GDjGDj}GDj}{{GDlGDl}GDl}```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{IA`{{DBf{DBh}}}}{IAb{{DBf{DBh}}}}{IAd{{DBf{DBh}}}}{IAf{{DBf{DBh}}}}{IAh{{DBf{DBh}}}}{IAj{{DBf{DBh}}}}{IAl{{DBf{DBh}}}}{IAn{{DBf{DBh}}}}{IB`{{DBf{DBh}}}}{IBb{{DBf{DBh}}}}{IBd{{DBf{DBh}}}}{IBf{{DBf{DBh}}}}{IBh{{DBf{DBh}}}}{IBj{{DBf{DBh}}}}{IBl{{DBf{DBh}}}}{IBn{{DBf{DBh}}}}{IC`{{DBf{DBh}}}}{ICb{{DBf{DBh}}}}{ICd{{DBf{DBh}}}}{ICf{{DBf{DBh}}}}{ICh{{DBf{DBh}}}}{ICj{{DBf{DBh}}}}{ICl{{DBf{DBh}}}}{ICn{{DBf{DBh}}}}{ID`{{DBf{DBh}}}}{IDb{{DBf{DBh}}}}{IDd{{DBf{DBh}}}}{IDf{{DBf{DBh}}}}{IDh{{DBf{DBh}}}}{IDj{{DBf{DBh}}}}{IDl{{DBf{DBh}}}}{IDn{{DBf{DBh}}}}{IE`{{DBf{DBh}}}}{IEb{{DBf{DBh}}}}{IEd{{DBf{DBh}}}}{IEf{{DBf{DBh}}}}{IEh{{DBf{DBh}}}}{IEj{{DBf{DBh}}}}{IEl{{DBf{DBh}}}}{IEn{{DBf{DBh}}}}{IF`{{DBf{DBh}}}}{IFb{{DBf{DBh}}}}{IFd{{DBf{DBh}}}}{IFf{{DBf{DBh}}}}{IFh{{DBf{DBh}}}}{IFj{{DBf{DBh}}}}{IFl{{DBf{DBh}}}}{IFn{{DBf{DBh}}}}{IG`{{DBf{DBh}}}}{IGb{{DBf{DBh}}}}{IGd{{DBf{DBh}}}}{IGf{{DBf{DBh}}}}{IGh{{DBf{DBh}}}}{IGj{{DBf{DBh}}}}{IGl{{DBf{DBh}}}}{IGn{{DBf{DBh}}}}{IH`{{DBf{DBh}}}}{IHb{{DBf{DBh}}}}{IHd{{DBf{DBh}}}}{IHf{{DBf{DBh}}}}{IHh{{DBf{DBh}}}}{IHj{{DBf{DBh}}}}{IHl{{DBf{DBh}}}}{IHn{{DBf{DBh}}}}{II`{{DBf{DBh}}}}{IIb{{DBf{DBh}}}}{IId{{DBf{DBh}}}}{IIf{{DBf{DBh}}}}{IIh{{DBf{DBh}}}}{IIj{{DBf{DBh}}}}{IIl{{DBf{DBh}}}}{IIn{{DBf{DBh}}}}{IJ`{{DBf{DBh}}}}{IJb{{DBf{DBh}}}}{IJd{{DBf{DBh}}}}{IJf{{DBf{DBh}}}}{IJh{{DBf{DBh}}}}{IJj{{DBf{DBh}}}}{IJl{{DBf{DBh}}}}{IJn{{DBf{DBh}}}}{IK`{{DBf{DBh}}}}{IKb{{DBf{DBh}}}}{IKd{{DBf{DBh}}}}{IKf{{DBf{DBh}}}}{IKh{{DBf{DBh}}}}{IKj{{DBf{DBh}}}}{IKl{{DBf{DBh}}}}{IKn{{DBf{DBh}}}}{IL`{{DBf{DBh}}}}{ILb{{DBf{DBh}}}}{ILd{{DBf{DBh}}}}{ILf{{DBf{DBh}}}}{ILh{{DBf{DBh}}}}{ILj{{DBf{DBh}}}}{ILl{{DBf{DBh}}}}{ILn{{DBf{DBh}}}}{IM`{{DBf{DBh}}}}{IMb{{DBf{DBh}}}}{IMd{{DBf{DBh}}}}{IMf{{DBf{DBh}}}}{IMh{{DBf{DBh}}}}{IMj{{DBf{DBh}}}}{IMl{{DBf{DBh}}}}{IMn{{DBf{DBh}}}}{IN`{{DBf{DBh}}}}{INb{{DBf{DBh}}}}{INd{{DBf{DBh}}}}{INf{{DBf{DBh}}}}{INh{{DBf{DBh}}}}{INj{{DBf{DBh}}}}{INl{{DBf{DBh}}}}{INn{{DBf{DBh}}}}{IO`{{DBf{DBh}}}}{IOb{{DBf{DBh}}}}{IOd{{DBf{DBh}}}}{IOf{{DBf{DBh}}}}{IOh{{DBf{DBh}}}}{ce{}{}}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{IA`{{DBf{Hh}}}}{IAb{{DBf{Hh}}}}{IAd{{DBf{Hh}}}}{IAf{{DBf{Hh}}}}{IAh{{DBf{Hh}}}}{IAj{{DBf{Hh}}}}{IAl{{DBf{Hh}}}}{IAn{{DBf{Hh}}}}{IB`{{DBf{Hh}}}}{IBb{{DBf{Hh}}}}{IBd{{DBf{Hh}}}}{IBf{{DBf{Hh}}}}{IBh{{DBf{Hh}}}}{IBj{{DBf{Hh}}}}{IBl{{DBf{Hh}}}}{IBn{{DBf{Hh}}}}{IC`{{DBf{Hh}}}}{ICb{{DBf{Hh}}}}{ICd{{DBf{Hh}}}}{ICf{{DBf{Hh}}}}{ICh{{DBf{Hh}}}}{ICj{{DBf{Hh}}}}{ICl{{DBf{Hh}}}}{ICn{{DBf{Hh}}}}{ID`{{DBf{Hh}}}}{IDb{{DBf{Hh}}}}{IDd{{DBf{Hh}}}}{IDf{{DBf{Hh}}}}{IDh{{DBf{Hh}}}}{IDj{{DBf{Hh}}}}{IDl{{DBf{Hh}}}}{IDn{{DBf{Hh}}}}{IE`{{DBf{Hh}}}}{IEb{{DBf{Hh}}}}{IEd{{DBf{Hh}}}}{IEf{{DBf{Hh}}}}{IEh{{DBf{Hh}}}}{IEj{{DBf{Hh}}}}{IEl{{DBf{Hh}}}}{IEn{{DBf{Hh}}}}{IF`{{DBf{Hh}}}}{IFb{{DBf{Hh}}}}{IFd{{DBf{Hh}}}}{IFf{{DBf{Hh}}}}{IFh{{DBf{Hh}}}}{IFj{{DBf{Hh}}}}{IFl{{DBf{Hh}}}}{IFn{{DBf{Hh}}}}{IG`{{DBf{Hh}}}}{IGb{{DBf{Hh}}}}{IGd{{DBf{Hh}}}}{IGf{{DBf{Hh}}}}{IGh{{DBf{Hh}}}}{IGj{{DBf{Hh}}}}{IGl{{DBf{Hh}}}}{IGn{{DBf{Hh}}}}{IH`{{DBf{Hh}}}}{IHb{{DBf{Hh}}}}{IHd{{DBf{Hh}}}}{IHf{{DBf{Hh}}}}{IHh{{DBf{Hh}}}}{IHj{{DBf{Hh}}}}{IHl{{DBf{Hh}}}}{IHn{{DBf{Hh}}}}{II`{{DBf{Hh}}}}{IIb{{DBf{Hh}}}}{IId{{DBf{Hh}}}}{IIf{{DBf{Hh}}}}{IIh{{DBf{Hh}}}}{IIj{{DBf{Hh}}}}{IIl{{DBf{Hh}}}}{IIn{{DBf{Hh}}}}{IJ`{{DBf{Hh}}}}{IJb{{DBf{Hh}}}}{IJd{{DBf{Hh}}}}{IJf{{DBf{Hh}}}}{IJh{{DBf{Hh}}}}{IJj{{DBf{Hh}}}}{IJl{{DBf{Hh}}}}{IJn{{DBf{Hh}}}}{IK`{{DBf{Hh}}}}{IKb{{DBf{Hh}}}}{IKd{{DBf{Hh}}}}{IKf{{DBf{Hh}}}}{IKh{{DBf{Hh}}}}{IKj{{DBf{Hh}}}}{IKl{{DBf{Hh}}}}{IKn{{DBf{Hh}}}}{IL`{{DBf{Hh}}}}{ILb{{DBf{Hh}}}}{ILd{{DBf{Hh}}}}{ILf{{DBf{Hh}}}}{ILh{{DBf{Hh}}}}{ILj{{DBf{Hh}}}}{ILl{{DBf{Hh}}}}{ILn{{DBf{Hh}}}}{IM`{{DBf{Hh}}}}{IMb{{DBf{Hh}}}}{IMd{{DBf{Hh}}}}{IMf{{DBf{Hh}}}}{IMh{{DBf{Hh}}}}{IMj{{DBf{Hh}}}}{IMl{{DBf{Hh}}}}{IMn{{DBf{Hh}}}}{IN`{{DBf{Hh}}}}{INb{{DBf{Hh}}}}{INd{{DBf{Hh}}}}{INf{{DBf{Hh}}}}{INh{{DBf{Hh}}}}{INj{{DBf{Hh}}}}{INl{{DBf{Hh}}}}{INn{{DBf{Hh}}}}{IO`{{DBf{Hh}}}}{IOb{{DBf{Hh}}}}{IOd{{DBf{Hh}}}}{IOf{{DBf{Hh}}}}{IOh{{DBf{Hh}}}}{{GAfGAf}Af}{{GAhGAh}Af}{{GAjGAj}Af}{{GAlGAl}Af}{{GAnGAn}Af}{{GB`GB`}Af}{{GBbGBb}Af}{{GBdGBd}Af}{{GBfGBf}Af}{{GBhGBh}Af}{{GBjGBj}Af}{{GBlGBl}Af}{{GBnGBn}Af}{{GC`GC`}Af}{{GCbGCb}Af}{{GCdGCd}Af}{{GCfGCf}Af}{{GChGCh}Af}{{GCjGCj}Af}{{GClGCl}Af}{{GCnGCn}Af}{{GD`GD`}Af}{{GDbGDb}Af}{{GDdGDd}Af}{{GDfGDf}Af}{{GDhGDh}Af}{{GDjGDj}Af}{{GDlGDl}Af}````````{c{{B`{e}}}{}{}}0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000```````````{cDd{}}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000```````````{{GAfGAf}GAf}{{GAhGAh}GAh}{{GAjGAj}GAj}{{GAlGAl}GAl}{{GAnGAn}GAn}{{GB`GB`}GB`}{{GBbGBb}GBb}{{GBdGBd}GBd}{{GBfGBf}GBf}{{GBhGBh}GBh}{{GBjGBj}GBj}{{GBlGBl}GBl}{{GBnGBn}GBn}{{GC`GC`}GC`}{{GCbGCb}GCb}{{GCdGCd}GCd}{{GCfGCf}GCf}{{GChGCh}GCh}{{GCjGCj}GCj}{{GClGCl}GCl}{{GCnGCn}GCn}{{GD`GD`}GD`}{{GDbGDb}GDb}{{GDdGDd}GDd}{{GDfGDf}GDf}{{GDhGDh}GDh}{{GDjGDj}GDj}{{GDlGDl}GDl}```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{{{d{b}}}Cl}","D":"AHCfMOh","p":[[1,"u8"],[1,"slice"],[1,"u16"],[5,"MAVLinkV1MessageRaw",0,39175],[5,"MAVLinkV2MessageRaw",0,39175],[5,"MavHeader",0,39175],[6,"MavlinkVersion",0,39175],[5,"MavFrame",0,39175],[10,"Clone",39176],[10,"Message",0,39175],[1,"unit"],[1,"str"],[10,"MavConnection",0,39177],[5,"Box",39178],[5,"Error",39179],[6,"Result",39180],[1,"u32"],[17,"Message"],[10,"MessageData",0,39175],[6,"ParserError",27060,39181],[10,"Deserializer",39182],[1,"bool"],[5,"Formatter",39183],[5,"Error",39183],[10,"Debug",39183],[5,"PeekReader",27239,39184],[1,"tuple"],[6,"MessageReadError",27060,39181],[10,"Read",39185],[1,"usize"],[6,"MessageWriteError",27060,39181],[10,"Serializer",39186],[10,"Serialize",39186],[5,"TypeId",39187],[10,"Write",39185],[5,"PositionTargetTypemask",156],[5,"MavPowerStatus",156],[5,"UavionixAdsbOutRfSelect",156],[5,"TuneFormat",156],[5,"GpsInputIgnoreFlags",156],[5,"MavWinchStatusFlag",156],[5,"SerialControlFlag",156],[5,"LimitModule",156],[5,"AdsbFlags",156],[5,"GimbalDeviceErrorFlags",156],[5,"UtmDataAvailFlags",156],[5,"GimbalDeviceFlags",156],[5,"EstimatorStatusFlags",156],[5,"HlFailureFlag",156],[5,"MavModeFlag",156],[5,"CameraCapFlags",156],[5,"EscFailureFlags",156],[5,"EkfStatusFlags",156],[5,"MavProtocolCapability",156],[5,"AttitudeTargetTypemask",156],[5,"HighresImuUpdatedFlags",156],[5,"UavionixAdsbOutDynamicState",156],[5,"AisFlags",156],[5,"UavionixAdsbRfHealth",156],[5,"HilSensorUpdatedFlags",156],[5,"GimbalManagerCapFlags",156],[5,"GimbalDeviceCapFlags",156],[5,"RallyFlags",156],[5,"MavEventCurrentSequenceFlags",156],[5,"MavGeneratorStatusFlag",156],[5,"MavSysStatusSensor",156],[5,"GoproHeartbeatFlags",156],[1,"u64"],[6,"MavMessage",156],[5,"RESPONSE_EVENT_ERROR_DATA",156],[5,"GPS_STATUS_DATA",156],[5,"GLOBAL_POSITION_INT_COV_DATA",156],[5,"CAMERA_INFORMATION_DATA",156],[5,"GIMBAL_MANAGER_SET_ATTITUDE_DATA",156],[5,"SET_MODE_DATA",156],[5,"HIL_RC_INPUTS_RAW_DATA",156],[5,"PARAM_REQUEST_READ_DATA",156],[5,"SCALED_PRESSURE_DATA",156],[5,"CAMERA_FOV_STATUS_DATA",156],[5,"SET_HOME_POSITION_DATA",156],[5,"LOG_ERASE_DATA",156],[5,"HERELINK_VIDEO_STREAM_INFORMATION_DATA",156],[5,"ESC_TELEMETRY_5_TO_8_DATA",156],[5,"WATER_DEPTH_DATA",156],[5,"COLLISION_DATA",156],[5,"RC_CHANNELS_SCALED_DATA",156],[5,"GLOBAL_POSITION_INT_DATA",156],[5,"BATTERY2_DATA",156],[5,"CUBEPILOT_FIRMWARE_UPDATE_START_DATA",156],[5,"AIS_VESSEL_DATA",156],[5,"HIL_SENSOR_DATA",156],[5,"STORAGE_INFORMATION_DATA",156],[5,"LOG_REQUEST_END_DATA",156],[5,"REQUEST_DATA_STREAM_DATA",156],[5,"SCALED_PRESSURE3_DATA",156],[5,"GOPRO_SET_REQUEST_DATA",156],[5,"REMOTE_LOG_BLOCK_STATUS_DATA",156],[5,"DATA64_DATA",156],[5,"OPEN_DRONE_ID_MESSAGE_PACK_DATA",156],[5,"MISSION_CLEAR_ALL_DATA",156],[5,"LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA",156],[5,"SETUP_SIGNING_DATA",156],[5,"ODOMETRY_DATA",156],[5,"MOUNT_ORIENTATION_DATA",156],[5,"GPS_GLOBAL_ORIGIN_DATA",156],[5,"WINCH_STATUS_DATA",156],[5,"MESSAGE_INTERVAL_DATA",156],[5,"MAG_CAL_REPORT_DATA",156],[5,"GOPRO_HEARTBEAT_DATA",156],[5,"OPTICAL_FLOW_DATA",156],[5,"GPS_INJECT_DATA_DATA",156],[5,"COMMAND_LONG_DATA",156],[5,"SYSTEM_TIME_DATA",156],[5,"DISTANCE_SENSOR_DATA",156],[5,"GIMBAL_CONTROL_DATA",156],[5,"MAG_CAL_PROGRESS_DATA",156],[5,"PARAM_MAP_RC_DATA",156],[5,"HIL_STATE_DATA",156],[5,"AP_ADC_DATA",156],[5,"AUTOPILOT_VERSION_DATA",156],[5,"HIL_CONTROLS_DATA",156],[5,"NAMED_VALUE_INT_DATA",156],[5,"GENERATOR_STATUS_DATA",156],[5,"WIFI_CONFIG_AP_DATA",156],[5,"DEVICE_OP_READ_DATA",156],[5,"CELLULAR_STATUS_DATA",156],[5,"RADIO_DATA",156],[5,"STATUSTEXT_DATA",156],[5,"SAFETY_ALLOWED_AREA_DATA",156],[5,"TRAJECTORY_REPRESENTATION_BEZIER_DATA",156],[5,"ATTITUDE_QUATERNION_COV_DATA",156],[5,"LOG_DATA_DATA",156],[5,"RESOURCE_REQUEST_DATA",156],[5,"CURRENT_EVENT_SEQUENCE_DATA",156],[5,"CAMERA_SETTINGS_DATA",156],[5,"HIL_STATE_QUATERNION_DATA",156],[5,"OSD_PARAM_CONFIG_REPLY_DATA",156],[5,"PARAM_EXT_REQUEST_LIST_DATA",156],[5,"GIMBAL_DEVICE_ATTITUDE_STATUS_DATA",156],[5,"GOPRO_GET_RESPONSE_DATA",156],[5,"ONBOARD_COMPUTER_STATUS_DATA",156],[5,"DEEPSTALL_DATA",156],[5,"BUTTON_CHANGE_DATA",156],[5,"CAMERA_FEEDBACK_DATA",156],[5,"VISION_POSITION_DELTA_DATA",156],[5,"GIMBAL_DEVICE_SET_ATTITUDE_DATA",156],[5,"RANGEFINDER_DATA",156],[5,"PID_TUNING_DATA",156],[5,"HIGH_LATENCY_DATA",156],[5,"UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA",156],[5,"OPEN_DRONE_ID_SYSTEM_DATA",156],[5,"ESC_INFO_DATA",156],[5,"SERVO_OUTPUT_RAW_DATA",156],[5,"PARAM_EXT_VALUE_DATA",156],[5,"GIMBAL_REPORT_DATA",156],[5,"LOG_REQUEST_DATA_DATA",156],[5,"ATTITUDE_TARGET_DATA",156],[5,"OSD_PARAM_SHOW_CONFIG_REPLY_DATA",156],[5,"FENCE_POINT_DATA",156],[5,"ICAROUS_HEARTBEAT_DATA",156],[5,"LOGGING_DATA_ACKED_DATA",156],[5,"OPEN_DRONE_ID_AUTHENTICATION_DATA",156],[5,"NAV_CONTROLLER_OUTPUT_DATA",156],[5,"HIGHRES_IMU_DATA",156],[5,"CUBEPILOT_RAW_RC_DATA",156],[5,"ESC_STATUS_DATA",156],[5,"CAMERA_TRACKING_GEO_STATUS_DATA",156],[5,"SIMSTATE_DATA",156],[5,"CUBEPILOT_FIRMWARE_UPDATE_RESP_DATA",156],[5,"RC_CHANNELS_DATA",156],[5,"ISBD_LINK_STATUS_DATA",156],[5,"PARAM_EXT_SET_DATA",156],[5,"MISSION_SET_CURRENT_DATA",156],[5,"SIM_STATE_DATA",156],[5,"MOUNT_STATUS_DATA",156],[5,"GIMBAL_TORQUE_CMD_REPORT_DATA",156],[5,"COMPONENT_INFORMATION_DATA",156],[5,"LIMITS_STATUS_DATA",156],[5,"MISSION_ACK_DATA",156],[5,"LOCAL_POSITION_NED_COV_DATA",156],[5,"AOA_SSA_DATA",156],[5,"PLAY_TUNE_DATA",156],[5,"HIGH_LATENCY2_DATA",156],[5,"GIMBAL_MANAGER_INFORMATION_DATA",156],[5,"DEBUG_FLOAT_ARRAY_DATA",156],[5,"SCALED_IMU3_DATA",156],[5,"MISSION_COUNT_DATA",156],[5,"DATA_STREAM_DATA",156],[5,"OPEN_DRONE_ID_OPERATOR_ID_DATA",156],[5,"RAW_RPM_DATA",156],[5,"COMMAND_INT_DATA",156],[5,"MCU_STATUS_DATA",156],[5,"SERIAL_CONTROL_DATA",156],[5,"ESC_TELEMETRY_9_TO_12_DATA",156],[5,"FENCE_FETCH_POINT_DATA",156],[5,"DIGICAM_CONTROL_DATA",156],[5,"COMMAND_ACK_DATA",156],[5,"AUTH_KEY_DATA",156],[5,"GLOBAL_VISION_POSITION_ESTIMATE_DATA",156],[5,"GIMBAL_MANAGER_STATUS_DATA",156],[5,"SAFETY_SET_ALLOWED_AREA_DATA",156],[5,"MEMORY_VECT_DATA",156],[5,"HIL_OPTICAL_FLOW_DATA",156],[5,"UAVCAN_NODE_INFO_DATA",156],[5,"ATTITUDE_DATA",156],[5,"AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA",156],[5,"OSD_PARAM_CONFIG_DATA",156],[5,"REQUEST_EVENT_DATA",156],[5,"CAN_FRAME_DATA",156],[5,"V2_EXTENSION_DATA",156],[5,"TERRAIN_REPORT_DATA",156],[5,"VISION_SPEED_ESTIMATE_DATA",156],[5,"OPTICAL_FLOW_RAD_DATA",156],[5,"GPS_RTCM_DATA_DATA",156],[5,"MISSION_ITEM_DATA",156],[5,"LED_CONTROL_DATA",156],[5,"MEMINFO_DATA",156],[5,"MISSION_REQUEST_DATA",156],[5,"PARAM_EXT_ACK_DATA",156],[5,"HERELINK_TELEM_DATA",156],[5,"MISSION_CURRENT_DATA",156],[5,"VIBRATION_DATA",156],[5,"GPS2_RTK_DATA",156],[5,"NAMED_VALUE_FLOAT_DATA",156],[5,"COMPONENT_METADATA_DATA",156],[5,"MOUNT_CONTROL_DATA",156],[5,"ESC_TELEMETRY_1_TO_4_DATA",156],[5,"DEBUG_DATA",156],[5,"CONTROL_SYSTEM_STATE_DATA",156],[5,"GPS_RAW_INT_DATA",156],[5,"RAW_IMU_DATA",156],[5,"LOG_ENTRY_DATA",156],[5,"GPS_INPUT_DATA",156],[5,"SET_MAG_OFFSETS_DATA",156],[5,"PING_DATA",156],[5,"DEVICE_OP_WRITE_REPLY_DATA",156],[5,"ENCAPSULATED_DATA_DATA",156],[5,"OPEN_DRONE_ID_BASIC_ID_DATA",156],[5,"VIDEO_STREAM_INFORMATION_DATA",156],[5,"RALLY_POINT_DATA",156],[5,"VISION_POSITION_ESTIMATE_DATA",156],[5,"RALLY_FETCH_POINT_DATA",156],[5,"MANUAL_CONTROL_DATA",156],[5,"SET_ATTITUDE_TARGET_DATA",156],[5,"ATTITUDE_QUATERNION_DATA",156],[5,"SMART_BATTERY_INFO_DATA",156],[5,"GIMBAL_MANAGER_SET_PITCHYAW_DATA",156],[5,"EVENT_DATA",156],[5,"GOPRO_SET_RESPONSE_DATA",156],[5,"BATTERY_STATUS_DATA",156],[5,"LANDING_TARGET_DATA",156],[5,"OPEN_DRONE_ID_LOCATION_DATA",156],[5,"DEVICE_OP_WRITE_DATA",156],[5,"ORBIT_EXECUTION_STATUS_DATA",156],[5,"CHANGE_OPERATOR_CONTROL_ACK_DATA",156],[5,"ICAROUS_KINEMATIC_BANDS_DATA",156],[5,"TERRAIN_CHECK_DATA",156],[5,"CAMERA_CAPTURE_STATUS_DATA",156],[5,"DATA32_DATA",156],[5,"MISSION_REQUEST_LIST_DATA",156],[5,"CAMERA_TRIGGER_DATA",156],[5,"MISSION_WRITE_PARTIAL_LIST_DATA",156],[5,"RC_CHANNELS_OVERRIDE_DATA",156],[5,"CHANGE_OPERATOR_CONTROL_DATA",156],[5,"VICON_POSITION_ESTIMATE_DATA",156],[5,"AHRS2_DATA",156],[5,"OPEN_DRONE_ID_SELF_ID_DATA",156],[5,"GPS2_RAW_DATA",156],[5,"DIGICAM_CONFIGURE_DATA",156],[5,"LOG_REQUEST_LIST_DATA",156],[5,"AHRS3_DATA",156],[5,"SENSOR_OFFSETS_DATA",156],[5,"CELLULAR_CONFIG_DATA",156],[5,"MISSION_REQUEST_INT_DATA",156],[5,"RPM_DATA",156],[5,"PARAM_REQUEST_LIST_DATA",156],[5,"TERRAIN_DATA_DATA",156],[5,"OBSTACLE_DISTANCE_3D_DATA",156],[5,"EKF_STATUS_REPORT_DATA",156],[5,"CAMERA_TRACKING_IMAGE_STATUS_DATA",156],[5,"PARAM_EXT_REQUEST_READ_DATA",156],[5,"ATT_POS_MOCAP_DATA",156],[5,"LOGGING_ACK_DATA",156],[5,"MOUNT_CONFIGURE_DATA",156],[5,"COMMAND_CANCEL_DATA",156],[5,"UAVIONIX_ADSB_OUT_DYNAMIC_DATA",156],[5,"SCALED_IMU_DATA",156],[5,"HIL_GPS_DATA",156],[5,"PROTOCOL_VERSION_DATA",156],[5,"SET_POSITION_TARGET_GLOBAL_INT_DATA",156],[5,"ADAP_TUNING_DATA",156],[5,"DEVICE_OP_READ_REPLY_DATA",156],[5,"CAN_FILTER_MODIFY_DATA",156],[5,"MISSION_ITEM_INT_DATA",156],[5,"UTM_GLOBAL_POSITION_DATA",156],[5,"DEBUG_VECT_DATA",156],[5,"AHRS_DATA",156],[5,"ACTUATOR_OUTPUT_STATUS_DATA",156],[5,"REMOTE_LOG_DATA_BLOCK_DATA",156],[5,"FLIGHT_INFORMATION_DATA",156],[5,"DATA96_DATA",156],[5,"SCALED_PRESSURE2_DATA",156],[5,"OPEN_DRONE_ID_ARM_STATUS_DATA",156],[5,"PLAY_TUNE_V2_DATA",156],[5,"GIMBAL_DEVICE_INFORMATION_DATA",156],[5,"EXTENDED_SYS_STATE_DATA",156],[5,"COMPASSMOT_STATUS_DATA",156],[5,"HYGROMETER_SENSOR_DATA",156],[5,"GPS_RTK_DATA",156],[5,"UAVCAN_NODE_STATUS_DATA",156],[5,"HIL_ACTUATOR_CONTROLS_DATA",156],[5,"TUNNEL_DATA",156],[5,"DATA_TRANSMISSION_HANDSHAKE_DATA",156],[5,"WIND_DATA",156],[5,"TERRAIN_REQUEST_DATA",156],[5,"PARAM_VALUE_DATA",156],[5,"SCALED_IMU2_DATA",156],[5,"CAMERA_STATUS_DATA",156],[5,"CAMERA_IMAGE_CAPTURED_DATA",156],[5,"SET_POSITION_TARGET_LOCAL_NED_DATA",156],[5,"HWSTATUS_DATA",156],[5,"SET_ACTUATOR_CONTROL_TARGET_DATA",156],[5,"POWER_STATUS_DATA",156],[5,"MANUAL_SETPOINT_DATA",156],[5,"DATA16_DATA",156],[5,"AUTOPILOT_VERSION_REQUEST_DATA",156],[5,"FENCE_STATUS_DATA",156],[5,"UAVIONIX_ADSB_OUT_CFG_DATA",156],[5,"OPEN_DRONE_ID_SYSTEM_UPDATE_DATA",156],[5,"ESTIMATOR_STATUS_DATA",156],[5,"WIND_COV_DATA",156],[5,"ADSB_VEHICLE_DATA",156],[5,"SYS_STATUS_DATA",156],[5,"PARAM_SET_DATA",156],[5,"VIDEO_STREAM_STATUS_DATA",156],[5,"CANFD_FRAME_DATA",156],[5,"FOLLOW_TARGET_DATA",156],[5,"ACTUATOR_CONTROL_TARGET_DATA",156],[5,"RC_CHANNELS_RAW_DATA",156],[5,"MISSION_REQUEST_PARTIAL_LIST_DATA",156],[5,"FILE_TRANSFER_PROTOCOL_DATA",156],[5,"GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA",156],[5,"WHEEL_DISTANCE_DATA",156],[5,"HOME_POSITION_DATA",156],[5,"LOGGING_DATA_DATA",156],[5,"RADIO_STATUS_DATA",156],[5,"SET_GPS_GLOBAL_ORIGIN_DATA",156],[5,"AIRSPEED_AUTOCAL_DATA",156],[5,"LINK_NODE_STATUS_DATA",156],[5,"OBSTACLE_DISTANCE_DATA",156],[5,"RAW_PRESSURE_DATA",156],[5,"ALTITUDE_DATA",156],[5,"EFI_STATUS_DATA",156],[5,"POSITION_TARGET_GLOBAL_INT_DATA",156],[5,"VFR_HUD_DATA",156],[5,"SUPPORTED_TUNES_DATA",156],[5,"TIME_ESTIMATE_TO_TARGET_DATA",156],[5,"LOCAL_POSITION_NED_DATA",156],[5,"POSITION_TARGET_LOCAL_NED_DATA",156],[5,"TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA",156],[5,"GOPRO_GET_REQUEST_DATA",156],[5,"TIMESYNC_DATA",156],[5,"OSD_PARAM_SHOW_CONFIG_DATA",156],[5,"MISSION_ITEM_REACHED_DATA",156],[5,"HEARTBEAT_DATA",156],[6,"MavComponent",156],[6,"MavType",156],[6,"MotorTestOrder",156],[6,"MavDataStream",156],[6,"GpsFixType",156],[6,"CompMetadataType",156],[6,"PrecisionLandMode",156],[6,"MavOdidHeightRef",156],[6,"MissionState",156],[6,"ActuatorConfiguration",156],[6,"MavOdidAuthType",156],[6,"CameraMode",156],[6,"TrackerMode",156],[6,"MavRoi",156],[6,"SerialControlDev",156],[6,"LedControlPattern",156],[6,"GimbalManagerFlags",156],[6,"MavArmAuthDeniedReason",156],[6,"GoproResolution",156],[6,"MavOdidCategoryEu",156],[6,"MavModeGimbal",156],[6,"RcType",156],[6,"GoproCaptureMode",156],[6,"AdsbEmitterType",156],[6,"MavOdidOperatorIdType",156],[6,"StorageUsageFlag",156],[6,"MavCollisionAction",156],[6,"HeadingType",156],[6,"MavParamType",156],[6,"DeviceOpBustype",156],[6,"MavOdidVerAcc",156],[6,"StorageStatus",156],[6,"GoproFieldOfView",156],[6,"MavMountMode",156],[6,"MavSysStatusSensorExtended",156],[6,"MavAutopilot",156],[6,"MavMissionType",156],[6,"MavCmdDoAuxFunctionSwitchLevel",156],[6,"MavOdidTimeAcc",156],[6,"MavCollisionThreatLevel",156],[6,"ParamAck",156],[6,"MavTunnelPayloadType",156],[6,"CopterMode",156],[6,"AisType",156],[6,"FailureType",156],[6,"DeepstallStage",156],[6,"MavBatteryMode",156],[6,"GoproRequestStatus",156],[6,"MavDoRepositionFlags",156],[6,"GoproVideoSettingsFlags",156],[6,"UavionixAdsbOutCfgGpsOffsetLat",156],[6,"MavOdidArmStatus",156],[6,"MavBatteryChargeState",156],[6,"MavOdidUaType",156],[6,"CellularStatusFlag",156],[6,"MavVtolState",156],[6,"MavSensorOrientation",156],[6,"MavOdidDescType",156],[6,"MavOdidHorAcc",156],[6,"CellularNetworkFailedReason",156],[6,"UavcanNodeMode",156],[6,"IcarousFmsState",156],[6,"SubMode",156],[6,"MavLandedState",156],[6,"ScriptingCmd",156],[6,"ActuatorOutputFunction",156],[6,"MavOdidClassificationType",156],[6,"OrbitYawBehaviour",156],[6,"IcarousTrackBandTypes",156],[6,"PreflightStorageParameterAction",156],[6,"ParachuteAction",156],[6,"UavcanNodeHealth",156],[6,"CameraZoomType",156],[6,"MavOdidIdType",156],[6,"MavOdidClassEu",156],[6,"GoproProtuneWhiteBalance",156],[6,"VideoStreamStatusFlags",156],[6,"GoproCharging",156],[6,"AisNavStatus",156],[6,"EscConnectionType",156],[6,"GoproPhotoResolution",156],[6,"FirmwareVersionType",156],[6,"VtolTransitionHeading",156],[6,"WinchActions",156],[6,"FenceMitigate",156],[6,"GoproHeartbeatStatus",156],[6,"MavFtpOpcode",156],[6,"MavParamExtType",156],[6,"StorageType",156],[6,"GoproProtuneColour",156],[6,"PlaneMode",156],[6,"MotorTestThrottleType",156],[6,"MavCmdAck",156],[6,"MavGoto",156],[6,"GoproBurstRate",156],[6,"GoproProtuneGain",156],[6,"MavState",156],[6,"CellularConfigResponse",156],[6,"FenceBreach",156],[6,"MavResult",156],[6,"GoproCommand",156],[6,"CameraTrackingTargetData",156],[6,"FenceAction",156],[6,"MavRemoteLogDataBlockCommands",156],[6,"UavionixAdsbOutCfgAircraftSize",156],[6,"UtmFlightState",156],[6,"GoproProtuneSharpness",156],[6,"UavionixAdsbEmergencyStatus",156],[6,"MavBatteryType",156],[6,"GimbalAxis",156],[6,"MavCmd",156],[6,"MavCollisionSrc",156],[6,"WifiConfigApMode",156],[6,"RoverMode",156],[6,"MavOdidSpeedAcc",156],[6,"GimbalAxisCalibrationStatus",156],[6,"OsdParamConfigType",156],[6,"GimbalAxisCalibrationRequired",156],[6,"MavMissionResult",156],[6,"UavionixAdsbOutCfgGpsOffsetLon",156],[6,"AutotuneAxis",156],[6,"FailureUnit",156],[6,"PreflightStorageMissionAction",156],[6,"MavEstimatorType",156],[6,"MavRemoteLogDataBlockStatuses",156],[6,"CameraFeedbackFlags",156],[6,"LimitsState",156],[6,"MavFtpErr",156],[6,"MavOdidStatus",156],[6,"CameraStatusTypes",156],[6,"UavionixAdsbOutDynamicGpsFix",156],[6,"CellularNetworkRadioType",156],[6,"GoproFrameRate",156],[6,"MavMode",156],[6,"AdsbAltitudeType",156],[6,"MavSeverity",156],[6,"GripperActions",156],[6,"GoproProtuneExposure",156],[6,"MavModeFlagDecodePosition",156],[6,"MavEventErrorReason",156],[6,"NavVtolLandOptions",156],[6,"MavlinkDataStreamType",156],[6,"GoproModel",156],[6,"MavDistanceSensor",156],[6,"LandingTargetType",156],[6,"OsdParamConfigError",156],[6,"MavBatteryFault",156],[6,"MavOdidOperatorLocationType",156],[6,"CanFilterOp",156],[6,"SpeedType",156],[6,"SetFocusType",156],[6,"MavFrame",156],[6,"VideoStreamType",156],[6,"CameraTrackingStatusFlags",156],[6,"AccelcalVehiclePos",156],[6,"CameraTrackingMode",156],[6,"WifiConfigApResponse",156],[6,"RtkBaselineCoordinateSystem",156],[6,"MavBatteryFunction",156],[6,"MagCalStatus",156],[6,"PidTuningAxis",156],[6,"Ordering",39188],[17,"Item"],[10,"IntoIterator",39189],[8,"Result",39183],[6,"Option",39190],[1,"i64"],[10,"Hasher",39191],[5,"Bytes",15498,39192],[1,"array"],[1,"f32"],[1,"f64"],[1,"i16"],[1,"i32"],[1,"i8"],[5,"BytesMut",15522,39193],[5,"AisFlags",15547],[5,"SerialControlFlag",15547],[5,"GimbalDeviceFlags",15547],[5,"HilSensorUpdatedFlags",15547],[5,"GimbalManagerCapFlags",15547],[5,"CameraCapFlags",15547],[5,"MavModeFlag",15547],[5,"TuneFormat",15547],[5,"GimbalDeviceCapFlags",15547],[5,"EstimatorStatusFlags",15547],[5,"EscFailureFlags",15547],[5,"MavGeneratorStatusFlag",15547],[5,"MavWinchStatusFlag",15547],[5,"MavSysStatusSensor",15547],[5,"GpsInputIgnoreFlags",15547],[5,"MavPowerStatus",15547],[5,"MavProtocolCapability",15547],[5,"UtmDataAvailFlags",15547],[5,"GimbalDeviceErrorFlags",15547],[5,"AdsbFlags",15547],[5,"HighresImuUpdatedFlags",15547],[5,"HlFailureFlag",15547],[5,"PositionTargetTypemask",15547],[5,"MavEventCurrentSequenceFlags",15547],[5,"AttitudeTargetTypemask",15547],[6,"MavMessage",15547],[5,"OPTICAL_FLOW_RAD_DATA",15547],[5,"VFR_HUD_DATA",15547],[5,"SET_MODE_DATA",15547],[5,"OBSTACLE_DISTANCE_DATA",15547],[5,"OPEN_DRONE_ID_AUTHENTICATION_DATA",15547],[5,"LOG_REQUEST_END_DATA",15547],[5,"MISSION_COUNT_DATA",15547],[5,"OPEN_DRONE_ID_ARM_STATUS_DATA",15547],[5,"HIL_SENSOR_DATA",15547],[5,"ENCAPSULATED_DATA_DATA",15547],[5,"CAMERA_CAPTURE_STATUS_DATA",15547],[5,"TERRAIN_REPORT_DATA",15547],[5,"ESC_INFO_DATA",15547],[5,"GPS_RTK_DATA",15547],[5,"PARAM_VALUE_DATA",15547],[5,"STORAGE_INFORMATION_DATA",15547],[5,"OPEN_DRONE_ID_SYSTEM_DATA",15547],[5,"OPEN_DRONE_ID_OPERATOR_ID_DATA",15547],[5,"WHEEL_DISTANCE_DATA",15547],[5,"EVENT_DATA",15547],[5,"RC_CHANNELS_SCALED_DATA",15547],[5,"CAMERA_TRACKING_IMAGE_STATUS_DATA",15547],[5,"HIL_STATE_DATA",15547],[5,"COMPONENT_INFORMATION_DATA",15547],[5,"V2_EXTENSION_DATA",15547],[5,"ACTUATOR_OUTPUT_STATUS_DATA",15547],[5,"TERRAIN_CHECK_DATA",15547],[5,"RAW_RPM_DATA",15547],[5,"GIMBAL_MANAGER_STATUS_DATA",15547],[5,"PARAM_SET_DATA",15547],[5,"LOGGING_DATA_DATA",15547],[5,"MOUNT_ORIENTATION_DATA",15547],[5,"GPS_RAW_INT_DATA",15547],[5,"FLIGHT_INFORMATION_DATA",15547],[5,"VIBRATION_DATA",15547],[5,"PING_DATA",15547],[5,"LOG_REQUEST_DATA_DATA",15547],[5,"VISION_POSITION_ESTIMATE_DATA",15547],[5,"CAMERA_IMAGE_CAPTURED_DATA",15547],[5,"ATTITUDE_QUATERNION_DATA",15547],[5,"TERRAIN_DATA_DATA",15547],[5,"VICON_POSITION_ESTIMATE_DATA",15547],[5,"MISSION_CLEAR_ALL_DATA",15547],[5,"SCALED_IMU_DATA",15547],[5,"CONTROL_SYSTEM_STATE_DATA",15547],[5,"ADSB_VEHICLE_DATA",15547],[5,"RADIO_STATUS_DATA",15547],[5,"ATTITUDE_QUATERNION_COV_DATA",15547],[5,"GLOBAL_POSITION_INT_DATA",15547],[5,"RC_CHANNELS_DATA",15547],[5,"TIMESYNC_DATA",15547],[5,"SERVO_OUTPUT_RAW_DATA",15547],[5,"GIMBAL_MANAGER_SET_PITCHYAW_DATA",15547],[5,"PARAM_REQUEST_LIST_DATA",15547],[5,"OPEN_DRONE_ID_SYSTEM_UPDATE_DATA",15547],[5,"CELLULAR_STATUS_DATA",15547],[5,"ODOMETRY_DATA",15547],[5,"VIDEO_STREAM_STATUS_DATA",15547],[5,"SERIAL_CONTROL_DATA",15547],[5,"PROTOCOL_VERSION_DATA",15547],[5,"OPTICAL_FLOW_DATA",15547],[5,"MAG_CAL_REPORT_DATA",15547],[5,"FOLLOW_TARGET_DATA",15547],[5,"SCALED_PRESSURE3_DATA",15547],[5,"POWER_STATUS_DATA",15547],[5,"SIM_STATE_DATA",15547],[5,"GPS_STATUS_DATA",15547],[5,"PLAY_TUNE_DATA",15547],[5,"ATT_POS_MOCAP_DATA",15547],[5,"NAMED_VALUE_FLOAT_DATA",15547],[5,"REQUEST_DATA_STREAM_DATA",15547],[5,"HIL_ACTUATOR_CONTROLS_DATA",15547],[5,"CAN_FILTER_MODIFY_DATA",15547],[5,"GIMBAL_DEVICE_ATTITUDE_STATUS_DATA",15547],[5,"SCALED_PRESSURE_DATA",15547],[5,"OPEN_DRONE_ID_BASIC_ID_DATA",15547],[5,"RAW_IMU_DATA",15547],[5,"TUNNEL_DATA",15547],[5,"MESSAGE_INTERVAL_DATA",15547],[5,"DATA_TRANSMISSION_HANDSHAKE_DATA",15547],[5,"ATTITUDE_TARGET_DATA",15547],[5,"SYSTEM_TIME_DATA",15547],[5,"ATTITUDE_DATA",15547],[5,"TERRAIN_REQUEST_DATA",15547],[5,"HIL_GPS_DATA",15547],[5,"HIGHRES_IMU_DATA",15547],[5,"PARAM_REQUEST_READ_DATA",15547],[5,"WINCH_STATUS_DATA",15547],[5,"PARAM_EXT_VALUE_DATA",15547],[5,"SCALED_IMU3_DATA",15547],[5,"WIFI_CONFIG_AP_DATA",15547],[5,"HEARTBEAT_DATA",15547],[5,"PARAM_EXT_SET_DATA",15547],[5,"POSITION_TARGET_LOCAL_NED_DATA",15547],[5,"RC_CHANNELS_RAW_DATA",15547],[5,"LOGGING_ACK_DATA",15547],[5,"COMPONENT_METADATA_DATA",15547],[5,"GIMBAL_MANAGER_INFORMATION_DATA",15547],[5,"CHANGE_OPERATOR_CONTROL_ACK_DATA",15547],[5,"NAMED_VALUE_INT_DATA",15547],[5,"GLOBAL_POSITION_INT_COV_DATA",15547],[5,"HIGH_LATENCY2_DATA",15547],[5,"POSITION_TARGET_GLOBAL_INT_DATA",15547],[5,"HYGROMETER_SENSOR_DATA",15547],[5,"CANFD_FRAME_DATA",15547],[5,"VIDEO_STREAM_INFORMATION_DATA",15547],[5,"DATA_STREAM_DATA",15547],[5,"MISSION_REQUEST_INT_DATA",15547],[5,"MISSION_REQUEST_LIST_DATA",15547],[5,"PLAY_TUNE_V2_DATA",15547],[5,"UAVCAN_NODE_INFO_DATA",15547],[5,"HOME_POSITION_DATA",15547],[5,"UTM_GLOBAL_POSITION_DATA",15547],[5,"MISSION_REQUEST_PARTIAL_LIST_DATA",15547],[5,"BUTTON_CHANGE_DATA",15547],[5,"ACTUATOR_CONTROL_TARGET_DATA",15547],[5,"SET_GPS_GLOBAL_ORIGIN_DATA",15547],[5,"GPS_RTCM_DATA_DATA",15547],[5,"LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA",15547],[5,"OPEN_DRONE_ID_SELF_ID_DATA",15547],[5,"STATUSTEXT_DATA",15547],[5,"EFI_STATUS_DATA",15547],[5,"SAFETY_SET_ALLOWED_AREA_DATA",15547],[5,"REQUEST_EVENT_DATA",15547],[5,"CAMERA_TRACKING_GEO_STATUS_DATA",15547],[5,"LANDING_TARGET_DATA",15547],[5,"BATTERY_STATUS_DATA",15547],[5,"MISSION_WRITE_PARTIAL_LIST_DATA",15547],[5,"PARAM_EXT_ACK_DATA",15547],[5,"DEBUG_FLOAT_ARRAY_DATA",15547],[5,"AIS_VESSEL_DATA",15547],[5,"LINK_NODE_STATUS_DATA",15547],[5,"LOGGING_DATA_ACKED_DATA",15547],[5,"CAMERA_SETTINGS_DATA",15547],[5,"SUPPORTED_TUNES_DATA",15547],[5,"EXTENDED_SYS_STATE_DATA",15547],[5,"GIMBAL_DEVICE_INFORMATION_DATA",15547],[5,"MEMORY_VECT_DATA",15547],[5,"DEBUG_DATA",15547],[5,"ONBOARD_COMPUTER_STATUS_DATA",15547],[5,"COLLISION_DATA",15547],[5,"GPS2_RTK_DATA",15547],[5,"GPS2_RAW_DATA",15547],[5,"LOG_ENTRY_DATA",15547],[5,"COMMAND_INT_DATA",15547],[5,"ISBD_LINK_STATUS_DATA",15547],[5,"AUTH_KEY_DATA",15547],[5,"RC_CHANNELS_OVERRIDE_DATA",15547],[5,"PARAM_EXT_REQUEST_LIST_DATA",15547],[5,"MISSION_ACK_DATA",15547],[5,"CURRENT_EVENT_SEQUENCE_DATA",15547],[5,"MISSION_ITEM_DATA",15547],[5,"SET_POSITION_TARGET_GLOBAL_INT_DATA",15547],[5,"CAMERA_FOV_STATUS_DATA",15547],[5,"SET_ACTUATOR_CONTROL_TARGET_DATA",15547],[5,"GPS_GLOBAL_ORIGIN_DATA",15547],[5,"SET_ATTITUDE_TARGET_DATA",15547],[5,"MISSION_ITEM_REACHED_DATA",15547],[5,"OPEN_DRONE_ID_MESSAGE_PACK_DATA",15547],[5,"CAN_FRAME_DATA",15547],[5,"GENERATOR_STATUS_DATA",15547],[5,"CELLULAR_CONFIG_DATA",15547],[5,"UAVCAN_NODE_STATUS_DATA",15547],[5,"GPS_INPUT_DATA",15547],[5,"GPS_INJECT_DATA_DATA",15547],[5,"COMMAND_CANCEL_DATA",15547],[5,"SET_HOME_POSITION_DATA",15547],[5,"MISSION_CURRENT_DATA",15547],[5,"DISTANCE_SENSOR_DATA",15547],[5,"SETUP_SIGNING_DATA",15547],[5,"HIL_STATE_QUATERNION_DATA",15547],[5,"SET_POSITION_TARGET_LOCAL_NED_DATA",15547],[5,"MISSION_SET_CURRENT_DATA",15547],[5,"HIL_CONTROLS_DATA",15547],[5,"OPEN_DRONE_ID_LOCATION_DATA",15547],[5,"GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA",15547],[5,"GIMBAL_MANAGER_SET_ATTITUDE_DATA",15547],[5,"COMMAND_LONG_DATA",15547],[5,"TIME_ESTIMATE_TO_TARGET_DATA",15547],[5,"GLOBAL_VISION_POSITION_ESTIMATE_DATA",15547],[5,"LOG_REQUEST_LIST_DATA",15547],[5,"MANUAL_CONTROL_DATA",15547],[5,"WIND_COV_DATA",15547],[5,"MISSION_ITEM_INT_DATA",15547],[5,"PARAM_MAP_RC_DATA",15547],[5,"SMART_BATTERY_INFO_DATA",15547],[5,"TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA",15547],[5,"DEBUG_VECT_DATA",15547],[5,"ORBIT_EXECUTION_STATUS_DATA",15547],[5,"HIL_OPTICAL_FLOW_DATA",15547],[5,"COMMAND_ACK_DATA",15547],[5,"CHANGE_OPERATOR_CONTROL_DATA",15547],[5,"LOG_DATA_DATA",15547],[5,"SYS_STATUS_DATA",15547],[5,"NAV_CONTROLLER_OUTPUT_DATA",15547],[5,"RESPONSE_EVENT_ERROR_DATA",15547],[5,"MISSION_REQUEST_DATA",15547],[5,"FILE_TRANSFER_PROTOCOL_DATA",15547],[5,"VISION_SPEED_ESTIMATE_DATA",15547],[5,"GIMBAL_DEVICE_SET_ATTITUDE_DATA",15547],[5,"SCALED_PRESSURE2_DATA",15547],[5,"HIGH_LATENCY_DATA",15547],[5,"ALTITUDE_DATA",15547],[5,"TRAJECTORY_REPRESENTATION_BEZIER_DATA",15547],[5,"ESC_STATUS_DATA",15547],[5,"AUTOPILOT_VERSION_DATA",15547],[5,"FENCE_STATUS_DATA",15547],[5,"SCALED_IMU2_DATA",15547],[5,"CAMERA_TRIGGER_DATA",15547],[5,"SAFETY_ALLOWED_AREA_DATA",15547],[5,"ESTIMATOR_STATUS_DATA",15547],[5,"HIL_RC_INPUTS_RAW_DATA",15547],[5,"LOCAL_POSITION_NED_COV_DATA",15547],[5,"MANUAL_SETPOINT_DATA",15547],[5,"LOCAL_POSITION_NED_DATA",15547],[5,"PARAM_EXT_REQUEST_READ_DATA",15547],[5,"RESOURCE_REQUEST_DATA",15547],[5,"CAMERA_INFORMATION_DATA",15547],[5,"LOG_ERASE_DATA",15547],[5,"AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA",15547],[5,"RAW_PRESSURE_DATA",15547],[6,"MavOdidVerAcc",15547],[6,"SetFocusType",15547],[6,"MavArmAuthDeniedReason",15547],[6,"MavOdidSpeedAcc",15547],[6,"MavSeverity",15547],[6,"UavcanNodeHealth",15547],[6,"MavMissionType",15547],[6,"WinchActions",15547],[6,"FenceAction",15547],[6,"AutotuneAxis",15547],[6,"VideoStreamType",15547],[6,"PreflightStorageMissionAction",15547],[6,"NavVtolLandOptions",15547],[6,"StorageStatus",15547],[6,"AisType",15547],[6,"MavOdidClassificationType",15547],[6,"UtmFlightState",15547],[6,"StorageUsageFlag",15547],[6,"MavDoRepositionFlags",15547],[6,"MavlinkDataStreamType",15547],[6,"MavBatteryType",15547],[6,"MavState",15547],[6,"MavAutopilot",15547],[6,"MotorTestOrder",15547],[6,"CellularNetworkRadioType",15547],[6,"UavcanNodeMode",15547],[6,"LandingTargetType",15547],[6,"AdsbEmitterType",15547],[6,"MavMissionResult",15547],[6,"MavDataStream",15547],[6,"CameraTrackingStatusFlags",15547],[6,"MavOdidHeightRef",15547],[6,"CameraMode",15547],[6,"RtkBaselineCoordinateSystem",15547],[6,"MavMountMode",15547],[6,"CellularNetworkFailedReason",15547],[6,"FenceBreach",15547],[6,"MavBatteryChargeState",15547],[6,"MissionState",15547],[6,"VtolTransitionHeading",15547],[6,"MavOdidAuthType",15547],[6,"MavTunnelPayloadType",15547],[6,"VideoStreamStatusFlags",15547],[6,"MavFtpOpcode",15547],[6,"ActuatorOutputFunction",15547],[6,"WifiConfigApMode",15547],[6,"MagCalStatus",15547],[6,"MavCollisionAction",15547],[6,"MavOdidOperatorIdType",15547],[6,"MavOdidDescType",15547],[6,"MavResult",15547],[6,"MavEventErrorReason",15547],[6,"GpsFixType",15547],[6,"MavVtolState",15547],[6,"MavOdidUaType",15547],[6,"MavFtpErr",15547],[6,"FailureUnit",15547],[6,"OrbitYawBehaviour",15547],[6,"CameraTrackingTargetData",15547],[6,"StorageType",15547],[6,"MavModeFlagDecodePosition",15547],[6,"MavEstimatorType",15547],[6,"MavSensorOrientation",15547],[6,"MavBatteryFault",15547],[6,"GripperActions",15547],[6,"MavSysStatusSensorExtended",15547],[6,"CellularStatusFlag",15547],[6,"MavType",15547],[6,"MavGoto",15547],[6,"MavOdidHorAcc",15547],[6,"MavCollisionThreatLevel",15547],[6,"MavCmdAck",15547],[6,"MotorTestThrottleType",15547],[6,"FailureType",15547],[6,"AisNavStatus",15547],[6,"MavOdidStatus",15547],[6,"MavRoi",15547],[6,"MavOdidClassEu",15547],[6,"MavOdidTimeAcc",15547],[6,"MavMode",15547],[6,"MavBatteryFunction",15547],[6,"MavLandedState",15547],[6,"GimbalManagerFlags",15547],[6,"MavParamType",15547],[6,"MavParamExtType",15547],[6,"MavCollisionSrc",15547],[6,"RcType",15547],[6,"MavBatteryMode",15547],[6,"SerialControlDev",15547],[6,"MavOdidOperatorLocationType",15547],[6,"EscConnectionType",15547],[6,"PreflightStorageParameterAction",15547],[6,"MavOdidArmStatus",15547],[6,"CameraZoomType",15547],[6,"MavOdidIdType",15547],[6,"CameraTrackingMode",15547],[6,"ActuatorConfiguration",15547],[6,"AdsbAltitudeType",15547],[6,"FenceMitigate",15547],[6,"CanFilterOp",15547],[6,"MavFrame",15547],[6,"ParachuteAction",15547],[6,"WifiConfigApResponse",15547],[6,"ParamAck",15547],[6,"CellularConfigResponse",15547],[6,"MavOdidCategoryEu",15547],[6,"FirmwareVersionType",15547],[6,"CompMetadataType",15547],[6,"MavComponent",15547],[6,"MavDistanceSensor",15547],[6,"PrecisionLandMode",15547],[6,"MavCmd",15547],[5,"String",39194],[6,"MavMessage",27107],[5,"ICAROUS_HEARTBEAT_DATA",27107],[5,"ICAROUS_KINEMATIC_BANDS_DATA",27107],[6,"IcarousFmsState",27107],[6,"IcarousTrackBandTypes",27107],[5,"EstimatorStatusFlags",27254],[5,"MavSysStatusSensor",27254],[5,"MavGeneratorStatusFlag",27254],[5,"HighresImuUpdatedFlags",27254],[5,"GpsInputIgnoreFlags",27254],[5,"GimbalDeviceCapFlags",27254],[5,"GimbalDeviceErrorFlags",27254],[5,"MavPowerStatus",27254],[5,"MavWinchStatusFlag",27254],[5,"SerialControlFlag",27254],[5,"UtmDataAvailFlags",27254],[5,"GimbalDeviceFlags",27254],[5,"PositionTargetTypemask",27254],[5,"MavEventCurrentSequenceFlags",27254],[5,"HilSensorUpdatedFlags",27254],[5,"UavionixAdsbRfHealth",27254],[5,"AdsbFlags",27254],[5,"MavProtocolCapability",27254],[5,"UavionixAdsbOutDynamicState",27254],[5,"HlFailureFlag",27254],[5,"CameraCapFlags",27254],[5,"AisFlags",27254],[5,"TuneFormat",27254],[5,"EscFailureFlags",27254],[5,"GimbalManagerCapFlags",27254],[5,"AttitudeTargetTypemask",27254],[5,"MavModeFlag",27254],[5,"UavionixAdsbOutRfSelect",27254],[6,"MavMessage",27254],[5,"OPEN_DRONE_ID_SYSTEM_UPDATE_DATA",27254],[5,"LOG_REQUEST_LIST_DATA",27254],[5,"OPEN_DRONE_ID_BASIC_ID_DATA",27254],[5,"SERVO_OUTPUT_RAW_DATA",27254],[5,"SIM_STATE_DATA",27254],[5,"COMPONENT_METADATA_DATA",27254],[5,"LOCAL_POSITION_NED_COV_DATA",27254],[5,"OPEN_DRONE_ID_MESSAGE_PACK_DATA",27254],[5,"MESSAGE_INTERVAL_DATA",27254],[5,"GENERATOR_STATUS_DATA",27254],[5,"ENCAPSULATED_DATA_DATA",27254],[5,"CAN_FILTER_MODIFY_DATA",27254],[5,"HOME_POSITION_DATA",27254],[5,"COMPONENT_INFORMATION_DATA",27254],[5,"SET_HOME_POSITION_DATA",27254],[5,"GIMBAL_DEVICE_INFORMATION_DATA",27254],[5,"ISBD_LINK_STATUS_DATA",27254],[5,"LANDING_TARGET_DATA",27254],[5,"RC_CHANNELS_OVERRIDE_DATA",27254],[5,"CAMERA_FOV_STATUS_DATA",27254],[5,"FILE_TRANSFER_PROTOCOL_DATA",27254],[5,"GPS_INJECT_DATA_DATA",27254],[5,"OPEN_DRONE_ID_LOCATION_DATA",27254],[5,"SCALED_IMU3_DATA",27254],[5,"MISSION_CLEAR_ALL_DATA",27254],[5,"GPS_RAW_INT_DATA",27254],[5,"SCALED_IMU2_DATA",27254],[5,"GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA",27254],[5,"SET_POSITION_TARGET_LOCAL_NED_DATA",27254],[5,"ALTITUDE_DATA",27254],[5,"RAW_PRESSURE_DATA",27254],[5,"RADIO_STATUS_DATA",27254],[5,"HIGH_LATENCY_DATA",27254],[5,"GPS2_RAW_DATA",27254],[5,"LOG_REQUEST_DATA_DATA",27254],[5,"VFR_HUD_DATA",27254],[5,"NAMED_VALUE_INT_DATA",27254],[5,"REQUEST_EVENT_DATA",27254],[5,"FOLLOW_TARGET_DATA",27254],[5,"SET_POSITION_TARGET_GLOBAL_INT_DATA",27254],[5,"MISSION_REQUEST_LIST_DATA",27254],[5,"TUNNEL_DATA",27254],[5,"PLAY_TUNE_DATA",27254],[5,"WINCH_STATUS_DATA",27254],[5,"GLOBAL_VISION_POSITION_ESTIMATE_DATA",27254],[5,"WHEEL_DISTANCE_DATA",27254],[5,"SET_ATTITUDE_TARGET_DATA",27254],[5,"MISSION_WRITE_PARTIAL_LIST_DATA",27254],[5,"VIDEO_STREAM_INFORMATION_DATA",27254],[5,"MISSION_SET_CURRENT_DATA",27254],[5,"SCALED_IMU_DATA",27254],[5,"ESC_INFO_DATA",27254],[5,"HIGHRES_IMU_DATA",27254],[5,"STATUSTEXT_DATA",27254],[5,"BUTTON_CHANGE_DATA",27254],[5,"POWER_STATUS_DATA",27254],[5,"DATA_STREAM_DATA",27254],[5,"AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA",27254],[5,"POSITION_TARGET_GLOBAL_INT_DATA",27254],[5,"HYGROMETER_SENSOR_DATA",27254],[5,"GIMBAL_MANAGER_INFORMATION_DATA",27254],[5,"PARAM_EXT_VALUE_DATA",27254],[5,"OPEN_DRONE_ID_SYSTEM_DATA",27254],[5,"COMMAND_ACK_DATA",27254],[5,"DATA_TRANSMISSION_HANDSHAKE_DATA",27254],[5,"SERIAL_CONTROL_DATA",27254],[5,"HIL_OPTICAL_FLOW_DATA",27254],[5,"GPS_STATUS_DATA",27254],[5,"MEMORY_VECT_DATA",27254],[5,"LINK_NODE_STATUS_DATA",27254],[5,"ATT_POS_MOCAP_DATA",27254],[5,"LOGGING_ACK_DATA",27254],[5,"OPEN_DRONE_ID_ARM_STATUS_DATA",27254],[5,"ATTITUDE_DATA",27254],[5,"PING_DATA",27254],[5,"GIMBAL_DEVICE_ATTITUDE_STATUS_DATA",27254],[5,"ORBIT_EXECUTION_STATUS_DATA",27254],[5,"ACTUATOR_CONTROL_TARGET_DATA",27254],[5,"GPS_RTCM_DATA_DATA",27254],[5,"RC_CHANNELS_DATA",27254],[5,"OPTICAL_FLOW_RAD_DATA",27254],[5,"MOUNT_ORIENTATION_DATA",27254],[5,"SETUP_SIGNING_DATA",27254],[5,"STORAGE_INFORMATION_DATA",27254],[5,"MAG_CAL_REPORT_DATA",27254],[5,"BATTERY_STATUS_DATA",27254],[5,"PARAM_SET_DATA",27254],[5,"CURRENT_EVENT_SEQUENCE_DATA",27254],[5,"SUPPORTED_TUNES_DATA",27254],[5,"PARAM_EXT_REQUEST_READ_DATA",27254],[5,"ACTUATOR_OUTPUT_STATUS_DATA",27254],[5,"TERRAIN_REPORT_DATA",27254],[5,"SET_ACTUATOR_CONTROL_TARGET_DATA",27254],[5,"CAMERA_TRACKING_IMAGE_STATUS_DATA",27254],[5,"HIL_STATE_DATA",27254],[5,"CAMERA_INFORMATION_DATA",27254],[5,"ODOMETRY_DATA",27254],[5,"SYS_STATUS_DATA",27254],[5,"GLOBAL_POSITION_INT_COV_DATA",27254],[5,"SAFETY_SET_ALLOWED_AREA_DATA",27254],[5,"UAVCAN_NODE_INFO_DATA",27254],[5,"VIDEO_STREAM_STATUS_DATA",27254],[5,"GIMBAL_DEVICE_SET_ATTITUDE_DATA",27254],[5,"OPEN_DRONE_ID_OPERATOR_ID_DATA",27254],[5,"EXTENDED_SYS_STATE_DATA",27254],[5,"WIFI_CONFIG_AP_DATA",27254],[5,"PARAM_EXT_ACK_DATA",27254],[5,"PARAM_REQUEST_READ_DATA",27254],[5,"SCALED_PRESSURE_DATA",27254],[5,"VISION_SPEED_ESTIMATE_DATA",27254],[5,"MISSION_REQUEST_PARTIAL_LIST_DATA",27254],[5,"AUTOPILOT_VERSION_DATA",27254],[5,"TIMESYNC_DATA",27254],[5,"ATTITUDE_QUATERNION_DATA",27254],[5,"NAMED_VALUE_FLOAT_DATA",27254],[5,"SCALED_PRESSURE2_DATA",27254],[5,"RESPONSE_EVENT_ERROR_DATA",27254],[5,"OPEN_DRONE_ID_AUTHENTICATION_DATA",27254],[5,"CELLULAR_STATUS_DATA",27254],[5,"PLAY_TUNE_V2_DATA",27254],[5,"GPS2_RTK_DATA",27254],[5,"VISION_POSITION_ESTIMATE_DATA",27254],[5,"VIBRATION_DATA",27254],[5,"PARAM_MAP_RC_DATA",27254],[5,"CHANGE_OPERATOR_CONTROL_DATA",27254],[5,"TERRAIN_DATA_DATA",27254],[5,"SET_MODE_DATA",27254],[5,"GIMBAL_MANAGER_STATUS_DATA",27254],[5,"VICON_POSITION_ESTIMATE_DATA",27254],[5,"CAN_FRAME_DATA",27254],[5,"RC_CHANNELS_SCALED_DATA",27254],[5,"CONTROL_SYSTEM_STATE_DATA",27254],[5,"CHANGE_OPERATOR_CONTROL_ACK_DATA",27254],[5,"CELLULAR_CONFIG_DATA",27254],[5,"COLLISION_DATA",27254],[5,"WIND_COV_DATA",27254],[5,"POSITION_TARGET_LOCAL_NED_DATA",27254],[5,"TERRAIN_REQUEST_DATA",27254],[5,"PROTOCOL_VERSION_DATA",27254],[5,"GPS_RTK_DATA",27254],[5,"GIMBAL_MANAGER_SET_ATTITUDE_DATA",27254],[5,"CAMERA_SETTINGS_DATA",27254],[5,"SAFETY_ALLOWED_AREA_DATA",27254],[5,"RESOURCE_REQUEST_DATA",27254],[5,"MISSION_ACK_DATA",27254],[5,"AUTH_KEY_DATA",27254],[5,"PARAM_EXT_REQUEST_LIST_DATA",27254],[5,"DISTANCE_SENSOR_DATA",27254],[5,"RC_CHANNELS_RAW_DATA",27254],[5,"HIL_STATE_QUATERNION_DATA",27254],[5,"COMMAND_LONG_DATA",27254],[5,"MISSION_REQUEST_INT_DATA",27254],[5,"CANFD_FRAME_DATA",27254],[5,"LOCAL_POSITION_NED_DATA",27254],[5,"LOG_DATA_DATA",27254],[5,"DEBUG_DATA",27254],[5,"SET_GPS_GLOBAL_ORIGIN_DATA",27254],[5,"ESTIMATOR_STATUS_DATA",27254],[5,"LOGGING_DATA_DATA",27254],[5,"SCALED_PRESSURE3_DATA",27254],[5,"FLIGHT_INFORMATION_DATA",27254],[5,"UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA",27254],[5,"MISSION_CURRENT_DATA",27254],[5,"TRAJECTORY_REPRESENTATION_BEZIER_DATA",27254],[5,"COMMAND_CANCEL_DATA",27254],[5,"HIL_RC_INPUTS_RAW_DATA",27254],[5,"COMMAND_INT_DATA",27254],[5,"CAMERA_TRACKING_GEO_STATUS_DATA",27254],[5,"ESC_STATUS_DATA",27254],[5,"HIL_GPS_DATA",27254],[5,"SYSTEM_TIME_DATA",27254],[5,"MANUAL_SETPOINT_DATA",27254],[5,"LOG_ERASE_DATA",27254],[5,"HEARTBEAT_DATA",27254],[5,"CAMERA_IMAGE_CAPTURED_DATA",27254],[5,"TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA",27254],[5,"TERRAIN_CHECK_DATA",27254],[5,"PARAM_EXT_SET_DATA",27254],[5,"SMART_BATTERY_INFO_DATA",27254],[5,"V2_EXTENSION_DATA",27254],[5,"RAW_IMU_DATA",27254],[5,"HIL_SENSOR_DATA",27254],[5,"EVENT_DATA",27254],[5,"FENCE_STATUS_DATA",27254],[5,"MISSION_COUNT_DATA",27254],[5,"OBSTACLE_DISTANCE_DATA",27254],[5,"LOG_ENTRY_DATA",27254],[5,"GLOBAL_POSITION_INT_DATA",27254],[5,"ATTITUDE_QUATERNION_COV_DATA",27254],[5,"AIS_VESSEL_DATA",27254],[5,"DEBUG_FLOAT_ARRAY_DATA",27254],[5,"PARAM_VALUE_DATA",27254],[5,"TIME_ESTIMATE_TO_TARGET_DATA",27254],[5,"OPEN_DRONE_ID_SELF_ID_DATA",27254],[5,"OPTICAL_FLOW_DATA",27254],[5,"HIL_CONTROLS_DATA",27254],[5,"GPS_GLOBAL_ORIGIN_DATA",27254],[5,"GIMBAL_MANAGER_SET_PITCHYAW_DATA",27254],[5,"MANUAL_CONTROL_DATA",27254],[5,"CAMERA_CAPTURE_STATUS_DATA",27254],[5,"UAVIONIX_ADSB_OUT_DYNAMIC_DATA",27254],[5,"REQUEST_DATA_STREAM_DATA",27254],[5,"MISSION_ITEM_REACHED_DATA",27254],[5,"EFI_STATUS_DATA",27254],[5,"LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA",27254],[5,"MISSION_ITEM_INT_DATA",27254],[5,"PARAM_REQUEST_LIST_DATA",27254],[5,"HIL_ACTUATOR_CONTROLS_DATA",27254],[5,"MISSION_REQUEST_DATA",27254],[5,"RAW_RPM_DATA",27254],[5,"LOGGING_DATA_ACKED_DATA",27254],[5,"UAVCAN_NODE_STATUS_DATA",27254],[5,"GPS_INPUT_DATA",27254],[5,"UTM_GLOBAL_POSITION_DATA",27254],[5,"NAV_CONTROLLER_OUTPUT_DATA",27254],[5,"LOG_REQUEST_END_DATA",27254],[5,"DEBUG_VECT_DATA",27254],[5,"HIGH_LATENCY2_DATA",27254],[5,"ATTITUDE_TARGET_DATA",27254],[5,"ONBOARD_COMPUTER_STATUS_DATA",27254],[5,"CAMERA_TRIGGER_DATA",27254],[5,"MISSION_ITEM_DATA",27254],[5,"ADSB_VEHICLE_DATA",27254],[5,"UAVIONIX_ADSB_OUT_CFG_DATA",27254],[6,"FenceAction",27254],[6,"UavionixAdsbOutCfgGpsOffsetLat",27254],[6,"CameraTrackingMode",27254],[6,"UavionixAdsbEmergencyStatus",27254],[6,"WinchActions",27254],[6,"MavMode",27254],[6,"MavFtpOpcode",27254],[6,"WifiConfigApMode",27254],[6,"UavionixAdsbOutDynamicGpsFix",27254],[6,"MagCalStatus",27254],[6,"MavSeverity",27254],[6,"MavOdidHeightRef",27254],[6,"MavOdidStatus",27254],[6,"MavBatteryFunction",27254],[6,"MavEstimatorType",27254],[6,"AdsbAltitudeType",27254],[6,"ActuatorOutputFunction",27254],[6,"UtmFlightState",27254],[6,"MavOdidOperatorIdType",27254],[6,"MavBatteryType",27254],[6,"MavAutopilot",27254],[6,"GimbalManagerFlags",27254],[6,"StorageStatus",27254],[6,"StorageUsageFlag",27254],[6,"FirmwareVersionType",27254],[6,"MavSysStatusSensorExtended",27254],[6,"MissionState",27254],[6,"MavSensorOrientation",27254],[6,"MavDoRepositionFlags",27254],[6,"UavcanNodeMode",27254],[6,"ActuatorConfiguration",27254],[6,"AisType",27254],[6,"AdsbEmitterType",27254],[6,"MavVtolState",27254],[6,"MavCmd",27254],[6,"FailureUnit",27254],[6,"MavType",27254],[6,"PreflightStorageParameterAction",27254],[6,"EscConnectionType",27254],[6,"MotorTestOrder",27254],[6,"MotorTestThrottleType",27254],[6,"VideoStreamStatusFlags",27254],[6,"GpsFixType",27254],[6,"MavOdidAuthType",27254],[6,"SerialControlDev",27254],[6,"MavBatteryFault",27254],[6,"CameraTrackingTargetData",27254],[6,"MavLandedState",27254],[6,"MavlinkDataStreamType",27254],[6,"OrbitYawBehaviour",27254],[6,"MavOdidClassificationType",27254],[6,"MavArmAuthDeniedReason",27254],[6,"MavBatteryChargeState",27254],[6,"MavMountMode",27254],[6,"MavOdidDescType",27254],[6,"ParachuteAction",27254],[6,"MavFtpErr",27254],[6,"MavCollisionSrc",27254],[6,"ParamAck",27254],[6,"MavGoto",27254],[6,"MavOdidSpeedAcc",27254],[6,"MavTunnelPayloadType",27254],[6,"AutotuneAxis",27254],[6,"CameraTrackingStatusFlags",27254],[6,"MavFrame",27254],[6,"CellularStatusFlag",27254],[6,"CameraMode",27254],[6,"SetFocusType",27254],[6,"MavDistanceSensor",27254],[6,"LandingTargetType",27254],[6,"CellularConfigResponse",27254],[6,"CompMetadataType",27254],[6,"UavionixAdsbOutCfgAircraftSize",27254],[6,"MavOdidVerAcc",27254],[6,"FenceBreach",27254],[6,"WifiConfigApResponse",27254],[6,"RcType",27254],[6,"MavComponent",27254],[6,"MavOdidIdType",27254],[6,"AisNavStatus",27254],[6,"CameraZoomType",27254],[6,"MavBatteryMode",27254],[6,"MavOdidOperatorLocationType",27254],[6,"FenceMitigate",27254],[6,"MavParamType",27254],[6,"MavParamExtType",27254],[6,"MavState",27254],[6,"MavModeFlagDecodePosition",27254],[6,"MavEventErrorReason",27254],[6,"MavResult",27254],[6,"RtkBaselineCoordinateSystem",27254],[6,"VtolTransitionHeading",27254],[6,"UavionixAdsbOutCfgGpsOffsetLon",27254],[6,"CellularNetworkRadioType",27254],[6,"MavOdidUaType",27254],[6,"MavCollisionThreatLevel",27254],[6,"MavOdidHorAcc",27254],[6,"MavDataStream",27254],[6,"MavOdidTimeAcc",27254],[6,"MavMissionType",27254],[6,"MavOdidCategoryEu",27254],[6,"StorageType",27254],[6,"MavMissionResult",27254],[6,"MavRoi",27254],[6,"FailureType",27254],[6,"MavOdidClassEu",27254],[6,"GripperActions",27254],[6,"UavcanNodeHealth",27254],[6,"CellularNetworkFailedReason",27254],[6,"MavCollisionAction",27254],[6,"MavOdidArmStatus",27254],[6,"PrecisionLandMode",27254],[6,"CanFilterOp",27254],[6,"MavCmdAck",27254],[6,"PreflightStorageMissionAction",27254],[6,"NavVtolLandOptions",27254],[6,"VideoStreamType",27254],[15,"InvalidEnum",27102],[15,"InvalidFlag",27102],[15,"UnknownMessage",27102]],"r":[[3,39175],[4,39175],[5,39175],[6,39175],[7,39175],[8,39177],[9,39175],[10,39175],[11,39175],[12,39175],[14,39175],[29,39175],[30,39175],[31,39175],[49,39177],[61,39175],[100,39175],[104,39175],[105,39175],[106,39175],[107,39175],[108,39175],[152,39175],[153,39175],[154,39175],[155,39175],[15498,39192],[15522,39193],[27064,39181],[27065,39181],[27067,39181],[27239,39184],[39174,39195]],"b":[[8649,"impl-Binary-for-PositionTargetTypemask"],[8650,"impl-Debug-for-PositionTargetTypemask"],[8651,"impl-Octal-for-PositionTargetTypemask"],[8652,"impl-UpperHex-for-PositionTargetTypemask"],[8653,"impl-LowerHex-for-PositionTargetTypemask"],[8655,"impl-Octal-for-MavPowerStatus"],[8656,"impl-Debug-for-MavPowerStatus"],[8657,"impl-UpperHex-for-MavPowerStatus"],[8658,"impl-Binary-for-MavPowerStatus"],[8659,"impl-LowerHex-for-MavPowerStatus"],[8662,"impl-UpperHex-for-UavionixAdsbOutRfSelect"],[8663,"impl-Debug-for-UavionixAdsbOutRfSelect"],[8664,"impl-Binary-for-UavionixAdsbOutRfSelect"],[8665,"impl-Octal-for-UavionixAdsbOutRfSelect"],[8666,"impl-LowerHex-for-UavionixAdsbOutRfSelect"],[8667,"impl-LowerHex-for-TuneFormat"],[8668,"impl-Debug-for-TuneFormat"],[8669,"impl-Binary-for-TuneFormat"],[8670,"impl-Octal-for-TuneFormat"],[8671,"impl-UpperHex-for-TuneFormat"],[8689,"impl-LowerHex-for-GpsInputIgnoreFlags"],[8690,"impl-Octal-for-GpsInputIgnoreFlags"],[8691,"impl-Binary-for-GpsInputIgnoreFlags"],[8692,"impl-UpperHex-for-GpsInputIgnoreFlags"],[8693,"impl-Debug-for-GpsInputIgnoreFlags"],[8699,"impl-Binary-for-MavWinchStatusFlag"],[8700,"impl-Debug-for-MavWinchStatusFlag"],[8701,"impl-Octal-for-MavWinchStatusFlag"],[8702,"impl-LowerHex-for-MavWinchStatusFlag"],[8703,"impl-UpperHex-for-MavWinchStatusFlag"],[8710,"impl-Debug-for-SerialControlFlag"],[8711,"impl-Octal-for-SerialControlFlag"],[8712,"impl-UpperHex-for-SerialControlFlag"],[8713,"impl-LowerHex-for-SerialControlFlag"],[8714,"impl-Binary-for-SerialControlFlag"],[8718,"impl-UpperHex-for-LimitModule"],[8719,"impl-Binary-for-LimitModule"],[8720,"impl-Debug-for-LimitModule"],[8721,"impl-Octal-for-LimitModule"],[8722,"impl-LowerHex-for-LimitModule"],[8723,"impl-LowerHex-for-AdsbFlags"],[8724,"impl-Debug-for-AdsbFlags"],[8725,"impl-Octal-for-AdsbFlags"],[8726,"impl-UpperHex-for-AdsbFlags"],[8727,"impl-Binary-for-AdsbFlags"],[8760,"impl-UpperHex-for-GimbalDeviceErrorFlags"],[8761,"impl-Octal-for-GimbalDeviceErrorFlags"],[8762,"impl-Debug-for-GimbalDeviceErrorFlags"],[8763,"impl-Binary-for-GimbalDeviceErrorFlags"],[8764,"impl-LowerHex-for-GimbalDeviceErrorFlags"],[8771,"impl-Octal-for-UtmDataAvailFlags"],[8772,"impl-Binary-for-UtmDataAvailFlags"],[8773,"impl-LowerHex-for-UtmDataAvailFlags"],[8774,"impl-UpperHex-for-UtmDataAvailFlags"],[8775,"impl-Debug-for-UtmDataAvailFlags"],[8784,"impl-UpperHex-for-GimbalDeviceFlags"],[8785,"impl-Octal-for-GimbalDeviceFlags"],[8786,"impl-Debug-for-GimbalDeviceFlags"],[8787,"impl-Binary-for-GimbalDeviceFlags"],[8788,"impl-LowerHex-for-GimbalDeviceFlags"],[8793,"impl-UpperHex-for-EstimatorStatusFlags"],[8794,"impl-Binary-for-EstimatorStatusFlags"],[8795,"impl-LowerHex-for-EstimatorStatusFlags"],[8796,"impl-Debug-for-EstimatorStatusFlags"],[8797,"impl-Octal-for-EstimatorStatusFlags"],[8804,"impl-UpperHex-for-HlFailureFlag"],[8805,"impl-LowerHex-for-HlFailureFlag"],[8806,"impl-Octal-for-HlFailureFlag"],[8807,"impl-Debug-for-HlFailureFlag"],[8808,"impl-Binary-for-HlFailureFlag"],[8811,"impl-Debug-for-MavModeFlag"],[8812,"impl-LowerHex-for-MavModeFlag"],[8813,"impl-Octal-for-MavModeFlag"],[8814,"impl-UpperHex-for-MavModeFlag"],[8815,"impl-Binary-for-MavModeFlag"],[8818,"impl-Binary-for-CameraCapFlags"],[8819,"impl-UpperHex-for-CameraCapFlags"],[8820,"impl-Octal-for-CameraCapFlags"],[8821,"impl-Debug-for-CameraCapFlags"],[8822,"impl-LowerHex-for-CameraCapFlags"],[8823,"impl-Binary-for-EscFailureFlags"],[8824,"impl-Octal-for-EscFailureFlags"],[8825,"impl-LowerHex-for-EscFailureFlags"],[8826,"impl-UpperHex-for-EscFailureFlags"],[8827,"impl-Debug-for-EscFailureFlags"],[8839,"impl-UpperHex-for-EkfStatusFlags"],[8840,"impl-Octal-for-EkfStatusFlags"],[8841,"impl-Debug-for-EkfStatusFlags"],[8842,"impl-LowerHex-for-EkfStatusFlags"],[8843,"impl-Binary-for-EkfStatusFlags"],[8847,"impl-LowerHex-for-MavProtocolCapability"],[8848,"impl-Binary-for-MavProtocolCapability"],[8849,"impl-Octal-for-MavProtocolCapability"],[8850,"impl-Debug-for-MavProtocolCapability"],[8851,"impl-UpperHex-for-MavProtocolCapability"],[8853,"impl-Octal-for-AttitudeTargetTypemask"],[8854,"impl-LowerHex-for-AttitudeTargetTypemask"],[8855,"impl-Binary-for-AttitudeTargetTypemask"],[8856,"impl-UpperHex-for-AttitudeTargetTypemask"],[8857,"impl-Debug-for-AttitudeTargetTypemask"],[8860,"impl-LowerHex-for-HighresImuUpdatedFlags"],[8861,"impl-Octal-for-HighresImuUpdatedFlags"],[8862,"impl-Debug-for-HighresImuUpdatedFlags"],[8863,"impl-Binary-for-HighresImuUpdatedFlags"],[8864,"impl-UpperHex-for-HighresImuUpdatedFlags"],[8873,"impl-Binary-for-UavionixAdsbOutDynamicState"],[8874,"impl-LowerHex-for-UavionixAdsbOutDynamicState"],[8875,"impl-UpperHex-for-UavionixAdsbOutDynamicState"],[8876,"impl-Debug-for-UavionixAdsbOutDynamicState"],[8877,"impl-Octal-for-UavionixAdsbOutDynamicState"],[8881,"impl-UpperHex-for-AisFlags"],[8882,"impl-Debug-for-AisFlags"],[8883,"impl-LowerHex-for-AisFlags"],[8884,"impl-Octal-for-AisFlags"],[8885,"impl-Binary-for-AisFlags"],[8888,"impl-LowerHex-for-UavionixAdsbRfHealth"],[8889,"impl-Binary-for-UavionixAdsbRfHealth"],[8890,"impl-UpperHex-for-UavionixAdsbRfHealth"],[8891,"impl-Octal-for-UavionixAdsbRfHealth"],[8892,"impl-Debug-for-UavionixAdsbRfHealth"],[8893,"impl-Debug-for-HilSensorUpdatedFlags"],[8894,"impl-UpperHex-for-HilSensorUpdatedFlags"],[8895,"impl-Binary-for-HilSensorUpdatedFlags"],[8896,"impl-LowerHex-for-HilSensorUpdatedFlags"],[8897,"impl-Octal-for-HilSensorUpdatedFlags"],[8900,"impl-LowerHex-for-GimbalManagerCapFlags"],[8901,"impl-UpperHex-for-GimbalManagerCapFlags"],[8902,"impl-Binary-for-GimbalManagerCapFlags"],[8903,"impl-Octal-for-GimbalManagerCapFlags"],[8904,"impl-Debug-for-GimbalManagerCapFlags"],[8907,"impl-Debug-for-GimbalDeviceCapFlags"],[8908,"impl-UpperHex-for-GimbalDeviceCapFlags"],[8909,"impl-Octal-for-GimbalDeviceCapFlags"],[8910,"impl-Binary-for-GimbalDeviceCapFlags"],[8911,"impl-LowerHex-for-GimbalDeviceCapFlags"],[8914,"impl-LowerHex-for-RallyFlags"],[8915,"impl-Debug-for-RallyFlags"],[8916,"impl-Octal-for-RallyFlags"],[8917,"impl-UpperHex-for-RallyFlags"],[8918,"impl-Binary-for-RallyFlags"],[8930,"impl-LowerHex-for-MavEventCurrentSequenceFlags"],[8931,"impl-Binary-for-MavEventCurrentSequenceFlags"],[8932,"impl-UpperHex-for-MavEventCurrentSequenceFlags"],[8933,"impl-Octal-for-MavEventCurrentSequenceFlags"],[8934,"impl-Debug-for-MavEventCurrentSequenceFlags"],[8935,"impl-Octal-for-MavGeneratorStatusFlag"],[8936,"impl-UpperHex-for-MavGeneratorStatusFlag"],[8937,"impl-Debug-for-MavGeneratorStatusFlag"],[8938,"impl-Binary-for-MavGeneratorStatusFlag"],[8939,"impl-LowerHex-for-MavGeneratorStatusFlag"],[8944,"impl-Octal-for-MavSysStatusSensor"],[8945,"impl-Binary-for-MavSysStatusSensor"],[8946,"impl-LowerHex-for-MavSysStatusSensor"],[8947,"impl-Debug-for-MavSysStatusSensor"],[8948,"impl-UpperHex-for-MavSysStatusSensor"],[8950,"impl-LowerHex-for-GoproHeartbeatFlags"],[8951,"impl-UpperHex-for-GoproHeartbeatFlags"],[8952,"impl-Octal-for-GoproHeartbeatFlags"],[8953,"impl-Debug-for-GoproHeartbeatFlags"],[8954,"impl-Binary-for-GoproHeartbeatFlags"],[21922,"impl-LowerHex-for-AisFlags"],[21923,"impl-UpperHex-for-AisFlags"],[21924,"impl-Binary-for-AisFlags"],[21925,"impl-Debug-for-AisFlags"],[21926,"impl-Octal-for-AisFlags"],[21929,"impl-Debug-for-SerialControlFlag"],[21930,"impl-LowerHex-for-SerialControlFlag"],[21931,"impl-Octal-for-SerialControlFlag"],[21932,"impl-UpperHex-for-SerialControlFlag"],[21933,"impl-Binary-for-SerialControlFlag"],[21939,"impl-UpperHex-for-GimbalDeviceFlags"],[21940,"impl-LowerHex-for-GimbalDeviceFlags"],[21941,"impl-Binary-for-GimbalDeviceFlags"],[21942,"impl-Octal-for-GimbalDeviceFlags"],[21943,"impl-Debug-for-GimbalDeviceFlags"],[21955,"impl-LowerHex-for-HilSensorUpdatedFlags"],[21956,"impl-Octal-for-HilSensorUpdatedFlags"],[21957,"impl-UpperHex-for-HilSensorUpdatedFlags"],[21958,"impl-Debug-for-HilSensorUpdatedFlags"],[21959,"impl-Binary-for-HilSensorUpdatedFlags"],[21960,"impl-Debug-for-GimbalManagerCapFlags"],[21961,"impl-Octal-for-GimbalManagerCapFlags"],[21962,"impl-Binary-for-GimbalManagerCapFlags"],[21963,"impl-LowerHex-for-GimbalManagerCapFlags"],[21964,"impl-UpperHex-for-GimbalManagerCapFlags"],[21966,"impl-Binary-for-CameraCapFlags"],[21967,"impl-LowerHex-for-CameraCapFlags"],[21968,"impl-Debug-for-CameraCapFlags"],[21969,"impl-UpperHex-for-CameraCapFlags"],[21970,"impl-Octal-for-CameraCapFlags"],[21980,"impl-Octal-for-MavModeFlag"],[21981,"impl-UpperHex-for-MavModeFlag"],[21982,"impl-Binary-for-MavModeFlag"],[21983,"impl-LowerHex-for-MavModeFlag"],[21984,"impl-Debug-for-MavModeFlag"],[21988,"impl-LowerHex-for-TuneFormat"],[21989,"impl-Debug-for-TuneFormat"],[21990,"impl-Octal-for-TuneFormat"],[21991,"impl-Binary-for-TuneFormat"],[21992,"impl-UpperHex-for-TuneFormat"],[21998,"impl-Binary-for-GimbalDeviceCapFlags"],[21999,"impl-UpperHex-for-GimbalDeviceCapFlags"],[22000,"impl-Octal-for-GimbalDeviceCapFlags"],[22001,"impl-Debug-for-GimbalDeviceCapFlags"],[22002,"impl-LowerHex-for-GimbalDeviceCapFlags"],[22003,"impl-LowerHex-for-EstimatorStatusFlags"],[22004,"impl-Octal-for-EstimatorStatusFlags"],[22005,"impl-Binary-for-EstimatorStatusFlags"],[22006,"impl-Debug-for-EstimatorStatusFlags"],[22007,"impl-UpperHex-for-EstimatorStatusFlags"],[22015,"impl-Binary-for-EscFailureFlags"],[22016,"impl-Debug-for-EscFailureFlags"],[22017,"impl-UpperHex-for-EscFailureFlags"],[22018,"impl-Octal-for-EscFailureFlags"],[22019,"impl-LowerHex-for-EscFailureFlags"],[22022,"impl-Octal-for-MavGeneratorStatusFlag"],[22023,"impl-Binary-for-MavGeneratorStatusFlag"],[22024,"impl-Debug-for-MavGeneratorStatusFlag"],[22025,"impl-LowerHex-for-MavGeneratorStatusFlag"],[22026,"impl-UpperHex-for-MavGeneratorStatusFlag"],[22027,"impl-Octal-for-MavWinchStatusFlag"],[22028,"impl-LowerHex-for-MavWinchStatusFlag"],[22029,"impl-Debug-for-MavWinchStatusFlag"],[22030,"impl-Binary-for-MavWinchStatusFlag"],[22031,"impl-UpperHex-for-MavWinchStatusFlag"],[22034,"impl-Octal-for-MavSysStatusSensor"],[22035,"impl-Binary-for-MavSysStatusSensor"],[22036,"impl-Debug-for-MavSysStatusSensor"],[22037,"impl-LowerHex-for-MavSysStatusSensor"],[22038,"impl-UpperHex-for-MavSysStatusSensor"],[22040,"impl-UpperHex-for-GpsInputIgnoreFlags"],[22041,"impl-Octal-for-GpsInputIgnoreFlags"],[22042,"impl-Binary-for-GpsInputIgnoreFlags"],[22043,"impl-LowerHex-for-GpsInputIgnoreFlags"],[22044,"impl-Debug-for-GpsInputIgnoreFlags"],[22048,"impl-Debug-for-MavPowerStatus"],[22049,"impl-UpperHex-for-MavPowerStatus"],[22050,"impl-LowerHex-for-MavPowerStatus"],[22051,"impl-Binary-for-MavPowerStatus"],[22052,"impl-Octal-for-MavPowerStatus"],[22053,"impl-LowerHex-for-MavProtocolCapability"],[22054,"impl-Binary-for-MavProtocolCapability"],[22055,"impl-UpperHex-for-MavProtocolCapability"],[22056,"impl-Debug-for-MavProtocolCapability"],[22057,"impl-Octal-for-MavProtocolCapability"],[22064,"impl-LowerHex-for-UtmDataAvailFlags"],[22065,"impl-Octal-for-UtmDataAvailFlags"],[22066,"impl-UpperHex-for-UtmDataAvailFlags"],[22067,"impl-Binary-for-UtmDataAvailFlags"],[22068,"impl-Debug-for-UtmDataAvailFlags"],[22071,"impl-LowerHex-for-GimbalDeviceErrorFlags"],[22072,"impl-UpperHex-for-GimbalDeviceErrorFlags"],[22073,"impl-Debug-for-GimbalDeviceErrorFlags"],[22074,"impl-Binary-for-GimbalDeviceErrorFlags"],[22075,"impl-Octal-for-GimbalDeviceErrorFlags"],[22082,"impl-LowerHex-for-AdsbFlags"],[22083,"impl-Octal-for-AdsbFlags"],[22084,"impl-UpperHex-for-AdsbFlags"],[22085,"impl-Debug-for-AdsbFlags"],[22086,"impl-Binary-for-AdsbFlags"],[22087,"impl-Binary-for-HighresImuUpdatedFlags"],[22088,"impl-Octal-for-HighresImuUpdatedFlags"],[22089,"impl-Debug-for-HighresImuUpdatedFlags"],[22090,"impl-UpperHex-for-HighresImuUpdatedFlags"],[22091,"impl-LowerHex-for-HighresImuUpdatedFlags"],[22096,"impl-Octal-for-HlFailureFlag"],[22097,"impl-Debug-for-HlFailureFlag"],[22098,"impl-Binary-for-HlFailureFlag"],[22099,"impl-LowerHex-for-HlFailureFlag"],[22100,"impl-UpperHex-for-HlFailureFlag"],[22103,"impl-Binary-for-PositionTargetTypemask"],[22104,"impl-LowerHex-for-PositionTargetTypemask"],[22105,"impl-Octal-for-PositionTargetTypemask"],[22106,"impl-UpperHex-for-PositionTargetTypemask"],[22107,"impl-Debug-for-PositionTargetTypemask"],[22113,"impl-Debug-for-MavEventCurrentSequenceFlags"],[22114,"impl-UpperHex-for-MavEventCurrentSequenceFlags"],[22115,"impl-Octal-for-MavEventCurrentSequenceFlags"],[22116,"impl-Binary-for-MavEventCurrentSequenceFlags"],[22117,"impl-LowerHex-for-MavEventCurrentSequenceFlags"],[22147,"impl-UpperHex-for-AttitudeTargetTypemask"],[22148,"impl-Binary-for-AttitudeTargetTypemask"],[22149,"impl-Debug-for-AttitudeTargetTypemask"],[22150,"impl-Octal-for-AttitudeTargetTypemask"],[22151,"impl-LowerHex-for-AttitudeTargetTypemask"],[27075,"impl-Debug-for-ParserError"],[27076,"impl-Display-for-ParserError"],[27077,"impl-Display-for-MessageReadError"],[27078,"impl-Debug-for-MessageReadError"],[27079,"impl-Debug-for-MessageWriteError"],[27080,"impl-Display-for-MessageWriteError"],[27082,"impl-From%3CParserError%3E-for-MessageReadError"],[27083,"impl-From%3CError%3E-for-MessageReadError"],[33846,"impl-UpperHex-for-EstimatorStatusFlags"],[33847,"impl-Binary-for-EstimatorStatusFlags"],[33848,"impl-Debug-for-EstimatorStatusFlags"],[33849,"impl-LowerHex-for-EstimatorStatusFlags"],[33850,"impl-Octal-for-EstimatorStatusFlags"],[33854,"impl-LowerHex-for-MavSysStatusSensor"],[33855,"impl-Debug-for-MavSysStatusSensor"],[33856,"impl-Binary-for-MavSysStatusSensor"],[33857,"impl-Octal-for-MavSysStatusSensor"],[33858,"impl-UpperHex-for-MavSysStatusSensor"],[33859,"impl-Debug-for-MavGeneratorStatusFlag"],[33860,"impl-Binary-for-MavGeneratorStatusFlag"],[33861,"impl-Octal-for-MavGeneratorStatusFlag"],[33862,"impl-UpperHex-for-MavGeneratorStatusFlag"],[33863,"impl-LowerHex-for-MavGeneratorStatusFlag"],[33870,"impl-Octal-for-HighresImuUpdatedFlags"],[33871,"impl-Binary-for-HighresImuUpdatedFlags"],[33872,"impl-UpperHex-for-HighresImuUpdatedFlags"],[33873,"impl-Debug-for-HighresImuUpdatedFlags"],[33874,"impl-LowerHex-for-HighresImuUpdatedFlags"],[33876,"impl-UpperHex-for-GpsInputIgnoreFlags"],[33877,"impl-Debug-for-GpsInputIgnoreFlags"],[33878,"impl-Octal-for-GpsInputIgnoreFlags"],[33879,"impl-Binary-for-GpsInputIgnoreFlags"],[33880,"impl-LowerHex-for-GpsInputIgnoreFlags"],[33883,"impl-Debug-for-GimbalDeviceCapFlags"],[33884,"impl-UpperHex-for-GimbalDeviceCapFlags"],[33885,"impl-LowerHex-for-GimbalDeviceCapFlags"],[33886,"impl-Binary-for-GimbalDeviceCapFlags"],[33887,"impl-Octal-for-GimbalDeviceCapFlags"],[33894,"impl-Debug-for-GimbalDeviceErrorFlags"],[33895,"impl-Binary-for-GimbalDeviceErrorFlags"],[33896,"impl-LowerHex-for-GimbalDeviceErrorFlags"],[33897,"impl-Octal-for-GimbalDeviceErrorFlags"],[33898,"impl-UpperHex-for-GimbalDeviceErrorFlags"],[33903,"impl-Binary-for-MavPowerStatus"],[33904,"impl-UpperHex-for-MavPowerStatus"],[33905,"impl-Debug-for-MavPowerStatus"],[33906,"impl-Octal-for-MavPowerStatus"],[33907,"impl-LowerHex-for-MavPowerStatus"],[33915,"impl-Binary-for-MavWinchStatusFlag"],[33916,"impl-Octal-for-MavWinchStatusFlag"],[33917,"impl-LowerHex-for-MavWinchStatusFlag"],[33918,"impl-UpperHex-for-MavWinchStatusFlag"],[33919,"impl-Debug-for-MavWinchStatusFlag"],[33920,"impl-Octal-for-SerialControlFlag"],[33921,"impl-Binary-for-SerialControlFlag"],[33922,"impl-UpperHex-for-SerialControlFlag"],[33923,"impl-Debug-for-SerialControlFlag"],[33924,"impl-LowerHex-for-SerialControlFlag"],[33930,"impl-Octal-for-UtmDataAvailFlags"],[33931,"impl-Binary-for-UtmDataAvailFlags"],[33932,"impl-LowerHex-for-UtmDataAvailFlags"],[33933,"impl-Debug-for-UtmDataAvailFlags"],[33934,"impl-UpperHex-for-UtmDataAvailFlags"],[33938,"impl-Binary-for-GimbalDeviceFlags"],[33939,"impl-UpperHex-for-GimbalDeviceFlags"],[33940,"impl-LowerHex-for-GimbalDeviceFlags"],[33941,"impl-Debug-for-GimbalDeviceFlags"],[33942,"impl-Octal-for-GimbalDeviceFlags"],[33946,"impl-Debug-for-PositionTargetTypemask"],[33947,"impl-Octal-for-PositionTargetTypemask"],[33948,"impl-LowerHex-for-PositionTargetTypemask"],[33949,"impl-Binary-for-PositionTargetTypemask"],[33950,"impl-UpperHex-for-PositionTargetTypemask"],[33956,"impl-LowerHex-for-MavEventCurrentSequenceFlags"],[33957,"impl-UpperHex-for-MavEventCurrentSequenceFlags"],[33958,"impl-Octal-for-MavEventCurrentSequenceFlags"],[33959,"impl-Binary-for-MavEventCurrentSequenceFlags"],[33960,"impl-Debug-for-MavEventCurrentSequenceFlags"],[33961,"impl-Debug-for-HilSensorUpdatedFlags"],[33962,"impl-UpperHex-for-HilSensorUpdatedFlags"],[33963,"impl-Binary-for-HilSensorUpdatedFlags"],[33964,"impl-Octal-for-HilSensorUpdatedFlags"],[33965,"impl-LowerHex-for-HilSensorUpdatedFlags"],[33967,"impl-LowerHex-for-UavionixAdsbRfHealth"],[33968,"impl-Octal-for-UavionixAdsbRfHealth"],[33969,"impl-Debug-for-UavionixAdsbRfHealth"],[33970,"impl-UpperHex-for-UavionixAdsbRfHealth"],[33971,"impl-Binary-for-UavionixAdsbRfHealth"],[33972,"impl-LowerHex-for-AdsbFlags"],[33973,"impl-UpperHex-for-AdsbFlags"],[33974,"impl-Binary-for-AdsbFlags"],[33975,"impl-Octal-for-AdsbFlags"],[33976,"impl-Debug-for-AdsbFlags"],[33978,"impl-Octal-for-MavProtocolCapability"],[33979,"impl-UpperHex-for-MavProtocolCapability"],[33980,"impl-Debug-for-MavProtocolCapability"],[33981,"impl-Binary-for-MavProtocolCapability"],[33982,"impl-LowerHex-for-MavProtocolCapability"],[33986,"impl-Debug-for-UavionixAdsbOutDynamicState"],[33987,"impl-LowerHex-for-UavionixAdsbOutDynamicState"],[33988,"impl-Binary-for-UavionixAdsbOutDynamicState"],[33989,"impl-UpperHex-for-UavionixAdsbOutDynamicState"],[33990,"impl-Octal-for-UavionixAdsbOutDynamicState"],[33995,"impl-UpperHex-for-HlFailureFlag"],[33996,"impl-Binary-for-HlFailureFlag"],[33997,"impl-LowerHex-for-HlFailureFlag"],[33998,"impl-Debug-for-HlFailureFlag"],[33999,"impl-Octal-for-HlFailureFlag"],[34000,"impl-Octal-for-CameraCapFlags"],[34001,"impl-Binary-for-CameraCapFlags"],[34002,"impl-LowerHex-for-CameraCapFlags"],[34003,"impl-UpperHex-for-CameraCapFlags"],[34004,"impl-Debug-for-CameraCapFlags"],[34005,"impl-Binary-for-AisFlags"],[34006,"impl-LowerHex-for-AisFlags"],[34007,"impl-Debug-for-AisFlags"],[34008,"impl-UpperHex-for-AisFlags"],[34009,"impl-Octal-for-AisFlags"],[34017,"impl-Octal-for-TuneFormat"],[34018,"impl-LowerHex-for-TuneFormat"],[34019,"impl-UpperHex-for-TuneFormat"],[34020,"impl-Binary-for-TuneFormat"],[34021,"impl-Debug-for-TuneFormat"],[34023,"impl-UpperHex-for-EscFailureFlags"],[34024,"impl-Binary-for-EscFailureFlags"],[34025,"impl-Debug-for-EscFailureFlags"],[34026,"impl-Octal-for-EscFailureFlags"],[34027,"impl-LowerHex-for-EscFailureFlags"],[34033,"impl-Octal-for-GimbalManagerCapFlags"],[34034,"impl-Binary-for-GimbalManagerCapFlags"],[34035,"impl-UpperHex-for-GimbalManagerCapFlags"],[34036,"impl-LowerHex-for-GimbalManagerCapFlags"],[34037,"impl-Debug-for-GimbalManagerCapFlags"],[34038,"impl-Debug-for-AttitudeTargetTypemask"],[34039,"impl-UpperHex-for-AttitudeTargetTypemask"],[34040,"impl-Octal-for-AttitudeTargetTypemask"],[34041,"impl-LowerHex-for-AttitudeTargetTypemask"],[34042,"impl-Binary-for-AttitudeTargetTypemask"],[34063,"impl-UpperHex-for-MavModeFlag"],[34064,"impl-Debug-for-MavModeFlag"],[34065,"impl-Octal-for-MavModeFlag"],[34066,"impl-LowerHex-for-MavModeFlag"],[34067,"impl-Binary-for-MavModeFlag"],[34089,"impl-Debug-for-UavionixAdsbOutRfSelect"],[34090,"impl-Binary-for-UavionixAdsbOutRfSelect"],[34091,"impl-Octal-for-UavionixAdsbOutRfSelect"],[34092,"impl-LowerHex-for-UavionixAdsbOutRfSelect"],[34093,"impl-UpperHex-for-UavionixAdsbOutRfSelect"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAPCFUgAAAAUACAAAAA0ABQAUABgALgADADMABAA5AAsASgACAE4AAgBSAAAAWAAMAGYAAgBtAAAAcwACAHcAAAB5AB4AmQAAAJ0AzA2KDnYAgQ8CAOQPSwhQGAYAdxhmBf4dFwA2HuYEZyX1AX0nDwDNJwAA+CnYAPEqHAEuLKED8C8+AG8wBACUMIkEPjXlBUQ7SQGPPA0AnjwHAKg8lApWR2YAIUgBAG5IIAaoTgEAw07wA81SDgD1UqYDTlhuAdZZDQAWWgAAsFuZAGNc7QBqXa4CMmAnAIxgBACqYGEDJWRSBJFoOAHLaQEAzmkAANNpUQAqagMAM2o0AGlqAQB0atkKanVnAEJ2AQCYdlAGBX0BACN9CQRJgRAAdoHLAwiHhAGpiA0A74gAAJqKmQBQi/EAXoy+AjmPKgCcjwQAvY92A1CTcwTglyYB"}],\ +["mavlink_bindgen",{"t":"EFFCONNNNHCNNHNNHNNOOOCONNNNNNHGPPPPNNNNNNNNNNNOOOOOOOOPPPPPPPPPPPPPPPPPFFFFFGGPPPPPPPPPPPONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOONOOONNNNNNNHONNNNNNNNNNNNNNHONNNNNNNOOOOOOOOHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNO","n":["BindGenError","GeneratedBinding","GeneratedBindings","binder","bindings","borrow","borrow","borrow_mut","borrow_mut","emit_cargo_build_messages","error","fmt","fmt","format_generated_code","from","from","generate","into","into","mavlink_xml","mod_rs","module_name","parser","rust_module","try_from","try_from","try_into","try_into","type_id","type_id","generate","BindGenError","CouldNotCreateRustBindingsFile","CouldNotReadDefinitionFile","CouldNotReadDefinitionsDirectory","CouldNotReadDirectoryEntryInDefinitionsDirectory","borrow","borrow_mut","fmt","fmt","from","into","source","to_string","try_from","try_into","type_id","dest_path","path","path","path","source","source","source","source","Array","Char","Deprecated","Description","Dialect","Double","Entry","Enum","Enums","Extensions","Field","Float","Include","Int16","Int32","Int64","Int8","MavEnum","MavEnumEntry","MavField","MavMessage","MavProfile","MavType","MavXmlElement","Mavlink","Message","Messages","Param","UInt16","UInt32","UInt64","UInt8","UInt8MavlinkVersion","Version","Wip","bitfield","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","compare","default","default","default","default","default","default","description","description","description","description","display","emit_default_value","entries","enums","enumtype","eq","eq","eq","eq","eq","eq","eq","extra_crc","fields","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","generate","id","into","into","into","into","into","into","into","is_extension","mavtype","messages","name","name","name","name","params","parse_profile","primitive_type","rust_primitive_type","rust_reader","rust_type","rust_writer","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","value"],"q":[[0,"mavlink_bindgen"],[30,"mavlink_bindgen::binder"],[31,"mavlink_bindgen::error"],[47,"mavlink_bindgen::error::BindGenError"],[55,"mavlink_bindgen::parser"],[210,"core::fmt"],[211,"core::result"],[212,"std::path"],[213,"core::convert"],[214,"core::any"],[215,"alloc::vec"],[216,"std::io"],[217,"core::error"],[218,"core::option"],[219,"alloc::string"],[220,"core::cmp"],[221,"proc_macro2"],[222,"std::collections::hash::set"]],"i":[0,0,0,0,1,3,1,3,1,0,0,3,1,0,3,1,0,3,1,3,1,3,0,3,3,1,3,1,3,1,0,0,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,31,32,33,34,32,33,34,31,22,22,23,23,23,22,23,23,23,23,23,22,23,22,22,22,22,0,0,0,0,0,0,0,23,23,23,23,22,22,22,22,22,23,23,18,17,18,19,20,21,22,23,17,18,19,20,21,22,23,17,18,19,20,21,22,23,17,18,19,20,21,22,23,22,17,18,19,20,21,22,18,19,20,21,21,22,18,17,21,17,18,19,20,21,22,23,0,20,17,18,19,20,21,22,23,17,18,19,20,21,22,23,0,20,17,18,19,20,21,22,23,21,21,17,18,19,20,21,19,0,22,22,22,22,22,17,18,19,20,21,22,23,17,18,19,20,21,22,23,17,18,19,20,21,22,23,17,18,19,20,21,22,23,19],"f":"`````{ce{}{}}000{bd}`{{fh}j}{{bh}j}2{cc{}}0{{ce}{{n{bl}}}{{Ab{A`}}}{{Ab{A`}}}}55`````{c{{n{e}}}{}{}}000{cAd{}}0{{{Ah{Af}}c}dAj}`````88{{lh}j}059{l{{An{Al}}}}{cB`{}}554````````````````````````````````````````````;;;;;;;;;;;;;;{BbBb}{BdBd}{BfBf}{BhBh}{BjBj}{BlBl}{BnBn}{{ce}d{}{}}000000{{BlBl}C`}{{}Bb}{{}Bd}{{}Bf}{{}Bh}{{}Bj}{{}Bl}`````{BlCb}```{{BbBb}Cd}{{BdBd}Cd}{{BfBf}Cd}{{BhBh}Cd}{{BjBj}Cd}{{BlBl}Cd}{{BnBn}Cd}{BhCf}`{{Bbh}j}{{Bdh}j}{{Bfh}j}{{Bhh}j}{{Bjh}j}{{Blh}j}{{Bnh}j}{cc{}}000000{{A`A`c}{{n{dl}}}Aj}`{ce{}{}}000000````````{{A`A`{Cj{Ch}}}{{n{Bbl}}}}{BlB`}0{{BlCbCl}Cb}103333333{c{{n{e}}}{}{}}0000000000000{cAd{}}000000`","D":"Db","p":[[5,"GeneratedBindings",0],[1,"unit"],[5,"GeneratedBinding",0],[5,"Formatter",210],[8,"Result",210],[6,"BindGenError",31],[6,"Result",211],[5,"Path",212],[10,"AsRef",213],[5,"TypeId",214],[1,"str"],[5,"Vec",215],[10,"Write",216],[10,"Error",217],[6,"Option",218],[5,"String",219],[5,"MavProfile",55],[5,"MavEnum",55],[5,"MavEnumEntry",55],[5,"MavMessage",55],[5,"MavField",55],[6,"MavType",55],[6,"MavXmlElement",55],[6,"Ordering",220],[5,"TokenStream",221],[1,"bool"],[1,"u8"],[5,"PathBuf",212],[5,"HashSet",222],[5,"Ident",221],[15,"CouldNotCreateRustBindingsFile",47],[15,"CouldNotReadDefinitionsDirectory",47],[15,"CouldNotReadDefinitionFile",47],[15,"CouldNotReadDirectoryEntryInDefinitionsDirectory",47]],"r":[[0,31]],"b":[[38,"impl-Display-for-BindGenError"],[39,"impl-Debug-for-BindGenError"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAALEACwAAAA4AEQAAABQADAAlAAMAKwAvAFwAGwB5ABUAkAAHAKAAAACoAAgAtgAcAA=="}],\ ["mavlink_core",{"t":"TTTFFSSSKFFGKRKTPPNNNNNNNNNNCCHNNNNNNNNNNNNNNNOHNNNMMNNNNNNCMNNNNNNNNNNMNNNNNONNNNNNMNNMMONNMNNNNCONNHHHHHMNNMNNNNNNOMMNNNNNNNNMNNONNNNNNNNNNNNNNNNNNNNCHHHFNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNNNNNNPPPPGGPGPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOFNNNNNNNNNNNNNNH","n":["ENCODED_LEN","EXTRA_CRC","ID","MAVLinkV1MessageRaw","MAVLinkV2MessageRaw","MAV_STX","MAV_STX_V2","MAX_FRAME_SIZE","MavConnection","MavFrame","MavHeader","MavlinkVersion","Message","Message","MessageData","NAME","V1","V2","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","bytes","bytes_mut","calculate_crc","checksum","checksum","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","compatibility_flags","component_id","component_id","component_id","connect","default","default","default","default_message_from_id","deser","deser","deserialize","eq","eq","eq","eq","error","extra_crc","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","get_protocol_version","has_valid_crc","has_valid_crc","header","header","header","header","incompatibility_flags","into","into","into","into","into","message_id","message_id","message_id","message_id_from_name","message_name","msg","new","new","parse","payload","payload","payload_length","payload_length","peek_reader","protocol_version","raw_bytes","raw_bytes","read_v1_msg","read_v1_raw_message","read_v2_msg","read_v2_raw_message","read_versioned_msg","recv","recv_frame","recv_frame","send","send_default","send_default","send_frame","send_frame","sequence","sequence","sequence","ser","ser","ser","serialize","serialize","serialize","serialize_message","serialize_message","serialize_message_data","serialize_message_data","set_protocol_version","system_id","system_id","system_id","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","utils","write_v1_msg","write_v2_msg","write_versioned_msg","Bytes","borrow","borrow_mut","from","get_array","get_bytes","get_f32_le","get_f64_le","get_i16_le","get_i24_le","get_i32_le","get_i64_le","get_i8","get_u16_le","get_u24_le","get_u32_le","get_u64_le","get_u8","into","new","remaining_bytes","try_from","try_into","type_id","BytesMut","borrow","borrow_mut","from","into","is_empty","len","new","put_f32_le","put_f64_le","put_i16_le","put_i24_le","put_i32_le","put_i64_le","put_i8","put_slice","put_u16_le","put_u24_le","put_u32_le","put_u64_le","put_u8","remaining","try_from","try_into","type_id","InvalidEnum","InvalidFlag","Io","Io","MessageReadError","MessageWriteError","Parse","ParserError","UnknownMessage","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","into","into","into","to_string","to_string","to_string","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","enum_type","flag_type","id","value","value","PeekReader","borrow","borrow_mut","consume","from","into","new","peek_exact","read_exact","read_u8","reader_mut","reader_ref","try_from","try_into","type_id","remove_trailing_zeroes"],"q":[[0,"mavlink_core"],[155,"mavlink_core::bytes"],[179,"mavlink_core::bytes_mut"],[204,"mavlink_core::error"],[246,"mavlink_core::error::ParserError"],[251,"mavlink_core::peek_reader"],[266,"mavlink_core::utils"],[267,"core::clone"],[268,"mavlink_core::connection"],[269,"alloc::boxed"],[270,"std::io::error"],[271,"core::result"],[272,"serde::de"],[273,"core::fmt"],[274,"std::io"],[275,"serde::ser"],[276,"core::any"],[277,"alloc::string"]],"i":[19,19,19,0,0,0,0,0,0,0,0,0,0,19,0,19,7,7,6,7,8,4,5,6,7,8,4,5,0,0,0,4,5,6,7,8,4,5,6,7,8,4,5,5,4,5,6,0,6,4,5,10,19,8,6,6,7,4,5,0,10,6,7,8,4,5,6,7,8,4,5,13,4,5,8,4,5,8,5,6,7,8,4,5,10,4,5,10,10,8,4,5,10,4,5,4,5,0,8,4,5,0,0,0,0,0,13,13,13,13,13,13,13,13,4,5,6,10,19,8,6,7,8,4,5,4,5,13,4,5,6,6,7,8,4,5,6,7,8,4,5,6,7,8,4,5,6,7,8,4,5,0,0,0,0,0,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,0,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,20,20,28,31,0,0,28,0,20,20,28,31,20,28,31,20,20,28,28,31,31,20,28,28,28,31,31,20,28,31,20,28,31,20,28,31,20,28,31,20,28,31,48,49,50,49,48,0,26,26,26,26,26,26,26,26,26,26,26,26,26,26,0],"f":"``````````````````{ce{}{}}000000000``{{{d{b}}b}f}{hf}{jf}{ll}{nn}{{{A`{c}}}{{A`{c}}}{AbAd}}{hh}{jj}{{ce}Af{}{}}0000{jb}{hb}1`{Ah{{An{{Al{Aj}}}}}}{{}l}{{}h}{{}j}{B`{{Bb{AdAh}}}}{{n{d{b}}}{{Bb{{Bf{}{{Bd{c}}}}Bh}}}Ad}{{n{d{b}}}{{Bb{{A`{c}}Bh}}}Ad}{c{{Bb{l}}}Bj}{{ll}Bl}{{nn}Bl}{{hh}Bl}{{jj}Bl}`{B`b}{{lBn}C`}{{nBn}C`}{{{A`{c}}Bn}C`{CbAd}}{{hBn}C`}{{jBn}C`}{cc{}}0000{Ajn}{hBl}{jBl}{{{A`{c}}}lAd}{h{{d{b}}}}{j{{d{b}}}}`{jb}{ce{}{}}0000{AdB`}{hb}{jB`}{Ah{{Bb{B`Ah}}}}{AdAh}`{{}h}{{}j}{{nB`{d{b}}}{{Bb{AdBh}}}};:69``;:{{{Cd{c}}}{{Bb{{Cf{le}}Ch}}}CjAd}{{{Cd{c}}}{{Bb{hCh}}}Cj}1{{{Cd{c}}}{{Bb{jCh}}}Cj}{{{Cd{c}}n}{{Bb{{Cf{le}}Ch}}}CjAd}{Aj{{Bb{{Cf{lc}}Ch}}}Ad}{Aj{{Bb{{A`{c}}Ch}}}Ad}0{{Ajlc}{{Bb{ClCn}}}Ad}{{Ajc}{{Bb{ClCn}}}Ad}0{{Aj{A`{c}}}{{Bb{ClCn}}}Ad}0?{jb}`{{Adn{d{b}}}Cl}{{{Bf{}{{Bd{c}}}}n{d{b}}}ClAd}{{{A`{c}}{d{b}}}ClAd}{{lc}BbD`}{{nc}BbD`}{{{A`{c}}e}Bb{DbAd}D`}{{hlc}AfAd}{{jlc}AfAd}{{hlc}AfBf}{{jlc}AfBf}{{Ajn}Af}{hb}<`{ce{}{}}0000{c{{Bb{e}}}{}{}}000000000{cDd{}}0000`{{cle}{{Bb{ClCn}}}DfAd}0{{cnle}{{Bb{ClCn}}}DfAd}`44{cc{}}{Dh{{Dj{b}}}}{{DhCl}{{d{b}}}}{DhDl}{DhDn}{DhE`}{DhEb}0{DhEd}{DhEf}{Dhf}{DhB`}0{DhEh}{Dhb}{ce{}{}}{{{d{b}}}Dh}{Dh{{d{b}}}}{c{{Bb{e}}}{}{}}0{cDd{}}`44{cc{}}5{EjBl}{EjCl}{{{d{b}}}Ej}{{EjDl}Af}{{EjDn}Af}{{EjE`}Af}{{EjEb}Af}0{{EjEd}Af}{{EjEf}Af}{{Ej{d{b}}}Af}{{Ejf}Af}{{EjB`}Af}0{{EjEh}Af}{{Ejb}Af}<{c{{Bb{e}}}{}{}}0{cDd{}}`````````{ce{}{}}00000{{BhBn}C`}0{{ChBn}C`}0{{CnBn}C`}0{cc{}}{ElCh}{BhCh}22{ElCn}777{cEn{}}00::::::999``````88{{{Cd{c}}Cl}ClCj}59{c{{Cd{c}}}Cj}{{{Cd{c}}Cl}{{Bb{{d{b}}Ch}}}Cj}0{{{Cd{c}}}{{Bb{bCh}}}Cj}{{{Cd{c}}}cCj}0??>{{{d{b}}}Cl}","D":"Gf","p":[[1,"u8"],[1,"slice"],[1,"u16"],[5,"MAVLinkV1MessageRaw",0],[5,"MAVLinkV2MessageRaw",0],[5,"MavHeader",0],[6,"MavlinkVersion",0],[5,"MavFrame",0],[10,"Clone",267],[10,"Message",0],[1,"unit"],[1,"str"],[10,"MavConnection",0,268],[5,"Box",269],[8,"Result",270],[1,"u32"],[6,"Result",271],[17,"Message"],[10,"MessageData",0],[6,"ParserError",204],[10,"Deserializer",272],[1,"bool"],[5,"Formatter",273],[8,"Result",273],[10,"Debug",273],[5,"PeekReader",251],[1,"tuple"],[6,"MessageReadError",204],[10,"Read",274],[1,"usize"],[6,"MessageWriteError",204],[10,"Serializer",275],[10,"Serialize",275],[5,"TypeId",276],[10,"Write",274],[5,"Bytes",155],[1,"array"],[1,"f32"],[1,"f64"],[1,"i16"],[1,"i32"],[1,"i64"],[1,"i8"],[1,"u64"],[5,"BytesMut",179],[5,"Error",270],[5,"String",277],[15,"InvalidEnum",246],[15,"InvalidFlag",246],[15,"UnknownMessage",246]],"r":[[8,268],[47,268]],"b":[[219,"impl-Debug-for-ParserError"],[220,"impl-Display-for-ParserError"],[221,"impl-Debug-for-MessageReadError"],[222,"impl-Display-for-MessageReadError"],[223,"impl-Display-for-MessageWriteError"],[224,"impl-Debug-for-MessageWriteError"],[226,"impl-From%3CError%3E-for-MessageReadError"],[227,"impl-From%3CParserError%3E-for-MessageReadError"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAANAAFgABAAQACAAAAA0AIgAxAAQANwALAEgAAgBMAAMAVQAMAGMAAgBqAAAAcwACAHcAAAB5AB8AnAACAKAADQCvAAcAuQAoAOMAAQDnAAAA6wAQAP0AAQAIAQIA"}],\ ["memchr",{"t":"FFFCNNNNNNNNNNNNNNNNNNNNNNNNNHHHHHHCHHHHHHNNNNNNNNNNNNNNNNNNNNNNNNCCHHHHCCCCCFFFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFKFNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNFFNNNNNNNNNNNNNNNNNNNNNNNNNNCCCCFFFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNCCFFFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNPFFFFFPGNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNHNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["Memchr","Memchr2","Memchr3","arch","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","count","fmt","fmt","fmt","from","from","from","into","into","into","into_iter","into_iter","into_iter","memchr","memchr2","memchr2_iter","memchr3","memchr3_iter","memchr_iter","memmem","memrchr","memrchr2","memrchr2_iter","memrchr3","memrchr3_iter","memrchr_iter","new","new","new","next","next","next","next_back","next_back","next_back","size_hint","size_hint","size_hint","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","all","x86_64","is_equal","is_equal_raw","is_prefix","is_suffix","memchr","packedpair","rabinkarp","shiftor","twoway","One","OneIter","Three","ThreeIter","Two","TwoIter","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","count","count","count_raw","find","find","find","find_raw","find_raw","find_raw","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","into","into","into","into","into","into","into_iter","into_iter","into_iter","iter","iter","iter","new","new","new","next","next","next","next_back","next_back","next_back","rfind","rfind","rfind","rfind_raw","rfind_raw","rfind_raw","size_hint","size_hint","size_hint","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","Finder","HeuristicFrequencyRank","Pair","borrow","borrow","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","find_prefilter","fmt","fmt","from","from","index1","index2","into","into","new","new","pair","rank","to_owned","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","with_indices","with_pair","with_ranker","Finder","FinderRev","borrow","borrow","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","find","find_raw","fmt","fmt","from","from","into","into","new","new","rfind","rfind_raw","to_owned","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","Finder","borrow","borrow_mut","find","fmt","from","into","new","try_from","try_into","type_id","Finder","FinderRev","borrow","borrow","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","find","fmt","fmt","from","from","into","into","new","new","rfind","to_owned","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","avx2","sse2","memchr","packedpair","One","OneIter","Three","ThreeIter","Two","TwoIter","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","count","count","count_raw","find","find","find","find_raw","find_raw","find_raw","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","into","into","into","into","into","into","into_iter","into_iter","into_iter","is_available","is_available","is_available","iter","iter","iter","new","new","new","new_unchecked","new_unchecked","new_unchecked","next","next","next","next_back","next_back","next_back","rfind","rfind","rfind","rfind_raw","rfind_raw","rfind_raw","size_hint","size_hint","size_hint","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","Finder","borrow","borrow_mut","clone","clone_into","find","find_prefilter","fmt","from","into","is_available","min_haystack_len","new","pair","to_owned","try_from","try_into","type_id","with_pair","memchr","packedpair","One","OneIter","Three","ThreeIter","Two","TwoIter","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","count","count","count_raw","find","find","find","find_raw","find_raw","find_raw","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","into","into","into","into","into","into","into_iter","into_iter","into_iter","is_available","is_available","is_available","iter","iter","iter","new","new","new","new_unchecked","new_unchecked","new_unchecked","next","next","next","next_back","next_back","next_back","rfind","rfind","rfind","rfind_raw","rfind_raw","rfind_raw","size_hint","size_hint","size_hint","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","Finder","borrow","borrow_mut","clone","clone_into","find","find_prefilter","fmt","from","into","is_available","min_haystack_len","new","pair","to_owned","try_from","try_into","type_id","with_pair","Auto","FindIter","FindRevIter","Finder","FinderBuilder","FinderRev","None","Prefilter","as_ref","as_ref","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","build_forward","build_forward_with_ranker","build_reverse","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","default","default","find","find","find_iter","find_iter","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","into","into","into","into","into","into","into_iter","into_iter","into_owned","into_owned","into_owned","into_owned","needle","needle","new","new","new","next","next","prefilter","rfind","rfind","rfind_iter","rfind_iter","size_hint","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id"],"q":[[0,"memchr"],[66,"memchr::arch"],[68,"memchr::arch::all"],[77,"memchr::arch::all::memchr"],[182,"memchr::arch::all::packedpair"],[217,"memchr::arch::all::rabinkarp"],[247,"memchr::arch::all::shiftor"],[258,"memchr::arch::all::twoway"],[286,"memchr::arch::x86_64"],[288,"memchr::arch::x86_64::avx2"],[290,"memchr::arch::x86_64::avx2::memchr"],[401,"memchr::arch::x86_64::avx2::packedpair"],[420,"memchr::arch::x86_64::sse2"],[422,"memchr::arch::x86_64::sse2::memchr"],[533,"memchr::arch::x86_64::sse2::packedpair"],[552,"memchr::memmem"],[656,"memchr::memchr"],[657,"core::fmt"],[658,"core::option"],[659,"core::iter::adapters::rev"],[660,"core::result"],[661,"core::any"],[662,"core::marker"],[663,"core::convert"]],"i":[0,0,0,0,1,2,3,1,2,3,1,2,3,1,2,3,1,1,2,3,1,2,3,1,2,3,1,2,3,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,17,18,19,20,21,16,17,18,19,20,21,16,17,18,19,20,21,16,17,18,19,20,21,16,17,16,16,18,20,16,18,20,16,17,18,19,20,21,16,17,18,19,20,21,16,17,18,19,20,21,17,19,21,16,18,20,16,18,20,17,19,21,17,19,21,16,18,20,16,18,20,17,19,21,16,17,18,19,20,21,16,17,18,19,20,21,16,17,18,19,20,21,16,17,18,19,20,21,0,0,0,22,23,22,23,22,23,22,23,22,22,23,22,23,23,23,22,23,22,23,22,24,22,23,22,23,22,23,22,23,23,22,23,0,0,25,26,25,26,25,26,25,26,25,25,25,26,25,26,25,26,25,26,26,26,25,26,25,26,25,26,25,26,0,27,27,27,27,27,27,27,27,27,27,0,0,28,29,28,29,28,29,28,29,28,28,29,28,29,28,29,28,29,29,28,29,28,29,28,29,28,29,0,0,0,0,0,0,0,0,0,0,30,31,32,33,34,35,30,31,32,33,34,35,30,31,32,33,34,35,30,31,32,33,34,35,30,31,30,30,32,34,30,32,34,30,31,32,33,34,35,30,31,32,33,34,35,30,31,32,33,34,35,31,33,35,30,32,34,30,32,34,30,32,34,30,32,34,31,33,35,31,33,35,30,32,34,30,32,34,31,33,35,30,31,32,33,34,35,30,31,32,33,34,35,30,31,32,33,34,35,30,31,32,33,34,35,0,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,0,0,0,0,0,0,0,0,37,38,39,40,41,42,37,38,39,40,41,42,37,38,39,40,41,42,37,38,39,40,41,42,37,38,37,37,39,41,37,39,41,37,38,39,40,41,42,37,38,39,40,41,42,37,38,39,40,41,42,38,40,42,37,39,41,37,39,41,37,39,41,37,39,41,38,40,42,38,40,42,37,39,41,37,39,41,38,40,42,37,38,39,40,41,42,37,38,39,40,41,42,37,38,39,40,41,42,37,38,39,40,41,42,0,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,49,0,0,0,0,0,49,0,44,45,49,50,51,44,45,46,49,50,51,44,45,46,46,46,46,49,50,51,44,45,46,49,50,51,44,45,46,49,46,0,44,0,44,49,50,51,44,45,46,49,50,51,44,45,46,49,50,51,44,45,46,50,51,50,51,44,45,44,45,44,45,46,50,51,46,0,45,0,45,50,49,50,51,44,45,46,49,50,51,44,45,46,49,50,51,44,45,46,49,50,51,44,45,46],"f":"````{ce{}{}}00000{bb}{dd}{ff}{{ce}h{}{}}00{bj}{{bl}n}{{dl}n}{{fl}n}{cc{}}00999999{{A`{Ab{A`}}}{{Ad{j}}}}{{A`A`{Ab{A`}}}{{Ad{j}}}}{{A`A`{Ab{A`}}}d}{{A`A`A`{Ab{A`}}}{{Ad{j}}}}{{A`A`A`{Ab{A`}}}f}{{A`{Ab{A`}}}b}`54{{A`A`{Ab{A`}}}{{Af{d}}}}3{{A`A`A`{Ab{A`}}}{{Af{f}}}}{{A`{Ab{A`}}}{{Af{b}}}}364{b{{Ad{j}}}}{d{{Ad{j}}}}{f{{Ad{j}}}}210{b{{Ah{j{Ad{j}}}}}}{d{{Ah{j{Ad{j}}}}}}{f{{Ah{j{Ad{j}}}}}}{ce{}{}}00{c{{Aj{e}}}{}{}}00000{cAl{}}00``{{{Ab{A`}}{Ab{A`}}}An}{{A`A`j}An}11```````````444444444444{B`B`}{BbBb}{BdBd}{BfBf}{BhBh}{BjBj}{{ce}h{}{}}00000{{B`{Ab{A`}}}j}{Bbj}{{B`A`A`}j}{{B`{Ab{A`}}}{{Ad{j}}}}{{Bd{Ab{A`}}}{{Ad{j}}}}{{Bh{Ab{A`}}}{{Ad{j}}}}{{B`A`A`}{{Ad{A`}}}}{{BdA`A`}{{Ad{A`}}}}{{BhA`A`}{{Ad{A`}}}}{{B`l}n}{{Bbl}n}{{Bdl}n}{{Bfl}n}{{Bhl}n}{{Bjl}n}{cc{}}00000{ce{}{}}00000000{{B`{Ab{A`}}}Bb}{{Bd{Ab{A`}}}Bf}{{Bh{Ab{A`}}}Bj}{A`B`}{{A`A`}Bd}{{A`A`A`}Bh}{Bb{{Ad{j}}}}{Bf{{Ad{j}}}}{Bj{{Ad{j}}}}210{{B`{Ab{A`}}}{{Ad{j}}}}{{Bd{Ab{A`}}}{{Ad{j}}}}{{Bh{Ab{A`}}}{{Ad{j}}}}{{B`A`A`}{{Ad{A`}}}}{{BdA`A`}{{Ad{A`}}}}{{BhA`A`}{{Ad{A`}}}}{Bb{{Ah{j{Ad{j}}}}}}{Bf{{Ah{j{Ad{j}}}}}}{Bj{{Ah{j{Ad{j}}}}}}{ce{}{}}00000{c{{Aj{e}}}{}{}}00000000000{cAl{}}00000```2222{BlBl}{BnBn}{{ce}h{}{}}0{{Bl{Ab{A`}}}{{Ad{j}}}}{{Bll}n}{{Bnl}n}{cc{}}0{BnA`}0::{{{Ab{A`}}}{{Ad{Bl}}}}{{{Ab{A`}}}{{Ad{Bn}}}}{BlBn}{{C`A`}A`}>>====<<{{{Ab{A`}}A`A`}{{Ad{Bn}}}}{{{Ab{A`}}Bn}{{Ad{Bl}}}}{{{Ab{A`}}c}{{Ad{Bn}}}C`}``{ce{}{}}000{CbCb}{CdCd}??{{Cb{Ab{A`}}{Ab{A`}}}{{Ad{j}}}}{{CbA`A`A`A`}{{Ad{A`}}}}{{Cbl}n}{{Cdl}n}??66{{{Ab{A`}}}Cb}{{{Ab{A`}}}Cd}{{Cd{Ab{A`}}{Ab{A`}}}{{Ad{j}}}}{{CdA`A`A`A`}{{Ad{A`}}}}::{c{{Aj{e}}}{}{}}000{cAl{}}0`<<{{Cf{Ab{A`}}}{{Ad{j}}}}{{Cfl}n}{cc{}}?{{{Ab{A`}}}{{Ad{Cf}}}}554``{ce{}{}}000{ChCh}{CjCj}{{ce}h{}{}}0{{Ch{Ab{A`}}{Ab{A`}}}{{Ad{j}}}}{{Chl}n}{{Cjl}n}8866{{{Ab{A`}}}Ch}{{{Ab{A`}}}Cj}{{Cj{Ab{A`}}{Ab{A`}}}{{Ad{j}}}}99????>>``````````999999999999{ClCl}{CnCn}{D`D`}{DbDb}{DdDd}{DfDf}<<<<<<{{Cl{Ab{A`}}}j}{Cnj}{{ClA`A`}j}{{Cl{Ab{A`}}}{{Ad{j}}}}{{D`{Ab{A`}}}{{Ad{j}}}}{{Dd{Ab{A`}}}{{Ad{j}}}}{{ClA`A`}{{Ad{A`}}}}{{D`A`A`}{{Ad{A`}}}}{{DdA`A`}{{Ad{A`}}}}{{Cll}n}{{Cnl}n}{{D`l}n}{{Dbl}n}{{Ddl}n}{{Dfl}n}{cc{}}00000{ce{}{}}00000000{{}An}00{{Cl{Ab{A`}}}Cn}{{D`{Ab{A`}}}Db}{{Dd{Ab{A`}}}Df}{A`{{Ad{Cl}}}}{{A`A`}{{Ad{D`}}}}{{A`A`A`}{{Ad{Dd}}}}{A`Cl}{{A`A`}D`}{{A`A`A`}Dd}{Cn{{Ad{j}}}}{Db{{Ad{j}}}}{Df{{Ad{j}}}}210{{Cl{Ab{A`}}}{{Ad{j}}}}{{D`{Ab{A`}}}{{Ad{j}}}}{{Dd{Ab{A`}}}{{Ad{j}}}}{{ClA`A`}{{Ad{A`}}}}{{D`A`A`}{{Ad{A`}}}}{{DdA`A`}{{Ad{A`}}}}{Cn{{Ah{j{Ad{j}}}}}}{Db{{Ah{j{Ad{j}}}}}}{Df{{Ah{j{Ad{j}}}}}}{ce{}{}}00000{c{{Aj{e}}}{}{}}00000000000{cAl{}}00000`22{DhDh}{{ce}h{}{}}{{Dh{Ab{A`}}{Ab{A`}}}{{Ad{j}}}}{{Dh{Ab{A`}}}{{Ad{j}}}}{{Dhl}n}{cc{}}8{{}An}{Dhj}{{{Ab{A`}}}{{Ad{Dh}}}}{DhBn}<;;:{{{Ab{A`}}Bn}{{Ad{Dh}}}}````````============{DjDj}{DlDl}{DnDn}{E`E`}{EbEb}{EdEd}??????{{Dj{Ab{A`}}}j}{Dlj}{{DjA`A`}j}{{Dj{Ab{A`}}}{{Ad{j}}}}{{Dn{Ab{A`}}}{{Ad{j}}}}{{Eb{Ab{A`}}}{{Ad{j}}}}{{DjA`A`}{{Ad{A`}}}}{{DnA`A`}{{Ad{A`}}}}{{EbA`A`}{{Ad{A`}}}}{{Djl}n}{{Dll}n}{{Dnl}n}{{E`l}n}{{Ebl}n}{{Edl}n}{cc{}}00000{ce{}{}}00000000{{}An}00{{Dj{Ab{A`}}}Dl}{{Dn{Ab{A`}}}E`}{{Eb{Ab{A`}}}Ed}{A`{{Ad{Dj}}}}{{A`A`}{{Ad{Dn}}}}{{A`A`A`}{{Ad{Eb}}}}{A`Dj}{{A`A`}Dn}{{A`A`A`}Eb}{Dl{{Ad{j}}}}{E`{{Ad{j}}}}{Ed{{Ad{j}}}}210{{Dj{Ab{A`}}}{{Ad{j}}}}{{Dn{Ab{A`}}}{{Ad{j}}}}{{Eb{Ab{A`}}}{{Ad{j}}}}{{DjA`A`}{{Ad{A`}}}}{{DnA`A`}{{Ad{A`}}}}{{EbA`A`}{{Ad{A`}}}}{Dl{{Ah{j{Ad{j}}}}}}{E`{{Ah{j{Ad{j}}}}}}{Ed{{Ah{j{Ad{j}}}}}}{ce{}{}}00000{c{{Aj{e}}}{}{}}00000000000{cAl{}}00000`22{EfEf}{{ce}h{}{}}{{Ef{Ab{A`}}{Ab{A`}}}{{Ad{j}}}}{{Ef{Ab{A`}}}{{Ad{j}}}}{{Efl}n}{cc{}}8{{}An}{Efj}{{{Ab{A`}}}{{Ad{Ef}}}}{EfBn}<;;:{{{Ab{A`}}Bn}{{Ad{Ef}}}}````````{EhEh}{EjEj}????????????{{Elc}Eh{En{F`{{Ab{A`}}}}}}{{Elce}EhC`{En{F`{{Ab{A`}}}}}}{{Elc}Ej{En{F`{{Ab{A`}}}}}}{FbFb}{FdFd}{FfFf}76{ElEl}{{ce}h{}{}}00000{{}Fb}{{}El}{{{Ab{A`}}{Ab{A`}}}{{Ad{j}}}}{{Eh{Ab{A`}}}{{Ad{j}}}}{{{Ab{A`}}c}Fd{En{F`{{Ab{A`}}}}}}{{Eh{Ab{A`}}}Fd}{{Fbl}n}{{Fdl}n}{{Ffl}n}{{Ehl}n}{{Ejl}n}{{Ell}n}{cc{}}00000{ce{}{}}0000000{FdFd}{FfFf}{EhEh}{EjEj}{Eh{{Ab{A`}}}}{Ej{{Ab{A`}}}}{cEh{En{F`{{Ab{A`}}}}}}{cEj{En{F`{{Ab{A`}}}}}}{{}El}{Fd{{Ad{j}}}}{Ff{{Ad{j}}}}{{ElFb}El}{{{Ab{A`}}{Ab{A`}}}{{Ad{j}}}}{{Ejc}{{Ad{j}}}{{F`{{Ab{A`}}}}}}{{{Ab{A`}}c}Ff{En{F`{{Ab{A`}}}}}}{{Ej{Ab{A`}}}Ff}{Fd{{Ah{j{Ad{j}}}}}}{ce{}{}}00000{c{{Aj{e}}}{}{}}00000000000{cAl{}}00000","D":"BBj","p":[[5,"Memchr",0,656],[5,"Memchr2",0,656],[5,"Memchr3",0,656],[1,"unit"],[1,"usize"],[5,"Formatter",657],[8,"Result",657],[1,"u8"],[1,"slice"],[6,"Option",658],[5,"Rev",659],[1,"tuple"],[6,"Result",660],[5,"TypeId",661],[1,"bool"],[5,"One",77],[5,"OneIter",77],[5,"Two",77],[5,"TwoIter",77],[5,"Three",77],[5,"ThreeIter",77],[5,"Finder",182],[5,"Pair",182],[10,"HeuristicFrequencyRank",182],[5,"Finder",217],[5,"FinderRev",217],[5,"Finder",247],[5,"Finder",258],[5,"FinderRev",258],[5,"One",290],[5,"OneIter",290],[5,"Two",290],[5,"TwoIter",290],[5,"Three",290],[5,"ThreeIter",290],[5,"Finder",401],[5,"One",422],[5,"OneIter",422],[5,"Two",422],[5,"TwoIter",422],[5,"Three",422],[5,"ThreeIter",422],[5,"Finder",533],[5,"Finder",552],[5,"FinderRev",552],[5,"FinderBuilder",552],[10,"Sized",662],[10,"AsRef",663],[6,"Prefilter",552],[5,"FindIter",552],[5,"FindRevIter",552]],"r":[[0,656],[1,656],[2,656],[29,656],[30,656],[31,656],[32,656],[33,656],[34,656],[36,656],[37,656],[38,656],[39,656],[40,656],[41,656]],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAHsBLQAFAA8AGwACAC4AFABUABcAbQAAAHUABQCHAAIAkAAFAJwAGgC6AAcAwwABAM8ABwDcAAcA5gABAPAABwD5AAEA/AAAAAABAgAFAQcADgEBABcBBwApARcAQgEAAEoBBQBcAQIAawEFAHcBGgCTAQMAmQEAAKABAwCtARcAxgEAAM4BBQDgAQIA7wEFAPsBGgAXAgMAHQIAACQCAwAzAgsAQgINAFQCBQBmAgEAcQIBAHgCGAA="}],\ ["num_derive",{"t":"YYYYYYYY","n":["Float","FromPrimitive","Num","NumCast","NumOps","One","ToPrimitive","Zero"],"q":[[0,"num_derive"]],"i":[0,0,0,0,0,0,0,0],"f":"````````","D":"Ab","p":[],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAAAAAA="}],\ diff --git a/search.desc/mavlink_bindgen/mavlink_bindgen-desc-0-.js b/search.desc/mavlink_bindgen/mavlink_bindgen-desc-0-.js index 20d3b00ae1..3dd014ccdc 100644 --- a/search.desc/mavlink_bindgen/mavlink_bindgen-desc-0-.js +++ b/search.desc/mavlink_bindgen/mavlink_bindgen-desc-0-.js @@ -1 +1 @@ -searchState.loadedDescShard("mavlink_bindgen", 0, "Returns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nRepresents a failure to create a Rust file for the …\nRepresents a failure to read the MAVLink definitions …\nRepresents a failure to read a directory entry in the …\nReturns the argument unchanged.\nCalls U::from(self).\nIf contains Some, the string represents the type witdh for …\nCompare two MavTypes\nCRC operates over names of the message and names of its …\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nGenerate protobuf represenation of mavlink message set …\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nUsed for crc calculation\nReturn rust equivalent of the primitive type of a MavType. …\nEmit reader of a given type\nReturn rust equivalent of a given Mavtype Used for …\nEmit writer of a given type") \ No newline at end of file +searchState.loadedDescShard("mavlink_bindgen", 0, "Returns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nRepresents a failure to create a Rust file for the …\nRepresents a failure to read the MAVLink definitions …\nRepresents a failure to read the MAVLink definitions …\nRepresents a failure to read a directory entry in the …\nReturns the argument unchanged.\nCalls U::from(self).\nIf contains Some, the string represents the type witdh for …\nCompare two MavTypes\nCRC operates over names of the message and names of its …\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nGenerate protobuf represenation of mavlink message set …\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nUsed for crc calculation\nReturn rust equivalent of the primitive type of a MavType. …\nEmit reader of a given type\nReturn rust equivalent of a given Mavtype Used for …\nEmit writer of a given type") \ No newline at end of file diff --git a/src/mavlink/home/runner/work/rust-mavlink/rust-mavlink/target/debug/build/mavlink-08cb26f928ee1368/out/ardupilotmega.rs.html b/src/mavlink/home/runner/work/rust-mavlink/rust-mavlink/target/debug/build/mavlink-08cb26f928ee1368/out/ardupilotmega.rs.html index 673aaf0b56..9ebb33bc12 100644 --- a/src/mavlink/home/runner/work/rust-mavlink/rust-mavlink/target/debug/build/mavlink-08cb26f928ee1368/out/ardupilotmega.rs.html +++ b/src/mavlink/home/runner/work/rust-mavlink/rust-mavlink/target/debug/build/mavlink-08cb26f928ee1368/out/ardupilotmega.rs.html @@ -1,3 +1,3 @@ ardupilotmega.rs - source
      1
      -
      # ! [doc = "This file was automatically generated, do not edit"] # [allow (unused_imports)] use num_derive :: FromPrimitive ; # [allow (unused_imports)] use num_traits :: FromPrimitive ; # [allow (unused_imports)] use num_derive :: ToPrimitive ; # [allow (unused_imports)] use num_traits :: ToPrimitive ; # [allow (unused_imports)] use bitflags :: bitflags ; use mavlink_core :: { MavlinkVersion , Message , MessageData , bytes :: Bytes , bytes_mut :: BytesMut } ; # [cfg (feature = "serde")] use serde :: { Serialize , Deserialize } ; # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavBatteryFunction { MAV_BATTERY_FUNCTION_UNKNOWN = 0 , MAV_BATTERY_FUNCTION_ALL = 1 , MAV_BATTERY_FUNCTION_PROPULSION = 2 , MAV_BATTERY_FUNCTION_AVIONICS = 3 , MAV_BATTERY_FUNCTION_PAYLOAD = 4 , } impl MavBatteryFunction { pub const DEFAULT : Self = Self :: MAV_BATTERY_FUNCTION_UNKNOWN ; } impl Default for MavBatteryFunction { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum GoproProtuneExposure { GOPRO_PROTUNE_EXPOSURE_NEG_5_0 = 0 , GOPRO_PROTUNE_EXPOSURE_NEG_4_5 = 1 , GOPRO_PROTUNE_EXPOSURE_NEG_4_0 = 2 , GOPRO_PROTUNE_EXPOSURE_NEG_3_5 = 3 , GOPRO_PROTUNE_EXPOSURE_NEG_3_0 = 4 , GOPRO_PROTUNE_EXPOSURE_NEG_2_5 = 5 , GOPRO_PROTUNE_EXPOSURE_NEG_2_0 = 6 , GOPRO_PROTUNE_EXPOSURE_NEG_1_5 = 7 , GOPRO_PROTUNE_EXPOSURE_NEG_1_0 = 8 , GOPRO_PROTUNE_EXPOSURE_NEG_0_5 = 9 , GOPRO_PROTUNE_EXPOSURE_ZERO = 10 , GOPRO_PROTUNE_EXPOSURE_POS_0_5 = 11 , GOPRO_PROTUNE_EXPOSURE_POS_1_0 = 12 , GOPRO_PROTUNE_EXPOSURE_POS_1_5 = 13 , GOPRO_PROTUNE_EXPOSURE_POS_2_0 = 14 , GOPRO_PROTUNE_EXPOSURE_POS_2_5 = 15 , GOPRO_PROTUNE_EXPOSURE_POS_3_0 = 16 , GOPRO_PROTUNE_EXPOSURE_POS_3_5 = 17 , GOPRO_PROTUNE_EXPOSURE_POS_4_0 = 18 , GOPRO_PROTUNE_EXPOSURE_POS_4_5 = 19 , GOPRO_PROTUNE_EXPOSURE_POS_5_0 = 20 , } impl GoproProtuneExposure { pub const DEFAULT : Self = Self :: GOPRO_PROTUNE_EXPOSURE_NEG_5_0 ; } impl Default for GoproProtuneExposure { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavAutopilot { MAV_AUTOPILOT_GENERIC = 0 , MAV_AUTOPILOT_RESERVED = 1 , MAV_AUTOPILOT_SLUGS = 2 , MAV_AUTOPILOT_ARDUPILOTMEGA = 3 , MAV_AUTOPILOT_OPENPILOT = 4 , MAV_AUTOPILOT_GENERIC_WAYPOINTS_ONLY = 5 , MAV_AUTOPILOT_GENERIC_WAYPOINTS_AND_SIMPLE_NAVIGATION_ONLY = 6 , MAV_AUTOPILOT_GENERIC_MISSION_FULL = 7 , MAV_AUTOPILOT_INVALID = 8 , MAV_AUTOPILOT_PPZ = 9 , MAV_AUTOPILOT_UDB = 10 , MAV_AUTOPILOT_FP = 11 , MAV_AUTOPILOT_PX4 = 12 , MAV_AUTOPILOT_SMACCMPILOT = 13 , MAV_AUTOPILOT_AUTOQUAD = 14 , MAV_AUTOPILOT_ARMAZILA = 15 , MAV_AUTOPILOT_AEROB = 16 , MAV_AUTOPILOT_ASLUAV = 17 , MAV_AUTOPILOT_SMARTAP = 18 , MAV_AUTOPILOT_AIRRAILS = 19 , MAV_AUTOPILOT_REFLEX = 20 , } impl MavAutopilot { pub const DEFAULT : Self = Self :: MAV_AUTOPILOT_GENERIC ; } impl Default for MavAutopilot { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum SubMode { SUB_MODE_STABILIZE = 0 , SUB_MODE_ACRO = 1 , SUB_MODE_ALT_HOLD = 2 , SUB_MODE_AUTO = 3 , SUB_MODE_GUIDED = 4 , SUB_MODE_CIRCLE = 7 , SUB_MODE_SURFACE = 9 , SUB_MODE_POSHOLD = 16 , SUB_MODE_MANUAL = 19 , } impl SubMode { pub const DEFAULT : Self = Self :: SUB_MODE_STABILIZE ; } impl Default for SubMode { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum SetFocusType { FOCUS_TYPE_STEP = 0 , FOCUS_TYPE_CONTINUOUS = 1 , FOCUS_TYPE_RANGE = 2 , FOCUS_TYPE_METERS = 3 , FOCUS_TYPE_AUTO = 4 , FOCUS_TYPE_AUTO_SINGLE = 5 , FOCUS_TYPE_AUTO_CONTINUOUS = 6 , } impl SetFocusType { pub const DEFAULT : Self = Self :: FOCUS_TYPE_STEP ; } impl Default for SetFocusType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidOperatorIdType { MAV_ODID_OPERATOR_ID_TYPE_CAA = 0 , } impl MavOdidOperatorIdType { pub const DEFAULT : Self = Self :: MAV_ODID_OPERATOR_ID_TYPE_CAA ; } impl Default for MavOdidOperatorIdType { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MavWinchStatusFlag : u32 { const MAV_WINCH_STATUS_HEALTHY = 1 ; const MAV_WINCH_STATUS_FULLY_RETRACTED = 2 ; const MAV_WINCH_STATUS_MOVING = 4 ; const MAV_WINCH_STATUS_CLUTCH_ENGAGED = 8 ; const MAV_WINCH_STATUS_LOCKED = 16 ; const MAV_WINCH_STATUS_DROPPING = 32 ; const MAV_WINCH_STATUS_ARRESTING = 64 ; const MAV_WINCH_STATUS_GROUND_SENSE = 128 ; const MAV_WINCH_STATUS_RETRACTING = 256 ; const MAV_WINCH_STATUS_REDELIVER = 512 ; const MAV_WINCH_STATUS_ABANDON_LINE = 1024 ; const MAV_WINCH_STATUS_LOCKING = 2048 ; const MAV_WINCH_STATUS_LOAD_LINE = 4096 ; const MAV_WINCH_STATUS_LOAD_PAYLOAD = 8192 ; } } impl MavWinchStatusFlag { pub const DEFAULT : Self = Self :: MAV_WINCH_STATUS_HEALTHY ; } impl Default for MavWinchStatusFlag { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum UavcanNodeHealth { UAVCAN_NODE_HEALTH_OK = 0 , UAVCAN_NODE_HEALTH_WARNING = 1 , UAVCAN_NODE_HEALTH_ERROR = 2 , UAVCAN_NODE_HEALTH_CRITICAL = 3 , } impl UavcanNodeHealth { pub const DEFAULT : Self = Self :: UAVCAN_NODE_HEALTH_OK ; } impl Default for UavcanNodeHealth { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GoproHeartbeatFlags : u8 { const GOPRO_FLAG_RECORDING = 1 ; } } impl GoproHeartbeatFlags { pub const DEFAULT : Self = Self :: GOPRO_FLAG_RECORDING ; } impl Default for GoproHeartbeatFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum FenceMitigate { FENCE_MITIGATE_UNKNOWN = 0 , FENCE_MITIGATE_NONE = 1 , FENCE_MITIGATE_VEL_LIMIT = 2 , } impl FenceMitigate { pub const DEFAULT : Self = Self :: FENCE_MITIGATE_UNKNOWN ; } impl Default for FenceMitigate { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CameraCapFlags : u32 { const CAMERA_CAP_FLAGS_CAPTURE_VIDEO = 1 ; const CAMERA_CAP_FLAGS_CAPTURE_IMAGE = 2 ; const CAMERA_CAP_FLAGS_HAS_MODES = 4 ; const CAMERA_CAP_FLAGS_CAN_CAPTURE_IMAGE_IN_VIDEO_MODE = 8 ; const CAMERA_CAP_FLAGS_CAN_CAPTURE_VIDEO_IN_IMAGE_MODE = 16 ; const CAMERA_CAP_FLAGS_HAS_IMAGE_SURVEY_MODE = 32 ; const CAMERA_CAP_FLAGS_HAS_BASIC_ZOOM = 64 ; const CAMERA_CAP_FLAGS_HAS_BASIC_FOCUS = 128 ; const CAMERA_CAP_FLAGS_HAS_VIDEO_STREAM = 256 ; const CAMERA_CAP_FLAGS_HAS_TRACKING_POINT = 512 ; const CAMERA_CAP_FLAGS_HAS_TRACKING_RECTANGLE = 1024 ; const CAMERA_CAP_FLAGS_HAS_TRACKING_GEO_STATUS = 2048 ; } } impl CameraCapFlags { pub const DEFAULT : Self = Self :: CAMERA_CAP_FLAGS_CAPTURE_VIDEO ; } impl Default for CameraCapFlags { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MavEventCurrentSequenceFlags : u8 { const MAV_EVENT_CURRENT_SEQUENCE_FLAGS_RESET = 1 ; } } impl MavEventCurrentSequenceFlags { pub const DEFAULT : Self = Self :: MAV_EVENT_CURRENT_SEQUENCE_FLAGS_RESET ; } impl Default for MavEventCurrentSequenceFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum CameraTrackingTargetData { CAMERA_TRACKING_TARGET_DATA_NONE = 0 , CAMERA_TRACKING_TARGET_DATA_EMBEDDED = 1 , CAMERA_TRACKING_TARGET_DATA_RENDERED = 2 , CAMERA_TRACKING_TARGET_DATA_IN_STATUS = 4 , } impl CameraTrackingTargetData { pub const DEFAULT : Self = Self :: CAMERA_TRACKING_TARGET_DATA_NONE ; } impl Default for CameraTrackingTargetData { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum AdsbEmitterType { ADSB_EMITTER_TYPE_NO_INFO = 0 , ADSB_EMITTER_TYPE_LIGHT = 1 , ADSB_EMITTER_TYPE_SMALL = 2 , ADSB_EMITTER_TYPE_LARGE = 3 , ADSB_EMITTER_TYPE_HIGH_VORTEX_LARGE = 4 , ADSB_EMITTER_TYPE_HEAVY = 5 , ADSB_EMITTER_TYPE_HIGHLY_MANUV = 6 , ADSB_EMITTER_TYPE_ROTOCRAFT = 7 , ADSB_EMITTER_TYPE_UNASSIGNED = 8 , ADSB_EMITTER_TYPE_GLIDER = 9 , ADSB_EMITTER_TYPE_LIGHTER_AIR = 10 , ADSB_EMITTER_TYPE_PARACHUTE = 11 , ADSB_EMITTER_TYPE_ULTRA_LIGHT = 12 , ADSB_EMITTER_TYPE_UNASSIGNED2 = 13 , ADSB_EMITTER_TYPE_UAV = 14 , ADSB_EMITTER_TYPE_SPACE = 15 , ADSB_EMITTER_TYPE_UNASSGINED3 = 16 , ADSB_EMITTER_TYPE_EMERGENCY_SURFACE = 17 , ADSB_EMITTER_TYPE_SERVICE_SURFACE = 18 , ADSB_EMITTER_TYPE_POINT_OBSTACLE = 19 , } impl AdsbEmitterType { pub const DEFAULT : Self = Self :: ADSB_EMITTER_TYPE_NO_INFO ; } impl Default for AdsbEmitterType { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MavPowerStatus : u16 { const MAV_POWER_STATUS_BRICK_VALID = 1 ; const MAV_POWER_STATUS_SERVO_VALID = 2 ; const MAV_POWER_STATUS_USB_CONNECTED = 4 ; const MAV_POWER_STATUS_PERIPH_OVERCURRENT = 8 ; const MAV_POWER_STATUS_PERIPH_HIPOWER_OVERCURRENT = 16 ; const MAV_POWER_STATUS_CHANGED = 32 ; } } impl MavPowerStatus { pub const DEFAULT : Self = Self :: MAV_POWER_STATUS_BRICK_VALID ; } impl Default for MavPowerStatus { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum OsdParamConfigError { OSD_PARAM_SUCCESS = 0 , OSD_PARAM_INVALID_SCREEN = 1 , OSD_PARAM_INVALID_PARAMETER_INDEX = 2 , OSD_PARAM_INVALID_PARAMETER = 3 , } impl OsdParamConfigError { pub const DEFAULT : Self = Self :: OSD_PARAM_SUCCESS ; } impl Default for OsdParamConfigError { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavLandedState { MAV_LANDED_STATE_UNDEFINED = 0 , MAV_LANDED_STATE_ON_GROUND = 1 , MAV_LANDED_STATE_IN_AIR = 2 , MAV_LANDED_STATE_TAKEOFF = 3 , MAV_LANDED_STATE_LANDING = 4 , } impl MavLandedState { pub const DEFAULT : Self = Self :: MAV_LANDED_STATE_UNDEFINED ; } impl Default for MavLandedState { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidAuthType { MAV_ODID_AUTH_TYPE_NONE = 0 , MAV_ODID_AUTH_TYPE_UAS_ID_SIGNATURE = 1 , MAV_ODID_AUTH_TYPE_OPERATOR_ID_SIGNATURE = 2 , MAV_ODID_AUTH_TYPE_MESSAGE_SET_SIGNATURE = 3 , MAV_ODID_AUTH_TYPE_NETWORK_REMOTE_ID = 4 , MAV_ODID_AUTH_TYPE_SPECIFIC_AUTHENTICATION = 5 , } impl MavOdidAuthType { pub const DEFAULT : Self = Self :: MAV_ODID_AUTH_TYPE_NONE ; } impl Default for MavOdidAuthType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavRemoteLogDataBlockStatuses { MAV_REMOTE_LOG_DATA_BLOCK_NACK = 0 , MAV_REMOTE_LOG_DATA_BLOCK_ACK = 1 , } impl MavRemoteLogDataBlockStatuses { pub const DEFAULT : Self = Self :: MAV_REMOTE_LOG_DATA_BLOCK_NACK ; } impl Default for MavRemoteLogDataBlockStatuses { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidOperatorLocationType { MAV_ODID_OPERATOR_LOCATION_TYPE_TAKEOFF = 0 , MAV_ODID_OPERATOR_LOCATION_TYPE_LIVE_GNSS = 1 , MAV_ODID_OPERATOR_LOCATION_TYPE_FIXED = 2 , } impl MavOdidOperatorLocationType { pub const DEFAULT : Self = Self :: MAV_ODID_OPERATOR_LOCATION_TYPE_TAKEOFF ; } impl Default for MavOdidOperatorLocationType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavMountMode { MAV_MOUNT_MODE_RETRACT = 0 , MAV_MOUNT_MODE_NEUTRAL = 1 , MAV_MOUNT_MODE_MAVLINK_TARGETING = 2 , MAV_MOUNT_MODE_RC_TARGETING = 3 , MAV_MOUNT_MODE_GPS_POINT = 4 , MAV_MOUNT_MODE_SYSID_TARGET = 5 , MAV_MOUNT_MODE_HOME_LOCATION = 6 , } impl MavMountMode { pub const DEFAULT : Self = Self :: MAV_MOUNT_MODE_RETRACT ; } impl Default for MavMountMode { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct EstimatorStatusFlags : u16 { const ESTIMATOR_ATTITUDE = 1 ; const ESTIMATOR_VELOCITY_HORIZ = 2 ; const ESTIMATOR_VELOCITY_VERT = 4 ; const ESTIMATOR_POS_HORIZ_REL = 8 ; const ESTIMATOR_POS_HORIZ_ABS = 16 ; const ESTIMATOR_POS_VERT_ABS = 32 ; const ESTIMATOR_POS_VERT_AGL = 64 ; const ESTIMATOR_CONST_POS_MODE = 128 ; const ESTIMATOR_PRED_POS_HORIZ_REL = 256 ; const ESTIMATOR_PRED_POS_HORIZ_ABS = 512 ; const ESTIMATOR_GPS_GLITCH = 1024 ; const ESTIMATOR_ACCEL_ERROR = 2048 ; } } impl EstimatorStatusFlags { pub const DEFAULT : Self = Self :: ESTIMATOR_ATTITUDE ; } impl Default for EstimatorStatusFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum GoproCharging { GOPRO_CHARGING_DISABLED = 0 , GOPRO_CHARGING_ENABLED = 1 , } impl GoproCharging { pub const DEFAULT : Self = Self :: GOPRO_CHARGING_DISABLED ; } impl Default for GoproCharging { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavMissionResult { MAV_MISSION_ACCEPTED = 0 , MAV_MISSION_ERROR = 1 , MAV_MISSION_UNSUPPORTED_FRAME = 2 , MAV_MISSION_UNSUPPORTED = 3 , MAV_MISSION_NO_SPACE = 4 , MAV_MISSION_INVALID = 5 , MAV_MISSION_INVALID_PARAM1 = 6 , MAV_MISSION_INVALID_PARAM2 = 7 , MAV_MISSION_INVALID_PARAM3 = 8 , MAV_MISSION_INVALID_PARAM4 = 9 , MAV_MISSION_INVALID_PARAM5_X = 10 , MAV_MISSION_INVALID_PARAM6_Y = 11 , MAV_MISSION_INVALID_PARAM7 = 12 , MAV_MISSION_INVALID_SEQUENCE = 13 , MAV_MISSION_DENIED = 14 , MAV_MISSION_OPERATION_CANCELLED = 15 , } impl MavMissionResult { pub const DEFAULT : Self = Self :: MAV_MISSION_ACCEPTED ; } impl Default for MavMissionResult { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PositionTargetTypemask : u16 { const POSITION_TARGET_TYPEMASK_X_IGNORE = 1 ; const POSITION_TARGET_TYPEMASK_Y_IGNORE = 2 ; const POSITION_TARGET_TYPEMASK_Z_IGNORE = 4 ; const POSITION_TARGET_TYPEMASK_VX_IGNORE = 8 ; const POSITION_TARGET_TYPEMASK_VY_IGNORE = 16 ; const POSITION_TARGET_TYPEMASK_VZ_IGNORE = 32 ; const POSITION_TARGET_TYPEMASK_AX_IGNORE = 64 ; const POSITION_TARGET_TYPEMASK_AY_IGNORE = 128 ; const POSITION_TARGET_TYPEMASK_AZ_IGNORE = 256 ; const POSITION_TARGET_TYPEMASK_FORCE_SET = 512 ; const POSITION_TARGET_TYPEMASK_YAW_IGNORE = 1024 ; const POSITION_TARGET_TYPEMASK_YAW_RATE_IGNORE = 2048 ; } } impl PositionTargetTypemask { pub const DEFAULT : Self = Self :: POSITION_TARGET_TYPEMASK_X_IGNORE ; } impl Default for PositionTargetTypemask { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavCmd { MAV_CMD_NAV_WAYPOINT = 16 , MAV_CMD_NAV_LOITER_UNLIM = 17 , MAV_CMD_NAV_LOITER_TURNS = 18 , MAV_CMD_NAV_LOITER_TIME = 19 , MAV_CMD_NAV_RETURN_TO_LAUNCH = 20 , MAV_CMD_NAV_LAND = 21 , MAV_CMD_NAV_TAKEOFF = 22 , MAV_CMD_NAV_LAND_LOCAL = 23 , MAV_CMD_NAV_TAKEOFF_LOCAL = 24 , MAV_CMD_NAV_FOLLOW = 25 , MAV_CMD_NAV_CONTINUE_AND_CHANGE_ALT = 30 , MAV_CMD_NAV_LOITER_TO_ALT = 31 , MAV_CMD_DO_FOLLOW = 32 , MAV_CMD_DO_FOLLOW_REPOSITION = 33 , MAV_CMD_DO_ORBIT = 34 , MAV_CMD_NAV_ROI = 80 , MAV_CMD_NAV_PATHPLANNING = 81 , MAV_CMD_NAV_SPLINE_WAYPOINT = 82 , MAV_CMD_NAV_VTOL_TAKEOFF = 84 , MAV_CMD_NAV_VTOL_LAND = 85 , MAV_CMD_NAV_GUIDED_ENABLE = 92 , MAV_CMD_NAV_DELAY = 93 , MAV_CMD_NAV_PAYLOAD_PLACE = 94 , MAV_CMD_NAV_LAST = 95 , MAV_CMD_CONDITION_DELAY = 112 , MAV_CMD_CONDITION_CHANGE_ALT = 113 , MAV_CMD_CONDITION_DISTANCE = 114 , MAV_CMD_CONDITION_YAW = 115 , MAV_CMD_CONDITION_LAST = 159 , MAV_CMD_DO_SET_MODE = 176 , MAV_CMD_DO_JUMP = 177 , MAV_CMD_DO_CHANGE_SPEED = 178 , MAV_CMD_DO_SET_HOME = 179 , MAV_CMD_DO_SET_PARAMETER = 180 , MAV_CMD_DO_SET_RELAY = 181 , MAV_CMD_DO_REPEAT_RELAY = 182 , MAV_CMD_DO_SET_SERVO = 183 , MAV_CMD_DO_REPEAT_SERVO = 184 , MAV_CMD_DO_FLIGHTTERMINATION = 185 , MAV_CMD_DO_CHANGE_ALTITUDE = 186 , MAV_CMD_DO_SET_ACTUATOR = 187 , MAV_CMD_DO_LAND_START = 189 , MAV_CMD_DO_RALLY_LAND = 190 , MAV_CMD_DO_GO_AROUND = 191 , MAV_CMD_DO_REPOSITION = 192 , MAV_CMD_DO_PAUSE_CONTINUE = 193 , MAV_CMD_DO_SET_REVERSE = 194 , MAV_CMD_DO_SET_ROI_LOCATION = 195 , MAV_CMD_DO_SET_ROI_WPNEXT_OFFSET = 196 , MAV_CMD_DO_SET_ROI_NONE = 197 , MAV_CMD_DO_SET_ROI_SYSID = 198 , MAV_CMD_DO_CONTROL_VIDEO = 200 , MAV_CMD_DO_SET_ROI = 201 , MAV_CMD_DO_DIGICAM_CONFIGURE = 202 , MAV_CMD_DO_DIGICAM_CONTROL = 203 , MAV_CMD_DO_MOUNT_CONFIGURE = 204 , MAV_CMD_DO_MOUNT_CONTROL = 205 , MAV_CMD_DO_SET_CAM_TRIGG_DIST = 206 , MAV_CMD_DO_FENCE_ENABLE = 207 , MAV_CMD_DO_PARACHUTE = 208 , MAV_CMD_DO_MOTOR_TEST = 209 , MAV_CMD_DO_INVERTED_FLIGHT = 210 , MAV_CMD_DO_GRIPPER = 211 , MAV_CMD_DO_AUTOTUNE_ENABLE = 212 , MAV_CMD_NAV_SET_YAW_SPEED = 213 , MAV_CMD_DO_SET_CAM_TRIGG_INTERVAL = 214 , MAV_CMD_DO_MOUNT_CONTROL_QUAT = 220 , MAV_CMD_DO_GUIDED_MASTER = 221 , MAV_CMD_DO_GUIDED_LIMITS = 222 , MAV_CMD_DO_ENGINE_CONTROL = 223 , MAV_CMD_DO_SET_MISSION_CURRENT = 224 , MAV_CMD_DO_LAST = 240 , MAV_CMD_PREFLIGHT_CALIBRATION = 241 , MAV_CMD_PREFLIGHT_SET_SENSOR_OFFSETS = 242 , MAV_CMD_PREFLIGHT_UAVCAN = 243 , MAV_CMD_PREFLIGHT_STORAGE = 245 , MAV_CMD_PREFLIGHT_REBOOT_SHUTDOWN = 246 , MAV_CMD_OVERRIDE_GOTO = 252 , MAV_CMD_OBLIQUE_SURVEY = 260 , MAV_CMD_MISSION_START = 300 , MAV_CMD_ACTUATOR_TEST = 310 , MAV_CMD_CONFIGURE_ACTUATOR = 311 , MAV_CMD_COMPONENT_ARM_DISARM = 400 , MAV_CMD_RUN_PREARM_CHECKS = 401 , MAV_CMD_ILLUMINATOR_ON_OFF = 405 , MAV_CMD_GET_HOME_POSITION = 410 , MAV_CMD_INJECT_FAILURE = 420 , MAV_CMD_START_RX_PAIR = 500 , MAV_CMD_GET_MESSAGE_INTERVAL = 510 , MAV_CMD_SET_MESSAGE_INTERVAL = 511 , MAV_CMD_REQUEST_MESSAGE = 512 , MAV_CMD_REQUEST_PROTOCOL_VERSION = 519 , MAV_CMD_REQUEST_AUTOPILOT_CAPABILITIES = 520 , MAV_CMD_REQUEST_CAMERA_INFORMATION = 521 , MAV_CMD_REQUEST_CAMERA_SETTINGS = 522 , MAV_CMD_REQUEST_STORAGE_INFORMATION = 525 , MAV_CMD_STORAGE_FORMAT = 526 , MAV_CMD_REQUEST_CAMERA_CAPTURE_STATUS = 527 , MAV_CMD_REQUEST_FLIGHT_INFORMATION = 528 , MAV_CMD_RESET_CAMERA_SETTINGS = 529 , MAV_CMD_SET_CAMERA_MODE = 530 , MAV_CMD_SET_CAMERA_ZOOM = 531 , MAV_CMD_SET_CAMERA_FOCUS = 532 , MAV_CMD_SET_STORAGE_USAGE = 533 , MAV_CMD_JUMP_TAG = 600 , MAV_CMD_DO_JUMP_TAG = 601 , MAV_CMD_DO_GIMBAL_MANAGER_PITCHYAW = 1000 , MAV_CMD_DO_GIMBAL_MANAGER_CONFIGURE = 1001 , MAV_CMD_IMAGE_START_CAPTURE = 2000 , MAV_CMD_IMAGE_STOP_CAPTURE = 2001 , MAV_CMD_REQUEST_CAMERA_IMAGE_CAPTURE = 2002 , MAV_CMD_DO_TRIGGER_CONTROL = 2003 , MAV_CMD_CAMERA_TRACK_POINT = 2004 , MAV_CMD_CAMERA_TRACK_RECTANGLE = 2005 , MAV_CMD_CAMERA_STOP_TRACKING = 2010 , MAV_CMD_VIDEO_START_CAPTURE = 2500 , MAV_CMD_VIDEO_STOP_CAPTURE = 2501 , MAV_CMD_VIDEO_START_STREAMING = 2502 , MAV_CMD_VIDEO_STOP_STREAMING = 2503 , MAV_CMD_REQUEST_VIDEO_STREAM_INFORMATION = 2504 , MAV_CMD_REQUEST_VIDEO_STREAM_STATUS = 2505 , MAV_CMD_LOGGING_START = 2510 , MAV_CMD_LOGGING_STOP = 2511 , MAV_CMD_AIRFRAME_CONFIGURATION = 2520 , MAV_CMD_CONTROL_HIGH_LATENCY = 2600 , MAV_CMD_PANORAMA_CREATE = 2800 , MAV_CMD_DO_VTOL_TRANSITION = 3000 , MAV_CMD_ARM_AUTHORIZATION_REQUEST = 3001 , MAV_CMD_SET_GUIDED_SUBMODE_STANDARD = 4000 , MAV_CMD_SET_GUIDED_SUBMODE_CIRCLE = 4001 , MAV_CMD_CONDITION_GATE = 4501 , MAV_CMD_NAV_FENCE_RETURN_POINT = 5000 , MAV_CMD_NAV_FENCE_POLYGON_VERTEX_INCLUSION = 5001 , MAV_CMD_NAV_FENCE_POLYGON_VERTEX_EXCLUSION = 5002 , MAV_CMD_NAV_FENCE_CIRCLE_INCLUSION = 5003 , MAV_CMD_NAV_FENCE_CIRCLE_EXCLUSION = 5004 , MAV_CMD_NAV_RALLY_POINT = 5100 , MAV_CMD_UAVCAN_GET_NODE_INFO = 5200 , MAV_CMD_DO_ADSB_OUT_IDENT = 10001 , MAV_CMD_PAYLOAD_PREPARE_DEPLOY = 30001 , MAV_CMD_PAYLOAD_CONTROL_DEPLOY = 30002 , MAV_CMD_FIXED_MAG_CAL_YAW = 42006 , MAV_CMD_DO_WINCH = 42600 , MAV_CMD_WAYPOINT_USER_1 = 31000 , MAV_CMD_WAYPOINT_USER_2 = 31001 , MAV_CMD_WAYPOINT_USER_3 = 31002 , MAV_CMD_WAYPOINT_USER_4 = 31003 , MAV_CMD_WAYPOINT_USER_5 = 31004 , MAV_CMD_SPATIAL_USER_1 = 31005 , MAV_CMD_SPATIAL_USER_2 = 31006 , MAV_CMD_SPATIAL_USER_3 = 31007 , MAV_CMD_SPATIAL_USER_4 = 31008 , MAV_CMD_SPATIAL_USER_5 = 31009 , MAV_CMD_USER_1 = 31010 , MAV_CMD_USER_2 = 31011 , MAV_CMD_USER_3 = 31012 , MAV_CMD_USER_4 = 31013 , MAV_CMD_USER_5 = 31014 , MAV_CMD_CAN_FORWARD = 32000 , MAV_CMD_DO_SET_RESUME_REPEAT_DIST = 215 , MAV_CMD_DO_SPRAYER = 216 , MAV_CMD_DO_SEND_SCRIPT_MESSAGE = 217 , MAV_CMD_DO_AUX_FUNCTION = 218 , MAV_CMD_NAV_ALTITUDE_WAIT = 83 , MAV_CMD_POWER_OFF_INITIATED = 42000 , MAV_CMD_SOLO_BTN_FLY_CLICK = 42001 , MAV_CMD_SOLO_BTN_FLY_HOLD = 42002 , MAV_CMD_SOLO_BTN_PAUSE_CLICK = 42003 , MAV_CMD_FIXED_MAG_CAL = 42004 , MAV_CMD_FIXED_MAG_CAL_FIELD = 42005 , MAV_CMD_SET_EKF_SOURCE_SET = 42007 , MAV_CMD_DO_START_MAG_CAL = 42424 , MAV_CMD_DO_ACCEPT_MAG_CAL = 42425 , MAV_CMD_DO_CANCEL_MAG_CAL = 42426 , MAV_CMD_ACCELCAL_VEHICLE_POS = 42429 , MAV_CMD_DO_SEND_BANNER = 42428 , MAV_CMD_SET_FACTORY_TEST_MODE = 42427 , MAV_CMD_GIMBAL_RESET = 42501 , MAV_CMD_GIMBAL_AXIS_CALIBRATION_STATUS = 42502 , MAV_CMD_GIMBAL_REQUEST_AXIS_CALIBRATION = 42503 , MAV_CMD_GIMBAL_FULL_RESET = 42505 , MAV_CMD_FLASH_BOOTLOADER = 42650 , MAV_CMD_BATTERY_RESET = 42651 , MAV_CMD_DEBUG_TRAP = 42700 , MAV_CMD_SCRIPTING = 42701 , MAV_CMD_NAV_SCRIPT_TIME = 42702 , MAV_CMD_NAV_ATTITUDE_TIME = 42703 , MAV_CMD_GUIDED_CHANGE_SPEED = 43000 , MAV_CMD_GUIDED_CHANGE_ALTITUDE = 43001 , MAV_CMD_GUIDED_CHANGE_HEADING = 43002 , } impl MavCmd { pub const DEFAULT : Self = Self :: MAV_CMD_NAV_WAYPOINT ; } impl Default for MavCmd { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavModeFlagDecodePosition { MAV_MODE_FLAG_DECODE_POSITION_SAFETY = 128 , MAV_MODE_FLAG_DECODE_POSITION_MANUAL = 64 , MAV_MODE_FLAG_DECODE_POSITION_HIL = 32 , MAV_MODE_FLAG_DECODE_POSITION_STABILIZE = 16 , MAV_MODE_FLAG_DECODE_POSITION_GUIDED = 8 , MAV_MODE_FLAG_DECODE_POSITION_AUTO = 4 , MAV_MODE_FLAG_DECODE_POSITION_TEST = 2 , MAV_MODE_FLAG_DECODE_POSITION_CUSTOM_MODE = 1 , } impl MavModeFlagDecodePosition { pub const DEFAULT : Self = Self :: MAV_MODE_FLAG_DECODE_POSITION_SAFETY ; } impl Default for MavModeFlagDecodePosition { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MavGeneratorStatusFlag : u64 { const MAV_GENERATOR_STATUS_FLAG_OFF = 1 ; const MAV_GENERATOR_STATUS_FLAG_READY = 2 ; const MAV_GENERATOR_STATUS_FLAG_GENERATING = 4 ; const MAV_GENERATOR_STATUS_FLAG_CHARGING = 8 ; const MAV_GENERATOR_STATUS_FLAG_REDUCED_POWER = 16 ; const MAV_GENERATOR_STATUS_FLAG_MAXPOWER = 32 ; const MAV_GENERATOR_STATUS_FLAG_OVERTEMP_WARNING = 64 ; const MAV_GENERATOR_STATUS_FLAG_OVERTEMP_FAULT = 128 ; const MAV_GENERATOR_STATUS_FLAG_ELECTRONICS_OVERTEMP_WARNING = 256 ; const MAV_GENERATOR_STATUS_FLAG_ELECTRONICS_OVERTEMP_FAULT = 512 ; const MAV_GENERATOR_STATUS_FLAG_ELECTRONICS_FAULT = 1024 ; const MAV_GENERATOR_STATUS_FLAG_POWERSOURCE_FAULT = 2048 ; const MAV_GENERATOR_STATUS_FLAG_COMMUNICATION_WARNING = 4096 ; const MAV_GENERATOR_STATUS_FLAG_COOLING_WARNING = 8192 ; const MAV_GENERATOR_STATUS_FLAG_POWER_RAIL_FAULT = 16384 ; const MAV_GENERATOR_STATUS_FLAG_OVERCURRENT_FAULT = 32768 ; const MAV_GENERATOR_STATUS_FLAG_BATTERY_OVERCHARGE_CURRENT_FAULT = 65536 ; const MAV_GENERATOR_STATUS_FLAG_OVERVOLTAGE_FAULT = 131072 ; const MAV_GENERATOR_STATUS_FLAG_BATTERY_UNDERVOLT_FAULT = 262144 ; const MAV_GENERATOR_STATUS_FLAG_START_INHIBITED = 524288 ; const MAV_GENERATOR_STATUS_FLAG_MAINTENANCE_REQUIRED = 1048576 ; const MAV_GENERATOR_STATUS_FLAG_WARMING_UP = 2097152 ; const MAV_GENERATOR_STATUS_FLAG_IDLE = 4194304 ; } } impl MavGeneratorStatusFlag { pub const DEFAULT : Self = Self :: MAV_GENERATOR_STATUS_FLAG_OFF ; } impl Default for MavGeneratorStatusFlag { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavParamExtType { MAV_PARAM_EXT_TYPE_UINT8 = 1 , MAV_PARAM_EXT_TYPE_INT8 = 2 , MAV_PARAM_EXT_TYPE_UINT16 = 3 , MAV_PARAM_EXT_TYPE_INT16 = 4 , MAV_PARAM_EXT_TYPE_UINT32 = 5 , MAV_PARAM_EXT_TYPE_INT32 = 6 , MAV_PARAM_EXT_TYPE_UINT64 = 7 , MAV_PARAM_EXT_TYPE_INT64 = 8 , MAV_PARAM_EXT_TYPE_REAL32 = 9 , MAV_PARAM_EXT_TYPE_REAL64 = 10 , MAV_PARAM_EXT_TYPE_CUSTOM = 11 , } impl MavParamExtType { pub const DEFAULT : Self = Self :: MAV_PARAM_EXT_TYPE_UINT8 ; } impl Default for MavParamExtType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum GoproFrameRate { GOPRO_FRAME_RATE_12 = 0 , GOPRO_FRAME_RATE_15 = 1 , GOPRO_FRAME_RATE_24 = 2 , GOPRO_FRAME_RATE_25 = 3 , GOPRO_FRAME_RATE_30 = 4 , GOPRO_FRAME_RATE_48 = 5 , GOPRO_FRAME_RATE_50 = 6 , GOPRO_FRAME_RATE_60 = 7 , GOPRO_FRAME_RATE_80 = 8 , GOPRO_FRAME_RATE_90 = 9 , GOPRO_FRAME_RATE_100 = 10 , GOPRO_FRAME_RATE_120 = 11 , GOPRO_FRAME_RATE_240 = 12 , GOPRO_FRAME_RATE_12_5 = 13 , } impl GoproFrameRate { pub const DEFAULT : Self = Self :: GOPRO_FRAME_RATE_12 ; } impl Default for GoproFrameRate { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum DeviceOpBustype { DEVICE_OP_BUSTYPE_I2C = 0 , DEVICE_OP_BUSTYPE_SPI = 1 , } impl DeviceOpBustype { pub const DEFAULT : Self = Self :: DEVICE_OP_BUSTYPE_I2C ; } impl Default for DeviceOpBustype { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidClassificationType { MAV_ODID_CLASSIFICATION_TYPE_UNDECLARED = 0 , MAV_ODID_CLASSIFICATION_TYPE_EU = 1 , } impl MavOdidClassificationType { pub const DEFAULT : Self = Self :: MAV_ODID_CLASSIFICATION_TYPE_UNDECLARED ; } impl Default for MavOdidClassificationType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum OsdParamConfigType { OSD_PARAM_NONE = 0 , OSD_PARAM_SERIAL_PROTOCOL = 1 , OSD_PARAM_SERVO_FUNCTION = 2 , OSD_PARAM_AUX_FUNCTION = 3 , OSD_PARAM_FLIGHT_MODE = 4 , OSD_PARAM_FAILSAFE_ACTION = 5 , OSD_PARAM_FAILSAFE_ACTION_1 = 6 , OSD_PARAM_FAILSAFE_ACTION_2 = 7 , OSD_PARAM_NUM_TYPES = 8 , } impl OsdParamConfigType { pub const DEFAULT : Self = Self :: OSD_PARAM_NONE ; } impl Default for OsdParamConfigType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavArmAuthDeniedReason { MAV_ARM_AUTH_DENIED_REASON_GENERIC = 0 , MAV_ARM_AUTH_DENIED_REASON_NONE = 1 , MAV_ARM_AUTH_DENIED_REASON_INVALID_WAYPOINT = 2 , MAV_ARM_AUTH_DENIED_REASON_TIMEOUT = 3 , MAV_ARM_AUTH_DENIED_REASON_AIRSPACE_IN_USE = 4 , MAV_ARM_AUTH_DENIED_REASON_BAD_WEATHER = 5 , } impl MavArmAuthDeniedReason { pub const DEFAULT : Self = Self :: MAV_ARM_AUTH_DENIED_REASON_GENERIC ; } impl Default for MavArmAuthDeniedReason { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidStatus { MAV_ODID_STATUS_UNDECLARED = 0 , MAV_ODID_STATUS_GROUND = 1 , MAV_ODID_STATUS_AIRBORNE = 2 , MAV_ODID_STATUS_EMERGENCY = 3 , MAV_ODID_STATUS_REMOTE_ID_SYSTEM_FAILURE = 4 , } impl MavOdidStatus { pub const DEFAULT : Self = Self :: MAV_ODID_STATUS_UNDECLARED ; } impl Default for MavOdidStatus { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum UavionixAdsbOutCfgGpsOffsetLat { UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_NO_DATA = 0 , UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_LEFT_2M = 1 , UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_LEFT_4M = 2 , UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_LEFT_6M = 3 , UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_RIGHT_0M = 4 , UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_RIGHT_2M = 5 , UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_RIGHT_4M = 6 , UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_RIGHT_6M = 7 , } impl UavionixAdsbOutCfgGpsOffsetLat { pub const DEFAULT : Self = Self :: UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_NO_DATA ; } impl Default for UavionixAdsbOutCfgGpsOffsetLat { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum GoproProtuneGain { GOPRO_PROTUNE_GAIN_400 = 0 , GOPRO_PROTUNE_GAIN_800 = 1 , GOPRO_PROTUNE_GAIN_1600 = 2 , GOPRO_PROTUNE_GAIN_3200 = 3 , GOPRO_PROTUNE_GAIN_6400 = 4 , } impl GoproProtuneGain { pub const DEFAULT : Self = Self :: GOPRO_PROTUNE_GAIN_400 ; } impl Default for GoproProtuneGain { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum ParachuteAction { PARACHUTE_DISABLE = 0 , PARACHUTE_ENABLE = 1 , PARACHUTE_RELEASE = 2 , } impl ParachuteAction { pub const DEFAULT : Self = Self :: PARACHUTE_DISABLE ; } impl Default for ParachuteAction { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum VtolTransitionHeading { VTOL_TRANSITION_HEADING_VEHICLE_DEFAULT = 0 , VTOL_TRANSITION_HEADING_NEXT_WAYPOINT = 1 , VTOL_TRANSITION_HEADING_TAKEOFF = 2 , VTOL_TRANSITION_HEADING_SPECIFIED = 3 , VTOL_TRANSITION_HEADING_ANY = 4 , } impl VtolTransitionHeading { pub const DEFAULT : Self = Self :: VTOL_TRANSITION_HEADING_VEHICLE_DEFAULT ; } impl Default for VtolTransitionHeading { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavParamType { MAV_PARAM_TYPE_UINT8 = 1 , MAV_PARAM_TYPE_INT8 = 2 , MAV_PARAM_TYPE_UINT16 = 3 , MAV_PARAM_TYPE_INT16 = 4 , MAV_PARAM_TYPE_UINT32 = 5 , MAV_PARAM_TYPE_INT32 = 6 , MAV_PARAM_TYPE_UINT64 = 7 , MAV_PARAM_TYPE_INT64 = 8 , MAV_PARAM_TYPE_REAL32 = 9 , MAV_PARAM_TYPE_REAL64 = 10 , } impl MavParamType { pub const DEFAULT : Self = Self :: MAV_PARAM_TYPE_UINT8 ; } impl Default for MavParamType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavTunnelPayloadType { MAV_TUNNEL_PAYLOAD_TYPE_UNKNOWN = 0 , MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED0 = 200 , MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED1 = 201 , MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED2 = 202 , MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED3 = 203 , MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED4 = 204 , MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED5 = 205 , MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED6 = 206 , MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED7 = 207 , MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED8 = 208 , MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED9 = 209 , } impl MavTunnelPayloadType { pub const DEFAULT : Self = Self :: MAV_TUNNEL_PAYLOAD_TYPE_UNKNOWN ; } impl Default for MavTunnelPayloadType { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct EscFailureFlags : u16 { const ESC_FAILURE_NONE = 0 ; const ESC_FAILURE_OVER_CURRENT = 1 ; const ESC_FAILURE_OVER_VOLTAGE = 2 ; const ESC_FAILURE_OVER_TEMPERATURE = 4 ; const ESC_FAILURE_OVER_RPM = 8 ; const ESC_FAILURE_INCONSISTENT_CMD = 16 ; const ESC_FAILURE_MOTOR_STUCK = 32 ; const ESC_FAILURE_GENERIC = 64 ; } } impl EscFailureFlags { pub const DEFAULT : Self = Self :: ESC_FAILURE_NONE ; } impl Default for EscFailureFlags { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SerialControlFlag : u8 { const SERIAL_CONTROL_FLAG_REPLY = 1 ; const SERIAL_CONTROL_FLAG_RESPOND = 2 ; const SERIAL_CONTROL_FLAG_EXCLUSIVE = 4 ; const SERIAL_CONTROL_FLAG_BLOCKING = 8 ; const SERIAL_CONTROL_FLAG_MULTI = 16 ; } } impl SerialControlFlag { pub const DEFAULT : Self = Self :: SERIAL_CONTROL_FLAG_REPLY ; } impl Default for SerialControlFlag { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct UavionixAdsbOutDynamicState : u16 { const UAVIONIX_ADSB_OUT_DYNAMIC_STATE_INTENT_CHANGE = 1 ; const UAVIONIX_ADSB_OUT_DYNAMIC_STATE_AUTOPILOT_ENABLED = 2 ; const UAVIONIX_ADSB_OUT_DYNAMIC_STATE_NICBARO_CROSSCHECKED = 4 ; const UAVIONIX_ADSB_OUT_DYNAMIC_STATE_ON_GROUND = 8 ; const UAVIONIX_ADSB_OUT_DYNAMIC_STATE_IDENT = 16 ; } } impl UavionixAdsbOutDynamicState { pub const DEFAULT : Self = Self :: UAVIONIX_ADSB_OUT_DYNAMIC_STATE_INTENT_CHANGE ; } impl Default for UavionixAdsbOutDynamicState { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum UavionixAdsbOutDynamicGpsFix { UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX_NONE_0 = 0 , UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX_NONE_1 = 1 , UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX_2D = 2 , UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX_3D = 3 , UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX_DGPS = 4 , UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX_RTK = 5 , } impl UavionixAdsbOutDynamicGpsFix { pub const DEFAULT : Self = Self :: UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX_NONE_0 ; } impl Default for UavionixAdsbOutDynamicGpsFix { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum ActuatorOutputFunction { ACTUATOR_OUTPUT_FUNCTION_NONE = 0 , ACTUATOR_OUTPUT_FUNCTION_MOTOR1 = 1 , ACTUATOR_OUTPUT_FUNCTION_MOTOR2 = 2 , ACTUATOR_OUTPUT_FUNCTION_MOTOR3 = 3 , ACTUATOR_OUTPUT_FUNCTION_MOTOR4 = 4 , ACTUATOR_OUTPUT_FUNCTION_MOTOR5 = 5 , ACTUATOR_OUTPUT_FUNCTION_MOTOR6 = 6 , ACTUATOR_OUTPUT_FUNCTION_MOTOR7 = 7 , ACTUATOR_OUTPUT_FUNCTION_MOTOR8 = 8 , ACTUATOR_OUTPUT_FUNCTION_MOTOR9 = 9 , ACTUATOR_OUTPUT_FUNCTION_MOTOR10 = 10 , ACTUATOR_OUTPUT_FUNCTION_MOTOR11 = 11 , ACTUATOR_OUTPUT_FUNCTION_MOTOR12 = 12 , ACTUATOR_OUTPUT_FUNCTION_MOTOR13 = 13 , ACTUATOR_OUTPUT_FUNCTION_MOTOR14 = 14 , ACTUATOR_OUTPUT_FUNCTION_MOTOR15 = 15 , ACTUATOR_OUTPUT_FUNCTION_MOTOR16 = 16 , ACTUATOR_OUTPUT_FUNCTION_SERVO1 = 33 , ACTUATOR_OUTPUT_FUNCTION_SERVO2 = 34 , ACTUATOR_OUTPUT_FUNCTION_SERVO3 = 35 , ACTUATOR_OUTPUT_FUNCTION_SERVO4 = 36 , ACTUATOR_OUTPUT_FUNCTION_SERVO5 = 37 , ACTUATOR_OUTPUT_FUNCTION_SERVO6 = 38 , ACTUATOR_OUTPUT_FUNCTION_SERVO7 = 39 , ACTUATOR_OUTPUT_FUNCTION_SERVO8 = 40 , ACTUATOR_OUTPUT_FUNCTION_SERVO9 = 41 , ACTUATOR_OUTPUT_FUNCTION_SERVO10 = 42 , ACTUATOR_OUTPUT_FUNCTION_SERVO11 = 43 , ACTUATOR_OUTPUT_FUNCTION_SERVO12 = 44 , ACTUATOR_OUTPUT_FUNCTION_SERVO13 = 45 , ACTUATOR_OUTPUT_FUNCTION_SERVO14 = 46 , ACTUATOR_OUTPUT_FUNCTION_SERVO15 = 47 , ACTUATOR_OUTPUT_FUNCTION_SERVO16 = 48 , } impl ActuatorOutputFunction { pub const DEFAULT : Self = Self :: ACTUATOR_OUTPUT_FUNCTION_NONE ; } impl Default for ActuatorOutputFunction { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavGoto { MAV_GOTO_DO_HOLD = 0 , MAV_GOTO_DO_CONTINUE = 1 , MAV_GOTO_HOLD_AT_CURRENT_POSITION = 2 , MAV_GOTO_HOLD_AT_SPECIFIED_POSITION = 3 , } impl MavGoto { pub const DEFAULT : Self = Self :: MAV_GOTO_DO_HOLD ; } impl Default for MavGoto { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum CellularStatusFlag { CELLULAR_STATUS_FLAG_UNKNOWN = 0 , CELLULAR_STATUS_FLAG_FAILED = 1 , CELLULAR_STATUS_FLAG_INITIALIZING = 2 , CELLULAR_STATUS_FLAG_LOCKED = 3 , CELLULAR_STATUS_FLAG_DISABLED = 4 , CELLULAR_STATUS_FLAG_DISABLING = 5 , CELLULAR_STATUS_FLAG_ENABLING = 6 , CELLULAR_STATUS_FLAG_ENABLED = 7 , CELLULAR_STATUS_FLAG_SEARCHING = 8 , CELLULAR_STATUS_FLAG_REGISTERED = 9 , CELLULAR_STATUS_FLAG_DISCONNECTING = 10 , CELLULAR_STATUS_FLAG_CONNECTING = 11 , CELLULAR_STATUS_FLAG_CONNECTED = 12 , } impl CellularStatusFlag { pub const DEFAULT : Self = Self :: CELLULAR_STATUS_FLAG_UNKNOWN ; } impl Default for CellularStatusFlag { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavModeGimbal { MAV_MODE_GIMBAL_UNINITIALIZED = 0 , MAV_MODE_GIMBAL_CALIBRATING_PITCH = 1 , MAV_MODE_GIMBAL_CALIBRATING_ROLL = 2 , MAV_MODE_GIMBAL_CALIBRATING_YAW = 3 , MAV_MODE_GIMBAL_INITIALIZED = 4 , MAV_MODE_GIMBAL_ACTIVE = 5 , MAV_MODE_GIMBAL_RATE_CMD_TIMEOUT = 6 , } impl MavModeGimbal { pub const DEFAULT : Self = Self :: MAV_MODE_GIMBAL_UNINITIALIZED ; } impl Default for MavModeGimbal { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavBatteryType { MAV_BATTERY_TYPE_UNKNOWN = 0 , MAV_BATTERY_TYPE_LIPO = 1 , MAV_BATTERY_TYPE_LIFE = 2 , MAV_BATTERY_TYPE_LION = 3 , MAV_BATTERY_TYPE_NIMH = 4 , } impl MavBatteryType { pub const DEFAULT : Self = Self :: MAV_BATTERY_TYPE_UNKNOWN ; } impl Default for MavBatteryType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavMissionType { MAV_MISSION_TYPE_MISSION = 0 , MAV_MISSION_TYPE_FENCE = 1 , MAV_MISSION_TYPE_RALLY = 2 , MAV_MISSION_TYPE_ALL = 255 , } impl MavMissionType { pub const DEFAULT : Self = Self :: MAV_MISSION_TYPE_MISSION ; } impl Default for MavMissionType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum GoproCaptureMode { GOPRO_CAPTURE_MODE_VIDEO = 0 , GOPRO_CAPTURE_MODE_PHOTO = 1 , GOPRO_CAPTURE_MODE_BURST = 2 , GOPRO_CAPTURE_MODE_TIME_LAPSE = 3 , GOPRO_CAPTURE_MODE_MULTI_SHOT = 4 , GOPRO_CAPTURE_MODE_PLAYBACK = 5 , GOPRO_CAPTURE_MODE_SETUP = 6 , GOPRO_CAPTURE_MODE_UNKNOWN = 255 , } impl GoproCaptureMode { pub const DEFAULT : Self = Self :: GOPRO_CAPTURE_MODE_VIDEO ; } impl Default for GoproCaptureMode { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum GoproFieldOfView { GOPRO_FIELD_OF_VIEW_WIDE = 0 , GOPRO_FIELD_OF_VIEW_MEDIUM = 1 , GOPRO_FIELD_OF_VIEW_NARROW = 2 , } impl GoproFieldOfView { pub const DEFAULT : Self = Self :: GOPRO_FIELD_OF_VIEW_WIDE ; } impl Default for GoproFieldOfView { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavRemoteLogDataBlockCommands { MAV_REMOTE_LOG_DATA_BLOCK_STOP = 2147483645 , MAV_REMOTE_LOG_DATA_BLOCK_START = 2147483646 , } impl MavRemoteLogDataBlockCommands { pub const DEFAULT : Self = Self :: MAV_REMOTE_LOG_DATA_BLOCK_STOP ; } impl Default for MavRemoteLogDataBlockCommands { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavFrame { MAV_FRAME_GLOBAL = 0 , MAV_FRAME_LOCAL_NED = 1 , MAV_FRAME_MISSION = 2 , MAV_FRAME_GLOBAL_RELATIVE_ALT = 3 , MAV_FRAME_LOCAL_ENU = 4 , MAV_FRAME_GLOBAL_INT = 5 , MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6 , MAV_FRAME_LOCAL_OFFSET_NED = 7 , MAV_FRAME_BODY_NED = 8 , MAV_FRAME_BODY_OFFSET_NED = 9 , MAV_FRAME_GLOBAL_TERRAIN_ALT = 10 , MAV_FRAME_GLOBAL_TERRAIN_ALT_INT = 11 , MAV_FRAME_BODY_FRD = 12 , MAV_FRAME_RESERVED_13 = 13 , MAV_FRAME_RESERVED_14 = 14 , MAV_FRAME_RESERVED_15 = 15 , MAV_FRAME_RESERVED_16 = 16 , MAV_FRAME_RESERVED_17 = 17 , MAV_FRAME_RESERVED_18 = 18 , MAV_FRAME_RESERVED_19 = 19 , MAV_FRAME_LOCAL_FRD = 20 , MAV_FRAME_LOCAL_FLU = 21 , } impl MavFrame { pub const DEFAULT : Self = Self :: MAV_FRAME_GLOBAL ; } impl Default for MavFrame { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HilSensorUpdatedFlags : u32 { const HIL_SENSOR_UPDATED_NONE = 0 ; const HIL_SENSOR_UPDATED_XACC = 1 ; const HIL_SENSOR_UPDATED_YACC = 2 ; const HIL_SENSOR_UPDATED_ZACC = 4 ; const HIL_SENSOR_UPDATED_XGYRO = 8 ; const HIL_SENSOR_UPDATED_YGYRO = 16 ; const HIL_SENSOR_UPDATED_ZGYRO = 32 ; const HIL_SENSOR_UPDATED_XMAG = 64 ; const HIL_SENSOR_UPDATED_YMAG = 128 ; const HIL_SENSOR_UPDATED_ZMAG = 256 ; const HIL_SENSOR_UPDATED_ABS_PRESSURE = 512 ; const HIL_SENSOR_UPDATED_DIFF_PRESSURE = 1024 ; const HIL_SENSOR_UPDATED_PRESSURE_ALT = 2048 ; const HIL_SENSOR_UPDATED_TEMPERATURE = 4096 ; const HIL_SENSOR_UPDATED_RESET = 2147483648 ; } } impl HilSensorUpdatedFlags { pub const DEFAULT : Self = Self :: HIL_SENSOR_UPDATED_NONE ; } impl Default for HilSensorUpdatedFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavCmdDoAuxFunctionSwitchLevel { MAV_CMD_DO_AUX_FUNCTION_SWITCH_LEVEL_LOW = 0 , MAV_CMD_DO_AUX_FUNCTION_SWITCH_LEVEL_MIDDLE = 1 , MAV_CMD_DO_AUX_FUNCTION_SWITCH_LEVEL_HIGH = 2 , } impl MavCmdDoAuxFunctionSwitchLevel { pub const DEFAULT : Self = Self :: MAV_CMD_DO_AUX_FUNCTION_SWITCH_LEVEL_LOW ; } impl Default for MavCmdDoAuxFunctionSwitchLevel { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct EkfStatusFlags : u16 { const EKF_ATTITUDE = 1 ; const EKF_VELOCITY_HORIZ = 2 ; const EKF_VELOCITY_VERT = 4 ; const EKF_POS_HORIZ_REL = 8 ; const EKF_POS_HORIZ_ABS = 16 ; const EKF_POS_VERT_ABS = 32 ; const EKF_POS_VERT_AGL = 64 ; const EKF_CONST_POS_MODE = 128 ; const EKF_PRED_POS_HORIZ_REL = 256 ; const EKF_PRED_POS_HORIZ_ABS = 512 ; const EKF_UNINITIALIZED = 1024 ; } } impl EkfStatusFlags { pub const DEFAULT : Self = Self :: EKF_ATTITUDE ; } impl Default for EkfStatusFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum TrackerMode { TRACKER_MODE_MANUAL = 0 , TRACKER_MODE_STOP = 1 , TRACKER_MODE_SCAN = 2 , TRACKER_MODE_SERVO_TEST = 3 , TRACKER_MODE_AUTO = 10 , TRACKER_MODE_INITIALIZING = 16 , } impl TrackerMode { pub const DEFAULT : Self = Self :: TRACKER_MODE_MANUAL ; } impl Default for TrackerMode { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidVerAcc { MAV_ODID_VER_ACC_UNKNOWN = 0 , MAV_ODID_VER_ACC_150_METER = 1 , MAV_ODID_VER_ACC_45_METER = 2 , MAV_ODID_VER_ACC_25_METER = 3 , MAV_ODID_VER_ACC_10_METER = 4 , MAV_ODID_VER_ACC_3_METER = 5 , MAV_ODID_VER_ACC_1_METER = 6 , } impl MavOdidVerAcc { pub const DEFAULT : Self = Self :: MAV_ODID_VER_ACC_UNKNOWN ; } impl Default for MavOdidVerAcc { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum GoproProtuneWhiteBalance { GOPRO_PROTUNE_WHITE_BALANCE_AUTO = 0 , GOPRO_PROTUNE_WHITE_BALANCE_3000K = 1 , GOPRO_PROTUNE_WHITE_BALANCE_5500K = 2 , GOPRO_PROTUNE_WHITE_BALANCE_6500K = 3 , GOPRO_PROTUNE_WHITE_BALANCE_RAW = 4 , } impl GoproProtuneWhiteBalance { pub const DEFAULT : Self = Self :: GOPRO_PROTUNE_WHITE_BALANCE_AUTO ; } impl Default for GoproProtuneWhiteBalance { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum GoproHeartbeatStatus { GOPRO_HEARTBEAT_STATUS_DISCONNECTED = 0 , GOPRO_HEARTBEAT_STATUS_INCOMPATIBLE = 1 , GOPRO_HEARTBEAT_STATUS_CONNECTED = 2 , GOPRO_HEARTBEAT_STATUS_ERROR = 3 , } impl GoproHeartbeatStatus { pub const DEFAULT : Self = Self :: GOPRO_HEARTBEAT_STATUS_DISCONNECTED ; } impl Default for GoproHeartbeatStatus { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum CellularNetworkRadioType { CELLULAR_NETWORK_RADIO_TYPE_NONE = 0 , CELLULAR_NETWORK_RADIO_TYPE_GSM = 1 , CELLULAR_NETWORK_RADIO_TYPE_CDMA = 2 , CELLULAR_NETWORK_RADIO_TYPE_WCDMA = 3 , CELLULAR_NETWORK_RADIO_TYPE_LTE = 4 , } impl CellularNetworkRadioType { pub const DEFAULT : Self = Self :: CELLULAR_NETWORK_RADIO_TYPE_NONE ; } impl Default for CellularNetworkRadioType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum StorageType { STORAGE_TYPE_UNKNOWN = 0 , STORAGE_TYPE_USB_STICK = 1 , STORAGE_TYPE_SD = 2 , STORAGE_TYPE_MICROSD = 3 , STORAGE_TYPE_CF = 4 , STORAGE_TYPE_CFE = 5 , STORAGE_TYPE_XQD = 6 , STORAGE_TYPE_HD = 7 , STORAGE_TYPE_OTHER = 254 , } impl StorageType { pub const DEFAULT : Self = Self :: STORAGE_TYPE_UNKNOWN ; } impl Default for StorageType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum GimbalAxisCalibrationRequired { GIMBAL_AXIS_CALIBRATION_REQUIRED_UNKNOWN = 0 , GIMBAL_AXIS_CALIBRATION_REQUIRED_TRUE = 1 , GIMBAL_AXIS_CALIBRATION_REQUIRED_FALSE = 2 , } impl GimbalAxisCalibrationRequired { pub const DEFAULT : Self = Self :: GIMBAL_AXIS_CALIBRATION_REQUIRED_UNKNOWN ; } impl Default for GimbalAxisCalibrationRequired { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavVtolState { MAV_VTOL_STATE_UNDEFINED = 0 , MAV_VTOL_STATE_TRANSITION_TO_FW = 1 , MAV_VTOL_STATE_TRANSITION_TO_MC = 2 , MAV_VTOL_STATE_MC = 3 , MAV_VTOL_STATE_FW = 4 , } impl MavVtolState { pub const DEFAULT : Self = Self :: MAV_VTOL_STATE_UNDEFINED ; } impl Default for MavVtolState { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavlinkDataStreamType { MAVLINK_DATA_STREAM_IMG_JPEG = 0 , MAVLINK_DATA_STREAM_IMG_BMP = 1 , MAVLINK_DATA_STREAM_IMG_RAW8U = 2 , MAVLINK_DATA_STREAM_IMG_RAW32U = 3 , MAVLINK_DATA_STREAM_IMG_PGM = 4 , MAVLINK_DATA_STREAM_IMG_PNG = 5 , } impl MavlinkDataStreamType { pub const DEFAULT : Self = Self :: MAVLINK_DATA_STREAM_IMG_JPEG ; } impl Default for MavlinkDataStreamType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum UtmFlightState { UTM_FLIGHT_STATE_UNKNOWN = 1 , UTM_FLIGHT_STATE_GROUND = 2 , UTM_FLIGHT_STATE_AIRBORNE = 3 , UTM_FLIGHT_STATE_EMERGENCY = 16 , UTM_FLIGHT_STATE_NOCTRL = 32 , } impl UtmFlightState { pub const DEFAULT : Self = Self :: UTM_FLIGHT_STATE_UNKNOWN ; } impl Default for UtmFlightState { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum CellularConfigResponse { CELLULAR_CONFIG_RESPONSE_ACCEPTED = 0 , CELLULAR_CONFIG_RESPONSE_APN_ERROR = 1 , CELLULAR_CONFIG_RESPONSE_PIN_ERROR = 2 , CELLULAR_CONFIG_RESPONSE_REJECTED = 3 , CELLULAR_CONFIG_BLOCKED_PUK_REQUIRED = 4 , } impl CellularConfigResponse { pub const DEFAULT : Self = Self :: CELLULAR_CONFIG_RESPONSE_ACCEPTED ; } impl Default for CellularConfigResponse { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum PreflightStorageMissionAction { MISSION_READ_PERSISTENT = 0 , MISSION_WRITE_PERSISTENT = 1 , MISSION_RESET_DEFAULT = 2 , } impl PreflightStorageMissionAction { pub const DEFAULT : Self = Self :: MISSION_READ_PERSISTENT ; } impl Default for PreflightStorageMissionAction { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum ParamAck { PARAM_ACK_ACCEPTED = 0 , PARAM_ACK_VALUE_UNSUPPORTED = 1 , PARAM_ACK_FAILED = 2 , PARAM_ACK_IN_PROGRESS = 3 , } impl ParamAck { pub const DEFAULT : Self = Self :: PARAM_ACK_ACCEPTED ; } impl Default for ParamAck { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HighresImuUpdatedFlags : u16 { const HIGHRES_IMU_UPDATED_NONE = 0 ; const HIGHRES_IMU_UPDATED_XACC = 1 ; const HIGHRES_IMU_UPDATED_YACC = 2 ; const HIGHRES_IMU_UPDATED_ZACC = 4 ; const HIGHRES_IMU_UPDATED_XGYRO = 8 ; const HIGHRES_IMU_UPDATED_YGYRO = 16 ; const HIGHRES_IMU_UPDATED_ZGYRO = 32 ; const HIGHRES_IMU_UPDATED_XMAG = 64 ; const HIGHRES_IMU_UPDATED_YMAG = 128 ; const HIGHRES_IMU_UPDATED_ZMAG = 256 ; const HIGHRES_IMU_UPDATED_ABS_PRESSURE = 512 ; const HIGHRES_IMU_UPDATED_DIFF_PRESSURE = 1024 ; const HIGHRES_IMU_UPDATED_PRESSURE_ALT = 2048 ; const HIGHRES_IMU_UPDATED_TEMPERATURE = 4096 ; const HIGHRES_IMU_UPDATED_ALL = 65535 ; } } impl HighresImuUpdatedFlags { pub const DEFAULT : Self = Self :: HIGHRES_IMU_UPDATED_NONE ; } impl Default for HighresImuUpdatedFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MotorTestOrder { MOTOR_TEST_ORDER_DEFAULT = 0 , MOTOR_TEST_ORDER_SEQUENCE = 1 , MOTOR_TEST_ORDER_BOARD = 2 , } impl MotorTestOrder { pub const DEFAULT : Self = Self :: MOTOR_TEST_ORDER_DEFAULT ; } impl Default for MotorTestOrder { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum IcarousTrackBandTypes { ICAROUS_TRACK_BAND_TYPE_NONE = 0 , ICAROUS_TRACK_BAND_TYPE_NEAR = 1 , ICAROUS_TRACK_BAND_TYPE_RECOVERY = 2 , } impl IcarousTrackBandTypes { pub const DEFAULT : Self = Self :: ICAROUS_TRACK_BAND_TYPE_NONE ; } impl Default for IcarousTrackBandTypes { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavState { MAV_STATE_UNINIT = 0 , MAV_STATE_BOOT = 1 , MAV_STATE_CALIBRATING = 2 , MAV_STATE_STANDBY = 3 , MAV_STATE_ACTIVE = 4 , MAV_STATE_CRITICAL = 5 , MAV_STATE_EMERGENCY = 6 , MAV_STATE_POWEROFF = 7 , MAV_STATE_FLIGHT_TERMINATION = 8 , } impl MavState { pub const DEFAULT : Self = Self :: MAV_STATE_UNINIT ; } impl Default for MavState { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavSeverity { MAV_SEVERITY_EMERGENCY = 0 , MAV_SEVERITY_ALERT = 1 , MAV_SEVERITY_CRITICAL = 2 , MAV_SEVERITY_ERROR = 3 , MAV_SEVERITY_WARNING = 4 , MAV_SEVERITY_NOTICE = 5 , MAV_SEVERITY_INFO = 6 , MAV_SEVERITY_DEBUG = 7 , } impl MavSeverity { pub const DEFAULT : Self = Self :: MAV_SEVERITY_EMERGENCY ; } impl Default for MavSeverity { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum GoproModel { GOPRO_MODEL_UNKNOWN = 0 , GOPRO_MODEL_HERO_3_PLUS_SILVER = 1 , GOPRO_MODEL_HERO_3_PLUS_BLACK = 2 , GOPRO_MODEL_HERO_4_SILVER = 3 , GOPRO_MODEL_HERO_4_BLACK = 4 , } impl GoproModel { pub const DEFAULT : Self = Self :: GOPRO_MODEL_UNKNOWN ; } impl Default for GoproModel { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum GoproProtuneColour { GOPRO_PROTUNE_COLOUR_STANDARD = 0 , GOPRO_PROTUNE_COLOUR_NEUTRAL = 1 , } impl GoproProtuneColour { pub const DEFAULT : Self = Self :: GOPRO_PROTUNE_COLOUR_STANDARD ; } impl Default for GoproProtuneColour { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavResult { MAV_RESULT_ACCEPTED = 0 , MAV_RESULT_TEMPORARILY_REJECTED = 1 , MAV_RESULT_DENIED = 2 , MAV_RESULT_UNSUPPORTED = 3 , MAV_RESULT_FAILED = 4 , MAV_RESULT_IN_PROGRESS = 5 , MAV_RESULT_CANCELLED = 6 , } impl MavResult { pub const DEFAULT : Self = Self :: MAV_RESULT_ACCEPTED ; } impl Default for MavResult { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum GimbalAxisCalibrationStatus { GIMBAL_AXIS_CALIBRATION_STATUS_IN_PROGRESS = 0 , GIMBAL_AXIS_CALIBRATION_STATUS_SUCCEEDED = 1 , GIMBAL_AXIS_CALIBRATION_STATUS_FAILED = 2 , } impl GimbalAxisCalibrationStatus { pub const DEFAULT : Self = Self :: GIMBAL_AXIS_CALIBRATION_STATUS_IN_PROGRESS ; } impl Default for GimbalAxisCalibrationStatus { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum CopterMode { COPTER_MODE_STABILIZE = 0 , COPTER_MODE_ACRO = 1 , COPTER_MODE_ALT_HOLD = 2 , COPTER_MODE_AUTO = 3 , COPTER_MODE_GUIDED = 4 , COPTER_MODE_LOITER = 5 , COPTER_MODE_RTL = 6 , COPTER_MODE_CIRCLE = 7 , COPTER_MODE_LAND = 9 , COPTER_MODE_DRIFT = 11 , COPTER_MODE_SPORT = 13 , COPTER_MODE_FLIP = 14 , COPTER_MODE_AUTOTUNE = 15 , COPTER_MODE_POSHOLD = 16 , COPTER_MODE_BRAKE = 17 , COPTER_MODE_THROW = 18 , COPTER_MODE_AVOID_ADSB = 19 , COPTER_MODE_GUIDED_NOGPS = 20 , COPTER_MODE_SMART_RTL = 21 , COPTER_MODE_FLOWHOLD = 22 , COPTER_MODE_FOLLOW = 23 , COPTER_MODE_ZIGZAG = 24 , COPTER_MODE_SYSTEMID = 25 , COPTER_MODE_AUTOROTATE = 26 , COPTER_MODE_AUTO_RTL = 27 , } impl CopterMode { pub const DEFAULT : Self = Self :: COPTER_MODE_STABILIZE ; } impl Default for CopterMode { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct UtmDataAvailFlags : u8 { const UTM_DATA_AVAIL_FLAGS_TIME_VALID = 1 ; const UTM_DATA_AVAIL_FLAGS_UAS_ID_AVAILABLE = 2 ; const UTM_DATA_AVAIL_FLAGS_POSITION_AVAILABLE = 4 ; const UTM_DATA_AVAIL_FLAGS_ALTITUDE_AVAILABLE = 8 ; const UTM_DATA_AVAIL_FLAGS_RELATIVE_ALTITUDE_AVAILABLE = 16 ; const UTM_DATA_AVAIL_FLAGS_HORIZONTAL_VELO_AVAILABLE = 32 ; const UTM_DATA_AVAIL_FLAGS_VERTICAL_VELO_AVAILABLE = 64 ; const UTM_DATA_AVAIL_FLAGS_NEXT_WAYPOINT_AVAILABLE = 128 ; } } impl UtmDataAvailFlags { pub const DEFAULT : Self = Self :: UTM_DATA_AVAIL_FLAGS_TIME_VALID ; } impl Default for UtmDataAvailFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidHeightRef { MAV_ODID_HEIGHT_REF_OVER_TAKEOFF = 0 , MAV_ODID_HEIGHT_REF_OVER_GROUND = 1 , } impl MavOdidHeightRef { pub const DEFAULT : Self = Self :: MAV_ODID_HEIGHT_REF_OVER_TAKEOFF ; } impl Default for MavOdidHeightRef { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum AutotuneAxis { AUTOTUNE_AXIS_DEFAULT = 0 , AUTOTUNE_AXIS_ROLL = 1 , AUTOTUNE_AXIS_PITCH = 2 , AUTOTUNE_AXIS_YAW = 4 , } impl AutotuneAxis { pub const DEFAULT : Self = Self :: AUTOTUNE_AXIS_DEFAULT ; } impl Default for AutotuneAxis { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct AttitudeTargetTypemask : u8 { const ATTITUDE_TARGET_TYPEMASK_BODY_ROLL_RATE_IGNORE = 1 ; const ATTITUDE_TARGET_TYPEMASK_BODY_PITCH_RATE_IGNORE = 2 ; const ATTITUDE_TARGET_TYPEMASK_BODY_YAW_RATE_IGNORE = 4 ; const ATTITUDE_TARGET_TYPEMASK_THRUST_BODY_SET = 32 ; const ATTITUDE_TARGET_TYPEMASK_THROTTLE_IGNORE = 64 ; const ATTITUDE_TARGET_TYPEMASK_ATTITUDE_IGNORE = 128 ; } } impl AttitudeTargetTypemask { pub const DEFAULT : Self = Self :: ATTITUDE_TARGET_TYPEMASK_BODY_ROLL_RATE_IGNORE ; } impl Default for AttitudeTargetTypemask { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum CellularNetworkFailedReason { CELLULAR_NETWORK_FAILED_REASON_NONE = 0 , CELLULAR_NETWORK_FAILED_REASON_UNKNOWN = 1 , CELLULAR_NETWORK_FAILED_REASON_SIM_MISSING = 2 , CELLULAR_NETWORK_FAILED_REASON_SIM_ERROR = 3 , } impl CellularNetworkFailedReason { pub const DEFAULT : Self = Self :: CELLULAR_NETWORK_FAILED_REASON_NONE ; } impl Default for CellularNetworkFailedReason { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum GpsFixType { GPS_FIX_TYPE_NO_GPS = 0 , GPS_FIX_TYPE_NO_FIX = 1 , GPS_FIX_TYPE_2D_FIX = 2 , GPS_FIX_TYPE_3D_FIX = 3 , GPS_FIX_TYPE_DGPS = 4 , GPS_FIX_TYPE_RTK_FLOAT = 5 , GPS_FIX_TYPE_RTK_FIXED = 6 , GPS_FIX_TYPE_STATIC = 7 , GPS_FIX_TYPE_PPP = 8 , } impl GpsFixType { pub const DEFAULT : Self = Self :: GPS_FIX_TYPE_NO_GPS ; } impl Default for GpsFixType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum FenceBreach { FENCE_BREACH_NONE = 0 , FENCE_BREACH_MINALT = 1 , FENCE_BREACH_MAXALT = 2 , FENCE_BREACH_BOUNDARY = 3 , } impl FenceBreach { pub const DEFAULT : Self = Self :: FENCE_BREACH_NONE ; } impl Default for FenceBreach { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LimitModule : u8 { const LIMIT_GPSLOCK = 1 ; const LIMIT_GEOFENCE = 2 ; const LIMIT_ALTITUDE = 4 ; } } impl LimitModule { pub const DEFAULT : Self = Self :: LIMIT_GPSLOCK ; } impl Default for LimitModule { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum GripperActions { GRIPPER_ACTION_RELEASE = 0 , GRIPPER_ACTION_GRAB = 1 , } impl GripperActions { pub const DEFAULT : Self = Self :: GRIPPER_ACTION_RELEASE ; } impl Default for GripperActions { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MissionState { MISSION_STATE_UNKNOWN = 0 , MISSION_STATE_NO_MISSION = 1 , MISSION_STATE_NOT_STARTED = 2 , MISSION_STATE_ACTIVE = 3 , MISSION_STATE_PAUSED = 4 , MISSION_STATE_COMPLETE = 5 , } impl MissionState { pub const DEFAULT : Self = Self :: MISSION_STATE_UNKNOWN ; } impl Default for MissionState { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum RtkBaselineCoordinateSystem { RTK_BASELINE_COORDINATE_SYSTEM_ECEF = 0 , RTK_BASELINE_COORDINATE_SYSTEM_NED = 1 , } impl RtkBaselineCoordinateSystem { pub const DEFAULT : Self = Self :: RTK_BASELINE_COORDINATE_SYSTEM_ECEF ; } impl Default for RtkBaselineCoordinateSystem { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavComponent { MAV_COMP_ID_ALL = 0 , MAV_COMP_ID_AUTOPILOT1 = 1 , MAV_COMP_ID_USER1 = 25 , MAV_COMP_ID_USER2 = 26 , MAV_COMP_ID_USER3 = 27 , MAV_COMP_ID_USER4 = 28 , MAV_COMP_ID_USER5 = 29 , MAV_COMP_ID_USER6 = 30 , MAV_COMP_ID_USER7 = 31 , MAV_COMP_ID_USER8 = 32 , MAV_COMP_ID_USER9 = 33 , MAV_COMP_ID_USER10 = 34 , MAV_COMP_ID_USER11 = 35 , MAV_COMP_ID_USER12 = 36 , MAV_COMP_ID_USER13 = 37 , MAV_COMP_ID_USER14 = 38 , MAV_COMP_ID_USER15 = 39 , MAV_COMP_ID_USER16 = 40 , MAV_COMP_ID_USER17 = 41 , MAV_COMP_ID_USER18 = 42 , MAV_COMP_ID_USER19 = 43 , MAV_COMP_ID_USER20 = 44 , MAV_COMP_ID_USER21 = 45 , MAV_COMP_ID_USER22 = 46 , MAV_COMP_ID_USER23 = 47 , MAV_COMP_ID_USER24 = 48 , MAV_COMP_ID_USER25 = 49 , MAV_COMP_ID_USER26 = 50 , MAV_COMP_ID_USER27 = 51 , MAV_COMP_ID_USER28 = 52 , MAV_COMP_ID_USER29 = 53 , MAV_COMP_ID_USER30 = 54 , MAV_COMP_ID_USER31 = 55 , MAV_COMP_ID_USER32 = 56 , MAV_COMP_ID_USER33 = 57 , MAV_COMP_ID_USER34 = 58 , MAV_COMP_ID_USER35 = 59 , MAV_COMP_ID_USER36 = 60 , MAV_COMP_ID_USER37 = 61 , MAV_COMP_ID_USER38 = 62 , MAV_COMP_ID_USER39 = 63 , MAV_COMP_ID_USER40 = 64 , MAV_COMP_ID_USER41 = 65 , MAV_COMP_ID_USER42 = 66 , MAV_COMP_ID_USER43 = 67 , MAV_COMP_ID_TELEMETRY_RADIO = 68 , MAV_COMP_ID_USER45 = 69 , MAV_COMP_ID_USER46 = 70 , MAV_COMP_ID_USER47 = 71 , MAV_COMP_ID_USER48 = 72 , MAV_COMP_ID_USER49 = 73 , MAV_COMP_ID_USER50 = 74 , MAV_COMP_ID_USER51 = 75 , MAV_COMP_ID_USER52 = 76 , MAV_COMP_ID_USER53 = 77 , MAV_COMP_ID_USER54 = 78 , MAV_COMP_ID_USER55 = 79 , MAV_COMP_ID_USER56 = 80 , MAV_COMP_ID_USER57 = 81 , MAV_COMP_ID_USER58 = 82 , MAV_COMP_ID_USER59 = 83 , MAV_COMP_ID_USER60 = 84 , MAV_COMP_ID_USER61 = 85 , MAV_COMP_ID_USER62 = 86 , MAV_COMP_ID_USER63 = 87 , MAV_COMP_ID_USER64 = 88 , MAV_COMP_ID_USER65 = 89 , MAV_COMP_ID_USER66 = 90 , MAV_COMP_ID_USER67 = 91 , MAV_COMP_ID_USER68 = 92 , MAV_COMP_ID_USER69 = 93 , MAV_COMP_ID_USER70 = 94 , MAV_COMP_ID_USER71 = 95 , MAV_COMP_ID_USER72 = 96 , MAV_COMP_ID_USER73 = 97 , MAV_COMP_ID_USER74 = 98 , MAV_COMP_ID_USER75 = 99 , MAV_COMP_ID_CAMERA = 100 , MAV_COMP_ID_CAMERA2 = 101 , MAV_COMP_ID_CAMERA3 = 102 , MAV_COMP_ID_CAMERA4 = 103 , MAV_COMP_ID_CAMERA5 = 104 , MAV_COMP_ID_CAMERA6 = 105 , MAV_COMP_ID_SERVO1 = 140 , MAV_COMP_ID_SERVO2 = 141 , MAV_COMP_ID_SERVO3 = 142 , MAV_COMP_ID_SERVO4 = 143 , MAV_COMP_ID_SERVO5 = 144 , MAV_COMP_ID_SERVO6 = 145 , MAV_COMP_ID_SERVO7 = 146 , MAV_COMP_ID_SERVO8 = 147 , MAV_COMP_ID_SERVO9 = 148 , MAV_COMP_ID_SERVO10 = 149 , MAV_COMP_ID_SERVO11 = 150 , MAV_COMP_ID_SERVO12 = 151 , MAV_COMP_ID_SERVO13 = 152 , MAV_COMP_ID_SERVO14 = 153 , MAV_COMP_ID_GIMBAL = 154 , MAV_COMP_ID_LOG = 155 , MAV_COMP_ID_ADSB = 156 , MAV_COMP_ID_OSD = 157 , MAV_COMP_ID_PERIPHERAL = 158 , MAV_COMP_ID_QX1_GIMBAL = 159 , MAV_COMP_ID_FLARM = 160 , MAV_COMP_ID_PARACHUTE = 161 , MAV_COMP_ID_WINCH = 169 , MAV_COMP_ID_GIMBAL2 = 171 , MAV_COMP_ID_GIMBAL3 = 172 , MAV_COMP_ID_GIMBAL4 = 173 , MAV_COMP_ID_GIMBAL5 = 174 , MAV_COMP_ID_GIMBAL6 = 175 , MAV_COMP_ID_BATTERY = 180 , MAV_COMP_ID_BATTERY2 = 181 , MAV_COMP_ID_MAVCAN = 189 , MAV_COMP_ID_MISSIONPLANNER = 190 , MAV_COMP_ID_ONBOARD_COMPUTER = 191 , MAV_COMP_ID_ONBOARD_COMPUTER2 = 192 , MAV_COMP_ID_ONBOARD_COMPUTER3 = 193 , MAV_COMP_ID_ONBOARD_COMPUTER4 = 194 , MAV_COMP_ID_PATHPLANNER = 195 , MAV_COMP_ID_OBSTACLE_AVOIDANCE = 196 , MAV_COMP_ID_VISUAL_INERTIAL_ODOMETRY = 197 , MAV_COMP_ID_PAIRING_MANAGER = 198 , MAV_COMP_ID_IMU = 200 , MAV_COMP_ID_IMU_2 = 201 , MAV_COMP_ID_IMU_3 = 202 , MAV_COMP_ID_GPS = 220 , MAV_COMP_ID_GPS2 = 221 , MAV_COMP_ID_ODID_TXRX_1 = 236 , MAV_COMP_ID_ODID_TXRX_2 = 237 , MAV_COMP_ID_ODID_TXRX_3 = 238 , MAV_COMP_ID_UDP_BRIDGE = 240 , MAV_COMP_ID_UART_BRIDGE = 241 , MAV_COMP_ID_TUNNEL_NODE = 242 , MAV_COMP_ID_SYSTEM_CONTROL = 250 , } impl MavComponent { pub const DEFAULT : Self = Self :: MAV_COMP_ID_ALL ; } impl Default for MavComponent { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HlFailureFlag : u16 { const HL_FAILURE_FLAG_GPS = 1 ; const HL_FAILURE_FLAG_DIFFERENTIAL_PRESSURE = 2 ; const HL_FAILURE_FLAG_ABSOLUTE_PRESSURE = 4 ; const HL_FAILURE_FLAG_3D_ACCEL = 8 ; const HL_FAILURE_FLAG_3D_GYRO = 16 ; const HL_FAILURE_FLAG_3D_MAG = 32 ; const HL_FAILURE_FLAG_TERRAIN = 64 ; const HL_FAILURE_FLAG_BATTERY = 128 ; const HL_FAILURE_FLAG_RC_RECEIVER = 256 ; const HL_FAILURE_FLAG_OFFBOARD_LINK = 512 ; const HL_FAILURE_FLAG_ENGINE = 1024 ; const HL_FAILURE_FLAG_GEOFENCE = 2048 ; const HL_FAILURE_FLAG_ESTIMATOR = 4096 ; const HL_FAILURE_FLAG_MISSION = 8192 ; } } impl HlFailureFlag { pub const DEFAULT : Self = Self :: HL_FAILURE_FLAG_GPS ; } impl Default for HlFailureFlag { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum AisType { AIS_TYPE_UNKNOWN = 0 , AIS_TYPE_RESERVED_1 = 1 , AIS_TYPE_RESERVED_2 = 2 , AIS_TYPE_RESERVED_3 = 3 , AIS_TYPE_RESERVED_4 = 4 , AIS_TYPE_RESERVED_5 = 5 , AIS_TYPE_RESERVED_6 = 6 , AIS_TYPE_RESERVED_7 = 7 , AIS_TYPE_RESERVED_8 = 8 , AIS_TYPE_RESERVED_9 = 9 , AIS_TYPE_RESERVED_10 = 10 , AIS_TYPE_RESERVED_11 = 11 , AIS_TYPE_RESERVED_12 = 12 , AIS_TYPE_RESERVED_13 = 13 , AIS_TYPE_RESERVED_14 = 14 , AIS_TYPE_RESERVED_15 = 15 , AIS_TYPE_RESERVED_16 = 16 , AIS_TYPE_RESERVED_17 = 17 , AIS_TYPE_RESERVED_18 = 18 , AIS_TYPE_RESERVED_19 = 19 , AIS_TYPE_WIG = 20 , AIS_TYPE_WIG_HAZARDOUS_A = 21 , AIS_TYPE_WIG_HAZARDOUS_B = 22 , AIS_TYPE_WIG_HAZARDOUS_C = 23 , AIS_TYPE_WIG_HAZARDOUS_D = 24 , AIS_TYPE_WIG_RESERVED_1 = 25 , AIS_TYPE_WIG_RESERVED_2 = 26 , AIS_TYPE_WIG_RESERVED_3 = 27 , AIS_TYPE_WIG_RESERVED_4 = 28 , AIS_TYPE_WIG_RESERVED_5 = 29 , AIS_TYPE_FISHING = 30 , AIS_TYPE_TOWING = 31 , AIS_TYPE_TOWING_LARGE = 32 , AIS_TYPE_DREDGING = 33 , AIS_TYPE_DIVING = 34 , AIS_TYPE_MILITARY = 35 , AIS_TYPE_SAILING = 36 , AIS_TYPE_PLEASURE = 37 , AIS_TYPE_RESERVED_20 = 38 , AIS_TYPE_RESERVED_21 = 39 , AIS_TYPE_HSC = 40 , AIS_TYPE_HSC_HAZARDOUS_A = 41 , AIS_TYPE_HSC_HAZARDOUS_B = 42 , AIS_TYPE_HSC_HAZARDOUS_C = 43 , AIS_TYPE_HSC_HAZARDOUS_D = 44 , AIS_TYPE_HSC_RESERVED_1 = 45 , AIS_TYPE_HSC_RESERVED_2 = 46 , AIS_TYPE_HSC_RESERVED_3 = 47 , AIS_TYPE_HSC_RESERVED_4 = 48 , AIS_TYPE_HSC_UNKNOWN = 49 , AIS_TYPE_PILOT = 50 , AIS_TYPE_SAR = 51 , AIS_TYPE_TUG = 52 , AIS_TYPE_PORT_TENDER = 53 , AIS_TYPE_ANTI_POLLUTION = 54 , AIS_TYPE_LAW_ENFORCEMENT = 55 , AIS_TYPE_SPARE_LOCAL_1 = 56 , AIS_TYPE_SPARE_LOCAL_2 = 57 , AIS_TYPE_MEDICAL_TRANSPORT = 58 , AIS_TYPE_NONECOMBATANT = 59 , AIS_TYPE_PASSENGER = 60 , AIS_TYPE_PASSENGER_HAZARDOUS_A = 61 , AIS_TYPE_PASSENGER_HAZARDOUS_B = 62 , AIS_TYPE_PASSENGER_HAZARDOUS_C = 63 , AIS_TYPE_PASSENGER_HAZARDOUS_D = 64 , AIS_TYPE_PASSENGER_RESERVED_1 = 65 , AIS_TYPE_PASSENGER_RESERVED_2 = 66 , AIS_TYPE_PASSENGER_RESERVED_3 = 67 , AIS_TYPE_PASSENGER_RESERVED_4 = 68 , AIS_TYPE_PASSENGER_UNKNOWN = 69 , AIS_TYPE_CARGO = 70 , AIS_TYPE_CARGO_HAZARDOUS_A = 71 , AIS_TYPE_CARGO_HAZARDOUS_B = 72 , AIS_TYPE_CARGO_HAZARDOUS_C = 73 , AIS_TYPE_CARGO_HAZARDOUS_D = 74 , AIS_TYPE_CARGO_RESERVED_1 = 75 , AIS_TYPE_CARGO_RESERVED_2 = 76 , AIS_TYPE_CARGO_RESERVED_3 = 77 , AIS_TYPE_CARGO_RESERVED_4 = 78 , AIS_TYPE_CARGO_UNKNOWN = 79 , AIS_TYPE_TANKER = 80 , AIS_TYPE_TANKER_HAZARDOUS_A = 81 , AIS_TYPE_TANKER_HAZARDOUS_B = 82 , AIS_TYPE_TANKER_HAZARDOUS_C = 83 , AIS_TYPE_TANKER_HAZARDOUS_D = 84 , AIS_TYPE_TANKER_RESERVED_1 = 85 , AIS_TYPE_TANKER_RESERVED_2 = 86 , AIS_TYPE_TANKER_RESERVED_3 = 87 , AIS_TYPE_TANKER_RESERVED_4 = 88 , AIS_TYPE_TANKER_UNKNOWN = 89 , AIS_TYPE_OTHER = 90 , AIS_TYPE_OTHER_HAZARDOUS_A = 91 , AIS_TYPE_OTHER_HAZARDOUS_B = 92 , AIS_TYPE_OTHER_HAZARDOUS_C = 93 , AIS_TYPE_OTHER_HAZARDOUS_D = 94 , AIS_TYPE_OTHER_RESERVED_1 = 95 , AIS_TYPE_OTHER_RESERVED_2 = 96 , AIS_TYPE_OTHER_RESERVED_3 = 97 , AIS_TYPE_OTHER_RESERVED_4 = 98 , AIS_TYPE_OTHER_UNKNOWN = 99 , } impl AisType { pub const DEFAULT : Self = Self :: AIS_TYPE_UNKNOWN ; } impl Default for AisType { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GimbalDeviceFlags : u16 { const GIMBAL_DEVICE_FLAGS_RETRACT = 1 ; const GIMBAL_DEVICE_FLAGS_NEUTRAL = 2 ; const GIMBAL_DEVICE_FLAGS_ROLL_LOCK = 4 ; const GIMBAL_DEVICE_FLAGS_PITCH_LOCK = 8 ; const GIMBAL_DEVICE_FLAGS_YAW_LOCK = 16 ; const GIMBAL_DEVICE_FLAGS_YAW_IN_VEHICLE_FRAME = 32 ; const GIMBAL_DEVICE_FLAGS_YAW_IN_EARTH_FRAME = 64 ; const GIMBAL_DEVICE_FLAGS_ACCEPTS_YAW_IN_EARTH_FRAME = 128 ; const GIMBAL_DEVICE_FLAGS_RC_EXCLUSIVE = 256 ; const GIMBAL_DEVICE_FLAGS_RC_MIXED = 512 ; } } impl GimbalDeviceFlags { pub const DEFAULT : Self = Self :: GIMBAL_DEVICE_FLAGS_RETRACT ; } impl Default for GimbalDeviceFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum WifiConfigApMode { WIFI_CONFIG_AP_MODE_UNDEFINED = 0 , WIFI_CONFIG_AP_MODE_AP = 1 , WIFI_CONFIG_AP_MODE_STATION = 2 , WIFI_CONFIG_AP_MODE_DISABLED = 3 , } impl WifiConfigApMode { pub const DEFAULT : Self = Self :: WIFI_CONFIG_AP_MODE_UNDEFINED ; } impl Default for WifiConfigApMode { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidDescType { MAV_ODID_DESC_TYPE_TEXT = 0 , MAV_ODID_DESC_TYPE_EMERGENCY = 1 , MAV_ODID_DESC_TYPE_EXTENDED_STATUS = 2 , } impl MavOdidDescType { pub const DEFAULT : Self = Self :: MAV_ODID_DESC_TYPE_TEXT ; } impl Default for MavOdidDescType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum UavionixAdsbEmergencyStatus { UAVIONIX_ADSB_OUT_NO_EMERGENCY = 0 , UAVIONIX_ADSB_OUT_GENERAL_EMERGENCY = 1 , UAVIONIX_ADSB_OUT_LIFEGUARD_EMERGENCY = 2 , UAVIONIX_ADSB_OUT_MINIMUM_FUEL_EMERGENCY = 3 , UAVIONIX_ADSB_OUT_NO_COMM_EMERGENCY = 4 , UAVIONIX_ADSB_OUT_UNLAWFUL_INTERFERANCE_EMERGENCY = 5 , UAVIONIX_ADSB_OUT_DOWNED_AIRCRAFT_EMERGENCY = 6 , UAVIONIX_ADSB_OUT_RESERVED = 7 , } impl UavionixAdsbEmergencyStatus { pub const DEFAULT : Self = Self :: UAVIONIX_ADSB_OUT_NO_EMERGENCY ; } impl Default for UavionixAdsbEmergencyStatus { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum GoproCommand { GOPRO_COMMAND_POWER = 0 , GOPRO_COMMAND_CAPTURE_MODE = 1 , GOPRO_COMMAND_SHUTTER = 2 , GOPRO_COMMAND_BATTERY = 3 , GOPRO_COMMAND_MODEL = 4 , GOPRO_COMMAND_VIDEO_SETTINGS = 5 , GOPRO_COMMAND_LOW_LIGHT = 6 , GOPRO_COMMAND_PHOTO_RESOLUTION = 7 , GOPRO_COMMAND_PHOTO_BURST_RATE = 8 , GOPRO_COMMAND_PROTUNE = 9 , GOPRO_COMMAND_PROTUNE_WHITE_BALANCE = 10 , GOPRO_COMMAND_PROTUNE_COLOUR = 11 , GOPRO_COMMAND_PROTUNE_GAIN = 12 , GOPRO_COMMAND_PROTUNE_SHARPNESS = 13 , GOPRO_COMMAND_PROTUNE_EXPOSURE = 14 , GOPRO_COMMAND_TIME = 15 , GOPRO_COMMAND_CHARGING = 16 , } impl GoproCommand { pub const DEFAULT : Self = Self :: GOPRO_COMMAND_POWER ; } impl Default for GoproCommand { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum RoverMode { ROVER_MODE_MANUAL = 0 , ROVER_MODE_ACRO = 1 , ROVER_MODE_STEERING = 3 , ROVER_MODE_HOLD = 4 , ROVER_MODE_LOITER = 5 , ROVER_MODE_FOLLOW = 6 , ROVER_MODE_SIMPLE = 7 , ROVER_MODE_AUTO = 10 , ROVER_MODE_RTL = 11 , ROVER_MODE_SMART_RTL = 12 , ROVER_MODE_GUIDED = 15 , ROVER_MODE_INITIALIZING = 16 , } impl RoverMode { pub const DEFAULT : Self = Self :: ROVER_MODE_MANUAL ; } impl Default for RoverMode { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum EscConnectionType { ESC_CONNECTION_TYPE_PPM = 0 , ESC_CONNECTION_TYPE_SERIAL = 1 , ESC_CONNECTION_TYPE_ONESHOT = 2 , ESC_CONNECTION_TYPE_I2C = 3 , ESC_CONNECTION_TYPE_CAN = 4 , ESC_CONNECTION_TYPE_DSHOT = 5 , } impl EscConnectionType { pub const DEFAULT : Self = Self :: ESC_CONNECTION_TYPE_PPM ; } impl Default for EscConnectionType { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GimbalDeviceCapFlags : u16 { const GIMBAL_DEVICE_CAP_FLAGS_HAS_RETRACT = 1 ; const GIMBAL_DEVICE_CAP_FLAGS_HAS_NEUTRAL = 2 ; const GIMBAL_DEVICE_CAP_FLAGS_HAS_ROLL_AXIS = 4 ; const GIMBAL_DEVICE_CAP_FLAGS_HAS_ROLL_FOLLOW = 8 ; const GIMBAL_DEVICE_CAP_FLAGS_HAS_ROLL_LOCK = 16 ; const GIMBAL_DEVICE_CAP_FLAGS_HAS_PITCH_AXIS = 32 ; const GIMBAL_DEVICE_CAP_FLAGS_HAS_PITCH_FOLLOW = 64 ; const GIMBAL_DEVICE_CAP_FLAGS_HAS_PITCH_LOCK = 128 ; const GIMBAL_DEVICE_CAP_FLAGS_HAS_YAW_AXIS = 256 ; const GIMBAL_DEVICE_CAP_FLAGS_HAS_YAW_FOLLOW = 512 ; const GIMBAL_DEVICE_CAP_FLAGS_HAS_YAW_LOCK = 1024 ; const GIMBAL_DEVICE_CAP_FLAGS_SUPPORTS_INFINITE_YAW = 2048 ; const GIMBAL_DEVICE_CAP_FLAGS_SUPPORTS_YAW_IN_EARTH_FRAME = 4096 ; const GIMBAL_DEVICE_CAP_FLAGS_HAS_RC_INPUTS = 8192 ; } } impl GimbalDeviceCapFlags { pub const DEFAULT : Self = Self :: GIMBAL_DEVICE_CAP_FLAGS_HAS_RETRACT ; } impl Default for GimbalDeviceCapFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum OrbitYawBehaviour { ORBIT_YAW_BEHAVIOUR_HOLD_FRONT_TO_CIRCLE_CENTER = 0 , ORBIT_YAW_BEHAVIOUR_HOLD_INITIAL_HEADING = 1 , ORBIT_YAW_BEHAVIOUR_UNCONTROLLED = 2 , ORBIT_YAW_BEHAVIOUR_HOLD_FRONT_TANGENT_TO_CIRCLE = 3 , ORBIT_YAW_BEHAVIOUR_RC_CONTROLLED = 4 , } impl OrbitYawBehaviour { pub const DEFAULT : Self = Self :: ORBIT_YAW_BEHAVIOUR_HOLD_FRONT_TO_CIRCLE_CENTER ; } impl Default for OrbitYawBehaviour { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum PreflightStorageParameterAction { PARAM_READ_PERSISTENT = 0 , PARAM_WRITE_PERSISTENT = 1 , PARAM_RESET_CONFIG_DEFAULT = 2 , PARAM_RESET_SENSOR_DEFAULT = 3 , PARAM_RESET_ALL_DEFAULT = 4 , } impl PreflightStorageParameterAction { pub const DEFAULT : Self = Self :: PARAM_READ_PERSISTENT ; } impl Default for PreflightStorageParameterAction { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum FirmwareVersionType { FIRMWARE_VERSION_TYPE_DEV = 0 , FIRMWARE_VERSION_TYPE_ALPHA = 64 , FIRMWARE_VERSION_TYPE_BETA = 128 , FIRMWARE_VERSION_TYPE_RC = 192 , FIRMWARE_VERSION_TYPE_OFFICIAL = 255 , } impl FirmwareVersionType { pub const DEFAULT : Self = Self :: FIRMWARE_VERSION_TYPE_DEV ; } impl Default for FirmwareVersionType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum RcType { RC_TYPE_SPEKTRUM_DSM2 = 0 , RC_TYPE_SPEKTRUM_DSMX = 1 , } impl RcType { pub const DEFAULT : Self = Self :: RC_TYPE_SPEKTRUM_DSM2 ; } impl Default for RcType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum AisNavStatus { UNDER_WAY = 0 , AIS_NAV_ANCHORED = 1 , AIS_NAV_UN_COMMANDED = 2 , AIS_NAV_RESTRICTED_MANOEUVERABILITY = 3 , AIS_NAV_DRAUGHT_CONSTRAINED = 4 , AIS_NAV_MOORED = 5 , AIS_NAV_AGROUND = 6 , AIS_NAV_FISHING = 7 , AIS_NAV_SAILING = 8 , AIS_NAV_RESERVED_HSC = 9 , AIS_NAV_RESERVED_WIG = 10 , AIS_NAV_RESERVED_1 = 11 , AIS_NAV_RESERVED_2 = 12 , AIS_NAV_RESERVED_3 = 13 , AIS_NAV_AIS_SART = 14 , AIS_NAV_UNKNOWN = 15 , } impl AisNavStatus { pub const DEFAULT : Self = Self :: UNDER_WAY ; } impl Default for AisNavStatus { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum CameraMode { CAMERA_MODE_IMAGE = 0 , CAMERA_MODE_VIDEO = 1 , CAMERA_MODE_IMAGE_SURVEY = 2 , } impl CameraMode { pub const DEFAULT : Self = Self :: CAMERA_MODE_IMAGE ; } impl Default for CameraMode { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MagCalStatus { MAG_CAL_NOT_STARTED = 0 , MAG_CAL_WAITING_TO_START = 1 , MAG_CAL_RUNNING_STEP_ONE = 2 , MAG_CAL_RUNNING_STEP_TWO = 3 , MAG_CAL_SUCCESS = 4 , MAG_CAL_FAILED = 5 , MAG_CAL_BAD_ORIENTATION = 6 , MAG_CAL_BAD_RADIUS = 7 , } impl MagCalStatus { pub const DEFAULT : Self = Self :: MAG_CAL_NOT_STARTED ; } impl Default for MagCalStatus { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavSysStatusSensorExtended { MAV_SYS_STATUS_RECOVERY_SYSTEM = 1 , } impl MavSysStatusSensorExtended { pub const DEFAULT : Self = Self :: MAV_SYS_STATUS_RECOVERY_SYSTEM ; } impl Default for MavSysStatusSensorExtended { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum UavcanNodeMode { UAVCAN_NODE_MODE_OPERATIONAL = 0 , UAVCAN_NODE_MODE_INITIALIZATION = 1 , UAVCAN_NODE_MODE_MAINTENANCE = 2 , UAVCAN_NODE_MODE_SOFTWARE_UPDATE = 3 , UAVCAN_NODE_MODE_OFFLINE = 7 , } impl UavcanNodeMode { pub const DEFAULT : Self = Self :: UAVCAN_NODE_MODE_OPERATIONAL ; } impl Default for UavcanNodeMode { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavEstimatorType { MAV_ESTIMATOR_TYPE_UNKNOWN = 0 , MAV_ESTIMATOR_TYPE_NAIVE = 1 , MAV_ESTIMATOR_TYPE_VISION = 2 , MAV_ESTIMATOR_TYPE_VIO = 3 , MAV_ESTIMATOR_TYPE_GPS = 4 , MAV_ESTIMATOR_TYPE_GPS_INS = 5 , MAV_ESTIMATOR_TYPE_MOCAP = 6 , MAV_ESTIMATOR_TYPE_LIDAR = 7 , MAV_ESTIMATOR_TYPE_AUTOPILOT = 8 , } impl MavEstimatorType { pub const DEFAULT : Self = Self :: MAV_ESTIMATOR_TYPE_UNKNOWN ; } impl Default for MavEstimatorType { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct AdsbFlags : u16 { const ADSB_FLAGS_VALID_COORDS = 1 ; const ADSB_FLAGS_VALID_ALTITUDE = 2 ; const ADSB_FLAGS_VALID_HEADING = 4 ; const ADSB_FLAGS_VALID_VELOCITY = 8 ; const ADSB_FLAGS_VALID_CALLSIGN = 16 ; const ADSB_FLAGS_VALID_SQUAWK = 32 ; const ADSB_FLAGS_SIMULATED = 64 ; const ADSB_FLAGS_VERTICAL_VELOCITY_VALID = 128 ; const ADSB_FLAGS_BARO_VALID = 256 ; const ADSB_FLAGS_SOURCE_UAT = 32768 ; } } impl AdsbFlags { pub const DEFAULT : Self = Self :: ADSB_FLAGS_VALID_COORDS ; } impl Default for AdsbFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum GoproResolution { GOPRO_RESOLUTION_480p = 0 , GOPRO_RESOLUTION_720p = 1 , GOPRO_RESOLUTION_960p = 2 , GOPRO_RESOLUTION_1080p = 3 , GOPRO_RESOLUTION_1440p = 4 , GOPRO_RESOLUTION_2_7k_17_9 = 5 , GOPRO_RESOLUTION_2_7k_16_9 = 6 , GOPRO_RESOLUTION_2_7k_4_3 = 7 , GOPRO_RESOLUTION_4k_16_9 = 8 , GOPRO_RESOLUTION_4k_17_9 = 9 , GOPRO_RESOLUTION_720p_SUPERVIEW = 10 , GOPRO_RESOLUTION_1080p_SUPERVIEW = 11 , GOPRO_RESOLUTION_2_7k_SUPERVIEW = 12 , GOPRO_RESOLUTION_4k_SUPERVIEW = 13 , } impl GoproResolution { pub const DEFAULT : Self = Self :: GOPRO_RESOLUTION_480p ; } impl Default for GoproResolution { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavCollisionAction { MAV_COLLISION_ACTION_NONE = 0 , MAV_COLLISION_ACTION_REPORT = 1 , MAV_COLLISION_ACTION_ASCEND_OR_DESCEND = 2 , MAV_COLLISION_ACTION_MOVE_HORIZONTALLY = 3 , MAV_COLLISION_ACTION_MOVE_PERPENDICULAR = 4 , MAV_COLLISION_ACTION_RTL = 5 , MAV_COLLISION_ACTION_HOVER = 6 , } impl MavCollisionAction { pub const DEFAULT : Self = Self :: MAV_COLLISION_ACTION_NONE ; } impl Default for MavCollisionAction { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum GoproVideoSettingsFlags { GOPRO_VIDEO_SETTINGS_TV_MODE = 1 , } impl GoproVideoSettingsFlags { pub const DEFAULT : Self = Self :: GOPRO_VIDEO_SETTINGS_TV_MODE ; } impl Default for GoproVideoSettingsFlags { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GimbalDeviceErrorFlags : u32 { const GIMBAL_DEVICE_ERROR_FLAGS_AT_ROLL_LIMIT = 1 ; const GIMBAL_DEVICE_ERROR_FLAGS_AT_PITCH_LIMIT = 2 ; const GIMBAL_DEVICE_ERROR_FLAGS_AT_YAW_LIMIT = 4 ; const GIMBAL_DEVICE_ERROR_FLAGS_ENCODER_ERROR = 8 ; const GIMBAL_DEVICE_ERROR_FLAGS_POWER_ERROR = 16 ; const GIMBAL_DEVICE_ERROR_FLAGS_MOTOR_ERROR = 32 ; const GIMBAL_DEVICE_ERROR_FLAGS_SOFTWARE_ERROR = 64 ; const GIMBAL_DEVICE_ERROR_FLAGS_COMMS_ERROR = 128 ; const GIMBAL_DEVICE_ERROR_FLAGS_CALIBRATION_RUNNING = 256 ; const GIMBAL_DEVICE_ERROR_FLAGS_NO_MANAGER = 512 ; } } impl GimbalDeviceErrorFlags { pub const DEFAULT : Self = Self :: GIMBAL_DEVICE_ERROR_FLAGS_AT_ROLL_LIMIT ; } impl Default for GimbalDeviceErrorFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum CameraZoomType { ZOOM_TYPE_STEP = 0 , ZOOM_TYPE_CONTINUOUS = 1 , ZOOM_TYPE_RANGE = 2 , ZOOM_TYPE_FOCAL_LENGTH = 3 , } impl CameraZoomType { pub const DEFAULT : Self = Self :: ZOOM_TYPE_STEP ; } impl Default for CameraZoomType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum NavVtolLandOptions { NAV_VTOL_LAND_OPTIONS_DEFAULT = 0 , NAV_VTOL_LAND_OPTIONS_FW_DESCENT = 1 , NAV_VTOL_LAND_OPTIONS_HOVER_DESCENT = 2 , } impl NavVtolLandOptions { pub const DEFAULT : Self = Self :: NAV_VTOL_LAND_OPTIONS_DEFAULT ; } impl Default for NavVtolLandOptions { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum CameraTrackingStatusFlags { CAMERA_TRACKING_STATUS_FLAGS_IDLE = 0 , CAMERA_TRACKING_STATUS_FLAGS_ACTIVE = 1 , CAMERA_TRACKING_STATUS_FLAGS_ERROR = 2 , } impl CameraTrackingStatusFlags { pub const DEFAULT : Self = Self :: CAMERA_TRACKING_STATUS_FLAGS_IDLE ; } impl Default for CameraTrackingStatusFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum GimbalManagerFlags { GIMBAL_MANAGER_FLAGS_RETRACT = 1 , GIMBAL_MANAGER_FLAGS_NEUTRAL = 2 , GIMBAL_MANAGER_FLAGS_ROLL_LOCK = 4 , GIMBAL_MANAGER_FLAGS_PITCH_LOCK = 8 , GIMBAL_MANAGER_FLAGS_YAW_LOCK = 16 , GIMBAL_MANAGER_FLAGS_YAW_IN_VEHICLE_FRAME = 32 , GIMBAL_MANAGER_FLAGS_YAW_IN_EARTH_FRAME = 64 , GIMBAL_MANAGER_FLAGS_ACCEPTS_YAW_IN_EARTH_FRAME = 128 , GIMBAL_MANAGER_FLAGS_RC_EXCLUSIVE = 256 , GIMBAL_MANAGER_FLAGS_RC_MIXED = 512 , } impl GimbalManagerFlags { pub const DEFAULT : Self = Self :: GIMBAL_MANAGER_FLAGS_RETRACT ; } impl Default for GimbalManagerFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidCategoryEu { MAV_ODID_CATEGORY_EU_UNDECLARED = 0 , MAV_ODID_CATEGORY_EU_OPEN = 1 , MAV_ODID_CATEGORY_EU_SPECIFIC = 2 , MAV_ODID_CATEGORY_EU_CERTIFIED = 3 , } impl MavOdidCategoryEu { pub const DEFAULT : Self = Self :: MAV_ODID_CATEGORY_EU_UNDECLARED ; } impl Default for MavOdidCategoryEu { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidTimeAcc { MAV_ODID_TIME_ACC_UNKNOWN = 0 , MAV_ODID_TIME_ACC_0_1_SECOND = 1 , MAV_ODID_TIME_ACC_0_2_SECOND = 2 , MAV_ODID_TIME_ACC_0_3_SECOND = 3 , MAV_ODID_TIME_ACC_0_4_SECOND = 4 , MAV_ODID_TIME_ACC_0_5_SECOND = 5 , MAV_ODID_TIME_ACC_0_6_SECOND = 6 , MAV_ODID_TIME_ACC_0_7_SECOND = 7 , MAV_ODID_TIME_ACC_0_8_SECOND = 8 , MAV_ODID_TIME_ACC_0_9_SECOND = 9 , MAV_ODID_TIME_ACC_1_0_SECOND = 10 , MAV_ODID_TIME_ACC_1_1_SECOND = 11 , MAV_ODID_TIME_ACC_1_2_SECOND = 12 , MAV_ODID_TIME_ACC_1_3_SECOND = 13 , MAV_ODID_TIME_ACC_1_4_SECOND = 14 , MAV_ODID_TIME_ACC_1_5_SECOND = 15 , } impl MavOdidTimeAcc { pub const DEFAULT : Self = Self :: MAV_ODID_TIME_ACC_UNKNOWN ; } impl Default for MavOdidTimeAcc { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum StorageUsageFlag { STORAGE_USAGE_FLAG_SET = 1 , STORAGE_USAGE_FLAG_PHOTO = 2 , STORAGE_USAGE_FLAG_VIDEO = 4 , STORAGE_USAGE_FLAG_LOGS = 8 , } impl StorageUsageFlag { pub const DEFAULT : Self = Self :: STORAGE_USAGE_FLAG_SET ; } impl Default for StorageUsageFlag { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct UavionixAdsbOutRfSelect : u8 { const UAVIONIX_ADSB_OUT_RF_SELECT_STANDBY = 0 ; const UAVIONIX_ADSB_OUT_RF_SELECT_RX_ENABLED = 1 ; const UAVIONIX_ADSB_OUT_RF_SELECT_TX_ENABLED = 2 ; } } impl UavionixAdsbOutRfSelect { pub const DEFAULT : Self = Self :: UAVIONIX_ADSB_OUT_RF_SELECT_STANDBY ; } impl Default for UavionixAdsbOutRfSelect { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavEventErrorReason { MAV_EVENT_ERROR_REASON_UNAVAILABLE = 0 , } impl MavEventErrorReason { pub const DEFAULT : Self = Self :: MAV_EVENT_ERROR_REASON_UNAVAILABLE ; } impl Default for MavEventErrorReason { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidArmStatus { MAV_ODID_ARM_STATUS_GOOD_TO_ARM = 0 , MAV_ODID_ARM_STATUS_PRE_ARM_FAIL_GENERIC = 1 , } impl MavOdidArmStatus { pub const DEFAULT : Self = Self :: MAV_ODID_ARM_STATUS_GOOD_TO_ARM ; } impl Default for MavOdidArmStatus { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MotorTestThrottleType { MOTOR_TEST_THROTTLE_PERCENT = 0 , MOTOR_TEST_THROTTLE_PWM = 1 , MOTOR_TEST_THROTTLE_PILOT = 2 , MOTOR_TEST_COMPASS_CAL = 3 , } impl MotorTestThrottleType { pub const DEFAULT : Self = Self :: MOTOR_TEST_THROTTLE_PERCENT ; } impl Default for MotorTestThrottleType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum AccelcalVehiclePos { ACCELCAL_VEHICLE_POS_LEVEL = 1 , ACCELCAL_VEHICLE_POS_LEFT = 2 , ACCELCAL_VEHICLE_POS_RIGHT = 3 , ACCELCAL_VEHICLE_POS_NOSEDOWN = 4 , ACCELCAL_VEHICLE_POS_NOSEUP = 5 , ACCELCAL_VEHICLE_POS_BACK = 6 , ACCELCAL_VEHICLE_POS_SUCCESS = 16777215 , ACCELCAL_VEHICLE_POS_FAILED = 16777216 , } impl AccelcalVehiclePos { pub const DEFAULT : Self = Self :: ACCELCAL_VEHICLE_POS_LEVEL ; } impl Default for AccelcalVehiclePos { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidIdType { MAV_ODID_ID_TYPE_NONE = 0 , MAV_ODID_ID_TYPE_SERIAL_NUMBER = 1 , MAV_ODID_ID_TYPE_CAA_REGISTRATION_ID = 2 , MAV_ODID_ID_TYPE_UTM_ASSIGNED_UUID = 3 , MAV_ODID_ID_TYPE_SPECIFIC_SESSION_ID = 4 , } impl MavOdidIdType { pub const DEFAULT : Self = Self :: MAV_ODID_ID_TYPE_NONE ; } impl Default for MavOdidIdType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavBatteryFault { MAV_BATTERY_FAULT_DEEP_DISCHARGE = 1 , MAV_BATTERY_FAULT_SPIKES = 2 , MAV_BATTERY_FAULT_CELL_FAIL = 4 , MAV_BATTERY_FAULT_OVER_CURRENT = 8 , MAV_BATTERY_FAULT_OVER_TEMPERATURE = 16 , MAV_BATTERY_FAULT_UNDER_TEMPERATURE = 32 , MAV_BATTERY_FAULT_INCOMPATIBLE_VOLTAGE = 64 , MAV_BATTERY_FAULT_INCOMPATIBLE_FIRMWARE = 128 , BATTERY_FAULT_INCOMPATIBLE_CELLS_CONFIGURATION = 256 , } impl MavBatteryFault { pub const DEFAULT : Self = Self :: MAV_BATTERY_FAULT_DEEP_DISCHARGE ; } impl Default for MavBatteryFault { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MavModeFlag : u8 { const MAV_MODE_FLAG_SAFETY_ARMED = 128 ; const MAV_MODE_FLAG_MANUAL_INPUT_ENABLED = 64 ; const MAV_MODE_FLAG_HIL_ENABLED = 32 ; const MAV_MODE_FLAG_STABILIZE_ENABLED = 16 ; const MAV_MODE_FLAG_GUIDED_ENABLED = 8 ; const MAV_MODE_FLAG_AUTO_ENABLED = 4 ; const MAV_MODE_FLAG_TEST_ENABLED = 2 ; const MAV_MODE_FLAG_CUSTOM_MODE_ENABLED = 1 ; } } impl MavModeFlag { pub const DEFAULT : Self = Self :: MAV_MODE_FLAG_SAFETY_ARMED ; } impl Default for MavModeFlag { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MavSysStatusSensor : u32 { const MAV_SYS_STATUS_SENSOR_3D_GYRO = 1 ; const MAV_SYS_STATUS_SENSOR_3D_ACCEL = 2 ; const MAV_SYS_STATUS_SENSOR_3D_MAG = 4 ; const MAV_SYS_STATUS_SENSOR_ABSOLUTE_PRESSURE = 8 ; const MAV_SYS_STATUS_SENSOR_DIFFERENTIAL_PRESSURE = 16 ; const MAV_SYS_STATUS_SENSOR_GPS = 32 ; const MAV_SYS_STATUS_SENSOR_OPTICAL_FLOW = 64 ; const MAV_SYS_STATUS_SENSOR_VISION_POSITION = 128 ; const MAV_SYS_STATUS_SENSOR_LASER_POSITION = 256 ; const MAV_SYS_STATUS_SENSOR_EXTERNAL_GROUND_TRUTH = 512 ; const MAV_SYS_STATUS_SENSOR_ANGULAR_RATE_CONTROL = 1024 ; const MAV_SYS_STATUS_SENSOR_ATTITUDE_STABILIZATION = 2048 ; const MAV_SYS_STATUS_SENSOR_YAW_POSITION = 4096 ; const MAV_SYS_STATUS_SENSOR_Z_ALTITUDE_CONTROL = 8192 ; const MAV_SYS_STATUS_SENSOR_XY_POSITION_CONTROL = 16384 ; const MAV_SYS_STATUS_SENSOR_MOTOR_OUTPUTS = 32768 ; const MAV_SYS_STATUS_SENSOR_RC_RECEIVER = 65536 ; const MAV_SYS_STATUS_SENSOR_3D_GYRO2 = 131072 ; const MAV_SYS_STATUS_SENSOR_3D_ACCEL2 = 262144 ; const MAV_SYS_STATUS_SENSOR_3D_MAG2 = 524288 ; const MAV_SYS_STATUS_GEOFENCE = 1048576 ; const MAV_SYS_STATUS_AHRS = 2097152 ; const MAV_SYS_STATUS_TERRAIN = 4194304 ; const MAV_SYS_STATUS_REVERSE_MOTOR = 8388608 ; const MAV_SYS_STATUS_LOGGING = 16777216 ; const MAV_SYS_STATUS_SENSOR_BATTERY = 33554432 ; const MAV_SYS_STATUS_SENSOR_PROXIMITY = 67108864 ; const MAV_SYS_STATUS_SENSOR_SATCOM = 134217728 ; const MAV_SYS_STATUS_PREARM_CHECK = 268435456 ; const MAV_SYS_STATUS_OBSTACLE_AVOIDANCE = 536870912 ; const MAV_SYS_STATUS_SENSOR_PROPULSION = 1073741824 ; const MAV_SYS_STATUS_EXTENSION_USED = 2147483648 ; } } impl MavSysStatusSensor { pub const DEFAULT : Self = Self :: MAV_SYS_STATUS_SENSOR_3D_GYRO ; } impl Default for MavSysStatusSensor { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum FailureUnit { FAILURE_UNIT_SENSOR_GYRO = 0 , FAILURE_UNIT_SENSOR_ACCEL = 1 , FAILURE_UNIT_SENSOR_MAG = 2 , FAILURE_UNIT_SENSOR_BARO = 3 , FAILURE_UNIT_SENSOR_GPS = 4 , FAILURE_UNIT_SENSOR_OPTICAL_FLOW = 5 , FAILURE_UNIT_SENSOR_VIO = 6 , FAILURE_UNIT_SENSOR_DISTANCE_SENSOR = 7 , FAILURE_UNIT_SENSOR_AIRSPEED = 8 , FAILURE_UNIT_SYSTEM_BATTERY = 100 , FAILURE_UNIT_SYSTEM_MOTOR = 101 , FAILURE_UNIT_SYSTEM_SERVO = 102 , FAILURE_UNIT_SYSTEM_AVOIDANCE = 103 , FAILURE_UNIT_SYSTEM_RC_SIGNAL = 104 , FAILURE_UNIT_SYSTEM_MAVLINK_SIGNAL = 105 , } impl FailureUnit { pub const DEFAULT : Self = Self :: FAILURE_UNIT_SENSOR_GYRO ; } impl Default for FailureUnit { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum WinchActions { WINCH_RELAXED = 0 , WINCH_RELATIVE_LENGTH_CONTROL = 1 , WINCH_RATE_CONTROL = 2 , WINCH_LOCK = 3 , WINCH_DELIVER = 4 , WINCH_HOLD = 5 , WINCH_RETRACT = 6 , WINCH_LOAD_LINE = 7 , WINCH_ABANDON_LINE = 8 , WINCH_LOAD_PAYLOAD = 9 , } impl WinchActions { pub const DEFAULT : Self = Self :: WINCH_RELAXED ; } impl Default for WinchActions { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidHorAcc { MAV_ODID_HOR_ACC_UNKNOWN = 0 , MAV_ODID_HOR_ACC_10NM = 1 , MAV_ODID_HOR_ACC_4NM = 2 , MAV_ODID_HOR_ACC_2NM = 3 , MAV_ODID_HOR_ACC_1NM = 4 , MAV_ODID_HOR_ACC_0_5NM = 5 , MAV_ODID_HOR_ACC_0_3NM = 6 , MAV_ODID_HOR_ACC_0_1NM = 7 , MAV_ODID_HOR_ACC_0_05NM = 8 , MAV_ODID_HOR_ACC_30_METER = 9 , MAV_ODID_HOR_ACC_10_METER = 10 , MAV_ODID_HOR_ACC_3_METER = 11 , MAV_ODID_HOR_ACC_1_METER = 12 , } impl MavOdidHorAcc { pub const DEFAULT : Self = Self :: MAV_ODID_HOR_ACC_UNKNOWN ; } impl Default for MavOdidHorAcc { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum CameraTrackingMode { CAMERA_TRACKING_MODE_NONE = 0 , CAMERA_TRACKING_MODE_POINT = 1 , CAMERA_TRACKING_MODE_RECTANGLE = 2 , } impl CameraTrackingMode { pub const DEFAULT : Self = Self :: CAMERA_TRACKING_MODE_NONE ; } impl Default for CameraTrackingMode { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum CanFilterOp { CAN_FILTER_REPLACE = 0 , CAN_FILTER_ADD = 1 , CAN_FILTER_REMOVE = 2 , } impl CanFilterOp { pub const DEFAULT : Self = Self :: CAN_FILTER_REPLACE ; } impl Default for CanFilterOp { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum LimitsState { LIMITS_INIT = 0 , LIMITS_DISABLED = 1 , LIMITS_ENABLED = 2 , LIMITS_TRIGGERED = 3 , LIMITS_RECOVERING = 4 , LIMITS_RECOVERED = 5 , } impl LimitsState { pub const DEFAULT : Self = Self :: LIMITS_INIT ; } impl Default for LimitsState { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum GoproRequestStatus { GOPRO_REQUEST_SUCCESS = 0 , GOPRO_REQUEST_FAILED = 1 , } impl GoproRequestStatus { pub const DEFAULT : Self = Self :: GOPRO_REQUEST_SUCCESS ; } impl Default for GoproRequestStatus { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavSensorOrientation { MAV_SENSOR_ROTATION_NONE = 0 , MAV_SENSOR_ROTATION_YAW_45 = 1 , MAV_SENSOR_ROTATION_YAW_90 = 2 , MAV_SENSOR_ROTATION_YAW_135 = 3 , MAV_SENSOR_ROTATION_YAW_180 = 4 , MAV_SENSOR_ROTATION_YAW_225 = 5 , MAV_SENSOR_ROTATION_YAW_270 = 6 , MAV_SENSOR_ROTATION_YAW_315 = 7 , MAV_SENSOR_ROTATION_ROLL_180 = 8 , MAV_SENSOR_ROTATION_ROLL_180_YAW_45 = 9 , MAV_SENSOR_ROTATION_ROLL_180_YAW_90 = 10 , MAV_SENSOR_ROTATION_ROLL_180_YAW_135 = 11 , MAV_SENSOR_ROTATION_PITCH_180 = 12 , MAV_SENSOR_ROTATION_ROLL_180_YAW_225 = 13 , MAV_SENSOR_ROTATION_ROLL_180_YAW_270 = 14 , MAV_SENSOR_ROTATION_ROLL_180_YAW_315 = 15 , MAV_SENSOR_ROTATION_ROLL_90 = 16 , MAV_SENSOR_ROTATION_ROLL_90_YAW_45 = 17 , MAV_SENSOR_ROTATION_ROLL_90_YAW_90 = 18 , MAV_SENSOR_ROTATION_ROLL_90_YAW_135 = 19 , MAV_SENSOR_ROTATION_ROLL_270 = 20 , MAV_SENSOR_ROTATION_ROLL_270_YAW_45 = 21 , MAV_SENSOR_ROTATION_ROLL_270_YAW_90 = 22 , MAV_SENSOR_ROTATION_ROLL_270_YAW_135 = 23 , MAV_SENSOR_ROTATION_PITCH_90 = 24 , MAV_SENSOR_ROTATION_PITCH_270 = 25 , MAV_SENSOR_ROTATION_PITCH_180_YAW_90 = 26 , MAV_SENSOR_ROTATION_PITCH_180_YAW_270 = 27 , MAV_SENSOR_ROTATION_ROLL_90_PITCH_90 = 28 , MAV_SENSOR_ROTATION_ROLL_180_PITCH_90 = 29 , MAV_SENSOR_ROTATION_ROLL_270_PITCH_90 = 30 , MAV_SENSOR_ROTATION_ROLL_90_PITCH_180 = 31 , MAV_SENSOR_ROTATION_ROLL_270_PITCH_180 = 32 , MAV_SENSOR_ROTATION_ROLL_90_PITCH_270 = 33 , MAV_SENSOR_ROTATION_ROLL_180_PITCH_270 = 34 , MAV_SENSOR_ROTATION_ROLL_270_PITCH_270 = 35 , MAV_SENSOR_ROTATION_ROLL_90_PITCH_180_YAW_90 = 36 , MAV_SENSOR_ROTATION_ROLL_90_YAW_270 = 37 , MAV_SENSOR_ROTATION_ROLL_90_PITCH_68_YAW_293 = 38 , MAV_SENSOR_ROTATION_PITCH_315 = 39 , MAV_SENSOR_ROTATION_ROLL_90_PITCH_315 = 40 , MAV_SENSOR_ROTATION_CUSTOM = 100 , } impl MavSensorOrientation { pub const DEFAULT : Self = Self :: MAV_SENSOR_ROTATION_NONE ; } impl Default for MavSensorOrientation { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum PlaneMode { PLANE_MODE_MANUAL = 0 , PLANE_MODE_CIRCLE = 1 , PLANE_MODE_STABILIZE = 2 , PLANE_MODE_TRAINING = 3 , PLANE_MODE_ACRO = 4 , PLANE_MODE_FLY_BY_WIRE_A = 5 , PLANE_MODE_FLY_BY_WIRE_B = 6 , PLANE_MODE_CRUISE = 7 , PLANE_MODE_AUTOTUNE = 8 , PLANE_MODE_AUTO = 10 , PLANE_MODE_RTL = 11 , PLANE_MODE_LOITER = 12 , PLANE_MODE_TAKEOFF = 13 , PLANE_MODE_AVOID_ADSB = 14 , PLANE_MODE_GUIDED = 15 , PLANE_MODE_INITIALIZING = 16 , PLANE_MODE_QSTABILIZE = 17 , PLANE_MODE_QHOVER = 18 , PLANE_MODE_QLOITER = 19 , PLANE_MODE_QLAND = 20 , PLANE_MODE_QRTL = 21 , PLANE_MODE_QAUTOTUNE = 22 , PLANE_MODE_QACRO = 23 , PLANE_MODE_THERMAL = 24 , } impl PlaneMode { pub const DEFAULT : Self = Self :: PLANE_MODE_MANUAL ; } impl Default for PlaneMode { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum FenceAction { FENCE_ACTION_NONE = 0 , FENCE_ACTION_GUIDED = 1 , FENCE_ACTION_REPORT = 2 , FENCE_ACTION_GUIDED_THR_PASS = 3 , FENCE_ACTION_RTL = 4 , FENCE_ACTION_HOLD = 5 , FENCE_ACTION_TERMINATE = 6 , FENCE_ACTION_LAND = 7 , } impl FenceAction { pub const DEFAULT : Self = Self :: FENCE_ACTION_NONE ; } impl Default for FenceAction { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavCmdAck { MAV_CMD_ACK_OK = 0 , MAV_CMD_ACK_ERR_FAIL = 1 , MAV_CMD_ACK_ERR_ACCESS_DENIED = 2 , MAV_CMD_ACK_ERR_NOT_SUPPORTED = 3 , MAV_CMD_ACK_ERR_COORDINATE_FRAME_NOT_SUPPORTED = 4 , MAV_CMD_ACK_ERR_COORDINATES_OUT_OF_RANGE = 5 , MAV_CMD_ACK_ERR_X_LAT_OUT_OF_RANGE = 6 , MAV_CMD_ACK_ERR_Y_LON_OUT_OF_RANGE = 7 , MAV_CMD_ACK_ERR_Z_ALT_OUT_OF_RANGE = 8 , } impl MavCmdAck { pub const DEFAULT : Self = Self :: MAV_CMD_ACK_OK ; } impl Default for MavCmdAck { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavRoi { MAV_ROI_NONE = 0 , MAV_ROI_WPNEXT = 1 , MAV_ROI_WPINDEX = 2 , MAV_ROI_LOCATION = 3 , MAV_ROI_TARGET = 4 , } impl MavRoi { pub const DEFAULT : Self = Self :: MAV_ROI_NONE ; } impl Default for MavRoi { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavCollisionThreatLevel { MAV_COLLISION_THREAT_LEVEL_NONE = 0 , MAV_COLLISION_THREAT_LEVEL_LOW = 1 , MAV_COLLISION_THREAT_LEVEL_HIGH = 2 , } impl MavCollisionThreatLevel { pub const DEFAULT : Self = Self :: MAV_COLLISION_THREAT_LEVEL_NONE ; } impl Default for MavCollisionThreatLevel { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum UavionixAdsbOutCfgAircraftSize { UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_NO_DATA = 0 , UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L15M_W23M = 1 , UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L25M_W28P5M = 2 , UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L25_34M = 3 , UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L35_33M = 4 , UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L35_38M = 5 , UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L45_39P5M = 6 , UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L45_45M = 7 , UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L55_45M = 8 , UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L55_52M = 9 , UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L65_59P5M = 10 , UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L65_67M = 11 , UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L75_W72P5M = 12 , UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L75_W80M = 13 , UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L85_W80M = 14 , UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L85_W90M = 15 , } impl UavionixAdsbOutCfgAircraftSize { pub const DEFAULT : Self = Self :: UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_NO_DATA ; } impl Default for UavionixAdsbOutCfgAircraftSize { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum DeepstallStage { DEEPSTALL_STAGE_FLY_TO_LANDING = 0 , DEEPSTALL_STAGE_ESTIMATE_WIND = 1 , DEEPSTALL_STAGE_WAIT_FOR_BREAKOUT = 2 , DEEPSTALL_STAGE_FLY_TO_ARC = 3 , DEEPSTALL_STAGE_ARC = 4 , DEEPSTALL_STAGE_APPROACH = 5 , DEEPSTALL_STAGE_LAND = 6 , } impl DeepstallStage { pub const DEFAULT : Self = Self :: DEEPSTALL_STAGE_FLY_TO_LANDING ; } impl Default for DeepstallStage { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavCollisionSrc { MAV_COLLISION_SRC_ADSB = 0 , MAV_COLLISION_SRC_MAVLINK_GPS_GLOBAL_INT = 1 , } impl MavCollisionSrc { pub const DEFAULT : Self = Self :: MAV_COLLISION_SRC_ADSB ; } impl Default for MavCollisionSrc { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum PidTuningAxis { PID_TUNING_ROLL = 1 , PID_TUNING_PITCH = 2 , PID_TUNING_YAW = 3 , PID_TUNING_ACCZ = 4 , PID_TUNING_STEER = 5 , PID_TUNING_LANDING = 6 , } impl PidTuningAxis { pub const DEFAULT : Self = Self :: PID_TUNING_ROLL ; } impl Default for PidTuningAxis { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum CameraStatusTypes { CAMERA_STATUS_TYPE_HEARTBEAT = 0 , CAMERA_STATUS_TYPE_TRIGGER = 1 , CAMERA_STATUS_TYPE_DISCONNECT = 2 , CAMERA_STATUS_TYPE_ERROR = 3 , CAMERA_STATUS_TYPE_LOWBATT = 4 , CAMERA_STATUS_TYPE_LOWSTORE = 5 , CAMERA_STATUS_TYPE_LOWSTOREV = 6 , } impl CameraStatusTypes { pub const DEFAULT : Self = Self :: CAMERA_STATUS_TYPE_HEARTBEAT ; } impl Default for CameraStatusTypes { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavDataStream { MAV_DATA_STREAM_ALL = 0 , MAV_DATA_STREAM_RAW_SENSORS = 1 , MAV_DATA_STREAM_EXTENDED_STATUS = 2 , MAV_DATA_STREAM_RC_CHANNELS = 3 , MAV_DATA_STREAM_RAW_CONTROLLER = 4 , MAV_DATA_STREAM_POSITION = 6 , MAV_DATA_STREAM_EXTRA1 = 10 , MAV_DATA_STREAM_EXTRA2 = 11 , MAV_DATA_STREAM_EXTRA3 = 12 , } impl MavDataStream { pub const DEFAULT : Self = Self :: MAV_DATA_STREAM_ALL ; } impl Default for MavDataStream { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum LedControlPattern { LED_CONTROL_PATTERN_OFF = 0 , LED_CONTROL_PATTERN_FIRMWAREUPDATE = 1 , LED_CONTROL_PATTERN_CUSTOM = 255 , } impl LedControlPattern { pub const DEFAULT : Self = Self :: LED_CONTROL_PATTERN_OFF ; } impl Default for LedControlPattern { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavDoRepositionFlags { MAV_DO_REPOSITION_FLAGS_CHANGE_MODE = 1 , } impl MavDoRepositionFlags { pub const DEFAULT : Self = Self :: MAV_DO_REPOSITION_FLAGS_CHANGE_MODE ; } impl Default for MavDoRepositionFlags { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MavProtocolCapability : u64 { const MAV_PROTOCOL_CAPABILITY_MISSION_FLOAT = 1 ; const MAV_PROTOCOL_CAPABILITY_PARAM_FLOAT = 2 ; const MAV_PROTOCOL_CAPABILITY_MISSION_INT = 4 ; const MAV_PROTOCOL_CAPABILITY_COMMAND_INT = 8 ; const MAV_PROTOCOL_CAPABILITY_PARAM_ENCODE_BYTEWISE = 16 ; const MAV_PROTOCOL_CAPABILITY_FTP = 32 ; const MAV_PROTOCOL_CAPABILITY_SET_ATTITUDE_TARGET = 64 ; const MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_LOCAL_NED = 128 ; const MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_GLOBAL_INT = 256 ; const MAV_PROTOCOL_CAPABILITY_TERRAIN = 512 ; const MAV_PROTOCOL_CAPABILITY_SET_ACTUATOR_TARGET = 1024 ; const MAV_PROTOCOL_CAPABILITY_FLIGHT_TERMINATION = 2048 ; const MAV_PROTOCOL_CAPABILITY_COMPASS_CALIBRATION = 4096 ; const MAV_PROTOCOL_CAPABILITY_MAVLINK2 = 8192 ; const MAV_PROTOCOL_CAPABILITY_MISSION_FENCE = 16384 ; const MAV_PROTOCOL_CAPABILITY_MISSION_RALLY = 32768 ; const MAV_PROTOCOL_CAPABILITY_RESERVED2 = 65536 ; const MAV_PROTOCOL_CAPABILITY_PARAM_ENCODE_C_CAST = 131072 ; } } impl MavProtocolCapability { pub const DEFAULT : Self = Self :: MAV_PROTOCOL_CAPABILITY_MISSION_FLOAT ; } impl Default for MavProtocolCapability { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum CameraFeedbackFlags { CAMERA_FEEDBACK_PHOTO = 0 , CAMERA_FEEDBACK_VIDEO = 1 , CAMERA_FEEDBACK_BADEXPOSURE = 2 , CAMERA_FEEDBACK_CLOSEDLOOP = 3 , CAMERA_FEEDBACK_OPENLOOP = 4 , } impl CameraFeedbackFlags { pub const DEFAULT : Self = Self :: CAMERA_FEEDBACK_PHOTO ; } impl Default for CameraFeedbackFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum VideoStreamType { VIDEO_STREAM_TYPE_RTSP = 0 , VIDEO_STREAM_TYPE_RTPUDP = 1 , VIDEO_STREAM_TYPE_TCP_MPEG = 2 , VIDEO_STREAM_TYPE_MPEG_TS_H264 = 3 , } impl VideoStreamType { pub const DEFAULT : Self = Self :: VIDEO_STREAM_TYPE_RTSP ; } impl Default for VideoStreamType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidUaType { MAV_ODID_UA_TYPE_NONE = 0 , MAV_ODID_UA_TYPE_AEROPLANE = 1 , MAV_ODID_UA_TYPE_HELICOPTER_OR_MULTIROTOR = 2 , MAV_ODID_UA_TYPE_GYROPLANE = 3 , MAV_ODID_UA_TYPE_HYBRID_LIFT = 4 , MAV_ODID_UA_TYPE_ORNITHOPTER = 5 , MAV_ODID_UA_TYPE_GLIDER = 6 , MAV_ODID_UA_TYPE_KITE = 7 , MAV_ODID_UA_TYPE_FREE_BALLOON = 8 , MAV_ODID_UA_TYPE_CAPTIVE_BALLOON = 9 , MAV_ODID_UA_TYPE_AIRSHIP = 10 , MAV_ODID_UA_TYPE_FREE_FALL_PARACHUTE = 11 , MAV_ODID_UA_TYPE_ROCKET = 12 , MAV_ODID_UA_TYPE_TETHERED_POWERED_AIRCRAFT = 13 , MAV_ODID_UA_TYPE_GROUND_OBSTACLE = 14 , MAV_ODID_UA_TYPE_OTHER = 15 , } impl MavOdidUaType { pub const DEFAULT : Self = Self :: MAV_ODID_UA_TYPE_NONE ; } impl Default for MavOdidUaType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavType { MAV_TYPE_GENERIC = 0 , MAV_TYPE_FIXED_WING = 1 , MAV_TYPE_QUADROTOR = 2 , MAV_TYPE_COAXIAL = 3 , MAV_TYPE_HELICOPTER = 4 , MAV_TYPE_ANTENNA_TRACKER = 5 , MAV_TYPE_GCS = 6 , MAV_TYPE_AIRSHIP = 7 , MAV_TYPE_FREE_BALLOON = 8 , MAV_TYPE_ROCKET = 9 , MAV_TYPE_GROUND_ROVER = 10 , MAV_TYPE_SURFACE_BOAT = 11 , MAV_TYPE_SUBMARINE = 12 , MAV_TYPE_HEXAROTOR = 13 , MAV_TYPE_OCTOROTOR = 14 , MAV_TYPE_TRICOPTER = 15 , MAV_TYPE_FLAPPING_WING = 16 , MAV_TYPE_KITE = 17 , MAV_TYPE_ONBOARD_CONTROLLER = 18 , MAV_TYPE_VTOL_TAILSITTER_DUOROTOR = 19 , MAV_TYPE_VTOL_TAILSITTER_QUADROTOR = 20 , MAV_TYPE_VTOL_TILTROTOR = 21 , MAV_TYPE_VTOL_FIXEDROTOR = 22 , MAV_TYPE_VTOL_TAILSITTER = 23 , MAV_TYPE_VTOL_TILTWING = 24 , MAV_TYPE_VTOL_RESERVED5 = 25 , MAV_TYPE_GIMBAL = 26 , MAV_TYPE_ADSB = 27 , MAV_TYPE_PARAFOIL = 28 , MAV_TYPE_DODECAROTOR = 29 , MAV_TYPE_CAMERA = 30 , MAV_TYPE_CHARGING_STATION = 31 , MAV_TYPE_FLARM = 32 , MAV_TYPE_SERVO = 33 , MAV_TYPE_ODID = 34 , MAV_TYPE_DECAROTOR = 35 , MAV_TYPE_BATTERY = 36 , MAV_TYPE_PARACHUTE = 37 , MAV_TYPE_LOG = 38 , MAV_TYPE_OSD = 39 , MAV_TYPE_IMU = 40 , MAV_TYPE_GPS = 41 , MAV_TYPE_WINCH = 42 , } impl MavType { pub const DEFAULT : Self = Self :: MAV_TYPE_GENERIC ; } impl Default for MavType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum VideoStreamStatusFlags { VIDEO_STREAM_STATUS_FLAGS_RUNNING = 1 , VIDEO_STREAM_STATUS_FLAGS_THERMAL = 2 , } impl VideoStreamStatusFlags { pub const DEFAULT : Self = Self :: VIDEO_STREAM_STATUS_FLAGS_RUNNING ; } impl Default for VideoStreamStatusFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavMode { MAV_MODE_PREFLIGHT = 0 , MAV_MODE_STABILIZE_DISARMED = 80 , MAV_MODE_STABILIZE_ARMED = 208 , MAV_MODE_MANUAL_DISARMED = 64 , MAV_MODE_MANUAL_ARMED = 192 , MAV_MODE_GUIDED_DISARMED = 88 , MAV_MODE_GUIDED_ARMED = 216 , MAV_MODE_AUTO_DISARMED = 92 , MAV_MODE_AUTO_ARMED = 220 , MAV_MODE_TEST_DISARMED = 66 , MAV_MODE_TEST_ARMED = 194 , } impl MavMode { pub const DEFAULT : Self = Self :: MAV_MODE_PREFLIGHT ; } impl Default for MavMode { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum PrecisionLandMode { PRECISION_LAND_MODE_DISABLED = 0 , PRECISION_LAND_MODE_OPPORTUNISTIC = 1 , PRECISION_LAND_MODE_REQUIRED = 2 , } impl PrecisionLandMode { pub const DEFAULT : Self = Self :: PRECISION_LAND_MODE_DISABLED ; } impl Default for PrecisionLandMode { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidSpeedAcc { MAV_ODID_SPEED_ACC_UNKNOWN = 0 , MAV_ODID_SPEED_ACC_10_METERS_PER_SECOND = 1 , MAV_ODID_SPEED_ACC_3_METERS_PER_SECOND = 2 , MAV_ODID_SPEED_ACC_1_METERS_PER_SECOND = 3 , MAV_ODID_SPEED_ACC_0_3_METERS_PER_SECOND = 4 , } impl MavOdidSpeedAcc { pub const DEFAULT : Self = Self :: MAV_ODID_SPEED_ACC_UNKNOWN ; } impl Default for MavOdidSpeedAcc { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum WifiConfigApResponse { WIFI_CONFIG_AP_RESPONSE_UNDEFINED = 0 , WIFI_CONFIG_AP_RESPONSE_ACCEPTED = 1 , WIFI_CONFIG_AP_RESPONSE_REJECTED = 2 , WIFI_CONFIG_AP_RESPONSE_MODE_ERROR = 3 , WIFI_CONFIG_AP_RESPONSE_SSID_ERROR = 4 , WIFI_CONFIG_AP_RESPONSE_PASSWORD_ERROR = 5 , } impl WifiConfigApResponse { pub const DEFAULT : Self = Self :: WIFI_CONFIG_AP_RESPONSE_UNDEFINED ; } impl Default for WifiConfigApResponse { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct TuneFormat : u32 { const TUNE_FORMAT_QBASIC1_1 = 1 ; const TUNE_FORMAT_MML_MODERN = 2 ; } } impl TuneFormat { pub const DEFAULT : Self = Self :: TUNE_FORMAT_QBASIC1_1 ; } impl Default for TuneFormat { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavFtpOpcode { MAV_FTP_OPCODE_NONE = 0 , MAV_FTP_OPCODE_TERMINATESESSION = 1 , MAV_FTP_OPCODE_RESETSESSION = 2 , MAV_FTP_OPCODE_LISTDIRECTORY = 3 , MAV_FTP_OPCODE_OPENFILERO = 4 , MAV_FTP_OPCODE_READFILE = 5 , MAV_FTP_OPCODE_CREATEFILE = 6 , MAV_FTP_OPCODE_WRITEFILE = 7 , MAV_FTP_OPCODE_REMOVEFILE = 8 , MAV_FTP_OPCODE_CREATEDIRECTORY = 9 , MAV_FTP_OPCODE_REMOVEDIRECTORY = 10 , MAV_FTP_OPCODE_OPENFILEWO = 11 , MAV_FTP_OPCODE_TRUNCATEFILE = 12 , MAV_FTP_OPCODE_RENAME = 13 , MAV_FTP_OPCODE_CALCFILECRC = 14 , MAV_FTP_OPCODE_BURSTREADFILE = 15 , MAV_FTP_OPCODE_ACK = 128 , MAV_FTP_OPCODE_NAK = 129 , } impl MavFtpOpcode { pub const DEFAULT : Self = Self :: MAV_FTP_OPCODE_NONE ; } impl Default for MavFtpOpcode { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum GoproBurstRate { GOPRO_BURST_RATE_3_IN_1_SECOND = 0 , GOPRO_BURST_RATE_5_IN_1_SECOND = 1 , GOPRO_BURST_RATE_10_IN_1_SECOND = 2 , GOPRO_BURST_RATE_10_IN_2_SECOND = 3 , GOPRO_BURST_RATE_10_IN_3_SECOND = 4 , GOPRO_BURST_RATE_30_IN_1_SECOND = 5 , GOPRO_BURST_RATE_30_IN_2_SECOND = 6 , GOPRO_BURST_RATE_30_IN_3_SECOND = 7 , GOPRO_BURST_RATE_30_IN_6_SECOND = 8 , } impl GoproBurstRate { pub const DEFAULT : Self = Self :: GOPRO_BURST_RATE_3_IN_1_SECOND ; } impl Default for GoproBurstRate { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GimbalManagerCapFlags : u32 { const GIMBAL_MANAGER_CAP_FLAGS_HAS_RETRACT = 1 ; const GIMBAL_MANAGER_CAP_FLAGS_HAS_NEUTRAL = 2 ; const GIMBAL_MANAGER_CAP_FLAGS_HAS_ROLL_AXIS = 4 ; const GIMBAL_MANAGER_CAP_FLAGS_HAS_ROLL_FOLLOW = 8 ; const GIMBAL_MANAGER_CAP_FLAGS_HAS_ROLL_LOCK = 16 ; const GIMBAL_MANAGER_CAP_FLAGS_HAS_PITCH_AXIS = 32 ; const GIMBAL_MANAGER_CAP_FLAGS_HAS_PITCH_FOLLOW = 64 ; const GIMBAL_MANAGER_CAP_FLAGS_HAS_PITCH_LOCK = 128 ; const GIMBAL_MANAGER_CAP_FLAGS_HAS_YAW_AXIS = 256 ; const GIMBAL_MANAGER_CAP_FLAGS_HAS_YAW_FOLLOW = 512 ; const GIMBAL_MANAGER_CAP_FLAGS_HAS_YAW_LOCK = 1024 ; const GIMBAL_MANAGER_CAP_FLAGS_SUPPORTS_INFINITE_YAW = 2048 ; const GIMBAL_MANAGER_CAP_FLAGS_SUPPORTS_YAW_IN_EARTH_FRAME = 4096 ; const GIMBAL_MANAGER_CAP_FLAGS_HAS_RC_INPUTS = 8192 ; const GIMBAL_MANAGER_CAP_FLAGS_CAN_POINT_LOCATION_LOCAL = 65536 ; const GIMBAL_MANAGER_CAP_FLAGS_CAN_POINT_LOCATION_GLOBAL = 131072 ; } } impl GimbalManagerCapFlags { pub const DEFAULT : Self = Self :: GIMBAL_MANAGER_CAP_FLAGS_HAS_RETRACT ; } impl Default for GimbalManagerCapFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum ActuatorConfiguration { ACTUATOR_CONFIGURATION_NONE = 0 , ACTUATOR_CONFIGURATION_BEEP = 1 , ACTUATOR_CONFIGURATION_3D_MODE_ON = 2 , ACTUATOR_CONFIGURATION_3D_MODE_OFF = 3 , ACTUATOR_CONFIGURATION_SPIN_DIRECTION1 = 4 , ACTUATOR_CONFIGURATION_SPIN_DIRECTION2 = 5 , } impl ActuatorConfiguration { pub const DEFAULT : Self = Self :: ACTUATOR_CONFIGURATION_NONE ; } impl Default for ActuatorConfiguration { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum SpeedType { SPEED_TYPE_AIRSPEED = 0 , SPEED_TYPE_GROUNDSPEED = 1 , } impl SpeedType { pub const DEFAULT : Self = Self :: SPEED_TYPE_AIRSPEED ; } impl Default for SpeedType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum IcarousFmsState { ICAROUS_FMS_STATE_IDLE = 0 , ICAROUS_FMS_STATE_TAKEOFF = 1 , ICAROUS_FMS_STATE_CLIMB = 2 , ICAROUS_FMS_STATE_CRUISE = 3 , ICAROUS_FMS_STATE_APPROACH = 4 , ICAROUS_FMS_STATE_LAND = 5 , } impl IcarousFmsState { pub const DEFAULT : Self = Self :: ICAROUS_FMS_STATE_IDLE ; } impl Default for IcarousFmsState { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum StorageStatus { STORAGE_STATUS_EMPTY = 0 , STORAGE_STATUS_UNFORMATTED = 1 , STORAGE_STATUS_READY = 2 , STORAGE_STATUS_NOT_SUPPORTED = 3 , } impl StorageStatus { pub const DEFAULT : Self = Self :: STORAGE_STATUS_EMPTY ; } impl Default for StorageStatus { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum LandingTargetType { LANDING_TARGET_TYPE_LIGHT_BEACON = 0 , LANDING_TARGET_TYPE_RADIO_BEACON = 1 , LANDING_TARGET_TYPE_VISION_FIDUCIAL = 2 , LANDING_TARGET_TYPE_VISION_OTHER = 3 , } impl LandingTargetType { pub const DEFAULT : Self = Self :: LANDING_TARGET_TYPE_LIGHT_BEACON ; } impl Default for LandingTargetType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavDistanceSensor { MAV_DISTANCE_SENSOR_LASER = 0 , MAV_DISTANCE_SENSOR_ULTRASOUND = 1 , MAV_DISTANCE_SENSOR_INFRARED = 2 , MAV_DISTANCE_SENSOR_RADAR = 3 , MAV_DISTANCE_SENSOR_UNKNOWN = 4 , } impl MavDistanceSensor { pub const DEFAULT : Self = Self :: MAV_DISTANCE_SENSOR_LASER ; } impl Default for MavDistanceSensor { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum FailureType { FAILURE_TYPE_OK = 0 , FAILURE_TYPE_OFF = 1 , FAILURE_TYPE_STUCK = 2 , FAILURE_TYPE_GARBAGE = 3 , FAILURE_TYPE_WRONG = 4 , FAILURE_TYPE_SLOW = 5 , FAILURE_TYPE_DELAYED = 6 , FAILURE_TYPE_INTERMITTENT = 7 , } impl FailureType { pub const DEFAULT : Self = Self :: FAILURE_TYPE_OK ; } impl Default for FailureType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum UavionixAdsbOutCfgGpsOffsetLon { UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LON_NO_DATA = 0 , UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LON_APPLIED_BY_SENSOR = 1 , } impl UavionixAdsbOutCfgGpsOffsetLon { pub const DEFAULT : Self = Self :: UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LON_NO_DATA ; } impl Default for UavionixAdsbOutCfgGpsOffsetLon { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum HeadingType { HEADING_TYPE_COURSE_OVER_GROUND = 0 , HEADING_TYPE_HEADING = 1 , } impl HeadingType { pub const DEFAULT : Self = Self :: HEADING_TYPE_COURSE_OVER_GROUND ; } impl Default for HeadingType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum ScriptingCmd { SCRIPTING_CMD_REPL_START = 0 , SCRIPTING_CMD_REPL_STOP = 1 , SCRIPTING_CMD_STOP = 2 , SCRIPTING_CMD_STOP_AND_RESTART = 3 , } impl ScriptingCmd { pub const DEFAULT : Self = Self :: SCRIPTING_CMD_REPL_START ; } impl Default for ScriptingCmd { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct RallyFlags : u8 { const FAVORABLE_WIND = 1 ; const LAND_IMMEDIATELY = 2 ; } } impl RallyFlags { pub const DEFAULT : Self = Self :: FAVORABLE_WIND ; } impl Default for RallyFlags { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GpsInputIgnoreFlags : u16 { const GPS_INPUT_IGNORE_FLAG_ALT = 1 ; const GPS_INPUT_IGNORE_FLAG_HDOP = 2 ; const GPS_INPUT_IGNORE_FLAG_VDOP = 4 ; const GPS_INPUT_IGNORE_FLAG_VEL_HORIZ = 8 ; const GPS_INPUT_IGNORE_FLAG_VEL_VERT = 16 ; const GPS_INPUT_IGNORE_FLAG_SPEED_ACCURACY = 32 ; const GPS_INPUT_IGNORE_FLAG_HORIZONTAL_ACCURACY = 64 ; const GPS_INPUT_IGNORE_FLAG_VERTICAL_ACCURACY = 128 ; } } impl GpsInputIgnoreFlags { pub const DEFAULT : Self = Self :: GPS_INPUT_IGNORE_FLAG_ALT ; } impl Default for GpsInputIgnoreFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavBatteryChargeState { MAV_BATTERY_CHARGE_STATE_UNDEFINED = 0 , MAV_BATTERY_CHARGE_STATE_OK = 1 , MAV_BATTERY_CHARGE_STATE_LOW = 2 , MAV_BATTERY_CHARGE_STATE_CRITICAL = 3 , MAV_BATTERY_CHARGE_STATE_EMERGENCY = 4 , MAV_BATTERY_CHARGE_STATE_FAILED = 5 , MAV_BATTERY_CHARGE_STATE_UNHEALTHY = 6 , MAV_BATTERY_CHARGE_STATE_CHARGING = 7 , } impl MavBatteryChargeState { pub const DEFAULT : Self = Self :: MAV_BATTERY_CHARGE_STATE_UNDEFINED ; } impl Default for MavBatteryChargeState { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum AdsbAltitudeType { ADSB_ALTITUDE_TYPE_PRESSURE_QNH = 0 , ADSB_ALTITUDE_TYPE_GEOMETRIC = 1 , } impl AdsbAltitudeType { pub const DEFAULT : Self = Self :: ADSB_ALTITUDE_TYPE_PRESSURE_QNH ; } impl Default for AdsbAltitudeType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavBatteryMode { MAV_BATTERY_MODE_UNKNOWN = 0 , MAV_BATTERY_MODE_AUTO_DISCHARGING = 1 , MAV_BATTERY_MODE_HOT_SWAP = 2 , } impl MavBatteryMode { pub const DEFAULT : Self = Self :: MAV_BATTERY_MODE_UNKNOWN ; } impl Default for MavBatteryMode { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct AisFlags : u16 { const AIS_FLAGS_POSITION_ACCURACY = 1 ; const AIS_FLAGS_VALID_COG = 2 ; const AIS_FLAGS_VALID_VELOCITY = 4 ; const AIS_FLAGS_HIGH_VELOCITY = 8 ; const AIS_FLAGS_VALID_TURN_RATE = 16 ; const AIS_FLAGS_TURN_RATE_SIGN_ONLY = 32 ; const AIS_FLAGS_VALID_DIMENSIONS = 64 ; const AIS_FLAGS_LARGE_BOW_DIMENSION = 128 ; const AIS_FLAGS_LARGE_STERN_DIMENSION = 256 ; const AIS_FLAGS_LARGE_PORT_DIMENSION = 512 ; const AIS_FLAGS_LARGE_STARBOARD_DIMENSION = 1024 ; const AIS_FLAGS_VALID_CALLSIGN = 2048 ; const AIS_FLAGS_VALID_NAME = 4096 ; } } impl AisFlags { pub const DEFAULT : Self = Self :: AIS_FLAGS_POSITION_ACCURACY ; } impl Default for AisFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidClassEu { MAV_ODID_CLASS_EU_UNDECLARED = 0 , MAV_ODID_CLASS_EU_CLASS_0 = 1 , MAV_ODID_CLASS_EU_CLASS_1 = 2 , MAV_ODID_CLASS_EU_CLASS_2 = 3 , MAV_ODID_CLASS_EU_CLASS_3 = 4 , MAV_ODID_CLASS_EU_CLASS_4 = 5 , MAV_ODID_CLASS_EU_CLASS_5 = 6 , MAV_ODID_CLASS_EU_CLASS_6 = 7 , } impl MavOdidClassEu { pub const DEFAULT : Self = Self :: MAV_ODID_CLASS_EU_UNDECLARED ; } impl Default for MavOdidClassEu { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum GimbalAxis { GIMBAL_AXIS_YAW = 0 , GIMBAL_AXIS_PITCH = 1 , GIMBAL_AXIS_ROLL = 2 , } impl GimbalAxis { pub const DEFAULT : Self = Self :: GIMBAL_AXIS_YAW ; } impl Default for GimbalAxis { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum CompMetadataType { COMP_METADATA_TYPE_GENERAL = 0 , COMP_METADATA_TYPE_PARAMETER = 1 , COMP_METADATA_TYPE_COMMANDS = 2 , COMP_METADATA_TYPE_PERIPHERALS = 3 , COMP_METADATA_TYPE_EVENTS = 4 , COMP_METADATA_TYPE_ACTUATORS = 5 , } impl CompMetadataType { pub const DEFAULT : Self = Self :: COMP_METADATA_TYPE_GENERAL ; } impl Default for CompMetadataType { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct UavionixAdsbRfHealth : u8 { const UAVIONIX_ADSB_RF_HEALTH_INITIALIZING = 0 ; const UAVIONIX_ADSB_RF_HEALTH_OK = 1 ; const UAVIONIX_ADSB_RF_HEALTH_FAIL_TX = 2 ; const UAVIONIX_ADSB_RF_HEALTH_FAIL_RX = 16 ; } } impl UavionixAdsbRfHealth { pub const DEFAULT : Self = Self :: UAVIONIX_ADSB_RF_HEALTH_INITIALIZING ; } impl Default for UavionixAdsbRfHealth { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum GoproPhotoResolution { GOPRO_PHOTO_RESOLUTION_5MP_MEDIUM = 0 , GOPRO_PHOTO_RESOLUTION_7MP_MEDIUM = 1 , GOPRO_PHOTO_RESOLUTION_7MP_WIDE = 2 , GOPRO_PHOTO_RESOLUTION_10MP_WIDE = 3 , GOPRO_PHOTO_RESOLUTION_12MP_WIDE = 4 , } impl GoproPhotoResolution { pub const DEFAULT : Self = Self :: GOPRO_PHOTO_RESOLUTION_5MP_MEDIUM ; } impl Default for GoproPhotoResolution { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum GoproProtuneSharpness { GOPRO_PROTUNE_SHARPNESS_LOW = 0 , GOPRO_PROTUNE_SHARPNESS_MEDIUM = 1 , GOPRO_PROTUNE_SHARPNESS_HIGH = 2 , } impl GoproProtuneSharpness { pub const DEFAULT : Self = Self :: GOPRO_PROTUNE_SHARPNESS_LOW ; } impl Default for GoproProtuneSharpness { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavFtpErr { MAV_FTP_ERR_NONE = 0 , MAV_FTP_ERR_FAIL = 1 , MAV_FTP_ERR_FAILERRNO = 2 , MAV_FTP_ERR_INVALIDDATASIZE = 3 , MAV_FTP_ERR_INVALIDSESSION = 4 , MAV_FTP_ERR_NOSESSIONSAVAILABLE = 5 , MAV_FTP_ERR_EOF = 6 , MAV_FTP_ERR_UNKNOWNCOMMAND = 7 , MAV_FTP_ERR_FILEEXISTS = 8 , MAV_FTP_ERR_FILEPROTECTED = 9 , MAV_FTP_ERR_FILENOTFOUND = 10 , } impl MavFtpErr { pub const DEFAULT : Self = Self :: MAV_FTP_ERR_NONE ; } impl Default for MavFtpErr { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum SerialControlDev { SERIAL_CONTROL_DEV_TELEM1 = 0 , SERIAL_CONTROL_DEV_TELEM2 = 1 , SERIAL_CONTROL_DEV_GPS1 = 2 , SERIAL_CONTROL_DEV_GPS2 = 3 , SERIAL_CONTROL_DEV_SHELL = 10 , SERIAL_CONTROL_SERIAL0 = 100 , SERIAL_CONTROL_SERIAL1 = 101 , SERIAL_CONTROL_SERIAL2 = 102 , SERIAL_CONTROL_SERIAL3 = 103 , SERIAL_CONTROL_SERIAL4 = 104 , SERIAL_CONTROL_SERIAL5 = 105 , SERIAL_CONTROL_SERIAL6 = 106 , SERIAL_CONTROL_SERIAL7 = 107 , SERIAL_CONTROL_SERIAL8 = 108 , SERIAL_CONTROL_SERIAL9 = 109 , } impl SerialControlDev { pub const DEFAULT : Self = Self :: SERIAL_CONTROL_DEV_TELEM1 ; } impl Default for SerialControlDev { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LOGGING_ACK_DATA { pub sequence : u16 , pub target_system : u8 , pub target_component : u8 , } impl LOGGING_ACK_DATA { pub const ENCODED_LEN : usize = 4usize ; pub const DEFAULT : Self = Self { sequence : 0_u16 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for LOGGING_ACK_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for LOGGING_ACK_DATA { type Message = MavMessage ; const ID : u32 = 268u32 ; const NAME : & 'static str = "LOGGING_ACK" ; const EXTRA_CRC : u8 = 14u8 ; const ENCODED_LEN : usize = 4usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . sequence = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . sequence) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GENERATOR_STATUS_DATA { pub status : MavGeneratorStatusFlag , pub battery_current : f32 , pub load_current : f32 , pub power_generated : f32 , pub bus_voltage : f32 , pub bat_current_setpoint : f32 , pub runtime : u32 , pub time_until_maintenance : i32 , pub generator_speed : u16 , pub rectifier_temperature : i16 , pub generator_temperature : i16 , } impl GENERATOR_STATUS_DATA { pub const ENCODED_LEN : usize = 42usize ; pub const DEFAULT : Self = Self { status : MavGeneratorStatusFlag :: DEFAULT , battery_current : 0.0_f32 , load_current : 0.0_f32 , power_generated : 0.0_f32 , bus_voltage : 0.0_f32 , bat_current_setpoint : 0.0_f32 , runtime : 0_u32 , time_until_maintenance : 0_i32 , generator_speed : 0_u16 , rectifier_temperature : 0_i16 , generator_temperature : 0_i16 , } ; } impl Default for GENERATOR_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GENERATOR_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 373u32 ; const NAME : & 'static str = "GENERATOR_STATUS" ; const EXTRA_CRC : u8 = 117u8 ; const ENCODED_LEN : usize = 42usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u64_le () ; __struct . status = MavGeneratorStatusFlag :: from_bits (tmp & MavGeneratorStatusFlag :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "MavGeneratorStatusFlag" , value : tmp as u32 }) ? ; __struct . battery_current = buf . get_f32_le () ; __struct . load_current = buf . get_f32_le () ; __struct . power_generated = buf . get_f32_le () ; __struct . bus_voltage = buf . get_f32_le () ; __struct . bat_current_setpoint = buf . get_f32_le () ; __struct . runtime = buf . get_u32_le () ; __struct . time_until_maintenance = buf . get_i32_le () ; __struct . generator_speed = buf . get_u16_le () ; __struct . rectifier_temperature = buf . get_i16_le () ; __struct . generator_temperature = buf . get_i16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . status . bits ()) ; __tmp . put_f32_le (self . battery_current) ; __tmp . put_f32_le (self . load_current) ; __tmp . put_f32_le (self . power_generated) ; __tmp . put_f32_le (self . bus_voltage) ; __tmp . put_f32_le (self . bat_current_setpoint) ; __tmp . put_u32_le (self . runtime) ; __tmp . put_i32_le (self . time_until_maintenance) ; __tmp . put_u16_le (self . generator_speed) ; __tmp . put_i16_le (self . rectifier_temperature) ; __tmp . put_i16_le (self . generator_temperature) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct VIDEO_STREAM_STATUS_DATA { pub framerate : f32 , pub bitrate : u32 , pub flags : VideoStreamStatusFlags , pub resolution_h : u16 , pub resolution_v : u16 , pub rotation : u16 , pub hfov : u16 , pub stream_id : u8 , } impl VIDEO_STREAM_STATUS_DATA { pub const ENCODED_LEN : usize = 19usize ; pub const DEFAULT : Self = Self { framerate : 0.0_f32 , bitrate : 0_u32 , flags : VideoStreamStatusFlags :: DEFAULT , resolution_h : 0_u16 , resolution_v : 0_u16 , rotation : 0_u16 , hfov : 0_u16 , stream_id : 0_u8 , } ; } impl Default for VIDEO_STREAM_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for VIDEO_STREAM_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 270u32 ; const NAME : & 'static str = "VIDEO_STREAM_STATUS" ; const EXTRA_CRC : u8 = 59u8 ; const ENCODED_LEN : usize = 19usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . framerate = buf . get_f32_le () ; __struct . bitrate = buf . get_u32_le () ; let tmp = buf . get_u16_le () ; __struct . flags = FromPrimitive :: from_u16 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "VideoStreamStatusFlags" , value : tmp as u32 }) ? ; __struct . resolution_h = buf . get_u16_le () ; __struct . resolution_v = buf . get_u16_le () ; __struct . rotation = buf . get_u16_le () ; __struct . hfov = buf . get_u16_le () ; __struct . stream_id = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . framerate) ; __tmp . put_u32_le (self . bitrate) ; __tmp . put_u16_le (self . flags as u16) ; __tmp . put_u16_le (self . resolution_h) ; __tmp . put_u16_le (self . resolution_v) ; __tmp . put_u16_le (self . rotation) ; __tmp . put_u16_le (self . hfov) ; __tmp . put_u8 (self . stream_id) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SET_HOME_POSITION_DATA { pub latitude : i32 , pub longitude : i32 , pub altitude : i32 , pub x : f32 , pub y : f32 , pub z : f32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub q : [f32 ; 4] , pub approach_x : f32 , pub approach_y : f32 , pub approach_z : f32 , pub target_system : u8 , } impl SET_HOME_POSITION_DATA { pub const ENCODED_LEN : usize = 53usize ; pub const DEFAULT : Self = Self { latitude : 0_i32 , longitude : 0_i32 , altitude : 0_i32 , x : 0.0_f32 , y : 0.0_f32 , z : 0.0_f32 , q : [0.0_f32 ; 4usize] , approach_x : 0.0_f32 , approach_y : 0.0_f32 , approach_z : 0.0_f32 , target_system : 0_u8 , } ; } impl Default for SET_HOME_POSITION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SET_HOME_POSITION_DATA { type Message = MavMessage ; const ID : u32 = 243u32 ; const NAME : & 'static str = "SET_HOME_POSITION" ; const EXTRA_CRC : u8 = 85u8 ; const ENCODED_LEN : usize = 53usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . latitude = buf . get_i32_le () ; __struct . longitude = buf . get_i32_le () ; __struct . altitude = buf . get_i32_le () ; __struct . x = buf . get_f32_le () ; __struct . y = buf . get_f32_le () ; __struct . z = buf . get_f32_le () ; for v in & mut __struct . q { let val = buf . get_f32_le () ; * v = val ; } __struct . approach_x = buf . get_f32_le () ; __struct . approach_y = buf . get_f32_le () ; __struct . approach_z = buf . get_f32_le () ; __struct . target_system = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . latitude) ; __tmp . put_i32_le (self . longitude) ; __tmp . put_i32_le (self . altitude) ; __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; for val in & self . q { __tmp . put_f32_le (* val) ; } __tmp . put_f32_le (self . approach_x) ; __tmp . put_f32_le (self . approach_y) ; __tmp . put_f32_le (self . approach_z) ; __tmp . put_u8 (self . target_system) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LOG_REQUEST_LIST_DATA { pub start : u16 , pub end : u16 , pub target_system : u8 , pub target_component : u8 , } impl LOG_REQUEST_LIST_DATA { pub const ENCODED_LEN : usize = 6usize ; pub const DEFAULT : Self = Self { start : 0_u16 , end : 0_u16 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for LOG_REQUEST_LIST_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for LOG_REQUEST_LIST_DATA { type Message = MavMessage ; const ID : u32 = 117u32 ; const NAME : & 'static str = "LOG_REQUEST_LIST" ; const EXTRA_CRC : u8 = 128u8 ; const ENCODED_LEN : usize = 6usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . start = buf . get_u16_le () ; __struct . end = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . start) ; __tmp . put_u16_le (self . end) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct VFR_HUD_DATA { pub airspeed : f32 , pub groundspeed : f32 , pub alt : f32 , pub climb : f32 , pub heading : i16 , pub throttle : u16 , } impl VFR_HUD_DATA { pub const ENCODED_LEN : usize = 20usize ; pub const DEFAULT : Self = Self { airspeed : 0.0_f32 , groundspeed : 0.0_f32 , alt : 0.0_f32 , climb : 0.0_f32 , heading : 0_i16 , throttle : 0_u16 , } ; } impl Default for VFR_HUD_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for VFR_HUD_DATA { type Message = MavMessage ; const ID : u32 = 74u32 ; const NAME : & 'static str = "VFR_HUD" ; const EXTRA_CRC : u8 = 20u8 ; const ENCODED_LEN : usize = 20usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . airspeed = buf . get_f32_le () ; __struct . groundspeed = buf . get_f32_le () ; __struct . alt = buf . get_f32_le () ; __struct . climb = buf . get_f32_le () ; __struct . heading = buf . get_i16_le () ; __struct . throttle = buf . get_u16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . airspeed) ; __tmp . put_f32_le (self . groundspeed) ; __tmp . put_f32_le (self . alt) ; __tmp . put_f32_le (self . climb) ; __tmp . put_i16_le (self . heading) ; __tmp . put_u16_le (self . throttle) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HIL_ACTUATOR_CONTROLS_DATA { pub time_usec : u64 , pub flags : u64 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub controls : [f32 ; 16] , pub mode : MavModeFlag , } impl HIL_ACTUATOR_CONTROLS_DATA { pub const ENCODED_LEN : usize = 81usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , flags : 0_u64 , controls : [0.0_f32 ; 16usize] , mode : MavModeFlag :: DEFAULT , } ; } impl Default for HIL_ACTUATOR_CONTROLS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for HIL_ACTUATOR_CONTROLS_DATA { type Message = MavMessage ; const ID : u32 = 93u32 ; const NAME : & 'static str = "HIL_ACTUATOR_CONTROLS" ; const EXTRA_CRC : u8 = 47u8 ; const ENCODED_LEN : usize = 81usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . flags = buf . get_u64_le () ; for v in & mut __struct . controls { let val = buf . get_f32_le () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . mode = MavModeFlag :: from_bits (tmp & MavModeFlag :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "MavModeFlag" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_u64_le (self . flags) ; for val in & self . controls { __tmp . put_f32_le (* val) ; } __tmp . put_u8 (self . mode . bits ()) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GLOBAL_VISION_POSITION_ESTIMATE_DATA { pub usec : u64 , pub x : f32 , pub y : f32 , pub z : f32 , pub roll : f32 , pub pitch : f32 , pub yaw : f32 , } impl GLOBAL_VISION_POSITION_ESTIMATE_DATA { pub const ENCODED_LEN : usize = 32usize ; pub const DEFAULT : Self = Self { usec : 0_u64 , x : 0.0_f32 , y : 0.0_f32 , z : 0.0_f32 , roll : 0.0_f32 , pitch : 0.0_f32 , yaw : 0.0_f32 , } ; } impl Default for GLOBAL_VISION_POSITION_ESTIMATE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GLOBAL_VISION_POSITION_ESTIMATE_DATA { type Message = MavMessage ; const ID : u32 = 101u32 ; const NAME : & 'static str = "GLOBAL_VISION_POSITION_ESTIMATE" ; const EXTRA_CRC : u8 = 102u8 ; const ENCODED_LEN : usize = 32usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . usec = buf . get_u64_le () ; __struct . x = buf . get_f32_le () ; __struct . y = buf . get_f32_le () ; __struct . z = buf . get_f32_le () ; __struct . roll = buf . get_f32_le () ; __struct . pitch = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . usec) ; __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; __tmp . put_f32_le (self . roll) ; __tmp . put_f32_le (self . pitch) ; __tmp . put_f32_le (self . yaw) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct UAVCAN_NODE_INFO_DATA { pub time_usec : u64 , pub uptime_sec : u32 , pub sw_vcs_commit : u32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub name : [u8 ; 80] , pub hw_version_major : u8 , pub hw_version_minor : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub hw_unique_id : [u8 ; 16] , pub sw_version_major : u8 , pub sw_version_minor : u8 , } impl UAVCAN_NODE_INFO_DATA { pub const ENCODED_LEN : usize = 116usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , uptime_sec : 0_u32 , sw_vcs_commit : 0_u32 , name : [0_u8 ; 80usize] , hw_version_major : 0_u8 , hw_version_minor : 0_u8 , hw_unique_id : [0_u8 ; 16usize] , sw_version_major : 0_u8 , sw_version_minor : 0_u8 , } ; } impl Default for UAVCAN_NODE_INFO_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for UAVCAN_NODE_INFO_DATA { type Message = MavMessage ; const ID : u32 = 311u32 ; const NAME : & 'static str = "UAVCAN_NODE_INFO" ; const EXTRA_CRC : u8 = 95u8 ; const ENCODED_LEN : usize = 116usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . uptime_sec = buf . get_u32_le () ; __struct . sw_vcs_commit = buf . get_u32_le () ; for v in & mut __struct . name { let val = buf . get_u8 () ; * v = val ; } __struct . hw_version_major = buf . get_u8 () ; __struct . hw_version_minor = buf . get_u8 () ; for v in & mut __struct . hw_unique_id { let val = buf . get_u8 () ; * v = val ; } __struct . sw_version_major = buf . get_u8 () ; __struct . sw_version_minor = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_u32_le (self . uptime_sec) ; __tmp . put_u32_le (self . sw_vcs_commit) ; for val in & self . name { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . hw_version_major) ; __tmp . put_u8 (self . hw_version_minor) ; for val in & self . hw_unique_id { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . sw_version_major) ; __tmp . put_u8 (self . sw_version_minor) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct FENCE_POINT_DATA { pub lat : f32 , pub lng : f32 , pub target_system : u8 , pub target_component : u8 , pub idx : u8 , pub count : u8 , } impl FENCE_POINT_DATA { pub const ENCODED_LEN : usize = 12usize ; pub const DEFAULT : Self = Self { lat : 0.0_f32 , lng : 0.0_f32 , target_system : 0_u8 , target_component : 0_u8 , idx : 0_u8 , count : 0_u8 , } ; } impl Default for FENCE_POINT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for FENCE_POINT_DATA { type Message = MavMessage ; const ID : u32 = 160u32 ; const NAME : & 'static str = "FENCE_POINT" ; const EXTRA_CRC : u8 = 78u8 ; const ENCODED_LEN : usize = 12usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . lat = buf . get_f32_le () ; __struct . lng = buf . get_f32_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . idx = buf . get_u8 () ; __struct . count = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . lat) ; __tmp . put_f32_le (self . lng) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . idx) ; __tmp . put_u8 (self . count) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MISSION_REQUEST_DATA { pub seq : u16 , pub target_system : u8 , pub target_component : u8 , } impl MISSION_REQUEST_DATA { pub const ENCODED_LEN : usize = 4usize ; pub const DEFAULT : Self = Self { seq : 0_u16 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for MISSION_REQUEST_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MISSION_REQUEST_DATA { type Message = MavMessage ; const ID : u32 = 40u32 ; const NAME : & 'static str = "MISSION_REQUEST" ; const EXTRA_CRC : u8 = 230u8 ; const ENCODED_LEN : usize = 4usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . seq = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . seq) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct DATA64_DATA { pub mavtype : u8 , pub len : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub data : [u8 ; 64] , } impl DATA64_DATA { pub const ENCODED_LEN : usize = 66usize ; pub const DEFAULT : Self = Self { mavtype : 0_u8 , len : 0_u8 , data : [0_u8 ; 64usize] , } ; } impl Default for DATA64_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for DATA64_DATA { type Message = MavMessage ; const ID : u32 = 171u32 ; const NAME : & 'static str = "DATA64" ; const EXTRA_CRC : u8 = 181u8 ; const ENCODED_LEN : usize = 66usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . mavtype = buf . get_u8 () ; __struct . len = buf . get_u8 () ; for v in & mut __struct . data { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . mavtype) ; __tmp . put_u8 (self . len) ; for val in & self . data { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GIMBAL_TORQUE_CMD_REPORT_DATA { pub rl_torque_cmd : i16 , pub el_torque_cmd : i16 , pub az_torque_cmd : i16 , pub target_system : u8 , pub target_component : u8 , } impl GIMBAL_TORQUE_CMD_REPORT_DATA { pub const ENCODED_LEN : usize = 8usize ; pub const DEFAULT : Self = Self { rl_torque_cmd : 0_i16 , el_torque_cmd : 0_i16 , az_torque_cmd : 0_i16 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for GIMBAL_TORQUE_CMD_REPORT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GIMBAL_TORQUE_CMD_REPORT_DATA { type Message = MavMessage ; const ID : u32 = 214u32 ; const NAME : & 'static str = "GIMBAL_TORQUE_CMD_REPORT" ; const EXTRA_CRC : u8 = 69u8 ; const ENCODED_LEN : usize = 8usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . rl_torque_cmd = buf . get_i16_le () ; __struct . el_torque_cmd = buf . get_i16_le () ; __struct . az_torque_cmd = buf . get_i16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i16_le (self . rl_torque_cmd) ; __tmp . put_i16_le (self . el_torque_cmd) ; __tmp . put_i16_le (self . az_torque_cmd) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SYS_STATUS_DATA { pub onboard_control_sensors_present : MavSysStatusSensor , pub onboard_control_sensors_enabled : MavSysStatusSensor , pub onboard_control_sensors_health : MavSysStatusSensor , pub load : u16 , pub voltage_battery : u16 , pub current_battery : i16 , pub drop_rate_comm : u16 , pub errors_comm : u16 , pub errors_count1 : u16 , pub errors_count2 : u16 , pub errors_count3 : u16 , pub errors_count4 : u16 , pub battery_remaining : i8 , } impl SYS_STATUS_DATA { pub const ENCODED_LEN : usize = 31usize ; pub const DEFAULT : Self = Self { onboard_control_sensors_present : MavSysStatusSensor :: DEFAULT , onboard_control_sensors_enabled : MavSysStatusSensor :: DEFAULT , onboard_control_sensors_health : MavSysStatusSensor :: DEFAULT , load : 0_u16 , voltage_battery : 0_u16 , current_battery : 0_i16 , drop_rate_comm : 0_u16 , errors_comm : 0_u16 , errors_count1 : 0_u16 , errors_count2 : 0_u16 , errors_count3 : 0_u16 , errors_count4 : 0_u16 , battery_remaining : 0_i8 , } ; } impl Default for SYS_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SYS_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 1u32 ; const NAME : & 'static str = "SYS_STATUS" ; const EXTRA_CRC : u8 = 124u8 ; const ENCODED_LEN : usize = 31usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u32_le () ; __struct . onboard_control_sensors_present = MavSysStatusSensor :: from_bits (tmp & MavSysStatusSensor :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "MavSysStatusSensor" , value : tmp as u32 }) ? ; let tmp = buf . get_u32_le () ; __struct . onboard_control_sensors_enabled = MavSysStatusSensor :: from_bits (tmp & MavSysStatusSensor :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "MavSysStatusSensor" , value : tmp as u32 }) ? ; let tmp = buf . get_u32_le () ; __struct . onboard_control_sensors_health = MavSysStatusSensor :: from_bits (tmp & MavSysStatusSensor :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "MavSysStatusSensor" , value : tmp as u32 }) ? ; __struct . load = buf . get_u16_le () ; __struct . voltage_battery = buf . get_u16_le () ; __struct . current_battery = buf . get_i16_le () ; __struct . drop_rate_comm = buf . get_u16_le () ; __struct . errors_comm = buf . get_u16_le () ; __struct . errors_count1 = buf . get_u16_le () ; __struct . errors_count2 = buf . get_u16_le () ; __struct . errors_count3 = buf . get_u16_le () ; __struct . errors_count4 = buf . get_u16_le () ; __struct . battery_remaining = buf . get_i8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . onboard_control_sensors_present . bits ()) ; __tmp . put_u32_le (self . onboard_control_sensors_enabled . bits ()) ; __tmp . put_u32_le (self . onboard_control_sensors_health . bits ()) ; __tmp . put_u16_le (self . load) ; __tmp . put_u16_le (self . voltage_battery) ; __tmp . put_i16_le (self . current_battery) ; __tmp . put_u16_le (self . drop_rate_comm) ; __tmp . put_u16_le (self . errors_comm) ; __tmp . put_u16_le (self . errors_count1) ; __tmp . put_u16_le (self . errors_count2) ; __tmp . put_u16_le (self . errors_count3) ; __tmp . put_u16_le (self . errors_count4) ; __tmp . put_i8 (self . battery_remaining) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MCU_STATUS_DATA { pub MCU_temperature : i16 , pub MCU_voltage : u16 , pub MCU_voltage_min : u16 , pub MCU_voltage_max : u16 , pub id : u8 , } impl MCU_STATUS_DATA { pub const ENCODED_LEN : usize = 9usize ; pub const DEFAULT : Self = Self { MCU_temperature : 0_i16 , MCU_voltage : 0_u16 , MCU_voltage_min : 0_u16 , MCU_voltage_max : 0_u16 , id : 0_u8 , } ; } impl Default for MCU_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MCU_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 11039u32 ; const NAME : & 'static str = "MCU_STATUS" ; const EXTRA_CRC : u8 = 142u8 ; const ENCODED_LEN : usize = 9usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . MCU_temperature = buf . get_i16_le () ; __struct . MCU_voltage = buf . get_u16_le () ; __struct . MCU_voltage_min = buf . get_u16_le () ; __struct . MCU_voltage_max = buf . get_u16_le () ; __struct . id = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i16_le (self . MCU_temperature) ; __tmp . put_u16_le (self . MCU_voltage) ; __tmp . put_u16_le (self . MCU_voltage_min) ; __tmp . put_u16_le (self . MCU_voltage_max) ; __tmp . put_u8 (self . id) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HIL_RC_INPUTS_RAW_DATA { pub time_usec : u64 , pub chan1_raw : u16 , pub chan2_raw : u16 , pub chan3_raw : u16 , pub chan4_raw : u16 , pub chan5_raw : u16 , pub chan6_raw : u16 , pub chan7_raw : u16 , pub chan8_raw : u16 , pub chan9_raw : u16 , pub chan10_raw : u16 , pub chan11_raw : u16 , pub chan12_raw : u16 , pub rssi : u8 , } impl HIL_RC_INPUTS_RAW_DATA { pub const ENCODED_LEN : usize = 33usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , chan1_raw : 0_u16 , chan2_raw : 0_u16 , chan3_raw : 0_u16 , chan4_raw : 0_u16 , chan5_raw : 0_u16 , chan6_raw : 0_u16 , chan7_raw : 0_u16 , chan8_raw : 0_u16 , chan9_raw : 0_u16 , chan10_raw : 0_u16 , chan11_raw : 0_u16 , chan12_raw : 0_u16 , rssi : 0_u8 , } ; } impl Default for HIL_RC_INPUTS_RAW_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for HIL_RC_INPUTS_RAW_DATA { type Message = MavMessage ; const ID : u32 = 92u32 ; const NAME : & 'static str = "HIL_RC_INPUTS_RAW" ; const EXTRA_CRC : u8 = 54u8 ; const ENCODED_LEN : usize = 33usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . chan1_raw = buf . get_u16_le () ; __struct . chan2_raw = buf . get_u16_le () ; __struct . chan3_raw = buf . get_u16_le () ; __struct . chan4_raw = buf . get_u16_le () ; __struct . chan5_raw = buf . get_u16_le () ; __struct . chan6_raw = buf . get_u16_le () ; __struct . chan7_raw = buf . get_u16_le () ; __struct . chan8_raw = buf . get_u16_le () ; __struct . chan9_raw = buf . get_u16_le () ; __struct . chan10_raw = buf . get_u16_le () ; __struct . chan11_raw = buf . get_u16_le () ; __struct . chan12_raw = buf . get_u16_le () ; __struct . rssi = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_u16_le (self . chan1_raw) ; __tmp . put_u16_le (self . chan2_raw) ; __tmp . put_u16_le (self . chan3_raw) ; __tmp . put_u16_le (self . chan4_raw) ; __tmp . put_u16_le (self . chan5_raw) ; __tmp . put_u16_le (self . chan6_raw) ; __tmp . put_u16_le (self . chan7_raw) ; __tmp . put_u16_le (self . chan8_raw) ; __tmp . put_u16_le (self . chan9_raw) ; __tmp . put_u16_le (self . chan10_raw) ; __tmp . put_u16_le (self . chan11_raw) ; __tmp . put_u16_le (self . chan12_raw) ; __tmp . put_u8 (self . rssi) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PARAM_REQUEST_LIST_DATA { pub target_system : u8 , pub target_component : u8 , } impl PARAM_REQUEST_LIST_DATA { pub const ENCODED_LEN : usize = 2usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for PARAM_REQUEST_LIST_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for PARAM_REQUEST_LIST_DATA { type Message = MavMessage ; const ID : u32 = 21u32 ; const NAME : & 'static str = "PARAM_REQUEST_LIST" ; const EXTRA_CRC : u8 = 159u8 ; const ENCODED_LEN : usize = 2usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct OSD_PARAM_SHOW_CONFIG_DATA { pub request_id : u32 , pub target_system : u8 , pub target_component : u8 , pub osd_screen : u8 , pub osd_index : u8 , } impl OSD_PARAM_SHOW_CONFIG_DATA { pub const ENCODED_LEN : usize = 8usize ; pub const DEFAULT : Self = Self { request_id : 0_u32 , target_system : 0_u8 , target_component : 0_u8 , osd_screen : 0_u8 , osd_index : 0_u8 , } ; } impl Default for OSD_PARAM_SHOW_CONFIG_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for OSD_PARAM_SHOW_CONFIG_DATA { type Message = MavMessage ; const ID : u32 = 11035u32 ; const NAME : & 'static str = "OSD_PARAM_SHOW_CONFIG" ; const EXTRA_CRC : u8 = 128u8 ; const ENCODED_LEN : usize = 8usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . request_id = buf . get_u32_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . osd_screen = buf . get_u8 () ; __struct . osd_index = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . request_id) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . osd_screen) ; __tmp . put_u8 (self . osd_index) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct POSITION_TARGET_GLOBAL_INT_DATA { pub time_boot_ms : u32 , pub lat_int : i32 , pub lon_int : i32 , pub alt : f32 , pub vx : f32 , pub vy : f32 , pub vz : f32 , pub afx : f32 , pub afy : f32 , pub afz : f32 , pub yaw : f32 , pub yaw_rate : f32 , pub type_mask : PositionTargetTypemask , pub coordinate_frame : MavFrame , } impl POSITION_TARGET_GLOBAL_INT_DATA { pub const ENCODED_LEN : usize = 51usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , lat_int : 0_i32 , lon_int : 0_i32 , alt : 0.0_f32 , vx : 0.0_f32 , vy : 0.0_f32 , vz : 0.0_f32 , afx : 0.0_f32 , afy : 0.0_f32 , afz : 0.0_f32 , yaw : 0.0_f32 , yaw_rate : 0.0_f32 , type_mask : PositionTargetTypemask :: DEFAULT , coordinate_frame : MavFrame :: DEFAULT , } ; } impl Default for POSITION_TARGET_GLOBAL_INT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for POSITION_TARGET_GLOBAL_INT_DATA { type Message = MavMessage ; const ID : u32 = 87u32 ; const NAME : & 'static str = "POSITION_TARGET_GLOBAL_INT" ; const EXTRA_CRC : u8 = 150u8 ; const ENCODED_LEN : usize = 51usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . lat_int = buf . get_i32_le () ; __struct . lon_int = buf . get_i32_le () ; __struct . alt = buf . get_f32_le () ; __struct . vx = buf . get_f32_le () ; __struct . vy = buf . get_f32_le () ; __struct . vz = buf . get_f32_le () ; __struct . afx = buf . get_f32_le () ; __struct . afy = buf . get_f32_le () ; __struct . afz = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; __struct . yaw_rate = buf . get_f32_le () ; let tmp = buf . get_u16_le () ; __struct . type_mask = PositionTargetTypemask :: from_bits (tmp & PositionTargetTypemask :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "PositionTargetTypemask" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . coordinate_frame = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavFrame" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_i32_le (self . lat_int) ; __tmp . put_i32_le (self . lon_int) ; __tmp . put_f32_le (self . alt) ; __tmp . put_f32_le (self . vx) ; __tmp . put_f32_le (self . vy) ; __tmp . put_f32_le (self . vz) ; __tmp . put_f32_le (self . afx) ; __tmp . put_f32_le (self . afy) ; __tmp . put_f32_le (self . afz) ; __tmp . put_f32_le (self . yaw) ; __tmp . put_f32_le (self . yaw_rate) ; __tmp . put_u16_le (self . type_mask . bits ()) ; __tmp . put_u8 (self . coordinate_frame as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct NAMED_VALUE_INT_DATA { pub time_boot_ms : u32 , pub value : i32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub name : [u8 ; 10] , } impl NAMED_VALUE_INT_DATA { pub const ENCODED_LEN : usize = 18usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , value : 0_i32 , name : [0_u8 ; 10usize] , } ; } impl Default for NAMED_VALUE_INT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for NAMED_VALUE_INT_DATA { type Message = MavMessage ; const ID : u32 = 252u32 ; const NAME : & 'static str = "NAMED_VALUE_INT" ; const EXTRA_CRC : u8 = 44u8 ; const ENCODED_LEN : usize = 18usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . value = buf . get_i32_le () ; for v in & mut __struct . name { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_i32_le (self . value) ; for val in & self . name { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CONTROL_SYSTEM_STATE_DATA { pub time_usec : u64 , pub x_acc : f32 , pub y_acc : f32 , pub z_acc : f32 , pub x_vel : f32 , pub y_vel : f32 , pub z_vel : f32 , pub x_pos : f32 , pub y_pos : f32 , pub z_pos : f32 , pub airspeed : f32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub vel_variance : [f32 ; 3] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub pos_variance : [f32 ; 3] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub q : [f32 ; 4] , pub roll_rate : f32 , pub pitch_rate : f32 , pub yaw_rate : f32 , } impl CONTROL_SYSTEM_STATE_DATA { pub const ENCODED_LEN : usize = 100usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , x_acc : 0.0_f32 , y_acc : 0.0_f32 , z_acc : 0.0_f32 , x_vel : 0.0_f32 , y_vel : 0.0_f32 , z_vel : 0.0_f32 , x_pos : 0.0_f32 , y_pos : 0.0_f32 , z_pos : 0.0_f32 , airspeed : 0.0_f32 , vel_variance : [0.0_f32 ; 3usize] , pos_variance : [0.0_f32 ; 3usize] , q : [0.0_f32 ; 4usize] , roll_rate : 0.0_f32 , pitch_rate : 0.0_f32 , yaw_rate : 0.0_f32 , } ; } impl Default for CONTROL_SYSTEM_STATE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CONTROL_SYSTEM_STATE_DATA { type Message = MavMessage ; const ID : u32 = 146u32 ; const NAME : & 'static str = "CONTROL_SYSTEM_STATE" ; const EXTRA_CRC : u8 = 103u8 ; const ENCODED_LEN : usize = 100usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . x_acc = buf . get_f32_le () ; __struct . y_acc = buf . get_f32_le () ; __struct . z_acc = buf . get_f32_le () ; __struct . x_vel = buf . get_f32_le () ; __struct . y_vel = buf . get_f32_le () ; __struct . z_vel = buf . get_f32_le () ; __struct . x_pos = buf . get_f32_le () ; __struct . y_pos = buf . get_f32_le () ; __struct . z_pos = buf . get_f32_le () ; __struct . airspeed = buf . get_f32_le () ; for v in & mut __struct . vel_variance { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . pos_variance { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . q { let val = buf . get_f32_le () ; * v = val ; } __struct . roll_rate = buf . get_f32_le () ; __struct . pitch_rate = buf . get_f32_le () ; __struct . yaw_rate = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . x_acc) ; __tmp . put_f32_le (self . y_acc) ; __tmp . put_f32_le (self . z_acc) ; __tmp . put_f32_le (self . x_vel) ; __tmp . put_f32_le (self . y_vel) ; __tmp . put_f32_le (self . z_vel) ; __tmp . put_f32_le (self . x_pos) ; __tmp . put_f32_le (self . y_pos) ; __tmp . put_f32_le (self . z_pos) ; __tmp . put_f32_le (self . airspeed) ; for val in & self . vel_variance { __tmp . put_f32_le (* val) ; } for val in & self . pos_variance { __tmp . put_f32_le (* val) ; } for val in & self . q { __tmp . put_f32_le (* val) ; } __tmp . put_f32_le (self . roll_rate) ; __tmp . put_f32_le (self . pitch_rate) ; __tmp . put_f32_le (self . yaw_rate) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct FLIGHT_INFORMATION_DATA { pub arming_time_utc : u64 , pub takeoff_time_utc : u64 , pub flight_uuid : u64 , pub time_boot_ms : u32 , } impl FLIGHT_INFORMATION_DATA { pub const ENCODED_LEN : usize = 28usize ; pub const DEFAULT : Self = Self { arming_time_utc : 0_u64 , takeoff_time_utc : 0_u64 , flight_uuid : 0_u64 , time_boot_ms : 0_u32 , } ; } impl Default for FLIGHT_INFORMATION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for FLIGHT_INFORMATION_DATA { type Message = MavMessage ; const ID : u32 = 264u32 ; const NAME : & 'static str = "FLIGHT_INFORMATION" ; const EXTRA_CRC : u8 = 49u8 ; const ENCODED_LEN : usize = 28usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . arming_time_utc = buf . get_u64_le () ; __struct . takeoff_time_utc = buf . get_u64_le () ; __struct . flight_uuid = buf . get_u64_le () ; __struct . time_boot_ms = buf . get_u32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . arming_time_utc) ; __tmp . put_u64_le (self . takeoff_time_utc) ; __tmp . put_u64_le (self . flight_uuid) ; __tmp . put_u32_le (self . time_boot_ms) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct UAVIONIX_ADSB_OUT_CFG_DATA { pub ICAO : u32 , pub stallSpeed : u16 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub callsign : [u8 ; 9] , pub emitterType : AdsbEmitterType , pub aircraftSize : UavionixAdsbOutCfgAircraftSize , pub gpsOffsetLat : UavionixAdsbOutCfgGpsOffsetLat , pub gpsOffsetLon : UavionixAdsbOutCfgGpsOffsetLon , pub rfSelect : UavionixAdsbOutRfSelect , } impl UAVIONIX_ADSB_OUT_CFG_DATA { pub const ENCODED_LEN : usize = 20usize ; pub const DEFAULT : Self = Self { ICAO : 0_u32 , stallSpeed : 0_u16 , callsign : [0_u8 ; 9usize] , emitterType : AdsbEmitterType :: DEFAULT , aircraftSize : UavionixAdsbOutCfgAircraftSize :: DEFAULT , gpsOffsetLat : UavionixAdsbOutCfgGpsOffsetLat :: DEFAULT , gpsOffsetLon : UavionixAdsbOutCfgGpsOffsetLon :: DEFAULT , rfSelect : UavionixAdsbOutRfSelect :: DEFAULT , } ; } impl Default for UAVIONIX_ADSB_OUT_CFG_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for UAVIONIX_ADSB_OUT_CFG_DATA { type Message = MavMessage ; const ID : u32 = 10001u32 ; const NAME : & 'static str = "UAVIONIX_ADSB_OUT_CFG" ; const EXTRA_CRC : u8 = 209u8 ; const ENCODED_LEN : usize = 20usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . ICAO = buf . get_u32_le () ; __struct . stallSpeed = buf . get_u16_le () ; for v in & mut __struct . callsign { let val = buf . get_u8 () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . emitterType = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "AdsbEmitterType" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . aircraftSize = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "UavionixAdsbOutCfgAircraftSize" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . gpsOffsetLat = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "UavionixAdsbOutCfgGpsOffsetLat" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . gpsOffsetLon = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "UavionixAdsbOutCfgGpsOffsetLon" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . rfSelect = UavionixAdsbOutRfSelect :: from_bits (tmp & UavionixAdsbOutRfSelect :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "UavionixAdsbOutRfSelect" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . ICAO) ; __tmp . put_u16_le (self . stallSpeed) ; for val in & self . callsign { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . emitterType as u8) ; __tmp . put_u8 (self . aircraftSize as u8) ; __tmp . put_u8 (self . gpsOffsetLat as u8) ; __tmp . put_u8 (self . gpsOffsetLon as u8) ; __tmp . put_u8 (self . rfSelect . bits ()) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PLAY_TUNE_V2_DATA { pub format : TuneFormat , pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub tune : [u8 ; 248] , } impl PLAY_TUNE_V2_DATA { pub const ENCODED_LEN : usize = 254usize ; pub const DEFAULT : Self = Self { format : TuneFormat :: DEFAULT , target_system : 0_u8 , target_component : 0_u8 , tune : [0_u8 ; 248usize] , } ; } impl Default for PLAY_TUNE_V2_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for PLAY_TUNE_V2_DATA { type Message = MavMessage ; const ID : u32 = 400u32 ; const NAME : & 'static str = "PLAY_TUNE_V2" ; const EXTRA_CRC : u8 = 110u8 ; const ENCODED_LEN : usize = 254usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u32_le () ; __struct . format = TuneFormat :: from_bits (tmp & TuneFormat :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "TuneFormat" , value : tmp as u32 }) ? ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . tune { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . format . bits ()) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . tune { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MANUAL_CONTROL_DATA { pub x : i16 , pub y : i16 , pub z : i16 , pub r : i16 , pub buttons : u16 , pub target : u8 , } impl MANUAL_CONTROL_DATA { pub const ENCODED_LEN : usize = 11usize ; pub const DEFAULT : Self = Self { x : 0_i16 , y : 0_i16 , z : 0_i16 , r : 0_i16 , buttons : 0_u16 , target : 0_u8 , } ; } impl Default for MANUAL_CONTROL_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MANUAL_CONTROL_DATA { type Message = MavMessage ; const ID : u32 = 69u32 ; const NAME : & 'static str = "MANUAL_CONTROL" ; const EXTRA_CRC : u8 = 243u8 ; const ENCODED_LEN : usize = 11usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . x = buf . get_i16_le () ; __struct . y = buf . get_i16_le () ; __struct . z = buf . get_i16_le () ; __struct . r = buf . get_i16_le () ; __struct . buttons = buf . get_u16_le () ; __struct . target = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i16_le (self . x) ; __tmp . put_i16_le (self . y) ; __tmp . put_i16_le (self . z) ; __tmp . put_i16_le (self . r) ; __tmp . put_u16_le (self . buttons) ; __tmp . put_u8 (self . target) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ADAP_TUNING_DATA { pub desired : f32 , pub achieved : f32 , pub error : f32 , pub theta : f32 , pub omega : f32 , pub sigma : f32 , pub theta_dot : f32 , pub omega_dot : f32 , pub sigma_dot : f32 , pub f : f32 , pub f_dot : f32 , pub u : f32 , pub axis : PidTuningAxis , } impl ADAP_TUNING_DATA { pub const ENCODED_LEN : usize = 49usize ; pub const DEFAULT : Self = Self { desired : 0.0_f32 , achieved : 0.0_f32 , error : 0.0_f32 , theta : 0.0_f32 , omega : 0.0_f32 , sigma : 0.0_f32 , theta_dot : 0.0_f32 , omega_dot : 0.0_f32 , sigma_dot : 0.0_f32 , f : 0.0_f32 , f_dot : 0.0_f32 , u : 0.0_f32 , axis : PidTuningAxis :: DEFAULT , } ; } impl Default for ADAP_TUNING_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ADAP_TUNING_DATA { type Message = MavMessage ; const ID : u32 = 11010u32 ; const NAME : & 'static str = "ADAP_TUNING" ; const EXTRA_CRC : u8 = 46u8 ; const ENCODED_LEN : usize = 49usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . desired = buf . get_f32_le () ; __struct . achieved = buf . get_f32_le () ; __struct . error = buf . get_f32_le () ; __struct . theta = buf . get_f32_le () ; __struct . omega = buf . get_f32_le () ; __struct . sigma = buf . get_f32_le () ; __struct . theta_dot = buf . get_f32_le () ; __struct . omega_dot = buf . get_f32_le () ; __struct . sigma_dot = buf . get_f32_le () ; __struct . f = buf . get_f32_le () ; __struct . f_dot = buf . get_f32_le () ; __struct . u = buf . get_f32_le () ; let tmp = buf . get_u8 () ; __struct . axis = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "PidTuningAxis" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . desired) ; __tmp . put_f32_le (self . achieved) ; __tmp . put_f32_le (self . error) ; __tmp . put_f32_le (self . theta) ; __tmp . put_f32_le (self . omega) ; __tmp . put_f32_le (self . sigma) ; __tmp . put_f32_le (self . theta_dot) ; __tmp . put_f32_le (self . omega_dot) ; __tmp . put_f32_le (self . sigma_dot) ; __tmp . put_f32_le (self . f) ; __tmp . put_f32_le (self . f_dot) ; __tmp . put_f32_le (self . u) ; __tmp . put_u8 (self . axis as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LOG_REQUEST_DATA_DATA { pub ofs : u32 , pub count : u32 , pub id : u16 , pub target_system : u8 , pub target_component : u8 , } impl LOG_REQUEST_DATA_DATA { pub const ENCODED_LEN : usize = 12usize ; pub const DEFAULT : Self = Self { ofs : 0_u32 , count : 0_u32 , id : 0_u16 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for LOG_REQUEST_DATA_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for LOG_REQUEST_DATA_DATA { type Message = MavMessage ; const ID : u32 = 119u32 ; const NAME : & 'static str = "LOG_REQUEST_DATA" ; const EXTRA_CRC : u8 = 116u8 ; const ENCODED_LEN : usize = 12usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . ofs = buf . get_u32_le () ; __struct . count = buf . get_u32_le () ; __struct . id = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . ofs) ; __tmp . put_u32_le (self . count) ; __tmp . put_u16_le (self . id) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HIL_SENSOR_DATA { pub time_usec : u64 , pub xacc : f32 , pub yacc : f32 , pub zacc : f32 , pub xgyro : f32 , pub ygyro : f32 , pub zgyro : f32 , pub xmag : f32 , pub ymag : f32 , pub zmag : f32 , pub abs_pressure : f32 , pub diff_pressure : f32 , pub pressure_alt : f32 , pub temperature : f32 , pub fields_updated : HilSensorUpdatedFlags , } impl HIL_SENSOR_DATA { pub const ENCODED_LEN : usize = 64usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , xacc : 0.0_f32 , yacc : 0.0_f32 , zacc : 0.0_f32 , xgyro : 0.0_f32 , ygyro : 0.0_f32 , zgyro : 0.0_f32 , xmag : 0.0_f32 , ymag : 0.0_f32 , zmag : 0.0_f32 , abs_pressure : 0.0_f32 , diff_pressure : 0.0_f32 , pressure_alt : 0.0_f32 , temperature : 0.0_f32 , fields_updated : HilSensorUpdatedFlags :: DEFAULT , } ; } impl Default for HIL_SENSOR_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for HIL_SENSOR_DATA { type Message = MavMessage ; const ID : u32 = 107u32 ; const NAME : & 'static str = "HIL_SENSOR" ; const EXTRA_CRC : u8 = 108u8 ; const ENCODED_LEN : usize = 64usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . xacc = buf . get_f32_le () ; __struct . yacc = buf . get_f32_le () ; __struct . zacc = buf . get_f32_le () ; __struct . xgyro = buf . get_f32_le () ; __struct . ygyro = buf . get_f32_le () ; __struct . zgyro = buf . get_f32_le () ; __struct . xmag = buf . get_f32_le () ; __struct . ymag = buf . get_f32_le () ; __struct . zmag = buf . get_f32_le () ; __struct . abs_pressure = buf . get_f32_le () ; __struct . diff_pressure = buf . get_f32_le () ; __struct . pressure_alt = buf . get_f32_le () ; __struct . temperature = buf . get_f32_le () ; let tmp = buf . get_u32_le () ; __struct . fields_updated = HilSensorUpdatedFlags :: from_bits (tmp & HilSensorUpdatedFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "HilSensorUpdatedFlags" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . xacc) ; __tmp . put_f32_le (self . yacc) ; __tmp . put_f32_le (self . zacc) ; __tmp . put_f32_le (self . xgyro) ; __tmp . put_f32_le (self . ygyro) ; __tmp . put_f32_le (self . zgyro) ; __tmp . put_f32_le (self . xmag) ; __tmp . put_f32_le (self . ymag) ; __tmp . put_f32_le (self . zmag) ; __tmp . put_f32_le (self . abs_pressure) ; __tmp . put_f32_le (self . diff_pressure) ; __tmp . put_f32_le (self . pressure_alt) ; __tmp . put_f32_le (self . temperature) ; __tmp . put_u32_le (self . fields_updated . bits ()) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PARAM_EXT_REQUEST_READ_DATA { pub param_index : i16 , pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub param_id : [u8 ; 16] , } impl PARAM_EXT_REQUEST_READ_DATA { pub const ENCODED_LEN : usize = 20usize ; pub const DEFAULT : Self = Self { param_index : 0_i16 , target_system : 0_u8 , target_component : 0_u8 , param_id : [0_u8 ; 16usize] , } ; } impl Default for PARAM_EXT_REQUEST_READ_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for PARAM_EXT_REQUEST_READ_DATA { type Message = MavMessage ; const ID : u32 = 320u32 ; const NAME : & 'static str = "PARAM_EXT_REQUEST_READ" ; const EXTRA_CRC : u8 = 243u8 ; const ENCODED_LEN : usize = 20usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . param_index = buf . get_i16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . param_id { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i16_le (self . param_index) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . param_id { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PARAM_EXT_VALUE_DATA { pub param_count : u16 , pub param_index : u16 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub param_id : [u8 ; 16] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub param_value : [u8 ; 128] , pub param_type : MavParamExtType , } impl PARAM_EXT_VALUE_DATA { pub const ENCODED_LEN : usize = 149usize ; pub const DEFAULT : Self = Self { param_count : 0_u16 , param_index : 0_u16 , param_id : [0_u8 ; 16usize] , param_value : [0_u8 ; 128usize] , param_type : MavParamExtType :: DEFAULT , } ; } impl Default for PARAM_EXT_VALUE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for PARAM_EXT_VALUE_DATA { type Message = MavMessage ; const ID : u32 = 322u32 ; const NAME : & 'static str = "PARAM_EXT_VALUE" ; const EXTRA_CRC : u8 = 243u8 ; const ENCODED_LEN : usize = 149usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . param_count = buf . get_u16_le () ; __struct . param_index = buf . get_u16_le () ; for v in & mut __struct . param_id { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . param_value { let val = buf . get_u8 () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . param_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavParamExtType" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . param_count) ; __tmp . put_u16_le (self . param_index) ; for val in & self . param_id { __tmp . put_u8 (* val) ; } for val in & self . param_value { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . param_type as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ICAROUS_KINEMATIC_BANDS_DATA { pub min1 : f32 , pub max1 : f32 , pub min2 : f32 , pub max2 : f32 , pub min3 : f32 , pub max3 : f32 , pub min4 : f32 , pub max4 : f32 , pub min5 : f32 , pub max5 : f32 , pub numBands : i8 , pub type1 : IcarousTrackBandTypes , pub type2 : IcarousTrackBandTypes , pub type3 : IcarousTrackBandTypes , pub type4 : IcarousTrackBandTypes , pub type5 : IcarousTrackBandTypes , } impl ICAROUS_KINEMATIC_BANDS_DATA { pub const ENCODED_LEN : usize = 46usize ; pub const DEFAULT : Self = Self { min1 : 0.0_f32 , max1 : 0.0_f32 , min2 : 0.0_f32 , max2 : 0.0_f32 , min3 : 0.0_f32 , max3 : 0.0_f32 , min4 : 0.0_f32 , max4 : 0.0_f32 , min5 : 0.0_f32 , max5 : 0.0_f32 , numBands : 0_i8 , type1 : IcarousTrackBandTypes :: DEFAULT , type2 : IcarousTrackBandTypes :: DEFAULT , type3 : IcarousTrackBandTypes :: DEFAULT , type4 : IcarousTrackBandTypes :: DEFAULT , type5 : IcarousTrackBandTypes :: DEFAULT , } ; } impl Default for ICAROUS_KINEMATIC_BANDS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ICAROUS_KINEMATIC_BANDS_DATA { type Message = MavMessage ; const ID : u32 = 42001u32 ; const NAME : & 'static str = "ICAROUS_KINEMATIC_BANDS" ; const EXTRA_CRC : u8 = 239u8 ; const ENCODED_LEN : usize = 46usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . min1 = buf . get_f32_le () ; __struct . max1 = buf . get_f32_le () ; __struct . min2 = buf . get_f32_le () ; __struct . max2 = buf . get_f32_le () ; __struct . min3 = buf . get_f32_le () ; __struct . max3 = buf . get_f32_le () ; __struct . min4 = buf . get_f32_le () ; __struct . max4 = buf . get_f32_le () ; __struct . min5 = buf . get_f32_le () ; __struct . max5 = buf . get_f32_le () ; __struct . numBands = buf . get_i8 () ; let tmp = buf . get_u8 () ; __struct . type1 = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "IcarousTrackBandTypes" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . type2 = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "IcarousTrackBandTypes" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . type3 = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "IcarousTrackBandTypes" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . type4 = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "IcarousTrackBandTypes" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . type5 = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "IcarousTrackBandTypes" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . min1) ; __tmp . put_f32_le (self . max1) ; __tmp . put_f32_le (self . min2) ; __tmp . put_f32_le (self . max2) ; __tmp . put_f32_le (self . min3) ; __tmp . put_f32_le (self . max3) ; __tmp . put_f32_le (self . min4) ; __tmp . put_f32_le (self . max4) ; __tmp . put_f32_le (self . min5) ; __tmp . put_f32_le (self . max5) ; __tmp . put_i8 (self . numBands) ; __tmp . put_u8 (self . type1 as u8) ; __tmp . put_u8 (self . type2 as u8) ; __tmp . put_u8 (self . type3 as u8) ; __tmp . put_u8 (self . type4 as u8) ; __tmp . put_u8 (self . type5 as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LIMITS_STATUS_DATA { pub last_trigger : u32 , pub last_action : u32 , pub last_recovery : u32 , pub last_clear : u32 , pub breach_count : u16 , pub limits_state : LimitsState , pub mods_enabled : LimitModule , pub mods_required : LimitModule , pub mods_triggered : LimitModule , } impl LIMITS_STATUS_DATA { pub const ENCODED_LEN : usize = 22usize ; pub const DEFAULT : Self = Self { last_trigger : 0_u32 , last_action : 0_u32 , last_recovery : 0_u32 , last_clear : 0_u32 , breach_count : 0_u16 , limits_state : LimitsState :: DEFAULT , mods_enabled : LimitModule :: DEFAULT , mods_required : LimitModule :: DEFAULT , mods_triggered : LimitModule :: DEFAULT , } ; } impl Default for LIMITS_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for LIMITS_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 167u32 ; const NAME : & 'static str = "LIMITS_STATUS" ; const EXTRA_CRC : u8 = 144u8 ; const ENCODED_LEN : usize = 22usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . last_trigger = buf . get_u32_le () ; __struct . last_action = buf . get_u32_le () ; __struct . last_recovery = buf . get_u32_le () ; __struct . last_clear = buf . get_u32_le () ; __struct . breach_count = buf . get_u16_le () ; let tmp = buf . get_u8 () ; __struct . limits_state = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "LimitsState" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . mods_enabled = LimitModule :: from_bits (tmp & LimitModule :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "LimitModule" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . mods_required = LimitModule :: from_bits (tmp & LimitModule :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "LimitModule" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . mods_triggered = LimitModule :: from_bits (tmp & LimitModule :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "LimitModule" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . last_trigger) ; __tmp . put_u32_le (self . last_action) ; __tmp . put_u32_le (self . last_recovery) ; __tmp . put_u32_le (self . last_clear) ; __tmp . put_u16_le (self . breach_count) ; __tmp . put_u8 (self . limits_state as u8) ; __tmp . put_u8 (self . mods_enabled . bits ()) ; __tmp . put_u8 (self . mods_required . bits ()) ; __tmp . put_u8 (self . mods_triggered . bits ()) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct WIND_DATA { pub direction : f32 , pub speed : f32 , pub speed_z : f32 , } impl WIND_DATA { pub const ENCODED_LEN : usize = 12usize ; pub const DEFAULT : Self = Self { direction : 0.0_f32 , speed : 0.0_f32 , speed_z : 0.0_f32 , } ; } impl Default for WIND_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for WIND_DATA { type Message = MavMessage ; const ID : u32 = 168u32 ; const NAME : & 'static str = "WIND" ; const EXTRA_CRC : u8 = 1u8 ; const ENCODED_LEN : usize = 12usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . direction = buf . get_f32_le () ; __struct . speed = buf . get_f32_le () ; __struct . speed_z = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . direction) ; __tmp . put_f32_le (self . speed) ; __tmp . put_f32_le (self . speed_z) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CAMERA_TRACKING_GEO_STATUS_DATA { pub lat : i32 , pub lon : i32 , pub alt : f32 , pub h_acc : f32 , pub v_acc : f32 , pub vel_n : f32 , pub vel_e : f32 , pub vel_d : f32 , pub vel_acc : f32 , pub dist : f32 , pub hdg : f32 , pub hdg_acc : f32 , pub tracking_status : CameraTrackingStatusFlags , } impl CAMERA_TRACKING_GEO_STATUS_DATA { pub const ENCODED_LEN : usize = 49usize ; pub const DEFAULT : Self = Self { lat : 0_i32 , lon : 0_i32 , alt : 0.0_f32 , h_acc : 0.0_f32 , v_acc : 0.0_f32 , vel_n : 0.0_f32 , vel_e : 0.0_f32 , vel_d : 0.0_f32 , vel_acc : 0.0_f32 , dist : 0.0_f32 , hdg : 0.0_f32 , hdg_acc : 0.0_f32 , tracking_status : CameraTrackingStatusFlags :: DEFAULT , } ; } impl Default for CAMERA_TRACKING_GEO_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CAMERA_TRACKING_GEO_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 276u32 ; const NAME : & 'static str = "CAMERA_TRACKING_GEO_STATUS" ; const EXTRA_CRC : u8 = 18u8 ; const ENCODED_LEN : usize = 49usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . alt = buf . get_f32_le () ; __struct . h_acc = buf . get_f32_le () ; __struct . v_acc = buf . get_f32_le () ; __struct . vel_n = buf . get_f32_le () ; __struct . vel_e = buf . get_f32_le () ; __struct . vel_d = buf . get_f32_le () ; __struct . vel_acc = buf . get_f32_le () ; __struct . dist = buf . get_f32_le () ; __struct . hdg = buf . get_f32_le () ; __struct . hdg_acc = buf . get_f32_le () ; let tmp = buf . get_u8 () ; __struct . tracking_status = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "CameraTrackingStatusFlags" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_f32_le (self . alt) ; __tmp . put_f32_le (self . h_acc) ; __tmp . put_f32_le (self . v_acc) ; __tmp . put_f32_le (self . vel_n) ; __tmp . put_f32_le (self . vel_e) ; __tmp . put_f32_le (self . vel_d) ; __tmp . put_f32_le (self . vel_acc) ; __tmp . put_f32_le (self . dist) ; __tmp . put_f32_le (self . hdg) ; __tmp . put_f32_le (self . hdg_acc) ; __tmp . put_u8 (self . tracking_status as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GPS2_RTK_DATA { pub time_last_baseline_ms : u32 , pub tow : u32 , pub baseline_a_mm : i32 , pub baseline_b_mm : i32 , pub baseline_c_mm : i32 , pub accuracy : u32 , pub iar_num_hypotheses : i32 , pub wn : u16 , pub rtk_receiver_id : u8 , pub rtk_health : u8 , pub rtk_rate : u8 , pub nsats : u8 , pub baseline_coords_type : RtkBaselineCoordinateSystem , } impl GPS2_RTK_DATA { pub const ENCODED_LEN : usize = 35usize ; pub const DEFAULT : Self = Self { time_last_baseline_ms : 0_u32 , tow : 0_u32 , baseline_a_mm : 0_i32 , baseline_b_mm : 0_i32 , baseline_c_mm : 0_i32 , accuracy : 0_u32 , iar_num_hypotheses : 0_i32 , wn : 0_u16 , rtk_receiver_id : 0_u8 , rtk_health : 0_u8 , rtk_rate : 0_u8 , nsats : 0_u8 , baseline_coords_type : RtkBaselineCoordinateSystem :: DEFAULT , } ; } impl Default for GPS2_RTK_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GPS2_RTK_DATA { type Message = MavMessage ; const ID : u32 = 128u32 ; const NAME : & 'static str = "GPS2_RTK" ; const EXTRA_CRC : u8 = 226u8 ; const ENCODED_LEN : usize = 35usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_last_baseline_ms = buf . get_u32_le () ; __struct . tow = buf . get_u32_le () ; __struct . baseline_a_mm = buf . get_i32_le () ; __struct . baseline_b_mm = buf . get_i32_le () ; __struct . baseline_c_mm = buf . get_i32_le () ; __struct . accuracy = buf . get_u32_le () ; __struct . iar_num_hypotheses = buf . get_i32_le () ; __struct . wn = buf . get_u16_le () ; __struct . rtk_receiver_id = buf . get_u8 () ; __struct . rtk_health = buf . get_u8 () ; __struct . rtk_rate = buf . get_u8 () ; __struct . nsats = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . baseline_coords_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "RtkBaselineCoordinateSystem" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_last_baseline_ms) ; __tmp . put_u32_le (self . tow) ; __tmp . put_i32_le (self . baseline_a_mm) ; __tmp . put_i32_le (self . baseline_b_mm) ; __tmp . put_i32_le (self . baseline_c_mm) ; __tmp . put_u32_le (self . accuracy) ; __tmp . put_i32_le (self . iar_num_hypotheses) ; __tmp . put_u16_le (self . wn) ; __tmp . put_u8 (self . rtk_receiver_id) ; __tmp . put_u8 (self . rtk_health) ; __tmp . put_u8 (self . rtk_rate) ; __tmp . put_u8 (self . nsats) ; __tmp . put_u8 (self . baseline_coords_type as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HERELINK_TELEM_DATA { } impl HERELINK_TELEM_DATA { pub const ENCODED_LEN : usize = 0usize ; pub const DEFAULT : Self = Self { } ; } impl Default for HERELINK_TELEM_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for HERELINK_TELEM_DATA { type Message = MavMessage ; const ID : u32 = 50003u32 ; const NAME : & 'static str = "HERELINK_TELEM" ; const EXTRA_CRC : u8 = 53u8 ; const ENCODED_LEN : usize = 0usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { Ok (Self :: default ()) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GIMBAL_REPORT_DATA { pub delta_time : f32 , pub delta_angle_x : f32 , pub delta_angle_y : f32 , pub delta_angle_z : f32 , pub delta_velocity_x : f32 , pub delta_velocity_y : f32 , pub delta_velocity_z : f32 , pub joint_roll : f32 , pub joint_el : f32 , pub joint_az : f32 , pub target_system : u8 , pub target_component : u8 , } impl GIMBAL_REPORT_DATA { pub const ENCODED_LEN : usize = 42usize ; pub const DEFAULT : Self = Self { delta_time : 0.0_f32 , delta_angle_x : 0.0_f32 , delta_angle_y : 0.0_f32 , delta_angle_z : 0.0_f32 , delta_velocity_x : 0.0_f32 , delta_velocity_y : 0.0_f32 , delta_velocity_z : 0.0_f32 , joint_roll : 0.0_f32 , joint_el : 0.0_f32 , joint_az : 0.0_f32 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for GIMBAL_REPORT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GIMBAL_REPORT_DATA { type Message = MavMessage ; const ID : u32 = 200u32 ; const NAME : & 'static str = "GIMBAL_REPORT" ; const EXTRA_CRC : u8 = 134u8 ; const ENCODED_LEN : usize = 42usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . delta_time = buf . get_f32_le () ; __struct . delta_angle_x = buf . get_f32_le () ; __struct . delta_angle_y = buf . get_f32_le () ; __struct . delta_angle_z = buf . get_f32_le () ; __struct . delta_velocity_x = buf . get_f32_le () ; __struct . delta_velocity_y = buf . get_f32_le () ; __struct . delta_velocity_z = buf . get_f32_le () ; __struct . joint_roll = buf . get_f32_le () ; __struct . joint_el = buf . get_f32_le () ; __struct . joint_az = buf . get_f32_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . delta_time) ; __tmp . put_f32_le (self . delta_angle_x) ; __tmp . put_f32_le (self . delta_angle_y) ; __tmp . put_f32_le (self . delta_angle_z) ; __tmp . put_f32_le (self . delta_velocity_x) ; __tmp . put_f32_le (self . delta_velocity_y) ; __tmp . put_f32_le (self . delta_velocity_z) ; __tmp . put_f32_le (self . joint_roll) ; __tmp . put_f32_le (self . joint_el) ; __tmp . put_f32_le (self . joint_az) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct COLLISION_DATA { pub id : u32 , pub time_to_minimum_delta : f32 , pub altitude_minimum_delta : f32 , pub horizontal_minimum_delta : f32 , pub src : MavCollisionSrc , pub action : MavCollisionAction , pub threat_level : MavCollisionThreatLevel , } impl COLLISION_DATA { pub const ENCODED_LEN : usize = 19usize ; pub const DEFAULT : Self = Self { id : 0_u32 , time_to_minimum_delta : 0.0_f32 , altitude_minimum_delta : 0.0_f32 , horizontal_minimum_delta : 0.0_f32 , src : MavCollisionSrc :: DEFAULT , action : MavCollisionAction :: DEFAULT , threat_level : MavCollisionThreatLevel :: DEFAULT , } ; } impl Default for COLLISION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for COLLISION_DATA { type Message = MavMessage ; const ID : u32 = 247u32 ; const NAME : & 'static str = "COLLISION" ; const EXTRA_CRC : u8 = 81u8 ; const ENCODED_LEN : usize = 19usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . id = buf . get_u32_le () ; __struct . time_to_minimum_delta = buf . get_f32_le () ; __struct . altitude_minimum_delta = buf . get_f32_le () ; __struct . horizontal_minimum_delta = buf . get_f32_le () ; let tmp = buf . get_u8 () ; __struct . src = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavCollisionSrc" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . action = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavCollisionAction" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . threat_level = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavCollisionThreatLevel" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . id) ; __tmp . put_f32_le (self . time_to_minimum_delta) ; __tmp . put_f32_le (self . altitude_minimum_delta) ; __tmp . put_f32_le (self . horizontal_minimum_delta) ; __tmp . put_u8 (self . src as u8) ; __tmp . put_u8 (self . action as u8) ; __tmp . put_u8 (self . threat_level as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HEARTBEAT_DATA { pub custom_mode : u32 , pub mavtype : MavType , pub autopilot : MavAutopilot , pub base_mode : MavModeFlag , pub system_status : MavState , pub mavlink_version : u8 , } impl HEARTBEAT_DATA { pub const ENCODED_LEN : usize = 9usize ; pub const DEFAULT : Self = Self { custom_mode : 0_u32 , mavtype : MavType :: DEFAULT , autopilot : MavAutopilot :: DEFAULT , base_mode : MavModeFlag :: DEFAULT , system_status : MavState :: DEFAULT , mavlink_version : 0_u8 , } ; } impl Default for HEARTBEAT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for HEARTBEAT_DATA { type Message = MavMessage ; const ID : u32 = 0u32 ; const NAME : & 'static str = "HEARTBEAT" ; const EXTRA_CRC : u8 = 50u8 ; const ENCODED_LEN : usize = 9usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . custom_mode = buf . get_u32_le () ; let tmp = buf . get_u8 () ; __struct . mavtype = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavType" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . autopilot = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavAutopilot" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . base_mode = MavModeFlag :: from_bits (tmp & MavModeFlag :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "MavModeFlag" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . system_status = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavState" , value : tmp as u32 }) ? ; __struct . mavlink_version = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . custom_mode) ; __tmp . put_u8 (self . mavtype as u8) ; __tmp . put_u8 (self . autopilot as u8) ; __tmp . put_u8 (self . base_mode . bits ()) ; __tmp . put_u8 (self . system_status as u8) ; __tmp . put_u8 (self . mavlink_version) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ESC_TELEMETRY_1_TO_4_DATA { # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub voltage : [u16 ; 4] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub current : [u16 ; 4] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub totalcurrent : [u16 ; 4] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub rpm : [u16 ; 4] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub count : [u16 ; 4] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub temperature : [u8 ; 4] , } impl ESC_TELEMETRY_1_TO_4_DATA { pub const ENCODED_LEN : usize = 44usize ; pub const DEFAULT : Self = Self { voltage : [0_u16 ; 4usize] , current : [0_u16 ; 4usize] , totalcurrent : [0_u16 ; 4usize] , rpm : [0_u16 ; 4usize] , count : [0_u16 ; 4usize] , temperature : [0_u8 ; 4usize] , } ; } impl Default for ESC_TELEMETRY_1_TO_4_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ESC_TELEMETRY_1_TO_4_DATA { type Message = MavMessage ; const ID : u32 = 11030u32 ; const NAME : & 'static str = "ESC_TELEMETRY_1_TO_4" ; const EXTRA_CRC : u8 = 144u8 ; const ENCODED_LEN : usize = 44usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; for v in & mut __struct . voltage { let val = buf . get_u16_le () ; * v = val ; } for v in & mut __struct . current { let val = buf . get_u16_le () ; * v = val ; } for v in & mut __struct . totalcurrent { let val = buf . get_u16_le () ; * v = val ; } for v in & mut __struct . rpm { let val = buf . get_u16_le () ; * v = val ; } for v in & mut __struct . count { let val = buf . get_u16_le () ; * v = val ; } for v in & mut __struct . temperature { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; for val in & self . voltage { __tmp . put_u16_le (* val) ; } for val in & self . current { __tmp . put_u16_le (* val) ; } for val in & self . totalcurrent { __tmp . put_u16_le (* val) ; } for val in & self . rpm { __tmp . put_u16_le (* val) ; } for val in & self . count { __tmp . put_u16_le (* val) ; } for val in & self . temperature { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct RESPONSE_EVENT_ERROR_DATA { pub sequence : u16 , pub sequence_oldest_available : u16 , pub target_system : u8 , pub target_component : u8 , pub reason : MavEventErrorReason , } impl RESPONSE_EVENT_ERROR_DATA { pub const ENCODED_LEN : usize = 7usize ; pub const DEFAULT : Self = Self { sequence : 0_u16 , sequence_oldest_available : 0_u16 , target_system : 0_u8 , target_component : 0_u8 , reason : MavEventErrorReason :: DEFAULT , } ; } impl Default for RESPONSE_EVENT_ERROR_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for RESPONSE_EVENT_ERROR_DATA { type Message = MavMessage ; const ID : u32 = 413u32 ; const NAME : & 'static str = "RESPONSE_EVENT_ERROR" ; const EXTRA_CRC : u8 = 77u8 ; const ENCODED_LEN : usize = 7usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . sequence = buf . get_u16_le () ; __struct . sequence_oldest_available = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . reason = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavEventErrorReason" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . sequence) ; __tmp . put_u16_le (self . sequence_oldest_available) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . reason as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SAFETY_SET_ALLOWED_AREA_DATA { pub p1x : f32 , pub p1y : f32 , pub p1z : f32 , pub p2x : f32 , pub p2y : f32 , pub p2z : f32 , pub target_system : u8 , pub target_component : u8 , pub frame : MavFrame , } impl SAFETY_SET_ALLOWED_AREA_DATA { pub const ENCODED_LEN : usize = 27usize ; pub const DEFAULT : Self = Self { p1x : 0.0_f32 , p1y : 0.0_f32 , p1z : 0.0_f32 , p2x : 0.0_f32 , p2y : 0.0_f32 , p2z : 0.0_f32 , target_system : 0_u8 , target_component : 0_u8 , frame : MavFrame :: DEFAULT , } ; } impl Default for SAFETY_SET_ALLOWED_AREA_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SAFETY_SET_ALLOWED_AREA_DATA { type Message = MavMessage ; const ID : u32 = 54u32 ; const NAME : & 'static str = "SAFETY_SET_ALLOWED_AREA" ; const EXTRA_CRC : u8 = 15u8 ; const ENCODED_LEN : usize = 27usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . p1x = buf . get_f32_le () ; __struct . p1y = buf . get_f32_le () ; __struct . p1z = buf . get_f32_le () ; __struct . p2x = buf . get_f32_le () ; __struct . p2y = buf . get_f32_le () ; __struct . p2z = buf . get_f32_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . frame = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavFrame" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . p1x) ; __tmp . put_f32_le (self . p1y) ; __tmp . put_f32_le (self . p1z) ; __tmp . put_f32_le (self . p2x) ; __tmp . put_f32_le (self . p2y) ; __tmp . put_f32_le (self . p2z) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . frame as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LOG_DATA_DATA { pub ofs : u32 , pub id : u16 , pub count : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub data : [u8 ; 90] , } impl LOG_DATA_DATA { pub const ENCODED_LEN : usize = 97usize ; pub const DEFAULT : Self = Self { ofs : 0_u32 , id : 0_u16 , count : 0_u8 , data : [0_u8 ; 90usize] , } ; } impl Default for LOG_DATA_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for LOG_DATA_DATA { type Message = MavMessage ; const ID : u32 = 120u32 ; const NAME : & 'static str = "LOG_DATA" ; const EXTRA_CRC : u8 = 134u8 ; const ENCODED_LEN : usize = 97usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . ofs = buf . get_u32_le () ; __struct . id = buf . get_u16_le () ; __struct . count = buf . get_u8 () ; for v in & mut __struct . data { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . ofs) ; __tmp . put_u16_le (self . id) ; __tmp . put_u8 (self . count) ; for val in & self . data { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LOCAL_POSITION_NED_DATA { pub time_boot_ms : u32 , pub x : f32 , pub y : f32 , pub z : f32 , pub vx : f32 , pub vy : f32 , pub vz : f32 , } impl LOCAL_POSITION_NED_DATA { pub const ENCODED_LEN : usize = 28usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , x : 0.0_f32 , y : 0.0_f32 , z : 0.0_f32 , vx : 0.0_f32 , vy : 0.0_f32 , vz : 0.0_f32 , } ; } impl Default for LOCAL_POSITION_NED_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for LOCAL_POSITION_NED_DATA { type Message = MavMessage ; const ID : u32 = 32u32 ; const NAME : & 'static str = "LOCAL_POSITION_NED" ; const EXTRA_CRC : u8 = 185u8 ; const ENCODED_LEN : usize = 28usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . x = buf . get_f32_le () ; __struct . y = buf . get_f32_le () ; __struct . z = buf . get_f32_le () ; __struct . vx = buf . get_f32_le () ; __struct . vy = buf . get_f32_le () ; __struct . vz = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; __tmp . put_f32_le (self . vx) ; __tmp . put_f32_le (self . vy) ; __tmp . put_f32_le (self . vz) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ALTITUDE_DATA { pub time_usec : u64 , pub altitude_monotonic : f32 , pub altitude_amsl : f32 , pub altitude_local : f32 , pub altitude_relative : f32 , pub altitude_terrain : f32 , pub bottom_clearance : f32 , } impl ALTITUDE_DATA { pub const ENCODED_LEN : usize = 32usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , altitude_monotonic : 0.0_f32 , altitude_amsl : 0.0_f32 , altitude_local : 0.0_f32 , altitude_relative : 0.0_f32 , altitude_terrain : 0.0_f32 , bottom_clearance : 0.0_f32 , } ; } impl Default for ALTITUDE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ALTITUDE_DATA { type Message = MavMessage ; const ID : u32 = 141u32 ; const NAME : & 'static str = "ALTITUDE" ; const EXTRA_CRC : u8 = 47u8 ; const ENCODED_LEN : usize = 32usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . altitude_monotonic = buf . get_f32_le () ; __struct . altitude_amsl = buf . get_f32_le () ; __struct . altitude_local = buf . get_f32_le () ; __struct . altitude_relative = buf . get_f32_le () ; __struct . altitude_terrain = buf . get_f32_le () ; __struct . bottom_clearance = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . altitude_monotonic) ; __tmp . put_f32_le (self . altitude_amsl) ; __tmp . put_f32_le (self . altitude_local) ; __tmp . put_f32_le (self . altitude_relative) ; __tmp . put_f32_le (self . altitude_terrain) ; __tmp . put_f32_le (self . bottom_clearance) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GIMBAL_MANAGER_SET_ATTITUDE_DATA { pub flags : GimbalManagerFlags , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub q : [f32 ; 4] , pub angular_velocity_x : f32 , pub angular_velocity_y : f32 , pub angular_velocity_z : f32 , pub target_system : u8 , pub target_component : u8 , pub gimbal_device_id : u8 , } impl GIMBAL_MANAGER_SET_ATTITUDE_DATA { pub const ENCODED_LEN : usize = 35usize ; pub const DEFAULT : Self = Self { flags : GimbalManagerFlags :: DEFAULT , q : [0.0_f32 ; 4usize] , angular_velocity_x : 0.0_f32 , angular_velocity_y : 0.0_f32 , angular_velocity_z : 0.0_f32 , target_system : 0_u8 , target_component : 0_u8 , gimbal_device_id : 0_u8 , } ; } impl Default for GIMBAL_MANAGER_SET_ATTITUDE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GIMBAL_MANAGER_SET_ATTITUDE_DATA { type Message = MavMessage ; const ID : u32 = 282u32 ; const NAME : & 'static str = "GIMBAL_MANAGER_SET_ATTITUDE" ; const EXTRA_CRC : u8 = 123u8 ; const ENCODED_LEN : usize = 35usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u32_le () ; __struct . flags = FromPrimitive :: from_u32 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "GimbalManagerFlags" , value : tmp as u32 }) ? ; for v in & mut __struct . q { let val = buf . get_f32_le () ; * v = val ; } __struct . angular_velocity_x = buf . get_f32_le () ; __struct . angular_velocity_y = buf . get_f32_le () ; __struct . angular_velocity_z = buf . get_f32_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . gimbal_device_id = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . flags as u32) ; for val in & self . q { __tmp . put_f32_le (* val) ; } __tmp . put_f32_le (self . angular_velocity_x) ; __tmp . put_f32_le (self . angular_velocity_y) ; __tmp . put_f32_le (self . angular_velocity_z) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . gimbal_device_id) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GPS2_RAW_DATA { pub time_usec : u64 , pub lat : i32 , pub lon : i32 , pub alt : i32 , pub dgps_age : u32 , pub eph : u16 , pub epv : u16 , pub vel : u16 , pub cog : u16 , pub fix_type : GpsFixType , pub satellites_visible : u8 , pub dgps_numch : u8 , } impl GPS2_RAW_DATA { pub const ENCODED_LEN : usize = 35usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , lat : 0_i32 , lon : 0_i32 , alt : 0_i32 , dgps_age : 0_u32 , eph : 0_u16 , epv : 0_u16 , vel : 0_u16 , cog : 0_u16 , fix_type : GpsFixType :: DEFAULT , satellites_visible : 0_u8 , dgps_numch : 0_u8 , } ; } impl Default for GPS2_RAW_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GPS2_RAW_DATA { type Message = MavMessage ; const ID : u32 = 124u32 ; const NAME : & 'static str = "GPS2_RAW" ; const EXTRA_CRC : u8 = 87u8 ; const ENCODED_LEN : usize = 35usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . alt = buf . get_i32_le () ; __struct . dgps_age = buf . get_u32_le () ; __struct . eph = buf . get_u16_le () ; __struct . epv = buf . get_u16_le () ; __struct . vel = buf . get_u16_le () ; __struct . cog = buf . get_u16_le () ; let tmp = buf . get_u8 () ; __struct . fix_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "GpsFixType" , value : tmp as u32 }) ? ; __struct . satellites_visible = buf . get_u8 () ; __struct . dgps_numch = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_i32_le (self . alt) ; __tmp . put_u32_le (self . dgps_age) ; __tmp . put_u16_le (self . eph) ; __tmp . put_u16_le (self . epv) ; __tmp . put_u16_le (self . vel) ; __tmp . put_u16_le (self . cog) ; __tmp . put_u8 (self . fix_type as u8) ; __tmp . put_u8 (self . satellites_visible) ; __tmp . put_u8 (self . dgps_numch) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SET_POSITION_TARGET_LOCAL_NED_DATA { pub time_boot_ms : u32 , pub x : f32 , pub y : f32 , pub z : f32 , pub vx : f32 , pub vy : f32 , pub vz : f32 , pub afx : f32 , pub afy : f32 , pub afz : f32 , pub yaw : f32 , pub yaw_rate : f32 , pub type_mask : PositionTargetTypemask , pub target_system : u8 , pub target_component : u8 , pub coordinate_frame : MavFrame , } impl SET_POSITION_TARGET_LOCAL_NED_DATA { pub const ENCODED_LEN : usize = 53usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , x : 0.0_f32 , y : 0.0_f32 , z : 0.0_f32 , vx : 0.0_f32 , vy : 0.0_f32 , vz : 0.0_f32 , afx : 0.0_f32 , afy : 0.0_f32 , afz : 0.0_f32 , yaw : 0.0_f32 , yaw_rate : 0.0_f32 , type_mask : PositionTargetTypemask :: DEFAULT , target_system : 0_u8 , target_component : 0_u8 , coordinate_frame : MavFrame :: DEFAULT , } ; } impl Default for SET_POSITION_TARGET_LOCAL_NED_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SET_POSITION_TARGET_LOCAL_NED_DATA { type Message = MavMessage ; const ID : u32 = 84u32 ; const NAME : & 'static str = "SET_POSITION_TARGET_LOCAL_NED" ; const EXTRA_CRC : u8 = 143u8 ; const ENCODED_LEN : usize = 53usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . x = buf . get_f32_le () ; __struct . y = buf . get_f32_le () ; __struct . z = buf . get_f32_le () ; __struct . vx = buf . get_f32_le () ; __struct . vy = buf . get_f32_le () ; __struct . vz = buf . get_f32_le () ; __struct . afx = buf . get_f32_le () ; __struct . afy = buf . get_f32_le () ; __struct . afz = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; __struct . yaw_rate = buf . get_f32_le () ; let tmp = buf . get_u16_le () ; __struct . type_mask = PositionTargetTypemask :: from_bits (tmp & PositionTargetTypemask :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "PositionTargetTypemask" , value : tmp as u32 }) ? ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . coordinate_frame = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavFrame" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; __tmp . put_f32_le (self . vx) ; __tmp . put_f32_le (self . vy) ; __tmp . put_f32_le (self . vz) ; __tmp . put_f32_le (self . afx) ; __tmp . put_f32_le (self . afy) ; __tmp . put_f32_le (self . afz) ; __tmp . put_f32_le (self . yaw) ; __tmp . put_f32_le (self . yaw_rate) ; __tmp . put_u16_le (self . type_mask . bits ()) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . coordinate_frame as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SET_GPS_GLOBAL_ORIGIN_DATA { pub latitude : i32 , pub longitude : i32 , pub altitude : i32 , pub target_system : u8 , } impl SET_GPS_GLOBAL_ORIGIN_DATA { pub const ENCODED_LEN : usize = 13usize ; pub const DEFAULT : Self = Self { latitude : 0_i32 , longitude : 0_i32 , altitude : 0_i32 , target_system : 0_u8 , } ; } impl Default for SET_GPS_GLOBAL_ORIGIN_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SET_GPS_GLOBAL_ORIGIN_DATA { type Message = MavMessage ; const ID : u32 = 48u32 ; const NAME : & 'static str = "SET_GPS_GLOBAL_ORIGIN" ; const EXTRA_CRC : u8 = 41u8 ; const ENCODED_LEN : usize = 13usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . latitude = buf . get_i32_le () ; __struct . longitude = buf . get_i32_le () ; __struct . altitude = buf . get_i32_le () ; __struct . target_system = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . latitude) ; __tmp . put_i32_le (self . longitude) ; __tmp . put_i32_le (self . altitude) ; __tmp . put_u8 (self . target_system) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PARAM_VALUE_DATA { pub param_value : f32 , pub param_count : u16 , pub param_index : u16 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub param_id : [u8 ; 16] , pub param_type : MavParamType , } impl PARAM_VALUE_DATA { pub const ENCODED_LEN : usize = 25usize ; pub const DEFAULT : Self = Self { param_value : 0.0_f32 , param_count : 0_u16 , param_index : 0_u16 , param_id : [0_u8 ; 16usize] , param_type : MavParamType :: DEFAULT , } ; } impl Default for PARAM_VALUE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for PARAM_VALUE_DATA { type Message = MavMessage ; const ID : u32 = 22u32 ; const NAME : & 'static str = "PARAM_VALUE" ; const EXTRA_CRC : u8 = 220u8 ; const ENCODED_LEN : usize = 25usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . param_value = buf . get_f32_le () ; __struct . param_count = buf . get_u16_le () ; __struct . param_index = buf . get_u16_le () ; for v in & mut __struct . param_id { let val = buf . get_u8 () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . param_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavParamType" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . param_value) ; __tmp . put_u16_le (self . param_count) ; __tmp . put_u16_le (self . param_index) ; for val in & self . param_id { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . param_type as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct OPTICAL_FLOW_DATA { pub time_usec : u64 , pub flow_comp_m_x : f32 , pub flow_comp_m_y : f32 , pub ground_distance : f32 , pub flow_x : i16 , pub flow_y : i16 , pub sensor_id : u8 , pub quality : u8 , } impl OPTICAL_FLOW_DATA { pub const ENCODED_LEN : usize = 26usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , flow_comp_m_x : 0.0_f32 , flow_comp_m_y : 0.0_f32 , ground_distance : 0.0_f32 , flow_x : 0_i16 , flow_y : 0_i16 , sensor_id : 0_u8 , quality : 0_u8 , } ; } impl Default for OPTICAL_FLOW_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for OPTICAL_FLOW_DATA { type Message = MavMessage ; const ID : u32 = 100u32 ; const NAME : & 'static str = "OPTICAL_FLOW" ; const EXTRA_CRC : u8 = 175u8 ; const ENCODED_LEN : usize = 26usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . flow_comp_m_x = buf . get_f32_le () ; __struct . flow_comp_m_y = buf . get_f32_le () ; __struct . ground_distance = buf . get_f32_le () ; __struct . flow_x = buf . get_i16_le () ; __struct . flow_y = buf . get_i16_le () ; __struct . sensor_id = buf . get_u8 () ; __struct . quality = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . flow_comp_m_x) ; __tmp . put_f32_le (self . flow_comp_m_y) ; __tmp . put_f32_le (self . ground_distance) ; __tmp . put_i16_le (self . flow_x) ; __tmp . put_i16_le (self . flow_y) ; __tmp . put_u8 (self . sensor_id) ; __tmp . put_u8 (self . quality) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct RC_CHANNELS_DATA { pub time_boot_ms : u32 , pub chan1_raw : u16 , pub chan2_raw : u16 , pub chan3_raw : u16 , pub chan4_raw : u16 , pub chan5_raw : u16 , pub chan6_raw : u16 , pub chan7_raw : u16 , pub chan8_raw : u16 , pub chan9_raw : u16 , pub chan10_raw : u16 , pub chan11_raw : u16 , pub chan12_raw : u16 , pub chan13_raw : u16 , pub chan14_raw : u16 , pub chan15_raw : u16 , pub chan16_raw : u16 , pub chan17_raw : u16 , pub chan18_raw : u16 , pub chancount : u8 , pub rssi : u8 , } impl RC_CHANNELS_DATA { pub const ENCODED_LEN : usize = 42usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , chan1_raw : 0_u16 , chan2_raw : 0_u16 , chan3_raw : 0_u16 , chan4_raw : 0_u16 , chan5_raw : 0_u16 , chan6_raw : 0_u16 , chan7_raw : 0_u16 , chan8_raw : 0_u16 , chan9_raw : 0_u16 , chan10_raw : 0_u16 , chan11_raw : 0_u16 , chan12_raw : 0_u16 , chan13_raw : 0_u16 , chan14_raw : 0_u16 , chan15_raw : 0_u16 , chan16_raw : 0_u16 , chan17_raw : 0_u16 , chan18_raw : 0_u16 , chancount : 0_u8 , rssi : 0_u8 , } ; } impl Default for RC_CHANNELS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for RC_CHANNELS_DATA { type Message = MavMessage ; const ID : u32 = 65u32 ; const NAME : & 'static str = "RC_CHANNELS" ; const EXTRA_CRC : u8 = 118u8 ; const ENCODED_LEN : usize = 42usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . chan1_raw = buf . get_u16_le () ; __struct . chan2_raw = buf . get_u16_le () ; __struct . chan3_raw = buf . get_u16_le () ; __struct . chan4_raw = buf . get_u16_le () ; __struct . chan5_raw = buf . get_u16_le () ; __struct . chan6_raw = buf . get_u16_le () ; __struct . chan7_raw = buf . get_u16_le () ; __struct . chan8_raw = buf . get_u16_le () ; __struct . chan9_raw = buf . get_u16_le () ; __struct . chan10_raw = buf . get_u16_le () ; __struct . chan11_raw = buf . get_u16_le () ; __struct . chan12_raw = buf . get_u16_le () ; __struct . chan13_raw = buf . get_u16_le () ; __struct . chan14_raw = buf . get_u16_le () ; __struct . chan15_raw = buf . get_u16_le () ; __struct . chan16_raw = buf . get_u16_le () ; __struct . chan17_raw = buf . get_u16_le () ; __struct . chan18_raw = buf . get_u16_le () ; __struct . chancount = buf . get_u8 () ; __struct . rssi = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_u16_le (self . chan1_raw) ; __tmp . put_u16_le (self . chan2_raw) ; __tmp . put_u16_le (self . chan3_raw) ; __tmp . put_u16_le (self . chan4_raw) ; __tmp . put_u16_le (self . chan5_raw) ; __tmp . put_u16_le (self . chan6_raw) ; __tmp . put_u16_le (self . chan7_raw) ; __tmp . put_u16_le (self . chan8_raw) ; __tmp . put_u16_le (self . chan9_raw) ; __tmp . put_u16_le (self . chan10_raw) ; __tmp . put_u16_le (self . chan11_raw) ; __tmp . put_u16_le (self . chan12_raw) ; __tmp . put_u16_le (self . chan13_raw) ; __tmp . put_u16_le (self . chan14_raw) ; __tmp . put_u16_le (self . chan15_raw) ; __tmp . put_u16_le (self . chan16_raw) ; __tmp . put_u16_le (self . chan17_raw) ; __tmp . put_u16_le (self . chan18_raw) ; __tmp . put_u8 (self . chancount) ; __tmp . put_u8 (self . rssi) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PARAM_EXT_REQUEST_LIST_DATA { pub target_system : u8 , pub target_component : u8 , } impl PARAM_EXT_REQUEST_LIST_DATA { pub const ENCODED_LEN : usize = 2usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for PARAM_EXT_REQUEST_LIST_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for PARAM_EXT_REQUEST_LIST_DATA { type Message = MavMessage ; const ID : u32 = 321u32 ; const NAME : & 'static str = "PARAM_EXT_REQUEST_LIST" ; const EXTRA_CRC : u8 = 88u8 ; const ENCODED_LEN : usize = 2usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct OPEN_DRONE_ID_BASIC_ID_DATA { pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub id_or_mac : [u8 ; 20] , pub id_type : MavOdidIdType , pub ua_type : MavOdidUaType , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub uas_id : [u8 ; 20] , } impl OPEN_DRONE_ID_BASIC_ID_DATA { pub const ENCODED_LEN : usize = 44usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , id_or_mac : [0_u8 ; 20usize] , id_type : MavOdidIdType :: DEFAULT , ua_type : MavOdidUaType :: DEFAULT , uas_id : [0_u8 ; 20usize] , } ; } impl Default for OPEN_DRONE_ID_BASIC_ID_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for OPEN_DRONE_ID_BASIC_ID_DATA { type Message = MavMessage ; const ID : u32 = 12900u32 ; const NAME : & 'static str = "OPEN_DRONE_ID_BASIC_ID" ; const EXTRA_CRC : u8 = 114u8 ; const ENCODED_LEN : usize = 44usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . id_or_mac { let val = buf . get_u8 () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . id_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidIdType" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . ua_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidUaType" , value : tmp as u32 }) ? ; for v in & mut __struct . uas_id { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . id_or_mac { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . id_type as u8) ; __tmp . put_u8 (self . ua_type as u8) ; for val in & self . uas_id { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LOCAL_POSITION_NED_COV_DATA { pub time_usec : u64 , pub x : f32 , pub y : f32 , pub z : f32 , pub vx : f32 , pub vy : f32 , pub vz : f32 , pub ax : f32 , pub ay : f32 , pub az : f32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub covariance : [f32 ; 45] , pub estimator_type : MavEstimatorType , } impl LOCAL_POSITION_NED_COV_DATA { pub const ENCODED_LEN : usize = 225usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , x : 0.0_f32 , y : 0.0_f32 , z : 0.0_f32 , vx : 0.0_f32 , vy : 0.0_f32 , vz : 0.0_f32 , ax : 0.0_f32 , ay : 0.0_f32 , az : 0.0_f32 , covariance : [0.0_f32 ; 45usize] , estimator_type : MavEstimatorType :: DEFAULT , } ; } impl Default for LOCAL_POSITION_NED_COV_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for LOCAL_POSITION_NED_COV_DATA { type Message = MavMessage ; const ID : u32 = 64u32 ; const NAME : & 'static str = "LOCAL_POSITION_NED_COV" ; const EXTRA_CRC : u8 = 191u8 ; const ENCODED_LEN : usize = 225usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . x = buf . get_f32_le () ; __struct . y = buf . get_f32_le () ; __struct . z = buf . get_f32_le () ; __struct . vx = buf . get_f32_le () ; __struct . vy = buf . get_f32_le () ; __struct . vz = buf . get_f32_le () ; __struct . ax = buf . get_f32_le () ; __struct . ay = buf . get_f32_le () ; __struct . az = buf . get_f32_le () ; for v in & mut __struct . covariance { let val = buf . get_f32_le () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . estimator_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavEstimatorType" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; __tmp . put_f32_le (self . vx) ; __tmp . put_f32_le (self . vy) ; __tmp . put_f32_le (self . vz) ; __tmp . put_f32_le (self . ax) ; __tmp . put_f32_le (self . ay) ; __tmp . put_f32_le (self . az) ; for val in & self . covariance { __tmp . put_f32_le (* val) ; } __tmp . put_u8 (self . estimator_type as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct TERRAIN_REQUEST_DATA { pub mask : u64 , pub lat : i32 , pub lon : i32 , pub grid_spacing : u16 , } impl TERRAIN_REQUEST_DATA { pub const ENCODED_LEN : usize = 18usize ; pub const DEFAULT : Self = Self { mask : 0_u64 , lat : 0_i32 , lon : 0_i32 , grid_spacing : 0_u16 , } ; } impl Default for TERRAIN_REQUEST_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for TERRAIN_REQUEST_DATA { type Message = MavMessage ; const ID : u32 = 133u32 ; const NAME : & 'static str = "TERRAIN_REQUEST" ; const EXTRA_CRC : u8 = 6u8 ; const ENCODED_LEN : usize = 18usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . mask = buf . get_u64_le () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . grid_spacing = buf . get_u16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . mask) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_u16_le (self . grid_spacing) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct DATA_TRANSMISSION_HANDSHAKE_DATA { pub size : u32 , pub width : u16 , pub height : u16 , pub packets : u16 , pub mavtype : MavlinkDataStreamType , pub payload : u8 , pub jpg_quality : u8 , } impl DATA_TRANSMISSION_HANDSHAKE_DATA { pub const ENCODED_LEN : usize = 13usize ; pub const DEFAULT : Self = Self { size : 0_u32 , width : 0_u16 , height : 0_u16 , packets : 0_u16 , mavtype : MavlinkDataStreamType :: DEFAULT , payload : 0_u8 , jpg_quality : 0_u8 , } ; } impl Default for DATA_TRANSMISSION_HANDSHAKE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for DATA_TRANSMISSION_HANDSHAKE_DATA { type Message = MavMessage ; const ID : u32 = 130u32 ; const NAME : & 'static str = "DATA_TRANSMISSION_HANDSHAKE" ; const EXTRA_CRC : u8 = 29u8 ; const ENCODED_LEN : usize = 13usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . size = buf . get_u32_le () ; __struct . width = buf . get_u16_le () ; __struct . height = buf . get_u16_le () ; __struct . packets = buf . get_u16_le () ; let tmp = buf . get_u8 () ; __struct . mavtype = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavlinkDataStreamType" , value : tmp as u32 }) ? ; __struct . payload = buf . get_u8 () ; __struct . jpg_quality = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . size) ; __tmp . put_u16_le (self . width) ; __tmp . put_u16_le (self . height) ; __tmp . put_u16_le (self . packets) ; __tmp . put_u8 (self . mavtype as u8) ; __tmp . put_u8 (self . payload) ; __tmp . put_u8 (self . jpg_quality) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct AHRS_DATA { pub omegaIx : f32 , pub omegaIy : f32 , pub omegaIz : f32 , pub accel_weight : f32 , pub renorm_val : f32 , pub error_rp : f32 , pub error_yaw : f32 , } impl AHRS_DATA { pub const ENCODED_LEN : usize = 28usize ; pub const DEFAULT : Self = Self { omegaIx : 0.0_f32 , omegaIy : 0.0_f32 , omegaIz : 0.0_f32 , accel_weight : 0.0_f32 , renorm_val : 0.0_f32 , error_rp : 0.0_f32 , error_yaw : 0.0_f32 , } ; } impl Default for AHRS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for AHRS_DATA { type Message = MavMessage ; const ID : u32 = 163u32 ; const NAME : & 'static str = "AHRS" ; const EXTRA_CRC : u8 = 127u8 ; const ENCODED_LEN : usize = 28usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . omegaIx = buf . get_f32_le () ; __struct . omegaIy = buf . get_f32_le () ; __struct . omegaIz = buf . get_f32_le () ; __struct . accel_weight = buf . get_f32_le () ; __struct . renorm_val = buf . get_f32_le () ; __struct . error_rp = buf . get_f32_le () ; __struct . error_yaw = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . omegaIx) ; __tmp . put_f32_le (self . omegaIy) ; __tmp . put_f32_le (self . omegaIz) ; __tmp . put_f32_le (self . accel_weight) ; __tmp . put_f32_le (self . renorm_val) ; __tmp . put_f32_le (self . error_rp) ; __tmp . put_f32_le (self . error_yaw) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct OPEN_DRONE_ID_SYSTEM_DATA { pub operator_latitude : i32 , pub operator_longitude : i32 , pub area_ceiling : f32 , pub area_floor : f32 , pub operator_altitude_geo : f32 , pub timestamp : u32 , pub area_count : u16 , pub area_radius : u16 , pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub id_or_mac : [u8 ; 20] , pub operator_location_type : MavOdidOperatorLocationType , pub classification_type : MavOdidClassificationType , pub category_eu : MavOdidCategoryEu , pub class_eu : MavOdidClassEu , } impl OPEN_DRONE_ID_SYSTEM_DATA { pub const ENCODED_LEN : usize = 54usize ; pub const DEFAULT : Self = Self { operator_latitude : 0_i32 , operator_longitude : 0_i32 , area_ceiling : 0.0_f32 , area_floor : 0.0_f32 , operator_altitude_geo : 0.0_f32 , timestamp : 0_u32 , area_count : 0_u16 , area_radius : 0_u16 , target_system : 0_u8 , target_component : 0_u8 , id_or_mac : [0_u8 ; 20usize] , operator_location_type : MavOdidOperatorLocationType :: DEFAULT , classification_type : MavOdidClassificationType :: DEFAULT , category_eu : MavOdidCategoryEu :: DEFAULT , class_eu : MavOdidClassEu :: DEFAULT , } ; } impl Default for OPEN_DRONE_ID_SYSTEM_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for OPEN_DRONE_ID_SYSTEM_DATA { type Message = MavMessage ; const ID : u32 = 12904u32 ; const NAME : & 'static str = "OPEN_DRONE_ID_SYSTEM" ; const EXTRA_CRC : u8 = 77u8 ; const ENCODED_LEN : usize = 54usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . operator_latitude = buf . get_i32_le () ; __struct . operator_longitude = buf . get_i32_le () ; __struct . area_ceiling = buf . get_f32_le () ; __struct . area_floor = buf . get_f32_le () ; __struct . operator_altitude_geo = buf . get_f32_le () ; __struct . timestamp = buf . get_u32_le () ; __struct . area_count = buf . get_u16_le () ; __struct . area_radius = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . id_or_mac { let val = buf . get_u8 () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . operator_location_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidOperatorLocationType" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . classification_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidClassificationType" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . category_eu = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidCategoryEu" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . class_eu = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidClassEu" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . operator_latitude) ; __tmp . put_i32_le (self . operator_longitude) ; __tmp . put_f32_le (self . area_ceiling) ; __tmp . put_f32_le (self . area_floor) ; __tmp . put_f32_le (self . operator_altitude_geo) ; __tmp . put_u32_le (self . timestamp) ; __tmp . put_u16_le (self . area_count) ; __tmp . put_u16_le (self . area_radius) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . id_or_mac { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . operator_location_type as u8) ; __tmp . put_u8 (self . classification_type as u8) ; __tmp . put_u8 (self . category_eu as u8) ; __tmp . put_u8 (self . class_eu as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA { pub time_boot_ms : u32 , pub x : f32 , pub y : f32 , pub z : f32 , pub roll : f32 , pub pitch : f32 , pub yaw : f32 , } impl LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA { pub const ENCODED_LEN : usize = 28usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , x : 0.0_f32 , y : 0.0_f32 , z : 0.0_f32 , roll : 0.0_f32 , pitch : 0.0_f32 , yaw : 0.0_f32 , } ; } impl Default for LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA { type Message = MavMessage ; const ID : u32 = 89u32 ; const NAME : & 'static str = "LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET" ; const EXTRA_CRC : u8 = 231u8 ; const ENCODED_LEN : usize = 28usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . x = buf . get_f32_le () ; __struct . y = buf . get_f32_le () ; __struct . z = buf . get_f32_le () ; __struct . roll = buf . get_f32_le () ; __struct . pitch = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; __tmp . put_f32_le (self . roll) ; __tmp . put_f32_le (self . pitch) ; __tmp . put_f32_le (self . yaw) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MISSION_REQUEST_LIST_DATA { pub target_system : u8 , pub target_component : u8 , } impl MISSION_REQUEST_LIST_DATA { pub const ENCODED_LEN : usize = 2usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for MISSION_REQUEST_LIST_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MISSION_REQUEST_LIST_DATA { type Message = MavMessage ; const ID : u32 = 43u32 ; const NAME : & 'static str = "MISSION_REQUEST_LIST" ; const EXTRA_CRC : u8 = 132u8 ; const ENCODED_LEN : usize = 2usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CAMERA_TRACKING_IMAGE_STATUS_DATA { pub point_x : f32 , pub point_y : f32 , pub radius : f32 , pub rec_top_x : f32 , pub rec_top_y : f32 , pub rec_bottom_x : f32 , pub rec_bottom_y : f32 , pub tracking_status : CameraTrackingStatusFlags , pub tracking_mode : CameraTrackingMode , pub target_data : CameraTrackingTargetData , } impl CAMERA_TRACKING_IMAGE_STATUS_DATA { pub const ENCODED_LEN : usize = 31usize ; pub const DEFAULT : Self = Self { point_x : 0.0_f32 , point_y : 0.0_f32 , radius : 0.0_f32 , rec_top_x : 0.0_f32 , rec_top_y : 0.0_f32 , rec_bottom_x : 0.0_f32 , rec_bottom_y : 0.0_f32 , tracking_status : CameraTrackingStatusFlags :: DEFAULT , tracking_mode : CameraTrackingMode :: DEFAULT , target_data : CameraTrackingTargetData :: DEFAULT , } ; } impl Default for CAMERA_TRACKING_IMAGE_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CAMERA_TRACKING_IMAGE_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 275u32 ; const NAME : & 'static str = "CAMERA_TRACKING_IMAGE_STATUS" ; const EXTRA_CRC : u8 = 126u8 ; const ENCODED_LEN : usize = 31usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . point_x = buf . get_f32_le () ; __struct . point_y = buf . get_f32_le () ; __struct . radius = buf . get_f32_le () ; __struct . rec_top_x = buf . get_f32_le () ; __struct . rec_top_y = buf . get_f32_le () ; __struct . rec_bottom_x = buf . get_f32_le () ; __struct . rec_bottom_y = buf . get_f32_le () ; let tmp = buf . get_u8 () ; __struct . tracking_status = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "CameraTrackingStatusFlags" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . tracking_mode = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "CameraTrackingMode" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . target_data = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "CameraTrackingTargetData" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . point_x) ; __tmp . put_f32_le (self . point_y) ; __tmp . put_f32_le (self . radius) ; __tmp . put_f32_le (self . rec_top_x) ; __tmp . put_f32_le (self . rec_top_y) ; __tmp . put_f32_le (self . rec_bottom_x) ; __tmp . put_f32_le (self . rec_bottom_y) ; __tmp . put_u8 (self . tracking_status as u8) ; __tmp . put_u8 (self . tracking_mode as u8) ; __tmp . put_u8 (self . target_data as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct POSITION_TARGET_LOCAL_NED_DATA { pub time_boot_ms : u32 , pub x : f32 , pub y : f32 , pub z : f32 , pub vx : f32 , pub vy : f32 , pub vz : f32 , pub afx : f32 , pub afy : f32 , pub afz : f32 , pub yaw : f32 , pub yaw_rate : f32 , pub type_mask : PositionTargetTypemask , pub coordinate_frame : MavFrame , } impl POSITION_TARGET_LOCAL_NED_DATA { pub const ENCODED_LEN : usize = 51usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , x : 0.0_f32 , y : 0.0_f32 , z : 0.0_f32 , vx : 0.0_f32 , vy : 0.0_f32 , vz : 0.0_f32 , afx : 0.0_f32 , afy : 0.0_f32 , afz : 0.0_f32 , yaw : 0.0_f32 , yaw_rate : 0.0_f32 , type_mask : PositionTargetTypemask :: DEFAULT , coordinate_frame : MavFrame :: DEFAULT , } ; } impl Default for POSITION_TARGET_LOCAL_NED_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for POSITION_TARGET_LOCAL_NED_DATA { type Message = MavMessage ; const ID : u32 = 85u32 ; const NAME : & 'static str = "POSITION_TARGET_LOCAL_NED" ; const EXTRA_CRC : u8 = 140u8 ; const ENCODED_LEN : usize = 51usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . x = buf . get_f32_le () ; __struct . y = buf . get_f32_le () ; __struct . z = buf . get_f32_le () ; __struct . vx = buf . get_f32_le () ; __struct . vy = buf . get_f32_le () ; __struct . vz = buf . get_f32_le () ; __struct . afx = buf . get_f32_le () ; __struct . afy = buf . get_f32_le () ; __struct . afz = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; __struct . yaw_rate = buf . get_f32_le () ; let tmp = buf . get_u16_le () ; __struct . type_mask = PositionTargetTypemask :: from_bits (tmp & PositionTargetTypemask :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "PositionTargetTypemask" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . coordinate_frame = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavFrame" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; __tmp . put_f32_le (self . vx) ; __tmp . put_f32_le (self . vy) ; __tmp . put_f32_le (self . vz) ; __tmp . put_f32_le (self . afx) ; __tmp . put_f32_le (self . afy) ; __tmp . put_f32_le (self . afz) ; __tmp . put_f32_le (self . yaw) ; __tmp . put_f32_le (self . yaw_rate) ; __tmp . put_u16_le (self . type_mask . bits ()) ; __tmp . put_u8 (self . coordinate_frame as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PING_DATA { pub time_usec : u64 , pub seq : u32 , pub target_system : u8 , pub target_component : u8 , } impl PING_DATA { pub const ENCODED_LEN : usize = 14usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , seq : 0_u32 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for PING_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for PING_DATA { type Message = MavMessage ; const ID : u32 = 4u32 ; const NAME : & 'static str = "PING" ; const EXTRA_CRC : u8 = 237u8 ; const ENCODED_LEN : usize = 14usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . seq = buf . get_u32_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_u32_le (self . seq) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PARAM_EXT_SET_DATA { pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub param_id : [u8 ; 16] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub param_value : [u8 ; 128] , pub param_type : MavParamExtType , } impl PARAM_EXT_SET_DATA { pub const ENCODED_LEN : usize = 147usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , param_id : [0_u8 ; 16usize] , param_value : [0_u8 ; 128usize] , param_type : MavParamExtType :: DEFAULT , } ; } impl Default for PARAM_EXT_SET_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for PARAM_EXT_SET_DATA { type Message = MavMessage ; const ID : u32 = 323u32 ; const NAME : & 'static str = "PARAM_EXT_SET" ; const EXTRA_CRC : u8 = 78u8 ; const ENCODED_LEN : usize = 147usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . param_id { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . param_value { let val = buf . get_u8 () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . param_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavParamExtType" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . param_id { __tmp . put_u8 (* val) ; } for val in & self . param_value { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . param_type as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GIMBAL_DEVICE_INFORMATION_DATA { pub uid : u64 , pub time_boot_ms : u32 , pub firmware_version : u32 , pub hardware_version : u32 , pub roll_min : f32 , pub roll_max : f32 , pub pitch_min : f32 , pub pitch_max : f32 , pub yaw_min : f32 , pub yaw_max : f32 , pub cap_flags : GimbalDeviceCapFlags , pub custom_cap_flags : u16 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub vendor_name : [u8 ; 32] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub model_name : [u8 ; 32] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub custom_name : [u8 ; 32] , } impl GIMBAL_DEVICE_INFORMATION_DATA { pub const ENCODED_LEN : usize = 144usize ; pub const DEFAULT : Self = Self { uid : 0_u64 , time_boot_ms : 0_u32 , firmware_version : 0_u32 , hardware_version : 0_u32 , roll_min : 0.0_f32 , roll_max : 0.0_f32 , pitch_min : 0.0_f32 , pitch_max : 0.0_f32 , yaw_min : 0.0_f32 , yaw_max : 0.0_f32 , cap_flags : GimbalDeviceCapFlags :: DEFAULT , custom_cap_flags : 0_u16 , vendor_name : [0_u8 ; 32usize] , model_name : [0_u8 ; 32usize] , custom_name : [0_u8 ; 32usize] , } ; } impl Default for GIMBAL_DEVICE_INFORMATION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GIMBAL_DEVICE_INFORMATION_DATA { type Message = MavMessage ; const ID : u32 = 283u32 ; const NAME : & 'static str = "GIMBAL_DEVICE_INFORMATION" ; const EXTRA_CRC : u8 = 74u8 ; const ENCODED_LEN : usize = 144usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . uid = buf . get_u64_le () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . firmware_version = buf . get_u32_le () ; __struct . hardware_version = buf . get_u32_le () ; __struct . roll_min = buf . get_f32_le () ; __struct . roll_max = buf . get_f32_le () ; __struct . pitch_min = buf . get_f32_le () ; __struct . pitch_max = buf . get_f32_le () ; __struct . yaw_min = buf . get_f32_le () ; __struct . yaw_max = buf . get_f32_le () ; let tmp = buf . get_u16_le () ; __struct . cap_flags = GimbalDeviceCapFlags :: from_bits (tmp & GimbalDeviceCapFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "GimbalDeviceCapFlags" , value : tmp as u32 }) ? ; __struct . custom_cap_flags = buf . get_u16_le () ; for v in & mut __struct . vendor_name { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . model_name { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . custom_name { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . uid) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_u32_le (self . firmware_version) ; __tmp . put_u32_le (self . hardware_version) ; __tmp . put_f32_le (self . roll_min) ; __tmp . put_f32_le (self . roll_max) ; __tmp . put_f32_le (self . pitch_min) ; __tmp . put_f32_le (self . pitch_max) ; __tmp . put_f32_le (self . yaw_min) ; __tmp . put_f32_le (self . yaw_max) ; __tmp . put_u16_le (self . cap_flags . bits ()) ; __tmp . put_u16_le (self . custom_cap_flags) ; for val in & self . vendor_name { __tmp . put_u8 (* val) ; } for val in & self . model_name { __tmp . put_u8 (* val) ; } for val in & self . custom_name { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA { pub time_boot_us : u64 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub q : [f32 ; 4] , pub q_estimated_delay_us : u32 , pub vx : f32 , pub vy : f32 , pub vz : f32 , pub v_estimated_delay_us : u32 , pub feed_forward_angular_velocity_z : f32 , pub estimator_status : EstimatorStatusFlags , pub target_system : u8 , pub target_component : u8 , pub landed_state : MavLandedState , } impl AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA { pub const ENCODED_LEN : usize = 53usize ; pub const DEFAULT : Self = Self { time_boot_us : 0_u64 , q : [0.0_f32 ; 4usize] , q_estimated_delay_us : 0_u32 , vx : 0.0_f32 , vy : 0.0_f32 , vz : 0.0_f32 , v_estimated_delay_us : 0_u32 , feed_forward_angular_velocity_z : 0.0_f32 , estimator_status : EstimatorStatusFlags :: DEFAULT , target_system : 0_u8 , target_component : 0_u8 , landed_state : MavLandedState :: DEFAULT , } ; } impl Default for AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA { type Message = MavMessage ; const ID : u32 = 286u32 ; const NAME : & 'static str = "AUTOPILOT_STATE_FOR_GIMBAL_DEVICE" ; const EXTRA_CRC : u8 = 210u8 ; const ENCODED_LEN : usize = 53usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_us = buf . get_u64_le () ; for v in & mut __struct . q { let val = buf . get_f32_le () ; * v = val ; } __struct . q_estimated_delay_us = buf . get_u32_le () ; __struct . vx = buf . get_f32_le () ; __struct . vy = buf . get_f32_le () ; __struct . vz = buf . get_f32_le () ; __struct . v_estimated_delay_us = buf . get_u32_le () ; __struct . feed_forward_angular_velocity_z = buf . get_f32_le () ; let tmp = buf . get_u16_le () ; __struct . estimator_status = EstimatorStatusFlags :: from_bits (tmp & EstimatorStatusFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "EstimatorStatusFlags" , value : tmp as u32 }) ? ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . landed_state = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavLandedState" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_boot_us) ; for val in & self . q { __tmp . put_f32_le (* val) ; } __tmp . put_u32_le (self . q_estimated_delay_us) ; __tmp . put_f32_le (self . vx) ; __tmp . put_f32_le (self . vy) ; __tmp . put_f32_le (self . vz) ; __tmp . put_u32_le (self . v_estimated_delay_us) ; __tmp . put_f32_le (self . feed_forward_angular_velocity_z) ; __tmp . put_u16_le (self . estimator_status . bits ()) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . landed_state as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GIMBAL_CONTROL_DATA { pub demanded_rate_x : f32 , pub demanded_rate_y : f32 , pub demanded_rate_z : f32 , pub target_system : u8 , pub target_component : u8 , } impl GIMBAL_CONTROL_DATA { pub const ENCODED_LEN : usize = 14usize ; pub const DEFAULT : Self = Self { demanded_rate_x : 0.0_f32 , demanded_rate_y : 0.0_f32 , demanded_rate_z : 0.0_f32 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for GIMBAL_CONTROL_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GIMBAL_CONTROL_DATA { type Message = MavMessage ; const ID : u32 = 201u32 ; const NAME : & 'static str = "GIMBAL_CONTROL" ; const EXTRA_CRC : u8 = 205u8 ; const ENCODED_LEN : usize = 14usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . demanded_rate_x = buf . get_f32_le () ; __struct . demanded_rate_y = buf . get_f32_le () ; __struct . demanded_rate_z = buf . get_f32_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . demanded_rate_x) ; __tmp . put_f32_le (self . demanded_rate_y) ; __tmp . put_f32_le (self . demanded_rate_z) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct EKF_STATUS_REPORT_DATA { pub velocity_variance : f32 , pub pos_horiz_variance : f32 , pub pos_vert_variance : f32 , pub compass_variance : f32 , pub terrain_alt_variance : f32 , pub flags : EkfStatusFlags , } impl EKF_STATUS_REPORT_DATA { pub const ENCODED_LEN : usize = 22usize ; pub const DEFAULT : Self = Self { velocity_variance : 0.0_f32 , pos_horiz_variance : 0.0_f32 , pos_vert_variance : 0.0_f32 , compass_variance : 0.0_f32 , terrain_alt_variance : 0.0_f32 , flags : EkfStatusFlags :: DEFAULT , } ; } impl Default for EKF_STATUS_REPORT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for EKF_STATUS_REPORT_DATA { type Message = MavMessage ; const ID : u32 = 193u32 ; const NAME : & 'static str = "EKF_STATUS_REPORT" ; const EXTRA_CRC : u8 = 71u8 ; const ENCODED_LEN : usize = 22usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . velocity_variance = buf . get_f32_le () ; __struct . pos_horiz_variance = buf . get_f32_le () ; __struct . pos_vert_variance = buf . get_f32_le () ; __struct . compass_variance = buf . get_f32_le () ; __struct . terrain_alt_variance = buf . get_f32_le () ; let tmp = buf . get_u16_le () ; __struct . flags = EkfStatusFlags :: from_bits (tmp & EkfStatusFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "EkfStatusFlags" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . velocity_variance) ; __tmp . put_f32_le (self . pos_horiz_variance) ; __tmp . put_f32_le (self . pos_vert_variance) ; __tmp . put_f32_le (self . compass_variance) ; __tmp . put_f32_le (self . terrain_alt_variance) ; __tmp . put_u16_le (self . flags . bits ()) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct OSD_PARAM_SHOW_CONFIG_REPLY_DATA { pub request_id : u32 , pub min_value : f32 , pub max_value : f32 , pub increment : f32 , pub result : OsdParamConfigError , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub param_id : [u8 ; 16] , pub config_type : OsdParamConfigType , } impl OSD_PARAM_SHOW_CONFIG_REPLY_DATA { pub const ENCODED_LEN : usize = 34usize ; pub const DEFAULT : Self = Self { request_id : 0_u32 , min_value : 0.0_f32 , max_value : 0.0_f32 , increment : 0.0_f32 , result : OsdParamConfigError :: DEFAULT , param_id : [0_u8 ; 16usize] , config_type : OsdParamConfigType :: DEFAULT , } ; } impl Default for OSD_PARAM_SHOW_CONFIG_REPLY_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for OSD_PARAM_SHOW_CONFIG_REPLY_DATA { type Message = MavMessage ; const ID : u32 = 11036u32 ; const NAME : & 'static str = "OSD_PARAM_SHOW_CONFIG_REPLY" ; const EXTRA_CRC : u8 = 177u8 ; const ENCODED_LEN : usize = 34usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . request_id = buf . get_u32_le () ; __struct . min_value = buf . get_f32_le () ; __struct . max_value = buf . get_f32_le () ; __struct . increment = buf . get_f32_le () ; let tmp = buf . get_u8 () ; __struct . result = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "OsdParamConfigError" , value : tmp as u32 }) ? ; for v in & mut __struct . param_id { let val = buf . get_u8 () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . config_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "OsdParamConfigType" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . request_id) ; __tmp . put_f32_le (self . min_value) ; __tmp . put_f32_le (self . max_value) ; __tmp . put_f32_le (self . increment) ; __tmp . put_u8 (self . result as u8) ; for val in & self . param_id { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . config_type as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SET_MAG_OFFSETS_DATA { pub mag_ofs_x : i16 , pub mag_ofs_y : i16 , pub mag_ofs_z : i16 , pub target_system : u8 , pub target_component : u8 , } impl SET_MAG_OFFSETS_DATA { pub const ENCODED_LEN : usize = 8usize ; pub const DEFAULT : Self = Self { mag_ofs_x : 0_i16 , mag_ofs_y : 0_i16 , mag_ofs_z : 0_i16 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for SET_MAG_OFFSETS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SET_MAG_OFFSETS_DATA { type Message = MavMessage ; const ID : u32 = 151u32 ; const NAME : & 'static str = "SET_MAG_OFFSETS" ; const EXTRA_CRC : u8 = 219u8 ; const ENCODED_LEN : usize = 8usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . mag_ofs_x = buf . get_i16_le () ; __struct . mag_ofs_y = buf . get_i16_le () ; __struct . mag_ofs_z = buf . get_i16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i16_le (self . mag_ofs_x) ; __tmp . put_i16_le (self . mag_ofs_y) ; __tmp . put_i16_le (self . mag_ofs_z) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GIMBAL_DEVICE_SET_ATTITUDE_DATA { # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub q : [f32 ; 4] , pub angular_velocity_x : f32 , pub angular_velocity_y : f32 , pub angular_velocity_z : f32 , pub flags : GimbalDeviceFlags , pub target_system : u8 , pub target_component : u8 , } impl GIMBAL_DEVICE_SET_ATTITUDE_DATA { pub const ENCODED_LEN : usize = 32usize ; pub const DEFAULT : Self = Self { q : [0.0_f32 ; 4usize] , angular_velocity_x : 0.0_f32 , angular_velocity_y : 0.0_f32 , angular_velocity_z : 0.0_f32 , flags : GimbalDeviceFlags :: DEFAULT , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for GIMBAL_DEVICE_SET_ATTITUDE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GIMBAL_DEVICE_SET_ATTITUDE_DATA { type Message = MavMessage ; const ID : u32 = 284u32 ; const NAME : & 'static str = "GIMBAL_DEVICE_SET_ATTITUDE" ; const EXTRA_CRC : u8 = 99u8 ; const ENCODED_LEN : usize = 32usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; for v in & mut __struct . q { let val = buf . get_f32_le () ; * v = val ; } __struct . angular_velocity_x = buf . get_f32_le () ; __struct . angular_velocity_y = buf . get_f32_le () ; __struct . angular_velocity_z = buf . get_f32_le () ; let tmp = buf . get_u16_le () ; __struct . flags = GimbalDeviceFlags :: from_bits (tmp & GimbalDeviceFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "GimbalDeviceFlags" , value : tmp as u32 }) ? ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; for val in & self . q { __tmp . put_f32_le (* val) ; } __tmp . put_f32_le (self . angular_velocity_x) ; __tmp . put_f32_le (self . angular_velocity_y) ; __tmp . put_f32_le (self . angular_velocity_z) ; __tmp . put_u16_le (self . flags . bits ()) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct DEVICE_OP_READ_REPLY_DATA { pub request_id : u32 , pub result : u8 , pub regstart : u8 , pub count : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub data : [u8 ; 128] , } impl DEVICE_OP_READ_REPLY_DATA { pub const ENCODED_LEN : usize = 135usize ; pub const DEFAULT : Self = Self { request_id : 0_u32 , result : 0_u8 , regstart : 0_u8 , count : 0_u8 , data : [0_u8 ; 128usize] , } ; } impl Default for DEVICE_OP_READ_REPLY_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for DEVICE_OP_READ_REPLY_DATA { type Message = MavMessage ; const ID : u32 = 11001u32 ; const NAME : & 'static str = "DEVICE_OP_READ_REPLY" ; const EXTRA_CRC : u8 = 15u8 ; const ENCODED_LEN : usize = 135usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . request_id = buf . get_u32_le () ; __struct . result = buf . get_u8 () ; __struct . regstart = buf . get_u8 () ; __struct . count = buf . get_u8 () ; for v in & mut __struct . data { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . request_id) ; __tmp . put_u8 (self . result) ; __tmp . put_u8 (self . regstart) ; __tmp . put_u8 (self . count) ; for val in & self . data { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GOPRO_SET_REQUEST_DATA { pub target_system : u8 , pub target_component : u8 , pub cmd_id : GoproCommand , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub value : [u8 ; 4] , } impl GOPRO_SET_REQUEST_DATA { pub const ENCODED_LEN : usize = 7usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , cmd_id : GoproCommand :: DEFAULT , value : [0_u8 ; 4usize] , } ; } impl Default for GOPRO_SET_REQUEST_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GOPRO_SET_REQUEST_DATA { type Message = MavMessage ; const ID : u32 = 218u32 ; const NAME : & 'static str = "GOPRO_SET_REQUEST" ; const EXTRA_CRC : u8 = 17u8 ; const ENCODED_LEN : usize = 7usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . cmd_id = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "GoproCommand" , value : tmp as u32 }) ? ; for v in & mut __struct . value { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . cmd_id as u8) ; for val in & self . value { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GIMBAL_MANAGER_INFORMATION_DATA { pub time_boot_ms : u32 , pub cap_flags : GimbalManagerCapFlags , pub roll_min : f32 , pub roll_max : f32 , pub pitch_min : f32 , pub pitch_max : f32 , pub yaw_min : f32 , pub yaw_max : f32 , pub gimbal_device_id : u8 , } impl GIMBAL_MANAGER_INFORMATION_DATA { pub const ENCODED_LEN : usize = 33usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , cap_flags : GimbalManagerCapFlags :: DEFAULT , roll_min : 0.0_f32 , roll_max : 0.0_f32 , pitch_min : 0.0_f32 , pitch_max : 0.0_f32 , yaw_min : 0.0_f32 , yaw_max : 0.0_f32 , gimbal_device_id : 0_u8 , } ; } impl Default for GIMBAL_MANAGER_INFORMATION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GIMBAL_MANAGER_INFORMATION_DATA { type Message = MavMessage ; const ID : u32 = 280u32 ; const NAME : & 'static str = "GIMBAL_MANAGER_INFORMATION" ; const EXTRA_CRC : u8 = 70u8 ; const ENCODED_LEN : usize = 33usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; let tmp = buf . get_u32_le () ; __struct . cap_flags = GimbalManagerCapFlags :: from_bits (tmp & GimbalManagerCapFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "GimbalManagerCapFlags" , value : tmp as u32 }) ? ; __struct . roll_min = buf . get_f32_le () ; __struct . roll_max = buf . get_f32_le () ; __struct . pitch_min = buf . get_f32_le () ; __struct . pitch_max = buf . get_f32_le () ; __struct . yaw_min = buf . get_f32_le () ; __struct . yaw_max = buf . get_f32_le () ; __struct . gimbal_device_id = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_u32_le (self . cap_flags . bits ()) ; __tmp . put_f32_le (self . roll_min) ; __tmp . put_f32_le (self . roll_max) ; __tmp . put_f32_le (self . pitch_min) ; __tmp . put_f32_le (self . pitch_max) ; __tmp . put_f32_le (self . yaw_min) ; __tmp . put_f32_le (self . yaw_max) ; __tmp . put_u8 (self . gimbal_device_id) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ORBIT_EXECUTION_STATUS_DATA { pub time_usec : u64 , pub radius : f32 , pub x : i32 , pub y : i32 , pub z : f32 , pub frame : MavFrame , } impl ORBIT_EXECUTION_STATUS_DATA { pub const ENCODED_LEN : usize = 25usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , radius : 0.0_f32 , x : 0_i32 , y : 0_i32 , z : 0.0_f32 , frame : MavFrame :: DEFAULT , } ; } impl Default for ORBIT_EXECUTION_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ORBIT_EXECUTION_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 360u32 ; const NAME : & 'static str = "ORBIT_EXECUTION_STATUS" ; const EXTRA_CRC : u8 = 11u8 ; const ENCODED_LEN : usize = 25usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . radius = buf . get_f32_le () ; __struct . x = buf . get_i32_le () ; __struct . y = buf . get_i32_le () ; __struct . z = buf . get_f32_le () ; let tmp = buf . get_u8 () ; __struct . frame = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavFrame" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . radius) ; __tmp . put_i32_le (self . x) ; __tmp . put_i32_le (self . y) ; __tmp . put_f32_le (self . z) ; __tmp . put_u8 (self . frame as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct DATA16_DATA { pub mavtype : u8 , pub len : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub data : [u8 ; 16] , } impl DATA16_DATA { pub const ENCODED_LEN : usize = 18usize ; pub const DEFAULT : Self = Self { mavtype : 0_u8 , len : 0_u8 , data : [0_u8 ; 16usize] , } ; } impl Default for DATA16_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for DATA16_DATA { type Message = MavMessage ; const ID : u32 = 169u32 ; const NAME : & 'static str = "DATA16" ; const EXTRA_CRC : u8 = 234u8 ; const ENCODED_LEN : usize = 18usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . mavtype = buf . get_u8 () ; __struct . len = buf . get_u8 () ; for v in & mut __struct . data { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . mavtype) ; __tmp . put_u8 (self . len) ; for val in & self . data { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct COMPONENT_METADATA_DATA { pub time_boot_ms : u32 , pub file_crc : u32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub uri : [u8 ; 100] , } impl COMPONENT_METADATA_DATA { pub const ENCODED_LEN : usize = 108usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , file_crc : 0_u32 , uri : [0_u8 ; 100usize] , } ; } impl Default for COMPONENT_METADATA_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for COMPONENT_METADATA_DATA { type Message = MavMessage ; const ID : u32 = 397u32 ; const NAME : & 'static str = "COMPONENT_METADATA" ; const EXTRA_CRC : u8 = 182u8 ; const ENCODED_LEN : usize = 108usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . file_crc = buf . get_u32_le () ; for v in & mut __struct . uri { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_u32_le (self . file_crc) ; for val in & self . uri { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct POWER_STATUS_DATA { pub Vcc : u16 , pub Vservo : u16 , pub flags : MavPowerStatus , } impl POWER_STATUS_DATA { pub const ENCODED_LEN : usize = 6usize ; pub const DEFAULT : Self = Self { Vcc : 0_u16 , Vservo : 0_u16 , flags : MavPowerStatus :: DEFAULT , } ; } impl Default for POWER_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for POWER_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 125u32 ; const NAME : & 'static str = "POWER_STATUS" ; const EXTRA_CRC : u8 = 203u8 ; const ENCODED_LEN : usize = 6usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . Vcc = buf . get_u16_le () ; __struct . Vservo = buf . get_u16_le () ; let tmp = buf . get_u16_le () ; __struct . flags = MavPowerStatus :: from_bits (tmp & MavPowerStatus :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "MavPowerStatus" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . Vcc) ; __tmp . put_u16_le (self . Vservo) ; __tmp . put_u16_le (self . flags . bits ()) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct RESOURCE_REQUEST_DATA { pub request_id : u8 , pub uri_type : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub uri : [u8 ; 120] , pub transfer_type : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub storage : [u8 ; 120] , } impl RESOURCE_REQUEST_DATA { pub const ENCODED_LEN : usize = 243usize ; pub const DEFAULT : Self = Self { request_id : 0_u8 , uri_type : 0_u8 , uri : [0_u8 ; 120usize] , transfer_type : 0_u8 , storage : [0_u8 ; 120usize] , } ; } impl Default for RESOURCE_REQUEST_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for RESOURCE_REQUEST_DATA { type Message = MavMessage ; const ID : u32 = 142u32 ; const NAME : & 'static str = "RESOURCE_REQUEST" ; const EXTRA_CRC : u8 = 72u8 ; const ENCODED_LEN : usize = 243usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . request_id = buf . get_u8 () ; __struct . uri_type = buf . get_u8 () ; for v in & mut __struct . uri { let val = buf . get_u8 () ; * v = val ; } __struct . transfer_type = buf . get_u8 () ; for v in & mut __struct . storage { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . request_id) ; __tmp . put_u8 (self . uri_type) ; for val in & self . uri { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . transfer_type) ; for val in & self . storage { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SET_ATTITUDE_TARGET_DATA { pub time_boot_ms : u32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub q : [f32 ; 4] , pub body_roll_rate : f32 , pub body_pitch_rate : f32 , pub body_yaw_rate : f32 , pub thrust : f32 , pub target_system : u8 , pub target_component : u8 , pub type_mask : AttitudeTargetTypemask , } impl SET_ATTITUDE_TARGET_DATA { pub const ENCODED_LEN : usize = 39usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , q : [0.0_f32 ; 4usize] , body_roll_rate : 0.0_f32 , body_pitch_rate : 0.0_f32 , body_yaw_rate : 0.0_f32 , thrust : 0.0_f32 , target_system : 0_u8 , target_component : 0_u8 , type_mask : AttitudeTargetTypemask :: DEFAULT , } ; } impl Default for SET_ATTITUDE_TARGET_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SET_ATTITUDE_TARGET_DATA { type Message = MavMessage ; const ID : u32 = 82u32 ; const NAME : & 'static str = "SET_ATTITUDE_TARGET" ; const EXTRA_CRC : u8 = 49u8 ; const ENCODED_LEN : usize = 39usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; for v in & mut __struct . q { let val = buf . get_f32_le () ; * v = val ; } __struct . body_roll_rate = buf . get_f32_le () ; __struct . body_pitch_rate = buf . get_f32_le () ; __struct . body_yaw_rate = buf . get_f32_le () ; __struct . thrust = buf . get_f32_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . type_mask = AttitudeTargetTypemask :: from_bits (tmp & AttitudeTargetTypemask :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "AttitudeTargetTypemask" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; for val in & self . q { __tmp . put_f32_le (* val) ; } __tmp . put_f32_le (self . body_roll_rate) ; __tmp . put_f32_le (self . body_pitch_rate) ; __tmp . put_f32_le (self . body_yaw_rate) ; __tmp . put_f32_le (self . thrust) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . type_mask . bits ()) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct COMMAND_ACK_DATA { pub command : MavCmd , pub result : MavResult , } impl COMMAND_ACK_DATA { pub const ENCODED_LEN : usize = 3usize ; pub const DEFAULT : Self = Self { command : MavCmd :: DEFAULT , result : MavResult :: DEFAULT , } ; } impl Default for COMMAND_ACK_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for COMMAND_ACK_DATA { type Message = MavMessage ; const ID : u32 = 77u32 ; const NAME : & 'static str = "COMMAND_ACK" ; const EXTRA_CRC : u8 = 143u8 ; const ENCODED_LEN : usize = 3usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u16_le () ; __struct . command = FromPrimitive :: from_u16 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavCmd" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . result = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavResult" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . command as u16) ; __tmp . put_u8 (self . result as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LOG_ENTRY_DATA { pub time_utc : u32 , pub size : u32 , pub id : u16 , pub num_logs : u16 , pub last_log_num : u16 , } impl LOG_ENTRY_DATA { pub const ENCODED_LEN : usize = 14usize ; pub const DEFAULT : Self = Self { time_utc : 0_u32 , size : 0_u32 , id : 0_u16 , num_logs : 0_u16 , last_log_num : 0_u16 , } ; } impl Default for LOG_ENTRY_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for LOG_ENTRY_DATA { type Message = MavMessage ; const ID : u32 = 118u32 ; const NAME : & 'static str = "LOG_ENTRY" ; const EXTRA_CRC : u8 = 56u8 ; const ENCODED_LEN : usize = 14usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_utc = buf . get_u32_le () ; __struct . size = buf . get_u32_le () ; __struct . id = buf . get_u16_le () ; __struct . num_logs = buf . get_u16_le () ; __struct . last_log_num = buf . get_u16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_utc) ; __tmp . put_u32_le (self . size) ; __tmp . put_u16_le (self . id) ; __tmp . put_u16_le (self . num_logs) ; __tmp . put_u16_le (self . last_log_num) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct EVENT_DATA { pub id : u32 , pub event_time_boot_ms : u32 , pub sequence : u16 , pub destination_component : u8 , pub destination_system : u8 , pub log_levels : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub arguments : [u8 ; 40] , } impl EVENT_DATA { pub const ENCODED_LEN : usize = 53usize ; pub const DEFAULT : Self = Self { id : 0_u32 , event_time_boot_ms : 0_u32 , sequence : 0_u16 , destination_component : 0_u8 , destination_system : 0_u8 , log_levels : 0_u8 , arguments : [0_u8 ; 40usize] , } ; } impl Default for EVENT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for EVENT_DATA { type Message = MavMessage ; const ID : u32 = 410u32 ; const NAME : & 'static str = "EVENT" ; const EXTRA_CRC : u8 = 160u8 ; const ENCODED_LEN : usize = 53usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . id = buf . get_u32_le () ; __struct . event_time_boot_ms = buf . get_u32_le () ; __struct . sequence = buf . get_u16_le () ; __struct . destination_component = buf . get_u8 () ; __struct . destination_system = buf . get_u8 () ; __struct . log_levels = buf . get_u8 () ; for v in & mut __struct . arguments { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . id) ; __tmp . put_u32_le (self . event_time_boot_ms) ; __tmp . put_u16_le (self . sequence) ; __tmp . put_u8 (self . destination_component) ; __tmp . put_u8 (self . destination_system) ; __tmp . put_u8 (self . log_levels) ; for val in & self . arguments { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HWSTATUS_DATA { pub Vcc : u16 , pub I2Cerr : u8 , } impl HWSTATUS_DATA { pub const ENCODED_LEN : usize = 3usize ; pub const DEFAULT : Self = Self { Vcc : 0_u16 , I2Cerr : 0_u8 , } ; } impl Default for HWSTATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for HWSTATUS_DATA { type Message = MavMessage ; const ID : u32 = 165u32 ; const NAME : & 'static str = "HWSTATUS" ; const EXTRA_CRC : u8 = 21u8 ; const ENCODED_LEN : usize = 3usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . Vcc = buf . get_u16_le () ; __struct . I2Cerr = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . Vcc) ; __tmp . put_u8 (self . I2Cerr) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CELLULAR_STATUS_DATA { pub mcc : u16 , pub mnc : u16 , pub lac : u16 , pub status : CellularStatusFlag , pub failure_reason : CellularNetworkFailedReason , pub mavtype : CellularNetworkRadioType , pub quality : u8 , } impl CELLULAR_STATUS_DATA { pub const ENCODED_LEN : usize = 10usize ; pub const DEFAULT : Self = Self { mcc : 0_u16 , mnc : 0_u16 , lac : 0_u16 , status : CellularStatusFlag :: DEFAULT , failure_reason : CellularNetworkFailedReason :: DEFAULT , mavtype : CellularNetworkRadioType :: DEFAULT , quality : 0_u8 , } ; } impl Default for CELLULAR_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CELLULAR_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 334u32 ; const NAME : & 'static str = "CELLULAR_STATUS" ; const EXTRA_CRC : u8 = 72u8 ; const ENCODED_LEN : usize = 10usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . mcc = buf . get_u16_le () ; __struct . mnc = buf . get_u16_le () ; __struct . lac = buf . get_u16_le () ; let tmp = buf . get_u8 () ; __struct . status = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "CellularStatusFlag" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . failure_reason = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "CellularNetworkFailedReason" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . mavtype = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "CellularNetworkRadioType" , value : tmp as u32 }) ? ; __struct . quality = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . mcc) ; __tmp . put_u16_le (self . mnc) ; __tmp . put_u16_le (self . lac) ; __tmp . put_u8 (self . status as u8) ; __tmp . put_u8 (self . failure_reason as u8) ; __tmp . put_u8 (self . mavtype as u8) ; __tmp . put_u8 (self . quality) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LOGGING_DATA_DATA { pub sequence : u16 , pub target_system : u8 , pub target_component : u8 , pub length : u8 , pub first_message_offset : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub data : [u8 ; 249] , } impl LOGGING_DATA_DATA { pub const ENCODED_LEN : usize = 255usize ; pub const DEFAULT : Self = Self { sequence : 0_u16 , target_system : 0_u8 , target_component : 0_u8 , length : 0_u8 , first_message_offset : 0_u8 , data : [0_u8 ; 249usize] , } ; } impl Default for LOGGING_DATA_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for LOGGING_DATA_DATA { type Message = MavMessage ; const ID : u32 = 266u32 ; const NAME : & 'static str = "LOGGING_DATA" ; const EXTRA_CRC : u8 = 193u8 ; const ENCODED_LEN : usize = 255usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . sequence = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . length = buf . get_u8 () ; __struct . first_message_offset = buf . get_u8 () ; for v in & mut __struct . data { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . sequence) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . length) ; __tmp . put_u8 (self . first_message_offset) ; for val in & self . data { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HIL_GPS_DATA { pub time_usec : u64 , pub lat : i32 , pub lon : i32 , pub alt : i32 , pub eph : u16 , pub epv : u16 , pub vel : u16 , pub vn : i16 , pub ve : i16 , pub vd : i16 , pub cog : u16 , pub fix_type : u8 , pub satellites_visible : u8 , } impl HIL_GPS_DATA { pub const ENCODED_LEN : usize = 36usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , lat : 0_i32 , lon : 0_i32 , alt : 0_i32 , eph : 0_u16 , epv : 0_u16 , vel : 0_u16 , vn : 0_i16 , ve : 0_i16 , vd : 0_i16 , cog : 0_u16 , fix_type : 0_u8 , satellites_visible : 0_u8 , } ; } impl Default for HIL_GPS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for HIL_GPS_DATA { type Message = MavMessage ; const ID : u32 = 113u32 ; const NAME : & 'static str = "HIL_GPS" ; const EXTRA_CRC : u8 = 124u8 ; const ENCODED_LEN : usize = 36usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . alt = buf . get_i32_le () ; __struct . eph = buf . get_u16_le () ; __struct . epv = buf . get_u16_le () ; __struct . vel = buf . get_u16_le () ; __struct . vn = buf . get_i16_le () ; __struct . ve = buf . get_i16_le () ; __struct . vd = buf . get_i16_le () ; __struct . cog = buf . get_u16_le () ; __struct . fix_type = buf . get_u8 () ; __struct . satellites_visible = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_i32_le (self . alt) ; __tmp . put_u16_le (self . eph) ; __tmp . put_u16_le (self . epv) ; __tmp . put_u16_le (self . vel) ; __tmp . put_i16_le (self . vn) ; __tmp . put_i16_le (self . ve) ; __tmp . put_i16_le (self . vd) ; __tmp . put_u16_le (self . cog) ; __tmp . put_u8 (self . fix_type) ; __tmp . put_u8 (self . satellites_visible) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CAN_FRAME_DATA { pub id : u32 , pub target_system : u8 , pub target_component : u8 , pub bus : u8 , pub len : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub data : [u8 ; 8] , } impl CAN_FRAME_DATA { pub const ENCODED_LEN : usize = 16usize ; pub const DEFAULT : Self = Self { id : 0_u32 , target_system : 0_u8 , target_component : 0_u8 , bus : 0_u8 , len : 0_u8 , data : [0_u8 ; 8usize] , } ; } impl Default for CAN_FRAME_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CAN_FRAME_DATA { type Message = MavMessage ; const ID : u32 = 386u32 ; const NAME : & 'static str = "CAN_FRAME" ; const EXTRA_CRC : u8 = 132u8 ; const ENCODED_LEN : usize = 16usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . id = buf . get_u32_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . bus = buf . get_u8 () ; __struct . len = buf . get_u8 () ; for v in & mut __struct . data { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . id) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . bus) ; __tmp . put_u8 (self . len) ; for val in & self . data { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CAMERA_IMAGE_CAPTURED_DATA { pub time_utc : u64 , pub time_boot_ms : u32 , pub lat : i32 , pub lon : i32 , pub alt : i32 , pub relative_alt : i32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub q : [f32 ; 4] , pub image_index : i32 , pub camera_id : u8 , pub capture_result : i8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub file_url : [u8 ; 205] , } impl CAMERA_IMAGE_CAPTURED_DATA { pub const ENCODED_LEN : usize = 255usize ; pub const DEFAULT : Self = Self { time_utc : 0_u64 , time_boot_ms : 0_u32 , lat : 0_i32 , lon : 0_i32 , alt : 0_i32 , relative_alt : 0_i32 , q : [0.0_f32 ; 4usize] , image_index : 0_i32 , camera_id : 0_u8 , capture_result : 0_i8 , file_url : [0_u8 ; 205usize] , } ; } impl Default for CAMERA_IMAGE_CAPTURED_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CAMERA_IMAGE_CAPTURED_DATA { type Message = MavMessage ; const ID : u32 = 263u32 ; const NAME : & 'static str = "CAMERA_IMAGE_CAPTURED" ; const EXTRA_CRC : u8 = 133u8 ; const ENCODED_LEN : usize = 255usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_utc = buf . get_u64_le () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . alt = buf . get_i32_le () ; __struct . relative_alt = buf . get_i32_le () ; for v in & mut __struct . q { let val = buf . get_f32_le () ; * v = val ; } __struct . image_index = buf . get_i32_le () ; __struct . camera_id = buf . get_u8 () ; __struct . capture_result = buf . get_i8 () ; for v in & mut __struct . file_url { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_utc) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_i32_le (self . alt) ; __tmp . put_i32_le (self . relative_alt) ; for val in & self . q { __tmp . put_f32_le (* val) ; } __tmp . put_i32_le (self . image_index) ; __tmp . put_u8 (self . camera_id) ; __tmp . put_i8 (self . capture_result) ; for val in & self . file_url { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct V2_EXTENSION_DATA { pub message_type : u16 , pub target_network : u8 , pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub payload : [u8 ; 249] , } impl V2_EXTENSION_DATA { pub const ENCODED_LEN : usize = 254usize ; pub const DEFAULT : Self = Self { message_type : 0_u16 , target_network : 0_u8 , target_system : 0_u8 , target_component : 0_u8 , payload : [0_u8 ; 249usize] , } ; } impl Default for V2_EXTENSION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for V2_EXTENSION_DATA { type Message = MavMessage ; const ID : u32 = 248u32 ; const NAME : & 'static str = "V2_EXTENSION" ; const EXTRA_CRC : u8 = 8u8 ; const ENCODED_LEN : usize = 254usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . message_type = buf . get_u16_le () ; __struct . target_network = buf . get_u8 () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . payload { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . message_type) ; __tmp . put_u8 (self . target_network) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . payload { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SAFETY_ALLOWED_AREA_DATA { pub p1x : f32 , pub p1y : f32 , pub p1z : f32 , pub p2x : f32 , pub p2y : f32 , pub p2z : f32 , pub frame : MavFrame , } impl SAFETY_ALLOWED_AREA_DATA { pub const ENCODED_LEN : usize = 25usize ; pub const DEFAULT : Self = Self { p1x : 0.0_f32 , p1y : 0.0_f32 , p1z : 0.0_f32 , p2x : 0.0_f32 , p2y : 0.0_f32 , p2z : 0.0_f32 , frame : MavFrame :: DEFAULT , } ; } impl Default for SAFETY_ALLOWED_AREA_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SAFETY_ALLOWED_AREA_DATA { type Message = MavMessage ; const ID : u32 = 55u32 ; const NAME : & 'static str = "SAFETY_ALLOWED_AREA" ; const EXTRA_CRC : u8 = 3u8 ; const ENCODED_LEN : usize = 25usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . p1x = buf . get_f32_le () ; __struct . p1y = buf . get_f32_le () ; __struct . p1z = buf . get_f32_le () ; __struct . p2x = buf . get_f32_le () ; __struct . p2y = buf . get_f32_le () ; __struct . p2z = buf . get_f32_le () ; let tmp = buf . get_u8 () ; __struct . frame = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavFrame" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . p1x) ; __tmp . put_f32_le (self . p1y) ; __tmp . put_f32_le (self . p1z) ; __tmp . put_f32_le (self . p2x) ; __tmp . put_f32_le (self . p2y) ; __tmp . put_f32_le (self . p2z) ; __tmp . put_u8 (self . frame as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PROTOCOL_VERSION_DATA { pub version : u16 , pub min_version : u16 , pub max_version : u16 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub spec_version_hash : [u8 ; 8] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub library_version_hash : [u8 ; 8] , } impl PROTOCOL_VERSION_DATA { pub const ENCODED_LEN : usize = 22usize ; pub const DEFAULT : Self = Self { version : 0_u16 , min_version : 0_u16 , max_version : 0_u16 , spec_version_hash : [0_u8 ; 8usize] , library_version_hash : [0_u8 ; 8usize] , } ; } impl Default for PROTOCOL_VERSION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for PROTOCOL_VERSION_DATA { type Message = MavMessage ; const ID : u32 = 300u32 ; const NAME : & 'static str = "PROTOCOL_VERSION" ; const EXTRA_CRC : u8 = 217u8 ; const ENCODED_LEN : usize = 22usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . version = buf . get_u16_le () ; __struct . min_version = buf . get_u16_le () ; __struct . max_version = buf . get_u16_le () ; for v in & mut __struct . spec_version_hash { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . library_version_hash { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . version) ; __tmp . put_u16_le (self . min_version) ; __tmp . put_u16_le (self . max_version) ; for val in & self . spec_version_hash { __tmp . put_u8 (* val) ; } for val in & self . library_version_hash { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct RAW_IMU_DATA { pub time_usec : u64 , pub xacc : i16 , pub yacc : i16 , pub zacc : i16 , pub xgyro : i16 , pub ygyro : i16 , pub zgyro : i16 , pub xmag : i16 , pub ymag : i16 , pub zmag : i16 , } impl RAW_IMU_DATA { pub const ENCODED_LEN : usize = 26usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , xacc : 0_i16 , yacc : 0_i16 , zacc : 0_i16 , xgyro : 0_i16 , ygyro : 0_i16 , zgyro : 0_i16 , xmag : 0_i16 , ymag : 0_i16 , zmag : 0_i16 , } ; } impl Default for RAW_IMU_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for RAW_IMU_DATA { type Message = MavMessage ; const ID : u32 = 27u32 ; const NAME : & 'static str = "RAW_IMU" ; const EXTRA_CRC : u8 = 144u8 ; const ENCODED_LEN : usize = 26usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . xacc = buf . get_i16_le () ; __struct . yacc = buf . get_i16_le () ; __struct . zacc = buf . get_i16_le () ; __struct . xgyro = buf . get_i16_le () ; __struct . ygyro = buf . get_i16_le () ; __struct . zgyro = buf . get_i16_le () ; __struct . xmag = buf . get_i16_le () ; __struct . ymag = buf . get_i16_le () ; __struct . zmag = buf . get_i16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_i16_le (self . xacc) ; __tmp . put_i16_le (self . yacc) ; __tmp . put_i16_le (self . zacc) ; __tmp . put_i16_le (self . xgyro) ; __tmp . put_i16_le (self . ygyro) ; __tmp . put_i16_le (self . zgyro) ; __tmp . put_i16_le (self . xmag) ; __tmp . put_i16_le (self . ymag) ; __tmp . put_i16_le (self . zmag) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CAMERA_INFORMATION_DATA { pub time_boot_ms : u32 , pub firmware_version : u32 , pub focal_length : f32 , pub sensor_size_h : f32 , pub sensor_size_v : f32 , pub flags : CameraCapFlags , pub resolution_h : u16 , pub resolution_v : u16 , pub cam_definition_version : u16 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub vendor_name : [u8 ; 32] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub model_name : [u8 ; 32] , pub lens_id : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub cam_definition_uri : [u8 ; 140] , } impl CAMERA_INFORMATION_DATA { pub const ENCODED_LEN : usize = 235usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , firmware_version : 0_u32 , focal_length : 0.0_f32 , sensor_size_h : 0.0_f32 , sensor_size_v : 0.0_f32 , flags : CameraCapFlags :: DEFAULT , resolution_h : 0_u16 , resolution_v : 0_u16 , cam_definition_version : 0_u16 , vendor_name : [0_u8 ; 32usize] , model_name : [0_u8 ; 32usize] , lens_id : 0_u8 , cam_definition_uri : [0_u8 ; 140usize] , } ; } impl Default for CAMERA_INFORMATION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CAMERA_INFORMATION_DATA { type Message = MavMessage ; const ID : u32 = 259u32 ; const NAME : & 'static str = "CAMERA_INFORMATION" ; const EXTRA_CRC : u8 = 92u8 ; const ENCODED_LEN : usize = 235usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . firmware_version = buf . get_u32_le () ; __struct . focal_length = buf . get_f32_le () ; __struct . sensor_size_h = buf . get_f32_le () ; __struct . sensor_size_v = buf . get_f32_le () ; let tmp = buf . get_u32_le () ; __struct . flags = CameraCapFlags :: from_bits (tmp & CameraCapFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "CameraCapFlags" , value : tmp as u32 }) ? ; __struct . resolution_h = buf . get_u16_le () ; __struct . resolution_v = buf . get_u16_le () ; __struct . cam_definition_version = buf . get_u16_le () ; for v in & mut __struct . vendor_name { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . model_name { let val = buf . get_u8 () ; * v = val ; } __struct . lens_id = buf . get_u8 () ; for v in & mut __struct . cam_definition_uri { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_u32_le (self . firmware_version) ; __tmp . put_f32_le (self . focal_length) ; __tmp . put_f32_le (self . sensor_size_h) ; __tmp . put_f32_le (self . sensor_size_v) ; __tmp . put_u32_le (self . flags . bits ()) ; __tmp . put_u16_le (self . resolution_h) ; __tmp . put_u16_le (self . resolution_v) ; __tmp . put_u16_le (self . cam_definition_version) ; for val in & self . vendor_name { __tmp . put_u8 (* val) ; } for val in & self . model_name { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . lens_id) ; for val in & self . cam_definition_uri { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct OPEN_DRONE_ID_SYSTEM_UPDATE_DATA { pub operator_latitude : i32 , pub operator_longitude : i32 , pub operator_altitude_geo : f32 , pub timestamp : u32 , pub target_system : u8 , pub target_component : u8 , } impl OPEN_DRONE_ID_SYSTEM_UPDATE_DATA { pub const ENCODED_LEN : usize = 18usize ; pub const DEFAULT : Self = Self { operator_latitude : 0_i32 , operator_longitude : 0_i32 , operator_altitude_geo : 0.0_f32 , timestamp : 0_u32 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for OPEN_DRONE_ID_SYSTEM_UPDATE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for OPEN_DRONE_ID_SYSTEM_UPDATE_DATA { type Message = MavMessage ; const ID : u32 = 12919u32 ; const NAME : & 'static str = "OPEN_DRONE_ID_SYSTEM_UPDATE" ; const EXTRA_CRC : u8 = 7u8 ; const ENCODED_LEN : usize = 18usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . operator_latitude = buf . get_i32_le () ; __struct . operator_longitude = buf . get_i32_le () ; __struct . operator_altitude_geo = buf . get_f32_le () ; __struct . timestamp = buf . get_u32_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . operator_latitude) ; __tmp . put_i32_le (self . operator_longitude) ; __tmp . put_f32_le (self . operator_altitude_geo) ; __tmp . put_u32_le (self . timestamp) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct REQUEST_DATA_STREAM_DATA { pub req_message_rate : u16 , pub target_system : u8 , pub target_component : u8 , pub req_stream_id : u8 , pub start_stop : u8 , } impl REQUEST_DATA_STREAM_DATA { pub const ENCODED_LEN : usize = 6usize ; pub const DEFAULT : Self = Self { req_message_rate : 0_u16 , target_system : 0_u8 , target_component : 0_u8 , req_stream_id : 0_u8 , start_stop : 0_u8 , } ; } impl Default for REQUEST_DATA_STREAM_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for REQUEST_DATA_STREAM_DATA { type Message = MavMessage ; const ID : u32 = 66u32 ; const NAME : & 'static str = "REQUEST_DATA_STREAM" ; const EXTRA_CRC : u8 = 148u8 ; const ENCODED_LEN : usize = 6usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . req_message_rate = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . req_stream_id = buf . get_u8 () ; __struct . start_stop = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . req_message_rate) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . req_stream_id) ; __tmp . put_u8 (self . start_stop) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct OPEN_DRONE_ID_SELF_ID_DATA { pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub id_or_mac : [u8 ; 20] , pub description_type : MavOdidDescType , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub description : [u8 ; 23] , } impl OPEN_DRONE_ID_SELF_ID_DATA { pub const ENCODED_LEN : usize = 46usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , id_or_mac : [0_u8 ; 20usize] , description_type : MavOdidDescType :: DEFAULT , description : [0_u8 ; 23usize] , } ; } impl Default for OPEN_DRONE_ID_SELF_ID_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for OPEN_DRONE_ID_SELF_ID_DATA { type Message = MavMessage ; const ID : u32 = 12903u32 ; const NAME : & 'static str = "OPEN_DRONE_ID_SELF_ID" ; const EXTRA_CRC : u8 = 249u8 ; const ENCODED_LEN : usize = 46usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . id_or_mac { let val = buf . get_u8 () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . description_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidDescType" , value : tmp as u32 }) ? ; for v in & mut __struct . description { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . id_or_mac { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . description_type as u8) ; for val in & self . description { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct OPEN_DRONE_ID_AUTHENTICATION_DATA { pub timestamp : u32 , pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub id_or_mac : [u8 ; 20] , pub authentication_type : MavOdidAuthType , pub data_page : u8 , pub last_page_index : u8 , pub length : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub authentication_data : [u8 ; 23] , } impl OPEN_DRONE_ID_AUTHENTICATION_DATA { pub const ENCODED_LEN : usize = 53usize ; pub const DEFAULT : Self = Self { timestamp : 0_u32 , target_system : 0_u8 , target_component : 0_u8 , id_or_mac : [0_u8 ; 20usize] , authentication_type : MavOdidAuthType :: DEFAULT , data_page : 0_u8 , last_page_index : 0_u8 , length : 0_u8 , authentication_data : [0_u8 ; 23usize] , } ; } impl Default for OPEN_DRONE_ID_AUTHENTICATION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for OPEN_DRONE_ID_AUTHENTICATION_DATA { type Message = MavMessage ; const ID : u32 = 12902u32 ; const NAME : & 'static str = "OPEN_DRONE_ID_AUTHENTICATION" ; const EXTRA_CRC : u8 = 140u8 ; const ENCODED_LEN : usize = 53usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . timestamp = buf . get_u32_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . id_or_mac { let val = buf . get_u8 () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . authentication_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidAuthType" , value : tmp as u32 }) ? ; __struct . data_page = buf . get_u8 () ; __struct . last_page_index = buf . get_u8 () ; __struct . length = buf . get_u8 () ; for v in & mut __struct . authentication_data { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . timestamp) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . id_or_mac { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . authentication_type as u8) ; __tmp . put_u8 (self . data_page) ; __tmp . put_u8 (self . last_page_index) ; __tmp . put_u8 (self . length) ; for val in & self . authentication_data { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ATT_POS_MOCAP_DATA { pub time_usec : u64 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub q : [f32 ; 4] , pub x : f32 , pub y : f32 , pub z : f32 , } impl ATT_POS_MOCAP_DATA { pub const ENCODED_LEN : usize = 36usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , q : [0.0_f32 ; 4usize] , x : 0.0_f32 , y : 0.0_f32 , z : 0.0_f32 , } ; } impl Default for ATT_POS_MOCAP_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ATT_POS_MOCAP_DATA { type Message = MavMessage ; const ID : u32 = 138u32 ; const NAME : & 'static str = "ATT_POS_MOCAP" ; const EXTRA_CRC : u8 = 109u8 ; const ENCODED_LEN : usize = 36usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; for v in & mut __struct . q { let val = buf . get_f32_le () ; * v = val ; } __struct . x = buf . get_f32_le () ; __struct . y = buf . get_f32_le () ; __struct . z = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; for val in & self . q { __tmp . put_f32_le (* val) ; } __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HOME_POSITION_DATA { pub latitude : i32 , pub longitude : i32 , pub altitude : i32 , pub x : f32 , pub y : f32 , pub z : f32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub q : [f32 ; 4] , pub approach_x : f32 , pub approach_y : f32 , pub approach_z : f32 , } impl HOME_POSITION_DATA { pub const ENCODED_LEN : usize = 52usize ; pub const DEFAULT : Self = Self { latitude : 0_i32 , longitude : 0_i32 , altitude : 0_i32 , x : 0.0_f32 , y : 0.0_f32 , z : 0.0_f32 , q : [0.0_f32 ; 4usize] , approach_x : 0.0_f32 , approach_y : 0.0_f32 , approach_z : 0.0_f32 , } ; } impl Default for HOME_POSITION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for HOME_POSITION_DATA { type Message = MavMessage ; const ID : u32 = 242u32 ; const NAME : & 'static str = "HOME_POSITION" ; const EXTRA_CRC : u8 = 104u8 ; const ENCODED_LEN : usize = 52usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . latitude = buf . get_i32_le () ; __struct . longitude = buf . get_i32_le () ; __struct . altitude = buf . get_i32_le () ; __struct . x = buf . get_f32_le () ; __struct . y = buf . get_f32_le () ; __struct . z = buf . get_f32_le () ; for v in & mut __struct . q { let val = buf . get_f32_le () ; * v = val ; } __struct . approach_x = buf . get_f32_le () ; __struct . approach_y = buf . get_f32_le () ; __struct . approach_z = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . latitude) ; __tmp . put_i32_le (self . longitude) ; __tmp . put_i32_le (self . altitude) ; __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; for val in & self . q { __tmp . put_f32_le (* val) ; } __tmp . put_f32_le (self . approach_x) ; __tmp . put_f32_le (self . approach_y) ; __tmp . put_f32_le (self . approach_z) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct COMMAND_INT_DATA { pub param1 : f32 , pub param2 : f32 , pub param3 : f32 , pub param4 : f32 , pub x : i32 , pub y : i32 , pub z : f32 , pub command : MavCmd , pub target_system : u8 , pub target_component : u8 , pub frame : MavFrame , pub current : u8 , pub autocontinue : u8 , } impl COMMAND_INT_DATA { pub const ENCODED_LEN : usize = 35usize ; pub const DEFAULT : Self = Self { param1 : 0.0_f32 , param2 : 0.0_f32 , param3 : 0.0_f32 , param4 : 0.0_f32 , x : 0_i32 , y : 0_i32 , z : 0.0_f32 , command : MavCmd :: DEFAULT , target_system : 0_u8 , target_component : 0_u8 , frame : MavFrame :: DEFAULT , current : 0_u8 , autocontinue : 0_u8 , } ; } impl Default for COMMAND_INT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for COMMAND_INT_DATA { type Message = MavMessage ; const ID : u32 = 75u32 ; const NAME : & 'static str = "COMMAND_INT" ; const EXTRA_CRC : u8 = 158u8 ; const ENCODED_LEN : usize = 35usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . param1 = buf . get_f32_le () ; __struct . param2 = buf . get_f32_le () ; __struct . param3 = buf . get_f32_le () ; __struct . param4 = buf . get_f32_le () ; __struct . x = buf . get_i32_le () ; __struct . y = buf . get_i32_le () ; __struct . z = buf . get_f32_le () ; let tmp = buf . get_u16_le () ; __struct . command = FromPrimitive :: from_u16 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavCmd" , value : tmp as u32 }) ? ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . frame = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavFrame" , value : tmp as u32 }) ? ; __struct . current = buf . get_u8 () ; __struct . autocontinue = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . param1) ; __tmp . put_f32_le (self . param2) ; __tmp . put_f32_le (self . param3) ; __tmp . put_f32_le (self . param4) ; __tmp . put_i32_le (self . x) ; __tmp . put_i32_le (self . y) ; __tmp . put_f32_le (self . z) ; __tmp . put_u16_le (self . command as u16) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . frame as u8) ; __tmp . put_u8 (self . current) ; __tmp . put_u8 (self . autocontinue) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CAMERA_CAPTURE_STATUS_DATA { pub time_boot_ms : u32 , pub image_interval : f32 , pub recording_time_ms : u32 , pub available_capacity : f32 , pub image_status : u8 , pub video_status : u8 , } impl CAMERA_CAPTURE_STATUS_DATA { pub const ENCODED_LEN : usize = 18usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , image_interval : 0.0_f32 , recording_time_ms : 0_u32 , available_capacity : 0.0_f32 , image_status : 0_u8 , video_status : 0_u8 , } ; } impl Default for CAMERA_CAPTURE_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CAMERA_CAPTURE_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 262u32 ; const NAME : & 'static str = "CAMERA_CAPTURE_STATUS" ; const EXTRA_CRC : u8 = 12u8 ; const ENCODED_LEN : usize = 18usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . image_interval = buf . get_f32_le () ; __struct . recording_time_ms = buf . get_u32_le () ; __struct . available_capacity = buf . get_f32_le () ; __struct . image_status = buf . get_u8 () ; __struct . video_status = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . image_interval) ; __tmp . put_u32_le (self . recording_time_ms) ; __tmp . put_f32_le (self . available_capacity) ; __tmp . put_u8 (self . image_status) ; __tmp . put_u8 (self . video_status) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct RAW_PRESSURE_DATA { pub time_usec : u64 , pub press_abs : i16 , pub press_diff1 : i16 , pub press_diff2 : i16 , pub temperature : i16 , } impl RAW_PRESSURE_DATA { pub const ENCODED_LEN : usize = 16usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , press_abs : 0_i16 , press_diff1 : 0_i16 , press_diff2 : 0_i16 , temperature : 0_i16 , } ; } impl Default for RAW_PRESSURE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for RAW_PRESSURE_DATA { type Message = MavMessage ; const ID : u32 = 28u32 ; const NAME : & 'static str = "RAW_PRESSURE" ; const EXTRA_CRC : u8 = 67u8 ; const ENCODED_LEN : usize = 16usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . press_abs = buf . get_i16_le () ; __struct . press_diff1 = buf . get_i16_le () ; __struct . press_diff2 = buf . get_i16_le () ; __struct . temperature = buf . get_i16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_i16_le (self . press_abs) ; __tmp . put_i16_le (self . press_diff1) ; __tmp . put_i16_le (self . press_diff2) ; __tmp . put_i16_le (self . temperature) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MISSION_ACK_DATA { pub target_system : u8 , pub target_component : u8 , pub mavtype : MavMissionResult , } impl MISSION_ACK_DATA { pub const ENCODED_LEN : usize = 3usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , mavtype : MavMissionResult :: DEFAULT , } ; } impl Default for MISSION_ACK_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MISSION_ACK_DATA { type Message = MavMessage ; const ID : u32 = 47u32 ; const NAME : & 'static str = "MISSION_ACK" ; const EXTRA_CRC : u8 = 153u8 ; const ENCODED_LEN : usize = 3usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . mavtype = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavMissionResult" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . mavtype as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GIMBAL_DEVICE_ATTITUDE_STATUS_DATA { pub time_boot_ms : u32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub q : [f32 ; 4] , pub angular_velocity_x : f32 , pub angular_velocity_y : f32 , pub angular_velocity_z : f32 , pub failure_flags : GimbalDeviceErrorFlags , pub flags : GimbalDeviceFlags , pub target_system : u8 , pub target_component : u8 , } impl GIMBAL_DEVICE_ATTITUDE_STATUS_DATA { pub const ENCODED_LEN : usize = 40usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , q : [0.0_f32 ; 4usize] , angular_velocity_x : 0.0_f32 , angular_velocity_y : 0.0_f32 , angular_velocity_z : 0.0_f32 , failure_flags : GimbalDeviceErrorFlags :: DEFAULT , flags : GimbalDeviceFlags :: DEFAULT , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for GIMBAL_DEVICE_ATTITUDE_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GIMBAL_DEVICE_ATTITUDE_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 285u32 ; const NAME : & 'static str = "GIMBAL_DEVICE_ATTITUDE_STATUS" ; const EXTRA_CRC : u8 = 137u8 ; const ENCODED_LEN : usize = 40usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; for v in & mut __struct . q { let val = buf . get_f32_le () ; * v = val ; } __struct . angular_velocity_x = buf . get_f32_le () ; __struct . angular_velocity_y = buf . get_f32_le () ; __struct . angular_velocity_z = buf . get_f32_le () ; let tmp = buf . get_u32_le () ; __struct . failure_flags = GimbalDeviceErrorFlags :: from_bits (tmp & GimbalDeviceErrorFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "GimbalDeviceErrorFlags" , value : tmp as u32 }) ? ; let tmp = buf . get_u16_le () ; __struct . flags = GimbalDeviceFlags :: from_bits (tmp & GimbalDeviceFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "GimbalDeviceFlags" , value : tmp as u32 }) ? ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; for val in & self . q { __tmp . put_f32_le (* val) ; } __tmp . put_f32_le (self . angular_velocity_x) ; __tmp . put_f32_le (self . angular_velocity_y) ; __tmp . put_f32_le (self . angular_velocity_z) ; __tmp . put_u32_le (self . failure_flags . bits ()) ; __tmp . put_u16_le (self . flags . bits ()) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MANUAL_SETPOINT_DATA { pub time_boot_ms : u32 , pub roll : f32 , pub pitch : f32 , pub yaw : f32 , pub thrust : f32 , pub mode_switch : u8 , pub manual_override_switch : u8 , } impl MANUAL_SETPOINT_DATA { pub const ENCODED_LEN : usize = 22usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , roll : 0.0_f32 , pitch : 0.0_f32 , yaw : 0.0_f32 , thrust : 0.0_f32 , mode_switch : 0_u8 , manual_override_switch : 0_u8 , } ; } impl Default for MANUAL_SETPOINT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MANUAL_SETPOINT_DATA { type Message = MavMessage ; const ID : u32 = 81u32 ; const NAME : & 'static str = "MANUAL_SETPOINT" ; const EXTRA_CRC : u8 = 106u8 ; const ENCODED_LEN : usize = 22usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . roll = buf . get_f32_le () ; __struct . pitch = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; __struct . thrust = buf . get_f32_le () ; __struct . mode_switch = buf . get_u8 () ; __struct . manual_override_switch = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . roll) ; __tmp . put_f32_le (self . pitch) ; __tmp . put_f32_le (self . yaw) ; __tmp . put_f32_le (self . thrust) ; __tmp . put_u8 (self . mode_switch) ; __tmp . put_u8 (self . manual_override_switch) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct RPM_DATA { pub rpm1 : f32 , pub rpm2 : f32 , } impl RPM_DATA { pub const ENCODED_LEN : usize = 8usize ; pub const DEFAULT : Self = Self { rpm1 : 0.0_f32 , rpm2 : 0.0_f32 , } ; } impl Default for RPM_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for RPM_DATA { type Message = MavMessage ; const ID : u32 = 226u32 ; const NAME : & 'static str = "RPM" ; const EXTRA_CRC : u8 = 207u8 ; const ENCODED_LEN : usize = 8usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . rpm1 = buf . get_f32_le () ; __struct . rpm2 = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . rpm1) ; __tmp . put_f32_le (self . rpm2) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct WATER_DEPTH_DATA { pub time_boot_ms : u32 , pub lat : i32 , pub lng : i32 , pub alt : f32 , pub roll : f32 , pub pitch : f32 , pub yaw : f32 , pub distance : f32 , pub temperature : f32 , pub id : u8 , pub healthy : u8 , } impl WATER_DEPTH_DATA { pub const ENCODED_LEN : usize = 38usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , lat : 0_i32 , lng : 0_i32 , alt : 0.0_f32 , roll : 0.0_f32 , pitch : 0.0_f32 , yaw : 0.0_f32 , distance : 0.0_f32 , temperature : 0.0_f32 , id : 0_u8 , healthy : 0_u8 , } ; } impl Default for WATER_DEPTH_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for WATER_DEPTH_DATA { type Message = MavMessage ; const ID : u32 = 11038u32 ; const NAME : & 'static str = "WATER_DEPTH" ; const EXTRA_CRC : u8 = 47u8 ; const ENCODED_LEN : usize = 38usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . lat = buf . get_i32_le () ; __struct . lng = buf . get_i32_le () ; __struct . alt = buf . get_f32_le () ; __struct . roll = buf . get_f32_le () ; __struct . pitch = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; __struct . distance = buf . get_f32_le () ; __struct . temperature = buf . get_f32_le () ; __struct . id = buf . get_u8 () ; __struct . healthy = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lng) ; __tmp . put_f32_le (self . alt) ; __tmp . put_f32_le (self . roll) ; __tmp . put_f32_le (self . pitch) ; __tmp . put_f32_le (self . yaw) ; __tmp . put_f32_le (self . distance) ; __tmp . put_f32_le (self . temperature) ; __tmp . put_u8 (self . id) ; __tmp . put_u8 (self . healthy) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct REQUEST_EVENT_DATA { pub first_sequence : u16 , pub last_sequence : u16 , pub target_system : u8 , pub target_component : u8 , } impl REQUEST_EVENT_DATA { pub const ENCODED_LEN : usize = 6usize ; pub const DEFAULT : Self = Self { first_sequence : 0_u16 , last_sequence : 0_u16 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for REQUEST_EVENT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for REQUEST_EVENT_DATA { type Message = MavMessage ; const ID : u32 = 412u32 ; const NAME : & 'static str = "REQUEST_EVENT" ; const EXTRA_CRC : u8 = 33u8 ; const ENCODED_LEN : usize = 6usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . first_sequence = buf . get_u16_le () ; __struct . last_sequence = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . first_sequence) ; __tmp . put_u16_le (self . last_sequence) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct DEBUG_VECT_DATA { pub time_usec : u64 , pub x : f32 , pub y : f32 , pub z : f32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub name : [u8 ; 10] , } impl DEBUG_VECT_DATA { pub const ENCODED_LEN : usize = 30usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , x : 0.0_f32 , y : 0.0_f32 , z : 0.0_f32 , name : [0_u8 ; 10usize] , } ; } impl Default for DEBUG_VECT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for DEBUG_VECT_DATA { type Message = MavMessage ; const ID : u32 = 250u32 ; const NAME : & 'static str = "DEBUG_VECT" ; const EXTRA_CRC : u8 = 49u8 ; const ENCODED_LEN : usize = 30usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . x = buf . get_f32_le () ; __struct . y = buf . get_f32_le () ; __struct . z = buf . get_f32_le () ; for v in & mut __struct . name { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; for val in & self . name { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct REMOTE_LOG_BLOCK_STATUS_DATA { pub seqno : u32 , pub target_system : u8 , pub target_component : u8 , pub status : MavRemoteLogDataBlockStatuses , } impl REMOTE_LOG_BLOCK_STATUS_DATA { pub const ENCODED_LEN : usize = 7usize ; pub const DEFAULT : Self = Self { seqno : 0_u32 , target_system : 0_u8 , target_component : 0_u8 , status : MavRemoteLogDataBlockStatuses :: DEFAULT , } ; } impl Default for REMOTE_LOG_BLOCK_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for REMOTE_LOG_BLOCK_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 185u32 ; const NAME : & 'static str = "REMOTE_LOG_BLOCK_STATUS" ; const EXTRA_CRC : u8 = 186u8 ; const ENCODED_LEN : usize = 7usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . seqno = buf . get_u32_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . status = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavRemoteLogDataBlockStatuses" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . seqno) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . status as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MISSION_REQUEST_INT_DATA { pub seq : u16 , pub target_system : u8 , pub target_component : u8 , } impl MISSION_REQUEST_INT_DATA { pub const ENCODED_LEN : usize = 4usize ; pub const DEFAULT : Self = Self { seq : 0_u16 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for MISSION_REQUEST_INT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MISSION_REQUEST_INT_DATA { type Message = MavMessage ; const ID : u32 = 51u32 ; const NAME : & 'static str = "MISSION_REQUEST_INT" ; const EXTRA_CRC : u8 = 196u8 ; const ENCODED_LEN : usize = 4usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . seq = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . seq) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct NAMED_VALUE_FLOAT_DATA { pub time_boot_ms : u32 , pub value : f32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub name : [u8 ; 10] , } impl NAMED_VALUE_FLOAT_DATA { pub const ENCODED_LEN : usize = 18usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , value : 0.0_f32 , name : [0_u8 ; 10usize] , } ; } impl Default for NAMED_VALUE_FLOAT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for NAMED_VALUE_FLOAT_DATA { type Message = MavMessage ; const ID : u32 = 251u32 ; const NAME : & 'static str = "NAMED_VALUE_FLOAT" ; const EXTRA_CRC : u8 = 170u8 ; const ENCODED_LEN : usize = 18usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . value = buf . get_f32_le () ; for v in & mut __struct . name { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . value) ; for val in & self . name { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct NAV_CONTROLLER_OUTPUT_DATA { pub nav_roll : f32 , pub nav_pitch : f32 , pub alt_error : f32 , pub aspd_error : f32 , pub xtrack_error : f32 , pub nav_bearing : i16 , pub target_bearing : i16 , pub wp_dist : u16 , } impl NAV_CONTROLLER_OUTPUT_DATA { pub const ENCODED_LEN : usize = 26usize ; pub const DEFAULT : Self = Self { nav_roll : 0.0_f32 , nav_pitch : 0.0_f32 , alt_error : 0.0_f32 , aspd_error : 0.0_f32 , xtrack_error : 0.0_f32 , nav_bearing : 0_i16 , target_bearing : 0_i16 , wp_dist : 0_u16 , } ; } impl Default for NAV_CONTROLLER_OUTPUT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for NAV_CONTROLLER_OUTPUT_DATA { type Message = MavMessage ; const ID : u32 = 62u32 ; const NAME : & 'static str = "NAV_CONTROLLER_OUTPUT" ; const EXTRA_CRC : u8 = 183u8 ; const ENCODED_LEN : usize = 26usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . nav_roll = buf . get_f32_le () ; __struct . nav_pitch = buf . get_f32_le () ; __struct . alt_error = buf . get_f32_le () ; __struct . aspd_error = buf . get_f32_le () ; __struct . xtrack_error = buf . get_f32_le () ; __struct . nav_bearing = buf . get_i16_le () ; __struct . target_bearing = buf . get_i16_le () ; __struct . wp_dist = buf . get_u16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . nav_roll) ; __tmp . put_f32_le (self . nav_pitch) ; __tmp . put_f32_le (self . alt_error) ; __tmp . put_f32_le (self . aspd_error) ; __tmp . put_f32_le (self . xtrack_error) ; __tmp . put_i16_le (self . nav_bearing) ; __tmp . put_i16_le (self . target_bearing) ; __tmp . put_u16_le (self . wp_dist) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct AUTOPILOT_VERSION_REQUEST_DATA { pub target_system : u8 , pub target_component : u8 , } impl AUTOPILOT_VERSION_REQUEST_DATA { pub const ENCODED_LEN : usize = 2usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for AUTOPILOT_VERSION_REQUEST_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for AUTOPILOT_VERSION_REQUEST_DATA { type Message = MavMessage ; const ID : u32 = 183u32 ; const NAME : & 'static str = "AUTOPILOT_VERSION_REQUEST" ; const EXTRA_CRC : u8 = 85u8 ; const ENCODED_LEN : usize = 2usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HIL_STATE_DATA { pub time_usec : u64 , pub roll : f32 , pub pitch : f32 , pub yaw : f32 , pub rollspeed : f32 , pub pitchspeed : f32 , pub yawspeed : f32 , pub lat : i32 , pub lon : i32 , pub alt : i32 , pub vx : i16 , pub vy : i16 , pub vz : i16 , pub xacc : i16 , pub yacc : i16 , pub zacc : i16 , } impl HIL_STATE_DATA { pub const ENCODED_LEN : usize = 56usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , roll : 0.0_f32 , pitch : 0.0_f32 , yaw : 0.0_f32 , rollspeed : 0.0_f32 , pitchspeed : 0.0_f32 , yawspeed : 0.0_f32 , lat : 0_i32 , lon : 0_i32 , alt : 0_i32 , vx : 0_i16 , vy : 0_i16 , vz : 0_i16 , xacc : 0_i16 , yacc : 0_i16 , zacc : 0_i16 , } ; } impl Default for HIL_STATE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for HIL_STATE_DATA { type Message = MavMessage ; const ID : u32 = 90u32 ; const NAME : & 'static str = "HIL_STATE" ; const EXTRA_CRC : u8 = 183u8 ; const ENCODED_LEN : usize = 56usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . roll = buf . get_f32_le () ; __struct . pitch = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; __struct . rollspeed = buf . get_f32_le () ; __struct . pitchspeed = buf . get_f32_le () ; __struct . yawspeed = buf . get_f32_le () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . alt = buf . get_i32_le () ; __struct . vx = buf . get_i16_le () ; __struct . vy = buf . get_i16_le () ; __struct . vz = buf . get_i16_le () ; __struct . xacc = buf . get_i16_le () ; __struct . yacc = buf . get_i16_le () ; __struct . zacc = buf . get_i16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . roll) ; __tmp . put_f32_le (self . pitch) ; __tmp . put_f32_le (self . yaw) ; __tmp . put_f32_le (self . rollspeed) ; __tmp . put_f32_le (self . pitchspeed) ; __tmp . put_f32_le (self . yawspeed) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_i32_le (self . alt) ; __tmp . put_i16_le (self . vx) ; __tmp . put_i16_le (self . vy) ; __tmp . put_i16_le (self . vz) ; __tmp . put_i16_le (self . xacc) ; __tmp . put_i16_le (self . yacc) ; __tmp . put_i16_le (self . zacc) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LOG_REQUEST_END_DATA { pub target_system : u8 , pub target_component : u8 , } impl LOG_REQUEST_END_DATA { pub const ENCODED_LEN : usize = 2usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for LOG_REQUEST_END_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for LOG_REQUEST_END_DATA { type Message = MavMessage ; const ID : u32 = 122u32 ; const NAME : & 'static str = "LOG_REQUEST_END" ; const EXTRA_CRC : u8 = 203u8 ; const ENCODED_LEN : usize = 2usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct REMOTE_LOG_DATA_BLOCK_DATA { pub seqno : MavRemoteLogDataBlockCommands , pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub data : [u8 ; 200] , } impl REMOTE_LOG_DATA_BLOCK_DATA { pub const ENCODED_LEN : usize = 206usize ; pub const DEFAULT : Self = Self { seqno : MavRemoteLogDataBlockCommands :: DEFAULT , target_system : 0_u8 , target_component : 0_u8 , data : [0_u8 ; 200usize] , } ; } impl Default for REMOTE_LOG_DATA_BLOCK_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for REMOTE_LOG_DATA_BLOCK_DATA { type Message = MavMessage ; const ID : u32 = 184u32 ; const NAME : & 'static str = "REMOTE_LOG_DATA_BLOCK" ; const EXTRA_CRC : u8 = 159u8 ; const ENCODED_LEN : usize = 206usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u32_le () ; __struct . seqno = FromPrimitive :: from_u32 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavRemoteLogDataBlockCommands" , value : tmp as u32 }) ? ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . data { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . seqno as u32) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . data { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PARAM_MAP_RC_DATA { pub param_value0 : f32 , pub scale : f32 , pub param_value_min : f32 , pub param_value_max : f32 , pub param_index : i16 , pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub param_id : [u8 ; 16] , pub parameter_rc_channel_index : u8 , } impl PARAM_MAP_RC_DATA { pub const ENCODED_LEN : usize = 37usize ; pub const DEFAULT : Self = Self { param_value0 : 0.0_f32 , scale : 0.0_f32 , param_value_min : 0.0_f32 , param_value_max : 0.0_f32 , param_index : 0_i16 , target_system : 0_u8 , target_component : 0_u8 , param_id : [0_u8 ; 16usize] , parameter_rc_channel_index : 0_u8 , } ; } impl Default for PARAM_MAP_RC_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for PARAM_MAP_RC_DATA { type Message = MavMessage ; const ID : u32 = 50u32 ; const NAME : & 'static str = "PARAM_MAP_RC" ; const EXTRA_CRC : u8 = 78u8 ; const ENCODED_LEN : usize = 37usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . param_value0 = buf . get_f32_le () ; __struct . scale = buf . get_f32_le () ; __struct . param_value_min = buf . get_f32_le () ; __struct . param_value_max = buf . get_f32_le () ; __struct . param_index = buf . get_i16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . param_id { let val = buf . get_u8 () ; * v = val ; } __struct . parameter_rc_channel_index = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . param_value0) ; __tmp . put_f32_le (self . scale) ; __tmp . put_f32_le (self . param_value_min) ; __tmp . put_f32_le (self . param_value_max) ; __tmp . put_i16_le (self . param_index) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . param_id { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . parameter_rc_channel_index) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct DEBUG_FLOAT_ARRAY_DATA { pub time_usec : u64 , pub array_id : u16 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub name : [u8 ; 10] , } impl DEBUG_FLOAT_ARRAY_DATA { pub const ENCODED_LEN : usize = 20usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , array_id : 0_u16 , name : [0_u8 ; 10usize] , } ; } impl Default for DEBUG_FLOAT_ARRAY_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for DEBUG_FLOAT_ARRAY_DATA { type Message = MavMessage ; const ID : u32 = 350u32 ; const NAME : & 'static str = "DEBUG_FLOAT_ARRAY" ; const EXTRA_CRC : u8 = 232u8 ; const ENCODED_LEN : usize = 20usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . array_id = buf . get_u16_le () ; for v in & mut __struct . name { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_u16_le (self . array_id) ; for val in & self . name { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct AHRS3_DATA { pub roll : f32 , pub pitch : f32 , pub yaw : f32 , pub altitude : f32 , pub lat : i32 , pub lng : i32 , pub v1 : f32 , pub v2 : f32 , pub v3 : f32 , pub v4 : f32 , } impl AHRS3_DATA { pub const ENCODED_LEN : usize = 40usize ; pub const DEFAULT : Self = Self { roll : 0.0_f32 , pitch : 0.0_f32 , yaw : 0.0_f32 , altitude : 0.0_f32 , lat : 0_i32 , lng : 0_i32 , v1 : 0.0_f32 , v2 : 0.0_f32 , v3 : 0.0_f32 , v4 : 0.0_f32 , } ; } impl Default for AHRS3_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for AHRS3_DATA { type Message = MavMessage ; const ID : u32 = 182u32 ; const NAME : & 'static str = "AHRS3" ; const EXTRA_CRC : u8 = 229u8 ; const ENCODED_LEN : usize = 40usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . roll = buf . get_f32_le () ; __struct . pitch = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; __struct . altitude = buf . get_f32_le () ; __struct . lat = buf . get_i32_le () ; __struct . lng = buf . get_i32_le () ; __struct . v1 = buf . get_f32_le () ; __struct . v2 = buf . get_f32_le () ; __struct . v3 = buf . get_f32_le () ; __struct . v4 = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . roll) ; __tmp . put_f32_le (self . pitch) ; __tmp . put_f32_le (self . yaw) ; __tmp . put_f32_le (self . altitude) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lng) ; __tmp . put_f32_le (self . v1) ; __tmp . put_f32_le (self . v2) ; __tmp . put_f32_le (self . v3) ; __tmp . put_f32_le (self . v4) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct OPEN_DRONE_ID_ARM_STATUS_DATA { pub status : MavOdidArmStatus , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub error : [u8 ; 50] , } impl OPEN_DRONE_ID_ARM_STATUS_DATA { pub const ENCODED_LEN : usize = 51usize ; pub const DEFAULT : Self = Self { status : MavOdidArmStatus :: DEFAULT , error : [0_u8 ; 50usize] , } ; } impl Default for OPEN_DRONE_ID_ARM_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for OPEN_DRONE_ID_ARM_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 12918u32 ; const NAME : & 'static str = "OPEN_DRONE_ID_ARM_STATUS" ; const EXTRA_CRC : u8 = 139u8 ; const ENCODED_LEN : usize = 51usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u8 () ; __struct . status = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidArmStatus" , value : tmp as u32 }) ? ; for v in & mut __struct . error { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . status as u8) ; for val in & self . error { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct OBSTACLE_DISTANCE_3D_DATA { pub time_boot_ms : u32 , pub x : f32 , pub y : f32 , pub z : f32 , pub min_distance : f32 , pub max_distance : f32 , pub obstacle_id : u16 , pub sensor_type : MavDistanceSensor , pub frame : MavFrame , } impl OBSTACLE_DISTANCE_3D_DATA { pub const ENCODED_LEN : usize = 28usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , x : 0.0_f32 , y : 0.0_f32 , z : 0.0_f32 , min_distance : 0.0_f32 , max_distance : 0.0_f32 , obstacle_id : 0_u16 , sensor_type : MavDistanceSensor :: DEFAULT , frame : MavFrame :: DEFAULT , } ; } impl Default for OBSTACLE_DISTANCE_3D_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for OBSTACLE_DISTANCE_3D_DATA { type Message = MavMessage ; const ID : u32 = 11037u32 ; const NAME : & 'static str = "OBSTACLE_DISTANCE_3D" ; const EXTRA_CRC : u8 = 130u8 ; const ENCODED_LEN : usize = 28usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . x = buf . get_f32_le () ; __struct . y = buf . get_f32_le () ; __struct . z = buf . get_f32_le () ; __struct . min_distance = buf . get_f32_le () ; __struct . max_distance = buf . get_f32_le () ; __struct . obstacle_id = buf . get_u16_le () ; let tmp = buf . get_u8 () ; __struct . sensor_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavDistanceSensor" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . frame = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavFrame" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; __tmp . put_f32_le (self . min_distance) ; __tmp . put_f32_le (self . max_distance) ; __tmp . put_u16_le (self . obstacle_id) ; __tmp . put_u8 (self . sensor_type as u8) ; __tmp . put_u8 (self . frame as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SUPPORTED_TUNES_DATA { pub format : TuneFormat , pub target_system : u8 , pub target_component : u8 , } impl SUPPORTED_TUNES_DATA { pub const ENCODED_LEN : usize = 6usize ; pub const DEFAULT : Self = Self { format : TuneFormat :: DEFAULT , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for SUPPORTED_TUNES_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SUPPORTED_TUNES_DATA { type Message = MavMessage ; const ID : u32 = 401u32 ; const NAME : & 'static str = "SUPPORTED_TUNES" ; const EXTRA_CRC : u8 = 183u8 ; const ENCODED_LEN : usize = 6usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u32_le () ; __struct . format = TuneFormat :: from_bits (tmp & TuneFormat :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "TuneFormat" , value : tmp as u32 }) ? ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . format . bits ()) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SIMSTATE_DATA { pub roll : f32 , pub pitch : f32 , pub yaw : f32 , pub xacc : f32 , pub yacc : f32 , pub zacc : f32 , pub xgyro : f32 , pub ygyro : f32 , pub zgyro : f32 , pub lat : i32 , pub lng : i32 , } impl SIMSTATE_DATA { pub const ENCODED_LEN : usize = 44usize ; pub const DEFAULT : Self = Self { roll : 0.0_f32 , pitch : 0.0_f32 , yaw : 0.0_f32 , xacc : 0.0_f32 , yacc : 0.0_f32 , zacc : 0.0_f32 , xgyro : 0.0_f32 , ygyro : 0.0_f32 , zgyro : 0.0_f32 , lat : 0_i32 , lng : 0_i32 , } ; } impl Default for SIMSTATE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SIMSTATE_DATA { type Message = MavMessage ; const ID : u32 = 164u32 ; const NAME : & 'static str = "SIMSTATE" ; const EXTRA_CRC : u8 = 154u8 ; const ENCODED_LEN : usize = 44usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . roll = buf . get_f32_le () ; __struct . pitch = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; __struct . xacc = buf . get_f32_le () ; __struct . yacc = buf . get_f32_le () ; __struct . zacc = buf . get_f32_le () ; __struct . xgyro = buf . get_f32_le () ; __struct . ygyro = buf . get_f32_le () ; __struct . zgyro = buf . get_f32_le () ; __struct . lat = buf . get_i32_le () ; __struct . lng = buf . get_i32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . roll) ; __tmp . put_f32_le (self . pitch) ; __tmp . put_f32_le (self . yaw) ; __tmp . put_f32_le (self . xacc) ; __tmp . put_f32_le (self . yacc) ; __tmp . put_f32_le (self . zacc) ; __tmp . put_f32_le (self . xgyro) ; __tmp . put_f32_le (self . ygyro) ; __tmp . put_f32_le (self . zgyro) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lng) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CANFD_FRAME_DATA { pub id : u32 , pub target_system : u8 , pub target_component : u8 , pub bus : u8 , pub len : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub data : [u8 ; 64] , } impl CANFD_FRAME_DATA { pub const ENCODED_LEN : usize = 72usize ; pub const DEFAULT : Self = Self { id : 0_u32 , target_system : 0_u8 , target_component : 0_u8 , bus : 0_u8 , len : 0_u8 , data : [0_u8 ; 64usize] , } ; } impl Default for CANFD_FRAME_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CANFD_FRAME_DATA { type Message = MavMessage ; const ID : u32 = 387u32 ; const NAME : & 'static str = "CANFD_FRAME" ; const EXTRA_CRC : u8 = 4u8 ; const ENCODED_LEN : usize = 72usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . id = buf . get_u32_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . bus = buf . get_u8 () ; __struct . len = buf . get_u8 () ; for v in & mut __struct . data { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . id) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . bus) ; __tmp . put_u8 (self . len) ; for val in & self . data { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MISSION_COUNT_DATA { pub count : u16 , pub target_system : u8 , pub target_component : u8 , } impl MISSION_COUNT_DATA { pub const ENCODED_LEN : usize = 4usize ; pub const DEFAULT : Self = Self { count : 0_u16 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for MISSION_COUNT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MISSION_COUNT_DATA { type Message = MavMessage ; const ID : u32 = 44u32 ; const NAME : & 'static str = "MISSION_COUNT" ; const EXTRA_CRC : u8 = 221u8 ; const ENCODED_LEN : usize = 4usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . count = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . count) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct AUTOPILOT_VERSION_DATA { pub capabilities : MavProtocolCapability , pub uid : u64 , pub flight_sw_version : u32 , pub middleware_sw_version : u32 , pub os_sw_version : u32 , pub board_version : u32 , pub vendor_id : u16 , pub product_id : u16 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub flight_custom_version : [u8 ; 8] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub middleware_custom_version : [u8 ; 8] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub os_custom_version : [u8 ; 8] , } impl AUTOPILOT_VERSION_DATA { pub const ENCODED_LEN : usize = 60usize ; pub const DEFAULT : Self = Self { capabilities : MavProtocolCapability :: DEFAULT , uid : 0_u64 , flight_sw_version : 0_u32 , middleware_sw_version : 0_u32 , os_sw_version : 0_u32 , board_version : 0_u32 , vendor_id : 0_u16 , product_id : 0_u16 , flight_custom_version : [0_u8 ; 8usize] , middleware_custom_version : [0_u8 ; 8usize] , os_custom_version : [0_u8 ; 8usize] , } ; } impl Default for AUTOPILOT_VERSION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for AUTOPILOT_VERSION_DATA { type Message = MavMessage ; const ID : u32 = 148u32 ; const NAME : & 'static str = "AUTOPILOT_VERSION" ; const EXTRA_CRC : u8 = 178u8 ; const ENCODED_LEN : usize = 60usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u64_le () ; __struct . capabilities = MavProtocolCapability :: from_bits (tmp & MavProtocolCapability :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "MavProtocolCapability" , value : tmp as u32 }) ? ; __struct . uid = buf . get_u64_le () ; __struct . flight_sw_version = buf . get_u32_le () ; __struct . middleware_sw_version = buf . get_u32_le () ; __struct . os_sw_version = buf . get_u32_le () ; __struct . board_version = buf . get_u32_le () ; __struct . vendor_id = buf . get_u16_le () ; __struct . product_id = buf . get_u16_le () ; for v in & mut __struct . flight_custom_version { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . middleware_custom_version { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . os_custom_version { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . capabilities . bits ()) ; __tmp . put_u64_le (self . uid) ; __tmp . put_u32_le (self . flight_sw_version) ; __tmp . put_u32_le (self . middleware_sw_version) ; __tmp . put_u32_le (self . os_sw_version) ; __tmp . put_u32_le (self . board_version) ; __tmp . put_u16_le (self . vendor_id) ; __tmp . put_u16_le (self . product_id) ; for val in & self . flight_custom_version { __tmp . put_u8 (* val) ; } for val in & self . middleware_custom_version { __tmp . put_u8 (* val) ; } for val in & self . os_custom_version { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct OPEN_DRONE_ID_MESSAGE_PACK_DATA { pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub id_or_mac : [u8 ; 20] , pub single_message_size : u8 , pub msg_pack_size : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub messages : [u8 ; 225] , } impl OPEN_DRONE_ID_MESSAGE_PACK_DATA { pub const ENCODED_LEN : usize = 249usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , id_or_mac : [0_u8 ; 20usize] , single_message_size : 0_u8 , msg_pack_size : 0_u8 , messages : [0_u8 ; 225usize] , } ; } impl Default for OPEN_DRONE_ID_MESSAGE_PACK_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for OPEN_DRONE_ID_MESSAGE_PACK_DATA { type Message = MavMessage ; const ID : u32 = 12915u32 ; const NAME : & 'static str = "OPEN_DRONE_ID_MESSAGE_PACK" ; const EXTRA_CRC : u8 = 94u8 ; const ENCODED_LEN : usize = 249usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . id_or_mac { let val = buf . get_u8 () ; * v = val ; } __struct . single_message_size = buf . get_u8 () ; __struct . msg_pack_size = buf . get_u8 () ; for v in & mut __struct . messages { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . id_or_mac { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . single_message_size) ; __tmp . put_u8 (self . msg_pack_size) ; for val in & self . messages { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LOGGING_DATA_ACKED_DATA { pub sequence : u16 , pub target_system : u8 , pub target_component : u8 , pub length : u8 , pub first_message_offset : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub data : [u8 ; 249] , } impl LOGGING_DATA_ACKED_DATA { pub const ENCODED_LEN : usize = 255usize ; pub const DEFAULT : Self = Self { sequence : 0_u16 , target_system : 0_u8 , target_component : 0_u8 , length : 0_u8 , first_message_offset : 0_u8 , data : [0_u8 ; 249usize] , } ; } impl Default for LOGGING_DATA_ACKED_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for LOGGING_DATA_ACKED_DATA { type Message = MavMessage ; const ID : u32 = 267u32 ; const NAME : & 'static str = "LOGGING_DATA_ACKED" ; const EXTRA_CRC : u8 = 35u8 ; const ENCODED_LEN : usize = 255usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . sequence = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . length = buf . get_u8 () ; __struct . first_message_offset = buf . get_u8 () ; for v in & mut __struct . data { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . sequence) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . length) ; __tmp . put_u8 (self . first_message_offset) ; for val in & self . data { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GPS_GLOBAL_ORIGIN_DATA { pub latitude : i32 , pub longitude : i32 , pub altitude : i32 , } impl GPS_GLOBAL_ORIGIN_DATA { pub const ENCODED_LEN : usize = 12usize ; pub const DEFAULT : Self = Self { latitude : 0_i32 , longitude : 0_i32 , altitude : 0_i32 , } ; } impl Default for GPS_GLOBAL_ORIGIN_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GPS_GLOBAL_ORIGIN_DATA { type Message = MavMessage ; const ID : u32 = 49u32 ; const NAME : & 'static str = "GPS_GLOBAL_ORIGIN" ; const EXTRA_CRC : u8 = 39u8 ; const ENCODED_LEN : usize = 12usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . latitude = buf . get_i32_le () ; __struct . longitude = buf . get_i32_le () ; __struct . altitude = buf . get_i32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . latitude) ; __tmp . put_i32_le (self . longitude) ; __tmp . put_i32_le (self . altitude) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GIMBAL_MANAGER_STATUS_DATA { pub time_boot_ms : u32 , pub flags : GimbalManagerFlags , pub gimbal_device_id : u8 , pub primary_control_sysid : u8 , pub primary_control_compid : u8 , pub secondary_control_sysid : u8 , pub secondary_control_compid : u8 , } impl GIMBAL_MANAGER_STATUS_DATA { pub const ENCODED_LEN : usize = 13usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , flags : GimbalManagerFlags :: DEFAULT , gimbal_device_id : 0_u8 , primary_control_sysid : 0_u8 , primary_control_compid : 0_u8 , secondary_control_sysid : 0_u8 , secondary_control_compid : 0_u8 , } ; } impl Default for GIMBAL_MANAGER_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GIMBAL_MANAGER_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 281u32 ; const NAME : & 'static str = "GIMBAL_MANAGER_STATUS" ; const EXTRA_CRC : u8 = 48u8 ; const ENCODED_LEN : usize = 13usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; let tmp = buf . get_u32_le () ; __struct . flags = FromPrimitive :: from_u32 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "GimbalManagerFlags" , value : tmp as u32 }) ? ; __struct . gimbal_device_id = buf . get_u8 () ; __struct . primary_control_sysid = buf . get_u8 () ; __struct . primary_control_compid = buf . get_u8 () ; __struct . secondary_control_sysid = buf . get_u8 () ; __struct . secondary_control_compid = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_u32_le (self . flags as u32) ; __tmp . put_u8 (self . gimbal_device_id) ; __tmp . put_u8 (self . primary_control_sysid) ; __tmp . put_u8 (self . primary_control_compid) ; __tmp . put_u8 (self . secondary_control_sysid) ; __tmp . put_u8 (self . secondary_control_compid) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MISSION_ITEM_DATA { pub param1 : f32 , pub param2 : f32 , pub param3 : f32 , pub param4 : f32 , pub x : f32 , pub y : f32 , pub z : f32 , pub seq : u16 , pub command : MavCmd , pub target_system : u8 , pub target_component : u8 , pub frame : MavFrame , pub current : u8 , pub autocontinue : u8 , } impl MISSION_ITEM_DATA { pub const ENCODED_LEN : usize = 37usize ; pub const DEFAULT : Self = Self { param1 : 0.0_f32 , param2 : 0.0_f32 , param3 : 0.0_f32 , param4 : 0.0_f32 , x : 0.0_f32 , y : 0.0_f32 , z : 0.0_f32 , seq : 0_u16 , command : MavCmd :: DEFAULT , target_system : 0_u8 , target_component : 0_u8 , frame : MavFrame :: DEFAULT , current : 0_u8 , autocontinue : 0_u8 , } ; } impl Default for MISSION_ITEM_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MISSION_ITEM_DATA { type Message = MavMessage ; const ID : u32 = 39u32 ; const NAME : & 'static str = "MISSION_ITEM" ; const EXTRA_CRC : u8 = 254u8 ; const ENCODED_LEN : usize = 37usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . param1 = buf . get_f32_le () ; __struct . param2 = buf . get_f32_le () ; __struct . param3 = buf . get_f32_le () ; __struct . param4 = buf . get_f32_le () ; __struct . x = buf . get_f32_le () ; __struct . y = buf . get_f32_le () ; __struct . z = buf . get_f32_le () ; __struct . seq = buf . get_u16_le () ; let tmp = buf . get_u16_le () ; __struct . command = FromPrimitive :: from_u16 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavCmd" , value : tmp as u32 }) ? ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . frame = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavFrame" , value : tmp as u32 }) ? ; __struct . current = buf . get_u8 () ; __struct . autocontinue = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . param1) ; __tmp . put_f32_le (self . param2) ; __tmp . put_f32_le (self . param3) ; __tmp . put_f32_le (self . param4) ; __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; __tmp . put_u16_le (self . seq) ; __tmp . put_u16_le (self . command as u16) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . frame as u8) ; __tmp . put_u8 (self . current) ; __tmp . put_u8 (self . autocontinue) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CUBEPILOT_FIRMWARE_UPDATE_START_DATA { pub size : u32 , pub crc : u32 , pub target_system : u8 , pub target_component : u8 , } impl CUBEPILOT_FIRMWARE_UPDATE_START_DATA { pub const ENCODED_LEN : usize = 10usize ; pub const DEFAULT : Self = Self { size : 0_u32 , crc : 0_u32 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for CUBEPILOT_FIRMWARE_UPDATE_START_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CUBEPILOT_FIRMWARE_UPDATE_START_DATA { type Message = MavMessage ; const ID : u32 = 50004u32 ; const NAME : & 'static str = "CUBEPILOT_FIRMWARE_UPDATE_START" ; const EXTRA_CRC : u8 = 240u8 ; const ENCODED_LEN : usize = 10usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . size = buf . get_u32_le () ; __struct . crc = buf . get_u32_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . size) ; __tmp . put_u32_le (self . crc) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct AP_ADC_DATA { pub adc1 : u16 , pub adc2 : u16 , pub adc3 : u16 , pub adc4 : u16 , pub adc5 : u16 , pub adc6 : u16 , } impl AP_ADC_DATA { pub const ENCODED_LEN : usize = 12usize ; pub const DEFAULT : Self = Self { adc1 : 0_u16 , adc2 : 0_u16 , adc3 : 0_u16 , adc4 : 0_u16 , adc5 : 0_u16 , adc6 : 0_u16 , } ; } impl Default for AP_ADC_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for AP_ADC_DATA { type Message = MavMessage ; const ID : u32 = 153u32 ; const NAME : & 'static str = "AP_ADC" ; const EXTRA_CRC : u8 = 188u8 ; const ENCODED_LEN : usize = 12usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . adc1 = buf . get_u16_le () ; __struct . adc2 = buf . get_u16_le () ; __struct . adc3 = buf . get_u16_le () ; __struct . adc4 = buf . get_u16_le () ; __struct . adc5 = buf . get_u16_le () ; __struct . adc6 = buf . get_u16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . adc1) ; __tmp . put_u16_le (self . adc2) ; __tmp . put_u16_le (self . adc3) ; __tmp . put_u16_le (self . adc4) ; __tmp . put_u16_le (self . adc5) ; __tmp . put_u16_le (self . adc6) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LINK_NODE_STATUS_DATA { pub timestamp : u64 , pub tx_rate : u32 , pub rx_rate : u32 , pub messages_sent : u32 , pub messages_received : u32 , pub messages_lost : u32 , pub rx_parse_err : u16 , pub tx_overflows : u16 , pub rx_overflows : u16 , pub tx_buf : u8 , pub rx_buf : u8 , } impl LINK_NODE_STATUS_DATA { pub const ENCODED_LEN : usize = 36usize ; pub const DEFAULT : Self = Self { timestamp : 0_u64 , tx_rate : 0_u32 , rx_rate : 0_u32 , messages_sent : 0_u32 , messages_received : 0_u32 , messages_lost : 0_u32 , rx_parse_err : 0_u16 , tx_overflows : 0_u16 , rx_overflows : 0_u16 , tx_buf : 0_u8 , rx_buf : 0_u8 , } ; } impl Default for LINK_NODE_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for LINK_NODE_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 8u32 ; const NAME : & 'static str = "LINK_NODE_STATUS" ; const EXTRA_CRC : u8 = 117u8 ; const ENCODED_LEN : usize = 36usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . timestamp = buf . get_u64_le () ; __struct . tx_rate = buf . get_u32_le () ; __struct . rx_rate = buf . get_u32_le () ; __struct . messages_sent = buf . get_u32_le () ; __struct . messages_received = buf . get_u32_le () ; __struct . messages_lost = buf . get_u32_le () ; __struct . rx_parse_err = buf . get_u16_le () ; __struct . tx_overflows = buf . get_u16_le () ; __struct . rx_overflows = buf . get_u16_le () ; __struct . tx_buf = buf . get_u8 () ; __struct . rx_buf = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . timestamp) ; __tmp . put_u32_le (self . tx_rate) ; __tmp . put_u32_le (self . rx_rate) ; __tmp . put_u32_le (self . messages_sent) ; __tmp . put_u32_le (self . messages_received) ; __tmp . put_u32_le (self . messages_lost) ; __tmp . put_u16_le (self . rx_parse_err) ; __tmp . put_u16_le (self . tx_overflows) ; __tmp . put_u16_le (self . rx_overflows) ; __tmp . put_u8 (self . tx_buf) ; __tmp . put_u8 (self . rx_buf) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PARAM_EXT_ACK_DATA { # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub param_id : [u8 ; 16] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub param_value : [u8 ; 128] , pub param_type : MavParamExtType , pub param_result : ParamAck , } impl PARAM_EXT_ACK_DATA { pub const ENCODED_LEN : usize = 146usize ; pub const DEFAULT : Self = Self { param_id : [0_u8 ; 16usize] , param_value : [0_u8 ; 128usize] , param_type : MavParamExtType :: DEFAULT , param_result : ParamAck :: DEFAULT , } ; } impl Default for PARAM_EXT_ACK_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for PARAM_EXT_ACK_DATA { type Message = MavMessage ; const ID : u32 = 324u32 ; const NAME : & 'static str = "PARAM_EXT_ACK" ; const EXTRA_CRC : u8 = 132u8 ; const ENCODED_LEN : usize = 146usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; for v in & mut __struct . param_id { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . param_value { let val = buf . get_u8 () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . param_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavParamExtType" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . param_result = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "ParamAck" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; for val in & self . param_id { __tmp . put_u8 (* val) ; } for val in & self . param_value { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . param_type as u8) ; __tmp . put_u8 (self . param_result as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct VICON_POSITION_ESTIMATE_DATA { pub usec : u64 , pub x : f32 , pub y : f32 , pub z : f32 , pub roll : f32 , pub pitch : f32 , pub yaw : f32 , } impl VICON_POSITION_ESTIMATE_DATA { pub const ENCODED_LEN : usize = 32usize ; pub const DEFAULT : Self = Self { usec : 0_u64 , x : 0.0_f32 , y : 0.0_f32 , z : 0.0_f32 , roll : 0.0_f32 , pitch : 0.0_f32 , yaw : 0.0_f32 , } ; } impl Default for VICON_POSITION_ESTIMATE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for VICON_POSITION_ESTIMATE_DATA { type Message = MavMessage ; const ID : u32 = 104u32 ; const NAME : & 'static str = "VICON_POSITION_ESTIMATE" ; const EXTRA_CRC : u8 = 56u8 ; const ENCODED_LEN : usize = 32usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . usec = buf . get_u64_le () ; __struct . x = buf . get_f32_le () ; __struct . y = buf . get_f32_le () ; __struct . z = buf . get_f32_le () ; __struct . roll = buf . get_f32_le () ; __struct . pitch = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . usec) ; __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; __tmp . put_f32_le (self . roll) ; __tmp . put_f32_le (self . pitch) ; __tmp . put_f32_le (self . yaw) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CAMERA_FOV_STATUS_DATA { pub time_boot_ms : u32 , pub lat_camera : i32 , pub lon_camera : i32 , pub alt_camera : i32 , pub lat_image : i32 , pub lon_image : i32 , pub alt_image : i32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub q : [f32 ; 4] , pub hfov : f32 , pub vfov : f32 , } impl CAMERA_FOV_STATUS_DATA { pub const ENCODED_LEN : usize = 52usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , lat_camera : 0_i32 , lon_camera : 0_i32 , alt_camera : 0_i32 , lat_image : 0_i32 , lon_image : 0_i32 , alt_image : 0_i32 , q : [0.0_f32 ; 4usize] , hfov : 0.0_f32 , vfov : 0.0_f32 , } ; } impl Default for CAMERA_FOV_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CAMERA_FOV_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 271u32 ; const NAME : & 'static str = "CAMERA_FOV_STATUS" ; const EXTRA_CRC : u8 = 22u8 ; const ENCODED_LEN : usize = 52usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . lat_camera = buf . get_i32_le () ; __struct . lon_camera = buf . get_i32_le () ; __struct . alt_camera = buf . get_i32_le () ; __struct . lat_image = buf . get_i32_le () ; __struct . lon_image = buf . get_i32_le () ; __struct . alt_image = buf . get_i32_le () ; for v in & mut __struct . q { let val = buf . get_f32_le () ; * v = val ; } __struct . hfov = buf . get_f32_le () ; __struct . vfov = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_i32_le (self . lat_camera) ; __tmp . put_i32_le (self . lon_camera) ; __tmp . put_i32_le (self . alt_camera) ; __tmp . put_i32_le (self . lat_image) ; __tmp . put_i32_le (self . lon_image) ; __tmp . put_i32_le (self . alt_image) ; for val in & self . q { __tmp . put_f32_le (* val) ; } __tmp . put_f32_le (self . hfov) ; __tmp . put_f32_le (self . vfov) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct TERRAIN_REPORT_DATA { pub lat : i32 , pub lon : i32 , pub terrain_height : f32 , pub current_height : f32 , pub spacing : u16 , pub pending : u16 , pub loaded : u16 , } impl TERRAIN_REPORT_DATA { pub const ENCODED_LEN : usize = 22usize ; pub const DEFAULT : Self = Self { lat : 0_i32 , lon : 0_i32 , terrain_height : 0.0_f32 , current_height : 0.0_f32 , spacing : 0_u16 , pending : 0_u16 , loaded : 0_u16 , } ; } impl Default for TERRAIN_REPORT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for TERRAIN_REPORT_DATA { type Message = MavMessage ; const ID : u32 = 136u32 ; const NAME : & 'static str = "TERRAIN_REPORT" ; const EXTRA_CRC : u8 = 1u8 ; const ENCODED_LEN : usize = 22usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . terrain_height = buf . get_f32_le () ; __struct . current_height = buf . get_f32_le () ; __struct . spacing = buf . get_u16_le () ; __struct . pending = buf . get_u16_le () ; __struct . loaded = buf . get_u16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_f32_le (self . terrain_height) ; __tmp . put_f32_le (self . current_height) ; __tmp . put_u16_le (self . spacing) ; __tmp . put_u16_le (self . pending) ; __tmp . put_u16_le (self . loaded) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ACTUATOR_OUTPUT_STATUS_DATA { pub time_usec : u64 , pub active : u32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub actuator : [f32 ; 32] , } impl ACTUATOR_OUTPUT_STATUS_DATA { pub const ENCODED_LEN : usize = 140usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , active : 0_u32 , actuator : [0.0_f32 ; 32usize] , } ; } impl Default for ACTUATOR_OUTPUT_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ACTUATOR_OUTPUT_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 375u32 ; const NAME : & 'static str = "ACTUATOR_OUTPUT_STATUS" ; const EXTRA_CRC : u8 = 251u8 ; const ENCODED_LEN : usize = 140usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . active = buf . get_u32_le () ; for v in & mut __struct . actuator { let val = buf . get_f32_le () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_u32_le (self . active) ; for val in & self . actuator { __tmp . put_f32_le (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MESSAGE_INTERVAL_DATA { pub interval_us : i32 , pub message_id : u16 , } impl MESSAGE_INTERVAL_DATA { pub const ENCODED_LEN : usize = 6usize ; pub const DEFAULT : Self = Self { interval_us : 0_i32 , message_id : 0_u16 , } ; } impl Default for MESSAGE_INTERVAL_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MESSAGE_INTERVAL_DATA { type Message = MavMessage ; const ID : u32 = 244u32 ; const NAME : & 'static str = "MESSAGE_INTERVAL" ; const EXTRA_CRC : u8 = 95u8 ; const ENCODED_LEN : usize = 6usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . interval_us = buf . get_i32_le () ; __struct . message_id = buf . get_u16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . interval_us) ; __tmp . put_u16_le (self . message_id) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ONBOARD_COMPUTER_STATUS_DATA { pub time_usec : u64 , pub uptime : u32 , pub ram_usage : u32 , pub ram_total : u32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub storage_type : [u32 ; 4] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub storage_usage : [u32 ; 4] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub storage_total : [u32 ; 4] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub link_type : [u32 ; 6] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub link_tx_rate : [u32 ; 6] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub link_rx_rate : [u32 ; 6] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub link_tx_max : [u32 ; 6] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub link_rx_max : [u32 ; 6] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub fan_speed : [i16 ; 4] , pub mavtype : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub cpu_cores : [u8 ; 8] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub cpu_combined : [u8 ; 10] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub gpu_cores : [u8 ; 4] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub gpu_combined : [u8 ; 10] , pub temperature_board : i8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub temperature_core : [i8 ; 8] , } impl ONBOARD_COMPUTER_STATUS_DATA { pub const ENCODED_LEN : usize = 238usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , uptime : 0_u32 , ram_usage : 0_u32 , ram_total : 0_u32 , storage_type : [0_u32 ; 4usize] , storage_usage : [0_u32 ; 4usize] , storage_total : [0_u32 ; 4usize] , link_type : [0_u32 ; 6usize] , link_tx_rate : [0_u32 ; 6usize] , link_rx_rate : [0_u32 ; 6usize] , link_tx_max : [0_u32 ; 6usize] , link_rx_max : [0_u32 ; 6usize] , fan_speed : [0_i16 ; 4usize] , mavtype : 0_u8 , cpu_cores : [0_u8 ; 8usize] , cpu_combined : [0_u8 ; 10usize] , gpu_cores : [0_u8 ; 4usize] , gpu_combined : [0_u8 ; 10usize] , temperature_board : 0_i8 , temperature_core : [0_i8 ; 8usize] , } ; } impl Default for ONBOARD_COMPUTER_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ONBOARD_COMPUTER_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 390u32 ; const NAME : & 'static str = "ONBOARD_COMPUTER_STATUS" ; const EXTRA_CRC : u8 = 156u8 ; const ENCODED_LEN : usize = 238usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . uptime = buf . get_u32_le () ; __struct . ram_usage = buf . get_u32_le () ; __struct . ram_total = buf . get_u32_le () ; for v in & mut __struct . storage_type { let val = buf . get_u32_le () ; * v = val ; } for v in & mut __struct . storage_usage { let val = buf . get_u32_le () ; * v = val ; } for v in & mut __struct . storage_total { let val = buf . get_u32_le () ; * v = val ; } for v in & mut __struct . link_type { let val = buf . get_u32_le () ; * v = val ; } for v in & mut __struct . link_tx_rate { let val = buf . get_u32_le () ; * v = val ; } for v in & mut __struct . link_rx_rate { let val = buf . get_u32_le () ; * v = val ; } for v in & mut __struct . link_tx_max { let val = buf . get_u32_le () ; * v = val ; } for v in & mut __struct . link_rx_max { let val = buf . get_u32_le () ; * v = val ; } for v in & mut __struct . fan_speed { let val = buf . get_i16_le () ; * v = val ; } __struct . mavtype = buf . get_u8 () ; for v in & mut __struct . cpu_cores { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . cpu_combined { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . gpu_cores { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . gpu_combined { let val = buf . get_u8 () ; * v = val ; } __struct . temperature_board = buf . get_i8 () ; for v in & mut __struct . temperature_core { let val = buf . get_i8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_u32_le (self . uptime) ; __tmp . put_u32_le (self . ram_usage) ; __tmp . put_u32_le (self . ram_total) ; for val in & self . storage_type { __tmp . put_u32_le (* val) ; } for val in & self . storage_usage { __tmp . put_u32_le (* val) ; } for val in & self . storage_total { __tmp . put_u32_le (* val) ; } for val in & self . link_type { __tmp . put_u32_le (* val) ; } for val in & self . link_tx_rate { __tmp . put_u32_le (* val) ; } for val in & self . link_rx_rate { __tmp . put_u32_le (* val) ; } for val in & self . link_tx_max { __tmp . put_u32_le (* val) ; } for val in & self . link_rx_max { __tmp . put_u32_le (* val) ; } for val in & self . fan_speed { __tmp . put_i16_le (* val) ; } __tmp . put_u8 (self . mavtype) ; for val in & self . cpu_cores { __tmp . put_u8 (* val) ; } for val in & self . cpu_combined { __tmp . put_u8 (* val) ; } for val in & self . gpu_cores { __tmp . put_u8 (* val) ; } for val in & self . gpu_combined { __tmp . put_u8 (* val) ; } __tmp . put_i8 (self . temperature_board) ; for val in & self . temperature_core { __tmp . put_i8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct UAVIONIX_ADSB_OUT_DYNAMIC_DATA { pub utcTime : u32 , pub gpsLat : i32 , pub gpsLon : i32 , pub gpsAlt : i32 , pub baroAltMSL : i32 , pub accuracyHor : u32 , pub accuracyVert : u16 , pub accuracyVel : u16 , pub velVert : i16 , pub velNS : i16 , pub VelEW : i16 , pub state : UavionixAdsbOutDynamicState , pub squawk : u16 , pub gpsFix : UavionixAdsbOutDynamicGpsFix , pub numSats : u8 , pub emergencyStatus : UavionixAdsbEmergencyStatus , } impl UAVIONIX_ADSB_OUT_DYNAMIC_DATA { pub const ENCODED_LEN : usize = 41usize ; pub const DEFAULT : Self = Self { utcTime : 0_u32 , gpsLat : 0_i32 , gpsLon : 0_i32 , gpsAlt : 0_i32 , baroAltMSL : 0_i32 , accuracyHor : 0_u32 , accuracyVert : 0_u16 , accuracyVel : 0_u16 , velVert : 0_i16 , velNS : 0_i16 , VelEW : 0_i16 , state : UavionixAdsbOutDynamicState :: DEFAULT , squawk : 0_u16 , gpsFix : UavionixAdsbOutDynamicGpsFix :: DEFAULT , numSats : 0_u8 , emergencyStatus : UavionixAdsbEmergencyStatus :: DEFAULT , } ; } impl Default for UAVIONIX_ADSB_OUT_DYNAMIC_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for UAVIONIX_ADSB_OUT_DYNAMIC_DATA { type Message = MavMessage ; const ID : u32 = 10002u32 ; const NAME : & 'static str = "UAVIONIX_ADSB_OUT_DYNAMIC" ; const EXTRA_CRC : u8 = 186u8 ; const ENCODED_LEN : usize = 41usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . utcTime = buf . get_u32_le () ; __struct . gpsLat = buf . get_i32_le () ; __struct . gpsLon = buf . get_i32_le () ; __struct . gpsAlt = buf . get_i32_le () ; __struct . baroAltMSL = buf . get_i32_le () ; __struct . accuracyHor = buf . get_u32_le () ; __struct . accuracyVert = buf . get_u16_le () ; __struct . accuracyVel = buf . get_u16_le () ; __struct . velVert = buf . get_i16_le () ; __struct . velNS = buf . get_i16_le () ; __struct . VelEW = buf . get_i16_le () ; let tmp = buf . get_u16_le () ; __struct . state = UavionixAdsbOutDynamicState :: from_bits (tmp & UavionixAdsbOutDynamicState :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "UavionixAdsbOutDynamicState" , value : tmp as u32 }) ? ; __struct . squawk = buf . get_u16_le () ; let tmp = buf . get_u8 () ; __struct . gpsFix = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "UavionixAdsbOutDynamicGpsFix" , value : tmp as u32 }) ? ; __struct . numSats = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . emergencyStatus = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "UavionixAdsbEmergencyStatus" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . utcTime) ; __tmp . put_i32_le (self . gpsLat) ; __tmp . put_i32_le (self . gpsLon) ; __tmp . put_i32_le (self . gpsAlt) ; __tmp . put_i32_le (self . baroAltMSL) ; __tmp . put_u32_le (self . accuracyHor) ; __tmp . put_u16_le (self . accuracyVert) ; __tmp . put_u16_le (self . accuracyVel) ; __tmp . put_i16_le (self . velVert) ; __tmp . put_i16_le (self . velNS) ; __tmp . put_i16_le (self . VelEW) ; __tmp . put_u16_le (self . state . bits ()) ; __tmp . put_u16_le (self . squawk) ; __tmp . put_u8 (self . gpsFix as u8) ; __tmp . put_u8 (self . numSats) ; __tmp . put_u8 (self . emergencyStatus as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HERELINK_VIDEO_STREAM_INFORMATION_DATA { pub framerate : f32 , pub bitrate : u32 , pub resolution_h : u16 , pub resolution_v : u16 , pub rotation : u16 , pub camera_id : u8 , pub status : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub uri : [u8 ; 230] , } impl HERELINK_VIDEO_STREAM_INFORMATION_DATA { pub const ENCODED_LEN : usize = 246usize ; pub const DEFAULT : Self = Self { framerate : 0.0_f32 , bitrate : 0_u32 , resolution_h : 0_u16 , resolution_v : 0_u16 , rotation : 0_u16 , camera_id : 0_u8 , status : 0_u8 , uri : [0_u8 ; 230usize] , } ; } impl Default for HERELINK_VIDEO_STREAM_INFORMATION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for HERELINK_VIDEO_STREAM_INFORMATION_DATA { type Message = MavMessage ; const ID : u32 = 50002u32 ; const NAME : & 'static str = "HERELINK_VIDEO_STREAM_INFORMATION" ; const EXTRA_CRC : u8 = 181u8 ; const ENCODED_LEN : usize = 246usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . framerate = buf . get_f32_le () ; __struct . bitrate = buf . get_u32_le () ; __struct . resolution_h = buf . get_u16_le () ; __struct . resolution_v = buf . get_u16_le () ; __struct . rotation = buf . get_u16_le () ; __struct . camera_id = buf . get_u8 () ; __struct . status = buf . get_u8 () ; for v in & mut __struct . uri { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . framerate) ; __tmp . put_u32_le (self . bitrate) ; __tmp . put_u16_le (self . resolution_h) ; __tmp . put_u16_le (self . resolution_v) ; __tmp . put_u16_le (self . rotation) ; __tmp . put_u8 (self . camera_id) ; __tmp . put_u8 (self . status) ; for val in & self . uri { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct RALLY_POINT_DATA { pub lat : i32 , pub lng : i32 , pub alt : i16 , pub break_alt : i16 , pub land_dir : u16 , pub target_system : u8 , pub target_component : u8 , pub idx : u8 , pub count : u8 , pub flags : RallyFlags , } impl RALLY_POINT_DATA { pub const ENCODED_LEN : usize = 19usize ; pub const DEFAULT : Self = Self { lat : 0_i32 , lng : 0_i32 , alt : 0_i16 , break_alt : 0_i16 , land_dir : 0_u16 , target_system : 0_u8 , target_component : 0_u8 , idx : 0_u8 , count : 0_u8 , flags : RallyFlags :: DEFAULT , } ; } impl Default for RALLY_POINT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for RALLY_POINT_DATA { type Message = MavMessage ; const ID : u32 = 175u32 ; const NAME : & 'static str = "RALLY_POINT" ; const EXTRA_CRC : u8 = 138u8 ; const ENCODED_LEN : usize = 19usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . lat = buf . get_i32_le () ; __struct . lng = buf . get_i32_le () ; __struct . alt = buf . get_i16_le () ; __struct . break_alt = buf . get_i16_le () ; __struct . land_dir = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . idx = buf . get_u8 () ; __struct . count = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . flags = RallyFlags :: from_bits (tmp & RallyFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "RallyFlags" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lng) ; __tmp . put_i16_le (self . alt) ; __tmp . put_i16_le (self . break_alt) ; __tmp . put_u16_le (self . land_dir) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . idx) ; __tmp . put_u8 (self . count) ; __tmp . put_u8 (self . flags . bits ()) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct UAVCAN_NODE_STATUS_DATA { pub time_usec : u64 , pub uptime_sec : u32 , pub vendor_specific_status_code : u16 , pub health : UavcanNodeHealth , pub mode : UavcanNodeMode , pub sub_mode : u8 , } impl UAVCAN_NODE_STATUS_DATA { pub const ENCODED_LEN : usize = 17usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , uptime_sec : 0_u32 , vendor_specific_status_code : 0_u16 , health : UavcanNodeHealth :: DEFAULT , mode : UavcanNodeMode :: DEFAULT , sub_mode : 0_u8 , } ; } impl Default for UAVCAN_NODE_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for UAVCAN_NODE_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 310u32 ; const NAME : & 'static str = "UAVCAN_NODE_STATUS" ; const EXTRA_CRC : u8 = 28u8 ; const ENCODED_LEN : usize = 17usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . uptime_sec = buf . get_u32_le () ; __struct . vendor_specific_status_code = buf . get_u16_le () ; let tmp = buf . get_u8 () ; __struct . health = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "UavcanNodeHealth" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . mode = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "UavcanNodeMode" , value : tmp as u32 }) ? ; __struct . sub_mode = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_u32_le (self . uptime_sec) ; __tmp . put_u16_le (self . vendor_specific_status_code) ; __tmp . put_u8 (self . health as u8) ; __tmp . put_u8 (self . mode as u8) ; __tmp . put_u8 (self . sub_mode) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct COMPASSMOT_STATUS_DATA { pub current : f32 , pub CompensationX : f32 , pub CompensationY : f32 , pub CompensationZ : f32 , pub throttle : u16 , pub interference : u16 , } impl COMPASSMOT_STATUS_DATA { pub const ENCODED_LEN : usize = 20usize ; pub const DEFAULT : Self = Self { current : 0.0_f32 , CompensationX : 0.0_f32 , CompensationY : 0.0_f32 , CompensationZ : 0.0_f32 , throttle : 0_u16 , interference : 0_u16 , } ; } impl Default for COMPASSMOT_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for COMPASSMOT_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 177u32 ; const NAME : & 'static str = "COMPASSMOT_STATUS" ; const EXTRA_CRC : u8 = 240u8 ; const ENCODED_LEN : usize = 20usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . current = buf . get_f32_le () ; __struct . CompensationX = buf . get_f32_le () ; __struct . CompensationY = buf . get_f32_le () ; __struct . CompensationZ = buf . get_f32_le () ; __struct . throttle = buf . get_u16_le () ; __struct . interference = buf . get_u16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . current) ; __tmp . put_f32_le (self . CompensationX) ; __tmp . put_f32_le (self . CompensationY) ; __tmp . put_f32_le (self . CompensationZ) ; __tmp . put_u16_le (self . throttle) ; __tmp . put_u16_le (self . interference) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CAMERA_FEEDBACK_DATA { pub time_usec : u64 , pub lat : i32 , pub lng : i32 , pub alt_msl : f32 , pub alt_rel : f32 , pub roll : f32 , pub pitch : f32 , pub yaw : f32 , pub foc_len : f32 , pub img_idx : u16 , pub target_system : u8 , pub cam_idx : u8 , pub flags : CameraFeedbackFlags , } impl CAMERA_FEEDBACK_DATA { pub const ENCODED_LEN : usize = 45usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , lat : 0_i32 , lng : 0_i32 , alt_msl : 0.0_f32 , alt_rel : 0.0_f32 , roll : 0.0_f32 , pitch : 0.0_f32 , yaw : 0.0_f32 , foc_len : 0.0_f32 , img_idx : 0_u16 , target_system : 0_u8 , cam_idx : 0_u8 , flags : CameraFeedbackFlags :: DEFAULT , } ; } impl Default for CAMERA_FEEDBACK_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CAMERA_FEEDBACK_DATA { type Message = MavMessage ; const ID : u32 = 180u32 ; const NAME : & 'static str = "CAMERA_FEEDBACK" ; const EXTRA_CRC : u8 = 52u8 ; const ENCODED_LEN : usize = 45usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . lat = buf . get_i32_le () ; __struct . lng = buf . get_i32_le () ; __struct . alt_msl = buf . get_f32_le () ; __struct . alt_rel = buf . get_f32_le () ; __struct . roll = buf . get_f32_le () ; __struct . pitch = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; __struct . foc_len = buf . get_f32_le () ; __struct . img_idx = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . cam_idx = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . flags = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "CameraFeedbackFlags" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lng) ; __tmp . put_f32_le (self . alt_msl) ; __tmp . put_f32_le (self . alt_rel) ; __tmp . put_f32_le (self . roll) ; __tmp . put_f32_le (self . pitch) ; __tmp . put_f32_le (self . yaw) ; __tmp . put_f32_le (self . foc_len) ; __tmp . put_u16_le (self . img_idx) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . cam_idx) ; __tmp . put_u8 (self . flags as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct RALLY_FETCH_POINT_DATA { pub target_system : u8 , pub target_component : u8 , pub idx : u8 , } impl RALLY_FETCH_POINT_DATA { pub const ENCODED_LEN : usize = 3usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , idx : 0_u8 , } ; } impl Default for RALLY_FETCH_POINT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for RALLY_FETCH_POINT_DATA { type Message = MavMessage ; const ID : u32 = 176u32 ; const NAME : & 'static str = "RALLY_FETCH_POINT" ; const EXTRA_CRC : u8 = 234u8 ; const ENCODED_LEN : usize = 3usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . idx = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . idx) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HIGH_LATENCY2_DATA { pub timestamp : u32 , pub latitude : i32 , pub longitude : i32 , pub custom_mode : u16 , pub altitude : i16 , pub target_altitude : i16 , pub target_distance : u16 , pub wp_num : u16 , pub failure_flags : HlFailureFlag , pub mavtype : MavType , pub autopilot : MavAutopilot , pub heading : u8 , pub target_heading : u8 , pub throttle : u8 , pub airspeed : u8 , pub airspeed_sp : u8 , pub groundspeed : u8 , pub windspeed : u8 , pub wind_heading : u8 , pub eph : u8 , pub epv : u8 , pub temperature_air : i8 , pub climb_rate : i8 , pub battery : i8 , pub custom0 : i8 , pub custom1 : i8 , pub custom2 : i8 , } impl HIGH_LATENCY2_DATA { pub const ENCODED_LEN : usize = 42usize ; pub const DEFAULT : Self = Self { timestamp : 0_u32 , latitude : 0_i32 , longitude : 0_i32 , custom_mode : 0_u16 , altitude : 0_i16 , target_altitude : 0_i16 , target_distance : 0_u16 , wp_num : 0_u16 , failure_flags : HlFailureFlag :: DEFAULT , mavtype : MavType :: DEFAULT , autopilot : MavAutopilot :: DEFAULT , heading : 0_u8 , target_heading : 0_u8 , throttle : 0_u8 , airspeed : 0_u8 , airspeed_sp : 0_u8 , groundspeed : 0_u8 , windspeed : 0_u8 , wind_heading : 0_u8 , eph : 0_u8 , epv : 0_u8 , temperature_air : 0_i8 , climb_rate : 0_i8 , battery : 0_i8 , custom0 : 0_i8 , custom1 : 0_i8 , custom2 : 0_i8 , } ; } impl Default for HIGH_LATENCY2_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for HIGH_LATENCY2_DATA { type Message = MavMessage ; const ID : u32 = 235u32 ; const NAME : & 'static str = "HIGH_LATENCY2" ; const EXTRA_CRC : u8 = 179u8 ; const ENCODED_LEN : usize = 42usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . timestamp = buf . get_u32_le () ; __struct . latitude = buf . get_i32_le () ; __struct . longitude = buf . get_i32_le () ; __struct . custom_mode = buf . get_u16_le () ; __struct . altitude = buf . get_i16_le () ; __struct . target_altitude = buf . get_i16_le () ; __struct . target_distance = buf . get_u16_le () ; __struct . wp_num = buf . get_u16_le () ; let tmp = buf . get_u16_le () ; __struct . failure_flags = HlFailureFlag :: from_bits (tmp & HlFailureFlag :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "HlFailureFlag" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . mavtype = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavType" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . autopilot = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavAutopilot" , value : tmp as u32 }) ? ; __struct . heading = buf . get_u8 () ; __struct . target_heading = buf . get_u8 () ; __struct . throttle = buf . get_u8 () ; __struct . airspeed = buf . get_u8 () ; __struct . airspeed_sp = buf . get_u8 () ; __struct . groundspeed = buf . get_u8 () ; __struct . windspeed = buf . get_u8 () ; __struct . wind_heading = buf . get_u8 () ; __struct . eph = buf . get_u8 () ; __struct . epv = buf . get_u8 () ; __struct . temperature_air = buf . get_i8 () ; __struct . climb_rate = buf . get_i8 () ; __struct . battery = buf . get_i8 () ; __struct . custom0 = buf . get_i8 () ; __struct . custom1 = buf . get_i8 () ; __struct . custom2 = buf . get_i8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . timestamp) ; __tmp . put_i32_le (self . latitude) ; __tmp . put_i32_le (self . longitude) ; __tmp . put_u16_le (self . custom_mode) ; __tmp . put_i16_le (self . altitude) ; __tmp . put_i16_le (self . target_altitude) ; __tmp . put_u16_le (self . target_distance) ; __tmp . put_u16_le (self . wp_num) ; __tmp . put_u16_le (self . failure_flags . bits ()) ; __tmp . put_u8 (self . mavtype as u8) ; __tmp . put_u8 (self . autopilot as u8) ; __tmp . put_u8 (self . heading) ; __tmp . put_u8 (self . target_heading) ; __tmp . put_u8 (self . throttle) ; __tmp . put_u8 (self . airspeed) ; __tmp . put_u8 (self . airspeed_sp) ; __tmp . put_u8 (self . groundspeed) ; __tmp . put_u8 (self . windspeed) ; __tmp . put_u8 (self . wind_heading) ; __tmp . put_u8 (self . eph) ; __tmp . put_u8 (self . epv) ; __tmp . put_i8 (self . temperature_air) ; __tmp . put_i8 (self . climb_rate) ; __tmp . put_i8 (self . battery) ; __tmp . put_i8 (self . custom0) ; __tmp . put_i8 (self . custom1) ; __tmp . put_i8 (self . custom2) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GOPRO_HEARTBEAT_DATA { pub status : GoproHeartbeatStatus , pub capture_mode : GoproCaptureMode , pub flags : GoproHeartbeatFlags , } impl GOPRO_HEARTBEAT_DATA { pub const ENCODED_LEN : usize = 3usize ; pub const DEFAULT : Self = Self { status : GoproHeartbeatStatus :: DEFAULT , capture_mode : GoproCaptureMode :: DEFAULT , flags : GoproHeartbeatFlags :: DEFAULT , } ; } impl Default for GOPRO_HEARTBEAT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GOPRO_HEARTBEAT_DATA { type Message = MavMessage ; const ID : u32 = 215u32 ; const NAME : & 'static str = "GOPRO_HEARTBEAT" ; const EXTRA_CRC : u8 = 101u8 ; const ENCODED_LEN : usize = 3usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u8 () ; __struct . status = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "GoproHeartbeatStatus" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . capture_mode = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "GoproCaptureMode" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . flags = GoproHeartbeatFlags :: from_bits (tmp & GoproHeartbeatFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "GoproHeartbeatFlags" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . status as u8) ; __tmp . put_u8 (self . capture_mode as u8) ; __tmp . put_u8 (self . flags . bits ()) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MEMORY_VECT_DATA { pub address : u16 , pub ver : u8 , pub mavtype : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub value : [i8 ; 32] , } impl MEMORY_VECT_DATA { pub const ENCODED_LEN : usize = 36usize ; pub const DEFAULT : Self = Self { address : 0_u16 , ver : 0_u8 , mavtype : 0_u8 , value : [0_i8 ; 32usize] , } ; } impl Default for MEMORY_VECT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MEMORY_VECT_DATA { type Message = MavMessage ; const ID : u32 = 249u32 ; const NAME : & 'static str = "MEMORY_VECT" ; const EXTRA_CRC : u8 = 204u8 ; const ENCODED_LEN : usize = 36usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . address = buf . get_u16_le () ; __struct . ver = buf . get_u8 () ; __struct . mavtype = buf . get_u8 () ; for v in & mut __struct . value { let val = buf . get_i8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . address) ; __tmp . put_u8 (self . ver) ; __tmp . put_u8 (self . mavtype) ; for val in & self . value { __tmp . put_i8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CUBEPILOT_FIRMWARE_UPDATE_RESP_DATA { pub offset : u32 , pub target_system : u8 , pub target_component : u8 , } impl CUBEPILOT_FIRMWARE_UPDATE_RESP_DATA { pub const ENCODED_LEN : usize = 6usize ; pub const DEFAULT : Self = Self { offset : 0_u32 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for CUBEPILOT_FIRMWARE_UPDATE_RESP_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CUBEPILOT_FIRMWARE_UPDATE_RESP_DATA { type Message = MavMessage ; const ID : u32 = 50005u32 ; const NAME : & 'static str = "CUBEPILOT_FIRMWARE_UPDATE_RESP" ; const EXTRA_CRC : u8 = 152u8 ; const ENCODED_LEN : usize = 6usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . offset = buf . get_u32_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . offset) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SET_POSITION_TARGET_GLOBAL_INT_DATA { pub time_boot_ms : u32 , pub lat_int : i32 , pub lon_int : i32 , pub alt : f32 , pub vx : f32 , pub vy : f32 , pub vz : f32 , pub afx : f32 , pub afy : f32 , pub afz : f32 , pub yaw : f32 , pub yaw_rate : f32 , pub type_mask : PositionTargetTypemask , pub target_system : u8 , pub target_component : u8 , pub coordinate_frame : MavFrame , } impl SET_POSITION_TARGET_GLOBAL_INT_DATA { pub const ENCODED_LEN : usize = 53usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , lat_int : 0_i32 , lon_int : 0_i32 , alt : 0.0_f32 , vx : 0.0_f32 , vy : 0.0_f32 , vz : 0.0_f32 , afx : 0.0_f32 , afy : 0.0_f32 , afz : 0.0_f32 , yaw : 0.0_f32 , yaw_rate : 0.0_f32 , type_mask : PositionTargetTypemask :: DEFAULT , target_system : 0_u8 , target_component : 0_u8 , coordinate_frame : MavFrame :: DEFAULT , } ; } impl Default for SET_POSITION_TARGET_GLOBAL_INT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SET_POSITION_TARGET_GLOBAL_INT_DATA { type Message = MavMessage ; const ID : u32 = 86u32 ; const NAME : & 'static str = "SET_POSITION_TARGET_GLOBAL_INT" ; const EXTRA_CRC : u8 = 5u8 ; const ENCODED_LEN : usize = 53usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . lat_int = buf . get_i32_le () ; __struct . lon_int = buf . get_i32_le () ; __struct . alt = buf . get_f32_le () ; __struct . vx = buf . get_f32_le () ; __struct . vy = buf . get_f32_le () ; __struct . vz = buf . get_f32_le () ; __struct . afx = buf . get_f32_le () ; __struct . afy = buf . get_f32_le () ; __struct . afz = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; __struct . yaw_rate = buf . get_f32_le () ; let tmp = buf . get_u16_le () ; __struct . type_mask = PositionTargetTypemask :: from_bits (tmp & PositionTargetTypemask :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "PositionTargetTypemask" , value : tmp as u32 }) ? ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . coordinate_frame = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavFrame" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_i32_le (self . lat_int) ; __tmp . put_i32_le (self . lon_int) ; __tmp . put_f32_le (self . alt) ; __tmp . put_f32_le (self . vx) ; __tmp . put_f32_le (self . vy) ; __tmp . put_f32_le (self . vz) ; __tmp . put_f32_le (self . afx) ; __tmp . put_f32_le (self . afy) ; __tmp . put_f32_le (self . afz) ; __tmp . put_f32_le (self . yaw) ; __tmp . put_f32_le (self . yaw_rate) ; __tmp . put_u16_le (self . type_mask . bits ()) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . coordinate_frame as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MISSION_ITEM_INT_DATA { pub param1 : f32 , pub param2 : f32 , pub param3 : f32 , pub param4 : f32 , pub x : i32 , pub y : i32 , pub z : f32 , pub seq : u16 , pub command : MavCmd , pub target_system : u8 , pub target_component : u8 , pub frame : MavFrame , pub current : u8 , pub autocontinue : u8 , } impl MISSION_ITEM_INT_DATA { pub const ENCODED_LEN : usize = 37usize ; pub const DEFAULT : Self = Self { param1 : 0.0_f32 , param2 : 0.0_f32 , param3 : 0.0_f32 , param4 : 0.0_f32 , x : 0_i32 , y : 0_i32 , z : 0.0_f32 , seq : 0_u16 , command : MavCmd :: DEFAULT , target_system : 0_u8 , target_component : 0_u8 , frame : MavFrame :: DEFAULT , current : 0_u8 , autocontinue : 0_u8 , } ; } impl Default for MISSION_ITEM_INT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MISSION_ITEM_INT_DATA { type Message = MavMessage ; const ID : u32 = 73u32 ; const NAME : & 'static str = "MISSION_ITEM_INT" ; const EXTRA_CRC : u8 = 38u8 ; const ENCODED_LEN : usize = 37usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . param1 = buf . get_f32_le () ; __struct . param2 = buf . get_f32_le () ; __struct . param3 = buf . get_f32_le () ; __struct . param4 = buf . get_f32_le () ; __struct . x = buf . get_i32_le () ; __struct . y = buf . get_i32_le () ; __struct . z = buf . get_f32_le () ; __struct . seq = buf . get_u16_le () ; let tmp = buf . get_u16_le () ; __struct . command = FromPrimitive :: from_u16 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavCmd" , value : tmp as u32 }) ? ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . frame = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavFrame" , value : tmp as u32 }) ? ; __struct . current = buf . get_u8 () ; __struct . autocontinue = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . param1) ; __tmp . put_f32_le (self . param2) ; __tmp . put_f32_le (self . param3) ; __tmp . put_f32_le (self . param4) ; __tmp . put_i32_le (self . x) ; __tmp . put_i32_le (self . y) ; __tmp . put_f32_le (self . z) ; __tmp . put_u16_le (self . seq) ; __tmp . put_u16_le (self . command as u16) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . frame as u8) ; __tmp . put_u8 (self . current) ; __tmp . put_u8 (self . autocontinue) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SETUP_SIGNING_DATA { pub initial_timestamp : u64 , pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub secret_key : [u8 ; 32] , } impl SETUP_SIGNING_DATA { pub const ENCODED_LEN : usize = 42usize ; pub const DEFAULT : Self = Self { initial_timestamp : 0_u64 , target_system : 0_u8 , target_component : 0_u8 , secret_key : [0_u8 ; 32usize] , } ; } impl Default for SETUP_SIGNING_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SETUP_SIGNING_DATA { type Message = MavMessage ; const ID : u32 = 256u32 ; const NAME : & 'static str = "SETUP_SIGNING" ; const EXTRA_CRC : u8 = 71u8 ; const ENCODED_LEN : usize = 42usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . initial_timestamp = buf . get_u64_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . secret_key { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . initial_timestamp) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . secret_key { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct TERRAIN_DATA_DATA { pub lat : i32 , pub lon : i32 , pub grid_spacing : u16 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub data : [i16 ; 16] , pub gridbit : u8 , } impl TERRAIN_DATA_DATA { pub const ENCODED_LEN : usize = 43usize ; pub const DEFAULT : Self = Self { lat : 0_i32 , lon : 0_i32 , grid_spacing : 0_u16 , data : [0_i16 ; 16usize] , gridbit : 0_u8 , } ; } impl Default for TERRAIN_DATA_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for TERRAIN_DATA_DATA { type Message = MavMessage ; const ID : u32 = 134u32 ; const NAME : & 'static str = "TERRAIN_DATA" ; const EXTRA_CRC : u8 = 229u8 ; const ENCODED_LEN : usize = 43usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . grid_spacing = buf . get_u16_le () ; for v in & mut __struct . data { let val = buf . get_i16_le () ; * v = val ; } __struct . gridbit = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_u16_le (self . grid_spacing) ; for val in & self . data { __tmp . put_i16_le (* val) ; } __tmp . put_u8 (self . gridbit) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CHANGE_OPERATOR_CONTROL_DATA { pub target_system : u8 , pub control_request : u8 , pub version : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub passkey : [u8 ; 25] , } impl CHANGE_OPERATOR_CONTROL_DATA { pub const ENCODED_LEN : usize = 28usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , control_request : 0_u8 , version : 0_u8 , passkey : [0_u8 ; 25usize] , } ; } impl Default for CHANGE_OPERATOR_CONTROL_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CHANGE_OPERATOR_CONTROL_DATA { type Message = MavMessage ; const ID : u32 = 5u32 ; const NAME : & 'static str = "CHANGE_OPERATOR_CONTROL" ; const EXTRA_CRC : u8 = 217u8 ; const ENCODED_LEN : usize = 28usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . control_request = buf . get_u8 () ; __struct . version = buf . get_u8 () ; for v in & mut __struct . passkey { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . control_request) ; __tmp . put_u8 (self . version) ; for val in & self . passkey { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MISSION_WRITE_PARTIAL_LIST_DATA { pub start_index : i16 , pub end_index : i16 , pub target_system : u8 , pub target_component : u8 , } impl MISSION_WRITE_PARTIAL_LIST_DATA { pub const ENCODED_LEN : usize = 6usize ; pub const DEFAULT : Self = Self { start_index : 0_i16 , end_index : 0_i16 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for MISSION_WRITE_PARTIAL_LIST_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MISSION_WRITE_PARTIAL_LIST_DATA { type Message = MavMessage ; const ID : u32 = 38u32 ; const NAME : & 'static str = "MISSION_WRITE_PARTIAL_LIST" ; const EXTRA_CRC : u8 = 9u8 ; const ENCODED_LEN : usize = 6usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . start_index = buf . get_i16_le () ; __struct . end_index = buf . get_i16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i16_le (self . start_index) ; __tmp . put_i16_le (self . end_index) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SERIAL_CONTROL_DATA { pub baudrate : u32 , pub timeout : u16 , pub device : SerialControlDev , pub flags : SerialControlFlag , pub count : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub data : [u8 ; 70] , } impl SERIAL_CONTROL_DATA { pub const ENCODED_LEN : usize = 79usize ; pub const DEFAULT : Self = Self { baudrate : 0_u32 , timeout : 0_u16 , device : SerialControlDev :: DEFAULT , flags : SerialControlFlag :: DEFAULT , count : 0_u8 , data : [0_u8 ; 70usize] , } ; } impl Default for SERIAL_CONTROL_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SERIAL_CONTROL_DATA { type Message = MavMessage ; const ID : u32 = 126u32 ; const NAME : & 'static str = "SERIAL_CONTROL" ; const EXTRA_CRC : u8 = 220u8 ; const ENCODED_LEN : usize = 79usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . baudrate = buf . get_u32_le () ; __struct . timeout = buf . get_u16_le () ; let tmp = buf . get_u8 () ; __struct . device = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "SerialControlDev" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . flags = SerialControlFlag :: from_bits (tmp & SerialControlFlag :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "SerialControlFlag" , value : tmp as u32 }) ? ; __struct . count = buf . get_u8 () ; for v in & mut __struct . data { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . baudrate) ; __tmp . put_u16_le (self . timeout) ; __tmp . put_u8 (self . device as u8) ; __tmp . put_u8 (self . flags . bits ()) ; __tmp . put_u8 (self . count) ; for val in & self . data { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CUBEPILOT_RAW_RC_DATA { } impl CUBEPILOT_RAW_RC_DATA { pub const ENCODED_LEN : usize = 0usize ; pub const DEFAULT : Self = Self { } ; } impl Default for CUBEPILOT_RAW_RC_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CUBEPILOT_RAW_RC_DATA { type Message = MavMessage ; const ID : u32 = 50001u32 ; const NAME : & 'static str = "CUBEPILOT_RAW_RC" ; const EXTRA_CRC : u8 = 1u8 ; const ENCODED_LEN : usize = 0usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { Ok (Self :: default ()) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct FENCE_FETCH_POINT_DATA { pub target_system : u8 , pub target_component : u8 , pub idx : u8 , } impl FENCE_FETCH_POINT_DATA { pub const ENCODED_LEN : usize = 3usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , idx : 0_u8 , } ; } impl Default for FENCE_FETCH_POINT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for FENCE_FETCH_POINT_DATA { type Message = MavMessage ; const ID : u32 = 161u32 ; const NAME : & 'static str = "FENCE_FETCH_POINT" ; const EXTRA_CRC : u8 = 68u8 ; const ENCODED_LEN : usize = 3usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . idx = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . idx) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GOPRO_SET_RESPONSE_DATA { pub cmd_id : GoproCommand , pub status : GoproRequestStatus , } impl GOPRO_SET_RESPONSE_DATA { pub const ENCODED_LEN : usize = 2usize ; pub const DEFAULT : Self = Self { cmd_id : GoproCommand :: DEFAULT , status : GoproRequestStatus :: DEFAULT , } ; } impl Default for GOPRO_SET_RESPONSE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GOPRO_SET_RESPONSE_DATA { type Message = MavMessage ; const ID : u32 = 219u32 ; const NAME : & 'static str = "GOPRO_SET_RESPONSE" ; const EXTRA_CRC : u8 = 162u8 ; const ENCODED_LEN : usize = 2usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u8 () ; __struct . cmd_id = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "GoproCommand" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . status = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "GoproRequestStatus" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . cmd_id as u8) ; __tmp . put_u8 (self . status as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CAMERA_TRIGGER_DATA { pub time_usec : u64 , pub seq : u32 , } impl CAMERA_TRIGGER_DATA { pub const ENCODED_LEN : usize = 12usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , seq : 0_u32 , } ; } impl Default for CAMERA_TRIGGER_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CAMERA_TRIGGER_DATA { type Message = MavMessage ; const ID : u32 = 112u32 ; const NAME : & 'static str = "CAMERA_TRIGGER" ; const EXTRA_CRC : u8 = 174u8 ; const ENCODED_LEN : usize = 12usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . seq = buf . get_u32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_u32_le (self . seq) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct VISION_POSITION_DELTA_DATA { pub time_usec : u64 , pub time_delta_usec : u64 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub angle_delta : [f32 ; 3] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub position_delta : [f32 ; 3] , pub confidence : f32 , } impl VISION_POSITION_DELTA_DATA { pub const ENCODED_LEN : usize = 44usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , time_delta_usec : 0_u64 , angle_delta : [0.0_f32 ; 3usize] , position_delta : [0.0_f32 ; 3usize] , confidence : 0.0_f32 , } ; } impl Default for VISION_POSITION_DELTA_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for VISION_POSITION_DELTA_DATA { type Message = MavMessage ; const ID : u32 = 11011u32 ; const NAME : & 'static str = "VISION_POSITION_DELTA" ; const EXTRA_CRC : u8 = 106u8 ; const ENCODED_LEN : usize = 44usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . time_delta_usec = buf . get_u64_le () ; for v in & mut __struct . angle_delta { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . position_delta { let val = buf . get_f32_le () ; * v = val ; } __struct . confidence = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_u64_le (self . time_delta_usec) ; for val in & self . angle_delta { __tmp . put_f32_le (* val) ; } for val in & self . position_delta { __tmp . put_f32_le (* val) ; } __tmp . put_f32_le (self . confidence) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct OPEN_DRONE_ID_LOCATION_DATA { pub latitude : i32 , pub longitude : i32 , pub altitude_barometric : f32 , pub altitude_geodetic : f32 , pub height : f32 , pub timestamp : f32 , pub direction : u16 , pub speed_horizontal : u16 , pub speed_vertical : i16 , pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub id_or_mac : [u8 ; 20] , pub status : MavOdidStatus , pub height_reference : MavOdidHeightRef , pub horizontal_accuracy : MavOdidHorAcc , pub vertical_accuracy : MavOdidVerAcc , pub barometer_accuracy : MavOdidVerAcc , pub speed_accuracy : MavOdidSpeedAcc , pub timestamp_accuracy : MavOdidTimeAcc , } impl OPEN_DRONE_ID_LOCATION_DATA { pub const ENCODED_LEN : usize = 59usize ; pub const DEFAULT : Self = Self { latitude : 0_i32 , longitude : 0_i32 , altitude_barometric : 0.0_f32 , altitude_geodetic : 0.0_f32 , height : 0.0_f32 , timestamp : 0.0_f32 , direction : 0_u16 , speed_horizontal : 0_u16 , speed_vertical : 0_i16 , target_system : 0_u8 , target_component : 0_u8 , id_or_mac : [0_u8 ; 20usize] , status : MavOdidStatus :: DEFAULT , height_reference : MavOdidHeightRef :: DEFAULT , horizontal_accuracy : MavOdidHorAcc :: DEFAULT , vertical_accuracy : MavOdidVerAcc :: DEFAULT , barometer_accuracy : MavOdidVerAcc :: DEFAULT , speed_accuracy : MavOdidSpeedAcc :: DEFAULT , timestamp_accuracy : MavOdidTimeAcc :: DEFAULT , } ; } impl Default for OPEN_DRONE_ID_LOCATION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for OPEN_DRONE_ID_LOCATION_DATA { type Message = MavMessage ; const ID : u32 = 12901u32 ; const NAME : & 'static str = "OPEN_DRONE_ID_LOCATION" ; const EXTRA_CRC : u8 = 254u8 ; const ENCODED_LEN : usize = 59usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . latitude = buf . get_i32_le () ; __struct . longitude = buf . get_i32_le () ; __struct . altitude_barometric = buf . get_f32_le () ; __struct . altitude_geodetic = buf . get_f32_le () ; __struct . height = buf . get_f32_le () ; __struct . timestamp = buf . get_f32_le () ; __struct . direction = buf . get_u16_le () ; __struct . speed_horizontal = buf . get_u16_le () ; __struct . speed_vertical = buf . get_i16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . id_or_mac { let val = buf . get_u8 () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . status = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidStatus" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . height_reference = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidHeightRef" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . horizontal_accuracy = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidHorAcc" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . vertical_accuracy = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidVerAcc" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . barometer_accuracy = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidVerAcc" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . speed_accuracy = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidSpeedAcc" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . timestamp_accuracy = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidTimeAcc" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . latitude) ; __tmp . put_i32_le (self . longitude) ; __tmp . put_f32_le (self . altitude_barometric) ; __tmp . put_f32_le (self . altitude_geodetic) ; __tmp . put_f32_le (self . height) ; __tmp . put_f32_le (self . timestamp) ; __tmp . put_u16_le (self . direction) ; __tmp . put_u16_le (self . speed_horizontal) ; __tmp . put_i16_le (self . speed_vertical) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . id_or_mac { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . status as u8) ; __tmp . put_u8 (self . height_reference as u8) ; __tmp . put_u8 (self . horizontal_accuracy as u8) ; __tmp . put_u8 (self . vertical_accuracy as u8) ; __tmp . put_u8 (self . barometer_accuracy as u8) ; __tmp . put_u8 (self . speed_accuracy as u8) ; __tmp . put_u8 (self . timestamp_accuracy as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GOPRO_GET_RESPONSE_DATA { pub cmd_id : GoproCommand , pub status : GoproRequestStatus , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub value : [u8 ; 4] , } impl GOPRO_GET_RESPONSE_DATA { pub const ENCODED_LEN : usize = 6usize ; pub const DEFAULT : Self = Self { cmd_id : GoproCommand :: DEFAULT , status : GoproRequestStatus :: DEFAULT , value : [0_u8 ; 4usize] , } ; } impl Default for GOPRO_GET_RESPONSE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GOPRO_GET_RESPONSE_DATA { type Message = MavMessage ; const ID : u32 = 217u32 ; const NAME : & 'static str = "GOPRO_GET_RESPONSE" ; const EXTRA_CRC : u8 = 202u8 ; const ENCODED_LEN : usize = 6usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u8 () ; __struct . cmd_id = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "GoproCommand" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . status = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "GoproRequestStatus" , value : tmp as u32 }) ? ; for v in & mut __struct . value { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . cmd_id as u8) ; __tmp . put_u8 (self . status as u8) ; for val in & self . value { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SCALED_PRESSURE3_DATA { pub time_boot_ms : u32 , pub press_abs : f32 , pub press_diff : f32 , pub temperature : i16 , } impl SCALED_PRESSURE3_DATA { pub const ENCODED_LEN : usize = 14usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , press_abs : 0.0_f32 , press_diff : 0.0_f32 , temperature : 0_i16 , } ; } impl Default for SCALED_PRESSURE3_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SCALED_PRESSURE3_DATA { type Message = MavMessage ; const ID : u32 = 143u32 ; const NAME : & 'static str = "SCALED_PRESSURE3" ; const EXTRA_CRC : u8 = 131u8 ; const ENCODED_LEN : usize = 14usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . press_abs = buf . get_f32_le () ; __struct . press_diff = buf . get_f32_le () ; __struct . temperature = buf . get_i16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . press_abs) ; __tmp . put_f32_le (self . press_diff) ; __tmp . put_i16_le (self . temperature) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SMART_BATTERY_INFO_DATA { pub capacity_full_specification : i32 , pub capacity_full : i32 , pub cycle_count : u16 , pub weight : u16 , pub discharge_minimum_voltage : u16 , pub charging_minimum_voltage : u16 , pub resting_minimum_voltage : u16 , pub id : u8 , pub battery_function : MavBatteryFunction , pub mavtype : MavBatteryType , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub serial_number : [u8 ; 16] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub device_name : [u8 ; 50] , } impl SMART_BATTERY_INFO_DATA { pub const ENCODED_LEN : usize = 87usize ; pub const DEFAULT : Self = Self { capacity_full_specification : 0_i32 , capacity_full : 0_i32 , cycle_count : 0_u16 , weight : 0_u16 , discharge_minimum_voltage : 0_u16 , charging_minimum_voltage : 0_u16 , resting_minimum_voltage : 0_u16 , id : 0_u8 , battery_function : MavBatteryFunction :: DEFAULT , mavtype : MavBatteryType :: DEFAULT , serial_number : [0_u8 ; 16usize] , device_name : [0_u8 ; 50usize] , } ; } impl Default for SMART_BATTERY_INFO_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SMART_BATTERY_INFO_DATA { type Message = MavMessage ; const ID : u32 = 370u32 ; const NAME : & 'static str = "SMART_BATTERY_INFO" ; const EXTRA_CRC : u8 = 75u8 ; const ENCODED_LEN : usize = 87usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . capacity_full_specification = buf . get_i32_le () ; __struct . capacity_full = buf . get_i32_le () ; __struct . cycle_count = buf . get_u16_le () ; __struct . weight = buf . get_u16_le () ; __struct . discharge_minimum_voltage = buf . get_u16_le () ; __struct . charging_minimum_voltage = buf . get_u16_le () ; __struct . resting_minimum_voltage = buf . get_u16_le () ; __struct . id = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . battery_function = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavBatteryFunction" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . mavtype = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavBatteryType" , value : tmp as u32 }) ? ; for v in & mut __struct . serial_number { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . device_name { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . capacity_full_specification) ; __tmp . put_i32_le (self . capacity_full) ; __tmp . put_u16_le (self . cycle_count) ; __tmp . put_u16_le (self . weight) ; __tmp . put_u16_le (self . discharge_minimum_voltage) ; __tmp . put_u16_le (self . charging_minimum_voltage) ; __tmp . put_u16_le (self . resting_minimum_voltage) ; __tmp . put_u8 (self . id) ; __tmp . put_u8 (self . battery_function as u8) ; __tmp . put_u8 (self . mavtype as u8) ; for val in & self . serial_number { __tmp . put_u8 (* val) ; } for val in & self . device_name { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct OPEN_DRONE_ID_OPERATOR_ID_DATA { pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub id_or_mac : [u8 ; 20] , pub operator_id_type : MavOdidOperatorIdType , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub operator_id : [u8 ; 20] , } impl OPEN_DRONE_ID_OPERATOR_ID_DATA { pub const ENCODED_LEN : usize = 43usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , id_or_mac : [0_u8 ; 20usize] , operator_id_type : MavOdidOperatorIdType :: DEFAULT , operator_id : [0_u8 ; 20usize] , } ; } impl Default for OPEN_DRONE_ID_OPERATOR_ID_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for OPEN_DRONE_ID_OPERATOR_ID_DATA { type Message = MavMessage ; const ID : u32 = 12905u32 ; const NAME : & 'static str = "OPEN_DRONE_ID_OPERATOR_ID" ; const EXTRA_CRC : u8 = 49u8 ; const ENCODED_LEN : usize = 43usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . id_or_mac { let val = buf . get_u8 () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . operator_id_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidOperatorIdType" , value : tmp as u32 }) ? ; for v in & mut __struct . operator_id { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . id_or_mac { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . operator_id_type as u8) ; for val in & self . operator_id { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ESC_INFO_DATA { pub time_usec : u64 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub error_count : [u32 ; 4] , pub counter : u16 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub failure_flags : [u16 ; 4] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub temperature : [i16 ; 4] , pub index : u8 , pub count : u8 , pub connection_type : EscConnectionType , pub info : u8 , } impl ESC_INFO_DATA { pub const ENCODED_LEN : usize = 46usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , error_count : [0_u32 ; 4usize] , counter : 0_u16 , failure_flags : [0_u16 ; 4usize] , temperature : [0_i16 ; 4usize] , index : 0_u8 , count : 0_u8 , connection_type : EscConnectionType :: DEFAULT , info : 0_u8 , } ; } impl Default for ESC_INFO_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ESC_INFO_DATA { type Message = MavMessage ; const ID : u32 = 290u32 ; const NAME : & 'static str = "ESC_INFO" ; const EXTRA_CRC : u8 = 251u8 ; const ENCODED_LEN : usize = 46usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; for v in & mut __struct . error_count { let val = buf . get_u32_le () ; * v = val ; } __struct . counter = buf . get_u16_le () ; for v in & mut __struct . failure_flags { let val = buf . get_u16_le () ; * v = val ; } for v in & mut __struct . temperature { let val = buf . get_i16_le () ; * v = val ; } __struct . index = buf . get_u8 () ; __struct . count = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . connection_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "EscConnectionType" , value : tmp as u32 }) ? ; __struct . info = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; for val in & self . error_count { __tmp . put_u32_le (* val) ; } __tmp . put_u16_le (self . counter) ; for val in & self . failure_flags { __tmp . put_u16_le (* val) ; } for val in & self . temperature { __tmp . put_i16_le (* val) ; } __tmp . put_u8 (self . index) ; __tmp . put_u8 (self . count) ; __tmp . put_u8 (self . connection_type as u8) ; __tmp . put_u8 (self . info) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct STORAGE_INFORMATION_DATA { pub time_boot_ms : u32 , pub total_capacity : f32 , pub used_capacity : f32 , pub available_capacity : f32 , pub read_speed : f32 , pub write_speed : f32 , pub storage_id : u8 , pub storage_count : u8 , pub status : StorageStatus , } impl STORAGE_INFORMATION_DATA { pub const ENCODED_LEN : usize = 27usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , total_capacity : 0.0_f32 , used_capacity : 0.0_f32 , available_capacity : 0.0_f32 , read_speed : 0.0_f32 , write_speed : 0.0_f32 , storage_id : 0_u8 , storage_count : 0_u8 , status : StorageStatus :: DEFAULT , } ; } impl Default for STORAGE_INFORMATION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for STORAGE_INFORMATION_DATA { type Message = MavMessage ; const ID : u32 = 261u32 ; const NAME : & 'static str = "STORAGE_INFORMATION" ; const EXTRA_CRC : u8 = 179u8 ; const ENCODED_LEN : usize = 27usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . total_capacity = buf . get_f32_le () ; __struct . used_capacity = buf . get_f32_le () ; __struct . available_capacity = buf . get_f32_le () ; __struct . read_speed = buf . get_f32_le () ; __struct . write_speed = buf . get_f32_le () ; __struct . storage_id = buf . get_u8 () ; __struct . storage_count = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . status = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "StorageStatus" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . total_capacity) ; __tmp . put_f32_le (self . used_capacity) ; __tmp . put_f32_le (self . available_capacity) ; __tmp . put_f32_le (self . read_speed) ; __tmp . put_f32_le (self . write_speed) ; __tmp . put_u8 (self . storage_id) ; __tmp . put_u8 (self . storage_count) ; __tmp . put_u8 (self . status as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct RADIO_STATUS_DATA { pub rxerrors : u16 , pub fixed : u16 , pub rssi : u8 , pub remrssi : u8 , pub txbuf : u8 , pub noise : u8 , pub remnoise : u8 , } impl RADIO_STATUS_DATA { pub const ENCODED_LEN : usize = 9usize ; pub const DEFAULT : Self = Self { rxerrors : 0_u16 , fixed : 0_u16 , rssi : 0_u8 , remrssi : 0_u8 , txbuf : 0_u8 , noise : 0_u8 , remnoise : 0_u8 , } ; } impl Default for RADIO_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for RADIO_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 109u32 ; const NAME : & 'static str = "RADIO_STATUS" ; const EXTRA_CRC : u8 = 185u8 ; const ENCODED_LEN : usize = 9usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . rxerrors = buf . get_u16_le () ; __struct . fixed = buf . get_u16_le () ; __struct . rssi = buf . get_u8 () ; __struct . remrssi = buf . get_u8 () ; __struct . txbuf = buf . get_u8 () ; __struct . noise = buf . get_u8 () ; __struct . remnoise = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . rxerrors) ; __tmp . put_u16_le (self . fixed) ; __tmp . put_u8 (self . rssi) ; __tmp . put_u8 (self . remrssi) ; __tmp . put_u8 (self . txbuf) ; __tmp . put_u8 (self . noise) ; __tmp . put_u8 (self . remnoise) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct WHEEL_DISTANCE_DATA { pub time_usec : u64 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub distance : [f64 ; 16] , pub count : u8 , } impl WHEEL_DISTANCE_DATA { pub const ENCODED_LEN : usize = 137usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , distance : [0.0_f64 ; 16usize] , count : 0_u8 , } ; } impl Default for WHEEL_DISTANCE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for WHEEL_DISTANCE_DATA { type Message = MavMessage ; const ID : u32 = 9000u32 ; const NAME : & 'static str = "WHEEL_DISTANCE" ; const EXTRA_CRC : u8 = 113u8 ; const ENCODED_LEN : usize = 137usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; for v in & mut __struct . distance { let val = buf . get_f64_le () ; * v = val ; } __struct . count = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; for val in & self . distance { __tmp . put_f64_le (* val) ; } __tmp . put_u8 (self . count) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct FILE_TRANSFER_PROTOCOL_DATA { pub target_network : u8 , pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub payload : [u8 ; 251] , } impl FILE_TRANSFER_PROTOCOL_DATA { pub const ENCODED_LEN : usize = 254usize ; pub const DEFAULT : Self = Self { target_network : 0_u8 , target_system : 0_u8 , target_component : 0_u8 , payload : [0_u8 ; 251usize] , } ; } impl Default for FILE_TRANSFER_PROTOCOL_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for FILE_TRANSFER_PROTOCOL_DATA { type Message = MavMessage ; const ID : u32 = 110u32 ; const NAME : & 'static str = "FILE_TRANSFER_PROTOCOL" ; const EXTRA_CRC : u8 = 84u8 ; const ENCODED_LEN : usize = 254usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_network = buf . get_u8 () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . payload { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_network) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . payload { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct DEVICE_OP_READ_DATA { pub request_id : u32 , pub target_system : u8 , pub target_component : u8 , pub bustype : DeviceOpBustype , pub bus : u8 , pub address : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub busname : [u8 ; 40] , pub regstart : u8 , pub count : u8 , } impl DEVICE_OP_READ_DATA { pub const ENCODED_LEN : usize = 51usize ; pub const DEFAULT : Self = Self { request_id : 0_u32 , target_system : 0_u8 , target_component : 0_u8 , bustype : DeviceOpBustype :: DEFAULT , bus : 0_u8 , address : 0_u8 , busname : [0_u8 ; 40usize] , regstart : 0_u8 , count : 0_u8 , } ; } impl Default for DEVICE_OP_READ_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for DEVICE_OP_READ_DATA { type Message = MavMessage ; const ID : u32 = 11000u32 ; const NAME : & 'static str = "DEVICE_OP_READ" ; const EXTRA_CRC : u8 = 134u8 ; const ENCODED_LEN : usize = 51usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . request_id = buf . get_u32_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . bustype = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "DeviceOpBustype" , value : tmp as u32 }) ? ; __struct . bus = buf . get_u8 () ; __struct . address = buf . get_u8 () ; for v in & mut __struct . busname { let val = buf . get_u8 () ; * v = val ; } __struct . regstart = buf . get_u8 () ; __struct . count = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . request_id) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . bustype as u8) ; __tmp . put_u8 (self . bus) ; __tmp . put_u8 (self . address) ; for val in & self . busname { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . regstart) ; __tmp . put_u8 (self . count) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MOUNT_CONTROL_DATA { pub input_a : i32 , pub input_b : i32 , pub input_c : i32 , pub target_system : u8 , pub target_component : u8 , pub save_position : u8 , } impl MOUNT_CONTROL_DATA { pub const ENCODED_LEN : usize = 15usize ; pub const DEFAULT : Self = Self { input_a : 0_i32 , input_b : 0_i32 , input_c : 0_i32 , target_system : 0_u8 , target_component : 0_u8 , save_position : 0_u8 , } ; } impl Default for MOUNT_CONTROL_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MOUNT_CONTROL_DATA { type Message = MavMessage ; const ID : u32 = 157u32 ; const NAME : & 'static str = "MOUNT_CONTROL" ; const EXTRA_CRC : u8 = 21u8 ; const ENCODED_LEN : usize = 15usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . input_a = buf . get_i32_le () ; __struct . input_b = buf . get_i32_le () ; __struct . input_c = buf . get_i32_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . save_position = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . input_a) ; __tmp . put_i32_le (self . input_b) ; __tmp . put_i32_le (self . input_c) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . save_position) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct BATTERY2_DATA { pub voltage : u16 , pub current_battery : i16 , } impl BATTERY2_DATA { pub const ENCODED_LEN : usize = 4usize ; pub const DEFAULT : Self = Self { voltage : 0_u16 , current_battery : 0_i16 , } ; } impl Default for BATTERY2_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for BATTERY2_DATA { type Message = MavMessage ; const ID : u32 = 181u32 ; const NAME : & 'static str = "BATTERY2" ; const EXTRA_CRC : u8 = 174u8 ; const ENCODED_LEN : usize = 4usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . voltage = buf . get_u16_le () ; __struct . current_battery = buf . get_i16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . voltage) ; __tmp . put_i16_le (self . current_battery) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct OPTICAL_FLOW_RAD_DATA { pub time_usec : u64 , pub integration_time_us : u32 , pub integrated_x : f32 , pub integrated_y : f32 , pub integrated_xgyro : f32 , pub integrated_ygyro : f32 , pub integrated_zgyro : f32 , pub time_delta_distance_us : u32 , pub distance : f32 , pub temperature : i16 , pub sensor_id : u8 , pub quality : u8 , } impl OPTICAL_FLOW_RAD_DATA { pub const ENCODED_LEN : usize = 44usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , integration_time_us : 0_u32 , integrated_x : 0.0_f32 , integrated_y : 0.0_f32 , integrated_xgyro : 0.0_f32 , integrated_ygyro : 0.0_f32 , integrated_zgyro : 0.0_f32 , time_delta_distance_us : 0_u32 , distance : 0.0_f32 , temperature : 0_i16 , sensor_id : 0_u8 , quality : 0_u8 , } ; } impl Default for OPTICAL_FLOW_RAD_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for OPTICAL_FLOW_RAD_DATA { type Message = MavMessage ; const ID : u32 = 106u32 ; const NAME : & 'static str = "OPTICAL_FLOW_RAD" ; const EXTRA_CRC : u8 = 138u8 ; const ENCODED_LEN : usize = 44usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . integration_time_us = buf . get_u32_le () ; __struct . integrated_x = buf . get_f32_le () ; __struct . integrated_y = buf . get_f32_le () ; __struct . integrated_xgyro = buf . get_f32_le () ; __struct . integrated_ygyro = buf . get_f32_le () ; __struct . integrated_zgyro = buf . get_f32_le () ; __struct . time_delta_distance_us = buf . get_u32_le () ; __struct . distance = buf . get_f32_le () ; __struct . temperature = buf . get_i16_le () ; __struct . sensor_id = buf . get_u8 () ; __struct . quality = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_u32_le (self . integration_time_us) ; __tmp . put_f32_le (self . integrated_x) ; __tmp . put_f32_le (self . integrated_y) ; __tmp . put_f32_le (self . integrated_xgyro) ; __tmp . put_f32_le (self . integrated_ygyro) ; __tmp . put_f32_le (self . integrated_zgyro) ; __tmp . put_u32_le (self . time_delta_distance_us) ; __tmp . put_f32_le (self . distance) ; __tmp . put_i16_le (self . temperature) ; __tmp . put_u8 (self . sensor_id) ; __tmp . put_u8 (self . quality) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ESC_TELEMETRY_9_TO_12_DATA { # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub voltage : [u16 ; 4] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub current : [u16 ; 4] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub totalcurrent : [u16 ; 4] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub rpm : [u16 ; 4] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub count : [u16 ; 4] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub temperature : [u8 ; 4] , } impl ESC_TELEMETRY_9_TO_12_DATA { pub const ENCODED_LEN : usize = 44usize ; pub const DEFAULT : Self = Self { voltage : [0_u16 ; 4usize] , current : [0_u16 ; 4usize] , totalcurrent : [0_u16 ; 4usize] , rpm : [0_u16 ; 4usize] , count : [0_u16 ; 4usize] , temperature : [0_u8 ; 4usize] , } ; } impl Default for ESC_TELEMETRY_9_TO_12_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ESC_TELEMETRY_9_TO_12_DATA { type Message = MavMessage ; const ID : u32 = 11032u32 ; const NAME : & 'static str = "ESC_TELEMETRY_9_TO_12" ; const EXTRA_CRC : u8 = 85u8 ; const ENCODED_LEN : usize = 44usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; for v in & mut __struct . voltage { let val = buf . get_u16_le () ; * v = val ; } for v in & mut __struct . current { let val = buf . get_u16_le () ; * v = val ; } for v in & mut __struct . totalcurrent { let val = buf . get_u16_le () ; * v = val ; } for v in & mut __struct . rpm { let val = buf . get_u16_le () ; * v = val ; } for v in & mut __struct . count { let val = buf . get_u16_le () ; * v = val ; } for v in & mut __struct . temperature { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; for val in & self . voltage { __tmp . put_u16_le (* val) ; } for val in & self . current { __tmp . put_u16_le (* val) ; } for val in & self . totalcurrent { __tmp . put_u16_le (* val) ; } for val in & self . rpm { __tmp . put_u16_le (* val) ; } for val in & self . count { __tmp . put_u16_le (* val) ; } for val in & self . temperature { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HIL_OPTICAL_FLOW_DATA { pub time_usec : u64 , pub integration_time_us : u32 , pub integrated_x : f32 , pub integrated_y : f32 , pub integrated_xgyro : f32 , pub integrated_ygyro : f32 , pub integrated_zgyro : f32 , pub time_delta_distance_us : u32 , pub distance : f32 , pub temperature : i16 , pub sensor_id : u8 , pub quality : u8 , } impl HIL_OPTICAL_FLOW_DATA { pub const ENCODED_LEN : usize = 44usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , integration_time_us : 0_u32 , integrated_x : 0.0_f32 , integrated_y : 0.0_f32 , integrated_xgyro : 0.0_f32 , integrated_ygyro : 0.0_f32 , integrated_zgyro : 0.0_f32 , time_delta_distance_us : 0_u32 , distance : 0.0_f32 , temperature : 0_i16 , sensor_id : 0_u8 , quality : 0_u8 , } ; } impl Default for HIL_OPTICAL_FLOW_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for HIL_OPTICAL_FLOW_DATA { type Message = MavMessage ; const ID : u32 = 114u32 ; const NAME : & 'static str = "HIL_OPTICAL_FLOW" ; const EXTRA_CRC : u8 = 237u8 ; const ENCODED_LEN : usize = 44usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . integration_time_us = buf . get_u32_le () ; __struct . integrated_x = buf . get_f32_le () ; __struct . integrated_y = buf . get_f32_le () ; __struct . integrated_xgyro = buf . get_f32_le () ; __struct . integrated_ygyro = buf . get_f32_le () ; __struct . integrated_zgyro = buf . get_f32_le () ; __struct . time_delta_distance_us = buf . get_u32_le () ; __struct . distance = buf . get_f32_le () ; __struct . temperature = buf . get_i16_le () ; __struct . sensor_id = buf . get_u8 () ; __struct . quality = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_u32_le (self . integration_time_us) ; __tmp . put_f32_le (self . integrated_x) ; __tmp . put_f32_le (self . integrated_y) ; __tmp . put_f32_le (self . integrated_xgyro) ; __tmp . put_f32_le (self . integrated_ygyro) ; __tmp . put_f32_le (self . integrated_zgyro) ; __tmp . put_u32_le (self . time_delta_distance_us) ; __tmp . put_f32_le (self . distance) ; __tmp . put_i16_le (self . temperature) ; __tmp . put_u8 (self . sensor_id) ; __tmp . put_u8 (self . quality) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SIM_STATE_DATA { pub q1 : f32 , pub q2 : f32 , pub q3 : f32 , pub q4 : f32 , pub roll : f32 , pub pitch : f32 , pub yaw : f32 , pub xacc : f32 , pub yacc : f32 , pub zacc : f32 , pub xgyro : f32 , pub ygyro : f32 , pub zgyro : f32 , pub lat : f32 , pub lon : f32 , pub alt : f32 , pub std_dev_horz : f32 , pub std_dev_vert : f32 , pub vn : f32 , pub ve : f32 , pub vd : f32 , } impl SIM_STATE_DATA { pub const ENCODED_LEN : usize = 84usize ; pub const DEFAULT : Self = Self { q1 : 0.0_f32 , q2 : 0.0_f32 , q3 : 0.0_f32 , q4 : 0.0_f32 , roll : 0.0_f32 , pitch : 0.0_f32 , yaw : 0.0_f32 , xacc : 0.0_f32 , yacc : 0.0_f32 , zacc : 0.0_f32 , xgyro : 0.0_f32 , ygyro : 0.0_f32 , zgyro : 0.0_f32 , lat : 0.0_f32 , lon : 0.0_f32 , alt : 0.0_f32 , std_dev_horz : 0.0_f32 , std_dev_vert : 0.0_f32 , vn : 0.0_f32 , ve : 0.0_f32 , vd : 0.0_f32 , } ; } impl Default for SIM_STATE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SIM_STATE_DATA { type Message = MavMessage ; const ID : u32 = 108u32 ; const NAME : & 'static str = "SIM_STATE" ; const EXTRA_CRC : u8 = 32u8 ; const ENCODED_LEN : usize = 84usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . q1 = buf . get_f32_le () ; __struct . q2 = buf . get_f32_le () ; __struct . q3 = buf . get_f32_le () ; __struct . q4 = buf . get_f32_le () ; __struct . roll = buf . get_f32_le () ; __struct . pitch = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; __struct . xacc = buf . get_f32_le () ; __struct . yacc = buf . get_f32_le () ; __struct . zacc = buf . get_f32_le () ; __struct . xgyro = buf . get_f32_le () ; __struct . ygyro = buf . get_f32_le () ; __struct . zgyro = buf . get_f32_le () ; __struct . lat = buf . get_f32_le () ; __struct . lon = buf . get_f32_le () ; __struct . alt = buf . get_f32_le () ; __struct . std_dev_horz = buf . get_f32_le () ; __struct . std_dev_vert = buf . get_f32_le () ; __struct . vn = buf . get_f32_le () ; __struct . ve = buf . get_f32_le () ; __struct . vd = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . q1) ; __tmp . put_f32_le (self . q2) ; __tmp . put_f32_le (self . q3) ; __tmp . put_f32_le (self . q4) ; __tmp . put_f32_le (self . roll) ; __tmp . put_f32_le (self . pitch) ; __tmp . put_f32_le (self . yaw) ; __tmp . put_f32_le (self . xacc) ; __tmp . put_f32_le (self . yacc) ; __tmp . put_f32_le (self . zacc) ; __tmp . put_f32_le (self . xgyro) ; __tmp . put_f32_le (self . ygyro) ; __tmp . put_f32_le (self . zgyro) ; __tmp . put_f32_le (self . lat) ; __tmp . put_f32_le (self . lon) ; __tmp . put_f32_le (self . alt) ; __tmp . put_f32_le (self . std_dev_horz) ; __tmp . put_f32_le (self . std_dev_vert) ; __tmp . put_f32_le (self . vn) ; __tmp . put_f32_le (self . ve) ; __tmp . put_f32_le (self . vd) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct VIDEO_STREAM_INFORMATION_DATA { pub framerate : f32 , pub bitrate : u32 , pub flags : VideoStreamStatusFlags , pub resolution_h : u16 , pub resolution_v : u16 , pub rotation : u16 , pub hfov : u16 , pub stream_id : u8 , pub count : u8 , pub mavtype : VideoStreamType , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub name : [u8 ; 32] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub uri : [u8 ; 160] , } impl VIDEO_STREAM_INFORMATION_DATA { pub const ENCODED_LEN : usize = 213usize ; pub const DEFAULT : Self = Self { framerate : 0.0_f32 , bitrate : 0_u32 , flags : VideoStreamStatusFlags :: DEFAULT , resolution_h : 0_u16 , resolution_v : 0_u16 , rotation : 0_u16 , hfov : 0_u16 , stream_id : 0_u8 , count : 0_u8 , mavtype : VideoStreamType :: DEFAULT , name : [0_u8 ; 32usize] , uri : [0_u8 ; 160usize] , } ; } impl Default for VIDEO_STREAM_INFORMATION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for VIDEO_STREAM_INFORMATION_DATA { type Message = MavMessage ; const ID : u32 = 269u32 ; const NAME : & 'static str = "VIDEO_STREAM_INFORMATION" ; const EXTRA_CRC : u8 = 109u8 ; const ENCODED_LEN : usize = 213usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . framerate = buf . get_f32_le () ; __struct . bitrate = buf . get_u32_le () ; let tmp = buf . get_u16_le () ; __struct . flags = FromPrimitive :: from_u16 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "VideoStreamStatusFlags" , value : tmp as u32 }) ? ; __struct . resolution_h = buf . get_u16_le () ; __struct . resolution_v = buf . get_u16_le () ; __struct . rotation = buf . get_u16_le () ; __struct . hfov = buf . get_u16_le () ; __struct . stream_id = buf . get_u8 () ; __struct . count = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . mavtype = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "VideoStreamType" , value : tmp as u32 }) ? ; for v in & mut __struct . name { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . uri { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . framerate) ; __tmp . put_u32_le (self . bitrate) ; __tmp . put_u16_le (self . flags as u16) ; __tmp . put_u16_le (self . resolution_h) ; __tmp . put_u16_le (self . resolution_v) ; __tmp . put_u16_le (self . rotation) ; __tmp . put_u16_le (self . hfov) ; __tmp . put_u8 (self . stream_id) ; __tmp . put_u8 (self . count) ; __tmp . put_u8 (self . mavtype as u8) ; for val in & self . name { __tmp . put_u8 (* val) ; } for val in & self . uri { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct COMPONENT_INFORMATION_DATA { pub time_boot_ms : u32 , pub general_metadata_file_crc : u32 , pub peripherals_metadata_file_crc : u32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub general_metadata_uri : [u8 ; 100] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub peripherals_metadata_uri : [u8 ; 100] , } impl COMPONENT_INFORMATION_DATA { pub const ENCODED_LEN : usize = 212usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , general_metadata_file_crc : 0_u32 , peripherals_metadata_file_crc : 0_u32 , general_metadata_uri : [0_u8 ; 100usize] , peripherals_metadata_uri : [0_u8 ; 100usize] , } ; } impl Default for COMPONENT_INFORMATION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for COMPONENT_INFORMATION_DATA { type Message = MavMessage ; const ID : u32 = 395u32 ; const NAME : & 'static str = "COMPONENT_INFORMATION" ; const EXTRA_CRC : u8 = 0u8 ; const ENCODED_LEN : usize = 212usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . general_metadata_file_crc = buf . get_u32_le () ; __struct . peripherals_metadata_file_crc = buf . get_u32_le () ; for v in & mut __struct . general_metadata_uri { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . peripherals_metadata_uri { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_u32_le (self . general_metadata_file_crc) ; __tmp . put_u32_le (self . peripherals_metadata_file_crc) ; for val in & self . general_metadata_uri { __tmp . put_u8 (* val) ; } for val in & self . peripherals_metadata_uri { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LOG_ERASE_DATA { pub target_system : u8 , pub target_component : u8 , } impl LOG_ERASE_DATA { pub const ENCODED_LEN : usize = 2usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for LOG_ERASE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for LOG_ERASE_DATA { type Message = MavMessage ; const ID : u32 = 121u32 ; const NAME : & 'static str = "LOG_ERASE" ; const EXTRA_CRC : u8 = 237u8 ; const ENCODED_LEN : usize = 2usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SERVO_OUTPUT_RAW_DATA { pub time_usec : u32 , pub servo1_raw : u16 , pub servo2_raw : u16 , pub servo3_raw : u16 , pub servo4_raw : u16 , pub servo5_raw : u16 , pub servo6_raw : u16 , pub servo7_raw : u16 , pub servo8_raw : u16 , pub port : u8 , } impl SERVO_OUTPUT_RAW_DATA { pub const ENCODED_LEN : usize = 21usize ; pub const DEFAULT : Self = Self { time_usec : 0_u32 , servo1_raw : 0_u16 , servo2_raw : 0_u16 , servo3_raw : 0_u16 , servo4_raw : 0_u16 , servo5_raw : 0_u16 , servo6_raw : 0_u16 , servo7_raw : 0_u16 , servo8_raw : 0_u16 , port : 0_u8 , } ; } impl Default for SERVO_OUTPUT_RAW_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SERVO_OUTPUT_RAW_DATA { type Message = MavMessage ; const ID : u32 = 36u32 ; const NAME : & 'static str = "SERVO_OUTPUT_RAW" ; const EXTRA_CRC : u8 = 222u8 ; const ENCODED_LEN : usize = 21usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u32_le () ; __struct . servo1_raw = buf . get_u16_le () ; __struct . servo2_raw = buf . get_u16_le () ; __struct . servo3_raw = buf . get_u16_le () ; __struct . servo4_raw = buf . get_u16_le () ; __struct . servo5_raw = buf . get_u16_le () ; __struct . servo6_raw = buf . get_u16_le () ; __struct . servo7_raw = buf . get_u16_le () ; __struct . servo8_raw = buf . get_u16_le () ; __struct . port = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_usec) ; __tmp . put_u16_le (self . servo1_raw) ; __tmp . put_u16_le (self . servo2_raw) ; __tmp . put_u16_le (self . servo3_raw) ; __tmp . put_u16_le (self . servo4_raw) ; __tmp . put_u16_le (self . servo5_raw) ; __tmp . put_u16_le (self . servo6_raw) ; __tmp . put_u16_le (self . servo7_raw) ; __tmp . put_u16_le (self . servo8_raw) ; __tmp . put_u8 (self . port) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HYGROMETER_SENSOR_DATA { pub temperature : i16 , pub humidity : u16 , pub id : u8 , } impl HYGROMETER_SENSOR_DATA { pub const ENCODED_LEN : usize = 5usize ; pub const DEFAULT : Self = Self { temperature : 0_i16 , humidity : 0_u16 , id : 0_u8 , } ; } impl Default for HYGROMETER_SENSOR_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for HYGROMETER_SENSOR_DATA { type Message = MavMessage ; const ID : u32 = 12920u32 ; const NAME : & 'static str = "HYGROMETER_SENSOR" ; const EXTRA_CRC : u8 = 20u8 ; const ENCODED_LEN : usize = 5usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . temperature = buf . get_i16_le () ; __struct . humidity = buf . get_u16_le () ; __struct . id = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i16_le (self . temperature) ; __tmp . put_u16_le (self . humidity) ; __tmp . put_u8 (self . id) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct DIGICAM_CONTROL_DATA { pub extra_value : f32 , pub target_system : u8 , pub target_component : u8 , pub session : u8 , pub zoom_pos : u8 , pub zoom_step : i8 , pub focus_lock : u8 , pub shot : u8 , pub command_id : u8 , pub extra_param : u8 , } impl DIGICAM_CONTROL_DATA { pub const ENCODED_LEN : usize = 13usize ; pub const DEFAULT : Self = Self { extra_value : 0.0_f32 , target_system : 0_u8 , target_component : 0_u8 , session : 0_u8 , zoom_pos : 0_u8 , zoom_step : 0_i8 , focus_lock : 0_u8 , shot : 0_u8 , command_id : 0_u8 , extra_param : 0_u8 , } ; } impl Default for DIGICAM_CONTROL_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for DIGICAM_CONTROL_DATA { type Message = MavMessage ; const ID : u32 = 155u32 ; const NAME : & 'static str = "DIGICAM_CONTROL" ; const EXTRA_CRC : u8 = 22u8 ; const ENCODED_LEN : usize = 13usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . extra_value = buf . get_f32_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . session = buf . get_u8 () ; __struct . zoom_pos = buf . get_u8 () ; __struct . zoom_step = buf . get_i8 () ; __struct . focus_lock = buf . get_u8 () ; __struct . shot = buf . get_u8 () ; __struct . command_id = buf . get_u8 () ; __struct . extra_param = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . extra_value) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . session) ; __tmp . put_u8 (self . zoom_pos) ; __tmp . put_i8 (self . zoom_step) ; __tmp . put_u8 (self . focus_lock) ; __tmp . put_u8 (self . shot) ; __tmp . put_u8 (self . command_id) ; __tmp . put_u8 (self . extra_param) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ENCAPSULATED_DATA_DATA { pub seqnr : u16 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub data : [u8 ; 253] , } impl ENCAPSULATED_DATA_DATA { pub const ENCODED_LEN : usize = 255usize ; pub const DEFAULT : Self = Self { seqnr : 0_u16 , data : [0_u8 ; 253usize] , } ; } impl Default for ENCAPSULATED_DATA_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ENCAPSULATED_DATA_DATA { type Message = MavMessage ; const ID : u32 = 131u32 ; const NAME : & 'static str = "ENCAPSULATED_DATA" ; const EXTRA_CRC : u8 = 223u8 ; const ENCODED_LEN : usize = 255usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . seqnr = buf . get_u16_le () ; for v in & mut __struct . data { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . seqnr) ; for val in & self . data { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct WIFI_CONFIG_AP_DATA { # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub ssid : [u8 ; 32] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub password : [u8 ; 64] , } impl WIFI_CONFIG_AP_DATA { pub const ENCODED_LEN : usize = 96usize ; pub const DEFAULT : Self = Self { ssid : [0_u8 ; 32usize] , password : [0_u8 ; 64usize] , } ; } impl Default for WIFI_CONFIG_AP_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for WIFI_CONFIG_AP_DATA { type Message = MavMessage ; const ID : u32 = 299u32 ; const NAME : & 'static str = "WIFI_CONFIG_AP" ; const EXTRA_CRC : u8 = 19u8 ; const ENCODED_LEN : usize = 96usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; for v in & mut __struct . ssid { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . password { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; for val in & self . ssid { __tmp . put_u8 (* val) ; } for val in & self . password { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SET_ACTUATOR_CONTROL_TARGET_DATA { pub time_usec : u64 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub controls : [f32 ; 8] , pub group_mlx : u8 , pub target_system : u8 , pub target_component : u8 , } impl SET_ACTUATOR_CONTROL_TARGET_DATA { pub const ENCODED_LEN : usize = 43usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , controls : [0.0_f32 ; 8usize] , group_mlx : 0_u8 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for SET_ACTUATOR_CONTROL_TARGET_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SET_ACTUATOR_CONTROL_TARGET_DATA { type Message = MavMessage ; const ID : u32 = 139u32 ; const NAME : & 'static str = "SET_ACTUATOR_CONTROL_TARGET" ; const EXTRA_CRC : u8 = 168u8 ; const ENCODED_LEN : usize = 43usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; for v in & mut __struct . controls { let val = buf . get_f32_le () ; * v = val ; } __struct . group_mlx = buf . get_u8 () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; for val in & self . controls { __tmp . put_f32_le (* val) ; } __tmp . put_u8 (self . group_mlx) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SYSTEM_TIME_DATA { pub time_unix_usec : u64 , pub time_boot_ms : u32 , } impl SYSTEM_TIME_DATA { pub const ENCODED_LEN : usize = 12usize ; pub const DEFAULT : Self = Self { time_unix_usec : 0_u64 , time_boot_ms : 0_u32 , } ; } impl Default for SYSTEM_TIME_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SYSTEM_TIME_DATA { type Message = MavMessage ; const ID : u32 = 2u32 ; const NAME : & 'static str = "SYSTEM_TIME" ; const EXTRA_CRC : u8 = 137u8 ; const ENCODED_LEN : usize = 12usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_unix_usec = buf . get_u64_le () ; __struct . time_boot_ms = buf . get_u32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_unix_usec) ; __tmp . put_u32_le (self . time_boot_ms) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ISBD_LINK_STATUS_DATA { pub timestamp : u64 , pub last_heartbeat : u64 , pub failed_sessions : u16 , pub successful_sessions : u16 , pub signal_quality : u8 , pub ring_pending : u8 , pub tx_session_pending : u8 , pub rx_session_pending : u8 , } impl ISBD_LINK_STATUS_DATA { pub const ENCODED_LEN : usize = 24usize ; pub const DEFAULT : Self = Self { timestamp : 0_u64 , last_heartbeat : 0_u64 , failed_sessions : 0_u16 , successful_sessions : 0_u16 , signal_quality : 0_u8 , ring_pending : 0_u8 , tx_session_pending : 0_u8 , rx_session_pending : 0_u8 , } ; } impl Default for ISBD_LINK_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ISBD_LINK_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 335u32 ; const NAME : & 'static str = "ISBD_LINK_STATUS" ; const EXTRA_CRC : u8 = 225u8 ; const ENCODED_LEN : usize = 24usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . timestamp = buf . get_u64_le () ; __struct . last_heartbeat = buf . get_u64_le () ; __struct . failed_sessions = buf . get_u16_le () ; __struct . successful_sessions = buf . get_u16_le () ; __struct . signal_quality = buf . get_u8 () ; __struct . ring_pending = buf . get_u8 () ; __struct . tx_session_pending = buf . get_u8 () ; __struct . rx_session_pending = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . timestamp) ; __tmp . put_u64_le (self . last_heartbeat) ; __tmp . put_u16_le (self . failed_sessions) ; __tmp . put_u16_le (self . successful_sessions) ; __tmp . put_u8 (self . signal_quality) ; __tmp . put_u8 (self . ring_pending) ; __tmp . put_u8 (self . tx_session_pending) ; __tmp . put_u8 (self . rx_session_pending) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PLAY_TUNE_DATA { pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub tune : [u8 ; 30] , } impl PLAY_TUNE_DATA { pub const ENCODED_LEN : usize = 32usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , tune : [0_u8 ; 30usize] , } ; } impl Default for PLAY_TUNE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for PLAY_TUNE_DATA { type Message = MavMessage ; const ID : u32 = 258u32 ; const NAME : & 'static str = "PLAY_TUNE" ; const EXTRA_CRC : u8 = 187u8 ; const ENCODED_LEN : usize = 32usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . tune { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . tune { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ATTITUDE_DATA { pub time_boot_ms : u32 , pub roll : f32 , pub pitch : f32 , pub yaw : f32 , pub rollspeed : f32 , pub pitchspeed : f32 , pub yawspeed : f32 , } impl ATTITUDE_DATA { pub const ENCODED_LEN : usize = 28usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , roll : 0.0_f32 , pitch : 0.0_f32 , yaw : 0.0_f32 , rollspeed : 0.0_f32 , pitchspeed : 0.0_f32 , yawspeed : 0.0_f32 , } ; } impl Default for ATTITUDE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ATTITUDE_DATA { type Message = MavMessage ; const ID : u32 = 30u32 ; const NAME : & 'static str = "ATTITUDE" ; const EXTRA_CRC : u8 = 39u8 ; const ENCODED_LEN : usize = 28usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . roll = buf . get_f32_le () ; __struct . pitch = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; __struct . rollspeed = buf . get_f32_le () ; __struct . pitchspeed = buf . get_f32_le () ; __struct . yawspeed = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . roll) ; __tmp . put_f32_le (self . pitch) ; __tmp . put_f32_le (self . yaw) ; __tmp . put_f32_le (self . rollspeed) ; __tmp . put_f32_le (self . pitchspeed) ; __tmp . put_f32_le (self . yawspeed) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MAG_CAL_REPORT_DATA { pub fitness : f32 , pub ofs_x : f32 , pub ofs_y : f32 , pub ofs_z : f32 , pub diag_x : f32 , pub diag_y : f32 , pub diag_z : f32 , pub offdiag_x : f32 , pub offdiag_y : f32 , pub offdiag_z : f32 , pub compass_id : u8 , pub cal_mask : u8 , pub cal_status : MagCalStatus , pub autosaved : u8 , } impl MAG_CAL_REPORT_DATA { pub const ENCODED_LEN : usize = 44usize ; pub const DEFAULT : Self = Self { fitness : 0.0_f32 , ofs_x : 0.0_f32 , ofs_y : 0.0_f32 , ofs_z : 0.0_f32 , diag_x : 0.0_f32 , diag_y : 0.0_f32 , diag_z : 0.0_f32 , offdiag_x : 0.0_f32 , offdiag_y : 0.0_f32 , offdiag_z : 0.0_f32 , compass_id : 0_u8 , cal_mask : 0_u8 , cal_status : MagCalStatus :: DEFAULT , autosaved : 0_u8 , } ; } impl Default for MAG_CAL_REPORT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MAG_CAL_REPORT_DATA { type Message = MavMessage ; const ID : u32 = 192u32 ; const NAME : & 'static str = "MAG_CAL_REPORT" ; const EXTRA_CRC : u8 = 36u8 ; const ENCODED_LEN : usize = 44usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . fitness = buf . get_f32_le () ; __struct . ofs_x = buf . get_f32_le () ; __struct . ofs_y = buf . get_f32_le () ; __struct . ofs_z = buf . get_f32_le () ; __struct . diag_x = buf . get_f32_le () ; __struct . diag_y = buf . get_f32_le () ; __struct . diag_z = buf . get_f32_le () ; __struct . offdiag_x = buf . get_f32_le () ; __struct . offdiag_y = buf . get_f32_le () ; __struct . offdiag_z = buf . get_f32_le () ; __struct . compass_id = buf . get_u8 () ; __struct . cal_mask = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . cal_status = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MagCalStatus" , value : tmp as u32 }) ? ; __struct . autosaved = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . fitness) ; __tmp . put_f32_le (self . ofs_x) ; __tmp . put_f32_le (self . ofs_y) ; __tmp . put_f32_le (self . ofs_z) ; __tmp . put_f32_le (self . diag_x) ; __tmp . put_f32_le (self . diag_y) ; __tmp . put_f32_le (self . diag_z) ; __tmp . put_f32_le (self . offdiag_x) ; __tmp . put_f32_le (self . offdiag_y) ; __tmp . put_f32_le (self . offdiag_z) ; __tmp . put_u8 (self . compass_id) ; __tmp . put_u8 (self . cal_mask) ; __tmp . put_u8 (self . cal_status as u8) ; __tmp . put_u8 (self . autosaved) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct UTM_GLOBAL_POSITION_DATA { pub time : u64 , pub lat : i32 , pub lon : i32 , pub alt : i32 , pub relative_alt : i32 , pub next_lat : i32 , pub next_lon : i32 , pub next_alt : i32 , pub vx : i16 , pub vy : i16 , pub vz : i16 , pub h_acc : u16 , pub v_acc : u16 , pub vel_acc : u16 , pub update_rate : u16 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub uas_id : [u8 ; 18] , pub flight_state : UtmFlightState , pub flags : UtmDataAvailFlags , } impl UTM_GLOBAL_POSITION_DATA { pub const ENCODED_LEN : usize = 70usize ; pub const DEFAULT : Self = Self { time : 0_u64 , lat : 0_i32 , lon : 0_i32 , alt : 0_i32 , relative_alt : 0_i32 , next_lat : 0_i32 , next_lon : 0_i32 , next_alt : 0_i32 , vx : 0_i16 , vy : 0_i16 , vz : 0_i16 , h_acc : 0_u16 , v_acc : 0_u16 , vel_acc : 0_u16 , update_rate : 0_u16 , uas_id : [0_u8 ; 18usize] , flight_state : UtmFlightState :: DEFAULT , flags : UtmDataAvailFlags :: DEFAULT , } ; } impl Default for UTM_GLOBAL_POSITION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for UTM_GLOBAL_POSITION_DATA { type Message = MavMessage ; const ID : u32 = 340u32 ; const NAME : & 'static str = "UTM_GLOBAL_POSITION" ; const EXTRA_CRC : u8 = 99u8 ; const ENCODED_LEN : usize = 70usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time = buf . get_u64_le () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . alt = buf . get_i32_le () ; __struct . relative_alt = buf . get_i32_le () ; __struct . next_lat = buf . get_i32_le () ; __struct . next_lon = buf . get_i32_le () ; __struct . next_alt = buf . get_i32_le () ; __struct . vx = buf . get_i16_le () ; __struct . vy = buf . get_i16_le () ; __struct . vz = buf . get_i16_le () ; __struct . h_acc = buf . get_u16_le () ; __struct . v_acc = buf . get_u16_le () ; __struct . vel_acc = buf . get_u16_le () ; __struct . update_rate = buf . get_u16_le () ; for v in & mut __struct . uas_id { let val = buf . get_u8 () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . flight_state = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "UtmFlightState" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . flags = UtmDataAvailFlags :: from_bits (tmp & UtmDataAvailFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "UtmDataAvailFlags" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_i32_le (self . alt) ; __tmp . put_i32_le (self . relative_alt) ; __tmp . put_i32_le (self . next_lat) ; __tmp . put_i32_le (self . next_lon) ; __tmp . put_i32_le (self . next_alt) ; __tmp . put_i16_le (self . vx) ; __tmp . put_i16_le (self . vy) ; __tmp . put_i16_le (self . vz) ; __tmp . put_u16_le (self . h_acc) ; __tmp . put_u16_le (self . v_acc) ; __tmp . put_u16_le (self . vel_acc) ; __tmp . put_u16_le (self . update_rate) ; for val in & self . uas_id { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . flight_state as u8) ; __tmp . put_u8 (self . flags . bits ()) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LANDING_TARGET_DATA { pub time_usec : u64 , pub angle_x : f32 , pub angle_y : f32 , pub distance : f32 , pub size_x : f32 , pub size_y : f32 , pub target_num : u8 , pub frame : MavFrame , } impl LANDING_TARGET_DATA { pub const ENCODED_LEN : usize = 30usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , angle_x : 0.0_f32 , angle_y : 0.0_f32 , distance : 0.0_f32 , size_x : 0.0_f32 , size_y : 0.0_f32 , target_num : 0_u8 , frame : MavFrame :: DEFAULT , } ; } impl Default for LANDING_TARGET_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for LANDING_TARGET_DATA { type Message = MavMessage ; const ID : u32 = 149u32 ; const NAME : & 'static str = "LANDING_TARGET" ; const EXTRA_CRC : u8 = 200u8 ; const ENCODED_LEN : usize = 30usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . angle_x = buf . get_f32_le () ; __struct . angle_y = buf . get_f32_le () ; __struct . distance = buf . get_f32_le () ; __struct . size_x = buf . get_f32_le () ; __struct . size_y = buf . get_f32_le () ; __struct . target_num = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . frame = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavFrame" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . angle_x) ; __tmp . put_f32_le (self . angle_y) ; __tmp . put_f32_le (self . distance) ; __tmp . put_f32_le (self . size_x) ; __tmp . put_f32_le (self . size_y) ; __tmp . put_u8 (self . target_num) ; __tmp . put_u8 (self . frame as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MISSION_REQUEST_PARTIAL_LIST_DATA { pub start_index : i16 , pub end_index : i16 , pub target_system : u8 , pub target_component : u8 , } impl MISSION_REQUEST_PARTIAL_LIST_DATA { pub const ENCODED_LEN : usize = 6usize ; pub const DEFAULT : Self = Self { start_index : 0_i16 , end_index : 0_i16 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for MISSION_REQUEST_PARTIAL_LIST_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MISSION_REQUEST_PARTIAL_LIST_DATA { type Message = MavMessage ; const ID : u32 = 37u32 ; const NAME : & 'static str = "MISSION_REQUEST_PARTIAL_LIST" ; const EXTRA_CRC : u8 = 212u8 ; const ENCODED_LEN : usize = 6usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . start_index = buf . get_i16_le () ; __struct . end_index = buf . get_i16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i16_le (self . start_index) ; __tmp . put_i16_le (self . end_index) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct RANGEFINDER_DATA { pub distance : f32 , pub voltage : f32 , } impl RANGEFINDER_DATA { pub const ENCODED_LEN : usize = 8usize ; pub const DEFAULT : Self = Self { distance : 0.0_f32 , voltage : 0.0_f32 , } ; } impl Default for RANGEFINDER_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for RANGEFINDER_DATA { type Message = MavMessage ; const ID : u32 = 173u32 ; const NAME : & 'static str = "RANGEFINDER" ; const EXTRA_CRC : u8 = 83u8 ; const ENCODED_LEN : usize = 8usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . distance = buf . get_f32_le () ; __struct . voltage = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . distance) ; __tmp . put_f32_le (self . voltage) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MAG_CAL_PROGRESS_DATA { pub direction_x : f32 , pub direction_y : f32 , pub direction_z : f32 , pub compass_id : u8 , pub cal_mask : u8 , pub cal_status : MagCalStatus , pub attempt : u8 , pub completion_pct : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub completion_mask : [u8 ; 10] , } impl MAG_CAL_PROGRESS_DATA { pub const ENCODED_LEN : usize = 27usize ; pub const DEFAULT : Self = Self { direction_x : 0.0_f32 , direction_y : 0.0_f32 , direction_z : 0.0_f32 , compass_id : 0_u8 , cal_mask : 0_u8 , cal_status : MagCalStatus :: DEFAULT , attempt : 0_u8 , completion_pct : 0_u8 , completion_mask : [0_u8 ; 10usize] , } ; } impl Default for MAG_CAL_PROGRESS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MAG_CAL_PROGRESS_DATA { type Message = MavMessage ; const ID : u32 = 191u32 ; const NAME : & 'static str = "MAG_CAL_PROGRESS" ; const EXTRA_CRC : u8 = 92u8 ; const ENCODED_LEN : usize = 27usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . direction_x = buf . get_f32_le () ; __struct . direction_y = buf . get_f32_le () ; __struct . direction_z = buf . get_f32_le () ; __struct . compass_id = buf . get_u8 () ; __struct . cal_mask = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . cal_status = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MagCalStatus" , value : tmp as u32 }) ? ; __struct . attempt = buf . get_u8 () ; __struct . completion_pct = buf . get_u8 () ; for v in & mut __struct . completion_mask { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . direction_x) ; __tmp . put_f32_le (self . direction_y) ; __tmp . put_f32_le (self . direction_z) ; __tmp . put_u8 (self . compass_id) ; __tmp . put_u8 (self . cal_mask) ; __tmp . put_u8 (self . cal_status as u8) ; __tmp . put_u8 (self . attempt) ; __tmp . put_u8 (self . completion_pct) ; for val in & self . completion_mask { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PID_TUNING_DATA { pub desired : f32 , pub achieved : f32 , pub FF : f32 , pub P : f32 , pub I : f32 , pub D : f32 , pub axis : PidTuningAxis , } impl PID_TUNING_DATA { pub const ENCODED_LEN : usize = 25usize ; pub const DEFAULT : Self = Self { desired : 0.0_f32 , achieved : 0.0_f32 , FF : 0.0_f32 , P : 0.0_f32 , I : 0.0_f32 , D : 0.0_f32 , axis : PidTuningAxis :: DEFAULT , } ; } impl Default for PID_TUNING_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for PID_TUNING_DATA { type Message = MavMessage ; const ID : u32 = 194u32 ; const NAME : & 'static str = "PID_TUNING" ; const EXTRA_CRC : u8 = 98u8 ; const ENCODED_LEN : usize = 25usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . desired = buf . get_f32_le () ; __struct . achieved = buf . get_f32_le () ; __struct . FF = buf . get_f32_le () ; __struct . P = buf . get_f32_le () ; __struct . I = buf . get_f32_le () ; __struct . D = buf . get_f32_le () ; let tmp = buf . get_u8 () ; __struct . axis = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "PidTuningAxis" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . desired) ; __tmp . put_f32_le (self . achieved) ; __tmp . put_f32_le (self . FF) ; __tmp . put_f32_le (self . P) ; __tmp . put_f32_le (self . I) ; __tmp . put_f32_le (self . D) ; __tmp . put_u8 (self . axis as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct COMMAND_CANCEL_DATA { pub command : MavCmd , pub target_system : u8 , pub target_component : u8 , } impl COMMAND_CANCEL_DATA { pub const ENCODED_LEN : usize = 4usize ; pub const DEFAULT : Self = Self { command : MavCmd :: DEFAULT , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for COMMAND_CANCEL_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for COMMAND_CANCEL_DATA { type Message = MavMessage ; const ID : u32 = 80u32 ; const NAME : & 'static str = "COMMAND_CANCEL" ; const EXTRA_CRC : u8 = 14u8 ; const ENCODED_LEN : usize = 4usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u16_le () ; __struct . command = FromPrimitive :: from_u16 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavCmd" , value : tmp as u32 }) ? ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . command as u16) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct DEVICE_OP_WRITE_DATA { pub request_id : u32 , pub target_system : u8 , pub target_component : u8 , pub bustype : DeviceOpBustype , pub bus : u8 , pub address : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub busname : [u8 ; 40] , pub regstart : u8 , pub count : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub data : [u8 ; 128] , } impl DEVICE_OP_WRITE_DATA { pub const ENCODED_LEN : usize = 179usize ; pub const DEFAULT : Self = Self { request_id : 0_u32 , target_system : 0_u8 , target_component : 0_u8 , bustype : DeviceOpBustype :: DEFAULT , bus : 0_u8 , address : 0_u8 , busname : [0_u8 ; 40usize] , regstart : 0_u8 , count : 0_u8 , data : [0_u8 ; 128usize] , } ; } impl Default for DEVICE_OP_WRITE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for DEVICE_OP_WRITE_DATA { type Message = MavMessage ; const ID : u32 = 11002u32 ; const NAME : & 'static str = "DEVICE_OP_WRITE" ; const EXTRA_CRC : u8 = 234u8 ; const ENCODED_LEN : usize = 179usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . request_id = buf . get_u32_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . bustype = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "DeviceOpBustype" , value : tmp as u32 }) ? ; __struct . bus = buf . get_u8 () ; __struct . address = buf . get_u8 () ; for v in & mut __struct . busname { let val = buf . get_u8 () ; * v = val ; } __struct . regstart = buf . get_u8 () ; __struct . count = buf . get_u8 () ; for v in & mut __struct . data { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . request_id) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . bustype as u8) ; __tmp . put_u8 (self . bus) ; __tmp . put_u8 (self . address) ; for val in & self . busname { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . regstart) ; __tmp . put_u8 (self . count) ; for val in & self . data { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SCALED_IMU_DATA { pub time_boot_ms : u32 , pub xacc : i16 , pub yacc : i16 , pub zacc : i16 , pub xgyro : i16 , pub ygyro : i16 , pub zgyro : i16 , pub xmag : i16 , pub ymag : i16 , pub zmag : i16 , } impl SCALED_IMU_DATA { pub const ENCODED_LEN : usize = 22usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , xacc : 0_i16 , yacc : 0_i16 , zacc : 0_i16 , xgyro : 0_i16 , ygyro : 0_i16 , zgyro : 0_i16 , xmag : 0_i16 , ymag : 0_i16 , zmag : 0_i16 , } ; } impl Default for SCALED_IMU_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SCALED_IMU_DATA { type Message = MavMessage ; const ID : u32 = 26u32 ; const NAME : & 'static str = "SCALED_IMU" ; const EXTRA_CRC : u8 = 170u8 ; const ENCODED_LEN : usize = 22usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . xacc = buf . get_i16_le () ; __struct . yacc = buf . get_i16_le () ; __struct . zacc = buf . get_i16_le () ; __struct . xgyro = buf . get_i16_le () ; __struct . ygyro = buf . get_i16_le () ; __struct . zgyro = buf . get_i16_le () ; __struct . xmag = buf . get_i16_le () ; __struct . ymag = buf . get_i16_le () ; __struct . zmag = buf . get_i16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_i16_le (self . xacc) ; __tmp . put_i16_le (self . yacc) ; __tmp . put_i16_le (self . zacc) ; __tmp . put_i16_le (self . xgyro) ; __tmp . put_i16_le (self . ygyro) ; __tmp . put_i16_le (self . zgyro) ; __tmp . put_i16_le (self . xmag) ; __tmp . put_i16_le (self . ymag) ; __tmp . put_i16_le (self . zmag) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct RC_CHANNELS_SCALED_DATA { pub time_boot_ms : u32 , pub chan1_scaled : i16 , pub chan2_scaled : i16 , pub chan3_scaled : i16 , pub chan4_scaled : i16 , pub chan5_scaled : i16 , pub chan6_scaled : i16 , pub chan7_scaled : i16 , pub chan8_scaled : i16 , pub port : u8 , pub rssi : u8 , } impl RC_CHANNELS_SCALED_DATA { pub const ENCODED_LEN : usize = 22usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , chan1_scaled : 0_i16 , chan2_scaled : 0_i16 , chan3_scaled : 0_i16 , chan4_scaled : 0_i16 , chan5_scaled : 0_i16 , chan6_scaled : 0_i16 , chan7_scaled : 0_i16 , chan8_scaled : 0_i16 , port : 0_u8 , rssi : 0_u8 , } ; } impl Default for RC_CHANNELS_SCALED_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for RC_CHANNELS_SCALED_DATA { type Message = MavMessage ; const ID : u32 = 34u32 ; const NAME : & 'static str = "RC_CHANNELS_SCALED" ; const EXTRA_CRC : u8 = 237u8 ; const ENCODED_LEN : usize = 22usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . chan1_scaled = buf . get_i16_le () ; __struct . chan2_scaled = buf . get_i16_le () ; __struct . chan3_scaled = buf . get_i16_le () ; __struct . chan4_scaled = buf . get_i16_le () ; __struct . chan5_scaled = buf . get_i16_le () ; __struct . chan6_scaled = buf . get_i16_le () ; __struct . chan7_scaled = buf . get_i16_le () ; __struct . chan8_scaled = buf . get_i16_le () ; __struct . port = buf . get_u8 () ; __struct . rssi = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_i16_le (self . chan1_scaled) ; __tmp . put_i16_le (self . chan2_scaled) ; __tmp . put_i16_le (self . chan3_scaled) ; __tmp . put_i16_le (self . chan4_scaled) ; __tmp . put_i16_le (self . chan5_scaled) ; __tmp . put_i16_le (self . chan6_scaled) ; __tmp . put_i16_le (self . chan7_scaled) ; __tmp . put_i16_le (self . chan8_scaled) ; __tmp . put_u8 (self . port) ; __tmp . put_u8 (self . rssi) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct VIBRATION_DATA { pub time_usec : u64 , pub vibration_x : f32 , pub vibration_y : f32 , pub vibration_z : f32 , pub clipping_0 : u32 , pub clipping_1 : u32 , pub clipping_2 : u32 , } impl VIBRATION_DATA { pub const ENCODED_LEN : usize = 32usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , vibration_x : 0.0_f32 , vibration_y : 0.0_f32 , vibration_z : 0.0_f32 , clipping_0 : 0_u32 , clipping_1 : 0_u32 , clipping_2 : 0_u32 , } ; } impl Default for VIBRATION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for VIBRATION_DATA { type Message = MavMessage ; const ID : u32 = 241u32 ; const NAME : & 'static str = "VIBRATION" ; const EXTRA_CRC : u8 = 90u8 ; const ENCODED_LEN : usize = 32usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . vibration_x = buf . get_f32_le () ; __struct . vibration_y = buf . get_f32_le () ; __struct . vibration_z = buf . get_f32_le () ; __struct . clipping_0 = buf . get_u32_le () ; __struct . clipping_1 = buf . get_u32_le () ; __struct . clipping_2 = buf . get_u32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . vibration_x) ; __tmp . put_f32_le (self . vibration_y) ; __tmp . put_f32_le (self . vibration_z) ; __tmp . put_u32_le (self . clipping_0) ; __tmp . put_u32_le (self . clipping_1) ; __tmp . put_u32_le (self . clipping_2) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct DEVICE_OP_WRITE_REPLY_DATA { pub request_id : u32 , pub result : u8 , } impl DEVICE_OP_WRITE_REPLY_DATA { pub const ENCODED_LEN : usize = 5usize ; pub const DEFAULT : Self = Self { request_id : 0_u32 , result : 0_u8 , } ; } impl Default for DEVICE_OP_WRITE_REPLY_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for DEVICE_OP_WRITE_REPLY_DATA { type Message = MavMessage ; const ID : u32 = 11003u32 ; const NAME : & 'static str = "DEVICE_OP_WRITE_REPLY" ; const EXTRA_CRC : u8 = 64u8 ; const ENCODED_LEN : usize = 5usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . request_id = buf . get_u32_le () ; __struct . result = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . request_id) ; __tmp . put_u8 (self . result) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct OSD_PARAM_CONFIG_DATA { pub request_id : u32 , pub min_value : f32 , pub max_value : f32 , pub increment : f32 , pub target_system : u8 , pub target_component : u8 , pub osd_screen : u8 , pub osd_index : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub param_id : [u8 ; 16] , pub config_type : OsdParamConfigType , } impl OSD_PARAM_CONFIG_DATA { pub const ENCODED_LEN : usize = 37usize ; pub const DEFAULT : Self = Self { request_id : 0_u32 , min_value : 0.0_f32 , max_value : 0.0_f32 , increment : 0.0_f32 , target_system : 0_u8 , target_component : 0_u8 , osd_screen : 0_u8 , osd_index : 0_u8 , param_id : [0_u8 ; 16usize] , config_type : OsdParamConfigType :: DEFAULT , } ; } impl Default for OSD_PARAM_CONFIG_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for OSD_PARAM_CONFIG_DATA { type Message = MavMessage ; const ID : u32 = 11033u32 ; const NAME : & 'static str = "OSD_PARAM_CONFIG" ; const EXTRA_CRC : u8 = 195u8 ; const ENCODED_LEN : usize = 37usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . request_id = buf . get_u32_le () ; __struct . min_value = buf . get_f32_le () ; __struct . max_value = buf . get_f32_le () ; __struct . increment = buf . get_f32_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . osd_screen = buf . get_u8 () ; __struct . osd_index = buf . get_u8 () ; for v in & mut __struct . param_id { let val = buf . get_u8 () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . config_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "OsdParamConfigType" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . request_id) ; __tmp . put_f32_le (self . min_value) ; __tmp . put_f32_le (self . max_value) ; __tmp . put_f32_le (self . increment) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . osd_screen) ; __tmp . put_u8 (self . osd_index) ; for val in & self . param_id { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . config_type as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ESC_TELEMETRY_5_TO_8_DATA { # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub voltage : [u16 ; 4] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub current : [u16 ; 4] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub totalcurrent : [u16 ; 4] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub rpm : [u16 ; 4] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub count : [u16 ; 4] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub temperature : [u8 ; 4] , } impl ESC_TELEMETRY_5_TO_8_DATA { pub const ENCODED_LEN : usize = 44usize ; pub const DEFAULT : Self = Self { voltage : [0_u16 ; 4usize] , current : [0_u16 ; 4usize] , totalcurrent : [0_u16 ; 4usize] , rpm : [0_u16 ; 4usize] , count : [0_u16 ; 4usize] , temperature : [0_u8 ; 4usize] , } ; } impl Default for ESC_TELEMETRY_5_TO_8_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ESC_TELEMETRY_5_TO_8_DATA { type Message = MavMessage ; const ID : u32 = 11031u32 ; const NAME : & 'static str = "ESC_TELEMETRY_5_TO_8" ; const EXTRA_CRC : u8 = 133u8 ; const ENCODED_LEN : usize = 44usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; for v in & mut __struct . voltage { let val = buf . get_u16_le () ; * v = val ; } for v in & mut __struct . current { let val = buf . get_u16_le () ; * v = val ; } for v in & mut __struct . totalcurrent { let val = buf . get_u16_le () ; * v = val ; } for v in & mut __struct . rpm { let val = buf . get_u16_le () ; * v = val ; } for v in & mut __struct . count { let val = buf . get_u16_le () ; * v = val ; } for v in & mut __struct . temperature { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; for val in & self . voltage { __tmp . put_u16_le (* val) ; } for val in & self . current { __tmp . put_u16_le (* val) ; } for val in & self . totalcurrent { __tmp . put_u16_le (* val) ; } for val in & self . rpm { __tmp . put_u16_le (* val) ; } for val in & self . count { __tmp . put_u16_le (* val) ; } for val in & self . temperature { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PARAM_REQUEST_READ_DATA { pub param_index : i16 , pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub param_id : [u8 ; 16] , } impl PARAM_REQUEST_READ_DATA { pub const ENCODED_LEN : usize = 20usize ; pub const DEFAULT : Self = Self { param_index : 0_i16 , target_system : 0_u8 , target_component : 0_u8 , param_id : [0_u8 ; 16usize] , } ; } impl Default for PARAM_REQUEST_READ_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for PARAM_REQUEST_READ_DATA { type Message = MavMessage ; const ID : u32 = 20u32 ; const NAME : & 'static str = "PARAM_REQUEST_READ" ; const EXTRA_CRC : u8 = 214u8 ; const ENCODED_LEN : usize = 20usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . param_index = buf . get_i16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . param_id { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i16_le (self . param_index) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . param_id { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ATTITUDE_TARGET_DATA { pub time_boot_ms : u32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub q : [f32 ; 4] , pub body_roll_rate : f32 , pub body_pitch_rate : f32 , pub body_yaw_rate : f32 , pub thrust : f32 , pub type_mask : AttitudeTargetTypemask , } impl ATTITUDE_TARGET_DATA { pub const ENCODED_LEN : usize = 37usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , q : [0.0_f32 ; 4usize] , body_roll_rate : 0.0_f32 , body_pitch_rate : 0.0_f32 , body_yaw_rate : 0.0_f32 , thrust : 0.0_f32 , type_mask : AttitudeTargetTypemask :: DEFAULT , } ; } impl Default for ATTITUDE_TARGET_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ATTITUDE_TARGET_DATA { type Message = MavMessage ; const ID : u32 = 83u32 ; const NAME : & 'static str = "ATTITUDE_TARGET" ; const EXTRA_CRC : u8 = 22u8 ; const ENCODED_LEN : usize = 37usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; for v in & mut __struct . q { let val = buf . get_f32_le () ; * v = val ; } __struct . body_roll_rate = buf . get_f32_le () ; __struct . body_pitch_rate = buf . get_f32_le () ; __struct . body_yaw_rate = buf . get_f32_le () ; __struct . thrust = buf . get_f32_le () ; let tmp = buf . get_u8 () ; __struct . type_mask = AttitudeTargetTypemask :: from_bits (tmp & AttitudeTargetTypemask :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "AttitudeTargetTypemask" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; for val in & self . q { __tmp . put_f32_le (* val) ; } __tmp . put_f32_le (self . body_roll_rate) ; __tmp . put_f32_le (self . body_pitch_rate) ; __tmp . put_f32_le (self . body_yaw_rate) ; __tmp . put_f32_le (self . thrust) ; __tmp . put_u8 (self . type_mask . bits ()) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ESC_STATUS_DATA { pub time_usec : u64 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub rpm : [i32 ; 4] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub voltage : [f32 ; 4] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub current : [f32 ; 4] , pub index : u8 , } impl ESC_STATUS_DATA { pub const ENCODED_LEN : usize = 57usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , rpm : [0_i32 ; 4usize] , voltage : [0.0_f32 ; 4usize] , current : [0.0_f32 ; 4usize] , index : 0_u8 , } ; } impl Default for ESC_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ESC_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 291u32 ; const NAME : & 'static str = "ESC_STATUS" ; const EXTRA_CRC : u8 = 10u8 ; const ENCODED_LEN : usize = 57usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; for v in & mut __struct . rpm { let val = buf . get_i32_le () ; * v = val ; } for v in & mut __struct . voltage { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . current { let val = buf . get_f32_le () ; * v = val ; } __struct . index = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; for val in & self . rpm { __tmp . put_i32_le (* val) ; } for val in & self . voltage { __tmp . put_f32_le (* val) ; } for val in & self . current { __tmp . put_f32_le (* val) ; } __tmp . put_u8 (self . index) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CURRENT_EVENT_SEQUENCE_DATA { pub sequence : u16 , pub flags : MavEventCurrentSequenceFlags , } impl CURRENT_EVENT_SEQUENCE_DATA { pub const ENCODED_LEN : usize = 3usize ; pub const DEFAULT : Self = Self { sequence : 0_u16 , flags : MavEventCurrentSequenceFlags :: DEFAULT , } ; } impl Default for CURRENT_EVENT_SEQUENCE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CURRENT_EVENT_SEQUENCE_DATA { type Message = MavMessage ; const ID : u32 = 411u32 ; const NAME : & 'static str = "CURRENT_EVENT_SEQUENCE" ; const EXTRA_CRC : u8 = 106u8 ; const ENCODED_LEN : usize = 3usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . sequence = buf . get_u16_le () ; let tmp = buf . get_u8 () ; __struct . flags = MavEventCurrentSequenceFlags :: from_bits (tmp & MavEventCurrentSequenceFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "MavEventCurrentSequenceFlags" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . sequence) ; __tmp . put_u8 (self . flags . bits ()) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CAMERA_SETTINGS_DATA { pub time_boot_ms : u32 , pub mode_id : CameraMode , } impl CAMERA_SETTINGS_DATA { pub const ENCODED_LEN : usize = 5usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , mode_id : CameraMode :: DEFAULT , } ; } impl Default for CAMERA_SETTINGS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CAMERA_SETTINGS_DATA { type Message = MavMessage ; const ID : u32 = 260u32 ; const NAME : & 'static str = "CAMERA_SETTINGS" ; const EXTRA_CRC : u8 = 146u8 ; const ENCODED_LEN : usize = 5usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; let tmp = buf . get_u8 () ; __struct . mode_id = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "CameraMode" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_u8 (self . mode_id as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SET_MODE_DATA { pub custom_mode : u32 , pub target_system : u8 , pub base_mode : MavMode , } impl SET_MODE_DATA { pub const ENCODED_LEN : usize = 6usize ; pub const DEFAULT : Self = Self { custom_mode : 0_u32 , target_system : 0_u8 , base_mode : MavMode :: DEFAULT , } ; } impl Default for SET_MODE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SET_MODE_DATA { type Message = MavMessage ; const ID : u32 = 11u32 ; const NAME : & 'static str = "SET_MODE" ; const EXTRA_CRC : u8 = 89u8 ; const ENCODED_LEN : usize = 6usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . custom_mode = buf . get_u32_le () ; __struct . target_system = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . base_mode = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavMode" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . custom_mode) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . base_mode as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GPS_INJECT_DATA_DATA { pub target_system : u8 , pub target_component : u8 , pub len : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub data : [u8 ; 110] , } impl GPS_INJECT_DATA_DATA { pub const ENCODED_LEN : usize = 113usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , len : 0_u8 , data : [0_u8 ; 110usize] , } ; } impl Default for GPS_INJECT_DATA_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GPS_INJECT_DATA_DATA { type Message = MavMessage ; const ID : u32 = 123u32 ; const NAME : & 'static str = "GPS_INJECT_DATA" ; const EXTRA_CRC : u8 = 250u8 ; const ENCODED_LEN : usize = 113usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . len = buf . get_u8 () ; for v in & mut __struct . data { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . len) ; for val in & self . data { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GIMBAL_MANAGER_SET_PITCHYAW_DATA { pub flags : GimbalManagerFlags , pub pitch : f32 , pub yaw : f32 , pub pitch_rate : f32 , pub yaw_rate : f32 , pub target_system : u8 , pub target_component : u8 , pub gimbal_device_id : u8 , } impl GIMBAL_MANAGER_SET_PITCHYAW_DATA { pub const ENCODED_LEN : usize = 23usize ; pub const DEFAULT : Self = Self { flags : GimbalManagerFlags :: DEFAULT , pitch : 0.0_f32 , yaw : 0.0_f32 , pitch_rate : 0.0_f32 , yaw_rate : 0.0_f32 , target_system : 0_u8 , target_component : 0_u8 , gimbal_device_id : 0_u8 , } ; } impl Default for GIMBAL_MANAGER_SET_PITCHYAW_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GIMBAL_MANAGER_SET_PITCHYAW_DATA { type Message = MavMessage ; const ID : u32 = 287u32 ; const NAME : & 'static str = "GIMBAL_MANAGER_SET_PITCHYAW" ; const EXTRA_CRC : u8 = 1u8 ; const ENCODED_LEN : usize = 23usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u32_le () ; __struct . flags = FromPrimitive :: from_u32 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "GimbalManagerFlags" , value : tmp as u32 }) ? ; __struct . pitch = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; __struct . pitch_rate = buf . get_f32_le () ; __struct . yaw_rate = buf . get_f32_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . gimbal_device_id = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . flags as u32) ; __tmp . put_f32_le (self . pitch) ; __tmp . put_f32_le (self . yaw) ; __tmp . put_f32_le (self . pitch_rate) ; __tmp . put_f32_le (self . yaw_rate) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . gimbal_device_id) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GOPRO_GET_REQUEST_DATA { pub target_system : u8 , pub target_component : u8 , pub cmd_id : GoproCommand , } impl GOPRO_GET_REQUEST_DATA { pub const ENCODED_LEN : usize = 3usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , cmd_id : GoproCommand :: DEFAULT , } ; } impl Default for GOPRO_GET_REQUEST_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GOPRO_GET_REQUEST_DATA { type Message = MavMessage ; const ID : u32 = 216u32 ; const NAME : & 'static str = "GOPRO_GET_REQUEST" ; const EXTRA_CRC : u8 = 50u8 ; const ENCODED_LEN : usize = 3usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . cmd_id = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "GoproCommand" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . cmd_id as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GLOBAL_POSITION_INT_COV_DATA { pub time_usec : u64 , pub lat : i32 , pub lon : i32 , pub alt : i32 , pub relative_alt : i32 , pub vx : f32 , pub vy : f32 , pub vz : f32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub covariance : [f32 ; 36] , pub estimator_type : MavEstimatorType , } impl GLOBAL_POSITION_INT_COV_DATA { pub const ENCODED_LEN : usize = 181usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , lat : 0_i32 , lon : 0_i32 , alt : 0_i32 , relative_alt : 0_i32 , vx : 0.0_f32 , vy : 0.0_f32 , vz : 0.0_f32 , covariance : [0.0_f32 ; 36usize] , estimator_type : MavEstimatorType :: DEFAULT , } ; } impl Default for GLOBAL_POSITION_INT_COV_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GLOBAL_POSITION_INT_COV_DATA { type Message = MavMessage ; const ID : u32 = 63u32 ; const NAME : & 'static str = "GLOBAL_POSITION_INT_COV" ; const EXTRA_CRC : u8 = 119u8 ; const ENCODED_LEN : usize = 181usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . alt = buf . get_i32_le () ; __struct . relative_alt = buf . get_i32_le () ; __struct . vx = buf . get_f32_le () ; __struct . vy = buf . get_f32_le () ; __struct . vz = buf . get_f32_le () ; for v in & mut __struct . covariance { let val = buf . get_f32_le () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . estimator_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavEstimatorType" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_i32_le (self . alt) ; __tmp . put_i32_le (self . relative_alt) ; __tmp . put_f32_le (self . vx) ; __tmp . put_f32_le (self . vy) ; __tmp . put_f32_le (self . vz) ; for val in & self . covariance { __tmp . put_f32_le (* val) ; } __tmp . put_u8 (self . estimator_type as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MOUNT_CONFIGURE_DATA { pub target_system : u8 , pub target_component : u8 , pub mount_mode : MavMountMode , pub stab_roll : u8 , pub stab_pitch : u8 , pub stab_yaw : u8 , } impl MOUNT_CONFIGURE_DATA { pub const ENCODED_LEN : usize = 6usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , mount_mode : MavMountMode :: DEFAULT , stab_roll : 0_u8 , stab_pitch : 0_u8 , stab_yaw : 0_u8 , } ; } impl Default for MOUNT_CONFIGURE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MOUNT_CONFIGURE_DATA { type Message = MavMessage ; const ID : u32 = 156u32 ; const NAME : & 'static str = "MOUNT_CONFIGURE" ; const EXTRA_CRC : u8 = 19u8 ; const ENCODED_LEN : usize = 6usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . mount_mode = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavMountMode" , value : tmp as u32 }) ? ; __struct . stab_roll = buf . get_u8 () ; __struct . stab_pitch = buf . get_u8 () ; __struct . stab_yaw = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . mount_mode as u8) ; __tmp . put_u8 (self . stab_roll) ; __tmp . put_u8 (self . stab_pitch) ; __tmp . put_u8 (self . stab_yaw) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct WINCH_STATUS_DATA { pub time_usec : u64 , pub line_length : f32 , pub speed : f32 , pub tension : f32 , pub voltage : f32 , pub current : f32 , pub status : MavWinchStatusFlag , pub temperature : i16 , } impl WINCH_STATUS_DATA { pub const ENCODED_LEN : usize = 34usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , line_length : 0.0_f32 , speed : 0.0_f32 , tension : 0.0_f32 , voltage : 0.0_f32 , current : 0.0_f32 , status : MavWinchStatusFlag :: DEFAULT , temperature : 0_i16 , } ; } impl Default for WINCH_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for WINCH_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 9005u32 ; const NAME : & 'static str = "WINCH_STATUS" ; const EXTRA_CRC : u8 = 117u8 ; const ENCODED_LEN : usize = 34usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . line_length = buf . get_f32_le () ; __struct . speed = buf . get_f32_le () ; __struct . tension = buf . get_f32_le () ; __struct . voltage = buf . get_f32_le () ; __struct . current = buf . get_f32_le () ; let tmp = buf . get_u32_le () ; __struct . status = MavWinchStatusFlag :: from_bits (tmp & MavWinchStatusFlag :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "MavWinchStatusFlag" , value : tmp as u32 }) ? ; __struct . temperature = buf . get_i16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . line_length) ; __tmp . put_f32_le (self . speed) ; __tmp . put_f32_le (self . tension) ; __tmp . put_f32_le (self . voltage) ; __tmp . put_f32_le (self . current) ; __tmp . put_u32_le (self . status . bits ()) ; __tmp . put_i16_le (self . temperature) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct TIME_ESTIMATE_TO_TARGET_DATA { pub safe_return : i32 , pub land : i32 , pub mission_next_item : i32 , pub mission_end : i32 , pub commanded_action : i32 , } impl TIME_ESTIMATE_TO_TARGET_DATA { pub const ENCODED_LEN : usize = 20usize ; pub const DEFAULT : Self = Self { safe_return : 0_i32 , land : 0_i32 , mission_next_item : 0_i32 , mission_end : 0_i32 , commanded_action : 0_i32 , } ; } impl Default for TIME_ESTIMATE_TO_TARGET_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for TIME_ESTIMATE_TO_TARGET_DATA { type Message = MavMessage ; const ID : u32 = 380u32 ; const NAME : & 'static str = "TIME_ESTIMATE_TO_TARGET" ; const EXTRA_CRC : u8 = 232u8 ; const ENCODED_LEN : usize = 20usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . safe_return = buf . get_i32_le () ; __struct . land = buf . get_i32_le () ; __struct . mission_next_item = buf . get_i32_le () ; __struct . mission_end = buf . get_i32_le () ; __struct . commanded_action = buf . get_i32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . safe_return) ; __tmp . put_i32_le (self . land) ; __tmp . put_i32_le (self . mission_next_item) ; __tmp . put_i32_le (self . mission_end) ; __tmp . put_i32_le (self . commanded_action) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ESTIMATOR_STATUS_DATA { pub time_usec : u64 , pub vel_ratio : f32 , pub pos_horiz_ratio : f32 , pub pos_vert_ratio : f32 , pub mag_ratio : f32 , pub hagl_ratio : f32 , pub tas_ratio : f32 , pub pos_horiz_accuracy : f32 , pub pos_vert_accuracy : f32 , pub flags : EstimatorStatusFlags , } impl ESTIMATOR_STATUS_DATA { pub const ENCODED_LEN : usize = 42usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , vel_ratio : 0.0_f32 , pos_horiz_ratio : 0.0_f32 , pos_vert_ratio : 0.0_f32 , mag_ratio : 0.0_f32 , hagl_ratio : 0.0_f32 , tas_ratio : 0.0_f32 , pos_horiz_accuracy : 0.0_f32 , pos_vert_accuracy : 0.0_f32 , flags : EstimatorStatusFlags :: DEFAULT , } ; } impl Default for ESTIMATOR_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ESTIMATOR_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 230u32 ; const NAME : & 'static str = "ESTIMATOR_STATUS" ; const EXTRA_CRC : u8 = 163u8 ; const ENCODED_LEN : usize = 42usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . vel_ratio = buf . get_f32_le () ; __struct . pos_horiz_ratio = buf . get_f32_le () ; __struct . pos_vert_ratio = buf . get_f32_le () ; __struct . mag_ratio = buf . get_f32_le () ; __struct . hagl_ratio = buf . get_f32_le () ; __struct . tas_ratio = buf . get_f32_le () ; __struct . pos_horiz_accuracy = buf . get_f32_le () ; __struct . pos_vert_accuracy = buf . get_f32_le () ; let tmp = buf . get_u16_le () ; __struct . flags = EstimatorStatusFlags :: from_bits (tmp & EstimatorStatusFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "EstimatorStatusFlags" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . vel_ratio) ; __tmp . put_f32_le (self . pos_horiz_ratio) ; __tmp . put_f32_le (self . pos_vert_ratio) ; __tmp . put_f32_le (self . mag_ratio) ; __tmp . put_f32_le (self . hagl_ratio) ; __tmp . put_f32_le (self . tas_ratio) ; __tmp . put_f32_le (self . pos_horiz_accuracy) ; __tmp . put_f32_le (self . pos_vert_accuracy) ; __tmp . put_u16_le (self . flags . bits ()) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MISSION_SET_CURRENT_DATA { pub seq : u16 , pub target_system : u8 , pub target_component : u8 , } impl MISSION_SET_CURRENT_DATA { pub const ENCODED_LEN : usize = 4usize ; pub const DEFAULT : Self = Self { seq : 0_u16 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for MISSION_SET_CURRENT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MISSION_SET_CURRENT_DATA { type Message = MavMessage ; const ID : u32 = 41u32 ; const NAME : & 'static str = "MISSION_SET_CURRENT" ; const EXTRA_CRC : u8 = 28u8 ; const ENCODED_LEN : usize = 4usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . seq = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . seq) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LED_CONTROL_DATA { pub target_system : u8 , pub target_component : u8 , pub instance : u8 , pub pattern : u8 , pub custom_len : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub custom_bytes : [u8 ; 24] , } impl LED_CONTROL_DATA { pub const ENCODED_LEN : usize = 29usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , instance : 0_u8 , pattern : 0_u8 , custom_len : 0_u8 , custom_bytes : [0_u8 ; 24usize] , } ; } impl Default for LED_CONTROL_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for LED_CONTROL_DATA { type Message = MavMessage ; const ID : u32 = 186u32 ; const NAME : & 'static str = "LED_CONTROL" ; const EXTRA_CRC : u8 = 72u8 ; const ENCODED_LEN : usize = 29usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . instance = buf . get_u8 () ; __struct . pattern = buf . get_u8 () ; __struct . custom_len = buf . get_u8 () ; for v in & mut __struct . custom_bytes { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . instance) ; __tmp . put_u8 (self . pattern) ; __tmp . put_u8 (self . custom_len) ; for val in & self . custom_bytes { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct RADIO_DATA { pub rxerrors : u16 , pub fixed : u16 , pub rssi : u8 , pub remrssi : u8 , pub txbuf : u8 , pub noise : u8 , pub remnoise : u8 , } impl RADIO_DATA { pub const ENCODED_LEN : usize = 9usize ; pub const DEFAULT : Self = Self { rxerrors : 0_u16 , fixed : 0_u16 , rssi : 0_u8 , remrssi : 0_u8 , txbuf : 0_u8 , noise : 0_u8 , remnoise : 0_u8 , } ; } impl Default for RADIO_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for RADIO_DATA { type Message = MavMessage ; const ID : u32 = 166u32 ; const NAME : & 'static str = "RADIO" ; const EXTRA_CRC : u8 = 21u8 ; const ENCODED_LEN : usize = 9usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . rxerrors = buf . get_u16_le () ; __struct . fixed = buf . get_u16_le () ; __struct . rssi = buf . get_u8 () ; __struct . remrssi = buf . get_u8 () ; __struct . txbuf = buf . get_u8 () ; __struct . noise = buf . get_u8 () ; __struct . remnoise = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . rxerrors) ; __tmp . put_u16_le (self . fixed) ; __tmp . put_u8 (self . rssi) ; __tmp . put_u8 (self . remrssi) ; __tmp . put_u8 (self . txbuf) ; __tmp . put_u8 (self . noise) ; __tmp . put_u8 (self . remnoise) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct TERRAIN_CHECK_DATA { pub lat : i32 , pub lon : i32 , } impl TERRAIN_CHECK_DATA { pub const ENCODED_LEN : usize = 8usize ; pub const DEFAULT : Self = Self { lat : 0_i32 , lon : 0_i32 , } ; } impl Default for TERRAIN_CHECK_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for TERRAIN_CHECK_DATA { type Message = MavMessage ; const ID : u32 = 135u32 ; const NAME : & 'static str = "TERRAIN_CHECK" ; const EXTRA_CRC : u8 = 203u8 ; const ENCODED_LEN : usize = 8usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MISSION_ITEM_REACHED_DATA { pub seq : u16 , } impl MISSION_ITEM_REACHED_DATA { pub const ENCODED_LEN : usize = 2usize ; pub const DEFAULT : Self = Self { seq : 0_u16 , } ; } impl Default for MISSION_ITEM_REACHED_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MISSION_ITEM_REACHED_DATA { type Message = MavMessage ; const ID : u32 = 46u32 ; const NAME : & 'static str = "MISSION_ITEM_REACHED" ; const EXTRA_CRC : u8 = 11u8 ; const ENCODED_LEN : usize = 2usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . seq = buf . get_u16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . seq) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GPS_RAW_INT_DATA { pub time_usec : u64 , pub lat : i32 , pub lon : i32 , pub alt : i32 , pub eph : u16 , pub epv : u16 , pub vel : u16 , pub cog : u16 , pub fix_type : GpsFixType , pub satellites_visible : u8 , } impl GPS_RAW_INT_DATA { pub const ENCODED_LEN : usize = 30usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , lat : 0_i32 , lon : 0_i32 , alt : 0_i32 , eph : 0_u16 , epv : 0_u16 , vel : 0_u16 , cog : 0_u16 , fix_type : GpsFixType :: DEFAULT , satellites_visible : 0_u8 , } ; } impl Default for GPS_RAW_INT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GPS_RAW_INT_DATA { type Message = MavMessage ; const ID : u32 = 24u32 ; const NAME : & 'static str = "GPS_RAW_INT" ; const EXTRA_CRC : u8 = 24u8 ; const ENCODED_LEN : usize = 30usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . alt = buf . get_i32_le () ; __struct . eph = buf . get_u16_le () ; __struct . epv = buf . get_u16_le () ; __struct . vel = buf . get_u16_le () ; __struct . cog = buf . get_u16_le () ; let tmp = buf . get_u8 () ; __struct . fix_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "GpsFixType" , value : tmp as u32 }) ? ; __struct . satellites_visible = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_i32_le (self . alt) ; __tmp . put_u16_le (self . eph) ; __tmp . put_u16_le (self . epv) ; __tmp . put_u16_le (self . vel) ; __tmp . put_u16_le (self . cog) ; __tmp . put_u8 (self . fix_type as u8) ; __tmp . put_u8 (self . satellites_visible) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA { pub flags : GimbalManagerFlags , pub pitch : f32 , pub yaw : f32 , pub pitch_rate : f32 , pub yaw_rate : f32 , pub target_system : u8 , pub target_component : u8 , pub gimbal_device_id : u8 , } impl GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA { pub const ENCODED_LEN : usize = 23usize ; pub const DEFAULT : Self = Self { flags : GimbalManagerFlags :: DEFAULT , pitch : 0.0_f32 , yaw : 0.0_f32 , pitch_rate : 0.0_f32 , yaw_rate : 0.0_f32 , target_system : 0_u8 , target_component : 0_u8 , gimbal_device_id : 0_u8 , } ; } impl Default for GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA { type Message = MavMessage ; const ID : u32 = 288u32 ; const NAME : & 'static str = "GIMBAL_MANAGER_SET_MANUAL_CONTROL" ; const EXTRA_CRC : u8 = 20u8 ; const ENCODED_LEN : usize = 23usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u32_le () ; __struct . flags = FromPrimitive :: from_u32 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "GimbalManagerFlags" , value : tmp as u32 }) ? ; __struct . pitch = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; __struct . pitch_rate = buf . get_f32_le () ; __struct . yaw_rate = buf . get_f32_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . gimbal_device_id = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . flags as u32) ; __tmp . put_f32_le (self . pitch) ; __tmp . put_f32_le (self . yaw) ; __tmp . put_f32_le (self . pitch_rate) ; __tmp . put_f32_le (self . yaw_rate) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . gimbal_device_id) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct EFI_STATUS_DATA { pub ecu_index : f32 , pub rpm : f32 , pub fuel_consumed : f32 , pub fuel_flow : f32 , pub engine_load : f32 , pub throttle_position : f32 , pub spark_dwell_time : f32 , pub barometric_pressure : f32 , pub intake_manifold_pressure : f32 , pub intake_manifold_temperature : f32 , pub cylinder_head_temperature : f32 , pub ignition_timing : f32 , pub injection_time : f32 , pub exhaust_gas_temperature : f32 , pub throttle_out : f32 , pub pt_compensation : f32 , pub health : u8 , } impl EFI_STATUS_DATA { pub const ENCODED_LEN : usize = 65usize ; pub const DEFAULT : Self = Self { ecu_index : 0.0_f32 , rpm : 0.0_f32 , fuel_consumed : 0.0_f32 , fuel_flow : 0.0_f32 , engine_load : 0.0_f32 , throttle_position : 0.0_f32 , spark_dwell_time : 0.0_f32 , barometric_pressure : 0.0_f32 , intake_manifold_pressure : 0.0_f32 , intake_manifold_temperature : 0.0_f32 , cylinder_head_temperature : 0.0_f32 , ignition_timing : 0.0_f32 , injection_time : 0.0_f32 , exhaust_gas_temperature : 0.0_f32 , throttle_out : 0.0_f32 , pt_compensation : 0.0_f32 , health : 0_u8 , } ; } impl Default for EFI_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for EFI_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 225u32 ; const NAME : & 'static str = "EFI_STATUS" ; const EXTRA_CRC : u8 = 208u8 ; const ENCODED_LEN : usize = 65usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . ecu_index = buf . get_f32_le () ; __struct . rpm = buf . get_f32_le () ; __struct . fuel_consumed = buf . get_f32_le () ; __struct . fuel_flow = buf . get_f32_le () ; __struct . engine_load = buf . get_f32_le () ; __struct . throttle_position = buf . get_f32_le () ; __struct . spark_dwell_time = buf . get_f32_le () ; __struct . barometric_pressure = buf . get_f32_le () ; __struct . intake_manifold_pressure = buf . get_f32_le () ; __struct . intake_manifold_temperature = buf . get_f32_le () ; __struct . cylinder_head_temperature = buf . get_f32_le () ; __struct . ignition_timing = buf . get_f32_le () ; __struct . injection_time = buf . get_f32_le () ; __struct . exhaust_gas_temperature = buf . get_f32_le () ; __struct . throttle_out = buf . get_f32_le () ; __struct . pt_compensation = buf . get_f32_le () ; __struct . health = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . ecu_index) ; __tmp . put_f32_le (self . rpm) ; __tmp . put_f32_le (self . fuel_consumed) ; __tmp . put_f32_le (self . fuel_flow) ; __tmp . put_f32_le (self . engine_load) ; __tmp . put_f32_le (self . throttle_position) ; __tmp . put_f32_le (self . spark_dwell_time) ; __tmp . put_f32_le (self . barometric_pressure) ; __tmp . put_f32_le (self . intake_manifold_pressure) ; __tmp . put_f32_le (self . intake_manifold_temperature) ; __tmp . put_f32_le (self . cylinder_head_temperature) ; __tmp . put_f32_le (self . ignition_timing) ; __tmp . put_f32_le (self . injection_time) ; __tmp . put_f32_le (self . exhaust_gas_temperature) ; __tmp . put_f32_le (self . throttle_out) ; __tmp . put_f32_le (self . pt_compensation) ; __tmp . put_u8 (self . health) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct COMMAND_LONG_DATA { pub param1 : f32 , pub param2 : f32 , pub param3 : f32 , pub param4 : f32 , pub param5 : f32 , pub param6 : f32 , pub param7 : f32 , pub command : MavCmd , pub target_system : u8 , pub target_component : u8 , pub confirmation : u8 , } impl COMMAND_LONG_DATA { pub const ENCODED_LEN : usize = 33usize ; pub const DEFAULT : Self = Self { param1 : 0.0_f32 , param2 : 0.0_f32 , param3 : 0.0_f32 , param4 : 0.0_f32 , param5 : 0.0_f32 , param6 : 0.0_f32 , param7 : 0.0_f32 , command : MavCmd :: DEFAULT , target_system : 0_u8 , target_component : 0_u8 , confirmation : 0_u8 , } ; } impl Default for COMMAND_LONG_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for COMMAND_LONG_DATA { type Message = MavMessage ; const ID : u32 = 76u32 ; const NAME : & 'static str = "COMMAND_LONG" ; const EXTRA_CRC : u8 = 152u8 ; const ENCODED_LEN : usize = 33usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . param1 = buf . get_f32_le () ; __struct . param2 = buf . get_f32_le () ; __struct . param3 = buf . get_f32_le () ; __struct . param4 = buf . get_f32_le () ; __struct . param5 = buf . get_f32_le () ; __struct . param6 = buf . get_f32_le () ; __struct . param7 = buf . get_f32_le () ; let tmp = buf . get_u16_le () ; __struct . command = FromPrimitive :: from_u16 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavCmd" , value : tmp as u32 }) ? ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . confirmation = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . param1) ; __tmp . put_f32_le (self . param2) ; __tmp . put_f32_le (self . param3) ; __tmp . put_f32_le (self . param4) ; __tmp . put_f32_le (self . param5) ; __tmp . put_f32_le (self . param6) ; __tmp . put_f32_le (self . param7) ; __tmp . put_u16_le (self . command as u16) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . confirmation) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HIL_STATE_QUATERNION_DATA { pub time_usec : u64 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub attitude_quaternion : [f32 ; 4] , pub rollspeed : f32 , pub pitchspeed : f32 , pub yawspeed : f32 , pub lat : i32 , pub lon : i32 , pub alt : i32 , pub vx : i16 , pub vy : i16 , pub vz : i16 , pub ind_airspeed : u16 , pub true_airspeed : u16 , pub xacc : i16 , pub yacc : i16 , pub zacc : i16 , } impl HIL_STATE_QUATERNION_DATA { pub const ENCODED_LEN : usize = 64usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , attitude_quaternion : [0.0_f32 ; 4usize] , rollspeed : 0.0_f32 , pitchspeed : 0.0_f32 , yawspeed : 0.0_f32 , lat : 0_i32 , lon : 0_i32 , alt : 0_i32 , vx : 0_i16 , vy : 0_i16 , vz : 0_i16 , ind_airspeed : 0_u16 , true_airspeed : 0_u16 , xacc : 0_i16 , yacc : 0_i16 , zacc : 0_i16 , } ; } impl Default for HIL_STATE_QUATERNION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for HIL_STATE_QUATERNION_DATA { type Message = MavMessage ; const ID : u32 = 115u32 ; const NAME : & 'static str = "HIL_STATE_QUATERNION" ; const EXTRA_CRC : u8 = 4u8 ; const ENCODED_LEN : usize = 64usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; for v in & mut __struct . attitude_quaternion { let val = buf . get_f32_le () ; * v = val ; } __struct . rollspeed = buf . get_f32_le () ; __struct . pitchspeed = buf . get_f32_le () ; __struct . yawspeed = buf . get_f32_le () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . alt = buf . get_i32_le () ; __struct . vx = buf . get_i16_le () ; __struct . vy = buf . get_i16_le () ; __struct . vz = buf . get_i16_le () ; __struct . ind_airspeed = buf . get_u16_le () ; __struct . true_airspeed = buf . get_u16_le () ; __struct . xacc = buf . get_i16_le () ; __struct . yacc = buf . get_i16_le () ; __struct . zacc = buf . get_i16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; for val in & self . attitude_quaternion { __tmp . put_f32_le (* val) ; } __tmp . put_f32_le (self . rollspeed) ; __tmp . put_f32_le (self . pitchspeed) ; __tmp . put_f32_le (self . yawspeed) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_i32_le (self . alt) ; __tmp . put_i16_le (self . vx) ; __tmp . put_i16_le (self . vy) ; __tmp . put_i16_le (self . vz) ; __tmp . put_u16_le (self . ind_airspeed) ; __tmp . put_u16_le (self . true_airspeed) ; __tmp . put_i16_le (self . xacc) ; __tmp . put_i16_le (self . yacc) ; __tmp . put_i16_le (self . zacc) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct BUTTON_CHANGE_DATA { pub time_boot_ms : u32 , pub last_change_ms : u32 , pub state : u8 , } impl BUTTON_CHANGE_DATA { pub const ENCODED_LEN : usize = 9usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , last_change_ms : 0_u32 , state : 0_u8 , } ; } impl Default for BUTTON_CHANGE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for BUTTON_CHANGE_DATA { type Message = MavMessage ; const ID : u32 = 257u32 ; const NAME : & 'static str = "BUTTON_CHANGE" ; const EXTRA_CRC : u8 = 131u8 ; const ENCODED_LEN : usize = 9usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . last_change_ms = buf . get_u32_le () ; __struct . state = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_u32_le (self . last_change_ms) ; __tmp . put_u8 (self . state) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA { pub time_usec : u64 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub pos_x : [f32 ; 5] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub pos_y : [f32 ; 5] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub pos_z : [f32 ; 5] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub vel_x : [f32 ; 5] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub vel_y : [f32 ; 5] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub vel_z : [f32 ; 5] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub acc_x : [f32 ; 5] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub acc_y : [f32 ; 5] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub acc_z : [f32 ; 5] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub pos_yaw : [f32 ; 5] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub vel_yaw : [f32 ; 5] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub command : [u16 ; 5] , pub valid_points : u8 , } impl TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA { pub const ENCODED_LEN : usize = 239usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , pos_x : [0.0_f32 ; 5usize] , pos_y : [0.0_f32 ; 5usize] , pos_z : [0.0_f32 ; 5usize] , vel_x : [0.0_f32 ; 5usize] , vel_y : [0.0_f32 ; 5usize] , vel_z : [0.0_f32 ; 5usize] , acc_x : [0.0_f32 ; 5usize] , acc_y : [0.0_f32 ; 5usize] , acc_z : [0.0_f32 ; 5usize] , pos_yaw : [0.0_f32 ; 5usize] , vel_yaw : [0.0_f32 ; 5usize] , command : [0_u16 ; 5usize] , valid_points : 0_u8 , } ; } impl Default for TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA { type Message = MavMessage ; const ID : u32 = 332u32 ; const NAME : & 'static str = "TRAJECTORY_REPRESENTATION_WAYPOINTS" ; const EXTRA_CRC : u8 = 236u8 ; const ENCODED_LEN : usize = 239usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; for v in & mut __struct . pos_x { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . pos_y { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . pos_z { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . vel_x { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . vel_y { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . vel_z { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . acc_x { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . acc_y { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . acc_z { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . pos_yaw { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . vel_yaw { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . command { let val = buf . get_u16_le () ; * v = val ; } __struct . valid_points = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; for val in & self . pos_x { __tmp . put_f32_le (* val) ; } for val in & self . pos_y { __tmp . put_f32_le (* val) ; } for val in & self . pos_z { __tmp . put_f32_le (* val) ; } for val in & self . vel_x { __tmp . put_f32_le (* val) ; } for val in & self . vel_y { __tmp . put_f32_le (* val) ; } for val in & self . vel_z { __tmp . put_f32_le (* val) ; } for val in & self . acc_x { __tmp . put_f32_le (* val) ; } for val in & self . acc_y { __tmp . put_f32_le (* val) ; } for val in & self . acc_z { __tmp . put_f32_le (* val) ; } for val in & self . pos_yaw { __tmp . put_f32_le (* val) ; } for val in & self . vel_yaw { __tmp . put_f32_le (* val) ; } for val in & self . command { __tmp . put_u16_le (* val) ; } __tmp . put_u8 (self . valid_points) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct RAW_RPM_DATA { pub frequency : f32 , pub index : u8 , } impl RAW_RPM_DATA { pub const ENCODED_LEN : usize = 5usize ; pub const DEFAULT : Self = Self { frequency : 0.0_f32 , index : 0_u8 , } ; } impl Default for RAW_RPM_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for RAW_RPM_DATA { type Message = MavMessage ; const ID : u32 = 339u32 ; const NAME : & 'static str = "RAW_RPM" ; const EXTRA_CRC : u8 = 199u8 ; const ENCODED_LEN : usize = 5usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . frequency = buf . get_f32_le () ; __struct . index = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . frequency) ; __tmp . put_u8 (self . index) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SCALED_PRESSURE_DATA { pub time_boot_ms : u32 , pub press_abs : f32 , pub press_diff : f32 , pub temperature : i16 , } impl SCALED_PRESSURE_DATA { pub const ENCODED_LEN : usize = 14usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , press_abs : 0.0_f32 , press_diff : 0.0_f32 , temperature : 0_i16 , } ; } impl Default for SCALED_PRESSURE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SCALED_PRESSURE_DATA { type Message = MavMessage ; const ID : u32 = 29u32 ; const NAME : & 'static str = "SCALED_PRESSURE" ; const EXTRA_CRC : u8 = 115u8 ; const ENCODED_LEN : usize = 14usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . press_abs = buf . get_f32_le () ; __struct . press_diff = buf . get_f32_le () ; __struct . temperature = buf . get_i16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . press_abs) ; __tmp . put_f32_le (self . press_diff) ; __tmp . put_i16_le (self . temperature) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA { pub rfHealth : UavionixAdsbRfHealth , } impl UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA { pub const ENCODED_LEN : usize = 1usize ; pub const DEFAULT : Self = Self { rfHealth : UavionixAdsbRfHealth :: DEFAULT , } ; } impl Default for UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA { type Message = MavMessage ; const ID : u32 = 10003u32 ; const NAME : & 'static str = "UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT" ; const EXTRA_CRC : u8 = 4u8 ; const ENCODED_LEN : usize = 1usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u8 () ; __struct . rfHealth = UavionixAdsbRfHealth :: from_bits (tmp & UavionixAdsbRfHealth :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "UavionixAdsbRfHealth" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . rfHealth . bits ()) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SENSOR_OFFSETS_DATA { pub mag_declination : f32 , pub raw_press : i32 , pub raw_temp : i32 , pub gyro_cal_x : f32 , pub gyro_cal_y : f32 , pub gyro_cal_z : f32 , pub accel_cal_x : f32 , pub accel_cal_y : f32 , pub accel_cal_z : f32 , pub mag_ofs_x : i16 , pub mag_ofs_y : i16 , pub mag_ofs_z : i16 , } impl SENSOR_OFFSETS_DATA { pub const ENCODED_LEN : usize = 42usize ; pub const DEFAULT : Self = Self { mag_declination : 0.0_f32 , raw_press : 0_i32 , raw_temp : 0_i32 , gyro_cal_x : 0.0_f32 , gyro_cal_y : 0.0_f32 , gyro_cal_z : 0.0_f32 , accel_cal_x : 0.0_f32 , accel_cal_y : 0.0_f32 , accel_cal_z : 0.0_f32 , mag_ofs_x : 0_i16 , mag_ofs_y : 0_i16 , mag_ofs_z : 0_i16 , } ; } impl Default for SENSOR_OFFSETS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SENSOR_OFFSETS_DATA { type Message = MavMessage ; const ID : u32 = 150u32 ; const NAME : & 'static str = "SENSOR_OFFSETS" ; const EXTRA_CRC : u8 = 134u8 ; const ENCODED_LEN : usize = 42usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . mag_declination = buf . get_f32_le () ; __struct . raw_press = buf . get_i32_le () ; __struct . raw_temp = buf . get_i32_le () ; __struct . gyro_cal_x = buf . get_f32_le () ; __struct . gyro_cal_y = buf . get_f32_le () ; __struct . gyro_cal_z = buf . get_f32_le () ; __struct . accel_cal_x = buf . get_f32_le () ; __struct . accel_cal_y = buf . get_f32_le () ; __struct . accel_cal_z = buf . get_f32_le () ; __struct . mag_ofs_x = buf . get_i16_le () ; __struct . mag_ofs_y = buf . get_i16_le () ; __struct . mag_ofs_z = buf . get_i16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . mag_declination) ; __tmp . put_i32_le (self . raw_press) ; __tmp . put_i32_le (self . raw_temp) ; __tmp . put_f32_le (self . gyro_cal_x) ; __tmp . put_f32_le (self . gyro_cal_y) ; __tmp . put_f32_le (self . gyro_cal_z) ; __tmp . put_f32_le (self . accel_cal_x) ; __tmp . put_f32_le (self . accel_cal_y) ; __tmp . put_f32_le (self . accel_cal_z) ; __tmp . put_i16_le (self . mag_ofs_x) ; __tmp . put_i16_le (self . mag_ofs_y) ; __tmp . put_i16_le (self . mag_ofs_z) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HIGHRES_IMU_DATA { pub time_usec : u64 , pub xacc : f32 , pub yacc : f32 , pub zacc : f32 , pub xgyro : f32 , pub ygyro : f32 , pub zgyro : f32 , pub xmag : f32 , pub ymag : f32 , pub zmag : f32 , pub abs_pressure : f32 , pub diff_pressure : f32 , pub pressure_alt : f32 , pub temperature : f32 , pub fields_updated : HighresImuUpdatedFlags , } impl HIGHRES_IMU_DATA { pub const ENCODED_LEN : usize = 62usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , xacc : 0.0_f32 , yacc : 0.0_f32 , zacc : 0.0_f32 , xgyro : 0.0_f32 , ygyro : 0.0_f32 , zgyro : 0.0_f32 , xmag : 0.0_f32 , ymag : 0.0_f32 , zmag : 0.0_f32 , abs_pressure : 0.0_f32 , diff_pressure : 0.0_f32 , pressure_alt : 0.0_f32 , temperature : 0.0_f32 , fields_updated : HighresImuUpdatedFlags :: DEFAULT , } ; } impl Default for HIGHRES_IMU_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for HIGHRES_IMU_DATA { type Message = MavMessage ; const ID : u32 = 105u32 ; const NAME : & 'static str = "HIGHRES_IMU" ; const EXTRA_CRC : u8 = 93u8 ; const ENCODED_LEN : usize = 62usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . xacc = buf . get_f32_le () ; __struct . yacc = buf . get_f32_le () ; __struct . zacc = buf . get_f32_le () ; __struct . xgyro = buf . get_f32_le () ; __struct . ygyro = buf . get_f32_le () ; __struct . zgyro = buf . get_f32_le () ; __struct . xmag = buf . get_f32_le () ; __struct . ymag = buf . get_f32_le () ; __struct . zmag = buf . get_f32_le () ; __struct . abs_pressure = buf . get_f32_le () ; __struct . diff_pressure = buf . get_f32_le () ; __struct . pressure_alt = buf . get_f32_le () ; __struct . temperature = buf . get_f32_le () ; let tmp = buf . get_u16_le () ; __struct . fields_updated = HighresImuUpdatedFlags :: from_bits (tmp & HighresImuUpdatedFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "HighresImuUpdatedFlags" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . xacc) ; __tmp . put_f32_le (self . yacc) ; __tmp . put_f32_le (self . zacc) ; __tmp . put_f32_le (self . xgyro) ; __tmp . put_f32_le (self . ygyro) ; __tmp . put_f32_le (self . zgyro) ; __tmp . put_f32_le (self . xmag) ; __tmp . put_f32_le (self . ymag) ; __tmp . put_f32_le (self . zmag) ; __tmp . put_f32_le (self . abs_pressure) ; __tmp . put_f32_le (self . diff_pressure) ; __tmp . put_f32_le (self . pressure_alt) ; __tmp . put_f32_le (self . temperature) ; __tmp . put_u16_le (self . fields_updated . bits ()) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct AHRS2_DATA { pub roll : f32 , pub pitch : f32 , pub yaw : f32 , pub altitude : f32 , pub lat : i32 , pub lng : i32 , } impl AHRS2_DATA { pub const ENCODED_LEN : usize = 24usize ; pub const DEFAULT : Self = Self { roll : 0.0_f32 , pitch : 0.0_f32 , yaw : 0.0_f32 , altitude : 0.0_f32 , lat : 0_i32 , lng : 0_i32 , } ; } impl Default for AHRS2_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for AHRS2_DATA { type Message = MavMessage ; const ID : u32 = 178u32 ; const NAME : & 'static str = "AHRS2" ; const EXTRA_CRC : u8 = 47u8 ; const ENCODED_LEN : usize = 24usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . roll = buf . get_f32_le () ; __struct . pitch = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; __struct . altitude = buf . get_f32_le () ; __struct . lat = buf . get_i32_le () ; __struct . lng = buf . get_i32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . roll) ; __tmp . put_f32_le (self . pitch) ; __tmp . put_f32_le (self . yaw) ; __tmp . put_f32_le (self . altitude) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lng) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ATTITUDE_QUATERNION_COV_DATA { pub time_usec : u64 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub q : [f32 ; 4] , pub rollspeed : f32 , pub pitchspeed : f32 , pub yawspeed : f32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub covariance : [f32 ; 9] , } impl ATTITUDE_QUATERNION_COV_DATA { pub const ENCODED_LEN : usize = 72usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , q : [0.0_f32 ; 4usize] , rollspeed : 0.0_f32 , pitchspeed : 0.0_f32 , yawspeed : 0.0_f32 , covariance : [0.0_f32 ; 9usize] , } ; } impl Default for ATTITUDE_QUATERNION_COV_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ATTITUDE_QUATERNION_COV_DATA { type Message = MavMessage ; const ID : u32 = 61u32 ; const NAME : & 'static str = "ATTITUDE_QUATERNION_COV" ; const EXTRA_CRC : u8 = 167u8 ; const ENCODED_LEN : usize = 72usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; for v in & mut __struct . q { let val = buf . get_f32_le () ; * v = val ; } __struct . rollspeed = buf . get_f32_le () ; __struct . pitchspeed = buf . get_f32_le () ; __struct . yawspeed = buf . get_f32_le () ; for v in & mut __struct . covariance { let val = buf . get_f32_le () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; for val in & self . q { __tmp . put_f32_le (* val) ; } __tmp . put_f32_le (self . rollspeed) ; __tmp . put_f32_le (self . pitchspeed) ; __tmp . put_f32_le (self . yawspeed) ; for val in & self . covariance { __tmp . put_f32_le (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MISSION_CURRENT_DATA { pub seq : u16 , } impl MISSION_CURRENT_DATA { pub const ENCODED_LEN : usize = 2usize ; pub const DEFAULT : Self = Self { seq : 0_u16 , } ; } impl Default for MISSION_CURRENT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MISSION_CURRENT_DATA { type Message = MavMessage ; const ID : u32 = 42u32 ; const NAME : & 'static str = "MISSION_CURRENT" ; const EXTRA_CRC : u8 = 28u8 ; const ENCODED_LEN : usize = 2usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . seq = buf . get_u16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . seq) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct AIRSPEED_AUTOCAL_DATA { pub vx : f32 , pub vy : f32 , pub vz : f32 , pub diff_pressure : f32 , pub EAS2TAS : f32 , pub ratio : f32 , pub state_x : f32 , pub state_y : f32 , pub state_z : f32 , pub Pax : f32 , pub Pby : f32 , pub Pcz : f32 , } impl AIRSPEED_AUTOCAL_DATA { pub const ENCODED_LEN : usize = 48usize ; pub const DEFAULT : Self = Self { vx : 0.0_f32 , vy : 0.0_f32 , vz : 0.0_f32 , diff_pressure : 0.0_f32 , EAS2TAS : 0.0_f32 , ratio : 0.0_f32 , state_x : 0.0_f32 , state_y : 0.0_f32 , state_z : 0.0_f32 , Pax : 0.0_f32 , Pby : 0.0_f32 , Pcz : 0.0_f32 , } ; } impl Default for AIRSPEED_AUTOCAL_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for AIRSPEED_AUTOCAL_DATA { type Message = MavMessage ; const ID : u32 = 174u32 ; const NAME : & 'static str = "AIRSPEED_AUTOCAL" ; const EXTRA_CRC : u8 = 167u8 ; const ENCODED_LEN : usize = 48usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . vx = buf . get_f32_le () ; __struct . vy = buf . get_f32_le () ; __struct . vz = buf . get_f32_le () ; __struct . diff_pressure = buf . get_f32_le () ; __struct . EAS2TAS = buf . get_f32_le () ; __struct . ratio = buf . get_f32_le () ; __struct . state_x = buf . get_f32_le () ; __struct . state_y = buf . get_f32_le () ; __struct . state_z = buf . get_f32_le () ; __struct . Pax = buf . get_f32_le () ; __struct . Pby = buf . get_f32_le () ; __struct . Pcz = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . vx) ; __tmp . put_f32_le (self . vy) ; __tmp . put_f32_le (self . vz) ; __tmp . put_f32_le (self . diff_pressure) ; __tmp . put_f32_le (self . EAS2TAS) ; __tmp . put_f32_le (self . ratio) ; __tmp . put_f32_le (self . state_x) ; __tmp . put_f32_le (self . state_y) ; __tmp . put_f32_le (self . state_z) ; __tmp . put_f32_le (self . Pax) ; __tmp . put_f32_le (self . Pby) ; __tmp . put_f32_le (self . Pcz) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ODOMETRY_DATA { pub time_usec : u64 , pub x : f32 , pub y : f32 , pub z : f32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub q : [f32 ; 4] , pub vx : f32 , pub vy : f32 , pub vz : f32 , pub rollspeed : f32 , pub pitchspeed : f32 , pub yawspeed : f32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub pose_covariance : [f32 ; 21] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub velocity_covariance : [f32 ; 21] , pub frame_id : MavFrame , pub child_frame_id : MavFrame , } impl ODOMETRY_DATA { pub const ENCODED_LEN : usize = 230usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , x : 0.0_f32 , y : 0.0_f32 , z : 0.0_f32 , q : [0.0_f32 ; 4usize] , vx : 0.0_f32 , vy : 0.0_f32 , vz : 0.0_f32 , rollspeed : 0.0_f32 , pitchspeed : 0.0_f32 , yawspeed : 0.0_f32 , pose_covariance : [0.0_f32 ; 21usize] , velocity_covariance : [0.0_f32 ; 21usize] , frame_id : MavFrame :: DEFAULT , child_frame_id : MavFrame :: DEFAULT , } ; } impl Default for ODOMETRY_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ODOMETRY_DATA { type Message = MavMessage ; const ID : u32 = 331u32 ; const NAME : & 'static str = "ODOMETRY" ; const EXTRA_CRC : u8 = 91u8 ; const ENCODED_LEN : usize = 230usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . x = buf . get_f32_le () ; __struct . y = buf . get_f32_le () ; __struct . z = buf . get_f32_le () ; for v in & mut __struct . q { let val = buf . get_f32_le () ; * v = val ; } __struct . vx = buf . get_f32_le () ; __struct . vy = buf . get_f32_le () ; __struct . vz = buf . get_f32_le () ; __struct . rollspeed = buf . get_f32_le () ; __struct . pitchspeed = buf . get_f32_le () ; __struct . yawspeed = buf . get_f32_le () ; for v in & mut __struct . pose_covariance { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . velocity_covariance { let val = buf . get_f32_le () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . frame_id = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavFrame" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . child_frame_id = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavFrame" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; for val in & self . q { __tmp . put_f32_le (* val) ; } __tmp . put_f32_le (self . vx) ; __tmp . put_f32_le (self . vy) ; __tmp . put_f32_le (self . vz) ; __tmp . put_f32_le (self . rollspeed) ; __tmp . put_f32_le (self . pitchspeed) ; __tmp . put_f32_le (self . yawspeed) ; for val in & self . pose_covariance { __tmp . put_f32_le (* val) ; } for val in & self . velocity_covariance { __tmp . put_f32_le (* val) ; } __tmp . put_u8 (self . frame_id as u8) ; __tmp . put_u8 (self . child_frame_id as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ICAROUS_HEARTBEAT_DATA { pub status : IcarousFmsState , } impl ICAROUS_HEARTBEAT_DATA { pub const ENCODED_LEN : usize = 1usize ; pub const DEFAULT : Self = Self { status : IcarousFmsState :: DEFAULT , } ; } impl Default for ICAROUS_HEARTBEAT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ICAROUS_HEARTBEAT_DATA { type Message = MavMessage ; const ID : u32 = 42000u32 ; const NAME : & 'static str = "ICAROUS_HEARTBEAT" ; const EXTRA_CRC : u8 = 227u8 ; const ENCODED_LEN : usize = 1usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u8 () ; __struct . status = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "IcarousFmsState" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . status as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MEMINFO_DATA { pub brkval : u16 , pub freemem : u16 , } impl MEMINFO_DATA { pub const ENCODED_LEN : usize = 4usize ; pub const DEFAULT : Self = Self { brkval : 0_u16 , freemem : 0_u16 , } ; } impl Default for MEMINFO_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MEMINFO_DATA { type Message = MavMessage ; const ID : u32 = 152u32 ; const NAME : & 'static str = "MEMINFO" ; const EXTRA_CRC : u8 = 208u8 ; const ENCODED_LEN : usize = 4usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . brkval = buf . get_u16_le () ; __struct . freemem = buf . get_u16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . brkval) ; __tmp . put_u16_le (self . freemem) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct EXTENDED_SYS_STATE_DATA { pub vtol_state : MavVtolState , pub landed_state : MavLandedState , } impl EXTENDED_SYS_STATE_DATA { pub const ENCODED_LEN : usize = 2usize ; pub const DEFAULT : Self = Self { vtol_state : MavVtolState :: DEFAULT , landed_state : MavLandedState :: DEFAULT , } ; } impl Default for EXTENDED_SYS_STATE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for EXTENDED_SYS_STATE_DATA { type Message = MavMessage ; const ID : u32 = 245u32 ; const NAME : & 'static str = "EXTENDED_SYS_STATE" ; const EXTRA_CRC : u8 = 130u8 ; const ENCODED_LEN : usize = 2usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u8 () ; __struct . vtol_state = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavVtolState" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . landed_state = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavLandedState" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . vtol_state as u8) ; __tmp . put_u8 (self . landed_state as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct TRAJECTORY_REPRESENTATION_BEZIER_DATA { pub time_usec : u64 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub pos_x : [f32 ; 5] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub pos_y : [f32 ; 5] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub pos_z : [f32 ; 5] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub delta : [f32 ; 5] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub pos_yaw : [f32 ; 5] , pub valid_points : u8 , } impl TRAJECTORY_REPRESENTATION_BEZIER_DATA { pub const ENCODED_LEN : usize = 109usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , pos_x : [0.0_f32 ; 5usize] , pos_y : [0.0_f32 ; 5usize] , pos_z : [0.0_f32 ; 5usize] , delta : [0.0_f32 ; 5usize] , pos_yaw : [0.0_f32 ; 5usize] , valid_points : 0_u8 , } ; } impl Default for TRAJECTORY_REPRESENTATION_BEZIER_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for TRAJECTORY_REPRESENTATION_BEZIER_DATA { type Message = MavMessage ; const ID : u32 = 333u32 ; const NAME : & 'static str = "TRAJECTORY_REPRESENTATION_BEZIER" ; const EXTRA_CRC : u8 = 231u8 ; const ENCODED_LEN : usize = 109usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; for v in & mut __struct . pos_x { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . pos_y { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . pos_z { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . delta { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . pos_yaw { let val = buf . get_f32_le () ; * v = val ; } __struct . valid_points = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; for val in & self . pos_x { __tmp . put_f32_le (* val) ; } for val in & self . pos_y { __tmp . put_f32_le (* val) ; } for val in & self . pos_z { __tmp . put_f32_le (* val) ; } for val in & self . delta { __tmp . put_f32_le (* val) ; } for val in & self . pos_yaw { __tmp . put_f32_le (* val) ; } __tmp . put_u8 (self . valid_points) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CAMERA_STATUS_DATA { pub time_usec : u64 , pub p1 : f32 , pub p2 : f32 , pub p3 : f32 , pub p4 : f32 , pub img_idx : u16 , pub target_system : u8 , pub cam_idx : u8 , pub event_id : CameraStatusTypes , } impl CAMERA_STATUS_DATA { pub const ENCODED_LEN : usize = 29usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , p1 : 0.0_f32 , p2 : 0.0_f32 , p3 : 0.0_f32 , p4 : 0.0_f32 , img_idx : 0_u16 , target_system : 0_u8 , cam_idx : 0_u8 , event_id : CameraStatusTypes :: DEFAULT , } ; } impl Default for CAMERA_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CAMERA_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 179u32 ; const NAME : & 'static str = "CAMERA_STATUS" ; const EXTRA_CRC : u8 = 189u8 ; const ENCODED_LEN : usize = 29usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . p1 = buf . get_f32_le () ; __struct . p2 = buf . get_f32_le () ; __struct . p3 = buf . get_f32_le () ; __struct . p4 = buf . get_f32_le () ; __struct . img_idx = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . cam_idx = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . event_id = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "CameraStatusTypes" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . p1) ; __tmp . put_f32_le (self . p2) ; __tmp . put_f32_le (self . p3) ; __tmp . put_f32_le (self . p4) ; __tmp . put_u16_le (self . img_idx) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . cam_idx) ; __tmp . put_u8 (self . event_id as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct WIND_COV_DATA { pub time_usec : u64 , pub wind_x : f32 , pub wind_y : f32 , pub wind_z : f32 , pub var_horiz : f32 , pub var_vert : f32 , pub wind_alt : f32 , pub horiz_accuracy : f32 , pub vert_accuracy : f32 , } impl WIND_COV_DATA { pub const ENCODED_LEN : usize = 40usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , wind_x : 0.0_f32 , wind_y : 0.0_f32 , wind_z : 0.0_f32 , var_horiz : 0.0_f32 , var_vert : 0.0_f32 , wind_alt : 0.0_f32 , horiz_accuracy : 0.0_f32 , vert_accuracy : 0.0_f32 , } ; } impl Default for WIND_COV_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for WIND_COV_DATA { type Message = MavMessage ; const ID : u32 = 231u32 ; const NAME : & 'static str = "WIND_COV" ; const EXTRA_CRC : u8 = 105u8 ; const ENCODED_LEN : usize = 40usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . wind_x = buf . get_f32_le () ; __struct . wind_y = buf . get_f32_le () ; __struct . wind_z = buf . get_f32_le () ; __struct . var_horiz = buf . get_f32_le () ; __struct . var_vert = buf . get_f32_le () ; __struct . wind_alt = buf . get_f32_le () ; __struct . horiz_accuracy = buf . get_f32_le () ; __struct . vert_accuracy = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . wind_x) ; __tmp . put_f32_le (self . wind_y) ; __tmp . put_f32_le (self . wind_z) ; __tmp . put_f32_le (self . var_horiz) ; __tmp . put_f32_le (self . var_vert) ; __tmp . put_f32_le (self . wind_alt) ; __tmp . put_f32_le (self . horiz_accuracy) ; __tmp . put_f32_le (self . vert_accuracy) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct AIS_VESSEL_DATA { pub MMSI : u32 , pub lat : i32 , pub lon : i32 , pub COG : u16 , pub heading : u16 , pub velocity : u16 , pub dimension_bow : u16 , pub dimension_stern : u16 , pub tslc : u16 , pub flags : AisFlags , pub turn_rate : i8 , pub navigational_status : AisNavStatus , pub mavtype : AisType , pub dimension_port : u8 , pub dimension_starboard : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub callsign : [u8 ; 7] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub name : [u8 ; 20] , } impl AIS_VESSEL_DATA { pub const ENCODED_LEN : usize = 58usize ; pub const DEFAULT : Self = Self { MMSI : 0_u32 , lat : 0_i32 , lon : 0_i32 , COG : 0_u16 , heading : 0_u16 , velocity : 0_u16 , dimension_bow : 0_u16 , dimension_stern : 0_u16 , tslc : 0_u16 , flags : AisFlags :: DEFAULT , turn_rate : 0_i8 , navigational_status : AisNavStatus :: DEFAULT , mavtype : AisType :: DEFAULT , dimension_port : 0_u8 , dimension_starboard : 0_u8 , callsign : [0_u8 ; 7usize] , name : [0_u8 ; 20usize] , } ; } impl Default for AIS_VESSEL_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for AIS_VESSEL_DATA { type Message = MavMessage ; const ID : u32 = 301u32 ; const NAME : & 'static str = "AIS_VESSEL" ; const EXTRA_CRC : u8 = 243u8 ; const ENCODED_LEN : usize = 58usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . MMSI = buf . get_u32_le () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . COG = buf . get_u16_le () ; __struct . heading = buf . get_u16_le () ; __struct . velocity = buf . get_u16_le () ; __struct . dimension_bow = buf . get_u16_le () ; __struct . dimension_stern = buf . get_u16_le () ; __struct . tslc = buf . get_u16_le () ; let tmp = buf . get_u16_le () ; __struct . flags = AisFlags :: from_bits (tmp & AisFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "AisFlags" , value : tmp as u32 }) ? ; __struct . turn_rate = buf . get_i8 () ; let tmp = buf . get_u8 () ; __struct . navigational_status = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "AisNavStatus" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . mavtype = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "AisType" , value : tmp as u32 }) ? ; __struct . dimension_port = buf . get_u8 () ; __struct . dimension_starboard = buf . get_u8 () ; for v in & mut __struct . callsign { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . name { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . MMSI) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_u16_le (self . COG) ; __tmp . put_u16_le (self . heading) ; __tmp . put_u16_le (self . velocity) ; __tmp . put_u16_le (self . dimension_bow) ; __tmp . put_u16_le (self . dimension_stern) ; __tmp . put_u16_le (self . tslc) ; __tmp . put_u16_le (self . flags . bits ()) ; __tmp . put_i8 (self . turn_rate) ; __tmp . put_u8 (self . navigational_status as u8) ; __tmp . put_u8 (self . mavtype as u8) ; __tmp . put_u8 (self . dimension_port) ; __tmp . put_u8 (self . dimension_starboard) ; for val in & self . callsign { __tmp . put_u8 (* val) ; } for val in & self . name { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GPS_INPUT_DATA { pub time_usec : u64 , pub time_week_ms : u32 , pub lat : i32 , pub lon : i32 , pub alt : f32 , pub hdop : f32 , pub vdop : f32 , pub vn : f32 , pub ve : f32 , pub vd : f32 , pub speed_accuracy : f32 , pub horiz_accuracy : f32 , pub vert_accuracy : f32 , pub ignore_flags : GpsInputIgnoreFlags , pub time_week : u16 , pub gps_id : u8 , pub fix_type : u8 , pub satellites_visible : u8 , } impl GPS_INPUT_DATA { pub const ENCODED_LEN : usize = 63usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , time_week_ms : 0_u32 , lat : 0_i32 , lon : 0_i32 , alt : 0.0_f32 , hdop : 0.0_f32 , vdop : 0.0_f32 , vn : 0.0_f32 , ve : 0.0_f32 , vd : 0.0_f32 , speed_accuracy : 0.0_f32 , horiz_accuracy : 0.0_f32 , vert_accuracy : 0.0_f32 , ignore_flags : GpsInputIgnoreFlags :: DEFAULT , time_week : 0_u16 , gps_id : 0_u8 , fix_type : 0_u8 , satellites_visible : 0_u8 , } ; } impl Default for GPS_INPUT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GPS_INPUT_DATA { type Message = MavMessage ; const ID : u32 = 232u32 ; const NAME : & 'static str = "GPS_INPUT" ; const EXTRA_CRC : u8 = 151u8 ; const ENCODED_LEN : usize = 63usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . time_week_ms = buf . get_u32_le () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . alt = buf . get_f32_le () ; __struct . hdop = buf . get_f32_le () ; __struct . vdop = buf . get_f32_le () ; __struct . vn = buf . get_f32_le () ; __struct . ve = buf . get_f32_le () ; __struct . vd = buf . get_f32_le () ; __struct . speed_accuracy = buf . get_f32_le () ; __struct . horiz_accuracy = buf . get_f32_le () ; __struct . vert_accuracy = buf . get_f32_le () ; let tmp = buf . get_u16_le () ; __struct . ignore_flags = GpsInputIgnoreFlags :: from_bits (tmp & GpsInputIgnoreFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "GpsInputIgnoreFlags" , value : tmp as u32 }) ? ; __struct . time_week = buf . get_u16_le () ; __struct . gps_id = buf . get_u8 () ; __struct . fix_type = buf . get_u8 () ; __struct . satellites_visible = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_u32_le (self . time_week_ms) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_f32_le (self . alt) ; __tmp . put_f32_le (self . hdop) ; __tmp . put_f32_le (self . vdop) ; __tmp . put_f32_le (self . vn) ; __tmp . put_f32_le (self . ve) ; __tmp . put_f32_le (self . vd) ; __tmp . put_f32_le (self . speed_accuracy) ; __tmp . put_f32_le (self . horiz_accuracy) ; __tmp . put_f32_le (self . vert_accuracy) ; __tmp . put_u16_le (self . ignore_flags . bits ()) ; __tmp . put_u16_le (self . time_week) ; __tmp . put_u8 (self . gps_id) ; __tmp . put_u8 (self . fix_type) ; __tmp . put_u8 (self . satellites_visible) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct TIMESYNC_DATA { pub tc1 : i64 , pub ts1 : i64 , } impl TIMESYNC_DATA { pub const ENCODED_LEN : usize = 16usize ; pub const DEFAULT : Self = Self { tc1 : 0_i64 , ts1 : 0_i64 , } ; } impl Default for TIMESYNC_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for TIMESYNC_DATA { type Message = MavMessage ; const ID : u32 = 111u32 ; const NAME : & 'static str = "TIMESYNC" ; const EXTRA_CRC : u8 = 34u8 ; const ENCODED_LEN : usize = 16usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . tc1 = buf . get_i64_le () ; __struct . ts1 = buf . get_i64_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i64_le (self . tc1) ; __tmp . put_i64_le (self . ts1) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SCALED_IMU3_DATA { pub time_boot_ms : u32 , pub xacc : i16 , pub yacc : i16 , pub zacc : i16 , pub xgyro : i16 , pub ygyro : i16 , pub zgyro : i16 , pub xmag : i16 , pub ymag : i16 , pub zmag : i16 , } impl SCALED_IMU3_DATA { pub const ENCODED_LEN : usize = 22usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , xacc : 0_i16 , yacc : 0_i16 , zacc : 0_i16 , xgyro : 0_i16 , ygyro : 0_i16 , zgyro : 0_i16 , xmag : 0_i16 , ymag : 0_i16 , zmag : 0_i16 , } ; } impl Default for SCALED_IMU3_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SCALED_IMU3_DATA { type Message = MavMessage ; const ID : u32 = 129u32 ; const NAME : & 'static str = "SCALED_IMU3" ; const EXTRA_CRC : u8 = 46u8 ; const ENCODED_LEN : usize = 22usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . xacc = buf . get_i16_le () ; __struct . yacc = buf . get_i16_le () ; __struct . zacc = buf . get_i16_le () ; __struct . xgyro = buf . get_i16_le () ; __struct . ygyro = buf . get_i16_le () ; __struct . zgyro = buf . get_i16_le () ; __struct . xmag = buf . get_i16_le () ; __struct . ymag = buf . get_i16_le () ; __struct . zmag = buf . get_i16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_i16_le (self . xacc) ; __tmp . put_i16_le (self . yacc) ; __tmp . put_i16_le (self . zacc) ; __tmp . put_i16_le (self . xgyro) ; __tmp . put_i16_le (self . ygyro) ; __tmp . put_i16_le (self . zgyro) ; __tmp . put_i16_le (self . xmag) ; __tmp . put_i16_le (self . ymag) ; __tmp . put_i16_le (self . zmag) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ADSB_VEHICLE_DATA { pub ICAO_address : u32 , pub lat : i32 , pub lon : i32 , pub altitude : i32 , pub heading : u16 , pub hor_velocity : u16 , pub ver_velocity : i16 , pub flags : AdsbFlags , pub squawk : u16 , pub altitude_type : AdsbAltitudeType , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub callsign : [u8 ; 9] , pub emitter_type : AdsbEmitterType , pub tslc : u8 , } impl ADSB_VEHICLE_DATA { pub const ENCODED_LEN : usize = 38usize ; pub const DEFAULT : Self = Self { ICAO_address : 0_u32 , lat : 0_i32 , lon : 0_i32 , altitude : 0_i32 , heading : 0_u16 , hor_velocity : 0_u16 , ver_velocity : 0_i16 , flags : AdsbFlags :: DEFAULT , squawk : 0_u16 , altitude_type : AdsbAltitudeType :: DEFAULT , callsign : [0_u8 ; 9usize] , emitter_type : AdsbEmitterType :: DEFAULT , tslc : 0_u8 , } ; } impl Default for ADSB_VEHICLE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ADSB_VEHICLE_DATA { type Message = MavMessage ; const ID : u32 = 246u32 ; const NAME : & 'static str = "ADSB_VEHICLE" ; const EXTRA_CRC : u8 = 184u8 ; const ENCODED_LEN : usize = 38usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . ICAO_address = buf . get_u32_le () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . altitude = buf . get_i32_le () ; __struct . heading = buf . get_u16_le () ; __struct . hor_velocity = buf . get_u16_le () ; __struct . ver_velocity = buf . get_i16_le () ; let tmp = buf . get_u16_le () ; __struct . flags = AdsbFlags :: from_bits (tmp & AdsbFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "AdsbFlags" , value : tmp as u32 }) ? ; __struct . squawk = buf . get_u16_le () ; let tmp = buf . get_u8 () ; __struct . altitude_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "AdsbAltitudeType" , value : tmp as u32 }) ? ; for v in & mut __struct . callsign { let val = buf . get_u8 () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . emitter_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "AdsbEmitterType" , value : tmp as u32 }) ? ; __struct . tslc = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . ICAO_address) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_i32_le (self . altitude) ; __tmp . put_u16_le (self . heading) ; __tmp . put_u16_le (self . hor_velocity) ; __tmp . put_i16_le (self . ver_velocity) ; __tmp . put_u16_le (self . flags . bits ()) ; __tmp . put_u16_le (self . squawk) ; __tmp . put_u8 (self . altitude_type as u8) ; for val in & self . callsign { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . emitter_type as u8) ; __tmp . put_u8 (self . tslc) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct DEBUG_DATA { pub time_boot_ms : u32 , pub value : f32 , pub ind : u8 , } impl DEBUG_DATA { pub const ENCODED_LEN : usize = 9usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , value : 0.0_f32 , ind : 0_u8 , } ; } impl Default for DEBUG_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for DEBUG_DATA { type Message = MavMessage ; const ID : u32 = 254u32 ; const NAME : & 'static str = "DEBUG" ; const EXTRA_CRC : u8 = 46u8 ; const ENCODED_LEN : usize = 9usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . value = buf . get_f32_le () ; __struct . ind = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . value) ; __tmp . put_u8 (self . ind) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct FOLLOW_TARGET_DATA { pub timestamp : u64 , pub custom_state : u64 , pub lat : i32 , pub lon : i32 , pub alt : f32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub vel : [f32 ; 3] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub acc : [f32 ; 3] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub attitude_q : [f32 ; 4] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub rates : [f32 ; 3] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub position_cov : [f32 ; 3] , pub est_capabilities : u8 , } impl FOLLOW_TARGET_DATA { pub const ENCODED_LEN : usize = 93usize ; pub const DEFAULT : Self = Self { timestamp : 0_u64 , custom_state : 0_u64 , lat : 0_i32 , lon : 0_i32 , alt : 0.0_f32 , vel : [0.0_f32 ; 3usize] , acc : [0.0_f32 ; 3usize] , attitude_q : [0.0_f32 ; 4usize] , rates : [0.0_f32 ; 3usize] , position_cov : [0.0_f32 ; 3usize] , est_capabilities : 0_u8 , } ; } impl Default for FOLLOW_TARGET_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for FOLLOW_TARGET_DATA { type Message = MavMessage ; const ID : u32 = 144u32 ; const NAME : & 'static str = "FOLLOW_TARGET" ; const EXTRA_CRC : u8 = 127u8 ; const ENCODED_LEN : usize = 93usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . timestamp = buf . get_u64_le () ; __struct . custom_state = buf . get_u64_le () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . alt = buf . get_f32_le () ; for v in & mut __struct . vel { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . acc { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . attitude_q { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . rates { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . position_cov { let val = buf . get_f32_le () ; * v = val ; } __struct . est_capabilities = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . timestamp) ; __tmp . put_u64_le (self . custom_state) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_f32_le (self . alt) ; for val in & self . vel { __tmp . put_f32_le (* val) ; } for val in & self . acc { __tmp . put_f32_le (* val) ; } for val in & self . attitude_q { __tmp . put_f32_le (* val) ; } for val in & self . rates { __tmp . put_f32_le (* val) ; } for val in & self . position_cov { __tmp . put_f32_le (* val) ; } __tmp . put_u8 (self . est_capabilities) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct VISION_SPEED_ESTIMATE_DATA { pub usec : u64 , pub x : f32 , pub y : f32 , pub z : f32 , } impl VISION_SPEED_ESTIMATE_DATA { pub const ENCODED_LEN : usize = 20usize ; pub const DEFAULT : Self = Self { usec : 0_u64 , x : 0.0_f32 , y : 0.0_f32 , z : 0.0_f32 , } ; } impl Default for VISION_SPEED_ESTIMATE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for VISION_SPEED_ESTIMATE_DATA { type Message = MavMessage ; const ID : u32 = 103u32 ; const NAME : & 'static str = "VISION_SPEED_ESTIMATE" ; const EXTRA_CRC : u8 = 208u8 ; const ENCODED_LEN : usize = 20usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . usec = buf . get_u64_le () ; __struct . x = buf . get_f32_le () ; __struct . y = buf . get_f32_le () ; __struct . z = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . usec) ; __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct DIGICAM_CONFIGURE_DATA { pub extra_value : f32 , pub shutter_speed : u16 , pub target_system : u8 , pub target_component : u8 , pub mode : u8 , pub aperture : u8 , pub iso : u8 , pub exposure_type : u8 , pub command_id : u8 , pub engine_cut_off : u8 , pub extra_param : u8 , } impl DIGICAM_CONFIGURE_DATA { pub const ENCODED_LEN : usize = 15usize ; pub const DEFAULT : Self = Self { extra_value : 0.0_f32 , shutter_speed : 0_u16 , target_system : 0_u8 , target_component : 0_u8 , mode : 0_u8 , aperture : 0_u8 , iso : 0_u8 , exposure_type : 0_u8 , command_id : 0_u8 , engine_cut_off : 0_u8 , extra_param : 0_u8 , } ; } impl Default for DIGICAM_CONFIGURE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for DIGICAM_CONFIGURE_DATA { type Message = MavMessage ; const ID : u32 = 154u32 ; const NAME : & 'static str = "DIGICAM_CONFIGURE" ; const EXTRA_CRC : u8 = 84u8 ; const ENCODED_LEN : usize = 15usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . extra_value = buf . get_f32_le () ; __struct . shutter_speed = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . mode = buf . get_u8 () ; __struct . aperture = buf . get_u8 () ; __struct . iso = buf . get_u8 () ; __struct . exposure_type = buf . get_u8 () ; __struct . command_id = buf . get_u8 () ; __struct . engine_cut_off = buf . get_u8 () ; __struct . extra_param = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . extra_value) ; __tmp . put_u16_le (self . shutter_speed) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . mode) ; __tmp . put_u8 (self . aperture) ; __tmp . put_u8 (self . iso) ; __tmp . put_u8 (self . exposure_type) ; __tmp . put_u8 (self . command_id) ; __tmp . put_u8 (self . engine_cut_off) ; __tmp . put_u8 (self . extra_param) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CHANGE_OPERATOR_CONTROL_ACK_DATA { pub gcs_system_id : u8 , pub control_request : u8 , pub ack : u8 , } impl CHANGE_OPERATOR_CONTROL_ACK_DATA { pub const ENCODED_LEN : usize = 3usize ; pub const DEFAULT : Self = Self { gcs_system_id : 0_u8 , control_request : 0_u8 , ack : 0_u8 , } ; } impl Default for CHANGE_OPERATOR_CONTROL_ACK_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CHANGE_OPERATOR_CONTROL_ACK_DATA { type Message = MavMessage ; const ID : u32 = 6u32 ; const NAME : & 'static str = "CHANGE_OPERATOR_CONTROL_ACK" ; const EXTRA_CRC : u8 = 104u8 ; const ENCODED_LEN : usize = 3usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . gcs_system_id = buf . get_u8 () ; __struct . control_request = buf . get_u8 () ; __struct . ack = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . gcs_system_id) ; __tmp . put_u8 (self . control_request) ; __tmp . put_u8 (self . ack) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MOUNT_STATUS_DATA { pub pointing_a : i32 , pub pointing_b : i32 , pub pointing_c : i32 , pub target_system : u8 , pub target_component : u8 , } impl MOUNT_STATUS_DATA { pub const ENCODED_LEN : usize = 14usize ; pub const DEFAULT : Self = Self { pointing_a : 0_i32 , pointing_b : 0_i32 , pointing_c : 0_i32 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for MOUNT_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MOUNT_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 158u32 ; const NAME : & 'static str = "MOUNT_STATUS" ; const EXTRA_CRC : u8 = 134u8 ; const ENCODED_LEN : usize = 14usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . pointing_a = buf . get_i32_le () ; __struct . pointing_b = buf . get_i32_le () ; __struct . pointing_c = buf . get_i32_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . pointing_a) ; __tmp . put_i32_le (self . pointing_b) ; __tmp . put_i32_le (self . pointing_c) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GPS_RTK_DATA { pub time_last_baseline_ms : u32 , pub tow : u32 , pub baseline_a_mm : i32 , pub baseline_b_mm : i32 , pub baseline_c_mm : i32 , pub accuracy : u32 , pub iar_num_hypotheses : i32 , pub wn : u16 , pub rtk_receiver_id : u8 , pub rtk_health : u8 , pub rtk_rate : u8 , pub nsats : u8 , pub baseline_coords_type : RtkBaselineCoordinateSystem , } impl GPS_RTK_DATA { pub const ENCODED_LEN : usize = 35usize ; pub const DEFAULT : Self = Self { time_last_baseline_ms : 0_u32 , tow : 0_u32 , baseline_a_mm : 0_i32 , baseline_b_mm : 0_i32 , baseline_c_mm : 0_i32 , accuracy : 0_u32 , iar_num_hypotheses : 0_i32 , wn : 0_u16 , rtk_receiver_id : 0_u8 , rtk_health : 0_u8 , rtk_rate : 0_u8 , nsats : 0_u8 , baseline_coords_type : RtkBaselineCoordinateSystem :: DEFAULT , } ; } impl Default for GPS_RTK_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GPS_RTK_DATA { type Message = MavMessage ; const ID : u32 = 127u32 ; const NAME : & 'static str = "GPS_RTK" ; const EXTRA_CRC : u8 = 25u8 ; const ENCODED_LEN : usize = 35usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_last_baseline_ms = buf . get_u32_le () ; __struct . tow = buf . get_u32_le () ; __struct . baseline_a_mm = buf . get_i32_le () ; __struct . baseline_b_mm = buf . get_i32_le () ; __struct . baseline_c_mm = buf . get_i32_le () ; __struct . accuracy = buf . get_u32_le () ; __struct . iar_num_hypotheses = buf . get_i32_le () ; __struct . wn = buf . get_u16_le () ; __struct . rtk_receiver_id = buf . get_u8 () ; __struct . rtk_health = buf . get_u8 () ; __struct . rtk_rate = buf . get_u8 () ; __struct . nsats = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . baseline_coords_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "RtkBaselineCoordinateSystem" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_last_baseline_ms) ; __tmp . put_u32_le (self . tow) ; __tmp . put_i32_le (self . baseline_a_mm) ; __tmp . put_i32_le (self . baseline_b_mm) ; __tmp . put_i32_le (self . baseline_c_mm) ; __tmp . put_u32_le (self . accuracy) ; __tmp . put_i32_le (self . iar_num_hypotheses) ; __tmp . put_u16_le (self . wn) ; __tmp . put_u8 (self . rtk_receiver_id) ; __tmp . put_u8 (self . rtk_health) ; __tmp . put_u8 (self . rtk_rate) ; __tmp . put_u8 (self . nsats) ; __tmp . put_u8 (self . baseline_coords_type as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct DATA32_DATA { pub mavtype : u8 , pub len : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub data : [u8 ; 32] , } impl DATA32_DATA { pub const ENCODED_LEN : usize = 34usize ; pub const DEFAULT : Self = Self { mavtype : 0_u8 , len : 0_u8 , data : [0_u8 ; 32usize] , } ; } impl Default for DATA32_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for DATA32_DATA { type Message = MavMessage ; const ID : u32 = 170u32 ; const NAME : & 'static str = "DATA32" ; const EXTRA_CRC : u8 = 73u8 ; const ENCODED_LEN : usize = 34usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . mavtype = buf . get_u8 () ; __struct . len = buf . get_u8 () ; for v in & mut __struct . data { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . mavtype) ; __tmp . put_u8 (self . len) ; for val in & self . data { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HIL_CONTROLS_DATA { pub time_usec : u64 , pub roll_ailerons : f32 , pub pitch_elevator : f32 , pub yaw_rudder : f32 , pub throttle : f32 , pub aux1 : f32 , pub aux2 : f32 , pub aux3 : f32 , pub aux4 : f32 , pub mode : MavMode , pub nav_mode : u8 , } impl HIL_CONTROLS_DATA { pub const ENCODED_LEN : usize = 42usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , roll_ailerons : 0.0_f32 , pitch_elevator : 0.0_f32 , yaw_rudder : 0.0_f32 , throttle : 0.0_f32 , aux1 : 0.0_f32 , aux2 : 0.0_f32 , aux3 : 0.0_f32 , aux4 : 0.0_f32 , mode : MavMode :: DEFAULT , nav_mode : 0_u8 , } ; } impl Default for HIL_CONTROLS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for HIL_CONTROLS_DATA { type Message = MavMessage ; const ID : u32 = 91u32 ; const NAME : & 'static str = "HIL_CONTROLS" ; const EXTRA_CRC : u8 = 63u8 ; const ENCODED_LEN : usize = 42usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . roll_ailerons = buf . get_f32_le () ; __struct . pitch_elevator = buf . get_f32_le () ; __struct . yaw_rudder = buf . get_f32_le () ; __struct . throttle = buf . get_f32_le () ; __struct . aux1 = buf . get_f32_le () ; __struct . aux2 = buf . get_f32_le () ; __struct . aux3 = buf . get_f32_le () ; __struct . aux4 = buf . get_f32_le () ; let tmp = buf . get_u8 () ; __struct . mode = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavMode" , value : tmp as u32 }) ? ; __struct . nav_mode = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . roll_ailerons) ; __tmp . put_f32_le (self . pitch_elevator) ; __tmp . put_f32_le (self . yaw_rudder) ; __tmp . put_f32_le (self . throttle) ; __tmp . put_f32_le (self . aux1) ; __tmp . put_f32_le (self . aux2) ; __tmp . put_f32_le (self . aux3) ; __tmp . put_f32_le (self . aux4) ; __tmp . put_u8 (self . mode as u8) ; __tmp . put_u8 (self . nav_mode) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct DATA96_DATA { pub mavtype : u8 , pub len : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub data : [u8 ; 96] , } impl DATA96_DATA { pub const ENCODED_LEN : usize = 98usize ; pub const DEFAULT : Self = Self { mavtype : 0_u8 , len : 0_u8 , data : [0_u8 ; 96usize] , } ; } impl Default for DATA96_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for DATA96_DATA { type Message = MavMessage ; const ID : u32 = 172u32 ; const NAME : & 'static str = "DATA96" ; const EXTRA_CRC : u8 = 22u8 ; const ENCODED_LEN : usize = 98usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . mavtype = buf . get_u8 () ; __struct . len = buf . get_u8 () ; for v in & mut __struct . data { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . mavtype) ; __tmp . put_u8 (self . len) ; for val in & self . data { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SCALED_IMU2_DATA { pub time_boot_ms : u32 , pub xacc : i16 , pub yacc : i16 , pub zacc : i16 , pub xgyro : i16 , pub ygyro : i16 , pub zgyro : i16 , pub xmag : i16 , pub ymag : i16 , pub zmag : i16 , } impl SCALED_IMU2_DATA { pub const ENCODED_LEN : usize = 22usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , xacc : 0_i16 , yacc : 0_i16 , zacc : 0_i16 , xgyro : 0_i16 , ygyro : 0_i16 , zgyro : 0_i16 , xmag : 0_i16 , ymag : 0_i16 , zmag : 0_i16 , } ; } impl Default for SCALED_IMU2_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SCALED_IMU2_DATA { type Message = MavMessage ; const ID : u32 = 116u32 ; const NAME : & 'static str = "SCALED_IMU2" ; const EXTRA_CRC : u8 = 76u8 ; const ENCODED_LEN : usize = 22usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . xacc = buf . get_i16_le () ; __struct . yacc = buf . get_i16_le () ; __struct . zacc = buf . get_i16_le () ; __struct . xgyro = buf . get_i16_le () ; __struct . ygyro = buf . get_i16_le () ; __struct . zgyro = buf . get_i16_le () ; __struct . xmag = buf . get_i16_le () ; __struct . ymag = buf . get_i16_le () ; __struct . zmag = buf . get_i16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_i16_le (self . xacc) ; __tmp . put_i16_le (self . yacc) ; __tmp . put_i16_le (self . zacc) ; __tmp . put_i16_le (self . xgyro) ; __tmp . put_i16_le (self . ygyro) ; __tmp . put_i16_le (self . zgyro) ; __tmp . put_i16_le (self . xmag) ; __tmp . put_i16_le (self . ymag) ; __tmp . put_i16_le (self . zmag) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct DATA_STREAM_DATA { pub message_rate : u16 , pub stream_id : u8 , pub on_off : u8 , } impl DATA_STREAM_DATA { pub const ENCODED_LEN : usize = 4usize ; pub const DEFAULT : Self = Self { message_rate : 0_u16 , stream_id : 0_u8 , on_off : 0_u8 , } ; } impl Default for DATA_STREAM_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for DATA_STREAM_DATA { type Message = MavMessage ; const ID : u32 = 67u32 ; const NAME : & 'static str = "DATA_STREAM" ; const EXTRA_CRC : u8 = 21u8 ; const ENCODED_LEN : usize = 4usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . message_rate = buf . get_u16_le () ; __struct . stream_id = buf . get_u8 () ; __struct . on_off = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . message_rate) ; __tmp . put_u8 (self . stream_id) ; __tmp . put_u8 (self . on_off) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MOUNT_ORIENTATION_DATA { pub time_boot_ms : u32 , pub roll : f32 , pub pitch : f32 , pub yaw : f32 , } impl MOUNT_ORIENTATION_DATA { pub const ENCODED_LEN : usize = 16usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , roll : 0.0_f32 , pitch : 0.0_f32 , yaw : 0.0_f32 , } ; } impl Default for MOUNT_ORIENTATION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MOUNT_ORIENTATION_DATA { type Message = MavMessage ; const ID : u32 = 265u32 ; const NAME : & 'static str = "MOUNT_ORIENTATION" ; const EXTRA_CRC : u8 = 26u8 ; const ENCODED_LEN : usize = 16usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . roll = buf . get_f32_le () ; __struct . pitch = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . roll) ; __tmp . put_f32_le (self . pitch) ; __tmp . put_f32_le (self . yaw) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HIGH_LATENCY_DATA { pub custom_mode : u32 , pub latitude : i32 , pub longitude : i32 , pub roll : i16 , pub pitch : i16 , pub heading : u16 , pub heading_sp : i16 , pub altitude_amsl : i16 , pub altitude_sp : i16 , pub wp_distance : u16 , pub base_mode : MavModeFlag , pub landed_state : MavLandedState , pub throttle : i8 , pub airspeed : u8 , pub airspeed_sp : u8 , pub groundspeed : u8 , pub climb_rate : i8 , pub gps_nsat : u8 , pub gps_fix_type : GpsFixType , pub battery_remaining : u8 , pub temperature : i8 , pub temperature_air : i8 , pub failsafe : u8 , pub wp_num : u8 , } impl HIGH_LATENCY_DATA { pub const ENCODED_LEN : usize = 40usize ; pub const DEFAULT : Self = Self { custom_mode : 0_u32 , latitude : 0_i32 , longitude : 0_i32 , roll : 0_i16 , pitch : 0_i16 , heading : 0_u16 , heading_sp : 0_i16 , altitude_amsl : 0_i16 , altitude_sp : 0_i16 , wp_distance : 0_u16 , base_mode : MavModeFlag :: DEFAULT , landed_state : MavLandedState :: DEFAULT , throttle : 0_i8 , airspeed : 0_u8 , airspeed_sp : 0_u8 , groundspeed : 0_u8 , climb_rate : 0_i8 , gps_nsat : 0_u8 , gps_fix_type : GpsFixType :: DEFAULT , battery_remaining : 0_u8 , temperature : 0_i8 , temperature_air : 0_i8 , failsafe : 0_u8 , wp_num : 0_u8 , } ; } impl Default for HIGH_LATENCY_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for HIGH_LATENCY_DATA { type Message = MavMessage ; const ID : u32 = 234u32 ; const NAME : & 'static str = "HIGH_LATENCY" ; const EXTRA_CRC : u8 = 150u8 ; const ENCODED_LEN : usize = 40usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . custom_mode = buf . get_u32_le () ; __struct . latitude = buf . get_i32_le () ; __struct . longitude = buf . get_i32_le () ; __struct . roll = buf . get_i16_le () ; __struct . pitch = buf . get_i16_le () ; __struct . heading = buf . get_u16_le () ; __struct . heading_sp = buf . get_i16_le () ; __struct . altitude_amsl = buf . get_i16_le () ; __struct . altitude_sp = buf . get_i16_le () ; __struct . wp_distance = buf . get_u16_le () ; let tmp = buf . get_u8 () ; __struct . base_mode = MavModeFlag :: from_bits (tmp & MavModeFlag :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "MavModeFlag" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . landed_state = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavLandedState" , value : tmp as u32 }) ? ; __struct . throttle = buf . get_i8 () ; __struct . airspeed = buf . get_u8 () ; __struct . airspeed_sp = buf . get_u8 () ; __struct . groundspeed = buf . get_u8 () ; __struct . climb_rate = buf . get_i8 () ; __struct . gps_nsat = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . gps_fix_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "GpsFixType" , value : tmp as u32 }) ? ; __struct . battery_remaining = buf . get_u8 () ; __struct . temperature = buf . get_i8 () ; __struct . temperature_air = buf . get_i8 () ; __struct . failsafe = buf . get_u8 () ; __struct . wp_num = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . custom_mode) ; __tmp . put_i32_le (self . latitude) ; __tmp . put_i32_le (self . longitude) ; __tmp . put_i16_le (self . roll) ; __tmp . put_i16_le (self . pitch) ; __tmp . put_u16_le (self . heading) ; __tmp . put_i16_le (self . heading_sp) ; __tmp . put_i16_le (self . altitude_amsl) ; __tmp . put_i16_le (self . altitude_sp) ; __tmp . put_u16_le (self . wp_distance) ; __tmp . put_u8 (self . base_mode . bits ()) ; __tmp . put_u8 (self . landed_state as u8) ; __tmp . put_i8 (self . throttle) ; __tmp . put_u8 (self . airspeed) ; __tmp . put_u8 (self . airspeed_sp) ; __tmp . put_u8 (self . groundspeed) ; __tmp . put_i8 (self . climb_rate) ; __tmp . put_u8 (self . gps_nsat) ; __tmp . put_u8 (self . gps_fix_type as u8) ; __tmp . put_u8 (self . battery_remaining) ; __tmp . put_i8 (self . temperature) ; __tmp . put_i8 (self . temperature_air) ; __tmp . put_u8 (self . failsafe) ; __tmp . put_u8 (self . wp_num) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GLOBAL_POSITION_INT_DATA { pub time_boot_ms : u32 , pub lat : i32 , pub lon : i32 , pub alt : i32 , pub relative_alt : i32 , pub vx : i16 , pub vy : i16 , pub vz : i16 , pub hdg : u16 , } impl GLOBAL_POSITION_INT_DATA { pub const ENCODED_LEN : usize = 28usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , lat : 0_i32 , lon : 0_i32 , alt : 0_i32 , relative_alt : 0_i32 , vx : 0_i16 , vy : 0_i16 , vz : 0_i16 , hdg : 0_u16 , } ; } impl Default for GLOBAL_POSITION_INT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GLOBAL_POSITION_INT_DATA { type Message = MavMessage ; const ID : u32 = 33u32 ; const NAME : & 'static str = "GLOBAL_POSITION_INT" ; const EXTRA_CRC : u8 = 104u8 ; const ENCODED_LEN : usize = 28usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . alt = buf . get_i32_le () ; __struct . relative_alt = buf . get_i32_le () ; __struct . vx = buf . get_i16_le () ; __struct . vy = buf . get_i16_le () ; __struct . vz = buf . get_i16_le () ; __struct . hdg = buf . get_u16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_i32_le (self . alt) ; __tmp . put_i32_le (self . relative_alt) ; __tmp . put_i16_le (self . vx) ; __tmp . put_i16_le (self . vy) ; __tmp . put_i16_le (self . vz) ; __tmp . put_u16_le (self . hdg) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct OSD_PARAM_CONFIG_REPLY_DATA { pub request_id : u32 , pub result : OsdParamConfigError , } impl OSD_PARAM_CONFIG_REPLY_DATA { pub const ENCODED_LEN : usize = 5usize ; pub const DEFAULT : Self = Self { request_id : 0_u32 , result : OsdParamConfigError :: DEFAULT , } ; } impl Default for OSD_PARAM_CONFIG_REPLY_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for OSD_PARAM_CONFIG_REPLY_DATA { type Message = MavMessage ; const ID : u32 = 11034u32 ; const NAME : & 'static str = "OSD_PARAM_CONFIG_REPLY" ; const EXTRA_CRC : u8 = 79u8 ; const ENCODED_LEN : usize = 5usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . request_id = buf . get_u32_le () ; let tmp = buf . get_u8 () ; __struct . result = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "OsdParamConfigError" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . request_id) ; __tmp . put_u8 (self . result as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ACTUATOR_CONTROL_TARGET_DATA { pub time_usec : u64 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub controls : [f32 ; 8] , pub group_mlx : u8 , } impl ACTUATOR_CONTROL_TARGET_DATA { pub const ENCODED_LEN : usize = 41usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , controls : [0.0_f32 ; 8usize] , group_mlx : 0_u8 , } ; } impl Default for ACTUATOR_CONTROL_TARGET_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ACTUATOR_CONTROL_TARGET_DATA { type Message = MavMessage ; const ID : u32 = 140u32 ; const NAME : & 'static str = "ACTUATOR_CONTROL_TARGET" ; const EXTRA_CRC : u8 = 181u8 ; const ENCODED_LEN : usize = 41usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; for v in & mut __struct . controls { let val = buf . get_f32_le () ; * v = val ; } __struct . group_mlx = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; for val in & self . controls { __tmp . put_f32_le (* val) ; } __tmp . put_u8 (self . group_mlx) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct OBSTACLE_DISTANCE_DATA { pub time_usec : u64 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub distances : [u16 ; 72] , pub min_distance : u16 , pub max_distance : u16 , pub sensor_type : MavDistanceSensor , pub increment : u8 , } impl OBSTACLE_DISTANCE_DATA { pub const ENCODED_LEN : usize = 158usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , distances : [0_u16 ; 72usize] , min_distance : 0_u16 , max_distance : 0_u16 , sensor_type : MavDistanceSensor :: DEFAULT , increment : 0_u8 , } ; } impl Default for OBSTACLE_DISTANCE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for OBSTACLE_DISTANCE_DATA { type Message = MavMessage ; const ID : u32 = 330u32 ; const NAME : & 'static str = "OBSTACLE_DISTANCE" ; const EXTRA_CRC : u8 = 23u8 ; const ENCODED_LEN : usize = 158usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; for v in & mut __struct . distances { let val = buf . get_u16_le () ; * v = val ; } __struct . min_distance = buf . get_u16_le () ; __struct . max_distance = buf . get_u16_le () ; let tmp = buf . get_u8 () ; __struct . sensor_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavDistanceSensor" , value : tmp as u32 }) ? ; __struct . increment = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; for val in & self . distances { __tmp . put_u16_le (* val) ; } __tmp . put_u16_le (self . min_distance) ; __tmp . put_u16_le (self . max_distance) ; __tmp . put_u8 (self . sensor_type as u8) ; __tmp . put_u8 (self . increment) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CAN_FILTER_MODIFY_DATA { # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub ids : [u16 ; 16] , pub target_system : u8 , pub target_component : u8 , pub bus : u8 , pub operation : CanFilterOp , pub num_ids : u8 , } impl CAN_FILTER_MODIFY_DATA { pub const ENCODED_LEN : usize = 37usize ; pub const DEFAULT : Self = Self { ids : [0_u16 ; 16usize] , target_system : 0_u8 , target_component : 0_u8 , bus : 0_u8 , operation : CanFilterOp :: DEFAULT , num_ids : 0_u8 , } ; } impl Default for CAN_FILTER_MODIFY_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CAN_FILTER_MODIFY_DATA { type Message = MavMessage ; const ID : u32 = 388u32 ; const NAME : & 'static str = "CAN_FILTER_MODIFY" ; const EXTRA_CRC : u8 = 8u8 ; const ENCODED_LEN : usize = 37usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; for v in & mut __struct . ids { let val = buf . get_u16_le () ; * v = val ; } __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . bus = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . operation = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "CanFilterOp" , value : tmp as u32 }) ? ; __struct . num_ids = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; for val in & self . ids { __tmp . put_u16_le (* val) ; } __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . bus) ; __tmp . put_u8 (self . operation as u8) ; __tmp . put_u8 (self . num_ids) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct VISION_POSITION_ESTIMATE_DATA { pub usec : u64 , pub x : f32 , pub y : f32 , pub z : f32 , pub roll : f32 , pub pitch : f32 , pub yaw : f32 , } impl VISION_POSITION_ESTIMATE_DATA { pub const ENCODED_LEN : usize = 32usize ; pub const DEFAULT : Self = Self { usec : 0_u64 , x : 0.0_f32 , y : 0.0_f32 , z : 0.0_f32 , roll : 0.0_f32 , pitch : 0.0_f32 , yaw : 0.0_f32 , } ; } impl Default for VISION_POSITION_ESTIMATE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for VISION_POSITION_ESTIMATE_DATA { type Message = MavMessage ; const ID : u32 = 102u32 ; const NAME : & 'static str = "VISION_POSITION_ESTIMATE" ; const EXTRA_CRC : u8 = 158u8 ; const ENCODED_LEN : usize = 32usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . usec = buf . get_u64_le () ; __struct . x = buf . get_f32_le () ; __struct . y = buf . get_f32_le () ; __struct . z = buf . get_f32_le () ; __struct . roll = buf . get_f32_le () ; __struct . pitch = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . usec) ; __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; __tmp . put_f32_le (self . roll) ; __tmp . put_f32_le (self . pitch) ; __tmp . put_f32_le (self . yaw) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct STATUSTEXT_DATA { pub severity : MavSeverity , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub text : [u8 ; 50] , } impl STATUSTEXT_DATA { pub const ENCODED_LEN : usize = 51usize ; pub const DEFAULT : Self = Self { severity : MavSeverity :: DEFAULT , text : [0_u8 ; 50usize] , } ; } impl Default for STATUSTEXT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for STATUSTEXT_DATA { type Message = MavMessage ; const ID : u32 = 253u32 ; const NAME : & 'static str = "STATUSTEXT" ; const EXTRA_CRC : u8 = 83u8 ; const ENCODED_LEN : usize = 51usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u8 () ; __struct . severity = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavSeverity" , value : tmp as u32 }) ? ; for v in & mut __struct . text { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . severity as u8) ; for val in & self . text { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ATTITUDE_QUATERNION_DATA { pub time_boot_ms : u32 , pub q1 : f32 , pub q2 : f32 , pub q3 : f32 , pub q4 : f32 , pub rollspeed : f32 , pub pitchspeed : f32 , pub yawspeed : f32 , } impl ATTITUDE_QUATERNION_DATA { pub const ENCODED_LEN : usize = 32usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , q1 : 0.0_f32 , q2 : 0.0_f32 , q3 : 0.0_f32 , q4 : 0.0_f32 , rollspeed : 0.0_f32 , pitchspeed : 0.0_f32 , yawspeed : 0.0_f32 , } ; } impl Default for ATTITUDE_QUATERNION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ATTITUDE_QUATERNION_DATA { type Message = MavMessage ; const ID : u32 = 31u32 ; const NAME : & 'static str = "ATTITUDE_QUATERNION" ; const EXTRA_CRC : u8 = 246u8 ; const ENCODED_LEN : usize = 32usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . q1 = buf . get_f32_le () ; __struct . q2 = buf . get_f32_le () ; __struct . q3 = buf . get_f32_le () ; __struct . q4 = buf . get_f32_le () ; __struct . rollspeed = buf . get_f32_le () ; __struct . pitchspeed = buf . get_f32_le () ; __struct . yawspeed = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . q1) ; __tmp . put_f32_le (self . q2) ; __tmp . put_f32_le (self . q3) ; __tmp . put_f32_le (self . q4) ; __tmp . put_f32_le (self . rollspeed) ; __tmp . put_f32_le (self . pitchspeed) ; __tmp . put_f32_le (self . yawspeed) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PARAM_SET_DATA { pub param_value : f32 , pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub param_id : [u8 ; 16] , pub param_type : MavParamType , } impl PARAM_SET_DATA { pub const ENCODED_LEN : usize = 23usize ; pub const DEFAULT : Self = Self { param_value : 0.0_f32 , target_system : 0_u8 , target_component : 0_u8 , param_id : [0_u8 ; 16usize] , param_type : MavParamType :: DEFAULT , } ; } impl Default for PARAM_SET_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for PARAM_SET_DATA { type Message = MavMessage ; const ID : u32 = 23u32 ; const NAME : & 'static str = "PARAM_SET" ; const EXTRA_CRC : u8 = 168u8 ; const ENCODED_LEN : usize = 23usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . param_value = buf . get_f32_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . param_id { let val = buf . get_u8 () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . param_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavParamType" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . param_value) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . param_id { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . param_type as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct TUNNEL_DATA { pub payload_type : MavTunnelPayloadType , pub target_system : u8 , pub target_component : u8 , pub payload_length : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub payload : [u8 ; 128] , } impl TUNNEL_DATA { pub const ENCODED_LEN : usize = 133usize ; pub const DEFAULT : Self = Self { payload_type : MavTunnelPayloadType :: DEFAULT , target_system : 0_u8 , target_component : 0_u8 , payload_length : 0_u8 , payload : [0_u8 ; 128usize] , } ; } impl Default for TUNNEL_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for TUNNEL_DATA { type Message = MavMessage ; const ID : u32 = 385u32 ; const NAME : & 'static str = "TUNNEL" ; const EXTRA_CRC : u8 = 147u8 ; const ENCODED_LEN : usize = 133usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u16_le () ; __struct . payload_type = FromPrimitive :: from_u16 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavTunnelPayloadType" , value : tmp as u32 }) ? ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . payload_length = buf . get_u8 () ; for v in & mut __struct . payload { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . payload_type as u16) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . payload_length) ; for val in & self . payload { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct RC_CHANNELS_RAW_DATA { pub time_boot_ms : u32 , pub chan1_raw : u16 , pub chan2_raw : u16 , pub chan3_raw : u16 , pub chan4_raw : u16 , pub chan5_raw : u16 , pub chan6_raw : u16 , pub chan7_raw : u16 , pub chan8_raw : u16 , pub port : u8 , pub rssi : u8 , } impl RC_CHANNELS_RAW_DATA { pub const ENCODED_LEN : usize = 22usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , chan1_raw : 0_u16 , chan2_raw : 0_u16 , chan3_raw : 0_u16 , chan4_raw : 0_u16 , chan5_raw : 0_u16 , chan6_raw : 0_u16 , chan7_raw : 0_u16 , chan8_raw : 0_u16 , port : 0_u8 , rssi : 0_u8 , } ; } impl Default for RC_CHANNELS_RAW_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for RC_CHANNELS_RAW_DATA { type Message = MavMessage ; const ID : u32 = 35u32 ; const NAME : & 'static str = "RC_CHANNELS_RAW" ; const EXTRA_CRC : u8 = 244u8 ; const ENCODED_LEN : usize = 22usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . chan1_raw = buf . get_u16_le () ; __struct . chan2_raw = buf . get_u16_le () ; __struct . chan3_raw = buf . get_u16_le () ; __struct . chan4_raw = buf . get_u16_le () ; __struct . chan5_raw = buf . get_u16_le () ; __struct . chan6_raw = buf . get_u16_le () ; __struct . chan7_raw = buf . get_u16_le () ; __struct . chan8_raw = buf . get_u16_le () ; __struct . port = buf . get_u8 () ; __struct . rssi = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_u16_le (self . chan1_raw) ; __tmp . put_u16_le (self . chan2_raw) ; __tmp . put_u16_le (self . chan3_raw) ; __tmp . put_u16_le (self . chan4_raw) ; __tmp . put_u16_le (self . chan5_raw) ; __tmp . put_u16_le (self . chan6_raw) ; __tmp . put_u16_le (self . chan7_raw) ; __tmp . put_u16_le (self . chan8_raw) ; __tmp . put_u8 (self . port) ; __tmp . put_u8 (self . rssi) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CELLULAR_CONFIG_DATA { pub enable_lte : u8 , pub enable_pin : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub pin : [u8 ; 16] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub new_pin : [u8 ; 16] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub apn : [u8 ; 32] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub puk : [u8 ; 16] , pub roaming : u8 , pub response : CellularConfigResponse , } impl CELLULAR_CONFIG_DATA { pub const ENCODED_LEN : usize = 84usize ; pub const DEFAULT : Self = Self { enable_lte : 0_u8 , enable_pin : 0_u8 , pin : [0_u8 ; 16usize] , new_pin : [0_u8 ; 16usize] , apn : [0_u8 ; 32usize] , puk : [0_u8 ; 16usize] , roaming : 0_u8 , response : CellularConfigResponse :: DEFAULT , } ; } impl Default for CELLULAR_CONFIG_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CELLULAR_CONFIG_DATA { type Message = MavMessage ; const ID : u32 = 336u32 ; const NAME : & 'static str = "CELLULAR_CONFIG" ; const EXTRA_CRC : u8 = 245u8 ; const ENCODED_LEN : usize = 84usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . enable_lte = buf . get_u8 () ; __struct . enable_pin = buf . get_u8 () ; for v in & mut __struct . pin { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . new_pin { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . apn { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . puk { let val = buf . get_u8 () ; * v = val ; } __struct . roaming = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . response = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "CellularConfigResponse" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . enable_lte) ; __tmp . put_u8 (self . enable_pin) ; for val in & self . pin { __tmp . put_u8 (* val) ; } for val in & self . new_pin { __tmp . put_u8 (* val) ; } for val in & self . apn { __tmp . put_u8 (* val) ; } for val in & self . puk { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . roaming) ; __tmp . put_u8 (self . response as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GPS_RTCM_DATA_DATA { pub flags : u8 , pub len : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub data : [u8 ; 180] , } impl GPS_RTCM_DATA_DATA { pub const ENCODED_LEN : usize = 182usize ; pub const DEFAULT : Self = Self { flags : 0_u8 , len : 0_u8 , data : [0_u8 ; 180usize] , } ; } impl Default for GPS_RTCM_DATA_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GPS_RTCM_DATA_DATA { type Message = MavMessage ; const ID : u32 = 233u32 ; const NAME : & 'static str = "GPS_RTCM_DATA" ; const EXTRA_CRC : u8 = 35u8 ; const ENCODED_LEN : usize = 182usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . flags = buf . get_u8 () ; __struct . len = buf . get_u8 () ; for v in & mut __struct . data { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . flags) ; __tmp . put_u8 (self . len) ; for val in & self . data { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct AUTH_KEY_DATA { # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub key : [u8 ; 32] , } impl AUTH_KEY_DATA { pub const ENCODED_LEN : usize = 32usize ; pub const DEFAULT : Self = Self { key : [0_u8 ; 32usize] , } ; } impl Default for AUTH_KEY_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for AUTH_KEY_DATA { type Message = MavMessage ; const ID : u32 = 7u32 ; const NAME : & 'static str = "AUTH_KEY" ; const EXTRA_CRC : u8 = 119u8 ; const ENCODED_LEN : usize = 32usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; for v in & mut __struct . key { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; for val in & self . key { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GPS_STATUS_DATA { pub satellites_visible : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub satellite_prn : [u8 ; 20] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub satellite_used : [u8 ; 20] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub satellite_elevation : [u8 ; 20] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub satellite_azimuth : [u8 ; 20] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub satellite_snr : [u8 ; 20] , } impl GPS_STATUS_DATA { pub const ENCODED_LEN : usize = 101usize ; pub const DEFAULT : Self = Self { satellites_visible : 0_u8 , satellite_prn : [0_u8 ; 20usize] , satellite_used : [0_u8 ; 20usize] , satellite_elevation : [0_u8 ; 20usize] , satellite_azimuth : [0_u8 ; 20usize] , satellite_snr : [0_u8 ; 20usize] , } ; } impl Default for GPS_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GPS_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 25u32 ; const NAME : & 'static str = "GPS_STATUS" ; const EXTRA_CRC : u8 = 23u8 ; const ENCODED_LEN : usize = 101usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . satellites_visible = buf . get_u8 () ; for v in & mut __struct . satellite_prn { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . satellite_used { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . satellite_elevation { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . satellite_azimuth { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . satellite_snr { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . satellites_visible) ; for val in & self . satellite_prn { __tmp . put_u8 (* val) ; } for val in & self . satellite_used { __tmp . put_u8 (* val) ; } for val in & self . satellite_elevation { __tmp . put_u8 (* val) ; } for val in & self . satellite_azimuth { __tmp . put_u8 (* val) ; } for val in & self . satellite_snr { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct RC_CHANNELS_OVERRIDE_DATA { pub chan1_raw : u16 , pub chan2_raw : u16 , pub chan3_raw : u16 , pub chan4_raw : u16 , pub chan5_raw : u16 , pub chan6_raw : u16 , pub chan7_raw : u16 , pub chan8_raw : u16 , pub target_system : u8 , pub target_component : u8 , } impl RC_CHANNELS_OVERRIDE_DATA { pub const ENCODED_LEN : usize = 18usize ; pub const DEFAULT : Self = Self { chan1_raw : 0_u16 , chan2_raw : 0_u16 , chan3_raw : 0_u16 , chan4_raw : 0_u16 , chan5_raw : 0_u16 , chan6_raw : 0_u16 , chan7_raw : 0_u16 , chan8_raw : 0_u16 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for RC_CHANNELS_OVERRIDE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for RC_CHANNELS_OVERRIDE_DATA { type Message = MavMessage ; const ID : u32 = 70u32 ; const NAME : & 'static str = "RC_CHANNELS_OVERRIDE" ; const EXTRA_CRC : u8 = 124u8 ; const ENCODED_LEN : usize = 18usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . chan1_raw = buf . get_u16_le () ; __struct . chan2_raw = buf . get_u16_le () ; __struct . chan3_raw = buf . get_u16_le () ; __struct . chan4_raw = buf . get_u16_le () ; __struct . chan5_raw = buf . get_u16_le () ; __struct . chan6_raw = buf . get_u16_le () ; __struct . chan7_raw = buf . get_u16_le () ; __struct . chan8_raw = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . chan1_raw) ; __tmp . put_u16_le (self . chan2_raw) ; __tmp . put_u16_le (self . chan3_raw) ; __tmp . put_u16_le (self . chan4_raw) ; __tmp . put_u16_le (self . chan5_raw) ; __tmp . put_u16_le (self . chan6_raw) ; __tmp . put_u16_le (self . chan7_raw) ; __tmp . put_u16_le (self . chan8_raw) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct DEEPSTALL_DATA { pub landing_lat : i32 , pub landing_lon : i32 , pub path_lat : i32 , pub path_lon : i32 , pub arc_entry_lat : i32 , pub arc_entry_lon : i32 , pub altitude : f32 , pub expected_travel_distance : f32 , pub cross_track_error : f32 , pub stage : DeepstallStage , } impl DEEPSTALL_DATA { pub const ENCODED_LEN : usize = 37usize ; pub const DEFAULT : Self = Self { landing_lat : 0_i32 , landing_lon : 0_i32 , path_lat : 0_i32 , path_lon : 0_i32 , arc_entry_lat : 0_i32 , arc_entry_lon : 0_i32 , altitude : 0.0_f32 , expected_travel_distance : 0.0_f32 , cross_track_error : 0.0_f32 , stage : DeepstallStage :: DEFAULT , } ; } impl Default for DEEPSTALL_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for DEEPSTALL_DATA { type Message = MavMessage ; const ID : u32 = 195u32 ; const NAME : & 'static str = "DEEPSTALL" ; const EXTRA_CRC : u8 = 120u8 ; const ENCODED_LEN : usize = 37usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . landing_lat = buf . get_i32_le () ; __struct . landing_lon = buf . get_i32_le () ; __struct . path_lat = buf . get_i32_le () ; __struct . path_lon = buf . get_i32_le () ; __struct . arc_entry_lat = buf . get_i32_le () ; __struct . arc_entry_lon = buf . get_i32_le () ; __struct . altitude = buf . get_f32_le () ; __struct . expected_travel_distance = buf . get_f32_le () ; __struct . cross_track_error = buf . get_f32_le () ; let tmp = buf . get_u8 () ; __struct . stage = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "DeepstallStage" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . landing_lat) ; __tmp . put_i32_le (self . landing_lon) ; __tmp . put_i32_le (self . path_lat) ; __tmp . put_i32_le (self . path_lon) ; __tmp . put_i32_le (self . arc_entry_lat) ; __tmp . put_i32_le (self . arc_entry_lon) ; __tmp . put_f32_le (self . altitude) ; __tmp . put_f32_le (self . expected_travel_distance) ; __tmp . put_f32_le (self . cross_track_error) ; __tmp . put_u8 (self . stage as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct FENCE_STATUS_DATA { pub breach_time : u32 , pub breach_count : u16 , pub breach_status : u8 , pub breach_type : FenceBreach , } impl FENCE_STATUS_DATA { pub const ENCODED_LEN : usize = 8usize ; pub const DEFAULT : Self = Self { breach_time : 0_u32 , breach_count : 0_u16 , breach_status : 0_u8 , breach_type : FenceBreach :: DEFAULT , } ; } impl Default for FENCE_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for FENCE_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 162u32 ; const NAME : & 'static str = "FENCE_STATUS" ; const EXTRA_CRC : u8 = 189u8 ; const ENCODED_LEN : usize = 8usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . breach_time = buf . get_u32_le () ; __struct . breach_count = buf . get_u16_le () ; __struct . breach_status = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . breach_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "FenceBreach" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . breach_time) ; __tmp . put_u16_le (self . breach_count) ; __tmp . put_u8 (self . breach_status) ; __tmp . put_u8 (self . breach_type as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct BATTERY_STATUS_DATA { pub current_consumed : i32 , pub energy_consumed : i32 , pub temperature : i16 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub voltages : [u16 ; 10] , pub current_battery : i16 , pub id : u8 , pub battery_function : MavBatteryFunction , pub mavtype : MavBatteryType , pub battery_remaining : i8 , } impl BATTERY_STATUS_DATA { pub const ENCODED_LEN : usize = 36usize ; pub const DEFAULT : Self = Self { current_consumed : 0_i32 , energy_consumed : 0_i32 , temperature : 0_i16 , voltages : [0_u16 ; 10usize] , current_battery : 0_i16 , id : 0_u8 , battery_function : MavBatteryFunction :: DEFAULT , mavtype : MavBatteryType :: DEFAULT , battery_remaining : 0_i8 , } ; } impl Default for BATTERY_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for BATTERY_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 147u32 ; const NAME : & 'static str = "BATTERY_STATUS" ; const EXTRA_CRC : u8 = 154u8 ; const ENCODED_LEN : usize = 36usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . current_consumed = buf . get_i32_le () ; __struct . energy_consumed = buf . get_i32_le () ; __struct . temperature = buf . get_i16_le () ; for v in & mut __struct . voltages { let val = buf . get_u16_le () ; * v = val ; } __struct . current_battery = buf . get_i16_le () ; __struct . id = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . battery_function = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavBatteryFunction" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . mavtype = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavBatteryType" , value : tmp as u32 }) ? ; __struct . battery_remaining = buf . get_i8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . current_consumed) ; __tmp . put_i32_le (self . energy_consumed) ; __tmp . put_i16_le (self . temperature) ; for val in & self . voltages { __tmp . put_u16_le (* val) ; } __tmp . put_i16_le (self . current_battery) ; __tmp . put_u8 (self . id) ; __tmp . put_u8 (self . battery_function as u8) ; __tmp . put_u8 (self . mavtype as u8) ; __tmp . put_i8 (self . battery_remaining) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct AOA_SSA_DATA { pub time_usec : u64 , pub AOA : f32 , pub SSA : f32 , } impl AOA_SSA_DATA { pub const ENCODED_LEN : usize = 16usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , AOA : 0.0_f32 , SSA : 0.0_f32 , } ; } impl Default for AOA_SSA_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for AOA_SSA_DATA { type Message = MavMessage ; const ID : u32 = 11020u32 ; const NAME : & 'static str = "AOA_SSA" ; const EXTRA_CRC : u8 = 205u8 ; const ENCODED_LEN : usize = 16usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . AOA = buf . get_f32_le () ; __struct . SSA = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . AOA) ; __tmp . put_f32_le (self . SSA) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MISSION_CLEAR_ALL_DATA { pub target_system : u8 , pub target_component : u8 , } impl MISSION_CLEAR_ALL_DATA { pub const ENCODED_LEN : usize = 2usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for MISSION_CLEAR_ALL_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MISSION_CLEAR_ALL_DATA { type Message = MavMessage ; const ID : u32 = 45u32 ; const NAME : & 'static str = "MISSION_CLEAR_ALL" ; const EXTRA_CRC : u8 = 232u8 ; const ENCODED_LEN : usize = 2usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SCALED_PRESSURE2_DATA { pub time_boot_ms : u32 , pub press_abs : f32 , pub press_diff : f32 , pub temperature : i16 , } impl SCALED_PRESSURE2_DATA { pub const ENCODED_LEN : usize = 14usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , press_abs : 0.0_f32 , press_diff : 0.0_f32 , temperature : 0_i16 , } ; } impl Default for SCALED_PRESSURE2_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SCALED_PRESSURE2_DATA { type Message = MavMessage ; const ID : u32 = 137u32 ; const NAME : & 'static str = "SCALED_PRESSURE2" ; const EXTRA_CRC : u8 = 195u8 ; const ENCODED_LEN : usize = 14usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . press_abs = buf . get_f32_le () ; __struct . press_diff = buf . get_f32_le () ; __struct . temperature = buf . get_i16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . press_abs) ; __tmp . put_f32_le (self . press_diff) ; __tmp . put_i16_le (self . temperature) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct DISTANCE_SENSOR_DATA { pub time_boot_ms : u32 , pub min_distance : u16 , pub max_distance : u16 , pub current_distance : u16 , pub mavtype : MavDistanceSensor , pub id : u8 , pub orientation : MavSensorOrientation , pub covariance : u8 , } impl DISTANCE_SENSOR_DATA { pub const ENCODED_LEN : usize = 14usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , min_distance : 0_u16 , max_distance : 0_u16 , current_distance : 0_u16 , mavtype : MavDistanceSensor :: DEFAULT , id : 0_u8 , orientation : MavSensorOrientation :: DEFAULT , covariance : 0_u8 , } ; } impl Default for DISTANCE_SENSOR_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for DISTANCE_SENSOR_DATA { type Message = MavMessage ; const ID : u32 = 132u32 ; const NAME : & 'static str = "DISTANCE_SENSOR" ; const EXTRA_CRC : u8 = 85u8 ; const ENCODED_LEN : usize = 14usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . min_distance = buf . get_u16_le () ; __struct . max_distance = buf . get_u16_le () ; __struct . current_distance = buf . get_u16_le () ; let tmp = buf . get_u8 () ; __struct . mavtype = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavDistanceSensor" , value : tmp as u32 }) ? ; __struct . id = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . orientation = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavSensorOrientation" , value : tmp as u32 }) ? ; __struct . covariance = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_u16_le (self . min_distance) ; __tmp . put_u16_le (self . max_distance) ; __tmp . put_u16_le (self . current_distance) ; __tmp . put_u8 (self . mavtype as u8) ; __tmp . put_u8 (self . id) ; __tmp . put_u8 (self . orientation as u8) ; __tmp . put_u8 (self . covariance) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Clone , PartialEq , Debug)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavMessage { LOGGING_ACK (LOGGING_ACK_DATA) , GENERATOR_STATUS (GENERATOR_STATUS_DATA) , VIDEO_STREAM_STATUS (VIDEO_STREAM_STATUS_DATA) , SET_HOME_POSITION (SET_HOME_POSITION_DATA) , LOG_REQUEST_LIST (LOG_REQUEST_LIST_DATA) , VFR_HUD (VFR_HUD_DATA) , HIL_ACTUATOR_CONTROLS (HIL_ACTUATOR_CONTROLS_DATA) , GLOBAL_VISION_POSITION_ESTIMATE (GLOBAL_VISION_POSITION_ESTIMATE_DATA) , UAVCAN_NODE_INFO (UAVCAN_NODE_INFO_DATA) , FENCE_POINT (FENCE_POINT_DATA) , MISSION_REQUEST (MISSION_REQUEST_DATA) , DATA64 (DATA64_DATA) , GIMBAL_TORQUE_CMD_REPORT (GIMBAL_TORQUE_CMD_REPORT_DATA) , SYS_STATUS (SYS_STATUS_DATA) , MCU_STATUS (MCU_STATUS_DATA) , HIL_RC_INPUTS_RAW (HIL_RC_INPUTS_RAW_DATA) , PARAM_REQUEST_LIST (PARAM_REQUEST_LIST_DATA) , OSD_PARAM_SHOW_CONFIG (OSD_PARAM_SHOW_CONFIG_DATA) , POSITION_TARGET_GLOBAL_INT (POSITION_TARGET_GLOBAL_INT_DATA) , NAMED_VALUE_INT (NAMED_VALUE_INT_DATA) , CONTROL_SYSTEM_STATE (CONTROL_SYSTEM_STATE_DATA) , FLIGHT_INFORMATION (FLIGHT_INFORMATION_DATA) , UAVIONIX_ADSB_OUT_CFG (UAVIONIX_ADSB_OUT_CFG_DATA) , PLAY_TUNE_V2 (PLAY_TUNE_V2_DATA) , MANUAL_CONTROL (MANUAL_CONTROL_DATA) , ADAP_TUNING (ADAP_TUNING_DATA) , LOG_REQUEST_DATA (LOG_REQUEST_DATA_DATA) , HIL_SENSOR (HIL_SENSOR_DATA) , PARAM_EXT_REQUEST_READ (PARAM_EXT_REQUEST_READ_DATA) , PARAM_EXT_VALUE (PARAM_EXT_VALUE_DATA) , ICAROUS_KINEMATIC_BANDS (ICAROUS_KINEMATIC_BANDS_DATA) , LIMITS_STATUS (LIMITS_STATUS_DATA) , WIND (WIND_DATA) , CAMERA_TRACKING_GEO_STATUS (CAMERA_TRACKING_GEO_STATUS_DATA) , GPS2_RTK (GPS2_RTK_DATA) , HERELINK_TELEM (HERELINK_TELEM_DATA) , GIMBAL_REPORT (GIMBAL_REPORT_DATA) , COLLISION (COLLISION_DATA) , HEARTBEAT (HEARTBEAT_DATA) , ESC_TELEMETRY_1_TO_4 (ESC_TELEMETRY_1_TO_4_DATA) , RESPONSE_EVENT_ERROR (RESPONSE_EVENT_ERROR_DATA) , SAFETY_SET_ALLOWED_AREA (SAFETY_SET_ALLOWED_AREA_DATA) , LOG_DATA (LOG_DATA_DATA) , LOCAL_POSITION_NED (LOCAL_POSITION_NED_DATA) , ALTITUDE (ALTITUDE_DATA) , GIMBAL_MANAGER_SET_ATTITUDE (GIMBAL_MANAGER_SET_ATTITUDE_DATA) , GPS2_RAW (GPS2_RAW_DATA) , SET_POSITION_TARGET_LOCAL_NED (SET_POSITION_TARGET_LOCAL_NED_DATA) , SET_GPS_GLOBAL_ORIGIN (SET_GPS_GLOBAL_ORIGIN_DATA) , PARAM_VALUE (PARAM_VALUE_DATA) , OPTICAL_FLOW (OPTICAL_FLOW_DATA) , RC_CHANNELS (RC_CHANNELS_DATA) , PARAM_EXT_REQUEST_LIST (PARAM_EXT_REQUEST_LIST_DATA) , OPEN_DRONE_ID_BASIC_ID (OPEN_DRONE_ID_BASIC_ID_DATA) , LOCAL_POSITION_NED_COV (LOCAL_POSITION_NED_COV_DATA) , TERRAIN_REQUEST (TERRAIN_REQUEST_DATA) , DATA_TRANSMISSION_HANDSHAKE (DATA_TRANSMISSION_HANDSHAKE_DATA) , AHRS (AHRS_DATA) , OPEN_DRONE_ID_SYSTEM (OPEN_DRONE_ID_SYSTEM_DATA) , LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET (LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA) , MISSION_REQUEST_LIST (MISSION_REQUEST_LIST_DATA) , CAMERA_TRACKING_IMAGE_STATUS (CAMERA_TRACKING_IMAGE_STATUS_DATA) , POSITION_TARGET_LOCAL_NED (POSITION_TARGET_LOCAL_NED_DATA) , PING (PING_DATA) , PARAM_EXT_SET (PARAM_EXT_SET_DATA) , GIMBAL_DEVICE_INFORMATION (GIMBAL_DEVICE_INFORMATION_DATA) , AUTOPILOT_STATE_FOR_GIMBAL_DEVICE (AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA) , GIMBAL_CONTROL (GIMBAL_CONTROL_DATA) , EKF_STATUS_REPORT (EKF_STATUS_REPORT_DATA) , OSD_PARAM_SHOW_CONFIG_REPLY (OSD_PARAM_SHOW_CONFIG_REPLY_DATA) , SET_MAG_OFFSETS (SET_MAG_OFFSETS_DATA) , GIMBAL_DEVICE_SET_ATTITUDE (GIMBAL_DEVICE_SET_ATTITUDE_DATA) , DEVICE_OP_READ_REPLY (DEVICE_OP_READ_REPLY_DATA) , GOPRO_SET_REQUEST (GOPRO_SET_REQUEST_DATA) , GIMBAL_MANAGER_INFORMATION (GIMBAL_MANAGER_INFORMATION_DATA) , ORBIT_EXECUTION_STATUS (ORBIT_EXECUTION_STATUS_DATA) , DATA16 (DATA16_DATA) , COMPONENT_METADATA (COMPONENT_METADATA_DATA) , POWER_STATUS (POWER_STATUS_DATA) , RESOURCE_REQUEST (RESOURCE_REQUEST_DATA) , SET_ATTITUDE_TARGET (SET_ATTITUDE_TARGET_DATA) , COMMAND_ACK (COMMAND_ACK_DATA) , LOG_ENTRY (LOG_ENTRY_DATA) , EVENT (EVENT_DATA) , HWSTATUS (HWSTATUS_DATA) , CELLULAR_STATUS (CELLULAR_STATUS_DATA) , LOGGING_DATA (LOGGING_DATA_DATA) , HIL_GPS (HIL_GPS_DATA) , CAN_FRAME (CAN_FRAME_DATA) , CAMERA_IMAGE_CAPTURED (CAMERA_IMAGE_CAPTURED_DATA) , V2_EXTENSION (V2_EXTENSION_DATA) , SAFETY_ALLOWED_AREA (SAFETY_ALLOWED_AREA_DATA) , PROTOCOL_VERSION (PROTOCOL_VERSION_DATA) , RAW_IMU (RAW_IMU_DATA) , CAMERA_INFORMATION (CAMERA_INFORMATION_DATA) , OPEN_DRONE_ID_SYSTEM_UPDATE (OPEN_DRONE_ID_SYSTEM_UPDATE_DATA) , REQUEST_DATA_STREAM (REQUEST_DATA_STREAM_DATA) , OPEN_DRONE_ID_SELF_ID (OPEN_DRONE_ID_SELF_ID_DATA) , OPEN_DRONE_ID_AUTHENTICATION (OPEN_DRONE_ID_AUTHENTICATION_DATA) , ATT_POS_MOCAP (ATT_POS_MOCAP_DATA) , HOME_POSITION (HOME_POSITION_DATA) , COMMAND_INT (COMMAND_INT_DATA) , CAMERA_CAPTURE_STATUS (CAMERA_CAPTURE_STATUS_DATA) , RAW_PRESSURE (RAW_PRESSURE_DATA) , MISSION_ACK (MISSION_ACK_DATA) , GIMBAL_DEVICE_ATTITUDE_STATUS (GIMBAL_DEVICE_ATTITUDE_STATUS_DATA) , MANUAL_SETPOINT (MANUAL_SETPOINT_DATA) , RPM (RPM_DATA) , WATER_DEPTH (WATER_DEPTH_DATA) , REQUEST_EVENT (REQUEST_EVENT_DATA) , DEBUG_VECT (DEBUG_VECT_DATA) , REMOTE_LOG_BLOCK_STATUS (REMOTE_LOG_BLOCK_STATUS_DATA) , MISSION_REQUEST_INT (MISSION_REQUEST_INT_DATA) , NAMED_VALUE_FLOAT (NAMED_VALUE_FLOAT_DATA) , NAV_CONTROLLER_OUTPUT (NAV_CONTROLLER_OUTPUT_DATA) , AUTOPILOT_VERSION_REQUEST (AUTOPILOT_VERSION_REQUEST_DATA) , HIL_STATE (HIL_STATE_DATA) , LOG_REQUEST_END (LOG_REQUEST_END_DATA) , REMOTE_LOG_DATA_BLOCK (REMOTE_LOG_DATA_BLOCK_DATA) , PARAM_MAP_RC (PARAM_MAP_RC_DATA) , DEBUG_FLOAT_ARRAY (DEBUG_FLOAT_ARRAY_DATA) , AHRS3 (AHRS3_DATA) , OPEN_DRONE_ID_ARM_STATUS (OPEN_DRONE_ID_ARM_STATUS_DATA) , OBSTACLE_DISTANCE_3D (OBSTACLE_DISTANCE_3D_DATA) , SUPPORTED_TUNES (SUPPORTED_TUNES_DATA) , SIMSTATE (SIMSTATE_DATA) , CANFD_FRAME (CANFD_FRAME_DATA) , MISSION_COUNT (MISSION_COUNT_DATA) , AUTOPILOT_VERSION (AUTOPILOT_VERSION_DATA) , OPEN_DRONE_ID_MESSAGE_PACK (OPEN_DRONE_ID_MESSAGE_PACK_DATA) , LOGGING_DATA_ACKED (LOGGING_DATA_ACKED_DATA) , GPS_GLOBAL_ORIGIN (GPS_GLOBAL_ORIGIN_DATA) , GIMBAL_MANAGER_STATUS (GIMBAL_MANAGER_STATUS_DATA) , MISSION_ITEM (MISSION_ITEM_DATA) , CUBEPILOT_FIRMWARE_UPDATE_START (CUBEPILOT_FIRMWARE_UPDATE_START_DATA) , AP_ADC (AP_ADC_DATA) , LINK_NODE_STATUS (LINK_NODE_STATUS_DATA) , PARAM_EXT_ACK (PARAM_EXT_ACK_DATA) , VICON_POSITION_ESTIMATE (VICON_POSITION_ESTIMATE_DATA) , CAMERA_FOV_STATUS (CAMERA_FOV_STATUS_DATA) , TERRAIN_REPORT (TERRAIN_REPORT_DATA) , ACTUATOR_OUTPUT_STATUS (ACTUATOR_OUTPUT_STATUS_DATA) , MESSAGE_INTERVAL (MESSAGE_INTERVAL_DATA) , ONBOARD_COMPUTER_STATUS (ONBOARD_COMPUTER_STATUS_DATA) , UAVIONIX_ADSB_OUT_DYNAMIC (UAVIONIX_ADSB_OUT_DYNAMIC_DATA) , HERELINK_VIDEO_STREAM_INFORMATION (HERELINK_VIDEO_STREAM_INFORMATION_DATA) , RALLY_POINT (RALLY_POINT_DATA) , UAVCAN_NODE_STATUS (UAVCAN_NODE_STATUS_DATA) , COMPASSMOT_STATUS (COMPASSMOT_STATUS_DATA) , CAMERA_FEEDBACK (CAMERA_FEEDBACK_DATA) , RALLY_FETCH_POINT (RALLY_FETCH_POINT_DATA) , HIGH_LATENCY2 (HIGH_LATENCY2_DATA) , GOPRO_HEARTBEAT (GOPRO_HEARTBEAT_DATA) , MEMORY_VECT (MEMORY_VECT_DATA) , CUBEPILOT_FIRMWARE_UPDATE_RESP (CUBEPILOT_FIRMWARE_UPDATE_RESP_DATA) , SET_POSITION_TARGET_GLOBAL_INT (SET_POSITION_TARGET_GLOBAL_INT_DATA) , MISSION_ITEM_INT (MISSION_ITEM_INT_DATA) , SETUP_SIGNING (SETUP_SIGNING_DATA) , TERRAIN_DATA (TERRAIN_DATA_DATA) , CHANGE_OPERATOR_CONTROL (CHANGE_OPERATOR_CONTROL_DATA) , MISSION_WRITE_PARTIAL_LIST (MISSION_WRITE_PARTIAL_LIST_DATA) , SERIAL_CONTROL (SERIAL_CONTROL_DATA) , CUBEPILOT_RAW_RC (CUBEPILOT_RAW_RC_DATA) , FENCE_FETCH_POINT (FENCE_FETCH_POINT_DATA) , GOPRO_SET_RESPONSE (GOPRO_SET_RESPONSE_DATA) , CAMERA_TRIGGER (CAMERA_TRIGGER_DATA) , VISION_POSITION_DELTA (VISION_POSITION_DELTA_DATA) , OPEN_DRONE_ID_LOCATION (OPEN_DRONE_ID_LOCATION_DATA) , GOPRO_GET_RESPONSE (GOPRO_GET_RESPONSE_DATA) , SCALED_PRESSURE3 (SCALED_PRESSURE3_DATA) , SMART_BATTERY_INFO (SMART_BATTERY_INFO_DATA) , OPEN_DRONE_ID_OPERATOR_ID (OPEN_DRONE_ID_OPERATOR_ID_DATA) , ESC_INFO (ESC_INFO_DATA) , STORAGE_INFORMATION (STORAGE_INFORMATION_DATA) , RADIO_STATUS (RADIO_STATUS_DATA) , WHEEL_DISTANCE (WHEEL_DISTANCE_DATA) , FILE_TRANSFER_PROTOCOL (FILE_TRANSFER_PROTOCOL_DATA) , DEVICE_OP_READ (DEVICE_OP_READ_DATA) , MOUNT_CONTROL (MOUNT_CONTROL_DATA) , BATTERY2 (BATTERY2_DATA) , OPTICAL_FLOW_RAD (OPTICAL_FLOW_RAD_DATA) , ESC_TELEMETRY_9_TO_12 (ESC_TELEMETRY_9_TO_12_DATA) , HIL_OPTICAL_FLOW (HIL_OPTICAL_FLOW_DATA) , SIM_STATE (SIM_STATE_DATA) , VIDEO_STREAM_INFORMATION (VIDEO_STREAM_INFORMATION_DATA) , COMPONENT_INFORMATION (COMPONENT_INFORMATION_DATA) , LOG_ERASE (LOG_ERASE_DATA) , SERVO_OUTPUT_RAW (SERVO_OUTPUT_RAW_DATA) , HYGROMETER_SENSOR (HYGROMETER_SENSOR_DATA) , DIGICAM_CONTROL (DIGICAM_CONTROL_DATA) , ENCAPSULATED_DATA (ENCAPSULATED_DATA_DATA) , WIFI_CONFIG_AP (WIFI_CONFIG_AP_DATA) , SET_ACTUATOR_CONTROL_TARGET (SET_ACTUATOR_CONTROL_TARGET_DATA) , SYSTEM_TIME (SYSTEM_TIME_DATA) , ISBD_LINK_STATUS (ISBD_LINK_STATUS_DATA) , PLAY_TUNE (PLAY_TUNE_DATA) , ATTITUDE (ATTITUDE_DATA) , MAG_CAL_REPORT (MAG_CAL_REPORT_DATA) , UTM_GLOBAL_POSITION (UTM_GLOBAL_POSITION_DATA) , LANDING_TARGET (LANDING_TARGET_DATA) , MISSION_REQUEST_PARTIAL_LIST (MISSION_REQUEST_PARTIAL_LIST_DATA) , RANGEFINDER (RANGEFINDER_DATA) , MAG_CAL_PROGRESS (MAG_CAL_PROGRESS_DATA) , PID_TUNING (PID_TUNING_DATA) , COMMAND_CANCEL (COMMAND_CANCEL_DATA) , DEVICE_OP_WRITE (DEVICE_OP_WRITE_DATA) , SCALED_IMU (SCALED_IMU_DATA) , RC_CHANNELS_SCALED (RC_CHANNELS_SCALED_DATA) , VIBRATION (VIBRATION_DATA) , DEVICE_OP_WRITE_REPLY (DEVICE_OP_WRITE_REPLY_DATA) , OSD_PARAM_CONFIG (OSD_PARAM_CONFIG_DATA) , ESC_TELEMETRY_5_TO_8 (ESC_TELEMETRY_5_TO_8_DATA) , PARAM_REQUEST_READ (PARAM_REQUEST_READ_DATA) , ATTITUDE_TARGET (ATTITUDE_TARGET_DATA) , ESC_STATUS (ESC_STATUS_DATA) , CURRENT_EVENT_SEQUENCE (CURRENT_EVENT_SEQUENCE_DATA) , CAMERA_SETTINGS (CAMERA_SETTINGS_DATA) , SET_MODE (SET_MODE_DATA) , GPS_INJECT_DATA (GPS_INJECT_DATA_DATA) , GIMBAL_MANAGER_SET_PITCHYAW (GIMBAL_MANAGER_SET_PITCHYAW_DATA) , GOPRO_GET_REQUEST (GOPRO_GET_REQUEST_DATA) , GLOBAL_POSITION_INT_COV (GLOBAL_POSITION_INT_COV_DATA) , MOUNT_CONFIGURE (MOUNT_CONFIGURE_DATA) , WINCH_STATUS (WINCH_STATUS_DATA) , TIME_ESTIMATE_TO_TARGET (TIME_ESTIMATE_TO_TARGET_DATA) , ESTIMATOR_STATUS (ESTIMATOR_STATUS_DATA) , MISSION_SET_CURRENT (MISSION_SET_CURRENT_DATA) , LED_CONTROL (LED_CONTROL_DATA) , RADIO (RADIO_DATA) , TERRAIN_CHECK (TERRAIN_CHECK_DATA) , MISSION_ITEM_REACHED (MISSION_ITEM_REACHED_DATA) , GPS_RAW_INT (GPS_RAW_INT_DATA) , GIMBAL_MANAGER_SET_MANUAL_CONTROL (GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA) , EFI_STATUS (EFI_STATUS_DATA) , COMMAND_LONG (COMMAND_LONG_DATA) , HIL_STATE_QUATERNION (HIL_STATE_QUATERNION_DATA) , BUTTON_CHANGE (BUTTON_CHANGE_DATA) , TRAJECTORY_REPRESENTATION_WAYPOINTS (TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA) , RAW_RPM (RAW_RPM_DATA) , SCALED_PRESSURE (SCALED_PRESSURE_DATA) , UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT (UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA) , SENSOR_OFFSETS (SENSOR_OFFSETS_DATA) , HIGHRES_IMU (HIGHRES_IMU_DATA) , AHRS2 (AHRS2_DATA) , ATTITUDE_QUATERNION_COV (ATTITUDE_QUATERNION_COV_DATA) , MISSION_CURRENT (MISSION_CURRENT_DATA) , AIRSPEED_AUTOCAL (AIRSPEED_AUTOCAL_DATA) , ODOMETRY (ODOMETRY_DATA) , ICAROUS_HEARTBEAT (ICAROUS_HEARTBEAT_DATA) , MEMINFO (MEMINFO_DATA) , EXTENDED_SYS_STATE (EXTENDED_SYS_STATE_DATA) , TRAJECTORY_REPRESENTATION_BEZIER (TRAJECTORY_REPRESENTATION_BEZIER_DATA) , CAMERA_STATUS (CAMERA_STATUS_DATA) , WIND_COV (WIND_COV_DATA) , AIS_VESSEL (AIS_VESSEL_DATA) , GPS_INPUT (GPS_INPUT_DATA) , TIMESYNC (TIMESYNC_DATA) , SCALED_IMU3 (SCALED_IMU3_DATA) , ADSB_VEHICLE (ADSB_VEHICLE_DATA) , DEBUG (DEBUG_DATA) , FOLLOW_TARGET (FOLLOW_TARGET_DATA) , VISION_SPEED_ESTIMATE (VISION_SPEED_ESTIMATE_DATA) , DIGICAM_CONFIGURE (DIGICAM_CONFIGURE_DATA) , CHANGE_OPERATOR_CONTROL_ACK (CHANGE_OPERATOR_CONTROL_ACK_DATA) , MOUNT_STATUS (MOUNT_STATUS_DATA) , GPS_RTK (GPS_RTK_DATA) , DATA32 (DATA32_DATA) , HIL_CONTROLS (HIL_CONTROLS_DATA) , DATA96 (DATA96_DATA) , SCALED_IMU2 (SCALED_IMU2_DATA) , DATA_STREAM (DATA_STREAM_DATA) , MOUNT_ORIENTATION (MOUNT_ORIENTATION_DATA) , HIGH_LATENCY (HIGH_LATENCY_DATA) , GLOBAL_POSITION_INT (GLOBAL_POSITION_INT_DATA) , OSD_PARAM_CONFIG_REPLY (OSD_PARAM_CONFIG_REPLY_DATA) , ACTUATOR_CONTROL_TARGET (ACTUATOR_CONTROL_TARGET_DATA) , OBSTACLE_DISTANCE (OBSTACLE_DISTANCE_DATA) , CAN_FILTER_MODIFY (CAN_FILTER_MODIFY_DATA) , VISION_POSITION_ESTIMATE (VISION_POSITION_ESTIMATE_DATA) , STATUSTEXT (STATUSTEXT_DATA) , ATTITUDE_QUATERNION (ATTITUDE_QUATERNION_DATA) , PARAM_SET (PARAM_SET_DATA) , TUNNEL (TUNNEL_DATA) , RC_CHANNELS_RAW (RC_CHANNELS_RAW_DATA) , CELLULAR_CONFIG (CELLULAR_CONFIG_DATA) , GPS_RTCM_DATA (GPS_RTCM_DATA_DATA) , AUTH_KEY (AUTH_KEY_DATA) , GPS_STATUS (GPS_STATUS_DATA) , RC_CHANNELS_OVERRIDE (RC_CHANNELS_OVERRIDE_DATA) , DEEPSTALL (DEEPSTALL_DATA) , FENCE_STATUS (FENCE_STATUS_DATA) , BATTERY_STATUS (BATTERY_STATUS_DATA) , AOA_SSA (AOA_SSA_DATA) , MISSION_CLEAR_ALL (MISSION_CLEAR_ALL_DATA) , SCALED_PRESSURE2 (SCALED_PRESSURE2_DATA) , DISTANCE_SENSOR (DISTANCE_SENSOR_DATA) , } impl Message for MavMessage { fn parse (version : MavlinkVersion , id : u32 , payload : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { match id { LOGGING_ACK_DATA :: ID => LOGGING_ACK_DATA :: deser (version , payload) . map (Self :: LOGGING_ACK) , GENERATOR_STATUS_DATA :: ID => GENERATOR_STATUS_DATA :: deser (version , payload) . map (Self :: GENERATOR_STATUS) , VIDEO_STREAM_STATUS_DATA :: ID => VIDEO_STREAM_STATUS_DATA :: deser (version , payload) . map (Self :: VIDEO_STREAM_STATUS) , SET_HOME_POSITION_DATA :: ID => SET_HOME_POSITION_DATA :: deser (version , payload) . map (Self :: SET_HOME_POSITION) , LOG_REQUEST_LIST_DATA :: ID => LOG_REQUEST_LIST_DATA :: deser (version , payload) . map (Self :: LOG_REQUEST_LIST) , VFR_HUD_DATA :: ID => VFR_HUD_DATA :: deser (version , payload) . map (Self :: VFR_HUD) , HIL_ACTUATOR_CONTROLS_DATA :: ID => HIL_ACTUATOR_CONTROLS_DATA :: deser (version , payload) . map (Self :: HIL_ACTUATOR_CONTROLS) , GLOBAL_VISION_POSITION_ESTIMATE_DATA :: ID => GLOBAL_VISION_POSITION_ESTIMATE_DATA :: deser (version , payload) . map (Self :: GLOBAL_VISION_POSITION_ESTIMATE) , UAVCAN_NODE_INFO_DATA :: ID => UAVCAN_NODE_INFO_DATA :: deser (version , payload) . map (Self :: UAVCAN_NODE_INFO) , FENCE_POINT_DATA :: ID => FENCE_POINT_DATA :: deser (version , payload) . map (Self :: FENCE_POINT) , MISSION_REQUEST_DATA :: ID => MISSION_REQUEST_DATA :: deser (version , payload) . map (Self :: MISSION_REQUEST) , DATA64_DATA :: ID => DATA64_DATA :: deser (version , payload) . map (Self :: DATA64) , GIMBAL_TORQUE_CMD_REPORT_DATA :: ID => GIMBAL_TORQUE_CMD_REPORT_DATA :: deser (version , payload) . map (Self :: GIMBAL_TORQUE_CMD_REPORT) , SYS_STATUS_DATA :: ID => SYS_STATUS_DATA :: deser (version , payload) . map (Self :: SYS_STATUS) , MCU_STATUS_DATA :: ID => MCU_STATUS_DATA :: deser (version , payload) . map (Self :: MCU_STATUS) , HIL_RC_INPUTS_RAW_DATA :: ID => HIL_RC_INPUTS_RAW_DATA :: deser (version , payload) . map (Self :: HIL_RC_INPUTS_RAW) , PARAM_REQUEST_LIST_DATA :: ID => PARAM_REQUEST_LIST_DATA :: deser (version , payload) . map (Self :: PARAM_REQUEST_LIST) , OSD_PARAM_SHOW_CONFIG_DATA :: ID => OSD_PARAM_SHOW_CONFIG_DATA :: deser (version , payload) . map (Self :: OSD_PARAM_SHOW_CONFIG) , POSITION_TARGET_GLOBAL_INT_DATA :: ID => POSITION_TARGET_GLOBAL_INT_DATA :: deser (version , payload) . map (Self :: POSITION_TARGET_GLOBAL_INT) , NAMED_VALUE_INT_DATA :: ID => NAMED_VALUE_INT_DATA :: deser (version , payload) . map (Self :: NAMED_VALUE_INT) , CONTROL_SYSTEM_STATE_DATA :: ID => CONTROL_SYSTEM_STATE_DATA :: deser (version , payload) . map (Self :: CONTROL_SYSTEM_STATE) , FLIGHT_INFORMATION_DATA :: ID => FLIGHT_INFORMATION_DATA :: deser (version , payload) . map (Self :: FLIGHT_INFORMATION) , UAVIONIX_ADSB_OUT_CFG_DATA :: ID => UAVIONIX_ADSB_OUT_CFG_DATA :: deser (version , payload) . map (Self :: UAVIONIX_ADSB_OUT_CFG) , PLAY_TUNE_V2_DATA :: ID => PLAY_TUNE_V2_DATA :: deser (version , payload) . map (Self :: PLAY_TUNE_V2) , MANUAL_CONTROL_DATA :: ID => MANUAL_CONTROL_DATA :: deser (version , payload) . map (Self :: MANUAL_CONTROL) , ADAP_TUNING_DATA :: ID => ADAP_TUNING_DATA :: deser (version , payload) . map (Self :: ADAP_TUNING) , LOG_REQUEST_DATA_DATA :: ID => LOG_REQUEST_DATA_DATA :: deser (version , payload) . map (Self :: LOG_REQUEST_DATA) , HIL_SENSOR_DATA :: ID => HIL_SENSOR_DATA :: deser (version , payload) . map (Self :: HIL_SENSOR) , PARAM_EXT_REQUEST_READ_DATA :: ID => PARAM_EXT_REQUEST_READ_DATA :: deser (version , payload) . map (Self :: PARAM_EXT_REQUEST_READ) , PARAM_EXT_VALUE_DATA :: ID => PARAM_EXT_VALUE_DATA :: deser (version , payload) . map (Self :: PARAM_EXT_VALUE) , ICAROUS_KINEMATIC_BANDS_DATA :: ID => ICAROUS_KINEMATIC_BANDS_DATA :: deser (version , payload) . map (Self :: ICAROUS_KINEMATIC_BANDS) , LIMITS_STATUS_DATA :: ID => LIMITS_STATUS_DATA :: deser (version , payload) . map (Self :: LIMITS_STATUS) , WIND_DATA :: ID => WIND_DATA :: deser (version , payload) . map (Self :: WIND) , CAMERA_TRACKING_GEO_STATUS_DATA :: ID => CAMERA_TRACKING_GEO_STATUS_DATA :: deser (version , payload) . map (Self :: CAMERA_TRACKING_GEO_STATUS) , GPS2_RTK_DATA :: ID => GPS2_RTK_DATA :: deser (version , payload) . map (Self :: GPS2_RTK) , HERELINK_TELEM_DATA :: ID => HERELINK_TELEM_DATA :: deser (version , payload) . map (Self :: HERELINK_TELEM) , GIMBAL_REPORT_DATA :: ID => GIMBAL_REPORT_DATA :: deser (version , payload) . map (Self :: GIMBAL_REPORT) , COLLISION_DATA :: ID => COLLISION_DATA :: deser (version , payload) . map (Self :: COLLISION) , HEARTBEAT_DATA :: ID => HEARTBEAT_DATA :: deser (version , payload) . map (Self :: HEARTBEAT) , ESC_TELEMETRY_1_TO_4_DATA :: ID => ESC_TELEMETRY_1_TO_4_DATA :: deser (version , payload) . map (Self :: ESC_TELEMETRY_1_TO_4) , RESPONSE_EVENT_ERROR_DATA :: ID => RESPONSE_EVENT_ERROR_DATA :: deser (version , payload) . map (Self :: RESPONSE_EVENT_ERROR) , SAFETY_SET_ALLOWED_AREA_DATA :: ID => SAFETY_SET_ALLOWED_AREA_DATA :: deser (version , payload) . map (Self :: SAFETY_SET_ALLOWED_AREA) , LOG_DATA_DATA :: ID => LOG_DATA_DATA :: deser (version , payload) . map (Self :: LOG_DATA) , LOCAL_POSITION_NED_DATA :: ID => LOCAL_POSITION_NED_DATA :: deser (version , payload) . map (Self :: LOCAL_POSITION_NED) , ALTITUDE_DATA :: ID => ALTITUDE_DATA :: deser (version , payload) . map (Self :: ALTITUDE) , GIMBAL_MANAGER_SET_ATTITUDE_DATA :: ID => GIMBAL_MANAGER_SET_ATTITUDE_DATA :: deser (version , payload) . map (Self :: GIMBAL_MANAGER_SET_ATTITUDE) , GPS2_RAW_DATA :: ID => GPS2_RAW_DATA :: deser (version , payload) . map (Self :: GPS2_RAW) , SET_POSITION_TARGET_LOCAL_NED_DATA :: ID => SET_POSITION_TARGET_LOCAL_NED_DATA :: deser (version , payload) . map (Self :: SET_POSITION_TARGET_LOCAL_NED) , SET_GPS_GLOBAL_ORIGIN_DATA :: ID => SET_GPS_GLOBAL_ORIGIN_DATA :: deser (version , payload) . map (Self :: SET_GPS_GLOBAL_ORIGIN) , PARAM_VALUE_DATA :: ID => PARAM_VALUE_DATA :: deser (version , payload) . map (Self :: PARAM_VALUE) , OPTICAL_FLOW_DATA :: ID => OPTICAL_FLOW_DATA :: deser (version , payload) . map (Self :: OPTICAL_FLOW) , RC_CHANNELS_DATA :: ID => RC_CHANNELS_DATA :: deser (version , payload) . map (Self :: RC_CHANNELS) , PARAM_EXT_REQUEST_LIST_DATA :: ID => PARAM_EXT_REQUEST_LIST_DATA :: deser (version , payload) . map (Self :: PARAM_EXT_REQUEST_LIST) , OPEN_DRONE_ID_BASIC_ID_DATA :: ID => OPEN_DRONE_ID_BASIC_ID_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_BASIC_ID) , LOCAL_POSITION_NED_COV_DATA :: ID => LOCAL_POSITION_NED_COV_DATA :: deser (version , payload) . map (Self :: LOCAL_POSITION_NED_COV) , TERRAIN_REQUEST_DATA :: ID => TERRAIN_REQUEST_DATA :: deser (version , payload) . map (Self :: TERRAIN_REQUEST) , DATA_TRANSMISSION_HANDSHAKE_DATA :: ID => DATA_TRANSMISSION_HANDSHAKE_DATA :: deser (version , payload) . map (Self :: DATA_TRANSMISSION_HANDSHAKE) , AHRS_DATA :: ID => AHRS_DATA :: deser (version , payload) . map (Self :: AHRS) , OPEN_DRONE_ID_SYSTEM_DATA :: ID => OPEN_DRONE_ID_SYSTEM_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_SYSTEM) , LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: ID => LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: deser (version , payload) . map (Self :: LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET) , MISSION_REQUEST_LIST_DATA :: ID => MISSION_REQUEST_LIST_DATA :: deser (version , payload) . map (Self :: MISSION_REQUEST_LIST) , CAMERA_TRACKING_IMAGE_STATUS_DATA :: ID => CAMERA_TRACKING_IMAGE_STATUS_DATA :: deser (version , payload) . map (Self :: CAMERA_TRACKING_IMAGE_STATUS) , POSITION_TARGET_LOCAL_NED_DATA :: ID => POSITION_TARGET_LOCAL_NED_DATA :: deser (version , payload) . map (Self :: POSITION_TARGET_LOCAL_NED) , PING_DATA :: ID => PING_DATA :: deser (version , payload) . map (Self :: PING) , PARAM_EXT_SET_DATA :: ID => PARAM_EXT_SET_DATA :: deser (version , payload) . map (Self :: PARAM_EXT_SET) , GIMBAL_DEVICE_INFORMATION_DATA :: ID => GIMBAL_DEVICE_INFORMATION_DATA :: deser (version , payload) . map (Self :: GIMBAL_DEVICE_INFORMATION) , AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: ID => AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: deser (version , payload) . map (Self :: AUTOPILOT_STATE_FOR_GIMBAL_DEVICE) , GIMBAL_CONTROL_DATA :: ID => GIMBAL_CONTROL_DATA :: deser (version , payload) . map (Self :: GIMBAL_CONTROL) , EKF_STATUS_REPORT_DATA :: ID => EKF_STATUS_REPORT_DATA :: deser (version , payload) . map (Self :: EKF_STATUS_REPORT) , OSD_PARAM_SHOW_CONFIG_REPLY_DATA :: ID => OSD_PARAM_SHOW_CONFIG_REPLY_DATA :: deser (version , payload) . map (Self :: OSD_PARAM_SHOW_CONFIG_REPLY) , SET_MAG_OFFSETS_DATA :: ID => SET_MAG_OFFSETS_DATA :: deser (version , payload) . map (Self :: SET_MAG_OFFSETS) , GIMBAL_DEVICE_SET_ATTITUDE_DATA :: ID => GIMBAL_DEVICE_SET_ATTITUDE_DATA :: deser (version , payload) . map (Self :: GIMBAL_DEVICE_SET_ATTITUDE) , DEVICE_OP_READ_REPLY_DATA :: ID => DEVICE_OP_READ_REPLY_DATA :: deser (version , payload) . map (Self :: DEVICE_OP_READ_REPLY) , GOPRO_SET_REQUEST_DATA :: ID => GOPRO_SET_REQUEST_DATA :: deser (version , payload) . map (Self :: GOPRO_SET_REQUEST) , GIMBAL_MANAGER_INFORMATION_DATA :: ID => GIMBAL_MANAGER_INFORMATION_DATA :: deser (version , payload) . map (Self :: GIMBAL_MANAGER_INFORMATION) , ORBIT_EXECUTION_STATUS_DATA :: ID => ORBIT_EXECUTION_STATUS_DATA :: deser (version , payload) . map (Self :: ORBIT_EXECUTION_STATUS) , DATA16_DATA :: ID => DATA16_DATA :: deser (version , payload) . map (Self :: DATA16) , COMPONENT_METADATA_DATA :: ID => COMPONENT_METADATA_DATA :: deser (version , payload) . map (Self :: COMPONENT_METADATA) , POWER_STATUS_DATA :: ID => POWER_STATUS_DATA :: deser (version , payload) . map (Self :: POWER_STATUS) , RESOURCE_REQUEST_DATA :: ID => RESOURCE_REQUEST_DATA :: deser (version , payload) . map (Self :: RESOURCE_REQUEST) , SET_ATTITUDE_TARGET_DATA :: ID => SET_ATTITUDE_TARGET_DATA :: deser (version , payload) . map (Self :: SET_ATTITUDE_TARGET) , COMMAND_ACK_DATA :: ID => COMMAND_ACK_DATA :: deser (version , payload) . map (Self :: COMMAND_ACK) , LOG_ENTRY_DATA :: ID => LOG_ENTRY_DATA :: deser (version , payload) . map (Self :: LOG_ENTRY) , EVENT_DATA :: ID => EVENT_DATA :: deser (version , payload) . map (Self :: EVENT) , HWSTATUS_DATA :: ID => HWSTATUS_DATA :: deser (version , payload) . map (Self :: HWSTATUS) , CELLULAR_STATUS_DATA :: ID => CELLULAR_STATUS_DATA :: deser (version , payload) . map (Self :: CELLULAR_STATUS) , LOGGING_DATA_DATA :: ID => LOGGING_DATA_DATA :: deser (version , payload) . map (Self :: LOGGING_DATA) , HIL_GPS_DATA :: ID => HIL_GPS_DATA :: deser (version , payload) . map (Self :: HIL_GPS) , CAN_FRAME_DATA :: ID => CAN_FRAME_DATA :: deser (version , payload) . map (Self :: CAN_FRAME) , CAMERA_IMAGE_CAPTURED_DATA :: ID => CAMERA_IMAGE_CAPTURED_DATA :: deser (version , payload) . map (Self :: CAMERA_IMAGE_CAPTURED) , V2_EXTENSION_DATA :: ID => V2_EXTENSION_DATA :: deser (version , payload) . map (Self :: V2_EXTENSION) , SAFETY_ALLOWED_AREA_DATA :: ID => SAFETY_ALLOWED_AREA_DATA :: deser (version , payload) . map (Self :: SAFETY_ALLOWED_AREA) , PROTOCOL_VERSION_DATA :: ID => PROTOCOL_VERSION_DATA :: deser (version , payload) . map (Self :: PROTOCOL_VERSION) , RAW_IMU_DATA :: ID => RAW_IMU_DATA :: deser (version , payload) . map (Self :: RAW_IMU) , CAMERA_INFORMATION_DATA :: ID => CAMERA_INFORMATION_DATA :: deser (version , payload) . map (Self :: CAMERA_INFORMATION) , OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: ID => OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_SYSTEM_UPDATE) , REQUEST_DATA_STREAM_DATA :: ID => REQUEST_DATA_STREAM_DATA :: deser (version , payload) . map (Self :: REQUEST_DATA_STREAM) , OPEN_DRONE_ID_SELF_ID_DATA :: ID => OPEN_DRONE_ID_SELF_ID_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_SELF_ID) , OPEN_DRONE_ID_AUTHENTICATION_DATA :: ID => OPEN_DRONE_ID_AUTHENTICATION_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_AUTHENTICATION) , ATT_POS_MOCAP_DATA :: ID => ATT_POS_MOCAP_DATA :: deser (version , payload) . map (Self :: ATT_POS_MOCAP) , HOME_POSITION_DATA :: ID => HOME_POSITION_DATA :: deser (version , payload) . map (Self :: HOME_POSITION) , COMMAND_INT_DATA :: ID => COMMAND_INT_DATA :: deser (version , payload) . map (Self :: COMMAND_INT) , CAMERA_CAPTURE_STATUS_DATA :: ID => CAMERA_CAPTURE_STATUS_DATA :: deser (version , payload) . map (Self :: CAMERA_CAPTURE_STATUS) , RAW_PRESSURE_DATA :: ID => RAW_PRESSURE_DATA :: deser (version , payload) . map (Self :: RAW_PRESSURE) , MISSION_ACK_DATA :: ID => MISSION_ACK_DATA :: deser (version , payload) . map (Self :: MISSION_ACK) , GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: ID => GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: deser (version , payload) . map (Self :: GIMBAL_DEVICE_ATTITUDE_STATUS) , MANUAL_SETPOINT_DATA :: ID => MANUAL_SETPOINT_DATA :: deser (version , payload) . map (Self :: MANUAL_SETPOINT) , RPM_DATA :: ID => RPM_DATA :: deser (version , payload) . map (Self :: RPM) , WATER_DEPTH_DATA :: ID => WATER_DEPTH_DATA :: deser (version , payload) . map (Self :: WATER_DEPTH) , REQUEST_EVENT_DATA :: ID => REQUEST_EVENT_DATA :: deser (version , payload) . map (Self :: REQUEST_EVENT) , DEBUG_VECT_DATA :: ID => DEBUG_VECT_DATA :: deser (version , payload) . map (Self :: DEBUG_VECT) , REMOTE_LOG_BLOCK_STATUS_DATA :: ID => REMOTE_LOG_BLOCK_STATUS_DATA :: deser (version , payload) . map (Self :: REMOTE_LOG_BLOCK_STATUS) , MISSION_REQUEST_INT_DATA :: ID => MISSION_REQUEST_INT_DATA :: deser (version , payload) . map (Self :: MISSION_REQUEST_INT) , NAMED_VALUE_FLOAT_DATA :: ID => NAMED_VALUE_FLOAT_DATA :: deser (version , payload) . map (Self :: NAMED_VALUE_FLOAT) , NAV_CONTROLLER_OUTPUT_DATA :: ID => NAV_CONTROLLER_OUTPUT_DATA :: deser (version , payload) . map (Self :: NAV_CONTROLLER_OUTPUT) , AUTOPILOT_VERSION_REQUEST_DATA :: ID => AUTOPILOT_VERSION_REQUEST_DATA :: deser (version , payload) . map (Self :: AUTOPILOT_VERSION_REQUEST) , HIL_STATE_DATA :: ID => HIL_STATE_DATA :: deser (version , payload) . map (Self :: HIL_STATE) , LOG_REQUEST_END_DATA :: ID => LOG_REQUEST_END_DATA :: deser (version , payload) . map (Self :: LOG_REQUEST_END) , REMOTE_LOG_DATA_BLOCK_DATA :: ID => REMOTE_LOG_DATA_BLOCK_DATA :: deser (version , payload) . map (Self :: REMOTE_LOG_DATA_BLOCK) , PARAM_MAP_RC_DATA :: ID => PARAM_MAP_RC_DATA :: deser (version , payload) . map (Self :: PARAM_MAP_RC) , DEBUG_FLOAT_ARRAY_DATA :: ID => DEBUG_FLOAT_ARRAY_DATA :: deser (version , payload) . map (Self :: DEBUG_FLOAT_ARRAY) , AHRS3_DATA :: ID => AHRS3_DATA :: deser (version , payload) . map (Self :: AHRS3) , OPEN_DRONE_ID_ARM_STATUS_DATA :: ID => OPEN_DRONE_ID_ARM_STATUS_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_ARM_STATUS) , OBSTACLE_DISTANCE_3D_DATA :: ID => OBSTACLE_DISTANCE_3D_DATA :: deser (version , payload) . map (Self :: OBSTACLE_DISTANCE_3D) , SUPPORTED_TUNES_DATA :: ID => SUPPORTED_TUNES_DATA :: deser (version , payload) . map (Self :: SUPPORTED_TUNES) , SIMSTATE_DATA :: ID => SIMSTATE_DATA :: deser (version , payload) . map (Self :: SIMSTATE) , CANFD_FRAME_DATA :: ID => CANFD_FRAME_DATA :: deser (version , payload) . map (Self :: CANFD_FRAME) , MISSION_COUNT_DATA :: ID => MISSION_COUNT_DATA :: deser (version , payload) . map (Self :: MISSION_COUNT) , AUTOPILOT_VERSION_DATA :: ID => AUTOPILOT_VERSION_DATA :: deser (version , payload) . map (Self :: AUTOPILOT_VERSION) , OPEN_DRONE_ID_MESSAGE_PACK_DATA :: ID => OPEN_DRONE_ID_MESSAGE_PACK_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_MESSAGE_PACK) , LOGGING_DATA_ACKED_DATA :: ID => LOGGING_DATA_ACKED_DATA :: deser (version , payload) . map (Self :: LOGGING_DATA_ACKED) , GPS_GLOBAL_ORIGIN_DATA :: ID => GPS_GLOBAL_ORIGIN_DATA :: deser (version , payload) . map (Self :: GPS_GLOBAL_ORIGIN) , GIMBAL_MANAGER_STATUS_DATA :: ID => GIMBAL_MANAGER_STATUS_DATA :: deser (version , payload) . map (Self :: GIMBAL_MANAGER_STATUS) , MISSION_ITEM_DATA :: ID => MISSION_ITEM_DATA :: deser (version , payload) . map (Self :: MISSION_ITEM) , CUBEPILOT_FIRMWARE_UPDATE_START_DATA :: ID => CUBEPILOT_FIRMWARE_UPDATE_START_DATA :: deser (version , payload) . map (Self :: CUBEPILOT_FIRMWARE_UPDATE_START) , AP_ADC_DATA :: ID => AP_ADC_DATA :: deser (version , payload) . map (Self :: AP_ADC) , LINK_NODE_STATUS_DATA :: ID => LINK_NODE_STATUS_DATA :: deser (version , payload) . map (Self :: LINK_NODE_STATUS) , PARAM_EXT_ACK_DATA :: ID => PARAM_EXT_ACK_DATA :: deser (version , payload) . map (Self :: PARAM_EXT_ACK) , VICON_POSITION_ESTIMATE_DATA :: ID => VICON_POSITION_ESTIMATE_DATA :: deser (version , payload) . map (Self :: VICON_POSITION_ESTIMATE) , CAMERA_FOV_STATUS_DATA :: ID => CAMERA_FOV_STATUS_DATA :: deser (version , payload) . map (Self :: CAMERA_FOV_STATUS) , TERRAIN_REPORT_DATA :: ID => TERRAIN_REPORT_DATA :: deser (version , payload) . map (Self :: TERRAIN_REPORT) , ACTUATOR_OUTPUT_STATUS_DATA :: ID => ACTUATOR_OUTPUT_STATUS_DATA :: deser (version , payload) . map (Self :: ACTUATOR_OUTPUT_STATUS) , MESSAGE_INTERVAL_DATA :: ID => MESSAGE_INTERVAL_DATA :: deser (version , payload) . map (Self :: MESSAGE_INTERVAL) , ONBOARD_COMPUTER_STATUS_DATA :: ID => ONBOARD_COMPUTER_STATUS_DATA :: deser (version , payload) . map (Self :: ONBOARD_COMPUTER_STATUS) , UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: ID => UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: deser (version , payload) . map (Self :: UAVIONIX_ADSB_OUT_DYNAMIC) , HERELINK_VIDEO_STREAM_INFORMATION_DATA :: ID => HERELINK_VIDEO_STREAM_INFORMATION_DATA :: deser (version , payload) . map (Self :: HERELINK_VIDEO_STREAM_INFORMATION) , RALLY_POINT_DATA :: ID => RALLY_POINT_DATA :: deser (version , payload) . map (Self :: RALLY_POINT) , UAVCAN_NODE_STATUS_DATA :: ID => UAVCAN_NODE_STATUS_DATA :: deser (version , payload) . map (Self :: UAVCAN_NODE_STATUS) , COMPASSMOT_STATUS_DATA :: ID => COMPASSMOT_STATUS_DATA :: deser (version , payload) . map (Self :: COMPASSMOT_STATUS) , CAMERA_FEEDBACK_DATA :: ID => CAMERA_FEEDBACK_DATA :: deser (version , payload) . map (Self :: CAMERA_FEEDBACK) , RALLY_FETCH_POINT_DATA :: ID => RALLY_FETCH_POINT_DATA :: deser (version , payload) . map (Self :: RALLY_FETCH_POINT) , HIGH_LATENCY2_DATA :: ID => HIGH_LATENCY2_DATA :: deser (version , payload) . map (Self :: HIGH_LATENCY2) , GOPRO_HEARTBEAT_DATA :: ID => GOPRO_HEARTBEAT_DATA :: deser (version , payload) . map (Self :: GOPRO_HEARTBEAT) , MEMORY_VECT_DATA :: ID => MEMORY_VECT_DATA :: deser (version , payload) . map (Self :: MEMORY_VECT) , CUBEPILOT_FIRMWARE_UPDATE_RESP_DATA :: ID => CUBEPILOT_FIRMWARE_UPDATE_RESP_DATA :: deser (version , payload) . map (Self :: CUBEPILOT_FIRMWARE_UPDATE_RESP) , SET_POSITION_TARGET_GLOBAL_INT_DATA :: ID => SET_POSITION_TARGET_GLOBAL_INT_DATA :: deser (version , payload) . map (Self :: SET_POSITION_TARGET_GLOBAL_INT) , MISSION_ITEM_INT_DATA :: ID => MISSION_ITEM_INT_DATA :: deser (version , payload) . map (Self :: MISSION_ITEM_INT) , SETUP_SIGNING_DATA :: ID => SETUP_SIGNING_DATA :: deser (version , payload) . map (Self :: SETUP_SIGNING) , TERRAIN_DATA_DATA :: ID => TERRAIN_DATA_DATA :: deser (version , payload) . map (Self :: TERRAIN_DATA) , CHANGE_OPERATOR_CONTROL_DATA :: ID => CHANGE_OPERATOR_CONTROL_DATA :: deser (version , payload) . map (Self :: CHANGE_OPERATOR_CONTROL) , MISSION_WRITE_PARTIAL_LIST_DATA :: ID => MISSION_WRITE_PARTIAL_LIST_DATA :: deser (version , payload) . map (Self :: MISSION_WRITE_PARTIAL_LIST) , SERIAL_CONTROL_DATA :: ID => SERIAL_CONTROL_DATA :: deser (version , payload) . map (Self :: SERIAL_CONTROL) , CUBEPILOT_RAW_RC_DATA :: ID => CUBEPILOT_RAW_RC_DATA :: deser (version , payload) . map (Self :: CUBEPILOT_RAW_RC) , FENCE_FETCH_POINT_DATA :: ID => FENCE_FETCH_POINT_DATA :: deser (version , payload) . map (Self :: FENCE_FETCH_POINT) , GOPRO_SET_RESPONSE_DATA :: ID => GOPRO_SET_RESPONSE_DATA :: deser (version , payload) . map (Self :: GOPRO_SET_RESPONSE) , CAMERA_TRIGGER_DATA :: ID => CAMERA_TRIGGER_DATA :: deser (version , payload) . map (Self :: CAMERA_TRIGGER) , VISION_POSITION_DELTA_DATA :: ID => VISION_POSITION_DELTA_DATA :: deser (version , payload) . map (Self :: VISION_POSITION_DELTA) , OPEN_DRONE_ID_LOCATION_DATA :: ID => OPEN_DRONE_ID_LOCATION_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_LOCATION) , GOPRO_GET_RESPONSE_DATA :: ID => GOPRO_GET_RESPONSE_DATA :: deser (version , payload) . map (Self :: GOPRO_GET_RESPONSE) , SCALED_PRESSURE3_DATA :: ID => SCALED_PRESSURE3_DATA :: deser (version , payload) . map (Self :: SCALED_PRESSURE3) , SMART_BATTERY_INFO_DATA :: ID => SMART_BATTERY_INFO_DATA :: deser (version , payload) . map (Self :: SMART_BATTERY_INFO) , OPEN_DRONE_ID_OPERATOR_ID_DATA :: ID => OPEN_DRONE_ID_OPERATOR_ID_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_OPERATOR_ID) , ESC_INFO_DATA :: ID => ESC_INFO_DATA :: deser (version , payload) . map (Self :: ESC_INFO) , STORAGE_INFORMATION_DATA :: ID => STORAGE_INFORMATION_DATA :: deser (version , payload) . map (Self :: STORAGE_INFORMATION) , RADIO_STATUS_DATA :: ID => RADIO_STATUS_DATA :: deser (version , payload) . map (Self :: RADIO_STATUS) , WHEEL_DISTANCE_DATA :: ID => WHEEL_DISTANCE_DATA :: deser (version , payload) . map (Self :: WHEEL_DISTANCE) , FILE_TRANSFER_PROTOCOL_DATA :: ID => FILE_TRANSFER_PROTOCOL_DATA :: deser (version , payload) . map (Self :: FILE_TRANSFER_PROTOCOL) , DEVICE_OP_READ_DATA :: ID => DEVICE_OP_READ_DATA :: deser (version , payload) . map (Self :: DEVICE_OP_READ) , MOUNT_CONTROL_DATA :: ID => MOUNT_CONTROL_DATA :: deser (version , payload) . map (Self :: MOUNT_CONTROL) , BATTERY2_DATA :: ID => BATTERY2_DATA :: deser (version , payload) . map (Self :: BATTERY2) , OPTICAL_FLOW_RAD_DATA :: ID => OPTICAL_FLOW_RAD_DATA :: deser (version , payload) . map (Self :: OPTICAL_FLOW_RAD) , ESC_TELEMETRY_9_TO_12_DATA :: ID => ESC_TELEMETRY_9_TO_12_DATA :: deser (version , payload) . map (Self :: ESC_TELEMETRY_9_TO_12) , HIL_OPTICAL_FLOW_DATA :: ID => HIL_OPTICAL_FLOW_DATA :: deser (version , payload) . map (Self :: HIL_OPTICAL_FLOW) , SIM_STATE_DATA :: ID => SIM_STATE_DATA :: deser (version , payload) . map (Self :: SIM_STATE) , VIDEO_STREAM_INFORMATION_DATA :: ID => VIDEO_STREAM_INFORMATION_DATA :: deser (version , payload) . map (Self :: VIDEO_STREAM_INFORMATION) , COMPONENT_INFORMATION_DATA :: ID => COMPONENT_INFORMATION_DATA :: deser (version , payload) . map (Self :: COMPONENT_INFORMATION) , LOG_ERASE_DATA :: ID => LOG_ERASE_DATA :: deser (version , payload) . map (Self :: LOG_ERASE) , SERVO_OUTPUT_RAW_DATA :: ID => SERVO_OUTPUT_RAW_DATA :: deser (version , payload) . map (Self :: SERVO_OUTPUT_RAW) , HYGROMETER_SENSOR_DATA :: ID => HYGROMETER_SENSOR_DATA :: deser (version , payload) . map (Self :: HYGROMETER_SENSOR) , DIGICAM_CONTROL_DATA :: ID => DIGICAM_CONTROL_DATA :: deser (version , payload) . map (Self :: DIGICAM_CONTROL) , ENCAPSULATED_DATA_DATA :: ID => ENCAPSULATED_DATA_DATA :: deser (version , payload) . map (Self :: ENCAPSULATED_DATA) , WIFI_CONFIG_AP_DATA :: ID => WIFI_CONFIG_AP_DATA :: deser (version , payload) . map (Self :: WIFI_CONFIG_AP) , SET_ACTUATOR_CONTROL_TARGET_DATA :: ID => SET_ACTUATOR_CONTROL_TARGET_DATA :: deser (version , payload) . map (Self :: SET_ACTUATOR_CONTROL_TARGET) , SYSTEM_TIME_DATA :: ID => SYSTEM_TIME_DATA :: deser (version , payload) . map (Self :: SYSTEM_TIME) , ISBD_LINK_STATUS_DATA :: ID => ISBD_LINK_STATUS_DATA :: deser (version , payload) . map (Self :: ISBD_LINK_STATUS) , PLAY_TUNE_DATA :: ID => PLAY_TUNE_DATA :: deser (version , payload) . map (Self :: PLAY_TUNE) , ATTITUDE_DATA :: ID => ATTITUDE_DATA :: deser (version , payload) . map (Self :: ATTITUDE) , MAG_CAL_REPORT_DATA :: ID => MAG_CAL_REPORT_DATA :: deser (version , payload) . map (Self :: MAG_CAL_REPORT) , UTM_GLOBAL_POSITION_DATA :: ID => UTM_GLOBAL_POSITION_DATA :: deser (version , payload) . map (Self :: UTM_GLOBAL_POSITION) , LANDING_TARGET_DATA :: ID => LANDING_TARGET_DATA :: deser (version , payload) . map (Self :: LANDING_TARGET) , MISSION_REQUEST_PARTIAL_LIST_DATA :: ID => MISSION_REQUEST_PARTIAL_LIST_DATA :: deser (version , payload) . map (Self :: MISSION_REQUEST_PARTIAL_LIST) , RANGEFINDER_DATA :: ID => RANGEFINDER_DATA :: deser (version , payload) . map (Self :: RANGEFINDER) , MAG_CAL_PROGRESS_DATA :: ID => MAG_CAL_PROGRESS_DATA :: deser (version , payload) . map (Self :: MAG_CAL_PROGRESS) , PID_TUNING_DATA :: ID => PID_TUNING_DATA :: deser (version , payload) . map (Self :: PID_TUNING) , COMMAND_CANCEL_DATA :: ID => COMMAND_CANCEL_DATA :: deser (version , payload) . map (Self :: COMMAND_CANCEL) , DEVICE_OP_WRITE_DATA :: ID => DEVICE_OP_WRITE_DATA :: deser (version , payload) . map (Self :: DEVICE_OP_WRITE) , SCALED_IMU_DATA :: ID => SCALED_IMU_DATA :: deser (version , payload) . map (Self :: SCALED_IMU) , RC_CHANNELS_SCALED_DATA :: ID => RC_CHANNELS_SCALED_DATA :: deser (version , payload) . map (Self :: RC_CHANNELS_SCALED) , VIBRATION_DATA :: ID => VIBRATION_DATA :: deser (version , payload) . map (Self :: VIBRATION) , DEVICE_OP_WRITE_REPLY_DATA :: ID => DEVICE_OP_WRITE_REPLY_DATA :: deser (version , payload) . map (Self :: DEVICE_OP_WRITE_REPLY) , OSD_PARAM_CONFIG_DATA :: ID => OSD_PARAM_CONFIG_DATA :: deser (version , payload) . map (Self :: OSD_PARAM_CONFIG) , ESC_TELEMETRY_5_TO_8_DATA :: ID => ESC_TELEMETRY_5_TO_8_DATA :: deser (version , payload) . map (Self :: ESC_TELEMETRY_5_TO_8) , PARAM_REQUEST_READ_DATA :: ID => PARAM_REQUEST_READ_DATA :: deser (version , payload) . map (Self :: PARAM_REQUEST_READ) , ATTITUDE_TARGET_DATA :: ID => ATTITUDE_TARGET_DATA :: deser (version , payload) . map (Self :: ATTITUDE_TARGET) , ESC_STATUS_DATA :: ID => ESC_STATUS_DATA :: deser (version , payload) . map (Self :: ESC_STATUS) , CURRENT_EVENT_SEQUENCE_DATA :: ID => CURRENT_EVENT_SEQUENCE_DATA :: deser (version , payload) . map (Self :: CURRENT_EVENT_SEQUENCE) , CAMERA_SETTINGS_DATA :: ID => CAMERA_SETTINGS_DATA :: deser (version , payload) . map (Self :: CAMERA_SETTINGS) , SET_MODE_DATA :: ID => SET_MODE_DATA :: deser (version , payload) . map (Self :: SET_MODE) , GPS_INJECT_DATA_DATA :: ID => GPS_INJECT_DATA_DATA :: deser (version , payload) . map (Self :: GPS_INJECT_DATA) , GIMBAL_MANAGER_SET_PITCHYAW_DATA :: ID => GIMBAL_MANAGER_SET_PITCHYAW_DATA :: deser (version , payload) . map (Self :: GIMBAL_MANAGER_SET_PITCHYAW) , GOPRO_GET_REQUEST_DATA :: ID => GOPRO_GET_REQUEST_DATA :: deser (version , payload) . map (Self :: GOPRO_GET_REQUEST) , GLOBAL_POSITION_INT_COV_DATA :: ID => GLOBAL_POSITION_INT_COV_DATA :: deser (version , payload) . map (Self :: GLOBAL_POSITION_INT_COV) , MOUNT_CONFIGURE_DATA :: ID => MOUNT_CONFIGURE_DATA :: deser (version , payload) . map (Self :: MOUNT_CONFIGURE) , WINCH_STATUS_DATA :: ID => WINCH_STATUS_DATA :: deser (version , payload) . map (Self :: WINCH_STATUS) , TIME_ESTIMATE_TO_TARGET_DATA :: ID => TIME_ESTIMATE_TO_TARGET_DATA :: deser (version , payload) . map (Self :: TIME_ESTIMATE_TO_TARGET) , ESTIMATOR_STATUS_DATA :: ID => ESTIMATOR_STATUS_DATA :: deser (version , payload) . map (Self :: ESTIMATOR_STATUS) , MISSION_SET_CURRENT_DATA :: ID => MISSION_SET_CURRENT_DATA :: deser (version , payload) . map (Self :: MISSION_SET_CURRENT) , LED_CONTROL_DATA :: ID => LED_CONTROL_DATA :: deser (version , payload) . map (Self :: LED_CONTROL) , RADIO_DATA :: ID => RADIO_DATA :: deser (version , payload) . map (Self :: RADIO) , TERRAIN_CHECK_DATA :: ID => TERRAIN_CHECK_DATA :: deser (version , payload) . map (Self :: TERRAIN_CHECK) , MISSION_ITEM_REACHED_DATA :: ID => MISSION_ITEM_REACHED_DATA :: deser (version , payload) . map (Self :: MISSION_ITEM_REACHED) , GPS_RAW_INT_DATA :: ID => GPS_RAW_INT_DATA :: deser (version , payload) . map (Self :: GPS_RAW_INT) , GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: ID => GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: deser (version , payload) . map (Self :: GIMBAL_MANAGER_SET_MANUAL_CONTROL) , EFI_STATUS_DATA :: ID => EFI_STATUS_DATA :: deser (version , payload) . map (Self :: EFI_STATUS) , COMMAND_LONG_DATA :: ID => COMMAND_LONG_DATA :: deser (version , payload) . map (Self :: COMMAND_LONG) , HIL_STATE_QUATERNION_DATA :: ID => HIL_STATE_QUATERNION_DATA :: deser (version , payload) . map (Self :: HIL_STATE_QUATERNION) , BUTTON_CHANGE_DATA :: ID => BUTTON_CHANGE_DATA :: deser (version , payload) . map (Self :: BUTTON_CHANGE) , TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: ID => TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: deser (version , payload) . map (Self :: TRAJECTORY_REPRESENTATION_WAYPOINTS) , RAW_RPM_DATA :: ID => RAW_RPM_DATA :: deser (version , payload) . map (Self :: RAW_RPM) , SCALED_PRESSURE_DATA :: ID => SCALED_PRESSURE_DATA :: deser (version , payload) . map (Self :: SCALED_PRESSURE) , UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: ID => UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: deser (version , payload) . map (Self :: UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT) , SENSOR_OFFSETS_DATA :: ID => SENSOR_OFFSETS_DATA :: deser (version , payload) . map (Self :: SENSOR_OFFSETS) , HIGHRES_IMU_DATA :: ID => HIGHRES_IMU_DATA :: deser (version , payload) . map (Self :: HIGHRES_IMU) , AHRS2_DATA :: ID => AHRS2_DATA :: deser (version , payload) . map (Self :: AHRS2) , ATTITUDE_QUATERNION_COV_DATA :: ID => ATTITUDE_QUATERNION_COV_DATA :: deser (version , payload) . map (Self :: ATTITUDE_QUATERNION_COV) , MISSION_CURRENT_DATA :: ID => MISSION_CURRENT_DATA :: deser (version , payload) . map (Self :: MISSION_CURRENT) , AIRSPEED_AUTOCAL_DATA :: ID => AIRSPEED_AUTOCAL_DATA :: deser (version , payload) . map (Self :: AIRSPEED_AUTOCAL) , ODOMETRY_DATA :: ID => ODOMETRY_DATA :: deser (version , payload) . map (Self :: ODOMETRY) , ICAROUS_HEARTBEAT_DATA :: ID => ICAROUS_HEARTBEAT_DATA :: deser (version , payload) . map (Self :: ICAROUS_HEARTBEAT) , MEMINFO_DATA :: ID => MEMINFO_DATA :: deser (version , payload) . map (Self :: MEMINFO) , EXTENDED_SYS_STATE_DATA :: ID => EXTENDED_SYS_STATE_DATA :: deser (version , payload) . map (Self :: EXTENDED_SYS_STATE) , TRAJECTORY_REPRESENTATION_BEZIER_DATA :: ID => TRAJECTORY_REPRESENTATION_BEZIER_DATA :: deser (version , payload) . map (Self :: TRAJECTORY_REPRESENTATION_BEZIER) , CAMERA_STATUS_DATA :: ID => CAMERA_STATUS_DATA :: deser (version , payload) . map (Self :: CAMERA_STATUS) , WIND_COV_DATA :: ID => WIND_COV_DATA :: deser (version , payload) . map (Self :: WIND_COV) , AIS_VESSEL_DATA :: ID => AIS_VESSEL_DATA :: deser (version , payload) . map (Self :: AIS_VESSEL) , GPS_INPUT_DATA :: ID => GPS_INPUT_DATA :: deser (version , payload) . map (Self :: GPS_INPUT) , TIMESYNC_DATA :: ID => TIMESYNC_DATA :: deser (version , payload) . map (Self :: TIMESYNC) , SCALED_IMU3_DATA :: ID => SCALED_IMU3_DATA :: deser (version , payload) . map (Self :: SCALED_IMU3) , ADSB_VEHICLE_DATA :: ID => ADSB_VEHICLE_DATA :: deser (version , payload) . map (Self :: ADSB_VEHICLE) , DEBUG_DATA :: ID => DEBUG_DATA :: deser (version , payload) . map (Self :: DEBUG) , FOLLOW_TARGET_DATA :: ID => FOLLOW_TARGET_DATA :: deser (version , payload) . map (Self :: FOLLOW_TARGET) , VISION_SPEED_ESTIMATE_DATA :: ID => VISION_SPEED_ESTIMATE_DATA :: deser (version , payload) . map (Self :: VISION_SPEED_ESTIMATE) , DIGICAM_CONFIGURE_DATA :: ID => DIGICAM_CONFIGURE_DATA :: deser (version , payload) . map (Self :: DIGICAM_CONFIGURE) , CHANGE_OPERATOR_CONTROL_ACK_DATA :: ID => CHANGE_OPERATOR_CONTROL_ACK_DATA :: deser (version , payload) . map (Self :: CHANGE_OPERATOR_CONTROL_ACK) , MOUNT_STATUS_DATA :: ID => MOUNT_STATUS_DATA :: deser (version , payload) . map (Self :: MOUNT_STATUS) , GPS_RTK_DATA :: ID => GPS_RTK_DATA :: deser (version , payload) . map (Self :: GPS_RTK) , DATA32_DATA :: ID => DATA32_DATA :: deser (version , payload) . map (Self :: DATA32) , HIL_CONTROLS_DATA :: ID => HIL_CONTROLS_DATA :: deser (version , payload) . map (Self :: HIL_CONTROLS) , DATA96_DATA :: ID => DATA96_DATA :: deser (version , payload) . map (Self :: DATA96) , SCALED_IMU2_DATA :: ID => SCALED_IMU2_DATA :: deser (version , payload) . map (Self :: SCALED_IMU2) , DATA_STREAM_DATA :: ID => DATA_STREAM_DATA :: deser (version , payload) . map (Self :: DATA_STREAM) , MOUNT_ORIENTATION_DATA :: ID => MOUNT_ORIENTATION_DATA :: deser (version , payload) . map (Self :: MOUNT_ORIENTATION) , HIGH_LATENCY_DATA :: ID => HIGH_LATENCY_DATA :: deser (version , payload) . map (Self :: HIGH_LATENCY) , GLOBAL_POSITION_INT_DATA :: ID => GLOBAL_POSITION_INT_DATA :: deser (version , payload) . map (Self :: GLOBAL_POSITION_INT) , OSD_PARAM_CONFIG_REPLY_DATA :: ID => OSD_PARAM_CONFIG_REPLY_DATA :: deser (version , payload) . map (Self :: OSD_PARAM_CONFIG_REPLY) , ACTUATOR_CONTROL_TARGET_DATA :: ID => ACTUATOR_CONTROL_TARGET_DATA :: deser (version , payload) . map (Self :: ACTUATOR_CONTROL_TARGET) , OBSTACLE_DISTANCE_DATA :: ID => OBSTACLE_DISTANCE_DATA :: deser (version , payload) . map (Self :: OBSTACLE_DISTANCE) , CAN_FILTER_MODIFY_DATA :: ID => CAN_FILTER_MODIFY_DATA :: deser (version , payload) . map (Self :: CAN_FILTER_MODIFY) , VISION_POSITION_ESTIMATE_DATA :: ID => VISION_POSITION_ESTIMATE_DATA :: deser (version , payload) . map (Self :: VISION_POSITION_ESTIMATE) , STATUSTEXT_DATA :: ID => STATUSTEXT_DATA :: deser (version , payload) . map (Self :: STATUSTEXT) , ATTITUDE_QUATERNION_DATA :: ID => ATTITUDE_QUATERNION_DATA :: deser (version , payload) . map (Self :: ATTITUDE_QUATERNION) , PARAM_SET_DATA :: ID => PARAM_SET_DATA :: deser (version , payload) . map (Self :: PARAM_SET) , TUNNEL_DATA :: ID => TUNNEL_DATA :: deser (version , payload) . map (Self :: TUNNEL) , RC_CHANNELS_RAW_DATA :: ID => RC_CHANNELS_RAW_DATA :: deser (version , payload) . map (Self :: RC_CHANNELS_RAW) , CELLULAR_CONFIG_DATA :: ID => CELLULAR_CONFIG_DATA :: deser (version , payload) . map (Self :: CELLULAR_CONFIG) , GPS_RTCM_DATA_DATA :: ID => GPS_RTCM_DATA_DATA :: deser (version , payload) . map (Self :: GPS_RTCM_DATA) , AUTH_KEY_DATA :: ID => AUTH_KEY_DATA :: deser (version , payload) . map (Self :: AUTH_KEY) , GPS_STATUS_DATA :: ID => GPS_STATUS_DATA :: deser (version , payload) . map (Self :: GPS_STATUS) , RC_CHANNELS_OVERRIDE_DATA :: ID => RC_CHANNELS_OVERRIDE_DATA :: deser (version , payload) . map (Self :: RC_CHANNELS_OVERRIDE) , DEEPSTALL_DATA :: ID => DEEPSTALL_DATA :: deser (version , payload) . map (Self :: DEEPSTALL) , FENCE_STATUS_DATA :: ID => FENCE_STATUS_DATA :: deser (version , payload) . map (Self :: FENCE_STATUS) , BATTERY_STATUS_DATA :: ID => BATTERY_STATUS_DATA :: deser (version , payload) . map (Self :: BATTERY_STATUS) , AOA_SSA_DATA :: ID => AOA_SSA_DATA :: deser (version , payload) . map (Self :: AOA_SSA) , MISSION_CLEAR_ALL_DATA :: ID => MISSION_CLEAR_ALL_DATA :: deser (version , payload) . map (Self :: MISSION_CLEAR_ALL) , SCALED_PRESSURE2_DATA :: ID => SCALED_PRESSURE2_DATA :: deser (version , payload) . map (Self :: SCALED_PRESSURE2) , DISTANCE_SENSOR_DATA :: ID => DISTANCE_SENSOR_DATA :: deser (version , payload) . map (Self :: DISTANCE_SENSOR) , _ => { Err (:: mavlink_core :: error :: ParserError :: UnknownMessage { id }) } , } } fn message_name (& self) -> & 'static str { match self { Self :: LOGGING_ACK (..) => LOGGING_ACK_DATA :: NAME , Self :: GENERATOR_STATUS (..) => GENERATOR_STATUS_DATA :: NAME , Self :: VIDEO_STREAM_STATUS (..) => VIDEO_STREAM_STATUS_DATA :: NAME , Self :: SET_HOME_POSITION (..) => SET_HOME_POSITION_DATA :: NAME , Self :: LOG_REQUEST_LIST (..) => LOG_REQUEST_LIST_DATA :: NAME , Self :: VFR_HUD (..) => VFR_HUD_DATA :: NAME , Self :: HIL_ACTUATOR_CONTROLS (..) => HIL_ACTUATOR_CONTROLS_DATA :: NAME , Self :: GLOBAL_VISION_POSITION_ESTIMATE (..) => GLOBAL_VISION_POSITION_ESTIMATE_DATA :: NAME , Self :: UAVCAN_NODE_INFO (..) => UAVCAN_NODE_INFO_DATA :: NAME , Self :: FENCE_POINT (..) => FENCE_POINT_DATA :: NAME , Self :: MISSION_REQUEST (..) => MISSION_REQUEST_DATA :: NAME , Self :: DATA64 (..) => DATA64_DATA :: NAME , Self :: GIMBAL_TORQUE_CMD_REPORT (..) => GIMBAL_TORQUE_CMD_REPORT_DATA :: NAME , Self :: SYS_STATUS (..) => SYS_STATUS_DATA :: NAME , Self :: MCU_STATUS (..) => MCU_STATUS_DATA :: NAME , Self :: HIL_RC_INPUTS_RAW (..) => HIL_RC_INPUTS_RAW_DATA :: NAME , Self :: PARAM_REQUEST_LIST (..) => PARAM_REQUEST_LIST_DATA :: NAME , Self :: OSD_PARAM_SHOW_CONFIG (..) => OSD_PARAM_SHOW_CONFIG_DATA :: NAME , Self :: POSITION_TARGET_GLOBAL_INT (..) => POSITION_TARGET_GLOBAL_INT_DATA :: NAME , Self :: NAMED_VALUE_INT (..) => NAMED_VALUE_INT_DATA :: NAME , Self :: CONTROL_SYSTEM_STATE (..) => CONTROL_SYSTEM_STATE_DATA :: NAME , Self :: FLIGHT_INFORMATION (..) => FLIGHT_INFORMATION_DATA :: NAME , Self :: UAVIONIX_ADSB_OUT_CFG (..) => UAVIONIX_ADSB_OUT_CFG_DATA :: NAME , Self :: PLAY_TUNE_V2 (..) => PLAY_TUNE_V2_DATA :: NAME , Self :: MANUAL_CONTROL (..) => MANUAL_CONTROL_DATA :: NAME , Self :: ADAP_TUNING (..) => ADAP_TUNING_DATA :: NAME , Self :: LOG_REQUEST_DATA (..) => LOG_REQUEST_DATA_DATA :: NAME , Self :: HIL_SENSOR (..) => HIL_SENSOR_DATA :: NAME , Self :: PARAM_EXT_REQUEST_READ (..) => PARAM_EXT_REQUEST_READ_DATA :: NAME , Self :: PARAM_EXT_VALUE (..) => PARAM_EXT_VALUE_DATA :: NAME , Self :: ICAROUS_KINEMATIC_BANDS (..) => ICAROUS_KINEMATIC_BANDS_DATA :: NAME , Self :: LIMITS_STATUS (..) => LIMITS_STATUS_DATA :: NAME , Self :: WIND (..) => WIND_DATA :: NAME , Self :: CAMERA_TRACKING_GEO_STATUS (..) => CAMERA_TRACKING_GEO_STATUS_DATA :: NAME , Self :: GPS2_RTK (..) => GPS2_RTK_DATA :: NAME , Self :: HERELINK_TELEM (..) => HERELINK_TELEM_DATA :: NAME , Self :: GIMBAL_REPORT (..) => GIMBAL_REPORT_DATA :: NAME , Self :: COLLISION (..) => COLLISION_DATA :: NAME , Self :: HEARTBEAT (..) => HEARTBEAT_DATA :: NAME , Self :: ESC_TELEMETRY_1_TO_4 (..) => ESC_TELEMETRY_1_TO_4_DATA :: NAME , Self :: RESPONSE_EVENT_ERROR (..) => RESPONSE_EVENT_ERROR_DATA :: NAME , Self :: SAFETY_SET_ALLOWED_AREA (..) => SAFETY_SET_ALLOWED_AREA_DATA :: NAME , Self :: LOG_DATA (..) => LOG_DATA_DATA :: NAME , Self :: LOCAL_POSITION_NED (..) => LOCAL_POSITION_NED_DATA :: NAME , Self :: ALTITUDE (..) => ALTITUDE_DATA :: NAME , Self :: GIMBAL_MANAGER_SET_ATTITUDE (..) => GIMBAL_MANAGER_SET_ATTITUDE_DATA :: NAME , Self :: GPS2_RAW (..) => GPS2_RAW_DATA :: NAME , Self :: SET_POSITION_TARGET_LOCAL_NED (..) => SET_POSITION_TARGET_LOCAL_NED_DATA :: NAME , Self :: SET_GPS_GLOBAL_ORIGIN (..) => SET_GPS_GLOBAL_ORIGIN_DATA :: NAME , Self :: PARAM_VALUE (..) => PARAM_VALUE_DATA :: NAME , Self :: OPTICAL_FLOW (..) => OPTICAL_FLOW_DATA :: NAME , Self :: RC_CHANNELS (..) => RC_CHANNELS_DATA :: NAME , Self :: PARAM_EXT_REQUEST_LIST (..) => PARAM_EXT_REQUEST_LIST_DATA :: NAME , Self :: OPEN_DRONE_ID_BASIC_ID (..) => OPEN_DRONE_ID_BASIC_ID_DATA :: NAME , Self :: LOCAL_POSITION_NED_COV (..) => LOCAL_POSITION_NED_COV_DATA :: NAME , Self :: TERRAIN_REQUEST (..) => TERRAIN_REQUEST_DATA :: NAME , Self :: DATA_TRANSMISSION_HANDSHAKE (..) => DATA_TRANSMISSION_HANDSHAKE_DATA :: NAME , Self :: AHRS (..) => AHRS_DATA :: NAME , Self :: OPEN_DRONE_ID_SYSTEM (..) => OPEN_DRONE_ID_SYSTEM_DATA :: NAME , Self :: LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET (..) => LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: NAME , Self :: MISSION_REQUEST_LIST (..) => MISSION_REQUEST_LIST_DATA :: NAME , Self :: CAMERA_TRACKING_IMAGE_STATUS (..) => CAMERA_TRACKING_IMAGE_STATUS_DATA :: NAME , Self :: POSITION_TARGET_LOCAL_NED (..) => POSITION_TARGET_LOCAL_NED_DATA :: NAME , Self :: PING (..) => PING_DATA :: NAME , Self :: PARAM_EXT_SET (..) => PARAM_EXT_SET_DATA :: NAME , Self :: GIMBAL_DEVICE_INFORMATION (..) => GIMBAL_DEVICE_INFORMATION_DATA :: NAME , Self :: AUTOPILOT_STATE_FOR_GIMBAL_DEVICE (..) => AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: NAME , Self :: GIMBAL_CONTROL (..) => GIMBAL_CONTROL_DATA :: NAME , Self :: EKF_STATUS_REPORT (..) => EKF_STATUS_REPORT_DATA :: NAME , Self :: OSD_PARAM_SHOW_CONFIG_REPLY (..) => OSD_PARAM_SHOW_CONFIG_REPLY_DATA :: NAME , Self :: SET_MAG_OFFSETS (..) => SET_MAG_OFFSETS_DATA :: NAME , Self :: GIMBAL_DEVICE_SET_ATTITUDE (..) => GIMBAL_DEVICE_SET_ATTITUDE_DATA :: NAME , Self :: DEVICE_OP_READ_REPLY (..) => DEVICE_OP_READ_REPLY_DATA :: NAME , Self :: GOPRO_SET_REQUEST (..) => GOPRO_SET_REQUEST_DATA :: NAME , Self :: GIMBAL_MANAGER_INFORMATION (..) => GIMBAL_MANAGER_INFORMATION_DATA :: NAME , Self :: ORBIT_EXECUTION_STATUS (..) => ORBIT_EXECUTION_STATUS_DATA :: NAME , Self :: DATA16 (..) => DATA16_DATA :: NAME , Self :: COMPONENT_METADATA (..) => COMPONENT_METADATA_DATA :: NAME , Self :: POWER_STATUS (..) => POWER_STATUS_DATA :: NAME , Self :: RESOURCE_REQUEST (..) => RESOURCE_REQUEST_DATA :: NAME , Self :: SET_ATTITUDE_TARGET (..) => SET_ATTITUDE_TARGET_DATA :: NAME , Self :: COMMAND_ACK (..) => COMMAND_ACK_DATA :: NAME , Self :: LOG_ENTRY (..) => LOG_ENTRY_DATA :: NAME , Self :: EVENT (..) => EVENT_DATA :: NAME , Self :: HWSTATUS (..) => HWSTATUS_DATA :: NAME , Self :: CELLULAR_STATUS (..) => CELLULAR_STATUS_DATA :: NAME , Self :: LOGGING_DATA (..) => LOGGING_DATA_DATA :: NAME , Self :: HIL_GPS (..) => HIL_GPS_DATA :: NAME , Self :: CAN_FRAME (..) => CAN_FRAME_DATA :: NAME , Self :: CAMERA_IMAGE_CAPTURED (..) => CAMERA_IMAGE_CAPTURED_DATA :: NAME , Self :: V2_EXTENSION (..) => V2_EXTENSION_DATA :: NAME , Self :: SAFETY_ALLOWED_AREA (..) => SAFETY_ALLOWED_AREA_DATA :: NAME , Self :: PROTOCOL_VERSION (..) => PROTOCOL_VERSION_DATA :: NAME , Self :: RAW_IMU (..) => RAW_IMU_DATA :: NAME , Self :: CAMERA_INFORMATION (..) => CAMERA_INFORMATION_DATA :: NAME , Self :: OPEN_DRONE_ID_SYSTEM_UPDATE (..) => OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: NAME , Self :: REQUEST_DATA_STREAM (..) => REQUEST_DATA_STREAM_DATA :: NAME , Self :: OPEN_DRONE_ID_SELF_ID (..) => OPEN_DRONE_ID_SELF_ID_DATA :: NAME , Self :: OPEN_DRONE_ID_AUTHENTICATION (..) => OPEN_DRONE_ID_AUTHENTICATION_DATA :: NAME , Self :: ATT_POS_MOCAP (..) => ATT_POS_MOCAP_DATA :: NAME , Self :: HOME_POSITION (..) => HOME_POSITION_DATA :: NAME , Self :: COMMAND_INT (..) => COMMAND_INT_DATA :: NAME , Self :: CAMERA_CAPTURE_STATUS (..) => CAMERA_CAPTURE_STATUS_DATA :: NAME , Self :: RAW_PRESSURE (..) => RAW_PRESSURE_DATA :: NAME , Self :: MISSION_ACK (..) => MISSION_ACK_DATA :: NAME , Self :: GIMBAL_DEVICE_ATTITUDE_STATUS (..) => GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: NAME , Self :: MANUAL_SETPOINT (..) => MANUAL_SETPOINT_DATA :: NAME , Self :: RPM (..) => RPM_DATA :: NAME , Self :: WATER_DEPTH (..) => WATER_DEPTH_DATA :: NAME , Self :: REQUEST_EVENT (..) => REQUEST_EVENT_DATA :: NAME , Self :: DEBUG_VECT (..) => DEBUG_VECT_DATA :: NAME , Self :: REMOTE_LOG_BLOCK_STATUS (..) => REMOTE_LOG_BLOCK_STATUS_DATA :: NAME , Self :: MISSION_REQUEST_INT (..) => MISSION_REQUEST_INT_DATA :: NAME , Self :: NAMED_VALUE_FLOAT (..) => NAMED_VALUE_FLOAT_DATA :: NAME , Self :: NAV_CONTROLLER_OUTPUT (..) => NAV_CONTROLLER_OUTPUT_DATA :: NAME , Self :: AUTOPILOT_VERSION_REQUEST (..) => AUTOPILOT_VERSION_REQUEST_DATA :: NAME , Self :: HIL_STATE (..) => HIL_STATE_DATA :: NAME , Self :: LOG_REQUEST_END (..) => LOG_REQUEST_END_DATA :: NAME , Self :: REMOTE_LOG_DATA_BLOCK (..) => REMOTE_LOG_DATA_BLOCK_DATA :: NAME , Self :: PARAM_MAP_RC (..) => PARAM_MAP_RC_DATA :: NAME , Self :: DEBUG_FLOAT_ARRAY (..) => DEBUG_FLOAT_ARRAY_DATA :: NAME , Self :: AHRS3 (..) => AHRS3_DATA :: NAME , Self :: OPEN_DRONE_ID_ARM_STATUS (..) => OPEN_DRONE_ID_ARM_STATUS_DATA :: NAME , Self :: OBSTACLE_DISTANCE_3D (..) => OBSTACLE_DISTANCE_3D_DATA :: NAME , Self :: SUPPORTED_TUNES (..) => SUPPORTED_TUNES_DATA :: NAME , Self :: SIMSTATE (..) => SIMSTATE_DATA :: NAME , Self :: CANFD_FRAME (..) => CANFD_FRAME_DATA :: NAME , Self :: MISSION_COUNT (..) => MISSION_COUNT_DATA :: NAME , Self :: AUTOPILOT_VERSION (..) => AUTOPILOT_VERSION_DATA :: NAME , Self :: OPEN_DRONE_ID_MESSAGE_PACK (..) => OPEN_DRONE_ID_MESSAGE_PACK_DATA :: NAME , Self :: LOGGING_DATA_ACKED (..) => LOGGING_DATA_ACKED_DATA :: NAME , Self :: GPS_GLOBAL_ORIGIN (..) => GPS_GLOBAL_ORIGIN_DATA :: NAME , Self :: GIMBAL_MANAGER_STATUS (..) => GIMBAL_MANAGER_STATUS_DATA :: NAME , Self :: MISSION_ITEM (..) => MISSION_ITEM_DATA :: NAME , Self :: CUBEPILOT_FIRMWARE_UPDATE_START (..) => CUBEPILOT_FIRMWARE_UPDATE_START_DATA :: NAME , Self :: AP_ADC (..) => AP_ADC_DATA :: NAME , Self :: LINK_NODE_STATUS (..) => LINK_NODE_STATUS_DATA :: NAME , Self :: PARAM_EXT_ACK (..) => PARAM_EXT_ACK_DATA :: NAME , Self :: VICON_POSITION_ESTIMATE (..) => VICON_POSITION_ESTIMATE_DATA :: NAME , Self :: CAMERA_FOV_STATUS (..) => CAMERA_FOV_STATUS_DATA :: NAME , Self :: TERRAIN_REPORT (..) => TERRAIN_REPORT_DATA :: NAME , Self :: ACTUATOR_OUTPUT_STATUS (..) => ACTUATOR_OUTPUT_STATUS_DATA :: NAME , Self :: MESSAGE_INTERVAL (..) => MESSAGE_INTERVAL_DATA :: NAME , Self :: ONBOARD_COMPUTER_STATUS (..) => ONBOARD_COMPUTER_STATUS_DATA :: NAME , Self :: UAVIONIX_ADSB_OUT_DYNAMIC (..) => UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: NAME , Self :: HERELINK_VIDEO_STREAM_INFORMATION (..) => HERELINK_VIDEO_STREAM_INFORMATION_DATA :: NAME , Self :: RALLY_POINT (..) => RALLY_POINT_DATA :: NAME , Self :: UAVCAN_NODE_STATUS (..) => UAVCAN_NODE_STATUS_DATA :: NAME , Self :: COMPASSMOT_STATUS (..) => COMPASSMOT_STATUS_DATA :: NAME , Self :: CAMERA_FEEDBACK (..) => CAMERA_FEEDBACK_DATA :: NAME , Self :: RALLY_FETCH_POINT (..) => RALLY_FETCH_POINT_DATA :: NAME , Self :: HIGH_LATENCY2 (..) => HIGH_LATENCY2_DATA :: NAME , Self :: GOPRO_HEARTBEAT (..) => GOPRO_HEARTBEAT_DATA :: NAME , Self :: MEMORY_VECT (..) => MEMORY_VECT_DATA :: NAME , Self :: CUBEPILOT_FIRMWARE_UPDATE_RESP (..) => CUBEPILOT_FIRMWARE_UPDATE_RESP_DATA :: NAME , Self :: SET_POSITION_TARGET_GLOBAL_INT (..) => SET_POSITION_TARGET_GLOBAL_INT_DATA :: NAME , Self :: MISSION_ITEM_INT (..) => MISSION_ITEM_INT_DATA :: NAME , Self :: SETUP_SIGNING (..) => SETUP_SIGNING_DATA :: NAME , Self :: TERRAIN_DATA (..) => TERRAIN_DATA_DATA :: NAME , Self :: CHANGE_OPERATOR_CONTROL (..) => CHANGE_OPERATOR_CONTROL_DATA :: NAME , Self :: MISSION_WRITE_PARTIAL_LIST (..) => MISSION_WRITE_PARTIAL_LIST_DATA :: NAME , Self :: SERIAL_CONTROL (..) => SERIAL_CONTROL_DATA :: NAME , Self :: CUBEPILOT_RAW_RC (..) => CUBEPILOT_RAW_RC_DATA :: NAME , Self :: FENCE_FETCH_POINT (..) => FENCE_FETCH_POINT_DATA :: NAME , Self :: GOPRO_SET_RESPONSE (..) => GOPRO_SET_RESPONSE_DATA :: NAME , Self :: CAMERA_TRIGGER (..) => CAMERA_TRIGGER_DATA :: NAME , Self :: VISION_POSITION_DELTA (..) => VISION_POSITION_DELTA_DATA :: NAME , Self :: OPEN_DRONE_ID_LOCATION (..) => OPEN_DRONE_ID_LOCATION_DATA :: NAME , Self :: GOPRO_GET_RESPONSE (..) => GOPRO_GET_RESPONSE_DATA :: NAME , Self :: SCALED_PRESSURE3 (..) => SCALED_PRESSURE3_DATA :: NAME , Self :: SMART_BATTERY_INFO (..) => SMART_BATTERY_INFO_DATA :: NAME , Self :: OPEN_DRONE_ID_OPERATOR_ID (..) => OPEN_DRONE_ID_OPERATOR_ID_DATA :: NAME , Self :: ESC_INFO (..) => ESC_INFO_DATA :: NAME , Self :: STORAGE_INFORMATION (..) => STORAGE_INFORMATION_DATA :: NAME , Self :: RADIO_STATUS (..) => RADIO_STATUS_DATA :: NAME , Self :: WHEEL_DISTANCE (..) => WHEEL_DISTANCE_DATA :: NAME , Self :: FILE_TRANSFER_PROTOCOL (..) => FILE_TRANSFER_PROTOCOL_DATA :: NAME , Self :: DEVICE_OP_READ (..) => DEVICE_OP_READ_DATA :: NAME , Self :: MOUNT_CONTROL (..) => MOUNT_CONTROL_DATA :: NAME , Self :: BATTERY2 (..) => BATTERY2_DATA :: NAME , Self :: OPTICAL_FLOW_RAD (..) => OPTICAL_FLOW_RAD_DATA :: NAME , Self :: ESC_TELEMETRY_9_TO_12 (..) => ESC_TELEMETRY_9_TO_12_DATA :: NAME , Self :: HIL_OPTICAL_FLOW (..) => HIL_OPTICAL_FLOW_DATA :: NAME , Self :: SIM_STATE (..) => SIM_STATE_DATA :: NAME , Self :: VIDEO_STREAM_INFORMATION (..) => VIDEO_STREAM_INFORMATION_DATA :: NAME , Self :: COMPONENT_INFORMATION (..) => COMPONENT_INFORMATION_DATA :: NAME , Self :: LOG_ERASE (..) => LOG_ERASE_DATA :: NAME , Self :: SERVO_OUTPUT_RAW (..) => SERVO_OUTPUT_RAW_DATA :: NAME , Self :: HYGROMETER_SENSOR (..) => HYGROMETER_SENSOR_DATA :: NAME , Self :: DIGICAM_CONTROL (..) => DIGICAM_CONTROL_DATA :: NAME , Self :: ENCAPSULATED_DATA (..) => ENCAPSULATED_DATA_DATA :: NAME , Self :: WIFI_CONFIG_AP (..) => WIFI_CONFIG_AP_DATA :: NAME , Self :: SET_ACTUATOR_CONTROL_TARGET (..) => SET_ACTUATOR_CONTROL_TARGET_DATA :: NAME , Self :: SYSTEM_TIME (..) => SYSTEM_TIME_DATA :: NAME , Self :: ISBD_LINK_STATUS (..) => ISBD_LINK_STATUS_DATA :: NAME , Self :: PLAY_TUNE (..) => PLAY_TUNE_DATA :: NAME , Self :: ATTITUDE (..) => ATTITUDE_DATA :: NAME , Self :: MAG_CAL_REPORT (..) => MAG_CAL_REPORT_DATA :: NAME , Self :: UTM_GLOBAL_POSITION (..) => UTM_GLOBAL_POSITION_DATA :: NAME , Self :: LANDING_TARGET (..) => LANDING_TARGET_DATA :: NAME , Self :: MISSION_REQUEST_PARTIAL_LIST (..) => MISSION_REQUEST_PARTIAL_LIST_DATA :: NAME , Self :: RANGEFINDER (..) => RANGEFINDER_DATA :: NAME , Self :: MAG_CAL_PROGRESS (..) => MAG_CAL_PROGRESS_DATA :: NAME , Self :: PID_TUNING (..) => PID_TUNING_DATA :: NAME , Self :: COMMAND_CANCEL (..) => COMMAND_CANCEL_DATA :: NAME , Self :: DEVICE_OP_WRITE (..) => DEVICE_OP_WRITE_DATA :: NAME , Self :: SCALED_IMU (..) => SCALED_IMU_DATA :: NAME , Self :: RC_CHANNELS_SCALED (..) => RC_CHANNELS_SCALED_DATA :: NAME , Self :: VIBRATION (..) => VIBRATION_DATA :: NAME , Self :: DEVICE_OP_WRITE_REPLY (..) => DEVICE_OP_WRITE_REPLY_DATA :: NAME , Self :: OSD_PARAM_CONFIG (..) => OSD_PARAM_CONFIG_DATA :: NAME , Self :: ESC_TELEMETRY_5_TO_8 (..) => ESC_TELEMETRY_5_TO_8_DATA :: NAME , Self :: PARAM_REQUEST_READ (..) => PARAM_REQUEST_READ_DATA :: NAME , Self :: ATTITUDE_TARGET (..) => ATTITUDE_TARGET_DATA :: NAME , Self :: ESC_STATUS (..) => ESC_STATUS_DATA :: NAME , Self :: CURRENT_EVENT_SEQUENCE (..) => CURRENT_EVENT_SEQUENCE_DATA :: NAME , Self :: CAMERA_SETTINGS (..) => CAMERA_SETTINGS_DATA :: NAME , Self :: SET_MODE (..) => SET_MODE_DATA :: NAME , Self :: GPS_INJECT_DATA (..) => GPS_INJECT_DATA_DATA :: NAME , Self :: GIMBAL_MANAGER_SET_PITCHYAW (..) => GIMBAL_MANAGER_SET_PITCHYAW_DATA :: NAME , Self :: GOPRO_GET_REQUEST (..) => GOPRO_GET_REQUEST_DATA :: NAME , Self :: GLOBAL_POSITION_INT_COV (..) => GLOBAL_POSITION_INT_COV_DATA :: NAME , Self :: MOUNT_CONFIGURE (..) => MOUNT_CONFIGURE_DATA :: NAME , Self :: WINCH_STATUS (..) => WINCH_STATUS_DATA :: NAME , Self :: TIME_ESTIMATE_TO_TARGET (..) => TIME_ESTIMATE_TO_TARGET_DATA :: NAME , Self :: ESTIMATOR_STATUS (..) => ESTIMATOR_STATUS_DATA :: NAME , Self :: MISSION_SET_CURRENT (..) => MISSION_SET_CURRENT_DATA :: NAME , Self :: LED_CONTROL (..) => LED_CONTROL_DATA :: NAME , Self :: RADIO (..) => RADIO_DATA :: NAME , Self :: TERRAIN_CHECK (..) => TERRAIN_CHECK_DATA :: NAME , Self :: MISSION_ITEM_REACHED (..) => MISSION_ITEM_REACHED_DATA :: NAME , Self :: GPS_RAW_INT (..) => GPS_RAW_INT_DATA :: NAME , Self :: GIMBAL_MANAGER_SET_MANUAL_CONTROL (..) => GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: NAME , Self :: EFI_STATUS (..) => EFI_STATUS_DATA :: NAME , Self :: COMMAND_LONG (..) => COMMAND_LONG_DATA :: NAME , Self :: HIL_STATE_QUATERNION (..) => HIL_STATE_QUATERNION_DATA :: NAME , Self :: BUTTON_CHANGE (..) => BUTTON_CHANGE_DATA :: NAME , Self :: TRAJECTORY_REPRESENTATION_WAYPOINTS (..) => TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: NAME , Self :: RAW_RPM (..) => RAW_RPM_DATA :: NAME , Self :: SCALED_PRESSURE (..) => SCALED_PRESSURE_DATA :: NAME , Self :: UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT (..) => UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: NAME , Self :: SENSOR_OFFSETS (..) => SENSOR_OFFSETS_DATA :: NAME , Self :: HIGHRES_IMU (..) => HIGHRES_IMU_DATA :: NAME , Self :: AHRS2 (..) => AHRS2_DATA :: NAME , Self :: ATTITUDE_QUATERNION_COV (..) => ATTITUDE_QUATERNION_COV_DATA :: NAME , Self :: MISSION_CURRENT (..) => MISSION_CURRENT_DATA :: NAME , Self :: AIRSPEED_AUTOCAL (..) => AIRSPEED_AUTOCAL_DATA :: NAME , Self :: ODOMETRY (..) => ODOMETRY_DATA :: NAME , Self :: ICAROUS_HEARTBEAT (..) => ICAROUS_HEARTBEAT_DATA :: NAME , Self :: MEMINFO (..) => MEMINFO_DATA :: NAME , Self :: EXTENDED_SYS_STATE (..) => EXTENDED_SYS_STATE_DATA :: NAME , Self :: TRAJECTORY_REPRESENTATION_BEZIER (..) => TRAJECTORY_REPRESENTATION_BEZIER_DATA :: NAME , Self :: CAMERA_STATUS (..) => CAMERA_STATUS_DATA :: NAME , Self :: WIND_COV (..) => WIND_COV_DATA :: NAME , Self :: AIS_VESSEL (..) => AIS_VESSEL_DATA :: NAME , Self :: GPS_INPUT (..) => GPS_INPUT_DATA :: NAME , Self :: TIMESYNC (..) => TIMESYNC_DATA :: NAME , Self :: SCALED_IMU3 (..) => SCALED_IMU3_DATA :: NAME , Self :: ADSB_VEHICLE (..) => ADSB_VEHICLE_DATA :: NAME , Self :: DEBUG (..) => DEBUG_DATA :: NAME , Self :: FOLLOW_TARGET (..) => FOLLOW_TARGET_DATA :: NAME , Self :: VISION_SPEED_ESTIMATE (..) => VISION_SPEED_ESTIMATE_DATA :: NAME , Self :: DIGICAM_CONFIGURE (..) => DIGICAM_CONFIGURE_DATA :: NAME , Self :: CHANGE_OPERATOR_CONTROL_ACK (..) => CHANGE_OPERATOR_CONTROL_ACK_DATA :: NAME , Self :: MOUNT_STATUS (..) => MOUNT_STATUS_DATA :: NAME , Self :: GPS_RTK (..) => GPS_RTK_DATA :: NAME , Self :: DATA32 (..) => DATA32_DATA :: NAME , Self :: HIL_CONTROLS (..) => HIL_CONTROLS_DATA :: NAME , Self :: DATA96 (..) => DATA96_DATA :: NAME , Self :: SCALED_IMU2 (..) => SCALED_IMU2_DATA :: NAME , Self :: DATA_STREAM (..) => DATA_STREAM_DATA :: NAME , Self :: MOUNT_ORIENTATION (..) => MOUNT_ORIENTATION_DATA :: NAME , Self :: HIGH_LATENCY (..) => HIGH_LATENCY_DATA :: NAME , Self :: GLOBAL_POSITION_INT (..) => GLOBAL_POSITION_INT_DATA :: NAME , Self :: OSD_PARAM_CONFIG_REPLY (..) => OSD_PARAM_CONFIG_REPLY_DATA :: NAME , Self :: ACTUATOR_CONTROL_TARGET (..) => ACTUATOR_CONTROL_TARGET_DATA :: NAME , Self :: OBSTACLE_DISTANCE (..) => OBSTACLE_DISTANCE_DATA :: NAME , Self :: CAN_FILTER_MODIFY (..) => CAN_FILTER_MODIFY_DATA :: NAME , Self :: VISION_POSITION_ESTIMATE (..) => VISION_POSITION_ESTIMATE_DATA :: NAME , Self :: STATUSTEXT (..) => STATUSTEXT_DATA :: NAME , Self :: ATTITUDE_QUATERNION (..) => ATTITUDE_QUATERNION_DATA :: NAME , Self :: PARAM_SET (..) => PARAM_SET_DATA :: NAME , Self :: TUNNEL (..) => TUNNEL_DATA :: NAME , Self :: RC_CHANNELS_RAW (..) => RC_CHANNELS_RAW_DATA :: NAME , Self :: CELLULAR_CONFIG (..) => CELLULAR_CONFIG_DATA :: NAME , Self :: GPS_RTCM_DATA (..) => GPS_RTCM_DATA_DATA :: NAME , Self :: AUTH_KEY (..) => AUTH_KEY_DATA :: NAME , Self :: GPS_STATUS (..) => GPS_STATUS_DATA :: NAME , Self :: RC_CHANNELS_OVERRIDE (..) => RC_CHANNELS_OVERRIDE_DATA :: NAME , Self :: DEEPSTALL (..) => DEEPSTALL_DATA :: NAME , Self :: FENCE_STATUS (..) => FENCE_STATUS_DATA :: NAME , Self :: BATTERY_STATUS (..) => BATTERY_STATUS_DATA :: NAME , Self :: AOA_SSA (..) => AOA_SSA_DATA :: NAME , Self :: MISSION_CLEAR_ALL (..) => MISSION_CLEAR_ALL_DATA :: NAME , Self :: SCALED_PRESSURE2 (..) => SCALED_PRESSURE2_DATA :: NAME , Self :: DISTANCE_SENSOR (..) => DISTANCE_SENSOR_DATA :: NAME , } } fn message_id (& self) -> u32 { match self { Self :: LOGGING_ACK (..) => LOGGING_ACK_DATA :: ID , Self :: GENERATOR_STATUS (..) => GENERATOR_STATUS_DATA :: ID , Self :: VIDEO_STREAM_STATUS (..) => VIDEO_STREAM_STATUS_DATA :: ID , Self :: SET_HOME_POSITION (..) => SET_HOME_POSITION_DATA :: ID , Self :: LOG_REQUEST_LIST (..) => LOG_REQUEST_LIST_DATA :: ID , Self :: VFR_HUD (..) => VFR_HUD_DATA :: ID , Self :: HIL_ACTUATOR_CONTROLS (..) => HIL_ACTUATOR_CONTROLS_DATA :: ID , Self :: GLOBAL_VISION_POSITION_ESTIMATE (..) => GLOBAL_VISION_POSITION_ESTIMATE_DATA :: ID , Self :: UAVCAN_NODE_INFO (..) => UAVCAN_NODE_INFO_DATA :: ID , Self :: FENCE_POINT (..) => FENCE_POINT_DATA :: ID , Self :: MISSION_REQUEST (..) => MISSION_REQUEST_DATA :: ID , Self :: DATA64 (..) => DATA64_DATA :: ID , Self :: GIMBAL_TORQUE_CMD_REPORT (..) => GIMBAL_TORQUE_CMD_REPORT_DATA :: ID , Self :: SYS_STATUS (..) => SYS_STATUS_DATA :: ID , Self :: MCU_STATUS (..) => MCU_STATUS_DATA :: ID , Self :: HIL_RC_INPUTS_RAW (..) => HIL_RC_INPUTS_RAW_DATA :: ID , Self :: PARAM_REQUEST_LIST (..) => PARAM_REQUEST_LIST_DATA :: ID , Self :: OSD_PARAM_SHOW_CONFIG (..) => OSD_PARAM_SHOW_CONFIG_DATA :: ID , Self :: POSITION_TARGET_GLOBAL_INT (..) => POSITION_TARGET_GLOBAL_INT_DATA :: ID , Self :: NAMED_VALUE_INT (..) => NAMED_VALUE_INT_DATA :: ID , Self :: CONTROL_SYSTEM_STATE (..) => CONTROL_SYSTEM_STATE_DATA :: ID , Self :: FLIGHT_INFORMATION (..) => FLIGHT_INFORMATION_DATA :: ID , Self :: UAVIONIX_ADSB_OUT_CFG (..) => UAVIONIX_ADSB_OUT_CFG_DATA :: ID , Self :: PLAY_TUNE_V2 (..) => PLAY_TUNE_V2_DATA :: ID , Self :: MANUAL_CONTROL (..) => MANUAL_CONTROL_DATA :: ID , Self :: ADAP_TUNING (..) => ADAP_TUNING_DATA :: ID , Self :: LOG_REQUEST_DATA (..) => LOG_REQUEST_DATA_DATA :: ID , Self :: HIL_SENSOR (..) => HIL_SENSOR_DATA :: ID , Self :: PARAM_EXT_REQUEST_READ (..) => PARAM_EXT_REQUEST_READ_DATA :: ID , Self :: PARAM_EXT_VALUE (..) => PARAM_EXT_VALUE_DATA :: ID , Self :: ICAROUS_KINEMATIC_BANDS (..) => ICAROUS_KINEMATIC_BANDS_DATA :: ID , Self :: LIMITS_STATUS (..) => LIMITS_STATUS_DATA :: ID , Self :: WIND (..) => WIND_DATA :: ID , Self :: CAMERA_TRACKING_GEO_STATUS (..) => CAMERA_TRACKING_GEO_STATUS_DATA :: ID , Self :: GPS2_RTK (..) => GPS2_RTK_DATA :: ID , Self :: HERELINK_TELEM (..) => HERELINK_TELEM_DATA :: ID , Self :: GIMBAL_REPORT (..) => GIMBAL_REPORT_DATA :: ID , Self :: COLLISION (..) => COLLISION_DATA :: ID , Self :: HEARTBEAT (..) => HEARTBEAT_DATA :: ID , Self :: ESC_TELEMETRY_1_TO_4 (..) => ESC_TELEMETRY_1_TO_4_DATA :: ID , Self :: RESPONSE_EVENT_ERROR (..) => RESPONSE_EVENT_ERROR_DATA :: ID , Self :: SAFETY_SET_ALLOWED_AREA (..) => SAFETY_SET_ALLOWED_AREA_DATA :: ID , Self :: LOG_DATA (..) => LOG_DATA_DATA :: ID , Self :: LOCAL_POSITION_NED (..) => LOCAL_POSITION_NED_DATA :: ID , Self :: ALTITUDE (..) => ALTITUDE_DATA :: ID , Self :: GIMBAL_MANAGER_SET_ATTITUDE (..) => GIMBAL_MANAGER_SET_ATTITUDE_DATA :: ID , Self :: GPS2_RAW (..) => GPS2_RAW_DATA :: ID , Self :: SET_POSITION_TARGET_LOCAL_NED (..) => SET_POSITION_TARGET_LOCAL_NED_DATA :: ID , Self :: SET_GPS_GLOBAL_ORIGIN (..) => SET_GPS_GLOBAL_ORIGIN_DATA :: ID , Self :: PARAM_VALUE (..) => PARAM_VALUE_DATA :: ID , Self :: OPTICAL_FLOW (..) => OPTICAL_FLOW_DATA :: ID , Self :: RC_CHANNELS (..) => RC_CHANNELS_DATA :: ID , Self :: PARAM_EXT_REQUEST_LIST (..) => PARAM_EXT_REQUEST_LIST_DATA :: ID , Self :: OPEN_DRONE_ID_BASIC_ID (..) => OPEN_DRONE_ID_BASIC_ID_DATA :: ID , Self :: LOCAL_POSITION_NED_COV (..) => LOCAL_POSITION_NED_COV_DATA :: ID , Self :: TERRAIN_REQUEST (..) => TERRAIN_REQUEST_DATA :: ID , Self :: DATA_TRANSMISSION_HANDSHAKE (..) => DATA_TRANSMISSION_HANDSHAKE_DATA :: ID , Self :: AHRS (..) => AHRS_DATA :: ID , Self :: OPEN_DRONE_ID_SYSTEM (..) => OPEN_DRONE_ID_SYSTEM_DATA :: ID , Self :: LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET (..) => LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: ID , Self :: MISSION_REQUEST_LIST (..) => MISSION_REQUEST_LIST_DATA :: ID , Self :: CAMERA_TRACKING_IMAGE_STATUS (..) => CAMERA_TRACKING_IMAGE_STATUS_DATA :: ID , Self :: POSITION_TARGET_LOCAL_NED (..) => POSITION_TARGET_LOCAL_NED_DATA :: ID , Self :: PING (..) => PING_DATA :: ID , Self :: PARAM_EXT_SET (..) => PARAM_EXT_SET_DATA :: ID , Self :: GIMBAL_DEVICE_INFORMATION (..) => GIMBAL_DEVICE_INFORMATION_DATA :: ID , Self :: AUTOPILOT_STATE_FOR_GIMBAL_DEVICE (..) => AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: ID , Self :: GIMBAL_CONTROL (..) => GIMBAL_CONTROL_DATA :: ID , Self :: EKF_STATUS_REPORT (..) => EKF_STATUS_REPORT_DATA :: ID , Self :: OSD_PARAM_SHOW_CONFIG_REPLY (..) => OSD_PARAM_SHOW_CONFIG_REPLY_DATA :: ID , Self :: SET_MAG_OFFSETS (..) => SET_MAG_OFFSETS_DATA :: ID , Self :: GIMBAL_DEVICE_SET_ATTITUDE (..) => GIMBAL_DEVICE_SET_ATTITUDE_DATA :: ID , Self :: DEVICE_OP_READ_REPLY (..) => DEVICE_OP_READ_REPLY_DATA :: ID , Self :: GOPRO_SET_REQUEST (..) => GOPRO_SET_REQUEST_DATA :: ID , Self :: GIMBAL_MANAGER_INFORMATION (..) => GIMBAL_MANAGER_INFORMATION_DATA :: ID , Self :: ORBIT_EXECUTION_STATUS (..) => ORBIT_EXECUTION_STATUS_DATA :: ID , Self :: DATA16 (..) => DATA16_DATA :: ID , Self :: COMPONENT_METADATA (..) => COMPONENT_METADATA_DATA :: ID , Self :: POWER_STATUS (..) => POWER_STATUS_DATA :: ID , Self :: RESOURCE_REQUEST (..) => RESOURCE_REQUEST_DATA :: ID , Self :: SET_ATTITUDE_TARGET (..) => SET_ATTITUDE_TARGET_DATA :: ID , Self :: COMMAND_ACK (..) => COMMAND_ACK_DATA :: ID , Self :: LOG_ENTRY (..) => LOG_ENTRY_DATA :: ID , Self :: EVENT (..) => EVENT_DATA :: ID , Self :: HWSTATUS (..) => HWSTATUS_DATA :: ID , Self :: CELLULAR_STATUS (..) => CELLULAR_STATUS_DATA :: ID , Self :: LOGGING_DATA (..) => LOGGING_DATA_DATA :: ID , Self :: HIL_GPS (..) => HIL_GPS_DATA :: ID , Self :: CAN_FRAME (..) => CAN_FRAME_DATA :: ID , Self :: CAMERA_IMAGE_CAPTURED (..) => CAMERA_IMAGE_CAPTURED_DATA :: ID , Self :: V2_EXTENSION (..) => V2_EXTENSION_DATA :: ID , Self :: SAFETY_ALLOWED_AREA (..) => SAFETY_ALLOWED_AREA_DATA :: ID , Self :: PROTOCOL_VERSION (..) => PROTOCOL_VERSION_DATA :: ID , Self :: RAW_IMU (..) => RAW_IMU_DATA :: ID , Self :: CAMERA_INFORMATION (..) => CAMERA_INFORMATION_DATA :: ID , Self :: OPEN_DRONE_ID_SYSTEM_UPDATE (..) => OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: ID , Self :: REQUEST_DATA_STREAM (..) => REQUEST_DATA_STREAM_DATA :: ID , Self :: OPEN_DRONE_ID_SELF_ID (..) => OPEN_DRONE_ID_SELF_ID_DATA :: ID , Self :: OPEN_DRONE_ID_AUTHENTICATION (..) => OPEN_DRONE_ID_AUTHENTICATION_DATA :: ID , Self :: ATT_POS_MOCAP (..) => ATT_POS_MOCAP_DATA :: ID , Self :: HOME_POSITION (..) => HOME_POSITION_DATA :: ID , Self :: COMMAND_INT (..) => COMMAND_INT_DATA :: ID , Self :: CAMERA_CAPTURE_STATUS (..) => CAMERA_CAPTURE_STATUS_DATA :: ID , Self :: RAW_PRESSURE (..) => RAW_PRESSURE_DATA :: ID , Self :: MISSION_ACK (..) => MISSION_ACK_DATA :: ID , Self :: GIMBAL_DEVICE_ATTITUDE_STATUS (..) => GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: ID , Self :: MANUAL_SETPOINT (..) => MANUAL_SETPOINT_DATA :: ID , Self :: RPM (..) => RPM_DATA :: ID , Self :: WATER_DEPTH (..) => WATER_DEPTH_DATA :: ID , Self :: REQUEST_EVENT (..) => REQUEST_EVENT_DATA :: ID , Self :: DEBUG_VECT (..) => DEBUG_VECT_DATA :: ID , Self :: REMOTE_LOG_BLOCK_STATUS (..) => REMOTE_LOG_BLOCK_STATUS_DATA :: ID , Self :: MISSION_REQUEST_INT (..) => MISSION_REQUEST_INT_DATA :: ID , Self :: NAMED_VALUE_FLOAT (..) => NAMED_VALUE_FLOAT_DATA :: ID , Self :: NAV_CONTROLLER_OUTPUT (..) => NAV_CONTROLLER_OUTPUT_DATA :: ID , Self :: AUTOPILOT_VERSION_REQUEST (..) => AUTOPILOT_VERSION_REQUEST_DATA :: ID , Self :: HIL_STATE (..) => HIL_STATE_DATA :: ID , Self :: LOG_REQUEST_END (..) => LOG_REQUEST_END_DATA :: ID , Self :: REMOTE_LOG_DATA_BLOCK (..) => REMOTE_LOG_DATA_BLOCK_DATA :: ID , Self :: PARAM_MAP_RC (..) => PARAM_MAP_RC_DATA :: ID , Self :: DEBUG_FLOAT_ARRAY (..) => DEBUG_FLOAT_ARRAY_DATA :: ID , Self :: AHRS3 (..) => AHRS3_DATA :: ID , Self :: OPEN_DRONE_ID_ARM_STATUS (..) => OPEN_DRONE_ID_ARM_STATUS_DATA :: ID , Self :: OBSTACLE_DISTANCE_3D (..) => OBSTACLE_DISTANCE_3D_DATA :: ID , Self :: SUPPORTED_TUNES (..) => SUPPORTED_TUNES_DATA :: ID , Self :: SIMSTATE (..) => SIMSTATE_DATA :: ID , Self :: CANFD_FRAME (..) => CANFD_FRAME_DATA :: ID , Self :: MISSION_COUNT (..) => MISSION_COUNT_DATA :: ID , Self :: AUTOPILOT_VERSION (..) => AUTOPILOT_VERSION_DATA :: ID , Self :: OPEN_DRONE_ID_MESSAGE_PACK (..) => OPEN_DRONE_ID_MESSAGE_PACK_DATA :: ID , Self :: LOGGING_DATA_ACKED (..) => LOGGING_DATA_ACKED_DATA :: ID , Self :: GPS_GLOBAL_ORIGIN (..) => GPS_GLOBAL_ORIGIN_DATA :: ID , Self :: GIMBAL_MANAGER_STATUS (..) => GIMBAL_MANAGER_STATUS_DATA :: ID , Self :: MISSION_ITEM (..) => MISSION_ITEM_DATA :: ID , Self :: CUBEPILOT_FIRMWARE_UPDATE_START (..) => CUBEPILOT_FIRMWARE_UPDATE_START_DATA :: ID , Self :: AP_ADC (..) => AP_ADC_DATA :: ID , Self :: LINK_NODE_STATUS (..) => LINK_NODE_STATUS_DATA :: ID , Self :: PARAM_EXT_ACK (..) => PARAM_EXT_ACK_DATA :: ID , Self :: VICON_POSITION_ESTIMATE (..) => VICON_POSITION_ESTIMATE_DATA :: ID , Self :: CAMERA_FOV_STATUS (..) => CAMERA_FOV_STATUS_DATA :: ID , Self :: TERRAIN_REPORT (..) => TERRAIN_REPORT_DATA :: ID , Self :: ACTUATOR_OUTPUT_STATUS (..) => ACTUATOR_OUTPUT_STATUS_DATA :: ID , Self :: MESSAGE_INTERVAL (..) => MESSAGE_INTERVAL_DATA :: ID , Self :: ONBOARD_COMPUTER_STATUS (..) => ONBOARD_COMPUTER_STATUS_DATA :: ID , Self :: UAVIONIX_ADSB_OUT_DYNAMIC (..) => UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: ID , Self :: HERELINK_VIDEO_STREAM_INFORMATION (..) => HERELINK_VIDEO_STREAM_INFORMATION_DATA :: ID , Self :: RALLY_POINT (..) => RALLY_POINT_DATA :: ID , Self :: UAVCAN_NODE_STATUS (..) => UAVCAN_NODE_STATUS_DATA :: ID , Self :: COMPASSMOT_STATUS (..) => COMPASSMOT_STATUS_DATA :: ID , Self :: CAMERA_FEEDBACK (..) => CAMERA_FEEDBACK_DATA :: ID , Self :: RALLY_FETCH_POINT (..) => RALLY_FETCH_POINT_DATA :: ID , Self :: HIGH_LATENCY2 (..) => HIGH_LATENCY2_DATA :: ID , Self :: GOPRO_HEARTBEAT (..) => GOPRO_HEARTBEAT_DATA :: ID , Self :: MEMORY_VECT (..) => MEMORY_VECT_DATA :: ID , Self :: CUBEPILOT_FIRMWARE_UPDATE_RESP (..) => CUBEPILOT_FIRMWARE_UPDATE_RESP_DATA :: ID , Self :: SET_POSITION_TARGET_GLOBAL_INT (..) => SET_POSITION_TARGET_GLOBAL_INT_DATA :: ID , Self :: MISSION_ITEM_INT (..) => MISSION_ITEM_INT_DATA :: ID , Self :: SETUP_SIGNING (..) => SETUP_SIGNING_DATA :: ID , Self :: TERRAIN_DATA (..) => TERRAIN_DATA_DATA :: ID , Self :: CHANGE_OPERATOR_CONTROL (..) => CHANGE_OPERATOR_CONTROL_DATA :: ID , Self :: MISSION_WRITE_PARTIAL_LIST (..) => MISSION_WRITE_PARTIAL_LIST_DATA :: ID , Self :: SERIAL_CONTROL (..) => SERIAL_CONTROL_DATA :: ID , Self :: CUBEPILOT_RAW_RC (..) => CUBEPILOT_RAW_RC_DATA :: ID , Self :: FENCE_FETCH_POINT (..) => FENCE_FETCH_POINT_DATA :: ID , Self :: GOPRO_SET_RESPONSE (..) => GOPRO_SET_RESPONSE_DATA :: ID , Self :: CAMERA_TRIGGER (..) => CAMERA_TRIGGER_DATA :: ID , Self :: VISION_POSITION_DELTA (..) => VISION_POSITION_DELTA_DATA :: ID , Self :: OPEN_DRONE_ID_LOCATION (..) => OPEN_DRONE_ID_LOCATION_DATA :: ID , Self :: GOPRO_GET_RESPONSE (..) => GOPRO_GET_RESPONSE_DATA :: ID , Self :: SCALED_PRESSURE3 (..) => SCALED_PRESSURE3_DATA :: ID , Self :: SMART_BATTERY_INFO (..) => SMART_BATTERY_INFO_DATA :: ID , Self :: OPEN_DRONE_ID_OPERATOR_ID (..) => OPEN_DRONE_ID_OPERATOR_ID_DATA :: ID , Self :: ESC_INFO (..) => ESC_INFO_DATA :: ID , Self :: STORAGE_INFORMATION (..) => STORAGE_INFORMATION_DATA :: ID , Self :: RADIO_STATUS (..) => RADIO_STATUS_DATA :: ID , Self :: WHEEL_DISTANCE (..) => WHEEL_DISTANCE_DATA :: ID , Self :: FILE_TRANSFER_PROTOCOL (..) => FILE_TRANSFER_PROTOCOL_DATA :: ID , Self :: DEVICE_OP_READ (..) => DEVICE_OP_READ_DATA :: ID , Self :: MOUNT_CONTROL (..) => MOUNT_CONTROL_DATA :: ID , Self :: BATTERY2 (..) => BATTERY2_DATA :: ID , Self :: OPTICAL_FLOW_RAD (..) => OPTICAL_FLOW_RAD_DATA :: ID , Self :: ESC_TELEMETRY_9_TO_12 (..) => ESC_TELEMETRY_9_TO_12_DATA :: ID , Self :: HIL_OPTICAL_FLOW (..) => HIL_OPTICAL_FLOW_DATA :: ID , Self :: SIM_STATE (..) => SIM_STATE_DATA :: ID , Self :: VIDEO_STREAM_INFORMATION (..) => VIDEO_STREAM_INFORMATION_DATA :: ID , Self :: COMPONENT_INFORMATION (..) => COMPONENT_INFORMATION_DATA :: ID , Self :: LOG_ERASE (..) => LOG_ERASE_DATA :: ID , Self :: SERVO_OUTPUT_RAW (..) => SERVO_OUTPUT_RAW_DATA :: ID , Self :: HYGROMETER_SENSOR (..) => HYGROMETER_SENSOR_DATA :: ID , Self :: DIGICAM_CONTROL (..) => DIGICAM_CONTROL_DATA :: ID , Self :: ENCAPSULATED_DATA (..) => ENCAPSULATED_DATA_DATA :: ID , Self :: WIFI_CONFIG_AP (..) => WIFI_CONFIG_AP_DATA :: ID , Self :: SET_ACTUATOR_CONTROL_TARGET (..) => SET_ACTUATOR_CONTROL_TARGET_DATA :: ID , Self :: SYSTEM_TIME (..) => SYSTEM_TIME_DATA :: ID , Self :: ISBD_LINK_STATUS (..) => ISBD_LINK_STATUS_DATA :: ID , Self :: PLAY_TUNE (..) => PLAY_TUNE_DATA :: ID , Self :: ATTITUDE (..) => ATTITUDE_DATA :: ID , Self :: MAG_CAL_REPORT (..) => MAG_CAL_REPORT_DATA :: ID , Self :: UTM_GLOBAL_POSITION (..) => UTM_GLOBAL_POSITION_DATA :: ID , Self :: LANDING_TARGET (..) => LANDING_TARGET_DATA :: ID , Self :: MISSION_REQUEST_PARTIAL_LIST (..) => MISSION_REQUEST_PARTIAL_LIST_DATA :: ID , Self :: RANGEFINDER (..) => RANGEFINDER_DATA :: ID , Self :: MAG_CAL_PROGRESS (..) => MAG_CAL_PROGRESS_DATA :: ID , Self :: PID_TUNING (..) => PID_TUNING_DATA :: ID , Self :: COMMAND_CANCEL (..) => COMMAND_CANCEL_DATA :: ID , Self :: DEVICE_OP_WRITE (..) => DEVICE_OP_WRITE_DATA :: ID , Self :: SCALED_IMU (..) => SCALED_IMU_DATA :: ID , Self :: RC_CHANNELS_SCALED (..) => RC_CHANNELS_SCALED_DATA :: ID , Self :: VIBRATION (..) => VIBRATION_DATA :: ID , Self :: DEVICE_OP_WRITE_REPLY (..) => DEVICE_OP_WRITE_REPLY_DATA :: ID , Self :: OSD_PARAM_CONFIG (..) => OSD_PARAM_CONFIG_DATA :: ID , Self :: ESC_TELEMETRY_5_TO_8 (..) => ESC_TELEMETRY_5_TO_8_DATA :: ID , Self :: PARAM_REQUEST_READ (..) => PARAM_REQUEST_READ_DATA :: ID , Self :: ATTITUDE_TARGET (..) => ATTITUDE_TARGET_DATA :: ID , Self :: ESC_STATUS (..) => ESC_STATUS_DATA :: ID , Self :: CURRENT_EVENT_SEQUENCE (..) => CURRENT_EVENT_SEQUENCE_DATA :: ID , Self :: CAMERA_SETTINGS (..) => CAMERA_SETTINGS_DATA :: ID , Self :: SET_MODE (..) => SET_MODE_DATA :: ID , Self :: GPS_INJECT_DATA (..) => GPS_INJECT_DATA_DATA :: ID , Self :: GIMBAL_MANAGER_SET_PITCHYAW (..) => GIMBAL_MANAGER_SET_PITCHYAW_DATA :: ID , Self :: GOPRO_GET_REQUEST (..) => GOPRO_GET_REQUEST_DATA :: ID , Self :: GLOBAL_POSITION_INT_COV (..) => GLOBAL_POSITION_INT_COV_DATA :: ID , Self :: MOUNT_CONFIGURE (..) => MOUNT_CONFIGURE_DATA :: ID , Self :: WINCH_STATUS (..) => WINCH_STATUS_DATA :: ID , Self :: TIME_ESTIMATE_TO_TARGET (..) => TIME_ESTIMATE_TO_TARGET_DATA :: ID , Self :: ESTIMATOR_STATUS (..) => ESTIMATOR_STATUS_DATA :: ID , Self :: MISSION_SET_CURRENT (..) => MISSION_SET_CURRENT_DATA :: ID , Self :: LED_CONTROL (..) => LED_CONTROL_DATA :: ID , Self :: RADIO (..) => RADIO_DATA :: ID , Self :: TERRAIN_CHECK (..) => TERRAIN_CHECK_DATA :: ID , Self :: MISSION_ITEM_REACHED (..) => MISSION_ITEM_REACHED_DATA :: ID , Self :: GPS_RAW_INT (..) => GPS_RAW_INT_DATA :: ID , Self :: GIMBAL_MANAGER_SET_MANUAL_CONTROL (..) => GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: ID , Self :: EFI_STATUS (..) => EFI_STATUS_DATA :: ID , Self :: COMMAND_LONG (..) => COMMAND_LONG_DATA :: ID , Self :: HIL_STATE_QUATERNION (..) => HIL_STATE_QUATERNION_DATA :: ID , Self :: BUTTON_CHANGE (..) => BUTTON_CHANGE_DATA :: ID , Self :: TRAJECTORY_REPRESENTATION_WAYPOINTS (..) => TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: ID , Self :: RAW_RPM (..) => RAW_RPM_DATA :: ID , Self :: SCALED_PRESSURE (..) => SCALED_PRESSURE_DATA :: ID , Self :: UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT (..) => UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: ID , Self :: SENSOR_OFFSETS (..) => SENSOR_OFFSETS_DATA :: ID , Self :: HIGHRES_IMU (..) => HIGHRES_IMU_DATA :: ID , Self :: AHRS2 (..) => AHRS2_DATA :: ID , Self :: ATTITUDE_QUATERNION_COV (..) => ATTITUDE_QUATERNION_COV_DATA :: ID , Self :: MISSION_CURRENT (..) => MISSION_CURRENT_DATA :: ID , Self :: AIRSPEED_AUTOCAL (..) => AIRSPEED_AUTOCAL_DATA :: ID , Self :: ODOMETRY (..) => ODOMETRY_DATA :: ID , Self :: ICAROUS_HEARTBEAT (..) => ICAROUS_HEARTBEAT_DATA :: ID , Self :: MEMINFO (..) => MEMINFO_DATA :: ID , Self :: EXTENDED_SYS_STATE (..) => EXTENDED_SYS_STATE_DATA :: ID , Self :: TRAJECTORY_REPRESENTATION_BEZIER (..) => TRAJECTORY_REPRESENTATION_BEZIER_DATA :: ID , Self :: CAMERA_STATUS (..) => CAMERA_STATUS_DATA :: ID , Self :: WIND_COV (..) => WIND_COV_DATA :: ID , Self :: AIS_VESSEL (..) => AIS_VESSEL_DATA :: ID , Self :: GPS_INPUT (..) => GPS_INPUT_DATA :: ID , Self :: TIMESYNC (..) => TIMESYNC_DATA :: ID , Self :: SCALED_IMU3 (..) => SCALED_IMU3_DATA :: ID , Self :: ADSB_VEHICLE (..) => ADSB_VEHICLE_DATA :: ID , Self :: DEBUG (..) => DEBUG_DATA :: ID , Self :: FOLLOW_TARGET (..) => FOLLOW_TARGET_DATA :: ID , Self :: VISION_SPEED_ESTIMATE (..) => VISION_SPEED_ESTIMATE_DATA :: ID , Self :: DIGICAM_CONFIGURE (..) => DIGICAM_CONFIGURE_DATA :: ID , Self :: CHANGE_OPERATOR_CONTROL_ACK (..) => CHANGE_OPERATOR_CONTROL_ACK_DATA :: ID , Self :: MOUNT_STATUS (..) => MOUNT_STATUS_DATA :: ID , Self :: GPS_RTK (..) => GPS_RTK_DATA :: ID , Self :: DATA32 (..) => DATA32_DATA :: ID , Self :: HIL_CONTROLS (..) => HIL_CONTROLS_DATA :: ID , Self :: DATA96 (..) => DATA96_DATA :: ID , Self :: SCALED_IMU2 (..) => SCALED_IMU2_DATA :: ID , Self :: DATA_STREAM (..) => DATA_STREAM_DATA :: ID , Self :: MOUNT_ORIENTATION (..) => MOUNT_ORIENTATION_DATA :: ID , Self :: HIGH_LATENCY (..) => HIGH_LATENCY_DATA :: ID , Self :: GLOBAL_POSITION_INT (..) => GLOBAL_POSITION_INT_DATA :: ID , Self :: OSD_PARAM_CONFIG_REPLY (..) => OSD_PARAM_CONFIG_REPLY_DATA :: ID , Self :: ACTUATOR_CONTROL_TARGET (..) => ACTUATOR_CONTROL_TARGET_DATA :: ID , Self :: OBSTACLE_DISTANCE (..) => OBSTACLE_DISTANCE_DATA :: ID , Self :: CAN_FILTER_MODIFY (..) => CAN_FILTER_MODIFY_DATA :: ID , Self :: VISION_POSITION_ESTIMATE (..) => VISION_POSITION_ESTIMATE_DATA :: ID , Self :: STATUSTEXT (..) => STATUSTEXT_DATA :: ID , Self :: ATTITUDE_QUATERNION (..) => ATTITUDE_QUATERNION_DATA :: ID , Self :: PARAM_SET (..) => PARAM_SET_DATA :: ID , Self :: TUNNEL (..) => TUNNEL_DATA :: ID , Self :: RC_CHANNELS_RAW (..) => RC_CHANNELS_RAW_DATA :: ID , Self :: CELLULAR_CONFIG (..) => CELLULAR_CONFIG_DATA :: ID , Self :: GPS_RTCM_DATA (..) => GPS_RTCM_DATA_DATA :: ID , Self :: AUTH_KEY (..) => AUTH_KEY_DATA :: ID , Self :: GPS_STATUS (..) => GPS_STATUS_DATA :: ID , Self :: RC_CHANNELS_OVERRIDE (..) => RC_CHANNELS_OVERRIDE_DATA :: ID , Self :: DEEPSTALL (..) => DEEPSTALL_DATA :: ID , Self :: FENCE_STATUS (..) => FENCE_STATUS_DATA :: ID , Self :: BATTERY_STATUS (..) => BATTERY_STATUS_DATA :: ID , Self :: AOA_SSA (..) => AOA_SSA_DATA :: ID , Self :: MISSION_CLEAR_ALL (..) => MISSION_CLEAR_ALL_DATA :: ID , Self :: SCALED_PRESSURE2 (..) => SCALED_PRESSURE2_DATA :: ID , Self :: DISTANCE_SENSOR (..) => DISTANCE_SENSOR_DATA :: ID , } } fn message_id_from_name (name : & str) -> Result < u32 , & 'static str > { match name { LOGGING_ACK_DATA :: NAME => Ok (LOGGING_ACK_DATA :: ID) , GENERATOR_STATUS_DATA :: NAME => Ok (GENERATOR_STATUS_DATA :: ID) , VIDEO_STREAM_STATUS_DATA :: NAME => Ok (VIDEO_STREAM_STATUS_DATA :: ID) , SET_HOME_POSITION_DATA :: NAME => Ok (SET_HOME_POSITION_DATA :: ID) , LOG_REQUEST_LIST_DATA :: NAME => Ok (LOG_REQUEST_LIST_DATA :: ID) , VFR_HUD_DATA :: NAME => Ok (VFR_HUD_DATA :: ID) , HIL_ACTUATOR_CONTROLS_DATA :: NAME => Ok (HIL_ACTUATOR_CONTROLS_DATA :: ID) , GLOBAL_VISION_POSITION_ESTIMATE_DATA :: NAME => Ok (GLOBAL_VISION_POSITION_ESTIMATE_DATA :: ID) , UAVCAN_NODE_INFO_DATA :: NAME => Ok (UAVCAN_NODE_INFO_DATA :: ID) , FENCE_POINT_DATA :: NAME => Ok (FENCE_POINT_DATA :: ID) , MISSION_REQUEST_DATA :: NAME => Ok (MISSION_REQUEST_DATA :: ID) , DATA64_DATA :: NAME => Ok (DATA64_DATA :: ID) , GIMBAL_TORQUE_CMD_REPORT_DATA :: NAME => Ok (GIMBAL_TORQUE_CMD_REPORT_DATA :: ID) , SYS_STATUS_DATA :: NAME => Ok (SYS_STATUS_DATA :: ID) , MCU_STATUS_DATA :: NAME => Ok (MCU_STATUS_DATA :: ID) , HIL_RC_INPUTS_RAW_DATA :: NAME => Ok (HIL_RC_INPUTS_RAW_DATA :: ID) , PARAM_REQUEST_LIST_DATA :: NAME => Ok (PARAM_REQUEST_LIST_DATA :: ID) , OSD_PARAM_SHOW_CONFIG_DATA :: NAME => Ok (OSD_PARAM_SHOW_CONFIG_DATA :: ID) , POSITION_TARGET_GLOBAL_INT_DATA :: NAME => Ok (POSITION_TARGET_GLOBAL_INT_DATA :: ID) , NAMED_VALUE_INT_DATA :: NAME => Ok (NAMED_VALUE_INT_DATA :: ID) , CONTROL_SYSTEM_STATE_DATA :: NAME => Ok (CONTROL_SYSTEM_STATE_DATA :: ID) , FLIGHT_INFORMATION_DATA :: NAME => Ok (FLIGHT_INFORMATION_DATA :: ID) , UAVIONIX_ADSB_OUT_CFG_DATA :: NAME => Ok (UAVIONIX_ADSB_OUT_CFG_DATA :: ID) , PLAY_TUNE_V2_DATA :: NAME => Ok (PLAY_TUNE_V2_DATA :: ID) , MANUAL_CONTROL_DATA :: NAME => Ok (MANUAL_CONTROL_DATA :: ID) , ADAP_TUNING_DATA :: NAME => Ok (ADAP_TUNING_DATA :: ID) , LOG_REQUEST_DATA_DATA :: NAME => Ok (LOG_REQUEST_DATA_DATA :: ID) , HIL_SENSOR_DATA :: NAME => Ok (HIL_SENSOR_DATA :: ID) , PARAM_EXT_REQUEST_READ_DATA :: NAME => Ok (PARAM_EXT_REQUEST_READ_DATA :: ID) , PARAM_EXT_VALUE_DATA :: NAME => Ok (PARAM_EXT_VALUE_DATA :: ID) , ICAROUS_KINEMATIC_BANDS_DATA :: NAME => Ok (ICAROUS_KINEMATIC_BANDS_DATA :: ID) , LIMITS_STATUS_DATA :: NAME => Ok (LIMITS_STATUS_DATA :: ID) , WIND_DATA :: NAME => Ok (WIND_DATA :: ID) , CAMERA_TRACKING_GEO_STATUS_DATA :: NAME => Ok (CAMERA_TRACKING_GEO_STATUS_DATA :: ID) , GPS2_RTK_DATA :: NAME => Ok (GPS2_RTK_DATA :: ID) , HERELINK_TELEM_DATA :: NAME => Ok (HERELINK_TELEM_DATA :: ID) , GIMBAL_REPORT_DATA :: NAME => Ok (GIMBAL_REPORT_DATA :: ID) , COLLISION_DATA :: NAME => Ok (COLLISION_DATA :: ID) , HEARTBEAT_DATA :: NAME => Ok (HEARTBEAT_DATA :: ID) , ESC_TELEMETRY_1_TO_4_DATA :: NAME => Ok (ESC_TELEMETRY_1_TO_4_DATA :: ID) , RESPONSE_EVENT_ERROR_DATA :: NAME => Ok (RESPONSE_EVENT_ERROR_DATA :: ID) , SAFETY_SET_ALLOWED_AREA_DATA :: NAME => Ok (SAFETY_SET_ALLOWED_AREA_DATA :: ID) , LOG_DATA_DATA :: NAME => Ok (LOG_DATA_DATA :: ID) , LOCAL_POSITION_NED_DATA :: NAME => Ok (LOCAL_POSITION_NED_DATA :: ID) , ALTITUDE_DATA :: NAME => Ok (ALTITUDE_DATA :: ID) , GIMBAL_MANAGER_SET_ATTITUDE_DATA :: NAME => Ok (GIMBAL_MANAGER_SET_ATTITUDE_DATA :: ID) , GPS2_RAW_DATA :: NAME => Ok (GPS2_RAW_DATA :: ID) , SET_POSITION_TARGET_LOCAL_NED_DATA :: NAME => Ok (SET_POSITION_TARGET_LOCAL_NED_DATA :: ID) , SET_GPS_GLOBAL_ORIGIN_DATA :: NAME => Ok (SET_GPS_GLOBAL_ORIGIN_DATA :: ID) , PARAM_VALUE_DATA :: NAME => Ok (PARAM_VALUE_DATA :: ID) , OPTICAL_FLOW_DATA :: NAME => Ok (OPTICAL_FLOW_DATA :: ID) , RC_CHANNELS_DATA :: NAME => Ok (RC_CHANNELS_DATA :: ID) , PARAM_EXT_REQUEST_LIST_DATA :: NAME => Ok (PARAM_EXT_REQUEST_LIST_DATA :: ID) , OPEN_DRONE_ID_BASIC_ID_DATA :: NAME => Ok (OPEN_DRONE_ID_BASIC_ID_DATA :: ID) , LOCAL_POSITION_NED_COV_DATA :: NAME => Ok (LOCAL_POSITION_NED_COV_DATA :: ID) , TERRAIN_REQUEST_DATA :: NAME => Ok (TERRAIN_REQUEST_DATA :: ID) , DATA_TRANSMISSION_HANDSHAKE_DATA :: NAME => Ok (DATA_TRANSMISSION_HANDSHAKE_DATA :: ID) , AHRS_DATA :: NAME => Ok (AHRS_DATA :: ID) , OPEN_DRONE_ID_SYSTEM_DATA :: NAME => Ok (OPEN_DRONE_ID_SYSTEM_DATA :: ID) , LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: NAME => Ok (LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: ID) , MISSION_REQUEST_LIST_DATA :: NAME => Ok (MISSION_REQUEST_LIST_DATA :: ID) , CAMERA_TRACKING_IMAGE_STATUS_DATA :: NAME => Ok (CAMERA_TRACKING_IMAGE_STATUS_DATA :: ID) , POSITION_TARGET_LOCAL_NED_DATA :: NAME => Ok (POSITION_TARGET_LOCAL_NED_DATA :: ID) , PING_DATA :: NAME => Ok (PING_DATA :: ID) , PARAM_EXT_SET_DATA :: NAME => Ok (PARAM_EXT_SET_DATA :: ID) , GIMBAL_DEVICE_INFORMATION_DATA :: NAME => Ok (GIMBAL_DEVICE_INFORMATION_DATA :: ID) , AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: NAME => Ok (AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: ID) , GIMBAL_CONTROL_DATA :: NAME => Ok (GIMBAL_CONTROL_DATA :: ID) , EKF_STATUS_REPORT_DATA :: NAME => Ok (EKF_STATUS_REPORT_DATA :: ID) , OSD_PARAM_SHOW_CONFIG_REPLY_DATA :: NAME => Ok (OSD_PARAM_SHOW_CONFIG_REPLY_DATA :: ID) , SET_MAG_OFFSETS_DATA :: NAME => Ok (SET_MAG_OFFSETS_DATA :: ID) , GIMBAL_DEVICE_SET_ATTITUDE_DATA :: NAME => Ok (GIMBAL_DEVICE_SET_ATTITUDE_DATA :: ID) , DEVICE_OP_READ_REPLY_DATA :: NAME => Ok (DEVICE_OP_READ_REPLY_DATA :: ID) , GOPRO_SET_REQUEST_DATA :: NAME => Ok (GOPRO_SET_REQUEST_DATA :: ID) , GIMBAL_MANAGER_INFORMATION_DATA :: NAME => Ok (GIMBAL_MANAGER_INFORMATION_DATA :: ID) , ORBIT_EXECUTION_STATUS_DATA :: NAME => Ok (ORBIT_EXECUTION_STATUS_DATA :: ID) , DATA16_DATA :: NAME => Ok (DATA16_DATA :: ID) , COMPONENT_METADATA_DATA :: NAME => Ok (COMPONENT_METADATA_DATA :: ID) , POWER_STATUS_DATA :: NAME => Ok (POWER_STATUS_DATA :: ID) , RESOURCE_REQUEST_DATA :: NAME => Ok (RESOURCE_REQUEST_DATA :: ID) , SET_ATTITUDE_TARGET_DATA :: NAME => Ok (SET_ATTITUDE_TARGET_DATA :: ID) , COMMAND_ACK_DATA :: NAME => Ok (COMMAND_ACK_DATA :: ID) , LOG_ENTRY_DATA :: NAME => Ok (LOG_ENTRY_DATA :: ID) , EVENT_DATA :: NAME => Ok (EVENT_DATA :: ID) , HWSTATUS_DATA :: NAME => Ok (HWSTATUS_DATA :: ID) , CELLULAR_STATUS_DATA :: NAME => Ok (CELLULAR_STATUS_DATA :: ID) , LOGGING_DATA_DATA :: NAME => Ok (LOGGING_DATA_DATA :: ID) , HIL_GPS_DATA :: NAME => Ok (HIL_GPS_DATA :: ID) , CAN_FRAME_DATA :: NAME => Ok (CAN_FRAME_DATA :: ID) , CAMERA_IMAGE_CAPTURED_DATA :: NAME => Ok (CAMERA_IMAGE_CAPTURED_DATA :: ID) , V2_EXTENSION_DATA :: NAME => Ok (V2_EXTENSION_DATA :: ID) , SAFETY_ALLOWED_AREA_DATA :: NAME => Ok (SAFETY_ALLOWED_AREA_DATA :: ID) , PROTOCOL_VERSION_DATA :: NAME => Ok (PROTOCOL_VERSION_DATA :: ID) , RAW_IMU_DATA :: NAME => Ok (RAW_IMU_DATA :: ID) , CAMERA_INFORMATION_DATA :: NAME => Ok (CAMERA_INFORMATION_DATA :: ID) , OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: NAME => Ok (OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: ID) , REQUEST_DATA_STREAM_DATA :: NAME => Ok (REQUEST_DATA_STREAM_DATA :: ID) , OPEN_DRONE_ID_SELF_ID_DATA :: NAME => Ok (OPEN_DRONE_ID_SELF_ID_DATA :: ID) , OPEN_DRONE_ID_AUTHENTICATION_DATA :: NAME => Ok (OPEN_DRONE_ID_AUTHENTICATION_DATA :: ID) , ATT_POS_MOCAP_DATA :: NAME => Ok (ATT_POS_MOCAP_DATA :: ID) , HOME_POSITION_DATA :: NAME => Ok (HOME_POSITION_DATA :: ID) , COMMAND_INT_DATA :: NAME => Ok (COMMAND_INT_DATA :: ID) , CAMERA_CAPTURE_STATUS_DATA :: NAME => Ok (CAMERA_CAPTURE_STATUS_DATA :: ID) , RAW_PRESSURE_DATA :: NAME => Ok (RAW_PRESSURE_DATA :: ID) , MISSION_ACK_DATA :: NAME => Ok (MISSION_ACK_DATA :: ID) , GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: NAME => Ok (GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: ID) , MANUAL_SETPOINT_DATA :: NAME => Ok (MANUAL_SETPOINT_DATA :: ID) , RPM_DATA :: NAME => Ok (RPM_DATA :: ID) , WATER_DEPTH_DATA :: NAME => Ok (WATER_DEPTH_DATA :: ID) , REQUEST_EVENT_DATA :: NAME => Ok (REQUEST_EVENT_DATA :: ID) , DEBUG_VECT_DATA :: NAME => Ok (DEBUG_VECT_DATA :: ID) , REMOTE_LOG_BLOCK_STATUS_DATA :: NAME => Ok (REMOTE_LOG_BLOCK_STATUS_DATA :: ID) , MISSION_REQUEST_INT_DATA :: NAME => Ok (MISSION_REQUEST_INT_DATA :: ID) , NAMED_VALUE_FLOAT_DATA :: NAME => Ok (NAMED_VALUE_FLOAT_DATA :: ID) , NAV_CONTROLLER_OUTPUT_DATA :: NAME => Ok (NAV_CONTROLLER_OUTPUT_DATA :: ID) , AUTOPILOT_VERSION_REQUEST_DATA :: NAME => Ok (AUTOPILOT_VERSION_REQUEST_DATA :: ID) , HIL_STATE_DATA :: NAME => Ok (HIL_STATE_DATA :: ID) , LOG_REQUEST_END_DATA :: NAME => Ok (LOG_REQUEST_END_DATA :: ID) , REMOTE_LOG_DATA_BLOCK_DATA :: NAME => Ok (REMOTE_LOG_DATA_BLOCK_DATA :: ID) , PARAM_MAP_RC_DATA :: NAME => Ok (PARAM_MAP_RC_DATA :: ID) , DEBUG_FLOAT_ARRAY_DATA :: NAME => Ok (DEBUG_FLOAT_ARRAY_DATA :: ID) , AHRS3_DATA :: NAME => Ok (AHRS3_DATA :: ID) , OPEN_DRONE_ID_ARM_STATUS_DATA :: NAME => Ok (OPEN_DRONE_ID_ARM_STATUS_DATA :: ID) , OBSTACLE_DISTANCE_3D_DATA :: NAME => Ok (OBSTACLE_DISTANCE_3D_DATA :: ID) , SUPPORTED_TUNES_DATA :: NAME => Ok (SUPPORTED_TUNES_DATA :: ID) , SIMSTATE_DATA :: NAME => Ok (SIMSTATE_DATA :: ID) , CANFD_FRAME_DATA :: NAME => Ok (CANFD_FRAME_DATA :: ID) , MISSION_COUNT_DATA :: NAME => Ok (MISSION_COUNT_DATA :: ID) , AUTOPILOT_VERSION_DATA :: NAME => Ok (AUTOPILOT_VERSION_DATA :: ID) , OPEN_DRONE_ID_MESSAGE_PACK_DATA :: NAME => Ok (OPEN_DRONE_ID_MESSAGE_PACK_DATA :: ID) , LOGGING_DATA_ACKED_DATA :: NAME => Ok (LOGGING_DATA_ACKED_DATA :: ID) , GPS_GLOBAL_ORIGIN_DATA :: NAME => Ok (GPS_GLOBAL_ORIGIN_DATA :: ID) , GIMBAL_MANAGER_STATUS_DATA :: NAME => Ok (GIMBAL_MANAGER_STATUS_DATA :: ID) , MISSION_ITEM_DATA :: NAME => Ok (MISSION_ITEM_DATA :: ID) , CUBEPILOT_FIRMWARE_UPDATE_START_DATA :: NAME => Ok (CUBEPILOT_FIRMWARE_UPDATE_START_DATA :: ID) , AP_ADC_DATA :: NAME => Ok (AP_ADC_DATA :: ID) , LINK_NODE_STATUS_DATA :: NAME => Ok (LINK_NODE_STATUS_DATA :: ID) , PARAM_EXT_ACK_DATA :: NAME => Ok (PARAM_EXT_ACK_DATA :: ID) , VICON_POSITION_ESTIMATE_DATA :: NAME => Ok (VICON_POSITION_ESTIMATE_DATA :: ID) , CAMERA_FOV_STATUS_DATA :: NAME => Ok (CAMERA_FOV_STATUS_DATA :: ID) , TERRAIN_REPORT_DATA :: NAME => Ok (TERRAIN_REPORT_DATA :: ID) , ACTUATOR_OUTPUT_STATUS_DATA :: NAME => Ok (ACTUATOR_OUTPUT_STATUS_DATA :: ID) , MESSAGE_INTERVAL_DATA :: NAME => Ok (MESSAGE_INTERVAL_DATA :: ID) , ONBOARD_COMPUTER_STATUS_DATA :: NAME => Ok (ONBOARD_COMPUTER_STATUS_DATA :: ID) , UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: NAME => Ok (UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: ID) , HERELINK_VIDEO_STREAM_INFORMATION_DATA :: NAME => Ok (HERELINK_VIDEO_STREAM_INFORMATION_DATA :: ID) , RALLY_POINT_DATA :: NAME => Ok (RALLY_POINT_DATA :: ID) , UAVCAN_NODE_STATUS_DATA :: NAME => Ok (UAVCAN_NODE_STATUS_DATA :: ID) , COMPASSMOT_STATUS_DATA :: NAME => Ok (COMPASSMOT_STATUS_DATA :: ID) , CAMERA_FEEDBACK_DATA :: NAME => Ok (CAMERA_FEEDBACK_DATA :: ID) , RALLY_FETCH_POINT_DATA :: NAME => Ok (RALLY_FETCH_POINT_DATA :: ID) , HIGH_LATENCY2_DATA :: NAME => Ok (HIGH_LATENCY2_DATA :: ID) , GOPRO_HEARTBEAT_DATA :: NAME => Ok (GOPRO_HEARTBEAT_DATA :: ID) , MEMORY_VECT_DATA :: NAME => Ok (MEMORY_VECT_DATA :: ID) , CUBEPILOT_FIRMWARE_UPDATE_RESP_DATA :: NAME => Ok (CUBEPILOT_FIRMWARE_UPDATE_RESP_DATA :: ID) , SET_POSITION_TARGET_GLOBAL_INT_DATA :: NAME => Ok (SET_POSITION_TARGET_GLOBAL_INT_DATA :: ID) , MISSION_ITEM_INT_DATA :: NAME => Ok (MISSION_ITEM_INT_DATA :: ID) , SETUP_SIGNING_DATA :: NAME => Ok (SETUP_SIGNING_DATA :: ID) , TERRAIN_DATA_DATA :: NAME => Ok (TERRAIN_DATA_DATA :: ID) , CHANGE_OPERATOR_CONTROL_DATA :: NAME => Ok (CHANGE_OPERATOR_CONTROL_DATA :: ID) , MISSION_WRITE_PARTIAL_LIST_DATA :: NAME => Ok (MISSION_WRITE_PARTIAL_LIST_DATA :: ID) , SERIAL_CONTROL_DATA :: NAME => Ok (SERIAL_CONTROL_DATA :: ID) , CUBEPILOT_RAW_RC_DATA :: NAME => Ok (CUBEPILOT_RAW_RC_DATA :: ID) , FENCE_FETCH_POINT_DATA :: NAME => Ok (FENCE_FETCH_POINT_DATA :: ID) , GOPRO_SET_RESPONSE_DATA :: NAME => Ok (GOPRO_SET_RESPONSE_DATA :: ID) , CAMERA_TRIGGER_DATA :: NAME => Ok (CAMERA_TRIGGER_DATA :: ID) , VISION_POSITION_DELTA_DATA :: NAME => Ok (VISION_POSITION_DELTA_DATA :: ID) , OPEN_DRONE_ID_LOCATION_DATA :: NAME => Ok (OPEN_DRONE_ID_LOCATION_DATA :: ID) , GOPRO_GET_RESPONSE_DATA :: NAME => Ok (GOPRO_GET_RESPONSE_DATA :: ID) , SCALED_PRESSURE3_DATA :: NAME => Ok (SCALED_PRESSURE3_DATA :: ID) , SMART_BATTERY_INFO_DATA :: NAME => Ok (SMART_BATTERY_INFO_DATA :: ID) , OPEN_DRONE_ID_OPERATOR_ID_DATA :: NAME => Ok (OPEN_DRONE_ID_OPERATOR_ID_DATA :: ID) , ESC_INFO_DATA :: NAME => Ok (ESC_INFO_DATA :: ID) , STORAGE_INFORMATION_DATA :: NAME => Ok (STORAGE_INFORMATION_DATA :: ID) , RADIO_STATUS_DATA :: NAME => Ok (RADIO_STATUS_DATA :: ID) , WHEEL_DISTANCE_DATA :: NAME => Ok (WHEEL_DISTANCE_DATA :: ID) , FILE_TRANSFER_PROTOCOL_DATA :: NAME => Ok (FILE_TRANSFER_PROTOCOL_DATA :: ID) , DEVICE_OP_READ_DATA :: NAME => Ok (DEVICE_OP_READ_DATA :: ID) , MOUNT_CONTROL_DATA :: NAME => Ok (MOUNT_CONTROL_DATA :: ID) , BATTERY2_DATA :: NAME => Ok (BATTERY2_DATA :: ID) , OPTICAL_FLOW_RAD_DATA :: NAME => Ok (OPTICAL_FLOW_RAD_DATA :: ID) , ESC_TELEMETRY_9_TO_12_DATA :: NAME => Ok (ESC_TELEMETRY_9_TO_12_DATA :: ID) , HIL_OPTICAL_FLOW_DATA :: NAME => Ok (HIL_OPTICAL_FLOW_DATA :: ID) , SIM_STATE_DATA :: NAME => Ok (SIM_STATE_DATA :: ID) , VIDEO_STREAM_INFORMATION_DATA :: NAME => Ok (VIDEO_STREAM_INFORMATION_DATA :: ID) , COMPONENT_INFORMATION_DATA :: NAME => Ok (COMPONENT_INFORMATION_DATA :: ID) , LOG_ERASE_DATA :: NAME => Ok (LOG_ERASE_DATA :: ID) , SERVO_OUTPUT_RAW_DATA :: NAME => Ok (SERVO_OUTPUT_RAW_DATA :: ID) , HYGROMETER_SENSOR_DATA :: NAME => Ok (HYGROMETER_SENSOR_DATA :: ID) , DIGICAM_CONTROL_DATA :: NAME => Ok (DIGICAM_CONTROL_DATA :: ID) , ENCAPSULATED_DATA_DATA :: NAME => Ok (ENCAPSULATED_DATA_DATA :: ID) , WIFI_CONFIG_AP_DATA :: NAME => Ok (WIFI_CONFIG_AP_DATA :: ID) , SET_ACTUATOR_CONTROL_TARGET_DATA :: NAME => Ok (SET_ACTUATOR_CONTROL_TARGET_DATA :: ID) , SYSTEM_TIME_DATA :: NAME => Ok (SYSTEM_TIME_DATA :: ID) , ISBD_LINK_STATUS_DATA :: NAME => Ok (ISBD_LINK_STATUS_DATA :: ID) , PLAY_TUNE_DATA :: NAME => Ok (PLAY_TUNE_DATA :: ID) , ATTITUDE_DATA :: NAME => Ok (ATTITUDE_DATA :: ID) , MAG_CAL_REPORT_DATA :: NAME => Ok (MAG_CAL_REPORT_DATA :: ID) , UTM_GLOBAL_POSITION_DATA :: NAME => Ok (UTM_GLOBAL_POSITION_DATA :: ID) , LANDING_TARGET_DATA :: NAME => Ok (LANDING_TARGET_DATA :: ID) , MISSION_REQUEST_PARTIAL_LIST_DATA :: NAME => Ok (MISSION_REQUEST_PARTIAL_LIST_DATA :: ID) , RANGEFINDER_DATA :: NAME => Ok (RANGEFINDER_DATA :: ID) , MAG_CAL_PROGRESS_DATA :: NAME => Ok (MAG_CAL_PROGRESS_DATA :: ID) , PID_TUNING_DATA :: NAME => Ok (PID_TUNING_DATA :: ID) , COMMAND_CANCEL_DATA :: NAME => Ok (COMMAND_CANCEL_DATA :: ID) , DEVICE_OP_WRITE_DATA :: NAME => Ok (DEVICE_OP_WRITE_DATA :: ID) , SCALED_IMU_DATA :: NAME => Ok (SCALED_IMU_DATA :: ID) , RC_CHANNELS_SCALED_DATA :: NAME => Ok (RC_CHANNELS_SCALED_DATA :: ID) , VIBRATION_DATA :: NAME => Ok (VIBRATION_DATA :: ID) , DEVICE_OP_WRITE_REPLY_DATA :: NAME => Ok (DEVICE_OP_WRITE_REPLY_DATA :: ID) , OSD_PARAM_CONFIG_DATA :: NAME => Ok (OSD_PARAM_CONFIG_DATA :: ID) , ESC_TELEMETRY_5_TO_8_DATA :: NAME => Ok (ESC_TELEMETRY_5_TO_8_DATA :: ID) , PARAM_REQUEST_READ_DATA :: NAME => Ok (PARAM_REQUEST_READ_DATA :: ID) , ATTITUDE_TARGET_DATA :: NAME => Ok (ATTITUDE_TARGET_DATA :: ID) , ESC_STATUS_DATA :: NAME => Ok (ESC_STATUS_DATA :: ID) , CURRENT_EVENT_SEQUENCE_DATA :: NAME => Ok (CURRENT_EVENT_SEQUENCE_DATA :: ID) , CAMERA_SETTINGS_DATA :: NAME => Ok (CAMERA_SETTINGS_DATA :: ID) , SET_MODE_DATA :: NAME => Ok (SET_MODE_DATA :: ID) , GPS_INJECT_DATA_DATA :: NAME => Ok (GPS_INJECT_DATA_DATA :: ID) , GIMBAL_MANAGER_SET_PITCHYAW_DATA :: NAME => Ok (GIMBAL_MANAGER_SET_PITCHYAW_DATA :: ID) , GOPRO_GET_REQUEST_DATA :: NAME => Ok (GOPRO_GET_REQUEST_DATA :: ID) , GLOBAL_POSITION_INT_COV_DATA :: NAME => Ok (GLOBAL_POSITION_INT_COV_DATA :: ID) , MOUNT_CONFIGURE_DATA :: NAME => Ok (MOUNT_CONFIGURE_DATA :: ID) , WINCH_STATUS_DATA :: NAME => Ok (WINCH_STATUS_DATA :: ID) , TIME_ESTIMATE_TO_TARGET_DATA :: NAME => Ok (TIME_ESTIMATE_TO_TARGET_DATA :: ID) , ESTIMATOR_STATUS_DATA :: NAME => Ok (ESTIMATOR_STATUS_DATA :: ID) , MISSION_SET_CURRENT_DATA :: NAME => Ok (MISSION_SET_CURRENT_DATA :: ID) , LED_CONTROL_DATA :: NAME => Ok (LED_CONTROL_DATA :: ID) , RADIO_DATA :: NAME => Ok (RADIO_DATA :: ID) , TERRAIN_CHECK_DATA :: NAME => Ok (TERRAIN_CHECK_DATA :: ID) , MISSION_ITEM_REACHED_DATA :: NAME => Ok (MISSION_ITEM_REACHED_DATA :: ID) , GPS_RAW_INT_DATA :: NAME => Ok (GPS_RAW_INT_DATA :: ID) , GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: NAME => Ok (GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: ID) , EFI_STATUS_DATA :: NAME => Ok (EFI_STATUS_DATA :: ID) , COMMAND_LONG_DATA :: NAME => Ok (COMMAND_LONG_DATA :: ID) , HIL_STATE_QUATERNION_DATA :: NAME => Ok (HIL_STATE_QUATERNION_DATA :: ID) , BUTTON_CHANGE_DATA :: NAME => Ok (BUTTON_CHANGE_DATA :: ID) , TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: NAME => Ok (TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: ID) , RAW_RPM_DATA :: NAME => Ok (RAW_RPM_DATA :: ID) , SCALED_PRESSURE_DATA :: NAME => Ok (SCALED_PRESSURE_DATA :: ID) , UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: NAME => Ok (UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: ID) , SENSOR_OFFSETS_DATA :: NAME => Ok (SENSOR_OFFSETS_DATA :: ID) , HIGHRES_IMU_DATA :: NAME => Ok (HIGHRES_IMU_DATA :: ID) , AHRS2_DATA :: NAME => Ok (AHRS2_DATA :: ID) , ATTITUDE_QUATERNION_COV_DATA :: NAME => Ok (ATTITUDE_QUATERNION_COV_DATA :: ID) , MISSION_CURRENT_DATA :: NAME => Ok (MISSION_CURRENT_DATA :: ID) , AIRSPEED_AUTOCAL_DATA :: NAME => Ok (AIRSPEED_AUTOCAL_DATA :: ID) , ODOMETRY_DATA :: NAME => Ok (ODOMETRY_DATA :: ID) , ICAROUS_HEARTBEAT_DATA :: NAME => Ok (ICAROUS_HEARTBEAT_DATA :: ID) , MEMINFO_DATA :: NAME => Ok (MEMINFO_DATA :: ID) , EXTENDED_SYS_STATE_DATA :: NAME => Ok (EXTENDED_SYS_STATE_DATA :: ID) , TRAJECTORY_REPRESENTATION_BEZIER_DATA :: NAME => Ok (TRAJECTORY_REPRESENTATION_BEZIER_DATA :: ID) , CAMERA_STATUS_DATA :: NAME => Ok (CAMERA_STATUS_DATA :: ID) , WIND_COV_DATA :: NAME => Ok (WIND_COV_DATA :: ID) , AIS_VESSEL_DATA :: NAME => Ok (AIS_VESSEL_DATA :: ID) , GPS_INPUT_DATA :: NAME => Ok (GPS_INPUT_DATA :: ID) , TIMESYNC_DATA :: NAME => Ok (TIMESYNC_DATA :: ID) , SCALED_IMU3_DATA :: NAME => Ok (SCALED_IMU3_DATA :: ID) , ADSB_VEHICLE_DATA :: NAME => Ok (ADSB_VEHICLE_DATA :: ID) , DEBUG_DATA :: NAME => Ok (DEBUG_DATA :: ID) , FOLLOW_TARGET_DATA :: NAME => Ok (FOLLOW_TARGET_DATA :: ID) , VISION_SPEED_ESTIMATE_DATA :: NAME => Ok (VISION_SPEED_ESTIMATE_DATA :: ID) , DIGICAM_CONFIGURE_DATA :: NAME => Ok (DIGICAM_CONFIGURE_DATA :: ID) , CHANGE_OPERATOR_CONTROL_ACK_DATA :: NAME => Ok (CHANGE_OPERATOR_CONTROL_ACK_DATA :: ID) , MOUNT_STATUS_DATA :: NAME => Ok (MOUNT_STATUS_DATA :: ID) , GPS_RTK_DATA :: NAME => Ok (GPS_RTK_DATA :: ID) , DATA32_DATA :: NAME => Ok (DATA32_DATA :: ID) , HIL_CONTROLS_DATA :: NAME => Ok (HIL_CONTROLS_DATA :: ID) , DATA96_DATA :: NAME => Ok (DATA96_DATA :: ID) , SCALED_IMU2_DATA :: NAME => Ok (SCALED_IMU2_DATA :: ID) , DATA_STREAM_DATA :: NAME => Ok (DATA_STREAM_DATA :: ID) , MOUNT_ORIENTATION_DATA :: NAME => Ok (MOUNT_ORIENTATION_DATA :: ID) , HIGH_LATENCY_DATA :: NAME => Ok (HIGH_LATENCY_DATA :: ID) , GLOBAL_POSITION_INT_DATA :: NAME => Ok (GLOBAL_POSITION_INT_DATA :: ID) , OSD_PARAM_CONFIG_REPLY_DATA :: NAME => Ok (OSD_PARAM_CONFIG_REPLY_DATA :: ID) , ACTUATOR_CONTROL_TARGET_DATA :: NAME => Ok (ACTUATOR_CONTROL_TARGET_DATA :: ID) , OBSTACLE_DISTANCE_DATA :: NAME => Ok (OBSTACLE_DISTANCE_DATA :: ID) , CAN_FILTER_MODIFY_DATA :: NAME => Ok (CAN_FILTER_MODIFY_DATA :: ID) , VISION_POSITION_ESTIMATE_DATA :: NAME => Ok (VISION_POSITION_ESTIMATE_DATA :: ID) , STATUSTEXT_DATA :: NAME => Ok (STATUSTEXT_DATA :: ID) , ATTITUDE_QUATERNION_DATA :: NAME => Ok (ATTITUDE_QUATERNION_DATA :: ID) , PARAM_SET_DATA :: NAME => Ok (PARAM_SET_DATA :: ID) , TUNNEL_DATA :: NAME => Ok (TUNNEL_DATA :: ID) , RC_CHANNELS_RAW_DATA :: NAME => Ok (RC_CHANNELS_RAW_DATA :: ID) , CELLULAR_CONFIG_DATA :: NAME => Ok (CELLULAR_CONFIG_DATA :: ID) , GPS_RTCM_DATA_DATA :: NAME => Ok (GPS_RTCM_DATA_DATA :: ID) , AUTH_KEY_DATA :: NAME => Ok (AUTH_KEY_DATA :: ID) , GPS_STATUS_DATA :: NAME => Ok (GPS_STATUS_DATA :: ID) , RC_CHANNELS_OVERRIDE_DATA :: NAME => Ok (RC_CHANNELS_OVERRIDE_DATA :: ID) , DEEPSTALL_DATA :: NAME => Ok (DEEPSTALL_DATA :: ID) , FENCE_STATUS_DATA :: NAME => Ok (FENCE_STATUS_DATA :: ID) , BATTERY_STATUS_DATA :: NAME => Ok (BATTERY_STATUS_DATA :: ID) , AOA_SSA_DATA :: NAME => Ok (AOA_SSA_DATA :: ID) , MISSION_CLEAR_ALL_DATA :: NAME => Ok (MISSION_CLEAR_ALL_DATA :: ID) , SCALED_PRESSURE2_DATA :: NAME => Ok (SCALED_PRESSURE2_DATA :: ID) , DISTANCE_SENSOR_DATA :: NAME => Ok (DISTANCE_SENSOR_DATA :: ID) , _ => { Err ("Invalid message name.") } } } fn default_message_from_id (id : u32) -> Result < Self , & 'static str > { match id { LOGGING_ACK_DATA :: ID => Ok (Self :: LOGGING_ACK (LOGGING_ACK_DATA :: default ())) , GENERATOR_STATUS_DATA :: ID => Ok (Self :: GENERATOR_STATUS (GENERATOR_STATUS_DATA :: default ())) , VIDEO_STREAM_STATUS_DATA :: ID => Ok (Self :: VIDEO_STREAM_STATUS (VIDEO_STREAM_STATUS_DATA :: default ())) , SET_HOME_POSITION_DATA :: ID => Ok (Self :: SET_HOME_POSITION (SET_HOME_POSITION_DATA :: default ())) , LOG_REQUEST_LIST_DATA :: ID => Ok (Self :: LOG_REQUEST_LIST (LOG_REQUEST_LIST_DATA :: default ())) , VFR_HUD_DATA :: ID => Ok (Self :: VFR_HUD (VFR_HUD_DATA :: default ())) , HIL_ACTUATOR_CONTROLS_DATA :: ID => Ok (Self :: HIL_ACTUATOR_CONTROLS (HIL_ACTUATOR_CONTROLS_DATA :: default ())) , GLOBAL_VISION_POSITION_ESTIMATE_DATA :: ID => Ok (Self :: GLOBAL_VISION_POSITION_ESTIMATE (GLOBAL_VISION_POSITION_ESTIMATE_DATA :: default ())) , UAVCAN_NODE_INFO_DATA :: ID => Ok (Self :: UAVCAN_NODE_INFO (UAVCAN_NODE_INFO_DATA :: default ())) , FENCE_POINT_DATA :: ID => Ok (Self :: FENCE_POINT (FENCE_POINT_DATA :: default ())) , MISSION_REQUEST_DATA :: ID => Ok (Self :: MISSION_REQUEST (MISSION_REQUEST_DATA :: default ())) , DATA64_DATA :: ID => Ok (Self :: DATA64 (DATA64_DATA :: default ())) , GIMBAL_TORQUE_CMD_REPORT_DATA :: ID => Ok (Self :: GIMBAL_TORQUE_CMD_REPORT (GIMBAL_TORQUE_CMD_REPORT_DATA :: default ())) , SYS_STATUS_DATA :: ID => Ok (Self :: SYS_STATUS (SYS_STATUS_DATA :: default ())) , MCU_STATUS_DATA :: ID => Ok (Self :: MCU_STATUS (MCU_STATUS_DATA :: default ())) , HIL_RC_INPUTS_RAW_DATA :: ID => Ok (Self :: HIL_RC_INPUTS_RAW (HIL_RC_INPUTS_RAW_DATA :: default ())) , PARAM_REQUEST_LIST_DATA :: ID => Ok (Self :: PARAM_REQUEST_LIST (PARAM_REQUEST_LIST_DATA :: default ())) , OSD_PARAM_SHOW_CONFIG_DATA :: ID => Ok (Self :: OSD_PARAM_SHOW_CONFIG (OSD_PARAM_SHOW_CONFIG_DATA :: default ())) , POSITION_TARGET_GLOBAL_INT_DATA :: ID => Ok (Self :: POSITION_TARGET_GLOBAL_INT (POSITION_TARGET_GLOBAL_INT_DATA :: default ())) , NAMED_VALUE_INT_DATA :: ID => Ok (Self :: NAMED_VALUE_INT (NAMED_VALUE_INT_DATA :: default ())) , CONTROL_SYSTEM_STATE_DATA :: ID => Ok (Self :: CONTROL_SYSTEM_STATE (CONTROL_SYSTEM_STATE_DATA :: default ())) , FLIGHT_INFORMATION_DATA :: ID => Ok (Self :: FLIGHT_INFORMATION (FLIGHT_INFORMATION_DATA :: default ())) , UAVIONIX_ADSB_OUT_CFG_DATA :: ID => Ok (Self :: UAVIONIX_ADSB_OUT_CFG (UAVIONIX_ADSB_OUT_CFG_DATA :: default ())) , PLAY_TUNE_V2_DATA :: ID => Ok (Self :: PLAY_TUNE_V2 (PLAY_TUNE_V2_DATA :: default ())) , MANUAL_CONTROL_DATA :: ID => Ok (Self :: MANUAL_CONTROL (MANUAL_CONTROL_DATA :: default ())) , ADAP_TUNING_DATA :: ID => Ok (Self :: ADAP_TUNING (ADAP_TUNING_DATA :: default ())) , LOG_REQUEST_DATA_DATA :: ID => Ok (Self :: LOG_REQUEST_DATA (LOG_REQUEST_DATA_DATA :: default ())) , HIL_SENSOR_DATA :: ID => Ok (Self :: HIL_SENSOR (HIL_SENSOR_DATA :: default ())) , PARAM_EXT_REQUEST_READ_DATA :: ID => Ok (Self :: PARAM_EXT_REQUEST_READ (PARAM_EXT_REQUEST_READ_DATA :: default ())) , PARAM_EXT_VALUE_DATA :: ID => Ok (Self :: PARAM_EXT_VALUE (PARAM_EXT_VALUE_DATA :: default ())) , ICAROUS_KINEMATIC_BANDS_DATA :: ID => Ok (Self :: ICAROUS_KINEMATIC_BANDS (ICAROUS_KINEMATIC_BANDS_DATA :: default ())) , LIMITS_STATUS_DATA :: ID => Ok (Self :: LIMITS_STATUS (LIMITS_STATUS_DATA :: default ())) , WIND_DATA :: ID => Ok (Self :: WIND (WIND_DATA :: default ())) , CAMERA_TRACKING_GEO_STATUS_DATA :: ID => Ok (Self :: CAMERA_TRACKING_GEO_STATUS (CAMERA_TRACKING_GEO_STATUS_DATA :: default ())) , GPS2_RTK_DATA :: ID => Ok (Self :: GPS2_RTK (GPS2_RTK_DATA :: default ())) , HERELINK_TELEM_DATA :: ID => Ok (Self :: HERELINK_TELEM (HERELINK_TELEM_DATA :: default ())) , GIMBAL_REPORT_DATA :: ID => Ok (Self :: GIMBAL_REPORT (GIMBAL_REPORT_DATA :: default ())) , COLLISION_DATA :: ID => Ok (Self :: COLLISION (COLLISION_DATA :: default ())) , HEARTBEAT_DATA :: ID => Ok (Self :: HEARTBEAT (HEARTBEAT_DATA :: default ())) , ESC_TELEMETRY_1_TO_4_DATA :: ID => Ok (Self :: ESC_TELEMETRY_1_TO_4 (ESC_TELEMETRY_1_TO_4_DATA :: default ())) , RESPONSE_EVENT_ERROR_DATA :: ID => Ok (Self :: RESPONSE_EVENT_ERROR (RESPONSE_EVENT_ERROR_DATA :: default ())) , SAFETY_SET_ALLOWED_AREA_DATA :: ID => Ok (Self :: SAFETY_SET_ALLOWED_AREA (SAFETY_SET_ALLOWED_AREA_DATA :: default ())) , LOG_DATA_DATA :: ID => Ok (Self :: LOG_DATA (LOG_DATA_DATA :: default ())) , LOCAL_POSITION_NED_DATA :: ID => Ok (Self :: LOCAL_POSITION_NED (LOCAL_POSITION_NED_DATA :: default ())) , ALTITUDE_DATA :: ID => Ok (Self :: ALTITUDE (ALTITUDE_DATA :: default ())) , GIMBAL_MANAGER_SET_ATTITUDE_DATA :: ID => Ok (Self :: GIMBAL_MANAGER_SET_ATTITUDE (GIMBAL_MANAGER_SET_ATTITUDE_DATA :: default ())) , GPS2_RAW_DATA :: ID => Ok (Self :: GPS2_RAW (GPS2_RAW_DATA :: default ())) , SET_POSITION_TARGET_LOCAL_NED_DATA :: ID => Ok (Self :: SET_POSITION_TARGET_LOCAL_NED (SET_POSITION_TARGET_LOCAL_NED_DATA :: default ())) , SET_GPS_GLOBAL_ORIGIN_DATA :: ID => Ok (Self :: SET_GPS_GLOBAL_ORIGIN (SET_GPS_GLOBAL_ORIGIN_DATA :: default ())) , PARAM_VALUE_DATA :: ID => Ok (Self :: PARAM_VALUE (PARAM_VALUE_DATA :: default ())) , OPTICAL_FLOW_DATA :: ID => Ok (Self :: OPTICAL_FLOW (OPTICAL_FLOW_DATA :: default ())) , RC_CHANNELS_DATA :: ID => Ok (Self :: RC_CHANNELS (RC_CHANNELS_DATA :: default ())) , PARAM_EXT_REQUEST_LIST_DATA :: ID => Ok (Self :: PARAM_EXT_REQUEST_LIST (PARAM_EXT_REQUEST_LIST_DATA :: default ())) , OPEN_DRONE_ID_BASIC_ID_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_BASIC_ID (OPEN_DRONE_ID_BASIC_ID_DATA :: default ())) , LOCAL_POSITION_NED_COV_DATA :: ID => Ok (Self :: LOCAL_POSITION_NED_COV (LOCAL_POSITION_NED_COV_DATA :: default ())) , TERRAIN_REQUEST_DATA :: ID => Ok (Self :: TERRAIN_REQUEST (TERRAIN_REQUEST_DATA :: default ())) , DATA_TRANSMISSION_HANDSHAKE_DATA :: ID => Ok (Self :: DATA_TRANSMISSION_HANDSHAKE (DATA_TRANSMISSION_HANDSHAKE_DATA :: default ())) , AHRS_DATA :: ID => Ok (Self :: AHRS (AHRS_DATA :: default ())) , OPEN_DRONE_ID_SYSTEM_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_SYSTEM (OPEN_DRONE_ID_SYSTEM_DATA :: default ())) , LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: ID => Ok (Self :: LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET (LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: default ())) , MISSION_REQUEST_LIST_DATA :: ID => Ok (Self :: MISSION_REQUEST_LIST (MISSION_REQUEST_LIST_DATA :: default ())) , CAMERA_TRACKING_IMAGE_STATUS_DATA :: ID => Ok (Self :: CAMERA_TRACKING_IMAGE_STATUS (CAMERA_TRACKING_IMAGE_STATUS_DATA :: default ())) , POSITION_TARGET_LOCAL_NED_DATA :: ID => Ok (Self :: POSITION_TARGET_LOCAL_NED (POSITION_TARGET_LOCAL_NED_DATA :: default ())) , PING_DATA :: ID => Ok (Self :: PING (PING_DATA :: default ())) , PARAM_EXT_SET_DATA :: ID => Ok (Self :: PARAM_EXT_SET (PARAM_EXT_SET_DATA :: default ())) , GIMBAL_DEVICE_INFORMATION_DATA :: ID => Ok (Self :: GIMBAL_DEVICE_INFORMATION (GIMBAL_DEVICE_INFORMATION_DATA :: default ())) , AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: ID => Ok (Self :: AUTOPILOT_STATE_FOR_GIMBAL_DEVICE (AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: default ())) , GIMBAL_CONTROL_DATA :: ID => Ok (Self :: GIMBAL_CONTROL (GIMBAL_CONTROL_DATA :: default ())) , EKF_STATUS_REPORT_DATA :: ID => Ok (Self :: EKF_STATUS_REPORT (EKF_STATUS_REPORT_DATA :: default ())) , OSD_PARAM_SHOW_CONFIG_REPLY_DATA :: ID => Ok (Self :: OSD_PARAM_SHOW_CONFIG_REPLY (OSD_PARAM_SHOW_CONFIG_REPLY_DATA :: default ())) , SET_MAG_OFFSETS_DATA :: ID => Ok (Self :: SET_MAG_OFFSETS (SET_MAG_OFFSETS_DATA :: default ())) , GIMBAL_DEVICE_SET_ATTITUDE_DATA :: ID => Ok (Self :: GIMBAL_DEVICE_SET_ATTITUDE (GIMBAL_DEVICE_SET_ATTITUDE_DATA :: default ())) , DEVICE_OP_READ_REPLY_DATA :: ID => Ok (Self :: DEVICE_OP_READ_REPLY (DEVICE_OP_READ_REPLY_DATA :: default ())) , GOPRO_SET_REQUEST_DATA :: ID => Ok (Self :: GOPRO_SET_REQUEST (GOPRO_SET_REQUEST_DATA :: default ())) , GIMBAL_MANAGER_INFORMATION_DATA :: ID => Ok (Self :: GIMBAL_MANAGER_INFORMATION (GIMBAL_MANAGER_INFORMATION_DATA :: default ())) , ORBIT_EXECUTION_STATUS_DATA :: ID => Ok (Self :: ORBIT_EXECUTION_STATUS (ORBIT_EXECUTION_STATUS_DATA :: default ())) , DATA16_DATA :: ID => Ok (Self :: DATA16 (DATA16_DATA :: default ())) , COMPONENT_METADATA_DATA :: ID => Ok (Self :: COMPONENT_METADATA (COMPONENT_METADATA_DATA :: default ())) , POWER_STATUS_DATA :: ID => Ok (Self :: POWER_STATUS (POWER_STATUS_DATA :: default ())) , RESOURCE_REQUEST_DATA :: ID => Ok (Self :: RESOURCE_REQUEST (RESOURCE_REQUEST_DATA :: default ())) , SET_ATTITUDE_TARGET_DATA :: ID => Ok (Self :: SET_ATTITUDE_TARGET (SET_ATTITUDE_TARGET_DATA :: default ())) , COMMAND_ACK_DATA :: ID => Ok (Self :: COMMAND_ACK (COMMAND_ACK_DATA :: default ())) , LOG_ENTRY_DATA :: ID => Ok (Self :: LOG_ENTRY (LOG_ENTRY_DATA :: default ())) , EVENT_DATA :: ID => Ok (Self :: EVENT (EVENT_DATA :: default ())) , HWSTATUS_DATA :: ID => Ok (Self :: HWSTATUS (HWSTATUS_DATA :: default ())) , CELLULAR_STATUS_DATA :: ID => Ok (Self :: CELLULAR_STATUS (CELLULAR_STATUS_DATA :: default ())) , LOGGING_DATA_DATA :: ID => Ok (Self :: LOGGING_DATA (LOGGING_DATA_DATA :: default ())) , HIL_GPS_DATA :: ID => Ok (Self :: HIL_GPS (HIL_GPS_DATA :: default ())) , CAN_FRAME_DATA :: ID => Ok (Self :: CAN_FRAME (CAN_FRAME_DATA :: default ())) , CAMERA_IMAGE_CAPTURED_DATA :: ID => Ok (Self :: CAMERA_IMAGE_CAPTURED (CAMERA_IMAGE_CAPTURED_DATA :: default ())) , V2_EXTENSION_DATA :: ID => Ok (Self :: V2_EXTENSION (V2_EXTENSION_DATA :: default ())) , SAFETY_ALLOWED_AREA_DATA :: ID => Ok (Self :: SAFETY_ALLOWED_AREA (SAFETY_ALLOWED_AREA_DATA :: default ())) , PROTOCOL_VERSION_DATA :: ID => Ok (Self :: PROTOCOL_VERSION (PROTOCOL_VERSION_DATA :: default ())) , RAW_IMU_DATA :: ID => Ok (Self :: RAW_IMU (RAW_IMU_DATA :: default ())) , CAMERA_INFORMATION_DATA :: ID => Ok (Self :: CAMERA_INFORMATION (CAMERA_INFORMATION_DATA :: default ())) , OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_SYSTEM_UPDATE (OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: default ())) , REQUEST_DATA_STREAM_DATA :: ID => Ok (Self :: REQUEST_DATA_STREAM (REQUEST_DATA_STREAM_DATA :: default ())) , OPEN_DRONE_ID_SELF_ID_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_SELF_ID (OPEN_DRONE_ID_SELF_ID_DATA :: default ())) , OPEN_DRONE_ID_AUTHENTICATION_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_AUTHENTICATION (OPEN_DRONE_ID_AUTHENTICATION_DATA :: default ())) , ATT_POS_MOCAP_DATA :: ID => Ok (Self :: ATT_POS_MOCAP (ATT_POS_MOCAP_DATA :: default ())) , HOME_POSITION_DATA :: ID => Ok (Self :: HOME_POSITION (HOME_POSITION_DATA :: default ())) , COMMAND_INT_DATA :: ID => Ok (Self :: COMMAND_INT (COMMAND_INT_DATA :: default ())) , CAMERA_CAPTURE_STATUS_DATA :: ID => Ok (Self :: CAMERA_CAPTURE_STATUS (CAMERA_CAPTURE_STATUS_DATA :: default ())) , RAW_PRESSURE_DATA :: ID => Ok (Self :: RAW_PRESSURE (RAW_PRESSURE_DATA :: default ())) , MISSION_ACK_DATA :: ID => Ok (Self :: MISSION_ACK (MISSION_ACK_DATA :: default ())) , GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: ID => Ok (Self :: GIMBAL_DEVICE_ATTITUDE_STATUS (GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: default ())) , MANUAL_SETPOINT_DATA :: ID => Ok (Self :: MANUAL_SETPOINT (MANUAL_SETPOINT_DATA :: default ())) , RPM_DATA :: ID => Ok (Self :: RPM (RPM_DATA :: default ())) , WATER_DEPTH_DATA :: ID => Ok (Self :: WATER_DEPTH (WATER_DEPTH_DATA :: default ())) , REQUEST_EVENT_DATA :: ID => Ok (Self :: REQUEST_EVENT (REQUEST_EVENT_DATA :: default ())) , DEBUG_VECT_DATA :: ID => Ok (Self :: DEBUG_VECT (DEBUG_VECT_DATA :: default ())) , REMOTE_LOG_BLOCK_STATUS_DATA :: ID => Ok (Self :: REMOTE_LOG_BLOCK_STATUS (REMOTE_LOG_BLOCK_STATUS_DATA :: default ())) , MISSION_REQUEST_INT_DATA :: ID => Ok (Self :: MISSION_REQUEST_INT (MISSION_REQUEST_INT_DATA :: default ())) , NAMED_VALUE_FLOAT_DATA :: ID => Ok (Self :: NAMED_VALUE_FLOAT (NAMED_VALUE_FLOAT_DATA :: default ())) , NAV_CONTROLLER_OUTPUT_DATA :: ID => Ok (Self :: NAV_CONTROLLER_OUTPUT (NAV_CONTROLLER_OUTPUT_DATA :: default ())) , AUTOPILOT_VERSION_REQUEST_DATA :: ID => Ok (Self :: AUTOPILOT_VERSION_REQUEST (AUTOPILOT_VERSION_REQUEST_DATA :: default ())) , HIL_STATE_DATA :: ID => Ok (Self :: HIL_STATE (HIL_STATE_DATA :: default ())) , LOG_REQUEST_END_DATA :: ID => Ok (Self :: LOG_REQUEST_END (LOG_REQUEST_END_DATA :: default ())) , REMOTE_LOG_DATA_BLOCK_DATA :: ID => Ok (Self :: REMOTE_LOG_DATA_BLOCK (REMOTE_LOG_DATA_BLOCK_DATA :: default ())) , PARAM_MAP_RC_DATA :: ID => Ok (Self :: PARAM_MAP_RC (PARAM_MAP_RC_DATA :: default ())) , DEBUG_FLOAT_ARRAY_DATA :: ID => Ok (Self :: DEBUG_FLOAT_ARRAY (DEBUG_FLOAT_ARRAY_DATA :: default ())) , AHRS3_DATA :: ID => Ok (Self :: AHRS3 (AHRS3_DATA :: default ())) , OPEN_DRONE_ID_ARM_STATUS_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_ARM_STATUS (OPEN_DRONE_ID_ARM_STATUS_DATA :: default ())) , OBSTACLE_DISTANCE_3D_DATA :: ID => Ok (Self :: OBSTACLE_DISTANCE_3D (OBSTACLE_DISTANCE_3D_DATA :: default ())) , SUPPORTED_TUNES_DATA :: ID => Ok (Self :: SUPPORTED_TUNES (SUPPORTED_TUNES_DATA :: default ())) , SIMSTATE_DATA :: ID => Ok (Self :: SIMSTATE (SIMSTATE_DATA :: default ())) , CANFD_FRAME_DATA :: ID => Ok (Self :: CANFD_FRAME (CANFD_FRAME_DATA :: default ())) , MISSION_COUNT_DATA :: ID => Ok (Self :: MISSION_COUNT (MISSION_COUNT_DATA :: default ())) , AUTOPILOT_VERSION_DATA :: ID => Ok (Self :: AUTOPILOT_VERSION (AUTOPILOT_VERSION_DATA :: default ())) , OPEN_DRONE_ID_MESSAGE_PACK_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_MESSAGE_PACK (OPEN_DRONE_ID_MESSAGE_PACK_DATA :: default ())) , LOGGING_DATA_ACKED_DATA :: ID => Ok (Self :: LOGGING_DATA_ACKED (LOGGING_DATA_ACKED_DATA :: default ())) , GPS_GLOBAL_ORIGIN_DATA :: ID => Ok (Self :: GPS_GLOBAL_ORIGIN (GPS_GLOBAL_ORIGIN_DATA :: default ())) , GIMBAL_MANAGER_STATUS_DATA :: ID => Ok (Self :: GIMBAL_MANAGER_STATUS (GIMBAL_MANAGER_STATUS_DATA :: default ())) , MISSION_ITEM_DATA :: ID => Ok (Self :: MISSION_ITEM (MISSION_ITEM_DATA :: default ())) , CUBEPILOT_FIRMWARE_UPDATE_START_DATA :: ID => Ok (Self :: CUBEPILOT_FIRMWARE_UPDATE_START (CUBEPILOT_FIRMWARE_UPDATE_START_DATA :: default ())) , AP_ADC_DATA :: ID => Ok (Self :: AP_ADC (AP_ADC_DATA :: default ())) , LINK_NODE_STATUS_DATA :: ID => Ok (Self :: LINK_NODE_STATUS (LINK_NODE_STATUS_DATA :: default ())) , PARAM_EXT_ACK_DATA :: ID => Ok (Self :: PARAM_EXT_ACK (PARAM_EXT_ACK_DATA :: default ())) , VICON_POSITION_ESTIMATE_DATA :: ID => Ok (Self :: VICON_POSITION_ESTIMATE (VICON_POSITION_ESTIMATE_DATA :: default ())) , CAMERA_FOV_STATUS_DATA :: ID => Ok (Self :: CAMERA_FOV_STATUS (CAMERA_FOV_STATUS_DATA :: default ())) , TERRAIN_REPORT_DATA :: ID => Ok (Self :: TERRAIN_REPORT (TERRAIN_REPORT_DATA :: default ())) , ACTUATOR_OUTPUT_STATUS_DATA :: ID => Ok (Self :: ACTUATOR_OUTPUT_STATUS (ACTUATOR_OUTPUT_STATUS_DATA :: default ())) , MESSAGE_INTERVAL_DATA :: ID => Ok (Self :: MESSAGE_INTERVAL (MESSAGE_INTERVAL_DATA :: default ())) , ONBOARD_COMPUTER_STATUS_DATA :: ID => Ok (Self :: ONBOARD_COMPUTER_STATUS (ONBOARD_COMPUTER_STATUS_DATA :: default ())) , UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: ID => Ok (Self :: UAVIONIX_ADSB_OUT_DYNAMIC (UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: default ())) , HERELINK_VIDEO_STREAM_INFORMATION_DATA :: ID => Ok (Self :: HERELINK_VIDEO_STREAM_INFORMATION (HERELINK_VIDEO_STREAM_INFORMATION_DATA :: default ())) , RALLY_POINT_DATA :: ID => Ok (Self :: RALLY_POINT (RALLY_POINT_DATA :: default ())) , UAVCAN_NODE_STATUS_DATA :: ID => Ok (Self :: UAVCAN_NODE_STATUS (UAVCAN_NODE_STATUS_DATA :: default ())) , COMPASSMOT_STATUS_DATA :: ID => Ok (Self :: COMPASSMOT_STATUS (COMPASSMOT_STATUS_DATA :: default ())) , CAMERA_FEEDBACK_DATA :: ID => Ok (Self :: CAMERA_FEEDBACK (CAMERA_FEEDBACK_DATA :: default ())) , RALLY_FETCH_POINT_DATA :: ID => Ok (Self :: RALLY_FETCH_POINT (RALLY_FETCH_POINT_DATA :: default ())) , HIGH_LATENCY2_DATA :: ID => Ok (Self :: HIGH_LATENCY2 (HIGH_LATENCY2_DATA :: default ())) , GOPRO_HEARTBEAT_DATA :: ID => Ok (Self :: GOPRO_HEARTBEAT (GOPRO_HEARTBEAT_DATA :: default ())) , MEMORY_VECT_DATA :: ID => Ok (Self :: MEMORY_VECT (MEMORY_VECT_DATA :: default ())) , CUBEPILOT_FIRMWARE_UPDATE_RESP_DATA :: ID => Ok (Self :: CUBEPILOT_FIRMWARE_UPDATE_RESP (CUBEPILOT_FIRMWARE_UPDATE_RESP_DATA :: default ())) , SET_POSITION_TARGET_GLOBAL_INT_DATA :: ID => Ok (Self :: SET_POSITION_TARGET_GLOBAL_INT (SET_POSITION_TARGET_GLOBAL_INT_DATA :: default ())) , MISSION_ITEM_INT_DATA :: ID => Ok (Self :: MISSION_ITEM_INT (MISSION_ITEM_INT_DATA :: default ())) , SETUP_SIGNING_DATA :: ID => Ok (Self :: SETUP_SIGNING (SETUP_SIGNING_DATA :: default ())) , TERRAIN_DATA_DATA :: ID => Ok (Self :: TERRAIN_DATA (TERRAIN_DATA_DATA :: default ())) , CHANGE_OPERATOR_CONTROL_DATA :: ID => Ok (Self :: CHANGE_OPERATOR_CONTROL (CHANGE_OPERATOR_CONTROL_DATA :: default ())) , MISSION_WRITE_PARTIAL_LIST_DATA :: ID => Ok (Self :: MISSION_WRITE_PARTIAL_LIST (MISSION_WRITE_PARTIAL_LIST_DATA :: default ())) , SERIAL_CONTROL_DATA :: ID => Ok (Self :: SERIAL_CONTROL (SERIAL_CONTROL_DATA :: default ())) , CUBEPILOT_RAW_RC_DATA :: ID => Ok (Self :: CUBEPILOT_RAW_RC (CUBEPILOT_RAW_RC_DATA :: default ())) , FENCE_FETCH_POINT_DATA :: ID => Ok (Self :: FENCE_FETCH_POINT (FENCE_FETCH_POINT_DATA :: default ())) , GOPRO_SET_RESPONSE_DATA :: ID => Ok (Self :: GOPRO_SET_RESPONSE (GOPRO_SET_RESPONSE_DATA :: default ())) , CAMERA_TRIGGER_DATA :: ID => Ok (Self :: CAMERA_TRIGGER (CAMERA_TRIGGER_DATA :: default ())) , VISION_POSITION_DELTA_DATA :: ID => Ok (Self :: VISION_POSITION_DELTA (VISION_POSITION_DELTA_DATA :: default ())) , OPEN_DRONE_ID_LOCATION_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_LOCATION (OPEN_DRONE_ID_LOCATION_DATA :: default ())) , GOPRO_GET_RESPONSE_DATA :: ID => Ok (Self :: GOPRO_GET_RESPONSE (GOPRO_GET_RESPONSE_DATA :: default ())) , SCALED_PRESSURE3_DATA :: ID => Ok (Self :: SCALED_PRESSURE3 (SCALED_PRESSURE3_DATA :: default ())) , SMART_BATTERY_INFO_DATA :: ID => Ok (Self :: SMART_BATTERY_INFO (SMART_BATTERY_INFO_DATA :: default ())) , OPEN_DRONE_ID_OPERATOR_ID_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_OPERATOR_ID (OPEN_DRONE_ID_OPERATOR_ID_DATA :: default ())) , ESC_INFO_DATA :: ID => Ok (Self :: ESC_INFO (ESC_INFO_DATA :: default ())) , STORAGE_INFORMATION_DATA :: ID => Ok (Self :: STORAGE_INFORMATION (STORAGE_INFORMATION_DATA :: default ())) , RADIO_STATUS_DATA :: ID => Ok (Self :: RADIO_STATUS (RADIO_STATUS_DATA :: default ())) , WHEEL_DISTANCE_DATA :: ID => Ok (Self :: WHEEL_DISTANCE (WHEEL_DISTANCE_DATA :: default ())) , FILE_TRANSFER_PROTOCOL_DATA :: ID => Ok (Self :: FILE_TRANSFER_PROTOCOL (FILE_TRANSFER_PROTOCOL_DATA :: default ())) , DEVICE_OP_READ_DATA :: ID => Ok (Self :: DEVICE_OP_READ (DEVICE_OP_READ_DATA :: default ())) , MOUNT_CONTROL_DATA :: ID => Ok (Self :: MOUNT_CONTROL (MOUNT_CONTROL_DATA :: default ())) , BATTERY2_DATA :: ID => Ok (Self :: BATTERY2 (BATTERY2_DATA :: default ())) , OPTICAL_FLOW_RAD_DATA :: ID => Ok (Self :: OPTICAL_FLOW_RAD (OPTICAL_FLOW_RAD_DATA :: default ())) , ESC_TELEMETRY_9_TO_12_DATA :: ID => Ok (Self :: ESC_TELEMETRY_9_TO_12 (ESC_TELEMETRY_9_TO_12_DATA :: default ())) , HIL_OPTICAL_FLOW_DATA :: ID => Ok (Self :: HIL_OPTICAL_FLOW (HIL_OPTICAL_FLOW_DATA :: default ())) , SIM_STATE_DATA :: ID => Ok (Self :: SIM_STATE (SIM_STATE_DATA :: default ())) , VIDEO_STREAM_INFORMATION_DATA :: ID => Ok (Self :: VIDEO_STREAM_INFORMATION (VIDEO_STREAM_INFORMATION_DATA :: default ())) , COMPONENT_INFORMATION_DATA :: ID => Ok (Self :: COMPONENT_INFORMATION (COMPONENT_INFORMATION_DATA :: default ())) , LOG_ERASE_DATA :: ID => Ok (Self :: LOG_ERASE (LOG_ERASE_DATA :: default ())) , SERVO_OUTPUT_RAW_DATA :: ID => Ok (Self :: SERVO_OUTPUT_RAW (SERVO_OUTPUT_RAW_DATA :: default ())) , HYGROMETER_SENSOR_DATA :: ID => Ok (Self :: HYGROMETER_SENSOR (HYGROMETER_SENSOR_DATA :: default ())) , DIGICAM_CONTROL_DATA :: ID => Ok (Self :: DIGICAM_CONTROL (DIGICAM_CONTROL_DATA :: default ())) , ENCAPSULATED_DATA_DATA :: ID => Ok (Self :: ENCAPSULATED_DATA (ENCAPSULATED_DATA_DATA :: default ())) , WIFI_CONFIG_AP_DATA :: ID => Ok (Self :: WIFI_CONFIG_AP (WIFI_CONFIG_AP_DATA :: default ())) , SET_ACTUATOR_CONTROL_TARGET_DATA :: ID => Ok (Self :: SET_ACTUATOR_CONTROL_TARGET (SET_ACTUATOR_CONTROL_TARGET_DATA :: default ())) , SYSTEM_TIME_DATA :: ID => Ok (Self :: SYSTEM_TIME (SYSTEM_TIME_DATA :: default ())) , ISBD_LINK_STATUS_DATA :: ID => Ok (Self :: ISBD_LINK_STATUS (ISBD_LINK_STATUS_DATA :: default ())) , PLAY_TUNE_DATA :: ID => Ok (Self :: PLAY_TUNE (PLAY_TUNE_DATA :: default ())) , ATTITUDE_DATA :: ID => Ok (Self :: ATTITUDE (ATTITUDE_DATA :: default ())) , MAG_CAL_REPORT_DATA :: ID => Ok (Self :: MAG_CAL_REPORT (MAG_CAL_REPORT_DATA :: default ())) , UTM_GLOBAL_POSITION_DATA :: ID => Ok (Self :: UTM_GLOBAL_POSITION (UTM_GLOBAL_POSITION_DATA :: default ())) , LANDING_TARGET_DATA :: ID => Ok (Self :: LANDING_TARGET (LANDING_TARGET_DATA :: default ())) , MISSION_REQUEST_PARTIAL_LIST_DATA :: ID => Ok (Self :: MISSION_REQUEST_PARTIAL_LIST (MISSION_REQUEST_PARTIAL_LIST_DATA :: default ())) , RANGEFINDER_DATA :: ID => Ok (Self :: RANGEFINDER (RANGEFINDER_DATA :: default ())) , MAG_CAL_PROGRESS_DATA :: ID => Ok (Self :: MAG_CAL_PROGRESS (MAG_CAL_PROGRESS_DATA :: default ())) , PID_TUNING_DATA :: ID => Ok (Self :: PID_TUNING (PID_TUNING_DATA :: default ())) , COMMAND_CANCEL_DATA :: ID => Ok (Self :: COMMAND_CANCEL (COMMAND_CANCEL_DATA :: default ())) , DEVICE_OP_WRITE_DATA :: ID => Ok (Self :: DEVICE_OP_WRITE (DEVICE_OP_WRITE_DATA :: default ())) , SCALED_IMU_DATA :: ID => Ok (Self :: SCALED_IMU (SCALED_IMU_DATA :: default ())) , RC_CHANNELS_SCALED_DATA :: ID => Ok (Self :: RC_CHANNELS_SCALED (RC_CHANNELS_SCALED_DATA :: default ())) , VIBRATION_DATA :: ID => Ok (Self :: VIBRATION (VIBRATION_DATA :: default ())) , DEVICE_OP_WRITE_REPLY_DATA :: ID => Ok (Self :: DEVICE_OP_WRITE_REPLY (DEVICE_OP_WRITE_REPLY_DATA :: default ())) , OSD_PARAM_CONFIG_DATA :: ID => Ok (Self :: OSD_PARAM_CONFIG (OSD_PARAM_CONFIG_DATA :: default ())) , ESC_TELEMETRY_5_TO_8_DATA :: ID => Ok (Self :: ESC_TELEMETRY_5_TO_8 (ESC_TELEMETRY_5_TO_8_DATA :: default ())) , PARAM_REQUEST_READ_DATA :: ID => Ok (Self :: PARAM_REQUEST_READ (PARAM_REQUEST_READ_DATA :: default ())) , ATTITUDE_TARGET_DATA :: ID => Ok (Self :: ATTITUDE_TARGET (ATTITUDE_TARGET_DATA :: default ())) , ESC_STATUS_DATA :: ID => Ok (Self :: ESC_STATUS (ESC_STATUS_DATA :: default ())) , CURRENT_EVENT_SEQUENCE_DATA :: ID => Ok (Self :: CURRENT_EVENT_SEQUENCE (CURRENT_EVENT_SEQUENCE_DATA :: default ())) , CAMERA_SETTINGS_DATA :: ID => Ok (Self :: CAMERA_SETTINGS (CAMERA_SETTINGS_DATA :: default ())) , SET_MODE_DATA :: ID => Ok (Self :: SET_MODE (SET_MODE_DATA :: default ())) , GPS_INJECT_DATA_DATA :: ID => Ok (Self :: GPS_INJECT_DATA (GPS_INJECT_DATA_DATA :: default ())) , GIMBAL_MANAGER_SET_PITCHYAW_DATA :: ID => Ok (Self :: GIMBAL_MANAGER_SET_PITCHYAW (GIMBAL_MANAGER_SET_PITCHYAW_DATA :: default ())) , GOPRO_GET_REQUEST_DATA :: ID => Ok (Self :: GOPRO_GET_REQUEST (GOPRO_GET_REQUEST_DATA :: default ())) , GLOBAL_POSITION_INT_COV_DATA :: ID => Ok (Self :: GLOBAL_POSITION_INT_COV (GLOBAL_POSITION_INT_COV_DATA :: default ())) , MOUNT_CONFIGURE_DATA :: ID => Ok (Self :: MOUNT_CONFIGURE (MOUNT_CONFIGURE_DATA :: default ())) , WINCH_STATUS_DATA :: ID => Ok (Self :: WINCH_STATUS (WINCH_STATUS_DATA :: default ())) , TIME_ESTIMATE_TO_TARGET_DATA :: ID => Ok (Self :: TIME_ESTIMATE_TO_TARGET (TIME_ESTIMATE_TO_TARGET_DATA :: default ())) , ESTIMATOR_STATUS_DATA :: ID => Ok (Self :: ESTIMATOR_STATUS (ESTIMATOR_STATUS_DATA :: default ())) , MISSION_SET_CURRENT_DATA :: ID => Ok (Self :: MISSION_SET_CURRENT (MISSION_SET_CURRENT_DATA :: default ())) , LED_CONTROL_DATA :: ID => Ok (Self :: LED_CONTROL (LED_CONTROL_DATA :: default ())) , RADIO_DATA :: ID => Ok (Self :: RADIO (RADIO_DATA :: default ())) , TERRAIN_CHECK_DATA :: ID => Ok (Self :: TERRAIN_CHECK (TERRAIN_CHECK_DATA :: default ())) , MISSION_ITEM_REACHED_DATA :: ID => Ok (Self :: MISSION_ITEM_REACHED (MISSION_ITEM_REACHED_DATA :: default ())) , GPS_RAW_INT_DATA :: ID => Ok (Self :: GPS_RAW_INT (GPS_RAW_INT_DATA :: default ())) , GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: ID => Ok (Self :: GIMBAL_MANAGER_SET_MANUAL_CONTROL (GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: default ())) , EFI_STATUS_DATA :: ID => Ok (Self :: EFI_STATUS (EFI_STATUS_DATA :: default ())) , COMMAND_LONG_DATA :: ID => Ok (Self :: COMMAND_LONG (COMMAND_LONG_DATA :: default ())) , HIL_STATE_QUATERNION_DATA :: ID => Ok (Self :: HIL_STATE_QUATERNION (HIL_STATE_QUATERNION_DATA :: default ())) , BUTTON_CHANGE_DATA :: ID => Ok (Self :: BUTTON_CHANGE (BUTTON_CHANGE_DATA :: default ())) , TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: ID => Ok (Self :: TRAJECTORY_REPRESENTATION_WAYPOINTS (TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: default ())) , RAW_RPM_DATA :: ID => Ok (Self :: RAW_RPM (RAW_RPM_DATA :: default ())) , SCALED_PRESSURE_DATA :: ID => Ok (Self :: SCALED_PRESSURE (SCALED_PRESSURE_DATA :: default ())) , UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: ID => Ok (Self :: UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT (UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: default ())) , SENSOR_OFFSETS_DATA :: ID => Ok (Self :: SENSOR_OFFSETS (SENSOR_OFFSETS_DATA :: default ())) , HIGHRES_IMU_DATA :: ID => Ok (Self :: HIGHRES_IMU (HIGHRES_IMU_DATA :: default ())) , AHRS2_DATA :: ID => Ok (Self :: AHRS2 (AHRS2_DATA :: default ())) , ATTITUDE_QUATERNION_COV_DATA :: ID => Ok (Self :: ATTITUDE_QUATERNION_COV (ATTITUDE_QUATERNION_COV_DATA :: default ())) , MISSION_CURRENT_DATA :: ID => Ok (Self :: MISSION_CURRENT (MISSION_CURRENT_DATA :: default ())) , AIRSPEED_AUTOCAL_DATA :: ID => Ok (Self :: AIRSPEED_AUTOCAL (AIRSPEED_AUTOCAL_DATA :: default ())) , ODOMETRY_DATA :: ID => Ok (Self :: ODOMETRY (ODOMETRY_DATA :: default ())) , ICAROUS_HEARTBEAT_DATA :: ID => Ok (Self :: ICAROUS_HEARTBEAT (ICAROUS_HEARTBEAT_DATA :: default ())) , MEMINFO_DATA :: ID => Ok (Self :: MEMINFO (MEMINFO_DATA :: default ())) , EXTENDED_SYS_STATE_DATA :: ID => Ok (Self :: EXTENDED_SYS_STATE (EXTENDED_SYS_STATE_DATA :: default ())) , TRAJECTORY_REPRESENTATION_BEZIER_DATA :: ID => Ok (Self :: TRAJECTORY_REPRESENTATION_BEZIER (TRAJECTORY_REPRESENTATION_BEZIER_DATA :: default ())) , CAMERA_STATUS_DATA :: ID => Ok (Self :: CAMERA_STATUS (CAMERA_STATUS_DATA :: default ())) , WIND_COV_DATA :: ID => Ok (Self :: WIND_COV (WIND_COV_DATA :: default ())) , AIS_VESSEL_DATA :: ID => Ok (Self :: AIS_VESSEL (AIS_VESSEL_DATA :: default ())) , GPS_INPUT_DATA :: ID => Ok (Self :: GPS_INPUT (GPS_INPUT_DATA :: default ())) , TIMESYNC_DATA :: ID => Ok (Self :: TIMESYNC (TIMESYNC_DATA :: default ())) , SCALED_IMU3_DATA :: ID => Ok (Self :: SCALED_IMU3 (SCALED_IMU3_DATA :: default ())) , ADSB_VEHICLE_DATA :: ID => Ok (Self :: ADSB_VEHICLE (ADSB_VEHICLE_DATA :: default ())) , DEBUG_DATA :: ID => Ok (Self :: DEBUG (DEBUG_DATA :: default ())) , FOLLOW_TARGET_DATA :: ID => Ok (Self :: FOLLOW_TARGET (FOLLOW_TARGET_DATA :: default ())) , VISION_SPEED_ESTIMATE_DATA :: ID => Ok (Self :: VISION_SPEED_ESTIMATE (VISION_SPEED_ESTIMATE_DATA :: default ())) , DIGICAM_CONFIGURE_DATA :: ID => Ok (Self :: DIGICAM_CONFIGURE (DIGICAM_CONFIGURE_DATA :: default ())) , CHANGE_OPERATOR_CONTROL_ACK_DATA :: ID => Ok (Self :: CHANGE_OPERATOR_CONTROL_ACK (CHANGE_OPERATOR_CONTROL_ACK_DATA :: default ())) , MOUNT_STATUS_DATA :: ID => Ok (Self :: MOUNT_STATUS (MOUNT_STATUS_DATA :: default ())) , GPS_RTK_DATA :: ID => Ok (Self :: GPS_RTK (GPS_RTK_DATA :: default ())) , DATA32_DATA :: ID => Ok (Self :: DATA32 (DATA32_DATA :: default ())) , HIL_CONTROLS_DATA :: ID => Ok (Self :: HIL_CONTROLS (HIL_CONTROLS_DATA :: default ())) , DATA96_DATA :: ID => Ok (Self :: DATA96 (DATA96_DATA :: default ())) , SCALED_IMU2_DATA :: ID => Ok (Self :: SCALED_IMU2 (SCALED_IMU2_DATA :: default ())) , DATA_STREAM_DATA :: ID => Ok (Self :: DATA_STREAM (DATA_STREAM_DATA :: default ())) , MOUNT_ORIENTATION_DATA :: ID => Ok (Self :: MOUNT_ORIENTATION (MOUNT_ORIENTATION_DATA :: default ())) , HIGH_LATENCY_DATA :: ID => Ok (Self :: HIGH_LATENCY (HIGH_LATENCY_DATA :: default ())) , GLOBAL_POSITION_INT_DATA :: ID => Ok (Self :: GLOBAL_POSITION_INT (GLOBAL_POSITION_INT_DATA :: default ())) , OSD_PARAM_CONFIG_REPLY_DATA :: ID => Ok (Self :: OSD_PARAM_CONFIG_REPLY (OSD_PARAM_CONFIG_REPLY_DATA :: default ())) , ACTUATOR_CONTROL_TARGET_DATA :: ID => Ok (Self :: ACTUATOR_CONTROL_TARGET (ACTUATOR_CONTROL_TARGET_DATA :: default ())) , OBSTACLE_DISTANCE_DATA :: ID => Ok (Self :: OBSTACLE_DISTANCE (OBSTACLE_DISTANCE_DATA :: default ())) , CAN_FILTER_MODIFY_DATA :: ID => Ok (Self :: CAN_FILTER_MODIFY (CAN_FILTER_MODIFY_DATA :: default ())) , VISION_POSITION_ESTIMATE_DATA :: ID => Ok (Self :: VISION_POSITION_ESTIMATE (VISION_POSITION_ESTIMATE_DATA :: default ())) , STATUSTEXT_DATA :: ID => Ok (Self :: STATUSTEXT (STATUSTEXT_DATA :: default ())) , ATTITUDE_QUATERNION_DATA :: ID => Ok (Self :: ATTITUDE_QUATERNION (ATTITUDE_QUATERNION_DATA :: default ())) , PARAM_SET_DATA :: ID => Ok (Self :: PARAM_SET (PARAM_SET_DATA :: default ())) , TUNNEL_DATA :: ID => Ok (Self :: TUNNEL (TUNNEL_DATA :: default ())) , RC_CHANNELS_RAW_DATA :: ID => Ok (Self :: RC_CHANNELS_RAW (RC_CHANNELS_RAW_DATA :: default ())) , CELLULAR_CONFIG_DATA :: ID => Ok (Self :: CELLULAR_CONFIG (CELLULAR_CONFIG_DATA :: default ())) , GPS_RTCM_DATA_DATA :: ID => Ok (Self :: GPS_RTCM_DATA (GPS_RTCM_DATA_DATA :: default ())) , AUTH_KEY_DATA :: ID => Ok (Self :: AUTH_KEY (AUTH_KEY_DATA :: default ())) , GPS_STATUS_DATA :: ID => Ok (Self :: GPS_STATUS (GPS_STATUS_DATA :: default ())) , RC_CHANNELS_OVERRIDE_DATA :: ID => Ok (Self :: RC_CHANNELS_OVERRIDE (RC_CHANNELS_OVERRIDE_DATA :: default ())) , DEEPSTALL_DATA :: ID => Ok (Self :: DEEPSTALL (DEEPSTALL_DATA :: default ())) , FENCE_STATUS_DATA :: ID => Ok (Self :: FENCE_STATUS (FENCE_STATUS_DATA :: default ())) , BATTERY_STATUS_DATA :: ID => Ok (Self :: BATTERY_STATUS (BATTERY_STATUS_DATA :: default ())) , AOA_SSA_DATA :: ID => Ok (Self :: AOA_SSA (AOA_SSA_DATA :: default ())) , MISSION_CLEAR_ALL_DATA :: ID => Ok (Self :: MISSION_CLEAR_ALL (MISSION_CLEAR_ALL_DATA :: default ())) , SCALED_PRESSURE2_DATA :: ID => Ok (Self :: SCALED_PRESSURE2 (SCALED_PRESSURE2_DATA :: default ())) , DISTANCE_SENSOR_DATA :: ID => Ok (Self :: DISTANCE_SENSOR (DISTANCE_SENSOR_DATA :: default ())) , _ => { Err ("Invalid message id.") } } } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { match self { Self :: LOGGING_ACK (body) => body . ser (version , bytes) , Self :: GENERATOR_STATUS (body) => body . ser (version , bytes) , Self :: VIDEO_STREAM_STATUS (body) => body . ser (version , bytes) , Self :: SET_HOME_POSITION (body) => body . ser (version , bytes) , Self :: LOG_REQUEST_LIST (body) => body . ser (version , bytes) , Self :: VFR_HUD (body) => body . ser (version , bytes) , Self :: HIL_ACTUATOR_CONTROLS (body) => body . ser (version , bytes) , Self :: GLOBAL_VISION_POSITION_ESTIMATE (body) => body . ser (version , bytes) , Self :: UAVCAN_NODE_INFO (body) => body . ser (version , bytes) , Self :: FENCE_POINT (body) => body . ser (version , bytes) , Self :: MISSION_REQUEST (body) => body . ser (version , bytes) , Self :: DATA64 (body) => body . ser (version , bytes) , Self :: GIMBAL_TORQUE_CMD_REPORT (body) => body . ser (version , bytes) , Self :: SYS_STATUS (body) => body . ser (version , bytes) , Self :: MCU_STATUS (body) => body . ser (version , bytes) , Self :: HIL_RC_INPUTS_RAW (body) => body . ser (version , bytes) , Self :: PARAM_REQUEST_LIST (body) => body . ser (version , bytes) , Self :: OSD_PARAM_SHOW_CONFIG (body) => body . ser (version , bytes) , Self :: POSITION_TARGET_GLOBAL_INT (body) => body . ser (version , bytes) , Self :: NAMED_VALUE_INT (body) => body . ser (version , bytes) , Self :: CONTROL_SYSTEM_STATE (body) => body . ser (version , bytes) , Self :: FLIGHT_INFORMATION (body) => body . ser (version , bytes) , Self :: UAVIONIX_ADSB_OUT_CFG (body) => body . ser (version , bytes) , Self :: PLAY_TUNE_V2 (body) => body . ser (version , bytes) , Self :: MANUAL_CONTROL (body) => body . ser (version , bytes) , Self :: ADAP_TUNING (body) => body . ser (version , bytes) , Self :: LOG_REQUEST_DATA (body) => body . ser (version , bytes) , Self :: HIL_SENSOR (body) => body . ser (version , bytes) , Self :: PARAM_EXT_REQUEST_READ (body) => body . ser (version , bytes) , Self :: PARAM_EXT_VALUE (body) => body . ser (version , bytes) , Self :: ICAROUS_KINEMATIC_BANDS (body) => body . ser (version , bytes) , Self :: LIMITS_STATUS (body) => body . ser (version , bytes) , Self :: WIND (body) => body . ser (version , bytes) , Self :: CAMERA_TRACKING_GEO_STATUS (body) => body . ser (version , bytes) , Self :: GPS2_RTK (body) => body . ser (version , bytes) , Self :: HERELINK_TELEM (body) => body . ser (version , bytes) , Self :: GIMBAL_REPORT (body) => body . ser (version , bytes) , Self :: COLLISION (body) => body . ser (version , bytes) , Self :: HEARTBEAT (body) => body . ser (version , bytes) , Self :: ESC_TELEMETRY_1_TO_4 (body) => body . ser (version , bytes) , Self :: RESPONSE_EVENT_ERROR (body) => body . ser (version , bytes) , Self :: SAFETY_SET_ALLOWED_AREA (body) => body . ser (version , bytes) , Self :: LOG_DATA (body) => body . ser (version , bytes) , Self :: LOCAL_POSITION_NED (body) => body . ser (version , bytes) , Self :: ALTITUDE (body) => body . ser (version , bytes) , Self :: GIMBAL_MANAGER_SET_ATTITUDE (body) => body . ser (version , bytes) , Self :: GPS2_RAW (body) => body . ser (version , bytes) , Self :: SET_POSITION_TARGET_LOCAL_NED (body) => body . ser (version , bytes) , Self :: SET_GPS_GLOBAL_ORIGIN (body) => body . ser (version , bytes) , Self :: PARAM_VALUE (body) => body . ser (version , bytes) , Self :: OPTICAL_FLOW (body) => body . ser (version , bytes) , Self :: RC_CHANNELS (body) => body . ser (version , bytes) , Self :: PARAM_EXT_REQUEST_LIST (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_BASIC_ID (body) => body . ser (version , bytes) , Self :: LOCAL_POSITION_NED_COV (body) => body . ser (version , bytes) , Self :: TERRAIN_REQUEST (body) => body . ser (version , bytes) , Self :: DATA_TRANSMISSION_HANDSHAKE (body) => body . ser (version , bytes) , Self :: AHRS (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_SYSTEM (body) => body . ser (version , bytes) , Self :: LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET (body) => body . ser (version , bytes) , Self :: MISSION_REQUEST_LIST (body) => body . ser (version , bytes) , Self :: CAMERA_TRACKING_IMAGE_STATUS (body) => body . ser (version , bytes) , Self :: POSITION_TARGET_LOCAL_NED (body) => body . ser (version , bytes) , Self :: PING (body) => body . ser (version , bytes) , Self :: PARAM_EXT_SET (body) => body . ser (version , bytes) , Self :: GIMBAL_DEVICE_INFORMATION (body) => body . ser (version , bytes) , Self :: AUTOPILOT_STATE_FOR_GIMBAL_DEVICE (body) => body . ser (version , bytes) , Self :: GIMBAL_CONTROL (body) => body . ser (version , bytes) , Self :: EKF_STATUS_REPORT (body) => body . ser (version , bytes) , Self :: OSD_PARAM_SHOW_CONFIG_REPLY (body) => body . ser (version , bytes) , Self :: SET_MAG_OFFSETS (body) => body . ser (version , bytes) , Self :: GIMBAL_DEVICE_SET_ATTITUDE (body) => body . ser (version , bytes) , Self :: DEVICE_OP_READ_REPLY (body) => body . ser (version , bytes) , Self :: GOPRO_SET_REQUEST (body) => body . ser (version , bytes) , Self :: GIMBAL_MANAGER_INFORMATION (body) => body . ser (version , bytes) , Self :: ORBIT_EXECUTION_STATUS (body) => body . ser (version , bytes) , Self :: DATA16 (body) => body . ser (version , bytes) , Self :: COMPONENT_METADATA (body) => body . ser (version , bytes) , Self :: POWER_STATUS (body) => body . ser (version , bytes) , Self :: RESOURCE_REQUEST (body) => body . ser (version , bytes) , Self :: SET_ATTITUDE_TARGET (body) => body . ser (version , bytes) , Self :: COMMAND_ACK (body) => body . ser (version , bytes) , Self :: LOG_ENTRY (body) => body . ser (version , bytes) , Self :: EVENT (body) => body . ser (version , bytes) , Self :: HWSTATUS (body) => body . ser (version , bytes) , Self :: CELLULAR_STATUS (body) => body . ser (version , bytes) , Self :: LOGGING_DATA (body) => body . ser (version , bytes) , Self :: HIL_GPS (body) => body . ser (version , bytes) , Self :: CAN_FRAME (body) => body . ser (version , bytes) , Self :: CAMERA_IMAGE_CAPTURED (body) => body . ser (version , bytes) , Self :: V2_EXTENSION (body) => body . ser (version , bytes) , Self :: SAFETY_ALLOWED_AREA (body) => body . ser (version , bytes) , Self :: PROTOCOL_VERSION (body) => body . ser (version , bytes) , Self :: RAW_IMU (body) => body . ser (version , bytes) , Self :: CAMERA_INFORMATION (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_SYSTEM_UPDATE (body) => body . ser (version , bytes) , Self :: REQUEST_DATA_STREAM (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_SELF_ID (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_AUTHENTICATION (body) => body . ser (version , bytes) , Self :: ATT_POS_MOCAP (body) => body . ser (version , bytes) , Self :: HOME_POSITION (body) => body . ser (version , bytes) , Self :: COMMAND_INT (body) => body . ser (version , bytes) , Self :: CAMERA_CAPTURE_STATUS (body) => body . ser (version , bytes) , Self :: RAW_PRESSURE (body) => body . ser (version , bytes) , Self :: MISSION_ACK (body) => body . ser (version , bytes) , Self :: GIMBAL_DEVICE_ATTITUDE_STATUS (body) => body . ser (version , bytes) , Self :: MANUAL_SETPOINT (body) => body . ser (version , bytes) , Self :: RPM (body) => body . ser (version , bytes) , Self :: WATER_DEPTH (body) => body . ser (version , bytes) , Self :: REQUEST_EVENT (body) => body . ser (version , bytes) , Self :: DEBUG_VECT (body) => body . ser (version , bytes) , Self :: REMOTE_LOG_BLOCK_STATUS (body) => body . ser (version , bytes) , Self :: MISSION_REQUEST_INT (body) => body . ser (version , bytes) , Self :: NAMED_VALUE_FLOAT (body) => body . ser (version , bytes) , Self :: NAV_CONTROLLER_OUTPUT (body) => body . ser (version , bytes) , Self :: AUTOPILOT_VERSION_REQUEST (body) => body . ser (version , bytes) , Self :: HIL_STATE (body) => body . ser (version , bytes) , Self :: LOG_REQUEST_END (body) => body . ser (version , bytes) , Self :: REMOTE_LOG_DATA_BLOCK (body) => body . ser (version , bytes) , Self :: PARAM_MAP_RC (body) => body . ser (version , bytes) , Self :: DEBUG_FLOAT_ARRAY (body) => body . ser (version , bytes) , Self :: AHRS3 (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_ARM_STATUS (body) => body . ser (version , bytes) , Self :: OBSTACLE_DISTANCE_3D (body) => body . ser (version , bytes) , Self :: SUPPORTED_TUNES (body) => body . ser (version , bytes) , Self :: SIMSTATE (body) => body . ser (version , bytes) , Self :: CANFD_FRAME (body) => body . ser (version , bytes) , Self :: MISSION_COUNT (body) => body . ser (version , bytes) , Self :: AUTOPILOT_VERSION (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_MESSAGE_PACK (body) => body . ser (version , bytes) , Self :: LOGGING_DATA_ACKED (body) => body . ser (version , bytes) , Self :: GPS_GLOBAL_ORIGIN (body) => body . ser (version , bytes) , Self :: GIMBAL_MANAGER_STATUS (body) => body . ser (version , bytes) , Self :: MISSION_ITEM (body) => body . ser (version , bytes) , Self :: CUBEPILOT_FIRMWARE_UPDATE_START (body) => body . ser (version , bytes) , Self :: AP_ADC (body) => body . ser (version , bytes) , Self :: LINK_NODE_STATUS (body) => body . ser (version , bytes) , Self :: PARAM_EXT_ACK (body) => body . ser (version , bytes) , Self :: VICON_POSITION_ESTIMATE (body) => body . ser (version , bytes) , Self :: CAMERA_FOV_STATUS (body) => body . ser (version , bytes) , Self :: TERRAIN_REPORT (body) => body . ser (version , bytes) , Self :: ACTUATOR_OUTPUT_STATUS (body) => body . ser (version , bytes) , Self :: MESSAGE_INTERVAL (body) => body . ser (version , bytes) , Self :: ONBOARD_COMPUTER_STATUS (body) => body . ser (version , bytes) , Self :: UAVIONIX_ADSB_OUT_DYNAMIC (body) => body . ser (version , bytes) , Self :: HERELINK_VIDEO_STREAM_INFORMATION (body) => body . ser (version , bytes) , Self :: RALLY_POINT (body) => body . ser (version , bytes) , Self :: UAVCAN_NODE_STATUS (body) => body . ser (version , bytes) , Self :: COMPASSMOT_STATUS (body) => body . ser (version , bytes) , Self :: CAMERA_FEEDBACK (body) => body . ser (version , bytes) , Self :: RALLY_FETCH_POINT (body) => body . ser (version , bytes) , Self :: HIGH_LATENCY2 (body) => body . ser (version , bytes) , Self :: GOPRO_HEARTBEAT (body) => body . ser (version , bytes) , Self :: MEMORY_VECT (body) => body . ser (version , bytes) , Self :: CUBEPILOT_FIRMWARE_UPDATE_RESP (body) => body . ser (version , bytes) , Self :: SET_POSITION_TARGET_GLOBAL_INT (body) => body . ser (version , bytes) , Self :: MISSION_ITEM_INT (body) => body . ser (version , bytes) , Self :: SETUP_SIGNING (body) => body . ser (version , bytes) , Self :: TERRAIN_DATA (body) => body . ser (version , bytes) , Self :: CHANGE_OPERATOR_CONTROL (body) => body . ser (version , bytes) , Self :: MISSION_WRITE_PARTIAL_LIST (body) => body . ser (version , bytes) , Self :: SERIAL_CONTROL (body) => body . ser (version , bytes) , Self :: CUBEPILOT_RAW_RC (body) => body . ser (version , bytes) , Self :: FENCE_FETCH_POINT (body) => body . ser (version , bytes) , Self :: GOPRO_SET_RESPONSE (body) => body . ser (version , bytes) , Self :: CAMERA_TRIGGER (body) => body . ser (version , bytes) , Self :: VISION_POSITION_DELTA (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_LOCATION (body) => body . ser (version , bytes) , Self :: GOPRO_GET_RESPONSE (body) => body . ser (version , bytes) , Self :: SCALED_PRESSURE3 (body) => body . ser (version , bytes) , Self :: SMART_BATTERY_INFO (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_OPERATOR_ID (body) => body . ser (version , bytes) , Self :: ESC_INFO (body) => body . ser (version , bytes) , Self :: STORAGE_INFORMATION (body) => body . ser (version , bytes) , Self :: RADIO_STATUS (body) => body . ser (version , bytes) , Self :: WHEEL_DISTANCE (body) => body . ser (version , bytes) , Self :: FILE_TRANSFER_PROTOCOL (body) => body . ser (version , bytes) , Self :: DEVICE_OP_READ (body) => body . ser (version , bytes) , Self :: MOUNT_CONTROL (body) => body . ser (version , bytes) , Self :: BATTERY2 (body) => body . ser (version , bytes) , Self :: OPTICAL_FLOW_RAD (body) => body . ser (version , bytes) , Self :: ESC_TELEMETRY_9_TO_12 (body) => body . ser (version , bytes) , Self :: HIL_OPTICAL_FLOW (body) => body . ser (version , bytes) , Self :: SIM_STATE (body) => body . ser (version , bytes) , Self :: VIDEO_STREAM_INFORMATION (body) => body . ser (version , bytes) , Self :: COMPONENT_INFORMATION (body) => body . ser (version , bytes) , Self :: LOG_ERASE (body) => body . ser (version , bytes) , Self :: SERVO_OUTPUT_RAW (body) => body . ser (version , bytes) , Self :: HYGROMETER_SENSOR (body) => body . ser (version , bytes) , Self :: DIGICAM_CONTROL (body) => body . ser (version , bytes) , Self :: ENCAPSULATED_DATA (body) => body . ser (version , bytes) , Self :: WIFI_CONFIG_AP (body) => body . ser (version , bytes) , Self :: SET_ACTUATOR_CONTROL_TARGET (body) => body . ser (version , bytes) , Self :: SYSTEM_TIME (body) => body . ser (version , bytes) , Self :: ISBD_LINK_STATUS (body) => body . ser (version , bytes) , Self :: PLAY_TUNE (body) => body . ser (version , bytes) , Self :: ATTITUDE (body) => body . ser (version , bytes) , Self :: MAG_CAL_REPORT (body) => body . ser (version , bytes) , Self :: UTM_GLOBAL_POSITION (body) => body . ser (version , bytes) , Self :: LANDING_TARGET (body) => body . ser (version , bytes) , Self :: MISSION_REQUEST_PARTIAL_LIST (body) => body . ser (version , bytes) , Self :: RANGEFINDER (body) => body . ser (version , bytes) , Self :: MAG_CAL_PROGRESS (body) => body . ser (version , bytes) , Self :: PID_TUNING (body) => body . ser (version , bytes) , Self :: COMMAND_CANCEL (body) => body . ser (version , bytes) , Self :: DEVICE_OP_WRITE (body) => body . ser (version , bytes) , Self :: SCALED_IMU (body) => body . ser (version , bytes) , Self :: RC_CHANNELS_SCALED (body) => body . ser (version , bytes) , Self :: VIBRATION (body) => body . ser (version , bytes) , Self :: DEVICE_OP_WRITE_REPLY (body) => body . ser (version , bytes) , Self :: OSD_PARAM_CONFIG (body) => body . ser (version , bytes) , Self :: ESC_TELEMETRY_5_TO_8 (body) => body . ser (version , bytes) , Self :: PARAM_REQUEST_READ (body) => body . ser (version , bytes) , Self :: ATTITUDE_TARGET (body) => body . ser (version , bytes) , Self :: ESC_STATUS (body) => body . ser (version , bytes) , Self :: CURRENT_EVENT_SEQUENCE (body) => body . ser (version , bytes) , Self :: CAMERA_SETTINGS (body) => body . ser (version , bytes) , Self :: SET_MODE (body) => body . ser (version , bytes) , Self :: GPS_INJECT_DATA (body) => body . ser (version , bytes) , Self :: GIMBAL_MANAGER_SET_PITCHYAW (body) => body . ser (version , bytes) , Self :: GOPRO_GET_REQUEST (body) => body . ser (version , bytes) , Self :: GLOBAL_POSITION_INT_COV (body) => body . ser (version , bytes) , Self :: MOUNT_CONFIGURE (body) => body . ser (version , bytes) , Self :: WINCH_STATUS (body) => body . ser (version , bytes) , Self :: TIME_ESTIMATE_TO_TARGET (body) => body . ser (version , bytes) , Self :: ESTIMATOR_STATUS (body) => body . ser (version , bytes) , Self :: MISSION_SET_CURRENT (body) => body . ser (version , bytes) , Self :: LED_CONTROL (body) => body . ser (version , bytes) , Self :: RADIO (body) => body . ser (version , bytes) , Self :: TERRAIN_CHECK (body) => body . ser (version , bytes) , Self :: MISSION_ITEM_REACHED (body) => body . ser (version , bytes) , Self :: GPS_RAW_INT (body) => body . ser (version , bytes) , Self :: GIMBAL_MANAGER_SET_MANUAL_CONTROL (body) => body . ser (version , bytes) , Self :: EFI_STATUS (body) => body . ser (version , bytes) , Self :: COMMAND_LONG (body) => body . ser (version , bytes) , Self :: HIL_STATE_QUATERNION (body) => body . ser (version , bytes) , Self :: BUTTON_CHANGE (body) => body . ser (version , bytes) , Self :: TRAJECTORY_REPRESENTATION_WAYPOINTS (body) => body . ser (version , bytes) , Self :: RAW_RPM (body) => body . ser (version , bytes) , Self :: SCALED_PRESSURE (body) => body . ser (version , bytes) , Self :: UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT (body) => body . ser (version , bytes) , Self :: SENSOR_OFFSETS (body) => body . ser (version , bytes) , Self :: HIGHRES_IMU (body) => body . ser (version , bytes) , Self :: AHRS2 (body) => body . ser (version , bytes) , Self :: ATTITUDE_QUATERNION_COV (body) => body . ser (version , bytes) , Self :: MISSION_CURRENT (body) => body . ser (version , bytes) , Self :: AIRSPEED_AUTOCAL (body) => body . ser (version , bytes) , Self :: ODOMETRY (body) => body . ser (version , bytes) , Self :: ICAROUS_HEARTBEAT (body) => body . ser (version , bytes) , Self :: MEMINFO (body) => body . ser (version , bytes) , Self :: EXTENDED_SYS_STATE (body) => body . ser (version , bytes) , Self :: TRAJECTORY_REPRESENTATION_BEZIER (body) => body . ser (version , bytes) , Self :: CAMERA_STATUS (body) => body . ser (version , bytes) , Self :: WIND_COV (body) => body . ser (version , bytes) , Self :: AIS_VESSEL (body) => body . ser (version , bytes) , Self :: GPS_INPUT (body) => body . ser (version , bytes) , Self :: TIMESYNC (body) => body . ser (version , bytes) , Self :: SCALED_IMU3 (body) => body . ser (version , bytes) , Self :: ADSB_VEHICLE (body) => body . ser (version , bytes) , Self :: DEBUG (body) => body . ser (version , bytes) , Self :: FOLLOW_TARGET (body) => body . ser (version , bytes) , Self :: VISION_SPEED_ESTIMATE (body) => body . ser (version , bytes) , Self :: DIGICAM_CONFIGURE (body) => body . ser (version , bytes) , Self :: CHANGE_OPERATOR_CONTROL_ACK (body) => body . ser (version , bytes) , Self :: MOUNT_STATUS (body) => body . ser (version , bytes) , Self :: GPS_RTK (body) => body . ser (version , bytes) , Self :: DATA32 (body) => body . ser (version , bytes) , Self :: HIL_CONTROLS (body) => body . ser (version , bytes) , Self :: DATA96 (body) => body . ser (version , bytes) , Self :: SCALED_IMU2 (body) => body . ser (version , bytes) , Self :: DATA_STREAM (body) => body . ser (version , bytes) , Self :: MOUNT_ORIENTATION (body) => body . ser (version , bytes) , Self :: HIGH_LATENCY (body) => body . ser (version , bytes) , Self :: GLOBAL_POSITION_INT (body) => body . ser (version , bytes) , Self :: OSD_PARAM_CONFIG_REPLY (body) => body . ser (version , bytes) , Self :: ACTUATOR_CONTROL_TARGET (body) => body . ser (version , bytes) , Self :: OBSTACLE_DISTANCE (body) => body . ser (version , bytes) , Self :: CAN_FILTER_MODIFY (body) => body . ser (version , bytes) , Self :: VISION_POSITION_ESTIMATE (body) => body . ser (version , bytes) , Self :: STATUSTEXT (body) => body . ser (version , bytes) , Self :: ATTITUDE_QUATERNION (body) => body . ser (version , bytes) , Self :: PARAM_SET (body) => body . ser (version , bytes) , Self :: TUNNEL (body) => body . ser (version , bytes) , Self :: RC_CHANNELS_RAW (body) => body . ser (version , bytes) , Self :: CELLULAR_CONFIG (body) => body . ser (version , bytes) , Self :: GPS_RTCM_DATA (body) => body . ser (version , bytes) , Self :: AUTH_KEY (body) => body . ser (version , bytes) , Self :: GPS_STATUS (body) => body . ser (version , bytes) , Self :: RC_CHANNELS_OVERRIDE (body) => body . ser (version , bytes) , Self :: DEEPSTALL (body) => body . ser (version , bytes) , Self :: FENCE_STATUS (body) => body . ser (version , bytes) , Self :: BATTERY_STATUS (body) => body . ser (version , bytes) , Self :: AOA_SSA (body) => body . ser (version , bytes) , Self :: MISSION_CLEAR_ALL (body) => body . ser (version , bytes) , Self :: SCALED_PRESSURE2 (body) => body . ser (version , bytes) , Self :: DISTANCE_SENSOR (body) => body . ser (version , bytes) , } } fn extra_crc (id : u32) -> u8 { match id { LOGGING_ACK_DATA :: ID => LOGGING_ACK_DATA :: EXTRA_CRC , GENERATOR_STATUS_DATA :: ID => GENERATOR_STATUS_DATA :: EXTRA_CRC , VIDEO_STREAM_STATUS_DATA :: ID => VIDEO_STREAM_STATUS_DATA :: EXTRA_CRC , SET_HOME_POSITION_DATA :: ID => SET_HOME_POSITION_DATA :: EXTRA_CRC , LOG_REQUEST_LIST_DATA :: ID => LOG_REQUEST_LIST_DATA :: EXTRA_CRC , VFR_HUD_DATA :: ID => VFR_HUD_DATA :: EXTRA_CRC , HIL_ACTUATOR_CONTROLS_DATA :: ID => HIL_ACTUATOR_CONTROLS_DATA :: EXTRA_CRC , GLOBAL_VISION_POSITION_ESTIMATE_DATA :: ID => GLOBAL_VISION_POSITION_ESTIMATE_DATA :: EXTRA_CRC , UAVCAN_NODE_INFO_DATA :: ID => UAVCAN_NODE_INFO_DATA :: EXTRA_CRC , FENCE_POINT_DATA :: ID => FENCE_POINT_DATA :: EXTRA_CRC , MISSION_REQUEST_DATA :: ID => MISSION_REQUEST_DATA :: EXTRA_CRC , DATA64_DATA :: ID => DATA64_DATA :: EXTRA_CRC , GIMBAL_TORQUE_CMD_REPORT_DATA :: ID => GIMBAL_TORQUE_CMD_REPORT_DATA :: EXTRA_CRC , SYS_STATUS_DATA :: ID => SYS_STATUS_DATA :: EXTRA_CRC , MCU_STATUS_DATA :: ID => MCU_STATUS_DATA :: EXTRA_CRC , HIL_RC_INPUTS_RAW_DATA :: ID => HIL_RC_INPUTS_RAW_DATA :: EXTRA_CRC , PARAM_REQUEST_LIST_DATA :: ID => PARAM_REQUEST_LIST_DATA :: EXTRA_CRC , OSD_PARAM_SHOW_CONFIG_DATA :: ID => OSD_PARAM_SHOW_CONFIG_DATA :: EXTRA_CRC , POSITION_TARGET_GLOBAL_INT_DATA :: ID => POSITION_TARGET_GLOBAL_INT_DATA :: EXTRA_CRC , NAMED_VALUE_INT_DATA :: ID => NAMED_VALUE_INT_DATA :: EXTRA_CRC , CONTROL_SYSTEM_STATE_DATA :: ID => CONTROL_SYSTEM_STATE_DATA :: EXTRA_CRC , FLIGHT_INFORMATION_DATA :: ID => FLIGHT_INFORMATION_DATA :: EXTRA_CRC , UAVIONIX_ADSB_OUT_CFG_DATA :: ID => UAVIONIX_ADSB_OUT_CFG_DATA :: EXTRA_CRC , PLAY_TUNE_V2_DATA :: ID => PLAY_TUNE_V2_DATA :: EXTRA_CRC , MANUAL_CONTROL_DATA :: ID => MANUAL_CONTROL_DATA :: EXTRA_CRC , ADAP_TUNING_DATA :: ID => ADAP_TUNING_DATA :: EXTRA_CRC , LOG_REQUEST_DATA_DATA :: ID => LOG_REQUEST_DATA_DATA :: EXTRA_CRC , HIL_SENSOR_DATA :: ID => HIL_SENSOR_DATA :: EXTRA_CRC , PARAM_EXT_REQUEST_READ_DATA :: ID => PARAM_EXT_REQUEST_READ_DATA :: EXTRA_CRC , PARAM_EXT_VALUE_DATA :: ID => PARAM_EXT_VALUE_DATA :: EXTRA_CRC , ICAROUS_KINEMATIC_BANDS_DATA :: ID => ICAROUS_KINEMATIC_BANDS_DATA :: EXTRA_CRC , LIMITS_STATUS_DATA :: ID => LIMITS_STATUS_DATA :: EXTRA_CRC , WIND_DATA :: ID => WIND_DATA :: EXTRA_CRC , CAMERA_TRACKING_GEO_STATUS_DATA :: ID => CAMERA_TRACKING_GEO_STATUS_DATA :: EXTRA_CRC , GPS2_RTK_DATA :: ID => GPS2_RTK_DATA :: EXTRA_CRC , HERELINK_TELEM_DATA :: ID => HERELINK_TELEM_DATA :: EXTRA_CRC , GIMBAL_REPORT_DATA :: ID => GIMBAL_REPORT_DATA :: EXTRA_CRC , COLLISION_DATA :: ID => COLLISION_DATA :: EXTRA_CRC , HEARTBEAT_DATA :: ID => HEARTBEAT_DATA :: EXTRA_CRC , ESC_TELEMETRY_1_TO_4_DATA :: ID => ESC_TELEMETRY_1_TO_4_DATA :: EXTRA_CRC , RESPONSE_EVENT_ERROR_DATA :: ID => RESPONSE_EVENT_ERROR_DATA :: EXTRA_CRC , SAFETY_SET_ALLOWED_AREA_DATA :: ID => SAFETY_SET_ALLOWED_AREA_DATA :: EXTRA_CRC , LOG_DATA_DATA :: ID => LOG_DATA_DATA :: EXTRA_CRC , LOCAL_POSITION_NED_DATA :: ID => LOCAL_POSITION_NED_DATA :: EXTRA_CRC , ALTITUDE_DATA :: ID => ALTITUDE_DATA :: EXTRA_CRC , GIMBAL_MANAGER_SET_ATTITUDE_DATA :: ID => GIMBAL_MANAGER_SET_ATTITUDE_DATA :: EXTRA_CRC , GPS2_RAW_DATA :: ID => GPS2_RAW_DATA :: EXTRA_CRC , SET_POSITION_TARGET_LOCAL_NED_DATA :: ID => SET_POSITION_TARGET_LOCAL_NED_DATA :: EXTRA_CRC , SET_GPS_GLOBAL_ORIGIN_DATA :: ID => SET_GPS_GLOBAL_ORIGIN_DATA :: EXTRA_CRC , PARAM_VALUE_DATA :: ID => PARAM_VALUE_DATA :: EXTRA_CRC , OPTICAL_FLOW_DATA :: ID => OPTICAL_FLOW_DATA :: EXTRA_CRC , RC_CHANNELS_DATA :: ID => RC_CHANNELS_DATA :: EXTRA_CRC , PARAM_EXT_REQUEST_LIST_DATA :: ID => PARAM_EXT_REQUEST_LIST_DATA :: EXTRA_CRC , OPEN_DRONE_ID_BASIC_ID_DATA :: ID => OPEN_DRONE_ID_BASIC_ID_DATA :: EXTRA_CRC , LOCAL_POSITION_NED_COV_DATA :: ID => LOCAL_POSITION_NED_COV_DATA :: EXTRA_CRC , TERRAIN_REQUEST_DATA :: ID => TERRAIN_REQUEST_DATA :: EXTRA_CRC , DATA_TRANSMISSION_HANDSHAKE_DATA :: ID => DATA_TRANSMISSION_HANDSHAKE_DATA :: EXTRA_CRC , AHRS_DATA :: ID => AHRS_DATA :: EXTRA_CRC , OPEN_DRONE_ID_SYSTEM_DATA :: ID => OPEN_DRONE_ID_SYSTEM_DATA :: EXTRA_CRC , LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: ID => LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: EXTRA_CRC , MISSION_REQUEST_LIST_DATA :: ID => MISSION_REQUEST_LIST_DATA :: EXTRA_CRC , CAMERA_TRACKING_IMAGE_STATUS_DATA :: ID => CAMERA_TRACKING_IMAGE_STATUS_DATA :: EXTRA_CRC , POSITION_TARGET_LOCAL_NED_DATA :: ID => POSITION_TARGET_LOCAL_NED_DATA :: EXTRA_CRC , PING_DATA :: ID => PING_DATA :: EXTRA_CRC , PARAM_EXT_SET_DATA :: ID => PARAM_EXT_SET_DATA :: EXTRA_CRC , GIMBAL_DEVICE_INFORMATION_DATA :: ID => GIMBAL_DEVICE_INFORMATION_DATA :: EXTRA_CRC , AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: ID => AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: EXTRA_CRC , GIMBAL_CONTROL_DATA :: ID => GIMBAL_CONTROL_DATA :: EXTRA_CRC , EKF_STATUS_REPORT_DATA :: ID => EKF_STATUS_REPORT_DATA :: EXTRA_CRC , OSD_PARAM_SHOW_CONFIG_REPLY_DATA :: ID => OSD_PARAM_SHOW_CONFIG_REPLY_DATA :: EXTRA_CRC , SET_MAG_OFFSETS_DATA :: ID => SET_MAG_OFFSETS_DATA :: EXTRA_CRC , GIMBAL_DEVICE_SET_ATTITUDE_DATA :: ID => GIMBAL_DEVICE_SET_ATTITUDE_DATA :: EXTRA_CRC , DEVICE_OP_READ_REPLY_DATA :: ID => DEVICE_OP_READ_REPLY_DATA :: EXTRA_CRC , GOPRO_SET_REQUEST_DATA :: ID => GOPRO_SET_REQUEST_DATA :: EXTRA_CRC , GIMBAL_MANAGER_INFORMATION_DATA :: ID => GIMBAL_MANAGER_INFORMATION_DATA :: EXTRA_CRC , ORBIT_EXECUTION_STATUS_DATA :: ID => ORBIT_EXECUTION_STATUS_DATA :: EXTRA_CRC , DATA16_DATA :: ID => DATA16_DATA :: EXTRA_CRC , COMPONENT_METADATA_DATA :: ID => COMPONENT_METADATA_DATA :: EXTRA_CRC , POWER_STATUS_DATA :: ID => POWER_STATUS_DATA :: EXTRA_CRC , RESOURCE_REQUEST_DATA :: ID => RESOURCE_REQUEST_DATA :: EXTRA_CRC , SET_ATTITUDE_TARGET_DATA :: ID => SET_ATTITUDE_TARGET_DATA :: EXTRA_CRC , COMMAND_ACK_DATA :: ID => COMMAND_ACK_DATA :: EXTRA_CRC , LOG_ENTRY_DATA :: ID => LOG_ENTRY_DATA :: EXTRA_CRC , EVENT_DATA :: ID => EVENT_DATA :: EXTRA_CRC , HWSTATUS_DATA :: ID => HWSTATUS_DATA :: EXTRA_CRC , CELLULAR_STATUS_DATA :: ID => CELLULAR_STATUS_DATA :: EXTRA_CRC , LOGGING_DATA_DATA :: ID => LOGGING_DATA_DATA :: EXTRA_CRC , HIL_GPS_DATA :: ID => HIL_GPS_DATA :: EXTRA_CRC , CAN_FRAME_DATA :: ID => CAN_FRAME_DATA :: EXTRA_CRC , CAMERA_IMAGE_CAPTURED_DATA :: ID => CAMERA_IMAGE_CAPTURED_DATA :: EXTRA_CRC , V2_EXTENSION_DATA :: ID => V2_EXTENSION_DATA :: EXTRA_CRC , SAFETY_ALLOWED_AREA_DATA :: ID => SAFETY_ALLOWED_AREA_DATA :: EXTRA_CRC , PROTOCOL_VERSION_DATA :: ID => PROTOCOL_VERSION_DATA :: EXTRA_CRC , RAW_IMU_DATA :: ID => RAW_IMU_DATA :: EXTRA_CRC , CAMERA_INFORMATION_DATA :: ID => CAMERA_INFORMATION_DATA :: EXTRA_CRC , OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: ID => OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: EXTRA_CRC , REQUEST_DATA_STREAM_DATA :: ID => REQUEST_DATA_STREAM_DATA :: EXTRA_CRC , OPEN_DRONE_ID_SELF_ID_DATA :: ID => OPEN_DRONE_ID_SELF_ID_DATA :: EXTRA_CRC , OPEN_DRONE_ID_AUTHENTICATION_DATA :: ID => OPEN_DRONE_ID_AUTHENTICATION_DATA :: EXTRA_CRC , ATT_POS_MOCAP_DATA :: ID => ATT_POS_MOCAP_DATA :: EXTRA_CRC , HOME_POSITION_DATA :: ID => HOME_POSITION_DATA :: EXTRA_CRC , COMMAND_INT_DATA :: ID => COMMAND_INT_DATA :: EXTRA_CRC , CAMERA_CAPTURE_STATUS_DATA :: ID => CAMERA_CAPTURE_STATUS_DATA :: EXTRA_CRC , RAW_PRESSURE_DATA :: ID => RAW_PRESSURE_DATA :: EXTRA_CRC , MISSION_ACK_DATA :: ID => MISSION_ACK_DATA :: EXTRA_CRC , GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: ID => GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: EXTRA_CRC , MANUAL_SETPOINT_DATA :: ID => MANUAL_SETPOINT_DATA :: EXTRA_CRC , RPM_DATA :: ID => RPM_DATA :: EXTRA_CRC , WATER_DEPTH_DATA :: ID => WATER_DEPTH_DATA :: EXTRA_CRC , REQUEST_EVENT_DATA :: ID => REQUEST_EVENT_DATA :: EXTRA_CRC , DEBUG_VECT_DATA :: ID => DEBUG_VECT_DATA :: EXTRA_CRC , REMOTE_LOG_BLOCK_STATUS_DATA :: ID => REMOTE_LOG_BLOCK_STATUS_DATA :: EXTRA_CRC , MISSION_REQUEST_INT_DATA :: ID => MISSION_REQUEST_INT_DATA :: EXTRA_CRC , NAMED_VALUE_FLOAT_DATA :: ID => NAMED_VALUE_FLOAT_DATA :: EXTRA_CRC , NAV_CONTROLLER_OUTPUT_DATA :: ID => NAV_CONTROLLER_OUTPUT_DATA :: EXTRA_CRC , AUTOPILOT_VERSION_REQUEST_DATA :: ID => AUTOPILOT_VERSION_REQUEST_DATA :: EXTRA_CRC , HIL_STATE_DATA :: ID => HIL_STATE_DATA :: EXTRA_CRC , LOG_REQUEST_END_DATA :: ID => LOG_REQUEST_END_DATA :: EXTRA_CRC , REMOTE_LOG_DATA_BLOCK_DATA :: ID => REMOTE_LOG_DATA_BLOCK_DATA :: EXTRA_CRC , PARAM_MAP_RC_DATA :: ID => PARAM_MAP_RC_DATA :: EXTRA_CRC , DEBUG_FLOAT_ARRAY_DATA :: ID => DEBUG_FLOAT_ARRAY_DATA :: EXTRA_CRC , AHRS3_DATA :: ID => AHRS3_DATA :: EXTRA_CRC , OPEN_DRONE_ID_ARM_STATUS_DATA :: ID => OPEN_DRONE_ID_ARM_STATUS_DATA :: EXTRA_CRC , OBSTACLE_DISTANCE_3D_DATA :: ID => OBSTACLE_DISTANCE_3D_DATA :: EXTRA_CRC , SUPPORTED_TUNES_DATA :: ID => SUPPORTED_TUNES_DATA :: EXTRA_CRC , SIMSTATE_DATA :: ID => SIMSTATE_DATA :: EXTRA_CRC , CANFD_FRAME_DATA :: ID => CANFD_FRAME_DATA :: EXTRA_CRC , MISSION_COUNT_DATA :: ID => MISSION_COUNT_DATA :: EXTRA_CRC , AUTOPILOT_VERSION_DATA :: ID => AUTOPILOT_VERSION_DATA :: EXTRA_CRC , OPEN_DRONE_ID_MESSAGE_PACK_DATA :: ID => OPEN_DRONE_ID_MESSAGE_PACK_DATA :: EXTRA_CRC , LOGGING_DATA_ACKED_DATA :: ID => LOGGING_DATA_ACKED_DATA :: EXTRA_CRC , GPS_GLOBAL_ORIGIN_DATA :: ID => GPS_GLOBAL_ORIGIN_DATA :: EXTRA_CRC , GIMBAL_MANAGER_STATUS_DATA :: ID => GIMBAL_MANAGER_STATUS_DATA :: EXTRA_CRC , MISSION_ITEM_DATA :: ID => MISSION_ITEM_DATA :: EXTRA_CRC , CUBEPILOT_FIRMWARE_UPDATE_START_DATA :: ID => CUBEPILOT_FIRMWARE_UPDATE_START_DATA :: EXTRA_CRC , AP_ADC_DATA :: ID => AP_ADC_DATA :: EXTRA_CRC , LINK_NODE_STATUS_DATA :: ID => LINK_NODE_STATUS_DATA :: EXTRA_CRC , PARAM_EXT_ACK_DATA :: ID => PARAM_EXT_ACK_DATA :: EXTRA_CRC , VICON_POSITION_ESTIMATE_DATA :: ID => VICON_POSITION_ESTIMATE_DATA :: EXTRA_CRC , CAMERA_FOV_STATUS_DATA :: ID => CAMERA_FOV_STATUS_DATA :: EXTRA_CRC , TERRAIN_REPORT_DATA :: ID => TERRAIN_REPORT_DATA :: EXTRA_CRC , ACTUATOR_OUTPUT_STATUS_DATA :: ID => ACTUATOR_OUTPUT_STATUS_DATA :: EXTRA_CRC , MESSAGE_INTERVAL_DATA :: ID => MESSAGE_INTERVAL_DATA :: EXTRA_CRC , ONBOARD_COMPUTER_STATUS_DATA :: ID => ONBOARD_COMPUTER_STATUS_DATA :: EXTRA_CRC , UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: ID => UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: EXTRA_CRC , HERELINK_VIDEO_STREAM_INFORMATION_DATA :: ID => HERELINK_VIDEO_STREAM_INFORMATION_DATA :: EXTRA_CRC , RALLY_POINT_DATA :: ID => RALLY_POINT_DATA :: EXTRA_CRC , UAVCAN_NODE_STATUS_DATA :: ID => UAVCAN_NODE_STATUS_DATA :: EXTRA_CRC , COMPASSMOT_STATUS_DATA :: ID => COMPASSMOT_STATUS_DATA :: EXTRA_CRC , CAMERA_FEEDBACK_DATA :: ID => CAMERA_FEEDBACK_DATA :: EXTRA_CRC , RALLY_FETCH_POINT_DATA :: ID => RALLY_FETCH_POINT_DATA :: EXTRA_CRC , HIGH_LATENCY2_DATA :: ID => HIGH_LATENCY2_DATA :: EXTRA_CRC , GOPRO_HEARTBEAT_DATA :: ID => GOPRO_HEARTBEAT_DATA :: EXTRA_CRC , MEMORY_VECT_DATA :: ID => MEMORY_VECT_DATA :: EXTRA_CRC , CUBEPILOT_FIRMWARE_UPDATE_RESP_DATA :: ID => CUBEPILOT_FIRMWARE_UPDATE_RESP_DATA :: EXTRA_CRC , SET_POSITION_TARGET_GLOBAL_INT_DATA :: ID => SET_POSITION_TARGET_GLOBAL_INT_DATA :: EXTRA_CRC , MISSION_ITEM_INT_DATA :: ID => MISSION_ITEM_INT_DATA :: EXTRA_CRC , SETUP_SIGNING_DATA :: ID => SETUP_SIGNING_DATA :: EXTRA_CRC , TERRAIN_DATA_DATA :: ID => TERRAIN_DATA_DATA :: EXTRA_CRC , CHANGE_OPERATOR_CONTROL_DATA :: ID => CHANGE_OPERATOR_CONTROL_DATA :: EXTRA_CRC , MISSION_WRITE_PARTIAL_LIST_DATA :: ID => MISSION_WRITE_PARTIAL_LIST_DATA :: EXTRA_CRC , SERIAL_CONTROL_DATA :: ID => SERIAL_CONTROL_DATA :: EXTRA_CRC , CUBEPILOT_RAW_RC_DATA :: ID => CUBEPILOT_RAW_RC_DATA :: EXTRA_CRC , FENCE_FETCH_POINT_DATA :: ID => FENCE_FETCH_POINT_DATA :: EXTRA_CRC , GOPRO_SET_RESPONSE_DATA :: ID => GOPRO_SET_RESPONSE_DATA :: EXTRA_CRC , CAMERA_TRIGGER_DATA :: ID => CAMERA_TRIGGER_DATA :: EXTRA_CRC , VISION_POSITION_DELTA_DATA :: ID => VISION_POSITION_DELTA_DATA :: EXTRA_CRC , OPEN_DRONE_ID_LOCATION_DATA :: ID => OPEN_DRONE_ID_LOCATION_DATA :: EXTRA_CRC , GOPRO_GET_RESPONSE_DATA :: ID => GOPRO_GET_RESPONSE_DATA :: EXTRA_CRC , SCALED_PRESSURE3_DATA :: ID => SCALED_PRESSURE3_DATA :: EXTRA_CRC , SMART_BATTERY_INFO_DATA :: ID => SMART_BATTERY_INFO_DATA :: EXTRA_CRC , OPEN_DRONE_ID_OPERATOR_ID_DATA :: ID => OPEN_DRONE_ID_OPERATOR_ID_DATA :: EXTRA_CRC , ESC_INFO_DATA :: ID => ESC_INFO_DATA :: EXTRA_CRC , STORAGE_INFORMATION_DATA :: ID => STORAGE_INFORMATION_DATA :: EXTRA_CRC , RADIO_STATUS_DATA :: ID => RADIO_STATUS_DATA :: EXTRA_CRC , WHEEL_DISTANCE_DATA :: ID => WHEEL_DISTANCE_DATA :: EXTRA_CRC , FILE_TRANSFER_PROTOCOL_DATA :: ID => FILE_TRANSFER_PROTOCOL_DATA :: EXTRA_CRC , DEVICE_OP_READ_DATA :: ID => DEVICE_OP_READ_DATA :: EXTRA_CRC , MOUNT_CONTROL_DATA :: ID => MOUNT_CONTROL_DATA :: EXTRA_CRC , BATTERY2_DATA :: ID => BATTERY2_DATA :: EXTRA_CRC , OPTICAL_FLOW_RAD_DATA :: ID => OPTICAL_FLOW_RAD_DATA :: EXTRA_CRC , ESC_TELEMETRY_9_TO_12_DATA :: ID => ESC_TELEMETRY_9_TO_12_DATA :: EXTRA_CRC , HIL_OPTICAL_FLOW_DATA :: ID => HIL_OPTICAL_FLOW_DATA :: EXTRA_CRC , SIM_STATE_DATA :: ID => SIM_STATE_DATA :: EXTRA_CRC , VIDEO_STREAM_INFORMATION_DATA :: ID => VIDEO_STREAM_INFORMATION_DATA :: EXTRA_CRC , COMPONENT_INFORMATION_DATA :: ID => COMPONENT_INFORMATION_DATA :: EXTRA_CRC , LOG_ERASE_DATA :: ID => LOG_ERASE_DATA :: EXTRA_CRC , SERVO_OUTPUT_RAW_DATA :: ID => SERVO_OUTPUT_RAW_DATA :: EXTRA_CRC , HYGROMETER_SENSOR_DATA :: ID => HYGROMETER_SENSOR_DATA :: EXTRA_CRC , DIGICAM_CONTROL_DATA :: ID => DIGICAM_CONTROL_DATA :: EXTRA_CRC , ENCAPSULATED_DATA_DATA :: ID => ENCAPSULATED_DATA_DATA :: EXTRA_CRC , WIFI_CONFIG_AP_DATA :: ID => WIFI_CONFIG_AP_DATA :: EXTRA_CRC , SET_ACTUATOR_CONTROL_TARGET_DATA :: ID => SET_ACTUATOR_CONTROL_TARGET_DATA :: EXTRA_CRC , SYSTEM_TIME_DATA :: ID => SYSTEM_TIME_DATA :: EXTRA_CRC , ISBD_LINK_STATUS_DATA :: ID => ISBD_LINK_STATUS_DATA :: EXTRA_CRC , PLAY_TUNE_DATA :: ID => PLAY_TUNE_DATA :: EXTRA_CRC , ATTITUDE_DATA :: ID => ATTITUDE_DATA :: EXTRA_CRC , MAG_CAL_REPORT_DATA :: ID => MAG_CAL_REPORT_DATA :: EXTRA_CRC , UTM_GLOBAL_POSITION_DATA :: ID => UTM_GLOBAL_POSITION_DATA :: EXTRA_CRC , LANDING_TARGET_DATA :: ID => LANDING_TARGET_DATA :: EXTRA_CRC , MISSION_REQUEST_PARTIAL_LIST_DATA :: ID => MISSION_REQUEST_PARTIAL_LIST_DATA :: EXTRA_CRC , RANGEFINDER_DATA :: ID => RANGEFINDER_DATA :: EXTRA_CRC , MAG_CAL_PROGRESS_DATA :: ID => MAG_CAL_PROGRESS_DATA :: EXTRA_CRC , PID_TUNING_DATA :: ID => PID_TUNING_DATA :: EXTRA_CRC , COMMAND_CANCEL_DATA :: ID => COMMAND_CANCEL_DATA :: EXTRA_CRC , DEVICE_OP_WRITE_DATA :: ID => DEVICE_OP_WRITE_DATA :: EXTRA_CRC , SCALED_IMU_DATA :: ID => SCALED_IMU_DATA :: EXTRA_CRC , RC_CHANNELS_SCALED_DATA :: ID => RC_CHANNELS_SCALED_DATA :: EXTRA_CRC , VIBRATION_DATA :: ID => VIBRATION_DATA :: EXTRA_CRC , DEVICE_OP_WRITE_REPLY_DATA :: ID => DEVICE_OP_WRITE_REPLY_DATA :: EXTRA_CRC , OSD_PARAM_CONFIG_DATA :: ID => OSD_PARAM_CONFIG_DATA :: EXTRA_CRC , ESC_TELEMETRY_5_TO_8_DATA :: ID => ESC_TELEMETRY_5_TO_8_DATA :: EXTRA_CRC , PARAM_REQUEST_READ_DATA :: ID => PARAM_REQUEST_READ_DATA :: EXTRA_CRC , ATTITUDE_TARGET_DATA :: ID => ATTITUDE_TARGET_DATA :: EXTRA_CRC , ESC_STATUS_DATA :: ID => ESC_STATUS_DATA :: EXTRA_CRC , CURRENT_EVENT_SEQUENCE_DATA :: ID => CURRENT_EVENT_SEQUENCE_DATA :: EXTRA_CRC , CAMERA_SETTINGS_DATA :: ID => CAMERA_SETTINGS_DATA :: EXTRA_CRC , SET_MODE_DATA :: ID => SET_MODE_DATA :: EXTRA_CRC , GPS_INJECT_DATA_DATA :: ID => GPS_INJECT_DATA_DATA :: EXTRA_CRC , GIMBAL_MANAGER_SET_PITCHYAW_DATA :: ID => GIMBAL_MANAGER_SET_PITCHYAW_DATA :: EXTRA_CRC , GOPRO_GET_REQUEST_DATA :: ID => GOPRO_GET_REQUEST_DATA :: EXTRA_CRC , GLOBAL_POSITION_INT_COV_DATA :: ID => GLOBAL_POSITION_INT_COV_DATA :: EXTRA_CRC , MOUNT_CONFIGURE_DATA :: ID => MOUNT_CONFIGURE_DATA :: EXTRA_CRC , WINCH_STATUS_DATA :: ID => WINCH_STATUS_DATA :: EXTRA_CRC , TIME_ESTIMATE_TO_TARGET_DATA :: ID => TIME_ESTIMATE_TO_TARGET_DATA :: EXTRA_CRC , ESTIMATOR_STATUS_DATA :: ID => ESTIMATOR_STATUS_DATA :: EXTRA_CRC , MISSION_SET_CURRENT_DATA :: ID => MISSION_SET_CURRENT_DATA :: EXTRA_CRC , LED_CONTROL_DATA :: ID => LED_CONTROL_DATA :: EXTRA_CRC , RADIO_DATA :: ID => RADIO_DATA :: EXTRA_CRC , TERRAIN_CHECK_DATA :: ID => TERRAIN_CHECK_DATA :: EXTRA_CRC , MISSION_ITEM_REACHED_DATA :: ID => MISSION_ITEM_REACHED_DATA :: EXTRA_CRC , GPS_RAW_INT_DATA :: ID => GPS_RAW_INT_DATA :: EXTRA_CRC , GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: ID => GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: EXTRA_CRC , EFI_STATUS_DATA :: ID => EFI_STATUS_DATA :: EXTRA_CRC , COMMAND_LONG_DATA :: ID => COMMAND_LONG_DATA :: EXTRA_CRC , HIL_STATE_QUATERNION_DATA :: ID => HIL_STATE_QUATERNION_DATA :: EXTRA_CRC , BUTTON_CHANGE_DATA :: ID => BUTTON_CHANGE_DATA :: EXTRA_CRC , TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: ID => TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: EXTRA_CRC , RAW_RPM_DATA :: ID => RAW_RPM_DATA :: EXTRA_CRC , SCALED_PRESSURE_DATA :: ID => SCALED_PRESSURE_DATA :: EXTRA_CRC , UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: ID => UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: EXTRA_CRC , SENSOR_OFFSETS_DATA :: ID => SENSOR_OFFSETS_DATA :: EXTRA_CRC , HIGHRES_IMU_DATA :: ID => HIGHRES_IMU_DATA :: EXTRA_CRC , AHRS2_DATA :: ID => AHRS2_DATA :: EXTRA_CRC , ATTITUDE_QUATERNION_COV_DATA :: ID => ATTITUDE_QUATERNION_COV_DATA :: EXTRA_CRC , MISSION_CURRENT_DATA :: ID => MISSION_CURRENT_DATA :: EXTRA_CRC , AIRSPEED_AUTOCAL_DATA :: ID => AIRSPEED_AUTOCAL_DATA :: EXTRA_CRC , ODOMETRY_DATA :: ID => ODOMETRY_DATA :: EXTRA_CRC , ICAROUS_HEARTBEAT_DATA :: ID => ICAROUS_HEARTBEAT_DATA :: EXTRA_CRC , MEMINFO_DATA :: ID => MEMINFO_DATA :: EXTRA_CRC , EXTENDED_SYS_STATE_DATA :: ID => EXTENDED_SYS_STATE_DATA :: EXTRA_CRC , TRAJECTORY_REPRESENTATION_BEZIER_DATA :: ID => TRAJECTORY_REPRESENTATION_BEZIER_DATA :: EXTRA_CRC , CAMERA_STATUS_DATA :: ID => CAMERA_STATUS_DATA :: EXTRA_CRC , WIND_COV_DATA :: ID => WIND_COV_DATA :: EXTRA_CRC , AIS_VESSEL_DATA :: ID => AIS_VESSEL_DATA :: EXTRA_CRC , GPS_INPUT_DATA :: ID => GPS_INPUT_DATA :: EXTRA_CRC , TIMESYNC_DATA :: ID => TIMESYNC_DATA :: EXTRA_CRC , SCALED_IMU3_DATA :: ID => SCALED_IMU3_DATA :: EXTRA_CRC , ADSB_VEHICLE_DATA :: ID => ADSB_VEHICLE_DATA :: EXTRA_CRC , DEBUG_DATA :: ID => DEBUG_DATA :: EXTRA_CRC , FOLLOW_TARGET_DATA :: ID => FOLLOW_TARGET_DATA :: EXTRA_CRC , VISION_SPEED_ESTIMATE_DATA :: ID => VISION_SPEED_ESTIMATE_DATA :: EXTRA_CRC , DIGICAM_CONFIGURE_DATA :: ID => DIGICAM_CONFIGURE_DATA :: EXTRA_CRC , CHANGE_OPERATOR_CONTROL_ACK_DATA :: ID => CHANGE_OPERATOR_CONTROL_ACK_DATA :: EXTRA_CRC , MOUNT_STATUS_DATA :: ID => MOUNT_STATUS_DATA :: EXTRA_CRC , GPS_RTK_DATA :: ID => GPS_RTK_DATA :: EXTRA_CRC , DATA32_DATA :: ID => DATA32_DATA :: EXTRA_CRC , HIL_CONTROLS_DATA :: ID => HIL_CONTROLS_DATA :: EXTRA_CRC , DATA96_DATA :: ID => DATA96_DATA :: EXTRA_CRC , SCALED_IMU2_DATA :: ID => SCALED_IMU2_DATA :: EXTRA_CRC , DATA_STREAM_DATA :: ID => DATA_STREAM_DATA :: EXTRA_CRC , MOUNT_ORIENTATION_DATA :: ID => MOUNT_ORIENTATION_DATA :: EXTRA_CRC , HIGH_LATENCY_DATA :: ID => HIGH_LATENCY_DATA :: EXTRA_CRC , GLOBAL_POSITION_INT_DATA :: ID => GLOBAL_POSITION_INT_DATA :: EXTRA_CRC , OSD_PARAM_CONFIG_REPLY_DATA :: ID => OSD_PARAM_CONFIG_REPLY_DATA :: EXTRA_CRC , ACTUATOR_CONTROL_TARGET_DATA :: ID => ACTUATOR_CONTROL_TARGET_DATA :: EXTRA_CRC , OBSTACLE_DISTANCE_DATA :: ID => OBSTACLE_DISTANCE_DATA :: EXTRA_CRC , CAN_FILTER_MODIFY_DATA :: ID => CAN_FILTER_MODIFY_DATA :: EXTRA_CRC , VISION_POSITION_ESTIMATE_DATA :: ID => VISION_POSITION_ESTIMATE_DATA :: EXTRA_CRC , STATUSTEXT_DATA :: ID => STATUSTEXT_DATA :: EXTRA_CRC , ATTITUDE_QUATERNION_DATA :: ID => ATTITUDE_QUATERNION_DATA :: EXTRA_CRC , PARAM_SET_DATA :: ID => PARAM_SET_DATA :: EXTRA_CRC , TUNNEL_DATA :: ID => TUNNEL_DATA :: EXTRA_CRC , RC_CHANNELS_RAW_DATA :: ID => RC_CHANNELS_RAW_DATA :: EXTRA_CRC , CELLULAR_CONFIG_DATA :: ID => CELLULAR_CONFIG_DATA :: EXTRA_CRC , GPS_RTCM_DATA_DATA :: ID => GPS_RTCM_DATA_DATA :: EXTRA_CRC , AUTH_KEY_DATA :: ID => AUTH_KEY_DATA :: EXTRA_CRC , GPS_STATUS_DATA :: ID => GPS_STATUS_DATA :: EXTRA_CRC , RC_CHANNELS_OVERRIDE_DATA :: ID => RC_CHANNELS_OVERRIDE_DATA :: EXTRA_CRC , DEEPSTALL_DATA :: ID => DEEPSTALL_DATA :: EXTRA_CRC , FENCE_STATUS_DATA :: ID => FENCE_STATUS_DATA :: EXTRA_CRC , BATTERY_STATUS_DATA :: ID => BATTERY_STATUS_DATA :: EXTRA_CRC , AOA_SSA_DATA :: ID => AOA_SSA_DATA :: EXTRA_CRC , MISSION_CLEAR_ALL_DATA :: ID => MISSION_CLEAR_ALL_DATA :: EXTRA_CRC , SCALED_PRESSURE2_DATA :: ID => SCALED_PRESSURE2_DATA :: EXTRA_CRC , DISTANCE_SENSOR_DATA :: ID => DISTANCE_SENSOR_DATA :: EXTRA_CRC , _ => { 0 } , } } }
      +
      # ! [doc = "This file was automatically generated, do not edit"] # [allow (unused_imports)] use num_derive :: FromPrimitive ; # [allow (unused_imports)] use num_traits :: FromPrimitive ; # [allow (unused_imports)] use num_derive :: ToPrimitive ; # [allow (unused_imports)] use num_traits :: ToPrimitive ; # [allow (unused_imports)] use bitflags :: bitflags ; use mavlink_core :: { MavlinkVersion , Message , MessageData , bytes :: Bytes , bytes_mut :: BytesMut } ; # [cfg (feature = "serde")] use serde :: { Serialize , Deserialize } ; # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum PidTuningAxis { PID_TUNING_ROLL = 1 , PID_TUNING_PITCH = 2 , PID_TUNING_YAW = 3 , PID_TUNING_ACCZ = 4 , PID_TUNING_STEER = 5 , PID_TUNING_LANDING = 6 , } impl PidTuningAxis { pub const DEFAULT : Self = Self :: PID_TUNING_ROLL ; } impl Default for PidTuningAxis { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MagCalStatus { MAG_CAL_NOT_STARTED = 0 , MAG_CAL_WAITING_TO_START = 1 , MAG_CAL_RUNNING_STEP_ONE = 2 , MAG_CAL_RUNNING_STEP_TWO = 3 , MAG_CAL_SUCCESS = 4 , MAG_CAL_FAILED = 5 , MAG_CAL_BAD_ORIENTATION = 6 , MAG_CAL_BAD_RADIUS = 7 , } impl MagCalStatus { pub const DEFAULT : Self = Self :: MAG_CAL_NOT_STARTED ; } impl Default for MagCalStatus { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavBatteryFunction { MAV_BATTERY_FUNCTION_UNKNOWN = 0 , MAV_BATTERY_FUNCTION_ALL = 1 , MAV_BATTERY_FUNCTION_PROPULSION = 2 , MAV_BATTERY_FUNCTION_AVIONICS = 3 , MAV_BATTERY_FUNCTION_PAYLOAD = 4 , } impl MavBatteryFunction { pub const DEFAULT : Self = Self :: MAV_BATTERY_FUNCTION_UNKNOWN ; } impl Default for MavBatteryFunction { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum RtkBaselineCoordinateSystem { RTK_BASELINE_COORDINATE_SYSTEM_ECEF = 0 , RTK_BASELINE_COORDINATE_SYSTEM_NED = 1 , } impl RtkBaselineCoordinateSystem { pub const DEFAULT : Self = Self :: RTK_BASELINE_COORDINATE_SYSTEM_ECEF ; } impl Default for RtkBaselineCoordinateSystem { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum WifiConfigApResponse { WIFI_CONFIG_AP_RESPONSE_UNDEFINED = 0 , WIFI_CONFIG_AP_RESPONSE_ACCEPTED = 1 , WIFI_CONFIG_AP_RESPONSE_REJECTED = 2 , WIFI_CONFIG_AP_RESPONSE_MODE_ERROR = 3 , WIFI_CONFIG_AP_RESPONSE_SSID_ERROR = 4 , WIFI_CONFIG_AP_RESPONSE_PASSWORD_ERROR = 5 , } impl WifiConfigApResponse { pub const DEFAULT : Self = Self :: WIFI_CONFIG_AP_RESPONSE_UNDEFINED ; } impl Default for WifiConfigApResponse { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum CameraTrackingMode { CAMERA_TRACKING_MODE_NONE = 0 , CAMERA_TRACKING_MODE_POINT = 1 , CAMERA_TRACKING_MODE_RECTANGLE = 2 , } impl CameraTrackingMode { pub const DEFAULT : Self = Self :: CAMERA_TRACKING_MODE_NONE ; } impl Default for CameraTrackingMode { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum AccelcalVehiclePos { ACCELCAL_VEHICLE_POS_LEVEL = 1 , ACCELCAL_VEHICLE_POS_LEFT = 2 , ACCELCAL_VEHICLE_POS_RIGHT = 3 , ACCELCAL_VEHICLE_POS_NOSEDOWN = 4 , ACCELCAL_VEHICLE_POS_NOSEUP = 5 , ACCELCAL_VEHICLE_POS_BACK = 6 , ACCELCAL_VEHICLE_POS_SUCCESS = 16777215 , ACCELCAL_VEHICLE_POS_FAILED = 16777216 , } impl AccelcalVehiclePos { pub const DEFAULT : Self = Self :: ACCELCAL_VEHICLE_POS_LEVEL ; } impl Default for AccelcalVehiclePos { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum CameraTrackingStatusFlags { CAMERA_TRACKING_STATUS_FLAGS_IDLE = 0 , CAMERA_TRACKING_STATUS_FLAGS_ACTIVE = 1 , CAMERA_TRACKING_STATUS_FLAGS_ERROR = 2 , } impl CameraTrackingStatusFlags { pub const DEFAULT : Self = Self :: CAMERA_TRACKING_STATUS_FLAGS_IDLE ; } impl Default for CameraTrackingStatusFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum VideoStreamType { VIDEO_STREAM_TYPE_RTSP = 0 , VIDEO_STREAM_TYPE_RTPUDP = 1 , VIDEO_STREAM_TYPE_TCP_MPEG = 2 , VIDEO_STREAM_TYPE_MPEG_TS_H264 = 3 , } impl VideoStreamType { pub const DEFAULT : Self = Self :: VIDEO_STREAM_TYPE_RTSP ; } impl Default for VideoStreamType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavFrame { MAV_FRAME_GLOBAL = 0 , MAV_FRAME_LOCAL_NED = 1 , MAV_FRAME_MISSION = 2 , MAV_FRAME_GLOBAL_RELATIVE_ALT = 3 , MAV_FRAME_LOCAL_ENU = 4 , MAV_FRAME_GLOBAL_INT = 5 , MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6 , MAV_FRAME_LOCAL_OFFSET_NED = 7 , MAV_FRAME_BODY_NED = 8 , MAV_FRAME_BODY_OFFSET_NED = 9 , MAV_FRAME_GLOBAL_TERRAIN_ALT = 10 , MAV_FRAME_GLOBAL_TERRAIN_ALT_INT = 11 , MAV_FRAME_BODY_FRD = 12 , MAV_FRAME_RESERVED_13 = 13 , MAV_FRAME_RESERVED_14 = 14 , MAV_FRAME_RESERVED_15 = 15 , MAV_FRAME_RESERVED_16 = 16 , MAV_FRAME_RESERVED_17 = 17 , MAV_FRAME_RESERVED_18 = 18 , MAV_FRAME_RESERVED_19 = 19 , MAV_FRAME_LOCAL_FRD = 20 , MAV_FRAME_LOCAL_FLU = 21 , } impl MavFrame { pub const DEFAULT : Self = Self :: MAV_FRAME_GLOBAL ; } impl Default for MavFrame { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum SetFocusType { FOCUS_TYPE_STEP = 0 , FOCUS_TYPE_CONTINUOUS = 1 , FOCUS_TYPE_RANGE = 2 , FOCUS_TYPE_METERS = 3 , FOCUS_TYPE_AUTO = 4 , FOCUS_TYPE_AUTO_SINGLE = 5 , FOCUS_TYPE_AUTO_CONTINUOUS = 6 , } impl SetFocusType { pub const DEFAULT : Self = Self :: FOCUS_TYPE_STEP ; } impl Default for SetFocusType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum SpeedType { SPEED_TYPE_AIRSPEED = 0 , SPEED_TYPE_GROUNDSPEED = 1 , } impl SpeedType { pub const DEFAULT : Self = Self :: SPEED_TYPE_AIRSPEED ; } impl Default for SpeedType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum CanFilterOp { CAN_FILTER_REPLACE = 0 , CAN_FILTER_ADD = 1 , CAN_FILTER_REMOVE = 2 , } impl CanFilterOp { pub const DEFAULT : Self = Self :: CAN_FILTER_REPLACE ; } impl Default for CanFilterOp { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidOperatorLocationType { MAV_ODID_OPERATOR_LOCATION_TYPE_TAKEOFF = 0 , MAV_ODID_OPERATOR_LOCATION_TYPE_LIVE_GNSS = 1 , MAV_ODID_OPERATOR_LOCATION_TYPE_FIXED = 2 , } impl MavOdidOperatorLocationType { pub const DEFAULT : Self = Self :: MAV_ODID_OPERATOR_LOCATION_TYPE_TAKEOFF ; } impl Default for MavOdidOperatorLocationType { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GoproHeartbeatFlags : u8 { const GOPRO_FLAG_RECORDING = 1 ; } } impl GoproHeartbeatFlags { pub const DEFAULT : Self = Self :: GOPRO_FLAG_RECORDING ; } impl Default for GoproHeartbeatFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavBatteryFault { MAV_BATTERY_FAULT_DEEP_DISCHARGE = 1 , MAV_BATTERY_FAULT_SPIKES = 2 , MAV_BATTERY_FAULT_CELL_FAIL = 4 , MAV_BATTERY_FAULT_OVER_CURRENT = 8 , MAV_BATTERY_FAULT_OVER_TEMPERATURE = 16 , MAV_BATTERY_FAULT_UNDER_TEMPERATURE = 32 , MAV_BATTERY_FAULT_INCOMPATIBLE_VOLTAGE = 64 , MAV_BATTERY_FAULT_INCOMPATIBLE_FIRMWARE = 128 , BATTERY_FAULT_INCOMPATIBLE_CELLS_CONFIGURATION = 256 , } impl MavBatteryFault { pub const DEFAULT : Self = Self :: MAV_BATTERY_FAULT_DEEP_DISCHARGE ; } impl Default for MavBatteryFault { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MavSysStatusSensor : u32 { const MAV_SYS_STATUS_SENSOR_3D_GYRO = 1 ; const MAV_SYS_STATUS_SENSOR_3D_ACCEL = 2 ; const MAV_SYS_STATUS_SENSOR_3D_MAG = 4 ; const MAV_SYS_STATUS_SENSOR_ABSOLUTE_PRESSURE = 8 ; const MAV_SYS_STATUS_SENSOR_DIFFERENTIAL_PRESSURE = 16 ; const MAV_SYS_STATUS_SENSOR_GPS = 32 ; const MAV_SYS_STATUS_SENSOR_OPTICAL_FLOW = 64 ; const MAV_SYS_STATUS_SENSOR_VISION_POSITION = 128 ; const MAV_SYS_STATUS_SENSOR_LASER_POSITION = 256 ; const MAV_SYS_STATUS_SENSOR_EXTERNAL_GROUND_TRUTH = 512 ; const MAV_SYS_STATUS_SENSOR_ANGULAR_RATE_CONTROL = 1024 ; const MAV_SYS_STATUS_SENSOR_ATTITUDE_STABILIZATION = 2048 ; const MAV_SYS_STATUS_SENSOR_YAW_POSITION = 4096 ; const MAV_SYS_STATUS_SENSOR_Z_ALTITUDE_CONTROL = 8192 ; const MAV_SYS_STATUS_SENSOR_XY_POSITION_CONTROL = 16384 ; const MAV_SYS_STATUS_SENSOR_MOTOR_OUTPUTS = 32768 ; const MAV_SYS_STATUS_SENSOR_RC_RECEIVER = 65536 ; const MAV_SYS_STATUS_SENSOR_3D_GYRO2 = 131072 ; const MAV_SYS_STATUS_SENSOR_3D_ACCEL2 = 262144 ; const MAV_SYS_STATUS_SENSOR_3D_MAG2 = 524288 ; const MAV_SYS_STATUS_GEOFENCE = 1048576 ; const MAV_SYS_STATUS_AHRS = 2097152 ; const MAV_SYS_STATUS_TERRAIN = 4194304 ; const MAV_SYS_STATUS_REVERSE_MOTOR = 8388608 ; const MAV_SYS_STATUS_LOGGING = 16777216 ; const MAV_SYS_STATUS_SENSOR_BATTERY = 33554432 ; const MAV_SYS_STATUS_SENSOR_PROXIMITY = 67108864 ; const MAV_SYS_STATUS_SENSOR_SATCOM = 134217728 ; const MAV_SYS_STATUS_PREARM_CHECK = 268435456 ; const MAV_SYS_STATUS_OBSTACLE_AVOIDANCE = 536870912 ; const MAV_SYS_STATUS_SENSOR_PROPULSION = 1073741824 ; const MAV_SYS_STATUS_EXTENSION_USED = 2147483648 ; } } impl MavSysStatusSensor { pub const DEFAULT : Self = Self :: MAV_SYS_STATUS_SENSOR_3D_GYRO ; } impl Default for MavSysStatusSensor { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum OsdParamConfigError { OSD_PARAM_SUCCESS = 0 , OSD_PARAM_INVALID_SCREEN = 1 , OSD_PARAM_INVALID_PARAMETER_INDEX = 2 , OSD_PARAM_INVALID_PARAMETER = 3 , } impl OsdParamConfigError { pub const DEFAULT : Self = Self :: OSD_PARAM_SUCCESS ; } impl Default for OsdParamConfigError { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum LandingTargetType { LANDING_TARGET_TYPE_LIGHT_BEACON = 0 , LANDING_TARGET_TYPE_RADIO_BEACON = 1 , LANDING_TARGET_TYPE_VISION_FIDUCIAL = 2 , LANDING_TARGET_TYPE_VISION_OTHER = 3 , } impl LandingTargetType { pub const DEFAULT : Self = Self :: LANDING_TARGET_TYPE_LIGHT_BEACON ; } impl Default for LandingTargetType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavDistanceSensor { MAV_DISTANCE_SENSOR_LASER = 0 , MAV_DISTANCE_SENSOR_ULTRASOUND = 1 , MAV_DISTANCE_SENSOR_INFRARED = 2 , MAV_DISTANCE_SENSOR_RADAR = 3 , MAV_DISTANCE_SENSOR_UNKNOWN = 4 , } impl MavDistanceSensor { pub const DEFAULT : Self = Self :: MAV_DISTANCE_SENSOR_LASER ; } impl Default for MavDistanceSensor { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum GoproModel { GOPRO_MODEL_UNKNOWN = 0 , GOPRO_MODEL_HERO_3_PLUS_SILVER = 1 , GOPRO_MODEL_HERO_3_PLUS_BLACK = 2 , GOPRO_MODEL_HERO_4_SILVER = 3 , GOPRO_MODEL_HERO_4_BLACK = 4 , } impl GoproModel { pub const DEFAULT : Self = Self :: GOPRO_MODEL_UNKNOWN ; } impl Default for GoproModel { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MavGeneratorStatusFlag : u64 { const MAV_GENERATOR_STATUS_FLAG_OFF = 1 ; const MAV_GENERATOR_STATUS_FLAG_READY = 2 ; const MAV_GENERATOR_STATUS_FLAG_GENERATING = 4 ; const MAV_GENERATOR_STATUS_FLAG_CHARGING = 8 ; const MAV_GENERATOR_STATUS_FLAG_REDUCED_POWER = 16 ; const MAV_GENERATOR_STATUS_FLAG_MAXPOWER = 32 ; const MAV_GENERATOR_STATUS_FLAG_OVERTEMP_WARNING = 64 ; const MAV_GENERATOR_STATUS_FLAG_OVERTEMP_FAULT = 128 ; const MAV_GENERATOR_STATUS_FLAG_ELECTRONICS_OVERTEMP_WARNING = 256 ; const MAV_GENERATOR_STATUS_FLAG_ELECTRONICS_OVERTEMP_FAULT = 512 ; const MAV_GENERATOR_STATUS_FLAG_ELECTRONICS_FAULT = 1024 ; const MAV_GENERATOR_STATUS_FLAG_POWERSOURCE_FAULT = 2048 ; const MAV_GENERATOR_STATUS_FLAG_COMMUNICATION_WARNING = 4096 ; const MAV_GENERATOR_STATUS_FLAG_COOLING_WARNING = 8192 ; const MAV_GENERATOR_STATUS_FLAG_POWER_RAIL_FAULT = 16384 ; const MAV_GENERATOR_STATUS_FLAG_OVERCURRENT_FAULT = 32768 ; const MAV_GENERATOR_STATUS_FLAG_BATTERY_OVERCHARGE_CURRENT_FAULT = 65536 ; const MAV_GENERATOR_STATUS_FLAG_OVERVOLTAGE_FAULT = 131072 ; const MAV_GENERATOR_STATUS_FLAG_BATTERY_UNDERVOLT_FAULT = 262144 ; const MAV_GENERATOR_STATUS_FLAG_START_INHIBITED = 524288 ; const MAV_GENERATOR_STATUS_FLAG_MAINTENANCE_REQUIRED = 1048576 ; const MAV_GENERATOR_STATUS_FLAG_WARMING_UP = 2097152 ; const MAV_GENERATOR_STATUS_FLAG_IDLE = 4194304 ; } } impl MavGeneratorStatusFlag { pub const DEFAULT : Self = Self :: MAV_GENERATOR_STATUS_FLAG_OFF ; } impl Default for MavGeneratorStatusFlag { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MavEventCurrentSequenceFlags : u8 { const MAV_EVENT_CURRENT_SEQUENCE_FLAGS_RESET = 1 ; } } impl MavEventCurrentSequenceFlags { pub const DEFAULT : Self = Self :: MAV_EVENT_CURRENT_SEQUENCE_FLAGS_RESET ; } impl Default for MavEventCurrentSequenceFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavlinkDataStreamType { MAVLINK_DATA_STREAM_IMG_JPEG = 0 , MAVLINK_DATA_STREAM_IMG_BMP = 1 , MAVLINK_DATA_STREAM_IMG_RAW8U = 2 , MAVLINK_DATA_STREAM_IMG_RAW32U = 3 , MAVLINK_DATA_STREAM_IMG_PGM = 4 , MAVLINK_DATA_STREAM_IMG_PNG = 5 , } impl MavlinkDataStreamType { pub const DEFAULT : Self = Self :: MAVLINK_DATA_STREAM_IMG_JPEG ; } impl Default for MavlinkDataStreamType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum NavVtolLandOptions { NAV_VTOL_LAND_OPTIONS_DEFAULT = 0 , NAV_VTOL_LAND_OPTIONS_FW_DESCENT = 1 , NAV_VTOL_LAND_OPTIONS_HOVER_DESCENT = 2 , } impl NavVtolLandOptions { pub const DEFAULT : Self = Self :: NAV_VTOL_LAND_OPTIONS_DEFAULT ; } impl Default for NavVtolLandOptions { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavEventErrorReason { MAV_EVENT_ERROR_REASON_UNAVAILABLE = 0 , } impl MavEventErrorReason { pub const DEFAULT : Self = Self :: MAV_EVENT_ERROR_REASON_UNAVAILABLE ; } impl Default for MavEventErrorReason { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavModeFlagDecodePosition { MAV_MODE_FLAG_DECODE_POSITION_SAFETY = 128 , MAV_MODE_FLAG_DECODE_POSITION_MANUAL = 64 , MAV_MODE_FLAG_DECODE_POSITION_HIL = 32 , MAV_MODE_FLAG_DECODE_POSITION_STABILIZE = 16 , MAV_MODE_FLAG_DECODE_POSITION_GUIDED = 8 , MAV_MODE_FLAG_DECODE_POSITION_AUTO = 4 , MAV_MODE_FLAG_DECODE_POSITION_TEST = 2 , MAV_MODE_FLAG_DECODE_POSITION_CUSTOM_MODE = 1 , } impl MavModeFlagDecodePosition { pub const DEFAULT : Self = Self :: MAV_MODE_FLAG_DECODE_POSITION_SAFETY ; } impl Default for MavModeFlagDecodePosition { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum GoproProtuneExposure { GOPRO_PROTUNE_EXPOSURE_NEG_5_0 = 0 , GOPRO_PROTUNE_EXPOSURE_NEG_4_5 = 1 , GOPRO_PROTUNE_EXPOSURE_NEG_4_0 = 2 , GOPRO_PROTUNE_EXPOSURE_NEG_3_5 = 3 , GOPRO_PROTUNE_EXPOSURE_NEG_3_0 = 4 , GOPRO_PROTUNE_EXPOSURE_NEG_2_5 = 5 , GOPRO_PROTUNE_EXPOSURE_NEG_2_0 = 6 , GOPRO_PROTUNE_EXPOSURE_NEG_1_5 = 7 , GOPRO_PROTUNE_EXPOSURE_NEG_1_0 = 8 , GOPRO_PROTUNE_EXPOSURE_NEG_0_5 = 9 , GOPRO_PROTUNE_EXPOSURE_ZERO = 10 , GOPRO_PROTUNE_EXPOSURE_POS_0_5 = 11 , GOPRO_PROTUNE_EXPOSURE_POS_1_0 = 12 , GOPRO_PROTUNE_EXPOSURE_POS_1_5 = 13 , GOPRO_PROTUNE_EXPOSURE_POS_2_0 = 14 , GOPRO_PROTUNE_EXPOSURE_POS_2_5 = 15 , GOPRO_PROTUNE_EXPOSURE_POS_3_0 = 16 , GOPRO_PROTUNE_EXPOSURE_POS_3_5 = 17 , GOPRO_PROTUNE_EXPOSURE_POS_4_0 = 18 , GOPRO_PROTUNE_EXPOSURE_POS_4_5 = 19 , GOPRO_PROTUNE_EXPOSURE_POS_5_0 = 20 , } impl GoproProtuneExposure { pub const DEFAULT : Self = Self :: GOPRO_PROTUNE_EXPOSURE_NEG_5_0 ; } impl Default for GoproProtuneExposure { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum GripperActions { GRIPPER_ACTION_RELEASE = 0 , GRIPPER_ACTION_GRAB = 1 , } impl GripperActions { pub const DEFAULT : Self = Self :: GRIPPER_ACTION_RELEASE ; } impl Default for GripperActions { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavSeverity { MAV_SEVERITY_EMERGENCY = 0 , MAV_SEVERITY_ALERT = 1 , MAV_SEVERITY_CRITICAL = 2 , MAV_SEVERITY_ERROR = 3 , MAV_SEVERITY_WARNING = 4 , MAV_SEVERITY_NOTICE = 5 , MAV_SEVERITY_INFO = 6 , MAV_SEVERITY_DEBUG = 7 , } impl MavSeverity { pub const DEFAULT : Self = Self :: MAV_SEVERITY_EMERGENCY ; } impl Default for MavSeverity { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum AdsbAltitudeType { ADSB_ALTITUDE_TYPE_PRESSURE_QNH = 0 , ADSB_ALTITUDE_TYPE_GEOMETRIC = 1 , } impl AdsbAltitudeType { pub const DEFAULT : Self = Self :: ADSB_ALTITUDE_TYPE_PRESSURE_QNH ; } impl Default for AdsbAltitudeType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavMode { MAV_MODE_PREFLIGHT = 0 , MAV_MODE_STABILIZE_DISARMED = 80 , MAV_MODE_STABILIZE_ARMED = 208 , MAV_MODE_MANUAL_DISARMED = 64 , MAV_MODE_MANUAL_ARMED = 192 , MAV_MODE_GUIDED_DISARMED = 88 , MAV_MODE_GUIDED_ARMED = 216 , MAV_MODE_AUTO_DISARMED = 92 , MAV_MODE_AUTO_ARMED = 220 , MAV_MODE_TEST_DISARMED = 66 , MAV_MODE_TEST_ARMED = 194 , } impl MavMode { pub const DEFAULT : Self = Self :: MAV_MODE_PREFLIGHT ; } impl Default for MavMode { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum GoproFrameRate { GOPRO_FRAME_RATE_12 = 0 , GOPRO_FRAME_RATE_15 = 1 , GOPRO_FRAME_RATE_24 = 2 , GOPRO_FRAME_RATE_25 = 3 , GOPRO_FRAME_RATE_30 = 4 , GOPRO_FRAME_RATE_48 = 5 , GOPRO_FRAME_RATE_50 = 6 , GOPRO_FRAME_RATE_60 = 7 , GOPRO_FRAME_RATE_80 = 8 , GOPRO_FRAME_RATE_90 = 9 , GOPRO_FRAME_RATE_100 = 10 , GOPRO_FRAME_RATE_120 = 11 , GOPRO_FRAME_RATE_240 = 12 , GOPRO_FRAME_RATE_12_5 = 13 , } impl GoproFrameRate { pub const DEFAULT : Self = Self :: GOPRO_FRAME_RATE_12 ; } impl Default for GoproFrameRate { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum CellularNetworkRadioType { CELLULAR_NETWORK_RADIO_TYPE_NONE = 0 , CELLULAR_NETWORK_RADIO_TYPE_GSM = 1 , CELLULAR_NETWORK_RADIO_TYPE_CDMA = 2 , CELLULAR_NETWORK_RADIO_TYPE_WCDMA = 3 , CELLULAR_NETWORK_RADIO_TYPE_LTE = 4 , } impl CellularNetworkRadioType { pub const DEFAULT : Self = Self :: CELLULAR_NETWORK_RADIO_TYPE_NONE ; } impl Default for CellularNetworkRadioType { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct RallyFlags : u8 { const FAVORABLE_WIND = 1 ; const LAND_IMMEDIATELY = 2 ; } } impl RallyFlags { pub const DEFAULT : Self = Self :: FAVORABLE_WIND ; } impl Default for RallyFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum UavionixAdsbOutDynamicGpsFix { UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX_NONE_0 = 0 , UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX_NONE_1 = 1 , UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX_2D = 2 , UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX_3D = 3 , UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX_DGPS = 4 , UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX_RTK = 5 , } impl UavionixAdsbOutDynamicGpsFix { pub const DEFAULT : Self = Self :: UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX_NONE_0 ; } impl Default for UavionixAdsbOutDynamicGpsFix { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum CameraStatusTypes { CAMERA_STATUS_TYPE_HEARTBEAT = 0 , CAMERA_STATUS_TYPE_TRIGGER = 1 , CAMERA_STATUS_TYPE_DISCONNECT = 2 , CAMERA_STATUS_TYPE_ERROR = 3 , CAMERA_STATUS_TYPE_LOWBATT = 4 , CAMERA_STATUS_TYPE_LOWSTORE = 5 , CAMERA_STATUS_TYPE_LOWSTOREV = 6 , } impl CameraStatusTypes { pub const DEFAULT : Self = Self :: CAMERA_STATUS_TYPE_HEARTBEAT ; } impl Default for CameraStatusTypes { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GimbalDeviceCapFlags : u16 { const GIMBAL_DEVICE_CAP_FLAGS_HAS_RETRACT = 1 ; const GIMBAL_DEVICE_CAP_FLAGS_HAS_NEUTRAL = 2 ; const GIMBAL_DEVICE_CAP_FLAGS_HAS_ROLL_AXIS = 4 ; const GIMBAL_DEVICE_CAP_FLAGS_HAS_ROLL_FOLLOW = 8 ; const GIMBAL_DEVICE_CAP_FLAGS_HAS_ROLL_LOCK = 16 ; const GIMBAL_DEVICE_CAP_FLAGS_HAS_PITCH_AXIS = 32 ; const GIMBAL_DEVICE_CAP_FLAGS_HAS_PITCH_FOLLOW = 64 ; const GIMBAL_DEVICE_CAP_FLAGS_HAS_PITCH_LOCK = 128 ; const GIMBAL_DEVICE_CAP_FLAGS_HAS_YAW_AXIS = 256 ; const GIMBAL_DEVICE_CAP_FLAGS_HAS_YAW_FOLLOW = 512 ; const GIMBAL_DEVICE_CAP_FLAGS_HAS_YAW_LOCK = 1024 ; const GIMBAL_DEVICE_CAP_FLAGS_SUPPORTS_INFINITE_YAW = 2048 ; const GIMBAL_DEVICE_CAP_FLAGS_SUPPORTS_YAW_IN_EARTH_FRAME = 4096 ; const GIMBAL_DEVICE_CAP_FLAGS_HAS_RC_INPUTS = 8192 ; } } impl GimbalDeviceCapFlags { pub const DEFAULT : Self = Self :: GIMBAL_DEVICE_CAP_FLAGS_HAS_RETRACT ; } impl Default for GimbalDeviceCapFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidStatus { MAV_ODID_STATUS_UNDECLARED = 0 , MAV_ODID_STATUS_GROUND = 1 , MAV_ODID_STATUS_AIRBORNE = 2 , MAV_ODID_STATUS_EMERGENCY = 3 , MAV_ODID_STATUS_REMOTE_ID_SYSTEM_FAILURE = 4 , } impl MavOdidStatus { pub const DEFAULT : Self = Self :: MAV_ODID_STATUS_UNDECLARED ; } impl Default for MavOdidStatus { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavFtpErr { MAV_FTP_ERR_NONE = 0 , MAV_FTP_ERR_FAIL = 1 , MAV_FTP_ERR_FAILERRNO = 2 , MAV_FTP_ERR_INVALIDDATASIZE = 3 , MAV_FTP_ERR_INVALIDSESSION = 4 , MAV_FTP_ERR_NOSESSIONSAVAILABLE = 5 , MAV_FTP_ERR_EOF = 6 , MAV_FTP_ERR_UNKNOWNCOMMAND = 7 , MAV_FTP_ERR_FILEEXISTS = 8 , MAV_FTP_ERR_FILEPROTECTED = 9 , MAV_FTP_ERR_FILENOTFOUND = 10 , } impl MavFtpErr { pub const DEFAULT : Self = Self :: MAV_FTP_ERR_NONE ; } impl Default for MavFtpErr { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GimbalManagerCapFlags : u32 { const GIMBAL_MANAGER_CAP_FLAGS_HAS_RETRACT = 1 ; const GIMBAL_MANAGER_CAP_FLAGS_HAS_NEUTRAL = 2 ; const GIMBAL_MANAGER_CAP_FLAGS_HAS_ROLL_AXIS = 4 ; const GIMBAL_MANAGER_CAP_FLAGS_HAS_ROLL_FOLLOW = 8 ; const GIMBAL_MANAGER_CAP_FLAGS_HAS_ROLL_LOCK = 16 ; const GIMBAL_MANAGER_CAP_FLAGS_HAS_PITCH_AXIS = 32 ; const GIMBAL_MANAGER_CAP_FLAGS_HAS_PITCH_FOLLOW = 64 ; const GIMBAL_MANAGER_CAP_FLAGS_HAS_PITCH_LOCK = 128 ; const GIMBAL_MANAGER_CAP_FLAGS_HAS_YAW_AXIS = 256 ; const GIMBAL_MANAGER_CAP_FLAGS_HAS_YAW_FOLLOW = 512 ; const GIMBAL_MANAGER_CAP_FLAGS_HAS_YAW_LOCK = 1024 ; const GIMBAL_MANAGER_CAP_FLAGS_SUPPORTS_INFINITE_YAW = 2048 ; const GIMBAL_MANAGER_CAP_FLAGS_SUPPORTS_YAW_IN_EARTH_FRAME = 4096 ; const GIMBAL_MANAGER_CAP_FLAGS_HAS_RC_INPUTS = 8192 ; const GIMBAL_MANAGER_CAP_FLAGS_CAN_POINT_LOCATION_LOCAL = 65536 ; const GIMBAL_MANAGER_CAP_FLAGS_CAN_POINT_LOCATION_GLOBAL = 131072 ; } } impl GimbalManagerCapFlags { pub const DEFAULT : Self = Self :: GIMBAL_MANAGER_CAP_FLAGS_HAS_RETRACT ; } impl Default for GimbalManagerCapFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum LimitsState { LIMITS_INIT = 0 , LIMITS_DISABLED = 1 , LIMITS_ENABLED = 2 , LIMITS_TRIGGERED = 3 , LIMITS_RECOVERING = 4 , LIMITS_RECOVERED = 5 , } impl LimitsState { pub const DEFAULT : Self = Self :: LIMITS_INIT ; } impl Default for LimitsState { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum CameraFeedbackFlags { CAMERA_FEEDBACK_PHOTO = 0 , CAMERA_FEEDBACK_VIDEO = 1 , CAMERA_FEEDBACK_BADEXPOSURE = 2 , CAMERA_FEEDBACK_CLOSEDLOOP = 3 , CAMERA_FEEDBACK_OPENLOOP = 4 , } impl CameraFeedbackFlags { pub const DEFAULT : Self = Self :: CAMERA_FEEDBACK_PHOTO ; } impl Default for CameraFeedbackFlags { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HilSensorUpdatedFlags : u32 { const HIL_SENSOR_UPDATED_NONE = 0 ; const HIL_SENSOR_UPDATED_XACC = 1 ; const HIL_SENSOR_UPDATED_YACC = 2 ; const HIL_SENSOR_UPDATED_ZACC = 4 ; const HIL_SENSOR_UPDATED_XGYRO = 8 ; const HIL_SENSOR_UPDATED_YGYRO = 16 ; const HIL_SENSOR_UPDATED_ZGYRO = 32 ; const HIL_SENSOR_UPDATED_XMAG = 64 ; const HIL_SENSOR_UPDATED_YMAG = 128 ; const HIL_SENSOR_UPDATED_ZMAG = 256 ; const HIL_SENSOR_UPDATED_ABS_PRESSURE = 512 ; const HIL_SENSOR_UPDATED_DIFF_PRESSURE = 1024 ; const HIL_SENSOR_UPDATED_PRESSURE_ALT = 2048 ; const HIL_SENSOR_UPDATED_TEMPERATURE = 4096 ; const HIL_SENSOR_UPDATED_RESET = 2147483648 ; } } impl HilSensorUpdatedFlags { pub const DEFAULT : Self = Self :: HIL_SENSOR_UPDATED_NONE ; } impl Default for HilSensorUpdatedFlags { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct UavionixAdsbRfHealth : u8 { const UAVIONIX_ADSB_RF_HEALTH_INITIALIZING = 0 ; const UAVIONIX_ADSB_RF_HEALTH_OK = 1 ; const UAVIONIX_ADSB_RF_HEALTH_FAIL_TX = 2 ; const UAVIONIX_ADSB_RF_HEALTH_FAIL_RX = 16 ; } } impl UavionixAdsbRfHealth { pub const DEFAULT : Self = Self :: UAVIONIX_ADSB_RF_HEALTH_INITIALIZING ; } impl Default for UavionixAdsbRfHealth { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavRemoteLogDataBlockStatuses { MAV_REMOTE_LOG_DATA_BLOCK_NACK = 0 , MAV_REMOTE_LOG_DATA_BLOCK_ACK = 1 , } impl MavRemoteLogDataBlockStatuses { pub const DEFAULT : Self = Self :: MAV_REMOTE_LOG_DATA_BLOCK_NACK ; } impl Default for MavRemoteLogDataBlockStatuses { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavEstimatorType { MAV_ESTIMATOR_TYPE_UNKNOWN = 0 , MAV_ESTIMATOR_TYPE_NAIVE = 1 , MAV_ESTIMATOR_TYPE_VISION = 2 , MAV_ESTIMATOR_TYPE_VIO = 3 , MAV_ESTIMATOR_TYPE_GPS = 4 , MAV_ESTIMATOR_TYPE_GPS_INS = 5 , MAV_ESTIMATOR_TYPE_MOCAP = 6 , MAV_ESTIMATOR_TYPE_LIDAR = 7 , MAV_ESTIMATOR_TYPE_AUTOPILOT = 8 , } impl MavEstimatorType { pub const DEFAULT : Self = Self :: MAV_ESTIMATOR_TYPE_UNKNOWN ; } impl Default for MavEstimatorType { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct AisFlags : u16 { const AIS_FLAGS_POSITION_ACCURACY = 1 ; const AIS_FLAGS_VALID_COG = 2 ; const AIS_FLAGS_VALID_VELOCITY = 4 ; const AIS_FLAGS_HIGH_VELOCITY = 8 ; const AIS_FLAGS_VALID_TURN_RATE = 16 ; const AIS_FLAGS_TURN_RATE_SIGN_ONLY = 32 ; const AIS_FLAGS_VALID_DIMENSIONS = 64 ; const AIS_FLAGS_LARGE_BOW_DIMENSION = 128 ; const AIS_FLAGS_LARGE_STERN_DIMENSION = 256 ; const AIS_FLAGS_LARGE_PORT_DIMENSION = 512 ; const AIS_FLAGS_LARGE_STARBOARD_DIMENSION = 1024 ; const AIS_FLAGS_VALID_CALLSIGN = 2048 ; const AIS_FLAGS_VALID_NAME = 4096 ; } } impl AisFlags { pub const DEFAULT : Self = Self :: AIS_FLAGS_POSITION_ACCURACY ; } impl Default for AisFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum PreflightStorageMissionAction { MISSION_READ_PERSISTENT = 0 , MISSION_WRITE_PERSISTENT = 1 , MISSION_RESET_DEFAULT = 2 , } impl PreflightStorageMissionAction { pub const DEFAULT : Self = Self :: MISSION_READ_PERSISTENT ; } impl Default for PreflightStorageMissionAction { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum FailureUnit { FAILURE_UNIT_SENSOR_GYRO = 0 , FAILURE_UNIT_SENSOR_ACCEL = 1 , FAILURE_UNIT_SENSOR_MAG = 2 , FAILURE_UNIT_SENSOR_BARO = 3 , FAILURE_UNIT_SENSOR_GPS = 4 , FAILURE_UNIT_SENSOR_OPTICAL_FLOW = 5 , FAILURE_UNIT_SENSOR_VIO = 6 , FAILURE_UNIT_SENSOR_DISTANCE_SENSOR = 7 , FAILURE_UNIT_SENSOR_AIRSPEED = 8 , FAILURE_UNIT_SYSTEM_BATTERY = 100 , FAILURE_UNIT_SYSTEM_MOTOR = 101 , FAILURE_UNIT_SYSTEM_SERVO = 102 , FAILURE_UNIT_SYSTEM_AVOIDANCE = 103 , FAILURE_UNIT_SYSTEM_RC_SIGNAL = 104 , FAILURE_UNIT_SYSTEM_MAVLINK_SIGNAL = 105 , } impl FailureUnit { pub const DEFAULT : Self = Self :: FAILURE_UNIT_SENSOR_GYRO ; } impl Default for FailureUnit { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum AutotuneAxis { AUTOTUNE_AXIS_DEFAULT = 0 , AUTOTUNE_AXIS_ROLL = 1 , AUTOTUNE_AXIS_PITCH = 2 , AUTOTUNE_AXIS_YAW = 4 , } impl AutotuneAxis { pub const DEFAULT : Self = Self :: AUTOTUNE_AXIS_DEFAULT ; } impl Default for AutotuneAxis { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct UavionixAdsbOutDynamicState : u16 { const UAVIONIX_ADSB_OUT_DYNAMIC_STATE_INTENT_CHANGE = 1 ; const UAVIONIX_ADSB_OUT_DYNAMIC_STATE_AUTOPILOT_ENABLED = 2 ; const UAVIONIX_ADSB_OUT_DYNAMIC_STATE_NICBARO_CROSSCHECKED = 4 ; const UAVIONIX_ADSB_OUT_DYNAMIC_STATE_ON_GROUND = 8 ; const UAVIONIX_ADSB_OUT_DYNAMIC_STATE_IDENT = 16 ; } } impl UavionixAdsbOutDynamicState { pub const DEFAULT : Self = Self :: UAVIONIX_ADSB_OUT_DYNAMIC_STATE_INTENT_CHANGE ; } impl Default for UavionixAdsbOutDynamicState { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum UavionixAdsbOutCfgGpsOffsetLon { UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LON_NO_DATA = 0 , UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LON_APPLIED_BY_SENSOR = 1 , } impl UavionixAdsbOutCfgGpsOffsetLon { pub const DEFAULT : Self = Self :: UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LON_NO_DATA ; } impl Default for UavionixAdsbOutCfgGpsOffsetLon { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavMissionResult { MAV_MISSION_ACCEPTED = 0 , MAV_MISSION_ERROR = 1 , MAV_MISSION_UNSUPPORTED_FRAME = 2 , MAV_MISSION_UNSUPPORTED = 3 , MAV_MISSION_NO_SPACE = 4 , MAV_MISSION_INVALID = 5 , MAV_MISSION_INVALID_PARAM1 = 6 , MAV_MISSION_INVALID_PARAM2 = 7 , MAV_MISSION_INVALID_PARAM3 = 8 , MAV_MISSION_INVALID_PARAM4 = 9 , MAV_MISSION_INVALID_PARAM5_X = 10 , MAV_MISSION_INVALID_PARAM6_Y = 11 , MAV_MISSION_INVALID_PARAM7 = 12 , MAV_MISSION_INVALID_SEQUENCE = 13 , MAV_MISSION_DENIED = 14 , MAV_MISSION_OPERATION_CANCELLED = 15 , } impl MavMissionResult { pub const DEFAULT : Self = Self :: MAV_MISSION_ACCEPTED ; } impl Default for MavMissionResult { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum GimbalAxisCalibrationRequired { GIMBAL_AXIS_CALIBRATION_REQUIRED_UNKNOWN = 0 , GIMBAL_AXIS_CALIBRATION_REQUIRED_TRUE = 1 , GIMBAL_AXIS_CALIBRATION_REQUIRED_FALSE = 2 , } impl GimbalAxisCalibrationRequired { pub const DEFAULT : Self = Self :: GIMBAL_AXIS_CALIBRATION_REQUIRED_UNKNOWN ; } impl Default for GimbalAxisCalibrationRequired { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum OsdParamConfigType { OSD_PARAM_NONE = 0 , OSD_PARAM_SERIAL_PROTOCOL = 1 , OSD_PARAM_SERVO_FUNCTION = 2 , OSD_PARAM_AUX_FUNCTION = 3 , OSD_PARAM_FLIGHT_MODE = 4 , OSD_PARAM_FAILSAFE_ACTION = 5 , OSD_PARAM_FAILSAFE_ACTION_1 = 6 , OSD_PARAM_FAILSAFE_ACTION_2 = 7 , OSD_PARAM_NUM_TYPES = 8 , } impl OsdParamConfigType { pub const DEFAULT : Self = Self :: OSD_PARAM_NONE ; } impl Default for OsdParamConfigType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum GimbalAxisCalibrationStatus { GIMBAL_AXIS_CALIBRATION_STATUS_IN_PROGRESS = 0 , GIMBAL_AXIS_CALIBRATION_STATUS_SUCCEEDED = 1 , GIMBAL_AXIS_CALIBRATION_STATUS_FAILED = 2 , } impl GimbalAxisCalibrationStatus { pub const DEFAULT : Self = Self :: GIMBAL_AXIS_CALIBRATION_STATUS_IN_PROGRESS ; } impl Default for GimbalAxisCalibrationStatus { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidSpeedAcc { MAV_ODID_SPEED_ACC_UNKNOWN = 0 , MAV_ODID_SPEED_ACC_10_METERS_PER_SECOND = 1 , MAV_ODID_SPEED_ACC_3_METERS_PER_SECOND = 2 , MAV_ODID_SPEED_ACC_1_METERS_PER_SECOND = 3 , MAV_ODID_SPEED_ACC_0_3_METERS_PER_SECOND = 4 , } impl MavOdidSpeedAcc { pub const DEFAULT : Self = Self :: MAV_ODID_SPEED_ACC_UNKNOWN ; } impl Default for MavOdidSpeedAcc { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum RoverMode { ROVER_MODE_MANUAL = 0 , ROVER_MODE_ACRO = 1 , ROVER_MODE_STEERING = 3 , ROVER_MODE_HOLD = 4 , ROVER_MODE_LOITER = 5 , ROVER_MODE_FOLLOW = 6 , ROVER_MODE_SIMPLE = 7 , ROVER_MODE_AUTO = 10 , ROVER_MODE_RTL = 11 , ROVER_MODE_SMART_RTL = 12 , ROVER_MODE_GUIDED = 15 , ROVER_MODE_INITIALIZING = 16 , } impl RoverMode { pub const DEFAULT : Self = Self :: ROVER_MODE_MANUAL ; } impl Default for RoverMode { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum WifiConfigApMode { WIFI_CONFIG_AP_MODE_UNDEFINED = 0 , WIFI_CONFIG_AP_MODE_AP = 1 , WIFI_CONFIG_AP_MODE_STATION = 2 , WIFI_CONFIG_AP_MODE_DISABLED = 3 , } impl WifiConfigApMode { pub const DEFAULT : Self = Self :: WIFI_CONFIG_AP_MODE_UNDEFINED ; } impl Default for WifiConfigApMode { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HighresImuUpdatedFlags : u16 { const HIGHRES_IMU_UPDATED_NONE = 0 ; const HIGHRES_IMU_UPDATED_XACC = 1 ; const HIGHRES_IMU_UPDATED_YACC = 2 ; const HIGHRES_IMU_UPDATED_ZACC = 4 ; const HIGHRES_IMU_UPDATED_XGYRO = 8 ; const HIGHRES_IMU_UPDATED_YGYRO = 16 ; const HIGHRES_IMU_UPDATED_ZGYRO = 32 ; const HIGHRES_IMU_UPDATED_XMAG = 64 ; const HIGHRES_IMU_UPDATED_YMAG = 128 ; const HIGHRES_IMU_UPDATED_ZMAG = 256 ; const HIGHRES_IMU_UPDATED_ABS_PRESSURE = 512 ; const HIGHRES_IMU_UPDATED_DIFF_PRESSURE = 1024 ; const HIGHRES_IMU_UPDATED_PRESSURE_ALT = 2048 ; const HIGHRES_IMU_UPDATED_TEMPERATURE = 4096 ; const HIGHRES_IMU_UPDATED_ALL = 65535 ; } } impl HighresImuUpdatedFlags { pub const DEFAULT : Self = Self :: HIGHRES_IMU_UPDATED_NONE ; } impl Default for HighresImuUpdatedFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavCollisionSrc { MAV_COLLISION_SRC_ADSB = 0 , MAV_COLLISION_SRC_MAVLINK_GPS_GLOBAL_INT = 1 , } impl MavCollisionSrc { pub const DEFAULT : Self = Self :: MAV_COLLISION_SRC_ADSB ; } impl Default for MavCollisionSrc { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavCmd { MAV_CMD_NAV_WAYPOINT = 16 , MAV_CMD_NAV_LOITER_UNLIM = 17 , MAV_CMD_NAV_LOITER_TURNS = 18 , MAV_CMD_NAV_LOITER_TIME = 19 , MAV_CMD_NAV_RETURN_TO_LAUNCH = 20 , MAV_CMD_NAV_LAND = 21 , MAV_CMD_NAV_TAKEOFF = 22 , MAV_CMD_NAV_LAND_LOCAL = 23 , MAV_CMD_NAV_TAKEOFF_LOCAL = 24 , MAV_CMD_NAV_FOLLOW = 25 , MAV_CMD_NAV_CONTINUE_AND_CHANGE_ALT = 30 , MAV_CMD_NAV_LOITER_TO_ALT = 31 , MAV_CMD_DO_FOLLOW = 32 , MAV_CMD_DO_FOLLOW_REPOSITION = 33 , MAV_CMD_DO_ORBIT = 34 , MAV_CMD_NAV_ROI = 80 , MAV_CMD_NAV_PATHPLANNING = 81 , MAV_CMD_NAV_SPLINE_WAYPOINT = 82 , MAV_CMD_NAV_VTOL_TAKEOFF = 84 , MAV_CMD_NAV_VTOL_LAND = 85 , MAV_CMD_NAV_GUIDED_ENABLE = 92 , MAV_CMD_NAV_DELAY = 93 , MAV_CMD_NAV_PAYLOAD_PLACE = 94 , MAV_CMD_NAV_LAST = 95 , MAV_CMD_CONDITION_DELAY = 112 , MAV_CMD_CONDITION_CHANGE_ALT = 113 , MAV_CMD_CONDITION_DISTANCE = 114 , MAV_CMD_CONDITION_YAW = 115 , MAV_CMD_CONDITION_LAST = 159 , MAV_CMD_DO_SET_MODE = 176 , MAV_CMD_DO_JUMP = 177 , MAV_CMD_DO_CHANGE_SPEED = 178 , MAV_CMD_DO_SET_HOME = 179 , MAV_CMD_DO_SET_PARAMETER = 180 , MAV_CMD_DO_SET_RELAY = 181 , MAV_CMD_DO_REPEAT_RELAY = 182 , MAV_CMD_DO_SET_SERVO = 183 , MAV_CMD_DO_REPEAT_SERVO = 184 , MAV_CMD_DO_FLIGHTTERMINATION = 185 , MAV_CMD_DO_CHANGE_ALTITUDE = 186 , MAV_CMD_DO_SET_ACTUATOR = 187 , MAV_CMD_DO_LAND_START = 189 , MAV_CMD_DO_RALLY_LAND = 190 , MAV_CMD_DO_GO_AROUND = 191 , MAV_CMD_DO_REPOSITION = 192 , MAV_CMD_DO_PAUSE_CONTINUE = 193 , MAV_CMD_DO_SET_REVERSE = 194 , MAV_CMD_DO_SET_ROI_LOCATION = 195 , MAV_CMD_DO_SET_ROI_WPNEXT_OFFSET = 196 , MAV_CMD_DO_SET_ROI_NONE = 197 , MAV_CMD_DO_SET_ROI_SYSID = 198 , MAV_CMD_DO_CONTROL_VIDEO = 200 , MAV_CMD_DO_SET_ROI = 201 , MAV_CMD_DO_DIGICAM_CONFIGURE = 202 , MAV_CMD_DO_DIGICAM_CONTROL = 203 , MAV_CMD_DO_MOUNT_CONFIGURE = 204 , MAV_CMD_DO_MOUNT_CONTROL = 205 , MAV_CMD_DO_SET_CAM_TRIGG_DIST = 206 , MAV_CMD_DO_FENCE_ENABLE = 207 , MAV_CMD_DO_PARACHUTE = 208 , MAV_CMD_DO_MOTOR_TEST = 209 , MAV_CMD_DO_INVERTED_FLIGHT = 210 , MAV_CMD_DO_GRIPPER = 211 , MAV_CMD_DO_AUTOTUNE_ENABLE = 212 , MAV_CMD_NAV_SET_YAW_SPEED = 213 , MAV_CMD_DO_SET_CAM_TRIGG_INTERVAL = 214 , MAV_CMD_DO_MOUNT_CONTROL_QUAT = 220 , MAV_CMD_DO_GUIDED_MASTER = 221 , MAV_CMD_DO_GUIDED_LIMITS = 222 , MAV_CMD_DO_ENGINE_CONTROL = 223 , MAV_CMD_DO_SET_MISSION_CURRENT = 224 , MAV_CMD_DO_LAST = 240 , MAV_CMD_PREFLIGHT_CALIBRATION = 241 , MAV_CMD_PREFLIGHT_SET_SENSOR_OFFSETS = 242 , MAV_CMD_PREFLIGHT_UAVCAN = 243 , MAV_CMD_PREFLIGHT_STORAGE = 245 , MAV_CMD_PREFLIGHT_REBOOT_SHUTDOWN = 246 , MAV_CMD_OVERRIDE_GOTO = 252 , MAV_CMD_OBLIQUE_SURVEY = 260 , MAV_CMD_MISSION_START = 300 , MAV_CMD_ACTUATOR_TEST = 310 , MAV_CMD_CONFIGURE_ACTUATOR = 311 , MAV_CMD_COMPONENT_ARM_DISARM = 400 , MAV_CMD_RUN_PREARM_CHECKS = 401 , MAV_CMD_ILLUMINATOR_ON_OFF = 405 , MAV_CMD_GET_HOME_POSITION = 410 , MAV_CMD_INJECT_FAILURE = 420 , MAV_CMD_START_RX_PAIR = 500 , MAV_CMD_GET_MESSAGE_INTERVAL = 510 , MAV_CMD_SET_MESSAGE_INTERVAL = 511 , MAV_CMD_REQUEST_MESSAGE = 512 , MAV_CMD_REQUEST_PROTOCOL_VERSION = 519 , MAV_CMD_REQUEST_AUTOPILOT_CAPABILITIES = 520 , MAV_CMD_REQUEST_CAMERA_INFORMATION = 521 , MAV_CMD_REQUEST_CAMERA_SETTINGS = 522 , MAV_CMD_REQUEST_STORAGE_INFORMATION = 525 , MAV_CMD_STORAGE_FORMAT = 526 , MAV_CMD_REQUEST_CAMERA_CAPTURE_STATUS = 527 , MAV_CMD_REQUEST_FLIGHT_INFORMATION = 528 , MAV_CMD_RESET_CAMERA_SETTINGS = 529 , MAV_CMD_SET_CAMERA_MODE = 530 , MAV_CMD_SET_CAMERA_ZOOM = 531 , MAV_CMD_SET_CAMERA_FOCUS = 532 , MAV_CMD_SET_STORAGE_USAGE = 533 , MAV_CMD_JUMP_TAG = 600 , MAV_CMD_DO_JUMP_TAG = 601 , MAV_CMD_DO_GIMBAL_MANAGER_PITCHYAW = 1000 , MAV_CMD_DO_GIMBAL_MANAGER_CONFIGURE = 1001 , MAV_CMD_IMAGE_START_CAPTURE = 2000 , MAV_CMD_IMAGE_STOP_CAPTURE = 2001 , MAV_CMD_REQUEST_CAMERA_IMAGE_CAPTURE = 2002 , MAV_CMD_DO_TRIGGER_CONTROL = 2003 , MAV_CMD_CAMERA_TRACK_POINT = 2004 , MAV_CMD_CAMERA_TRACK_RECTANGLE = 2005 , MAV_CMD_CAMERA_STOP_TRACKING = 2010 , MAV_CMD_VIDEO_START_CAPTURE = 2500 , MAV_CMD_VIDEO_STOP_CAPTURE = 2501 , MAV_CMD_VIDEO_START_STREAMING = 2502 , MAV_CMD_VIDEO_STOP_STREAMING = 2503 , MAV_CMD_REQUEST_VIDEO_STREAM_INFORMATION = 2504 , MAV_CMD_REQUEST_VIDEO_STREAM_STATUS = 2505 , MAV_CMD_LOGGING_START = 2510 , MAV_CMD_LOGGING_STOP = 2511 , MAV_CMD_AIRFRAME_CONFIGURATION = 2520 , MAV_CMD_CONTROL_HIGH_LATENCY = 2600 , MAV_CMD_PANORAMA_CREATE = 2800 , MAV_CMD_DO_VTOL_TRANSITION = 3000 , MAV_CMD_ARM_AUTHORIZATION_REQUEST = 3001 , MAV_CMD_SET_GUIDED_SUBMODE_STANDARD = 4000 , MAV_CMD_SET_GUIDED_SUBMODE_CIRCLE = 4001 , MAV_CMD_CONDITION_GATE = 4501 , MAV_CMD_NAV_FENCE_RETURN_POINT = 5000 , MAV_CMD_NAV_FENCE_POLYGON_VERTEX_INCLUSION = 5001 , MAV_CMD_NAV_FENCE_POLYGON_VERTEX_EXCLUSION = 5002 , MAV_CMD_NAV_FENCE_CIRCLE_INCLUSION = 5003 , MAV_CMD_NAV_FENCE_CIRCLE_EXCLUSION = 5004 , MAV_CMD_NAV_RALLY_POINT = 5100 , MAV_CMD_UAVCAN_GET_NODE_INFO = 5200 , MAV_CMD_DO_ADSB_OUT_IDENT = 10001 , MAV_CMD_PAYLOAD_PREPARE_DEPLOY = 30001 , MAV_CMD_PAYLOAD_CONTROL_DEPLOY = 30002 , MAV_CMD_FIXED_MAG_CAL_YAW = 42006 , MAV_CMD_DO_WINCH = 42600 , MAV_CMD_WAYPOINT_USER_1 = 31000 , MAV_CMD_WAYPOINT_USER_2 = 31001 , MAV_CMD_WAYPOINT_USER_3 = 31002 , MAV_CMD_WAYPOINT_USER_4 = 31003 , MAV_CMD_WAYPOINT_USER_5 = 31004 , MAV_CMD_SPATIAL_USER_1 = 31005 , MAV_CMD_SPATIAL_USER_2 = 31006 , MAV_CMD_SPATIAL_USER_3 = 31007 , MAV_CMD_SPATIAL_USER_4 = 31008 , MAV_CMD_SPATIAL_USER_5 = 31009 , MAV_CMD_USER_1 = 31010 , MAV_CMD_USER_2 = 31011 , MAV_CMD_USER_3 = 31012 , MAV_CMD_USER_4 = 31013 , MAV_CMD_USER_5 = 31014 , MAV_CMD_CAN_FORWARD = 32000 , MAV_CMD_DO_SET_RESUME_REPEAT_DIST = 215 , MAV_CMD_DO_SPRAYER = 216 , MAV_CMD_DO_SEND_SCRIPT_MESSAGE = 217 , MAV_CMD_DO_AUX_FUNCTION = 218 , MAV_CMD_NAV_ALTITUDE_WAIT = 83 , MAV_CMD_POWER_OFF_INITIATED = 42000 , MAV_CMD_SOLO_BTN_FLY_CLICK = 42001 , MAV_CMD_SOLO_BTN_FLY_HOLD = 42002 , MAV_CMD_SOLO_BTN_PAUSE_CLICK = 42003 , MAV_CMD_FIXED_MAG_CAL = 42004 , MAV_CMD_FIXED_MAG_CAL_FIELD = 42005 , MAV_CMD_SET_EKF_SOURCE_SET = 42007 , MAV_CMD_DO_START_MAG_CAL = 42424 , MAV_CMD_DO_ACCEPT_MAG_CAL = 42425 , MAV_CMD_DO_CANCEL_MAG_CAL = 42426 , MAV_CMD_ACCELCAL_VEHICLE_POS = 42429 , MAV_CMD_DO_SEND_BANNER = 42428 , MAV_CMD_SET_FACTORY_TEST_MODE = 42427 , MAV_CMD_GIMBAL_RESET = 42501 , MAV_CMD_GIMBAL_AXIS_CALIBRATION_STATUS = 42502 , MAV_CMD_GIMBAL_REQUEST_AXIS_CALIBRATION = 42503 , MAV_CMD_GIMBAL_FULL_RESET = 42505 , MAV_CMD_FLASH_BOOTLOADER = 42650 , MAV_CMD_BATTERY_RESET = 42651 , MAV_CMD_DEBUG_TRAP = 42700 , MAV_CMD_SCRIPTING = 42701 , MAV_CMD_NAV_SCRIPT_TIME = 42702 , MAV_CMD_NAV_ATTITUDE_TIME = 42703 , MAV_CMD_GUIDED_CHANGE_SPEED = 43000 , MAV_CMD_GUIDED_CHANGE_ALTITUDE = 43001 , MAV_CMD_GUIDED_CHANGE_HEADING = 43002 , } impl MavCmd { pub const DEFAULT : Self = Self :: MAV_CMD_NAV_WAYPOINT ; } impl Default for MavCmd { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct AttitudeTargetTypemask : u8 { const ATTITUDE_TARGET_TYPEMASK_BODY_ROLL_RATE_IGNORE = 1 ; const ATTITUDE_TARGET_TYPEMASK_BODY_PITCH_RATE_IGNORE = 2 ; const ATTITUDE_TARGET_TYPEMASK_BODY_YAW_RATE_IGNORE = 4 ; const ATTITUDE_TARGET_TYPEMASK_THRUST_BODY_SET = 32 ; const ATTITUDE_TARGET_TYPEMASK_THROTTLE_IGNORE = 64 ; const ATTITUDE_TARGET_TYPEMASK_ATTITUDE_IGNORE = 128 ; } } impl AttitudeTargetTypemask { pub const DEFAULT : Self = Self :: ATTITUDE_TARGET_TYPEMASK_BODY_ROLL_RATE_IGNORE ; } impl Default for AttitudeTargetTypemask { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum GimbalAxis { GIMBAL_AXIS_YAW = 0 , GIMBAL_AXIS_PITCH = 1 , GIMBAL_AXIS_ROLL = 2 , } impl GimbalAxis { pub const DEFAULT : Self = Self :: GIMBAL_AXIS_YAW ; } impl Default for GimbalAxis { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MavProtocolCapability : u64 { const MAV_PROTOCOL_CAPABILITY_MISSION_FLOAT = 1 ; const MAV_PROTOCOL_CAPABILITY_PARAM_FLOAT = 2 ; const MAV_PROTOCOL_CAPABILITY_MISSION_INT = 4 ; const MAV_PROTOCOL_CAPABILITY_COMMAND_INT = 8 ; const MAV_PROTOCOL_CAPABILITY_PARAM_ENCODE_BYTEWISE = 16 ; const MAV_PROTOCOL_CAPABILITY_FTP = 32 ; const MAV_PROTOCOL_CAPABILITY_SET_ATTITUDE_TARGET = 64 ; const MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_LOCAL_NED = 128 ; const MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_GLOBAL_INT = 256 ; const MAV_PROTOCOL_CAPABILITY_TERRAIN = 512 ; const MAV_PROTOCOL_CAPABILITY_SET_ACTUATOR_TARGET = 1024 ; const MAV_PROTOCOL_CAPABILITY_FLIGHT_TERMINATION = 2048 ; const MAV_PROTOCOL_CAPABILITY_COMPASS_CALIBRATION = 4096 ; const MAV_PROTOCOL_CAPABILITY_MAVLINK2 = 8192 ; const MAV_PROTOCOL_CAPABILITY_MISSION_FENCE = 16384 ; const MAV_PROTOCOL_CAPABILITY_MISSION_RALLY = 32768 ; const MAV_PROTOCOL_CAPABILITY_RESERVED2 = 65536 ; const MAV_PROTOCOL_CAPABILITY_PARAM_ENCODE_C_CAST = 131072 ; } } impl MavProtocolCapability { pub const DEFAULT : Self = Self :: MAV_PROTOCOL_CAPABILITY_MISSION_FLOAT ; } impl Default for MavProtocolCapability { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavBatteryType { MAV_BATTERY_TYPE_UNKNOWN = 0 , MAV_BATTERY_TYPE_LIPO = 1 , MAV_BATTERY_TYPE_LIFE = 2 , MAV_BATTERY_TYPE_LION = 3 , MAV_BATTERY_TYPE_NIMH = 4 , } impl MavBatteryType { pub const DEFAULT : Self = Self :: MAV_BATTERY_TYPE_UNKNOWN ; } impl Default for MavBatteryType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum UavionixAdsbEmergencyStatus { UAVIONIX_ADSB_OUT_NO_EMERGENCY = 0 , UAVIONIX_ADSB_OUT_GENERAL_EMERGENCY = 1 , UAVIONIX_ADSB_OUT_LIFEGUARD_EMERGENCY = 2 , UAVIONIX_ADSB_OUT_MINIMUM_FUEL_EMERGENCY = 3 , UAVIONIX_ADSB_OUT_NO_COMM_EMERGENCY = 4 , UAVIONIX_ADSB_OUT_UNLAWFUL_INTERFERANCE_EMERGENCY = 5 , UAVIONIX_ADSB_OUT_DOWNED_AIRCRAFT_EMERGENCY = 6 , UAVIONIX_ADSB_OUT_RESERVED = 7 , } impl UavionixAdsbEmergencyStatus { pub const DEFAULT : Self = Self :: UAVIONIX_ADSB_OUT_NO_EMERGENCY ; } impl Default for UavionixAdsbEmergencyStatus { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum GoproProtuneSharpness { GOPRO_PROTUNE_SHARPNESS_LOW = 0 , GOPRO_PROTUNE_SHARPNESS_MEDIUM = 1 , GOPRO_PROTUNE_SHARPNESS_HIGH = 2 , } impl GoproProtuneSharpness { pub const DEFAULT : Self = Self :: GOPRO_PROTUNE_SHARPNESS_LOW ; } impl Default for GoproProtuneSharpness { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct EkfStatusFlags : u16 { const EKF_ATTITUDE = 1 ; const EKF_VELOCITY_HORIZ = 2 ; const EKF_VELOCITY_VERT = 4 ; const EKF_POS_HORIZ_REL = 8 ; const EKF_POS_HORIZ_ABS = 16 ; const EKF_POS_VERT_ABS = 32 ; const EKF_POS_VERT_AGL = 64 ; const EKF_CONST_POS_MODE = 128 ; const EKF_PRED_POS_HORIZ_REL = 256 ; const EKF_PRED_POS_HORIZ_ABS = 512 ; const EKF_UNINITIALIZED = 1024 ; } } impl EkfStatusFlags { pub const DEFAULT : Self = Self :: EKF_ATTITUDE ; } impl Default for EkfStatusFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum UtmFlightState { UTM_FLIGHT_STATE_UNKNOWN = 1 , UTM_FLIGHT_STATE_GROUND = 2 , UTM_FLIGHT_STATE_AIRBORNE = 3 , UTM_FLIGHT_STATE_EMERGENCY = 16 , UTM_FLIGHT_STATE_NOCTRL = 32 , } impl UtmFlightState { pub const DEFAULT : Self = Self :: UTM_FLIGHT_STATE_UNKNOWN ; } impl Default for UtmFlightState { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum UavionixAdsbOutCfgAircraftSize { UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_NO_DATA = 0 , UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L15M_W23M = 1 , UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L25M_W28P5M = 2 , UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L25_34M = 3 , UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L35_33M = 4 , UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L35_38M = 5 , UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L45_39P5M = 6 , UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L45_45M = 7 , UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L55_45M = 8 , UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L55_52M = 9 , UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L65_59P5M = 10 , UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L65_67M = 11 , UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L75_W72P5M = 12 , UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L75_W80M = 13 , UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L85_W80M = 14 , UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L85_W90M = 15 , } impl UavionixAdsbOutCfgAircraftSize { pub const DEFAULT : Self = Self :: UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_NO_DATA ; } impl Default for UavionixAdsbOutCfgAircraftSize { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavRemoteLogDataBlockCommands { MAV_REMOTE_LOG_DATA_BLOCK_STOP = 2147483645 , MAV_REMOTE_LOG_DATA_BLOCK_START = 2147483646 , } impl MavRemoteLogDataBlockCommands { pub const DEFAULT : Self = Self :: MAV_REMOTE_LOG_DATA_BLOCK_STOP ; } impl Default for MavRemoteLogDataBlockCommands { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum FenceAction { FENCE_ACTION_NONE = 0 , FENCE_ACTION_GUIDED = 1 , FENCE_ACTION_REPORT = 2 , FENCE_ACTION_GUIDED_THR_PASS = 3 , FENCE_ACTION_RTL = 4 , FENCE_ACTION_HOLD = 5 , FENCE_ACTION_TERMINATE = 6 , FENCE_ACTION_LAND = 7 , } impl FenceAction { pub const DEFAULT : Self = Self :: FENCE_ACTION_NONE ; } impl Default for FenceAction { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum CameraTrackingTargetData { CAMERA_TRACKING_TARGET_DATA_NONE = 0 , CAMERA_TRACKING_TARGET_DATA_EMBEDDED = 1 , CAMERA_TRACKING_TARGET_DATA_RENDERED = 2 , CAMERA_TRACKING_TARGET_DATA_IN_STATUS = 4 , } impl CameraTrackingTargetData { pub const DEFAULT : Self = Self :: CAMERA_TRACKING_TARGET_DATA_NONE ; } impl Default for CameraTrackingTargetData { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum GoproCommand { GOPRO_COMMAND_POWER = 0 , GOPRO_COMMAND_CAPTURE_MODE = 1 , GOPRO_COMMAND_SHUTTER = 2 , GOPRO_COMMAND_BATTERY = 3 , GOPRO_COMMAND_MODEL = 4 , GOPRO_COMMAND_VIDEO_SETTINGS = 5 , GOPRO_COMMAND_LOW_LIGHT = 6 , GOPRO_COMMAND_PHOTO_RESOLUTION = 7 , GOPRO_COMMAND_PHOTO_BURST_RATE = 8 , GOPRO_COMMAND_PROTUNE = 9 , GOPRO_COMMAND_PROTUNE_WHITE_BALANCE = 10 , GOPRO_COMMAND_PROTUNE_COLOUR = 11 , GOPRO_COMMAND_PROTUNE_GAIN = 12 , GOPRO_COMMAND_PROTUNE_SHARPNESS = 13 , GOPRO_COMMAND_PROTUNE_EXPOSURE = 14 , GOPRO_COMMAND_TIME = 15 , GOPRO_COMMAND_CHARGING = 16 , } impl GoproCommand { pub const DEFAULT : Self = Self :: GOPRO_COMMAND_POWER ; } impl Default for GoproCommand { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavResult { MAV_RESULT_ACCEPTED = 0 , MAV_RESULT_TEMPORARILY_REJECTED = 1 , MAV_RESULT_DENIED = 2 , MAV_RESULT_UNSUPPORTED = 3 , MAV_RESULT_FAILED = 4 , MAV_RESULT_IN_PROGRESS = 5 , MAV_RESULT_CANCELLED = 6 , } impl MavResult { pub const DEFAULT : Self = Self :: MAV_RESULT_ACCEPTED ; } impl Default for MavResult { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum FenceBreach { FENCE_BREACH_NONE = 0 , FENCE_BREACH_MINALT = 1 , FENCE_BREACH_MAXALT = 2 , FENCE_BREACH_BOUNDARY = 3 , } impl FenceBreach { pub const DEFAULT : Self = Self :: FENCE_BREACH_NONE ; } impl Default for FenceBreach { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum CellularConfigResponse { CELLULAR_CONFIG_RESPONSE_ACCEPTED = 0 , CELLULAR_CONFIG_RESPONSE_APN_ERROR = 1 , CELLULAR_CONFIG_RESPONSE_PIN_ERROR = 2 , CELLULAR_CONFIG_RESPONSE_REJECTED = 3 , CELLULAR_CONFIG_BLOCKED_PUK_REQUIRED = 4 , } impl CellularConfigResponse { pub const DEFAULT : Self = Self :: CELLULAR_CONFIG_RESPONSE_ACCEPTED ; } impl Default for CellularConfigResponse { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavState { MAV_STATE_UNINIT = 0 , MAV_STATE_BOOT = 1 , MAV_STATE_CALIBRATING = 2 , MAV_STATE_STANDBY = 3 , MAV_STATE_ACTIVE = 4 , MAV_STATE_CRITICAL = 5 , MAV_STATE_EMERGENCY = 6 , MAV_STATE_POWEROFF = 7 , MAV_STATE_FLIGHT_TERMINATION = 8 , } impl MavState { pub const DEFAULT : Self = Self :: MAV_STATE_UNINIT ; } impl Default for MavState { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum GoproProtuneGain { GOPRO_PROTUNE_GAIN_400 = 0 , GOPRO_PROTUNE_GAIN_800 = 1 , GOPRO_PROTUNE_GAIN_1600 = 2 , GOPRO_PROTUNE_GAIN_3200 = 3 , GOPRO_PROTUNE_GAIN_6400 = 4 , } impl GoproProtuneGain { pub const DEFAULT : Self = Self :: GOPRO_PROTUNE_GAIN_400 ; } impl Default for GoproProtuneGain { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct EscFailureFlags : u16 { const ESC_FAILURE_NONE = 0 ; const ESC_FAILURE_OVER_CURRENT = 1 ; const ESC_FAILURE_OVER_VOLTAGE = 2 ; const ESC_FAILURE_OVER_TEMPERATURE = 4 ; const ESC_FAILURE_OVER_RPM = 8 ; const ESC_FAILURE_INCONSISTENT_CMD = 16 ; const ESC_FAILURE_MOTOR_STUCK = 32 ; const ESC_FAILURE_GENERIC = 64 ; } } impl EscFailureFlags { pub const DEFAULT : Self = Self :: ESC_FAILURE_NONE ; } impl Default for EscFailureFlags { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CameraCapFlags : u32 { const CAMERA_CAP_FLAGS_CAPTURE_VIDEO = 1 ; const CAMERA_CAP_FLAGS_CAPTURE_IMAGE = 2 ; const CAMERA_CAP_FLAGS_HAS_MODES = 4 ; const CAMERA_CAP_FLAGS_CAN_CAPTURE_IMAGE_IN_VIDEO_MODE = 8 ; const CAMERA_CAP_FLAGS_CAN_CAPTURE_VIDEO_IN_IMAGE_MODE = 16 ; const CAMERA_CAP_FLAGS_HAS_IMAGE_SURVEY_MODE = 32 ; const CAMERA_CAP_FLAGS_HAS_BASIC_ZOOM = 64 ; const CAMERA_CAP_FLAGS_HAS_BASIC_FOCUS = 128 ; const CAMERA_CAP_FLAGS_HAS_VIDEO_STREAM = 256 ; const CAMERA_CAP_FLAGS_HAS_TRACKING_POINT = 512 ; const CAMERA_CAP_FLAGS_HAS_TRACKING_RECTANGLE = 1024 ; const CAMERA_CAP_FLAGS_HAS_TRACKING_GEO_STATUS = 2048 ; } } impl CameraCapFlags { pub const DEFAULT : Self = Self :: CAMERA_CAP_FLAGS_CAPTURE_VIDEO ; } impl Default for CameraCapFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum GoproBurstRate { GOPRO_BURST_RATE_3_IN_1_SECOND = 0 , GOPRO_BURST_RATE_5_IN_1_SECOND = 1 , GOPRO_BURST_RATE_10_IN_1_SECOND = 2 , GOPRO_BURST_RATE_10_IN_2_SECOND = 3 , GOPRO_BURST_RATE_10_IN_3_SECOND = 4 , GOPRO_BURST_RATE_30_IN_1_SECOND = 5 , GOPRO_BURST_RATE_30_IN_2_SECOND = 6 , GOPRO_BURST_RATE_30_IN_3_SECOND = 7 , GOPRO_BURST_RATE_30_IN_6_SECOND = 8 , } impl GoproBurstRate { pub const DEFAULT : Self = Self :: GOPRO_BURST_RATE_3_IN_1_SECOND ; } impl Default for GoproBurstRate { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavGoto { MAV_GOTO_DO_HOLD = 0 , MAV_GOTO_DO_CONTINUE = 1 , MAV_GOTO_HOLD_AT_CURRENT_POSITION = 2 , MAV_GOTO_HOLD_AT_SPECIFIED_POSITION = 3 , } impl MavGoto { pub const DEFAULT : Self = Self :: MAV_GOTO_DO_HOLD ; } impl Default for MavGoto { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MavModeFlag : u8 { const MAV_MODE_FLAG_SAFETY_ARMED = 128 ; const MAV_MODE_FLAG_MANUAL_INPUT_ENABLED = 64 ; const MAV_MODE_FLAG_HIL_ENABLED = 32 ; const MAV_MODE_FLAG_STABILIZE_ENABLED = 16 ; const MAV_MODE_FLAG_GUIDED_ENABLED = 8 ; const MAV_MODE_FLAG_AUTO_ENABLED = 4 ; const MAV_MODE_FLAG_TEST_ENABLED = 2 ; const MAV_MODE_FLAG_CUSTOM_MODE_ENABLED = 1 ; } } impl MavModeFlag { pub const DEFAULT : Self = Self :: MAV_MODE_FLAG_SAFETY_ARMED ; } impl Default for MavModeFlag { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavCmdAck { MAV_CMD_ACK_OK = 0 , MAV_CMD_ACK_ERR_FAIL = 1 , MAV_CMD_ACK_ERR_ACCESS_DENIED = 2 , MAV_CMD_ACK_ERR_NOT_SUPPORTED = 3 , MAV_CMD_ACK_ERR_COORDINATE_FRAME_NOT_SUPPORTED = 4 , MAV_CMD_ACK_ERR_COORDINATES_OUT_OF_RANGE = 5 , MAV_CMD_ACK_ERR_X_LAT_OUT_OF_RANGE = 6 , MAV_CMD_ACK_ERR_Y_LON_OUT_OF_RANGE = 7 , MAV_CMD_ACK_ERR_Z_ALT_OUT_OF_RANGE = 8 , } impl MavCmdAck { pub const DEFAULT : Self = Self :: MAV_CMD_ACK_OK ; } impl Default for MavCmdAck { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MotorTestThrottleType { MOTOR_TEST_THROTTLE_PERCENT = 0 , MOTOR_TEST_THROTTLE_PWM = 1 , MOTOR_TEST_THROTTLE_PILOT = 2 , MOTOR_TEST_COMPASS_CAL = 3 , } impl MotorTestThrottleType { pub const DEFAULT : Self = Self :: MOTOR_TEST_THROTTLE_PERCENT ; } impl Default for MotorTestThrottleType { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HlFailureFlag : u16 { const HL_FAILURE_FLAG_GPS = 1 ; const HL_FAILURE_FLAG_DIFFERENTIAL_PRESSURE = 2 ; const HL_FAILURE_FLAG_ABSOLUTE_PRESSURE = 4 ; const HL_FAILURE_FLAG_3D_ACCEL = 8 ; const HL_FAILURE_FLAG_3D_GYRO = 16 ; const HL_FAILURE_FLAG_3D_MAG = 32 ; const HL_FAILURE_FLAG_TERRAIN = 64 ; const HL_FAILURE_FLAG_BATTERY = 128 ; const HL_FAILURE_FLAG_RC_RECEIVER = 256 ; const HL_FAILURE_FLAG_OFFBOARD_LINK = 512 ; const HL_FAILURE_FLAG_ENGINE = 1024 ; const HL_FAILURE_FLAG_GEOFENCE = 2048 ; const HL_FAILURE_FLAG_ESTIMATOR = 4096 ; const HL_FAILURE_FLAG_MISSION = 8192 ; } } impl HlFailureFlag { pub const DEFAULT : Self = Self :: HL_FAILURE_FLAG_GPS ; } impl Default for HlFailureFlag { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum PlaneMode { PLANE_MODE_MANUAL = 0 , PLANE_MODE_CIRCLE = 1 , PLANE_MODE_STABILIZE = 2 , PLANE_MODE_TRAINING = 3 , PLANE_MODE_ACRO = 4 , PLANE_MODE_FLY_BY_WIRE_A = 5 , PLANE_MODE_FLY_BY_WIRE_B = 6 , PLANE_MODE_CRUISE = 7 , PLANE_MODE_AUTOTUNE = 8 , PLANE_MODE_AUTO = 10 , PLANE_MODE_RTL = 11 , PLANE_MODE_LOITER = 12 , PLANE_MODE_TAKEOFF = 13 , PLANE_MODE_AVOID_ADSB = 14 , PLANE_MODE_GUIDED = 15 , PLANE_MODE_INITIALIZING = 16 , PLANE_MODE_QSTABILIZE = 17 , PLANE_MODE_QHOVER = 18 , PLANE_MODE_QLOITER = 19 , PLANE_MODE_QLAND = 20 , PLANE_MODE_QRTL = 21 , PLANE_MODE_QAUTOTUNE = 22 , PLANE_MODE_QACRO = 23 , PLANE_MODE_THERMAL = 24 , } impl PlaneMode { pub const DEFAULT : Self = Self :: PLANE_MODE_MANUAL ; } impl Default for PlaneMode { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum GoproProtuneColour { GOPRO_PROTUNE_COLOUR_STANDARD = 0 , GOPRO_PROTUNE_COLOUR_NEUTRAL = 1 , } impl GoproProtuneColour { pub const DEFAULT : Self = Self :: GOPRO_PROTUNE_COLOUR_STANDARD ; } impl Default for GoproProtuneColour { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum StorageType { STORAGE_TYPE_UNKNOWN = 0 , STORAGE_TYPE_USB_STICK = 1 , STORAGE_TYPE_SD = 2 , STORAGE_TYPE_MICROSD = 3 , STORAGE_TYPE_CF = 4 , STORAGE_TYPE_CFE = 5 , STORAGE_TYPE_XQD = 6 , STORAGE_TYPE_HD = 7 , STORAGE_TYPE_OTHER = 254 , } impl StorageType { pub const DEFAULT : Self = Self :: STORAGE_TYPE_UNKNOWN ; } impl Default for StorageType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavParamExtType { MAV_PARAM_EXT_TYPE_UINT8 = 1 , MAV_PARAM_EXT_TYPE_INT8 = 2 , MAV_PARAM_EXT_TYPE_UINT16 = 3 , MAV_PARAM_EXT_TYPE_INT16 = 4 , MAV_PARAM_EXT_TYPE_UINT32 = 5 , MAV_PARAM_EXT_TYPE_INT32 = 6 , MAV_PARAM_EXT_TYPE_UINT64 = 7 , MAV_PARAM_EXT_TYPE_INT64 = 8 , MAV_PARAM_EXT_TYPE_REAL32 = 9 , MAV_PARAM_EXT_TYPE_REAL64 = 10 , MAV_PARAM_EXT_TYPE_CUSTOM = 11 , } impl MavParamExtType { pub const DEFAULT : Self = Self :: MAV_PARAM_EXT_TYPE_UINT8 ; } impl Default for MavParamExtType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavFtpOpcode { MAV_FTP_OPCODE_NONE = 0 , MAV_FTP_OPCODE_TERMINATESESSION = 1 , MAV_FTP_OPCODE_RESETSESSION = 2 , MAV_FTP_OPCODE_LISTDIRECTORY = 3 , MAV_FTP_OPCODE_OPENFILERO = 4 , MAV_FTP_OPCODE_READFILE = 5 , MAV_FTP_OPCODE_CREATEFILE = 6 , MAV_FTP_OPCODE_WRITEFILE = 7 , MAV_FTP_OPCODE_REMOVEFILE = 8 , MAV_FTP_OPCODE_CREATEDIRECTORY = 9 , MAV_FTP_OPCODE_REMOVEDIRECTORY = 10 , MAV_FTP_OPCODE_OPENFILEWO = 11 , MAV_FTP_OPCODE_TRUNCATEFILE = 12 , MAV_FTP_OPCODE_RENAME = 13 , MAV_FTP_OPCODE_CALCFILECRC = 14 , MAV_FTP_OPCODE_BURSTREADFILE = 15 , MAV_FTP_OPCODE_ACK = 128 , MAV_FTP_OPCODE_NAK = 129 , } impl MavFtpOpcode { pub const DEFAULT : Self = Self :: MAV_FTP_OPCODE_NONE ; } impl Default for MavFtpOpcode { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum GoproHeartbeatStatus { GOPRO_HEARTBEAT_STATUS_DISCONNECTED = 0 , GOPRO_HEARTBEAT_STATUS_INCOMPATIBLE = 1 , GOPRO_HEARTBEAT_STATUS_CONNECTED = 2 , GOPRO_HEARTBEAT_STATUS_ERROR = 3 , } impl GoproHeartbeatStatus { pub const DEFAULT : Self = Self :: GOPRO_HEARTBEAT_STATUS_DISCONNECTED ; } impl Default for GoproHeartbeatStatus { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct EstimatorStatusFlags : u16 { const ESTIMATOR_ATTITUDE = 1 ; const ESTIMATOR_VELOCITY_HORIZ = 2 ; const ESTIMATOR_VELOCITY_VERT = 4 ; const ESTIMATOR_POS_HORIZ_REL = 8 ; const ESTIMATOR_POS_HORIZ_ABS = 16 ; const ESTIMATOR_POS_VERT_ABS = 32 ; const ESTIMATOR_POS_VERT_AGL = 64 ; const ESTIMATOR_CONST_POS_MODE = 128 ; const ESTIMATOR_PRED_POS_HORIZ_REL = 256 ; const ESTIMATOR_PRED_POS_HORIZ_ABS = 512 ; const ESTIMATOR_GPS_GLITCH = 1024 ; const ESTIMATOR_ACCEL_ERROR = 2048 ; } } impl EstimatorStatusFlags { pub const DEFAULT : Self = Self :: ESTIMATOR_ATTITUDE ; } impl Default for EstimatorStatusFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum FenceMitigate { FENCE_MITIGATE_UNKNOWN = 0 , FENCE_MITIGATE_NONE = 1 , FENCE_MITIGATE_VEL_LIMIT = 2 , } impl FenceMitigate { pub const DEFAULT : Self = Self :: FENCE_MITIGATE_UNKNOWN ; } impl Default for FenceMitigate { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum WinchActions { WINCH_RELAXED = 0 , WINCH_RELATIVE_LENGTH_CONTROL = 1 , WINCH_RATE_CONTROL = 2 , WINCH_LOCK = 3 , WINCH_DELIVER = 4 , WINCH_HOLD = 5 , WINCH_RETRACT = 6 , WINCH_LOAD_LINE = 7 , WINCH_ABANDON_LINE = 8 , WINCH_LOAD_PAYLOAD = 9 , } impl WinchActions { pub const DEFAULT : Self = Self :: WINCH_RELAXED ; } impl Default for WinchActions { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum VtolTransitionHeading { VTOL_TRANSITION_HEADING_VEHICLE_DEFAULT = 0 , VTOL_TRANSITION_HEADING_NEXT_WAYPOINT = 1 , VTOL_TRANSITION_HEADING_TAKEOFF = 2 , VTOL_TRANSITION_HEADING_SPECIFIED = 3 , VTOL_TRANSITION_HEADING_ANY = 4 , } impl VtolTransitionHeading { pub const DEFAULT : Self = Self :: VTOL_TRANSITION_HEADING_VEHICLE_DEFAULT ; } impl Default for VtolTransitionHeading { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum FirmwareVersionType { FIRMWARE_VERSION_TYPE_DEV = 0 , FIRMWARE_VERSION_TYPE_ALPHA = 64 , FIRMWARE_VERSION_TYPE_BETA = 128 , FIRMWARE_VERSION_TYPE_RC = 192 , FIRMWARE_VERSION_TYPE_OFFICIAL = 255 , } impl FirmwareVersionType { pub const DEFAULT : Self = Self :: FIRMWARE_VERSION_TYPE_DEV ; } impl Default for FirmwareVersionType { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GimbalDeviceFlags : u16 { const GIMBAL_DEVICE_FLAGS_RETRACT = 1 ; const GIMBAL_DEVICE_FLAGS_NEUTRAL = 2 ; const GIMBAL_DEVICE_FLAGS_ROLL_LOCK = 4 ; const GIMBAL_DEVICE_FLAGS_PITCH_LOCK = 8 ; const GIMBAL_DEVICE_FLAGS_YAW_LOCK = 16 ; const GIMBAL_DEVICE_FLAGS_YAW_IN_VEHICLE_FRAME = 32 ; const GIMBAL_DEVICE_FLAGS_YAW_IN_EARTH_FRAME = 64 ; const GIMBAL_DEVICE_FLAGS_ACCEPTS_YAW_IN_EARTH_FRAME = 128 ; const GIMBAL_DEVICE_FLAGS_RC_EXCLUSIVE = 256 ; const GIMBAL_DEVICE_FLAGS_RC_MIXED = 512 ; } } impl GimbalDeviceFlags { pub const DEFAULT : Self = Self :: GIMBAL_DEVICE_FLAGS_RETRACT ; } impl Default for GimbalDeviceFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum GoproPhotoResolution { GOPRO_PHOTO_RESOLUTION_5MP_MEDIUM = 0 , GOPRO_PHOTO_RESOLUTION_7MP_MEDIUM = 1 , GOPRO_PHOTO_RESOLUTION_7MP_WIDE = 2 , GOPRO_PHOTO_RESOLUTION_10MP_WIDE = 3 , GOPRO_PHOTO_RESOLUTION_12MP_WIDE = 4 , } impl GoproPhotoResolution { pub const DEFAULT : Self = Self :: GOPRO_PHOTO_RESOLUTION_5MP_MEDIUM ; } impl Default for GoproPhotoResolution { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum EscConnectionType { ESC_CONNECTION_TYPE_PPM = 0 , ESC_CONNECTION_TYPE_SERIAL = 1 , ESC_CONNECTION_TYPE_ONESHOT = 2 , ESC_CONNECTION_TYPE_I2C = 3 , ESC_CONNECTION_TYPE_CAN = 4 , ESC_CONNECTION_TYPE_DSHOT = 5 , } impl EscConnectionType { pub const DEFAULT : Self = Self :: ESC_CONNECTION_TYPE_PPM ; } impl Default for EscConnectionType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum AisNavStatus { UNDER_WAY = 0 , AIS_NAV_ANCHORED = 1 , AIS_NAV_UN_COMMANDED = 2 , AIS_NAV_RESTRICTED_MANOEUVERABILITY = 3 , AIS_NAV_DRAUGHT_CONSTRAINED = 4 , AIS_NAV_MOORED = 5 , AIS_NAV_AGROUND = 6 , AIS_NAV_FISHING = 7 , AIS_NAV_SAILING = 8 , AIS_NAV_RESERVED_HSC = 9 , AIS_NAV_RESERVED_WIG = 10 , AIS_NAV_RESERVED_1 = 11 , AIS_NAV_RESERVED_2 = 12 , AIS_NAV_RESERVED_3 = 13 , AIS_NAV_AIS_SART = 14 , AIS_NAV_UNKNOWN = 15 , } impl AisNavStatus { pub const DEFAULT : Self = Self :: UNDER_WAY ; } impl Default for AisNavStatus { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum GoproCharging { GOPRO_CHARGING_DISABLED = 0 , GOPRO_CHARGING_ENABLED = 1 , } impl GoproCharging { pub const DEFAULT : Self = Self :: GOPRO_CHARGING_DISABLED ; } impl Default for GoproCharging { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum VideoStreamStatusFlags { VIDEO_STREAM_STATUS_FLAGS_RUNNING = 1 , VIDEO_STREAM_STATUS_FLAGS_THERMAL = 2 , } impl VideoStreamStatusFlags { pub const DEFAULT : Self = Self :: VIDEO_STREAM_STATUS_FLAGS_RUNNING ; } impl Default for VideoStreamStatusFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum GoproProtuneWhiteBalance { GOPRO_PROTUNE_WHITE_BALANCE_AUTO = 0 , GOPRO_PROTUNE_WHITE_BALANCE_3000K = 1 , GOPRO_PROTUNE_WHITE_BALANCE_5500K = 2 , GOPRO_PROTUNE_WHITE_BALANCE_6500K = 3 , GOPRO_PROTUNE_WHITE_BALANCE_RAW = 4 , } impl GoproProtuneWhiteBalance { pub const DEFAULT : Self = Self :: GOPRO_PROTUNE_WHITE_BALANCE_AUTO ; } impl Default for GoproProtuneWhiteBalance { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidClassEu { MAV_ODID_CLASS_EU_UNDECLARED = 0 , MAV_ODID_CLASS_EU_CLASS_0 = 1 , MAV_ODID_CLASS_EU_CLASS_1 = 2 , MAV_ODID_CLASS_EU_CLASS_2 = 3 , MAV_ODID_CLASS_EU_CLASS_3 = 4 , MAV_ODID_CLASS_EU_CLASS_4 = 5 , MAV_ODID_CLASS_EU_CLASS_5 = 6 , MAV_ODID_CLASS_EU_CLASS_6 = 7 , } impl MavOdidClassEu { pub const DEFAULT : Self = Self :: MAV_ODID_CLASS_EU_UNDECLARED ; } impl Default for MavOdidClassEu { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidIdType { MAV_ODID_ID_TYPE_NONE = 0 , MAV_ODID_ID_TYPE_SERIAL_NUMBER = 1 , MAV_ODID_ID_TYPE_CAA_REGISTRATION_ID = 2 , MAV_ODID_ID_TYPE_UTM_ASSIGNED_UUID = 3 , MAV_ODID_ID_TYPE_SPECIFIC_SESSION_ID = 4 , } impl MavOdidIdType { pub const DEFAULT : Self = Self :: MAV_ODID_ID_TYPE_NONE ; } impl Default for MavOdidIdType { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct UtmDataAvailFlags : u8 { const UTM_DATA_AVAIL_FLAGS_TIME_VALID = 1 ; const UTM_DATA_AVAIL_FLAGS_UAS_ID_AVAILABLE = 2 ; const UTM_DATA_AVAIL_FLAGS_POSITION_AVAILABLE = 4 ; const UTM_DATA_AVAIL_FLAGS_ALTITUDE_AVAILABLE = 8 ; const UTM_DATA_AVAIL_FLAGS_RELATIVE_ALTITUDE_AVAILABLE = 16 ; const UTM_DATA_AVAIL_FLAGS_HORIZONTAL_VELO_AVAILABLE = 32 ; const UTM_DATA_AVAIL_FLAGS_VERTICAL_VELO_AVAILABLE = 64 ; const UTM_DATA_AVAIL_FLAGS_NEXT_WAYPOINT_AVAILABLE = 128 ; } } impl UtmDataAvailFlags { pub const DEFAULT : Self = Self :: UTM_DATA_AVAIL_FLAGS_TIME_VALID ; } impl Default for UtmDataAvailFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum CameraZoomType { ZOOM_TYPE_STEP = 0 , ZOOM_TYPE_CONTINUOUS = 1 , ZOOM_TYPE_RANGE = 2 , ZOOM_TYPE_FOCAL_LENGTH = 3 , } impl CameraZoomType { pub const DEFAULT : Self = Self :: ZOOM_TYPE_STEP ; } impl Default for CameraZoomType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum UavcanNodeHealth { UAVCAN_NODE_HEALTH_OK = 0 , UAVCAN_NODE_HEALTH_WARNING = 1 , UAVCAN_NODE_HEALTH_ERROR = 2 , UAVCAN_NODE_HEALTH_CRITICAL = 3 , } impl UavcanNodeHealth { pub const DEFAULT : Self = Self :: UAVCAN_NODE_HEALTH_OK ; } impl Default for UavcanNodeHealth { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum ParachuteAction { PARACHUTE_DISABLE = 0 , PARACHUTE_ENABLE = 1 , PARACHUTE_RELEASE = 2 , } impl ParachuteAction { pub const DEFAULT : Self = Self :: PARACHUTE_DISABLE ; } impl Default for ParachuteAction { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum PreflightStorageParameterAction { PARAM_READ_PERSISTENT = 0 , PARAM_WRITE_PERSISTENT = 1 , PARAM_RESET_CONFIG_DEFAULT = 2 , PARAM_RESET_SENSOR_DEFAULT = 3 , PARAM_RESET_ALL_DEFAULT = 4 , } impl PreflightStorageParameterAction { pub const DEFAULT : Self = Self :: PARAM_READ_PERSISTENT ; } impl Default for PreflightStorageParameterAction { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum IcarousTrackBandTypes { ICAROUS_TRACK_BAND_TYPE_NONE = 0 , ICAROUS_TRACK_BAND_TYPE_NEAR = 1 , ICAROUS_TRACK_BAND_TYPE_RECOVERY = 2 , } impl IcarousTrackBandTypes { pub const DEFAULT : Self = Self :: ICAROUS_TRACK_BAND_TYPE_NONE ; } impl Default for IcarousTrackBandTypes { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum OrbitYawBehaviour { ORBIT_YAW_BEHAVIOUR_HOLD_FRONT_TO_CIRCLE_CENTER = 0 , ORBIT_YAW_BEHAVIOUR_HOLD_INITIAL_HEADING = 1 , ORBIT_YAW_BEHAVIOUR_UNCONTROLLED = 2 , ORBIT_YAW_BEHAVIOUR_HOLD_FRONT_TANGENT_TO_CIRCLE = 3 , ORBIT_YAW_BEHAVIOUR_RC_CONTROLLED = 4 , } impl OrbitYawBehaviour { pub const DEFAULT : Self = Self :: ORBIT_YAW_BEHAVIOUR_HOLD_FRONT_TO_CIRCLE_CENTER ; } impl Default for OrbitYawBehaviour { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GimbalDeviceErrorFlags : u32 { const GIMBAL_DEVICE_ERROR_FLAGS_AT_ROLL_LIMIT = 1 ; const GIMBAL_DEVICE_ERROR_FLAGS_AT_PITCH_LIMIT = 2 ; const GIMBAL_DEVICE_ERROR_FLAGS_AT_YAW_LIMIT = 4 ; const GIMBAL_DEVICE_ERROR_FLAGS_ENCODER_ERROR = 8 ; const GIMBAL_DEVICE_ERROR_FLAGS_POWER_ERROR = 16 ; const GIMBAL_DEVICE_ERROR_FLAGS_MOTOR_ERROR = 32 ; const GIMBAL_DEVICE_ERROR_FLAGS_SOFTWARE_ERROR = 64 ; const GIMBAL_DEVICE_ERROR_FLAGS_COMMS_ERROR = 128 ; const GIMBAL_DEVICE_ERROR_FLAGS_CALIBRATION_RUNNING = 256 ; const GIMBAL_DEVICE_ERROR_FLAGS_NO_MANAGER = 512 ; } } impl GimbalDeviceErrorFlags { pub const DEFAULT : Self = Self :: GIMBAL_DEVICE_ERROR_FLAGS_AT_ROLL_LIMIT ; } impl Default for GimbalDeviceErrorFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidClassificationType { MAV_ODID_CLASSIFICATION_TYPE_UNDECLARED = 0 , MAV_ODID_CLASSIFICATION_TYPE_EU = 1 , } impl MavOdidClassificationType { pub const DEFAULT : Self = Self :: MAV_ODID_CLASSIFICATION_TYPE_UNDECLARED ; } impl Default for MavOdidClassificationType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum ActuatorOutputFunction { ACTUATOR_OUTPUT_FUNCTION_NONE = 0 , ACTUATOR_OUTPUT_FUNCTION_MOTOR1 = 1 , ACTUATOR_OUTPUT_FUNCTION_MOTOR2 = 2 , ACTUATOR_OUTPUT_FUNCTION_MOTOR3 = 3 , ACTUATOR_OUTPUT_FUNCTION_MOTOR4 = 4 , ACTUATOR_OUTPUT_FUNCTION_MOTOR5 = 5 , ACTUATOR_OUTPUT_FUNCTION_MOTOR6 = 6 , ACTUATOR_OUTPUT_FUNCTION_MOTOR7 = 7 , ACTUATOR_OUTPUT_FUNCTION_MOTOR8 = 8 , ACTUATOR_OUTPUT_FUNCTION_MOTOR9 = 9 , ACTUATOR_OUTPUT_FUNCTION_MOTOR10 = 10 , ACTUATOR_OUTPUT_FUNCTION_MOTOR11 = 11 , ACTUATOR_OUTPUT_FUNCTION_MOTOR12 = 12 , ACTUATOR_OUTPUT_FUNCTION_MOTOR13 = 13 , ACTUATOR_OUTPUT_FUNCTION_MOTOR14 = 14 , ACTUATOR_OUTPUT_FUNCTION_MOTOR15 = 15 , ACTUATOR_OUTPUT_FUNCTION_MOTOR16 = 16 , ACTUATOR_OUTPUT_FUNCTION_SERVO1 = 33 , ACTUATOR_OUTPUT_FUNCTION_SERVO2 = 34 , ACTUATOR_OUTPUT_FUNCTION_SERVO3 = 35 , ACTUATOR_OUTPUT_FUNCTION_SERVO4 = 36 , ACTUATOR_OUTPUT_FUNCTION_SERVO5 = 37 , ACTUATOR_OUTPUT_FUNCTION_SERVO6 = 38 , ACTUATOR_OUTPUT_FUNCTION_SERVO7 = 39 , ACTUATOR_OUTPUT_FUNCTION_SERVO8 = 40 , ACTUATOR_OUTPUT_FUNCTION_SERVO9 = 41 , ACTUATOR_OUTPUT_FUNCTION_SERVO10 = 42 , ACTUATOR_OUTPUT_FUNCTION_SERVO11 = 43 , ACTUATOR_OUTPUT_FUNCTION_SERVO12 = 44 , ACTUATOR_OUTPUT_FUNCTION_SERVO13 = 45 , ACTUATOR_OUTPUT_FUNCTION_SERVO14 = 46 , ACTUATOR_OUTPUT_FUNCTION_SERVO15 = 47 , ACTUATOR_OUTPUT_FUNCTION_SERVO16 = 48 , } impl ActuatorOutputFunction { pub const DEFAULT : Self = Self :: ACTUATOR_OUTPUT_FUNCTION_NONE ; } impl Default for ActuatorOutputFunction { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum ScriptingCmd { SCRIPTING_CMD_REPL_START = 0 , SCRIPTING_CMD_REPL_STOP = 1 , SCRIPTING_CMD_STOP = 2 , SCRIPTING_CMD_STOP_AND_RESTART = 3 , } impl ScriptingCmd { pub const DEFAULT : Self = Self :: SCRIPTING_CMD_REPL_START ; } impl Default for ScriptingCmd { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavLandedState { MAV_LANDED_STATE_UNDEFINED = 0 , MAV_LANDED_STATE_ON_GROUND = 1 , MAV_LANDED_STATE_IN_AIR = 2 , MAV_LANDED_STATE_TAKEOFF = 3 , MAV_LANDED_STATE_LANDING = 4 , } impl MavLandedState { pub const DEFAULT : Self = Self :: MAV_LANDED_STATE_UNDEFINED ; } impl Default for MavLandedState { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum SubMode { SUB_MODE_STABILIZE = 0 , SUB_MODE_ACRO = 1 , SUB_MODE_ALT_HOLD = 2 , SUB_MODE_AUTO = 3 , SUB_MODE_GUIDED = 4 , SUB_MODE_CIRCLE = 7 , SUB_MODE_SURFACE = 9 , SUB_MODE_POSHOLD = 16 , SUB_MODE_MANUAL = 19 , } impl SubMode { pub const DEFAULT : Self = Self :: SUB_MODE_STABILIZE ; } impl Default for SubMode { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum IcarousFmsState { ICAROUS_FMS_STATE_IDLE = 0 , ICAROUS_FMS_STATE_TAKEOFF = 1 , ICAROUS_FMS_STATE_CLIMB = 2 , ICAROUS_FMS_STATE_CRUISE = 3 , ICAROUS_FMS_STATE_APPROACH = 4 , ICAROUS_FMS_STATE_LAND = 5 , } impl IcarousFmsState { pub const DEFAULT : Self = Self :: ICAROUS_FMS_STATE_IDLE ; } impl Default for IcarousFmsState { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum UavcanNodeMode { UAVCAN_NODE_MODE_OPERATIONAL = 0 , UAVCAN_NODE_MODE_INITIALIZATION = 1 , UAVCAN_NODE_MODE_MAINTENANCE = 2 , UAVCAN_NODE_MODE_SOFTWARE_UPDATE = 3 , UAVCAN_NODE_MODE_OFFLINE = 7 , } impl UavcanNodeMode { pub const DEFAULT : Self = Self :: UAVCAN_NODE_MODE_OPERATIONAL ; } impl Default for UavcanNodeMode { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum CellularNetworkFailedReason { CELLULAR_NETWORK_FAILED_REASON_NONE = 0 , CELLULAR_NETWORK_FAILED_REASON_UNKNOWN = 1 , CELLULAR_NETWORK_FAILED_REASON_SIM_MISSING = 2 , CELLULAR_NETWORK_FAILED_REASON_SIM_ERROR = 3 , } impl CellularNetworkFailedReason { pub const DEFAULT : Self = Self :: CELLULAR_NETWORK_FAILED_REASON_NONE ; } impl Default for CellularNetworkFailedReason { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidHorAcc { MAV_ODID_HOR_ACC_UNKNOWN = 0 , MAV_ODID_HOR_ACC_10NM = 1 , MAV_ODID_HOR_ACC_4NM = 2 , MAV_ODID_HOR_ACC_2NM = 3 , MAV_ODID_HOR_ACC_1NM = 4 , MAV_ODID_HOR_ACC_0_5NM = 5 , MAV_ODID_HOR_ACC_0_3NM = 6 , MAV_ODID_HOR_ACC_0_1NM = 7 , MAV_ODID_HOR_ACC_0_05NM = 8 , MAV_ODID_HOR_ACC_30_METER = 9 , MAV_ODID_HOR_ACC_10_METER = 10 , MAV_ODID_HOR_ACC_3_METER = 11 , MAV_ODID_HOR_ACC_1_METER = 12 , } impl MavOdidHorAcc { pub const DEFAULT : Self = Self :: MAV_ODID_HOR_ACC_UNKNOWN ; } impl Default for MavOdidHorAcc { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidDescType { MAV_ODID_DESC_TYPE_TEXT = 0 , MAV_ODID_DESC_TYPE_EMERGENCY = 1 , MAV_ODID_DESC_TYPE_EXTENDED_STATUS = 2 , } impl MavOdidDescType { pub const DEFAULT : Self = Self :: MAV_ODID_DESC_TYPE_TEXT ; } impl Default for MavOdidDescType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavSensorOrientation { MAV_SENSOR_ROTATION_NONE = 0 , MAV_SENSOR_ROTATION_YAW_45 = 1 , MAV_SENSOR_ROTATION_YAW_90 = 2 , MAV_SENSOR_ROTATION_YAW_135 = 3 , MAV_SENSOR_ROTATION_YAW_180 = 4 , MAV_SENSOR_ROTATION_YAW_225 = 5 , MAV_SENSOR_ROTATION_YAW_270 = 6 , MAV_SENSOR_ROTATION_YAW_315 = 7 , MAV_SENSOR_ROTATION_ROLL_180 = 8 , MAV_SENSOR_ROTATION_ROLL_180_YAW_45 = 9 , MAV_SENSOR_ROTATION_ROLL_180_YAW_90 = 10 , MAV_SENSOR_ROTATION_ROLL_180_YAW_135 = 11 , MAV_SENSOR_ROTATION_PITCH_180 = 12 , MAV_SENSOR_ROTATION_ROLL_180_YAW_225 = 13 , MAV_SENSOR_ROTATION_ROLL_180_YAW_270 = 14 , MAV_SENSOR_ROTATION_ROLL_180_YAW_315 = 15 , MAV_SENSOR_ROTATION_ROLL_90 = 16 , MAV_SENSOR_ROTATION_ROLL_90_YAW_45 = 17 , MAV_SENSOR_ROTATION_ROLL_90_YAW_90 = 18 , MAV_SENSOR_ROTATION_ROLL_90_YAW_135 = 19 , MAV_SENSOR_ROTATION_ROLL_270 = 20 , MAV_SENSOR_ROTATION_ROLL_270_YAW_45 = 21 , MAV_SENSOR_ROTATION_ROLL_270_YAW_90 = 22 , MAV_SENSOR_ROTATION_ROLL_270_YAW_135 = 23 , MAV_SENSOR_ROTATION_PITCH_90 = 24 , MAV_SENSOR_ROTATION_PITCH_270 = 25 , MAV_SENSOR_ROTATION_PITCH_180_YAW_90 = 26 , MAV_SENSOR_ROTATION_PITCH_180_YAW_270 = 27 , MAV_SENSOR_ROTATION_ROLL_90_PITCH_90 = 28 , MAV_SENSOR_ROTATION_ROLL_180_PITCH_90 = 29 , MAV_SENSOR_ROTATION_ROLL_270_PITCH_90 = 30 , MAV_SENSOR_ROTATION_ROLL_90_PITCH_180 = 31 , MAV_SENSOR_ROTATION_ROLL_270_PITCH_180 = 32 , MAV_SENSOR_ROTATION_ROLL_90_PITCH_270 = 33 , MAV_SENSOR_ROTATION_ROLL_180_PITCH_270 = 34 , MAV_SENSOR_ROTATION_ROLL_270_PITCH_270 = 35 , MAV_SENSOR_ROTATION_ROLL_90_PITCH_180_YAW_90 = 36 , MAV_SENSOR_ROTATION_ROLL_90_YAW_270 = 37 , MAV_SENSOR_ROTATION_ROLL_90_PITCH_68_YAW_293 = 38 , MAV_SENSOR_ROTATION_PITCH_315 = 39 , MAV_SENSOR_ROTATION_ROLL_90_PITCH_315 = 40 , MAV_SENSOR_ROTATION_CUSTOM = 100 , } impl MavSensorOrientation { pub const DEFAULT : Self = Self :: MAV_SENSOR_ROTATION_NONE ; } impl Default for MavSensorOrientation { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavVtolState { MAV_VTOL_STATE_UNDEFINED = 0 , MAV_VTOL_STATE_TRANSITION_TO_FW = 1 , MAV_VTOL_STATE_TRANSITION_TO_MC = 2 , MAV_VTOL_STATE_MC = 3 , MAV_VTOL_STATE_FW = 4 , } impl MavVtolState { pub const DEFAULT : Self = Self :: MAV_VTOL_STATE_UNDEFINED ; } impl Default for MavVtolState { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum CellularStatusFlag { CELLULAR_STATUS_FLAG_UNKNOWN = 0 , CELLULAR_STATUS_FLAG_FAILED = 1 , CELLULAR_STATUS_FLAG_INITIALIZING = 2 , CELLULAR_STATUS_FLAG_LOCKED = 3 , CELLULAR_STATUS_FLAG_DISABLED = 4 , CELLULAR_STATUS_FLAG_DISABLING = 5 , CELLULAR_STATUS_FLAG_ENABLING = 6 , CELLULAR_STATUS_FLAG_ENABLED = 7 , CELLULAR_STATUS_FLAG_SEARCHING = 8 , CELLULAR_STATUS_FLAG_REGISTERED = 9 , CELLULAR_STATUS_FLAG_DISCONNECTING = 10 , CELLULAR_STATUS_FLAG_CONNECTING = 11 , CELLULAR_STATUS_FLAG_CONNECTED = 12 , } impl CellularStatusFlag { pub const DEFAULT : Self = Self :: CELLULAR_STATUS_FLAG_UNKNOWN ; } impl Default for CellularStatusFlag { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidUaType { MAV_ODID_UA_TYPE_NONE = 0 , MAV_ODID_UA_TYPE_AEROPLANE = 1 , MAV_ODID_UA_TYPE_HELICOPTER_OR_MULTIROTOR = 2 , MAV_ODID_UA_TYPE_GYROPLANE = 3 , MAV_ODID_UA_TYPE_HYBRID_LIFT = 4 , MAV_ODID_UA_TYPE_ORNITHOPTER = 5 , MAV_ODID_UA_TYPE_GLIDER = 6 , MAV_ODID_UA_TYPE_KITE = 7 , MAV_ODID_UA_TYPE_FREE_BALLOON = 8 , MAV_ODID_UA_TYPE_CAPTIVE_BALLOON = 9 , MAV_ODID_UA_TYPE_AIRSHIP = 10 , MAV_ODID_UA_TYPE_FREE_FALL_PARACHUTE = 11 , MAV_ODID_UA_TYPE_ROCKET = 12 , MAV_ODID_UA_TYPE_TETHERED_POWERED_AIRCRAFT = 13 , MAV_ODID_UA_TYPE_GROUND_OBSTACLE = 14 , MAV_ODID_UA_TYPE_OTHER = 15 , } impl MavOdidUaType { pub const DEFAULT : Self = Self :: MAV_ODID_UA_TYPE_NONE ; } impl Default for MavOdidUaType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavBatteryChargeState { MAV_BATTERY_CHARGE_STATE_UNDEFINED = 0 , MAV_BATTERY_CHARGE_STATE_OK = 1 , MAV_BATTERY_CHARGE_STATE_LOW = 2 , MAV_BATTERY_CHARGE_STATE_CRITICAL = 3 , MAV_BATTERY_CHARGE_STATE_EMERGENCY = 4 , MAV_BATTERY_CHARGE_STATE_FAILED = 5 , MAV_BATTERY_CHARGE_STATE_UNHEALTHY = 6 , MAV_BATTERY_CHARGE_STATE_CHARGING = 7 , } impl MavBatteryChargeState { pub const DEFAULT : Self = Self :: MAV_BATTERY_CHARGE_STATE_UNDEFINED ; } impl Default for MavBatteryChargeState { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidArmStatus { MAV_ODID_ARM_STATUS_GOOD_TO_ARM = 0 , MAV_ODID_ARM_STATUS_PRE_ARM_FAIL_GENERIC = 1 , } impl MavOdidArmStatus { pub const DEFAULT : Self = Self :: MAV_ODID_ARM_STATUS_GOOD_TO_ARM ; } impl Default for MavOdidArmStatus { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum UavionixAdsbOutCfgGpsOffsetLat { UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_NO_DATA = 0 , UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_LEFT_2M = 1 , UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_LEFT_4M = 2 , UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_LEFT_6M = 3 , UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_RIGHT_0M = 4 , UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_RIGHT_2M = 5 , UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_RIGHT_4M = 6 , UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_RIGHT_6M = 7 , } impl UavionixAdsbOutCfgGpsOffsetLat { pub const DEFAULT : Self = Self :: UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_NO_DATA ; } impl Default for UavionixAdsbOutCfgGpsOffsetLat { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum GoproVideoSettingsFlags { GOPRO_VIDEO_SETTINGS_TV_MODE = 1 , } impl GoproVideoSettingsFlags { pub const DEFAULT : Self = Self :: GOPRO_VIDEO_SETTINGS_TV_MODE ; } impl Default for GoproVideoSettingsFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavDoRepositionFlags { MAV_DO_REPOSITION_FLAGS_CHANGE_MODE = 1 , } impl MavDoRepositionFlags { pub const DEFAULT : Self = Self :: MAV_DO_REPOSITION_FLAGS_CHANGE_MODE ; } impl Default for MavDoRepositionFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum GoproRequestStatus { GOPRO_REQUEST_SUCCESS = 0 , GOPRO_REQUEST_FAILED = 1 , } impl GoproRequestStatus { pub const DEFAULT : Self = Self :: GOPRO_REQUEST_SUCCESS ; } impl Default for GoproRequestStatus { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavBatteryMode { MAV_BATTERY_MODE_UNKNOWN = 0 , MAV_BATTERY_MODE_AUTO_DISCHARGING = 1 , MAV_BATTERY_MODE_HOT_SWAP = 2 , } impl MavBatteryMode { pub const DEFAULT : Self = Self :: MAV_BATTERY_MODE_UNKNOWN ; } impl Default for MavBatteryMode { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum DeepstallStage { DEEPSTALL_STAGE_FLY_TO_LANDING = 0 , DEEPSTALL_STAGE_ESTIMATE_WIND = 1 , DEEPSTALL_STAGE_WAIT_FOR_BREAKOUT = 2 , DEEPSTALL_STAGE_FLY_TO_ARC = 3 , DEEPSTALL_STAGE_ARC = 4 , DEEPSTALL_STAGE_APPROACH = 5 , DEEPSTALL_STAGE_LAND = 6 , } impl DeepstallStage { pub const DEFAULT : Self = Self :: DEEPSTALL_STAGE_FLY_TO_LANDING ; } impl Default for DeepstallStage { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum FailureType { FAILURE_TYPE_OK = 0 , FAILURE_TYPE_OFF = 1 , FAILURE_TYPE_STUCK = 2 , FAILURE_TYPE_GARBAGE = 3 , FAILURE_TYPE_WRONG = 4 , FAILURE_TYPE_SLOW = 5 , FAILURE_TYPE_DELAYED = 6 , FAILURE_TYPE_INTERMITTENT = 7 , } impl FailureType { pub const DEFAULT : Self = Self :: FAILURE_TYPE_OK ; } impl Default for FailureType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum AisType { AIS_TYPE_UNKNOWN = 0 , AIS_TYPE_RESERVED_1 = 1 , AIS_TYPE_RESERVED_2 = 2 , AIS_TYPE_RESERVED_3 = 3 , AIS_TYPE_RESERVED_4 = 4 , AIS_TYPE_RESERVED_5 = 5 , AIS_TYPE_RESERVED_6 = 6 , AIS_TYPE_RESERVED_7 = 7 , AIS_TYPE_RESERVED_8 = 8 , AIS_TYPE_RESERVED_9 = 9 , AIS_TYPE_RESERVED_10 = 10 , AIS_TYPE_RESERVED_11 = 11 , AIS_TYPE_RESERVED_12 = 12 , AIS_TYPE_RESERVED_13 = 13 , AIS_TYPE_RESERVED_14 = 14 , AIS_TYPE_RESERVED_15 = 15 , AIS_TYPE_RESERVED_16 = 16 , AIS_TYPE_RESERVED_17 = 17 , AIS_TYPE_RESERVED_18 = 18 , AIS_TYPE_RESERVED_19 = 19 , AIS_TYPE_WIG = 20 , AIS_TYPE_WIG_HAZARDOUS_A = 21 , AIS_TYPE_WIG_HAZARDOUS_B = 22 , AIS_TYPE_WIG_HAZARDOUS_C = 23 , AIS_TYPE_WIG_HAZARDOUS_D = 24 , AIS_TYPE_WIG_RESERVED_1 = 25 , AIS_TYPE_WIG_RESERVED_2 = 26 , AIS_TYPE_WIG_RESERVED_3 = 27 , AIS_TYPE_WIG_RESERVED_4 = 28 , AIS_TYPE_WIG_RESERVED_5 = 29 , AIS_TYPE_FISHING = 30 , AIS_TYPE_TOWING = 31 , AIS_TYPE_TOWING_LARGE = 32 , AIS_TYPE_DREDGING = 33 , AIS_TYPE_DIVING = 34 , AIS_TYPE_MILITARY = 35 , AIS_TYPE_SAILING = 36 , AIS_TYPE_PLEASURE = 37 , AIS_TYPE_RESERVED_20 = 38 , AIS_TYPE_RESERVED_21 = 39 , AIS_TYPE_HSC = 40 , AIS_TYPE_HSC_HAZARDOUS_A = 41 , AIS_TYPE_HSC_HAZARDOUS_B = 42 , AIS_TYPE_HSC_HAZARDOUS_C = 43 , AIS_TYPE_HSC_HAZARDOUS_D = 44 , AIS_TYPE_HSC_RESERVED_1 = 45 , AIS_TYPE_HSC_RESERVED_2 = 46 , AIS_TYPE_HSC_RESERVED_3 = 47 , AIS_TYPE_HSC_RESERVED_4 = 48 , AIS_TYPE_HSC_UNKNOWN = 49 , AIS_TYPE_PILOT = 50 , AIS_TYPE_SAR = 51 , AIS_TYPE_TUG = 52 , AIS_TYPE_PORT_TENDER = 53 , AIS_TYPE_ANTI_POLLUTION = 54 , AIS_TYPE_LAW_ENFORCEMENT = 55 , AIS_TYPE_SPARE_LOCAL_1 = 56 , AIS_TYPE_SPARE_LOCAL_2 = 57 , AIS_TYPE_MEDICAL_TRANSPORT = 58 , AIS_TYPE_NONECOMBATANT = 59 , AIS_TYPE_PASSENGER = 60 , AIS_TYPE_PASSENGER_HAZARDOUS_A = 61 , AIS_TYPE_PASSENGER_HAZARDOUS_B = 62 , AIS_TYPE_PASSENGER_HAZARDOUS_C = 63 , AIS_TYPE_PASSENGER_HAZARDOUS_D = 64 , AIS_TYPE_PASSENGER_RESERVED_1 = 65 , AIS_TYPE_PASSENGER_RESERVED_2 = 66 , AIS_TYPE_PASSENGER_RESERVED_3 = 67 , AIS_TYPE_PASSENGER_RESERVED_4 = 68 , AIS_TYPE_PASSENGER_UNKNOWN = 69 , AIS_TYPE_CARGO = 70 , AIS_TYPE_CARGO_HAZARDOUS_A = 71 , AIS_TYPE_CARGO_HAZARDOUS_B = 72 , AIS_TYPE_CARGO_HAZARDOUS_C = 73 , AIS_TYPE_CARGO_HAZARDOUS_D = 74 , AIS_TYPE_CARGO_RESERVED_1 = 75 , AIS_TYPE_CARGO_RESERVED_2 = 76 , AIS_TYPE_CARGO_RESERVED_3 = 77 , AIS_TYPE_CARGO_RESERVED_4 = 78 , AIS_TYPE_CARGO_UNKNOWN = 79 , AIS_TYPE_TANKER = 80 , AIS_TYPE_TANKER_HAZARDOUS_A = 81 , AIS_TYPE_TANKER_HAZARDOUS_B = 82 , AIS_TYPE_TANKER_HAZARDOUS_C = 83 , AIS_TYPE_TANKER_HAZARDOUS_D = 84 , AIS_TYPE_TANKER_RESERVED_1 = 85 , AIS_TYPE_TANKER_RESERVED_2 = 86 , AIS_TYPE_TANKER_RESERVED_3 = 87 , AIS_TYPE_TANKER_RESERVED_4 = 88 , AIS_TYPE_TANKER_UNKNOWN = 89 , AIS_TYPE_OTHER = 90 , AIS_TYPE_OTHER_HAZARDOUS_A = 91 , AIS_TYPE_OTHER_HAZARDOUS_B = 92 , AIS_TYPE_OTHER_HAZARDOUS_C = 93 , AIS_TYPE_OTHER_HAZARDOUS_D = 94 , AIS_TYPE_OTHER_RESERVED_1 = 95 , AIS_TYPE_OTHER_RESERVED_2 = 96 , AIS_TYPE_OTHER_RESERVED_3 = 97 , AIS_TYPE_OTHER_RESERVED_4 = 98 , AIS_TYPE_OTHER_UNKNOWN = 99 , } impl AisType { pub const DEFAULT : Self = Self :: AIS_TYPE_UNKNOWN ; } impl Default for AisType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum CopterMode { COPTER_MODE_STABILIZE = 0 , COPTER_MODE_ACRO = 1 , COPTER_MODE_ALT_HOLD = 2 , COPTER_MODE_AUTO = 3 , COPTER_MODE_GUIDED = 4 , COPTER_MODE_LOITER = 5 , COPTER_MODE_RTL = 6 , COPTER_MODE_CIRCLE = 7 , COPTER_MODE_LAND = 9 , COPTER_MODE_DRIFT = 11 , COPTER_MODE_SPORT = 13 , COPTER_MODE_FLIP = 14 , COPTER_MODE_AUTOTUNE = 15 , COPTER_MODE_POSHOLD = 16 , COPTER_MODE_BRAKE = 17 , COPTER_MODE_THROW = 18 , COPTER_MODE_AVOID_ADSB = 19 , COPTER_MODE_GUIDED_NOGPS = 20 , COPTER_MODE_SMART_RTL = 21 , COPTER_MODE_FLOWHOLD = 22 , COPTER_MODE_FOLLOW = 23 , COPTER_MODE_ZIGZAG = 24 , COPTER_MODE_SYSTEMID = 25 , COPTER_MODE_AUTOROTATE = 26 , COPTER_MODE_AUTO_RTL = 27 , } impl CopterMode { pub const DEFAULT : Self = Self :: COPTER_MODE_STABILIZE ; } impl Default for CopterMode { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavTunnelPayloadType { MAV_TUNNEL_PAYLOAD_TYPE_UNKNOWN = 0 , MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED0 = 200 , MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED1 = 201 , MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED2 = 202 , MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED3 = 203 , MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED4 = 204 , MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED5 = 205 , MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED6 = 206 , MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED7 = 207 , MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED8 = 208 , MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED9 = 209 , } impl MavTunnelPayloadType { pub const DEFAULT : Self = Self :: MAV_TUNNEL_PAYLOAD_TYPE_UNKNOWN ; } impl Default for MavTunnelPayloadType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum ParamAck { PARAM_ACK_ACCEPTED = 0 , PARAM_ACK_VALUE_UNSUPPORTED = 1 , PARAM_ACK_FAILED = 2 , PARAM_ACK_IN_PROGRESS = 3 , } impl ParamAck { pub const DEFAULT : Self = Self :: PARAM_ACK_ACCEPTED ; } impl Default for ParamAck { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavCollisionThreatLevel { MAV_COLLISION_THREAT_LEVEL_NONE = 0 , MAV_COLLISION_THREAT_LEVEL_LOW = 1 , MAV_COLLISION_THREAT_LEVEL_HIGH = 2 , } impl MavCollisionThreatLevel { pub const DEFAULT : Self = Self :: MAV_COLLISION_THREAT_LEVEL_NONE ; } impl Default for MavCollisionThreatLevel { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidTimeAcc { MAV_ODID_TIME_ACC_UNKNOWN = 0 , MAV_ODID_TIME_ACC_0_1_SECOND = 1 , MAV_ODID_TIME_ACC_0_2_SECOND = 2 , MAV_ODID_TIME_ACC_0_3_SECOND = 3 , MAV_ODID_TIME_ACC_0_4_SECOND = 4 , MAV_ODID_TIME_ACC_0_5_SECOND = 5 , MAV_ODID_TIME_ACC_0_6_SECOND = 6 , MAV_ODID_TIME_ACC_0_7_SECOND = 7 , MAV_ODID_TIME_ACC_0_8_SECOND = 8 , MAV_ODID_TIME_ACC_0_9_SECOND = 9 , MAV_ODID_TIME_ACC_1_0_SECOND = 10 , MAV_ODID_TIME_ACC_1_1_SECOND = 11 , MAV_ODID_TIME_ACC_1_2_SECOND = 12 , MAV_ODID_TIME_ACC_1_3_SECOND = 13 , MAV_ODID_TIME_ACC_1_4_SECOND = 14 , MAV_ODID_TIME_ACC_1_5_SECOND = 15 , } impl MavOdidTimeAcc { pub const DEFAULT : Self = Self :: MAV_ODID_TIME_ACC_UNKNOWN ; } impl Default for MavOdidTimeAcc { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavCmdDoAuxFunctionSwitchLevel { MAV_CMD_DO_AUX_FUNCTION_SWITCH_LEVEL_LOW = 0 , MAV_CMD_DO_AUX_FUNCTION_SWITCH_LEVEL_MIDDLE = 1 , MAV_CMD_DO_AUX_FUNCTION_SWITCH_LEVEL_HIGH = 2 , } impl MavCmdDoAuxFunctionSwitchLevel { pub const DEFAULT : Self = Self :: MAV_CMD_DO_AUX_FUNCTION_SWITCH_LEVEL_LOW ; } impl Default for MavCmdDoAuxFunctionSwitchLevel { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavMissionType { MAV_MISSION_TYPE_MISSION = 0 , MAV_MISSION_TYPE_FENCE = 1 , MAV_MISSION_TYPE_RALLY = 2 , MAV_MISSION_TYPE_ALL = 255 , } impl MavMissionType { pub const DEFAULT : Self = Self :: MAV_MISSION_TYPE_MISSION ; } impl Default for MavMissionType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavAutopilot { MAV_AUTOPILOT_GENERIC = 0 , MAV_AUTOPILOT_RESERVED = 1 , MAV_AUTOPILOT_SLUGS = 2 , MAV_AUTOPILOT_ARDUPILOTMEGA = 3 , MAV_AUTOPILOT_OPENPILOT = 4 , MAV_AUTOPILOT_GENERIC_WAYPOINTS_ONLY = 5 , MAV_AUTOPILOT_GENERIC_WAYPOINTS_AND_SIMPLE_NAVIGATION_ONLY = 6 , MAV_AUTOPILOT_GENERIC_MISSION_FULL = 7 , MAV_AUTOPILOT_INVALID = 8 , MAV_AUTOPILOT_PPZ = 9 , MAV_AUTOPILOT_UDB = 10 , MAV_AUTOPILOT_FP = 11 , MAV_AUTOPILOT_PX4 = 12 , MAV_AUTOPILOT_SMACCMPILOT = 13 , MAV_AUTOPILOT_AUTOQUAD = 14 , MAV_AUTOPILOT_ARMAZILA = 15 , MAV_AUTOPILOT_AEROB = 16 , MAV_AUTOPILOT_ASLUAV = 17 , MAV_AUTOPILOT_SMARTAP = 18 , MAV_AUTOPILOT_AIRRAILS = 19 , MAV_AUTOPILOT_REFLEX = 20 , } impl MavAutopilot { pub const DEFAULT : Self = Self :: MAV_AUTOPILOT_GENERIC ; } impl Default for MavAutopilot { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct AdsbFlags : u16 { const ADSB_FLAGS_VALID_COORDS = 1 ; const ADSB_FLAGS_VALID_ALTITUDE = 2 ; const ADSB_FLAGS_VALID_HEADING = 4 ; const ADSB_FLAGS_VALID_VELOCITY = 8 ; const ADSB_FLAGS_VALID_CALLSIGN = 16 ; const ADSB_FLAGS_VALID_SQUAWK = 32 ; const ADSB_FLAGS_SIMULATED = 64 ; const ADSB_FLAGS_VERTICAL_VELOCITY_VALID = 128 ; const ADSB_FLAGS_BARO_VALID = 256 ; const ADSB_FLAGS_SOURCE_UAT = 32768 ; } } impl AdsbFlags { pub const DEFAULT : Self = Self :: ADSB_FLAGS_VALID_COORDS ; } impl Default for AdsbFlags { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LimitModule : u8 { const LIMIT_GPSLOCK = 1 ; const LIMIT_GEOFENCE = 2 ; const LIMIT_ALTITUDE = 4 ; } } impl LimitModule { pub const DEFAULT : Self = Self :: LIMIT_GPSLOCK ; } impl Default for LimitModule { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavSysStatusSensorExtended { MAV_SYS_STATUS_RECOVERY_SYSTEM = 1 , } impl MavSysStatusSensorExtended { pub const DEFAULT : Self = Self :: MAV_SYS_STATUS_RECOVERY_SYSTEM ; } impl Default for MavSysStatusSensorExtended { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavMountMode { MAV_MOUNT_MODE_RETRACT = 0 , MAV_MOUNT_MODE_NEUTRAL = 1 , MAV_MOUNT_MODE_MAVLINK_TARGETING = 2 , MAV_MOUNT_MODE_RC_TARGETING = 3 , MAV_MOUNT_MODE_GPS_POINT = 4 , MAV_MOUNT_MODE_SYSID_TARGET = 5 , MAV_MOUNT_MODE_HOME_LOCATION = 6 , } impl MavMountMode { pub const DEFAULT : Self = Self :: MAV_MOUNT_MODE_RETRACT ; } impl Default for MavMountMode { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum GoproFieldOfView { GOPRO_FIELD_OF_VIEW_WIDE = 0 , GOPRO_FIELD_OF_VIEW_MEDIUM = 1 , GOPRO_FIELD_OF_VIEW_NARROW = 2 , } impl GoproFieldOfView { pub const DEFAULT : Self = Self :: GOPRO_FIELD_OF_VIEW_WIDE ; } impl Default for GoproFieldOfView { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SerialControlFlag : u8 { const SERIAL_CONTROL_FLAG_REPLY = 1 ; const SERIAL_CONTROL_FLAG_RESPOND = 2 ; const SERIAL_CONTROL_FLAG_EXCLUSIVE = 4 ; const SERIAL_CONTROL_FLAG_BLOCKING = 8 ; const SERIAL_CONTROL_FLAG_MULTI = 16 ; } } impl SerialControlFlag { pub const DEFAULT : Self = Self :: SERIAL_CONTROL_FLAG_REPLY ; } impl Default for SerialControlFlag { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum StorageStatus { STORAGE_STATUS_EMPTY = 0 , STORAGE_STATUS_UNFORMATTED = 1 , STORAGE_STATUS_READY = 2 , STORAGE_STATUS_NOT_SUPPORTED = 3 , } impl StorageStatus { pub const DEFAULT : Self = Self :: STORAGE_STATUS_EMPTY ; } impl Default for StorageStatus { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidVerAcc { MAV_ODID_VER_ACC_UNKNOWN = 0 , MAV_ODID_VER_ACC_150_METER = 1 , MAV_ODID_VER_ACC_45_METER = 2 , MAV_ODID_VER_ACC_25_METER = 3 , MAV_ODID_VER_ACC_10_METER = 4 , MAV_ODID_VER_ACC_3_METER = 5 , MAV_ODID_VER_ACC_1_METER = 6 , } impl MavOdidVerAcc { pub const DEFAULT : Self = Self :: MAV_ODID_VER_ACC_UNKNOWN ; } impl Default for MavOdidVerAcc { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum DeviceOpBustype { DEVICE_OP_BUSTYPE_I2C = 0 , DEVICE_OP_BUSTYPE_SPI = 1 , } impl DeviceOpBustype { pub const DEFAULT : Self = Self :: DEVICE_OP_BUSTYPE_I2C ; } impl Default for DeviceOpBustype { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavParamType { MAV_PARAM_TYPE_UINT8 = 1 , MAV_PARAM_TYPE_INT8 = 2 , MAV_PARAM_TYPE_UINT16 = 3 , MAV_PARAM_TYPE_INT16 = 4 , MAV_PARAM_TYPE_UINT32 = 5 , MAV_PARAM_TYPE_INT32 = 6 , MAV_PARAM_TYPE_UINT64 = 7 , MAV_PARAM_TYPE_INT64 = 8 , MAV_PARAM_TYPE_REAL32 = 9 , MAV_PARAM_TYPE_REAL64 = 10 , } impl MavParamType { pub const DEFAULT : Self = Self :: MAV_PARAM_TYPE_UINT8 ; } impl Default for MavParamType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum HeadingType { HEADING_TYPE_COURSE_OVER_GROUND = 0 , HEADING_TYPE_HEADING = 1 , } impl HeadingType { pub const DEFAULT : Self = Self :: HEADING_TYPE_COURSE_OVER_GROUND ; } impl Default for HeadingType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavCollisionAction { MAV_COLLISION_ACTION_NONE = 0 , MAV_COLLISION_ACTION_REPORT = 1 , MAV_COLLISION_ACTION_ASCEND_OR_DESCEND = 2 , MAV_COLLISION_ACTION_MOVE_HORIZONTALLY = 3 , MAV_COLLISION_ACTION_MOVE_PERPENDICULAR = 4 , MAV_COLLISION_ACTION_RTL = 5 , MAV_COLLISION_ACTION_HOVER = 6 , } impl MavCollisionAction { pub const DEFAULT : Self = Self :: MAV_COLLISION_ACTION_NONE ; } impl Default for MavCollisionAction { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MavWinchStatusFlag : u32 { const MAV_WINCH_STATUS_HEALTHY = 1 ; const MAV_WINCH_STATUS_FULLY_RETRACTED = 2 ; const MAV_WINCH_STATUS_MOVING = 4 ; const MAV_WINCH_STATUS_CLUTCH_ENGAGED = 8 ; const MAV_WINCH_STATUS_LOCKED = 16 ; const MAV_WINCH_STATUS_DROPPING = 32 ; const MAV_WINCH_STATUS_ARRESTING = 64 ; const MAV_WINCH_STATUS_GROUND_SENSE = 128 ; const MAV_WINCH_STATUS_RETRACTING = 256 ; const MAV_WINCH_STATUS_REDELIVER = 512 ; const MAV_WINCH_STATUS_ABANDON_LINE = 1024 ; const MAV_WINCH_STATUS_LOCKING = 2048 ; const MAV_WINCH_STATUS_LOAD_LINE = 4096 ; const MAV_WINCH_STATUS_LOAD_PAYLOAD = 8192 ; } } impl MavWinchStatusFlag { pub const DEFAULT : Self = Self :: MAV_WINCH_STATUS_HEALTHY ; } impl Default for MavWinchStatusFlag { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum StorageUsageFlag { STORAGE_USAGE_FLAG_SET = 1 , STORAGE_USAGE_FLAG_PHOTO = 2 , STORAGE_USAGE_FLAG_VIDEO = 4 , STORAGE_USAGE_FLAG_LOGS = 8 , } impl StorageUsageFlag { pub const DEFAULT : Self = Self :: STORAGE_USAGE_FLAG_SET ; } impl Default for StorageUsageFlag { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidOperatorIdType { MAV_ODID_OPERATOR_ID_TYPE_CAA = 0 , } impl MavOdidOperatorIdType { pub const DEFAULT : Self = Self :: MAV_ODID_OPERATOR_ID_TYPE_CAA ; } impl Default for MavOdidOperatorIdType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum AdsbEmitterType { ADSB_EMITTER_TYPE_NO_INFO = 0 , ADSB_EMITTER_TYPE_LIGHT = 1 , ADSB_EMITTER_TYPE_SMALL = 2 , ADSB_EMITTER_TYPE_LARGE = 3 , ADSB_EMITTER_TYPE_HIGH_VORTEX_LARGE = 4 , ADSB_EMITTER_TYPE_HEAVY = 5 , ADSB_EMITTER_TYPE_HIGHLY_MANUV = 6 , ADSB_EMITTER_TYPE_ROTOCRAFT = 7 , ADSB_EMITTER_TYPE_UNASSIGNED = 8 , ADSB_EMITTER_TYPE_GLIDER = 9 , ADSB_EMITTER_TYPE_LIGHTER_AIR = 10 , ADSB_EMITTER_TYPE_PARACHUTE = 11 , ADSB_EMITTER_TYPE_ULTRA_LIGHT = 12 , ADSB_EMITTER_TYPE_UNASSIGNED2 = 13 , ADSB_EMITTER_TYPE_UAV = 14 , ADSB_EMITTER_TYPE_SPACE = 15 , ADSB_EMITTER_TYPE_UNASSGINED3 = 16 , ADSB_EMITTER_TYPE_EMERGENCY_SURFACE = 17 , ADSB_EMITTER_TYPE_SERVICE_SURFACE = 18 , ADSB_EMITTER_TYPE_POINT_OBSTACLE = 19 , } impl AdsbEmitterType { pub const DEFAULT : Self = Self :: ADSB_EMITTER_TYPE_NO_INFO ; } impl Default for AdsbEmitterType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum GoproCaptureMode { GOPRO_CAPTURE_MODE_VIDEO = 0 , GOPRO_CAPTURE_MODE_PHOTO = 1 , GOPRO_CAPTURE_MODE_BURST = 2 , GOPRO_CAPTURE_MODE_TIME_LAPSE = 3 , GOPRO_CAPTURE_MODE_MULTI_SHOT = 4 , GOPRO_CAPTURE_MODE_PLAYBACK = 5 , GOPRO_CAPTURE_MODE_SETUP = 6 , GOPRO_CAPTURE_MODE_UNKNOWN = 255 , } impl GoproCaptureMode { pub const DEFAULT : Self = Self :: GOPRO_CAPTURE_MODE_VIDEO ; } impl Default for GoproCaptureMode { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum RcType { RC_TYPE_SPEKTRUM_DSM2 = 0 , RC_TYPE_SPEKTRUM_DSMX = 1 , } impl RcType { pub const DEFAULT : Self = Self :: RC_TYPE_SPEKTRUM_DSM2 ; } impl Default for RcType { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GpsInputIgnoreFlags : u16 { const GPS_INPUT_IGNORE_FLAG_ALT = 1 ; const GPS_INPUT_IGNORE_FLAG_HDOP = 2 ; const GPS_INPUT_IGNORE_FLAG_VDOP = 4 ; const GPS_INPUT_IGNORE_FLAG_VEL_HORIZ = 8 ; const GPS_INPUT_IGNORE_FLAG_VEL_VERT = 16 ; const GPS_INPUT_IGNORE_FLAG_SPEED_ACCURACY = 32 ; const GPS_INPUT_IGNORE_FLAG_HORIZONTAL_ACCURACY = 64 ; const GPS_INPUT_IGNORE_FLAG_VERTICAL_ACCURACY = 128 ; } } impl GpsInputIgnoreFlags { pub const DEFAULT : Self = Self :: GPS_INPUT_IGNORE_FLAG_ALT ; } impl Default for GpsInputIgnoreFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavModeGimbal { MAV_MODE_GIMBAL_UNINITIALIZED = 0 , MAV_MODE_GIMBAL_CALIBRATING_PITCH = 1 , MAV_MODE_GIMBAL_CALIBRATING_ROLL = 2 , MAV_MODE_GIMBAL_CALIBRATING_YAW = 3 , MAV_MODE_GIMBAL_INITIALIZED = 4 , MAV_MODE_GIMBAL_ACTIVE = 5 , MAV_MODE_GIMBAL_RATE_CMD_TIMEOUT = 6 , } impl MavModeGimbal { pub const DEFAULT : Self = Self :: MAV_MODE_GIMBAL_UNINITIALIZED ; } impl Default for MavModeGimbal { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidCategoryEu { MAV_ODID_CATEGORY_EU_UNDECLARED = 0 , MAV_ODID_CATEGORY_EU_OPEN = 1 , MAV_ODID_CATEGORY_EU_SPECIFIC = 2 , MAV_ODID_CATEGORY_EU_CERTIFIED = 3 , } impl MavOdidCategoryEu { pub const DEFAULT : Self = Self :: MAV_ODID_CATEGORY_EU_UNDECLARED ; } impl Default for MavOdidCategoryEu { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum GoproResolution { GOPRO_RESOLUTION_480p = 0 , GOPRO_RESOLUTION_720p = 1 , GOPRO_RESOLUTION_960p = 2 , GOPRO_RESOLUTION_1080p = 3 , GOPRO_RESOLUTION_1440p = 4 , GOPRO_RESOLUTION_2_7k_17_9 = 5 , GOPRO_RESOLUTION_2_7k_16_9 = 6 , GOPRO_RESOLUTION_2_7k_4_3 = 7 , GOPRO_RESOLUTION_4k_16_9 = 8 , GOPRO_RESOLUTION_4k_17_9 = 9 , GOPRO_RESOLUTION_720p_SUPERVIEW = 10 , GOPRO_RESOLUTION_1080p_SUPERVIEW = 11 , GOPRO_RESOLUTION_2_7k_SUPERVIEW = 12 , GOPRO_RESOLUTION_4k_SUPERVIEW = 13 , } impl GoproResolution { pub const DEFAULT : Self = Self :: GOPRO_RESOLUTION_480p ; } impl Default for GoproResolution { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavArmAuthDeniedReason { MAV_ARM_AUTH_DENIED_REASON_GENERIC = 0 , MAV_ARM_AUTH_DENIED_REASON_NONE = 1 , MAV_ARM_AUTH_DENIED_REASON_INVALID_WAYPOINT = 2 , MAV_ARM_AUTH_DENIED_REASON_TIMEOUT = 3 , MAV_ARM_AUTH_DENIED_REASON_AIRSPACE_IN_USE = 4 , MAV_ARM_AUTH_DENIED_REASON_BAD_WEATHER = 5 , } impl MavArmAuthDeniedReason { pub const DEFAULT : Self = Self :: MAV_ARM_AUTH_DENIED_REASON_GENERIC ; } impl Default for MavArmAuthDeniedReason { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum GimbalManagerFlags { GIMBAL_MANAGER_FLAGS_RETRACT = 1 , GIMBAL_MANAGER_FLAGS_NEUTRAL = 2 , GIMBAL_MANAGER_FLAGS_ROLL_LOCK = 4 , GIMBAL_MANAGER_FLAGS_PITCH_LOCK = 8 , GIMBAL_MANAGER_FLAGS_YAW_LOCK = 16 , GIMBAL_MANAGER_FLAGS_YAW_IN_VEHICLE_FRAME = 32 , GIMBAL_MANAGER_FLAGS_YAW_IN_EARTH_FRAME = 64 , GIMBAL_MANAGER_FLAGS_ACCEPTS_YAW_IN_EARTH_FRAME = 128 , GIMBAL_MANAGER_FLAGS_RC_EXCLUSIVE = 256 , GIMBAL_MANAGER_FLAGS_RC_MIXED = 512 , } impl GimbalManagerFlags { pub const DEFAULT : Self = Self :: GIMBAL_MANAGER_FLAGS_RETRACT ; } impl Default for GimbalManagerFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum LedControlPattern { LED_CONTROL_PATTERN_OFF = 0 , LED_CONTROL_PATTERN_FIRMWAREUPDATE = 1 , LED_CONTROL_PATTERN_CUSTOM = 255 , } impl LedControlPattern { pub const DEFAULT : Self = Self :: LED_CONTROL_PATTERN_OFF ; } impl Default for LedControlPattern { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum SerialControlDev { SERIAL_CONTROL_DEV_TELEM1 = 0 , SERIAL_CONTROL_DEV_TELEM2 = 1 , SERIAL_CONTROL_DEV_GPS1 = 2 , SERIAL_CONTROL_DEV_GPS2 = 3 , SERIAL_CONTROL_DEV_SHELL = 10 , SERIAL_CONTROL_SERIAL0 = 100 , SERIAL_CONTROL_SERIAL1 = 101 , SERIAL_CONTROL_SERIAL2 = 102 , SERIAL_CONTROL_SERIAL3 = 103 , SERIAL_CONTROL_SERIAL4 = 104 , SERIAL_CONTROL_SERIAL5 = 105 , SERIAL_CONTROL_SERIAL6 = 106 , SERIAL_CONTROL_SERIAL7 = 107 , SERIAL_CONTROL_SERIAL8 = 108 , SERIAL_CONTROL_SERIAL9 = 109 , } impl SerialControlDev { pub const DEFAULT : Self = Self :: SERIAL_CONTROL_DEV_TELEM1 ; } impl Default for SerialControlDev { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavRoi { MAV_ROI_NONE = 0 , MAV_ROI_WPNEXT = 1 , MAV_ROI_WPINDEX = 2 , MAV_ROI_LOCATION = 3 , MAV_ROI_TARGET = 4 , } impl MavRoi { pub const DEFAULT : Self = Self :: MAV_ROI_NONE ; } impl Default for MavRoi { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum TrackerMode { TRACKER_MODE_MANUAL = 0 , TRACKER_MODE_STOP = 1 , TRACKER_MODE_SCAN = 2 , TRACKER_MODE_SERVO_TEST = 3 , TRACKER_MODE_AUTO = 10 , TRACKER_MODE_INITIALIZING = 16 , } impl TrackerMode { pub const DEFAULT : Self = Self :: TRACKER_MODE_MANUAL ; } impl Default for TrackerMode { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum CameraMode { CAMERA_MODE_IMAGE = 0 , CAMERA_MODE_VIDEO = 1 , CAMERA_MODE_IMAGE_SURVEY = 2 , } impl CameraMode { pub const DEFAULT : Self = Self :: CAMERA_MODE_IMAGE ; } impl Default for CameraMode { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidAuthType { MAV_ODID_AUTH_TYPE_NONE = 0 , MAV_ODID_AUTH_TYPE_UAS_ID_SIGNATURE = 1 , MAV_ODID_AUTH_TYPE_OPERATOR_ID_SIGNATURE = 2 , MAV_ODID_AUTH_TYPE_MESSAGE_SET_SIGNATURE = 3 , MAV_ODID_AUTH_TYPE_NETWORK_REMOTE_ID = 4 , MAV_ODID_AUTH_TYPE_SPECIFIC_AUTHENTICATION = 5 , } impl MavOdidAuthType { pub const DEFAULT : Self = Self :: MAV_ODID_AUTH_TYPE_NONE ; } impl Default for MavOdidAuthType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum ActuatorConfiguration { ACTUATOR_CONFIGURATION_NONE = 0 , ACTUATOR_CONFIGURATION_BEEP = 1 , ACTUATOR_CONFIGURATION_3D_MODE_ON = 2 , ACTUATOR_CONFIGURATION_3D_MODE_OFF = 3 , ACTUATOR_CONFIGURATION_SPIN_DIRECTION1 = 4 , ACTUATOR_CONFIGURATION_SPIN_DIRECTION2 = 5 , } impl ActuatorConfiguration { pub const DEFAULT : Self = Self :: ACTUATOR_CONFIGURATION_NONE ; } impl Default for ActuatorConfiguration { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MissionState { MISSION_STATE_UNKNOWN = 0 , MISSION_STATE_NO_MISSION = 1 , MISSION_STATE_NOT_STARTED = 2 , MISSION_STATE_ACTIVE = 3 , MISSION_STATE_PAUSED = 4 , MISSION_STATE_COMPLETE = 5 , } impl MissionState { pub const DEFAULT : Self = Self :: MISSION_STATE_UNKNOWN ; } impl Default for MissionState { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidHeightRef { MAV_ODID_HEIGHT_REF_OVER_TAKEOFF = 0 , MAV_ODID_HEIGHT_REF_OVER_GROUND = 1 , } impl MavOdidHeightRef { pub const DEFAULT : Self = Self :: MAV_ODID_HEIGHT_REF_OVER_TAKEOFF ; } impl Default for MavOdidHeightRef { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum PrecisionLandMode { PRECISION_LAND_MODE_DISABLED = 0 , PRECISION_LAND_MODE_OPPORTUNISTIC = 1 , PRECISION_LAND_MODE_REQUIRED = 2 , } impl PrecisionLandMode { pub const DEFAULT : Self = Self :: PRECISION_LAND_MODE_DISABLED ; } impl Default for PrecisionLandMode { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum CompMetadataType { COMP_METADATA_TYPE_GENERAL = 0 , COMP_METADATA_TYPE_PARAMETER = 1 , COMP_METADATA_TYPE_COMMANDS = 2 , COMP_METADATA_TYPE_PERIPHERALS = 3 , COMP_METADATA_TYPE_EVENTS = 4 , COMP_METADATA_TYPE_ACTUATORS = 5 , } impl CompMetadataType { pub const DEFAULT : Self = Self :: COMP_METADATA_TYPE_GENERAL ; } impl Default for CompMetadataType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum GpsFixType { GPS_FIX_TYPE_NO_GPS = 0 , GPS_FIX_TYPE_NO_FIX = 1 , GPS_FIX_TYPE_2D_FIX = 2 , GPS_FIX_TYPE_3D_FIX = 3 , GPS_FIX_TYPE_DGPS = 4 , GPS_FIX_TYPE_RTK_FLOAT = 5 , GPS_FIX_TYPE_RTK_FIXED = 6 , GPS_FIX_TYPE_STATIC = 7 , GPS_FIX_TYPE_PPP = 8 , } impl GpsFixType { pub const DEFAULT : Self = Self :: GPS_FIX_TYPE_NO_GPS ; } impl Default for GpsFixType { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct TuneFormat : u32 { const TUNE_FORMAT_QBASIC1_1 = 1 ; const TUNE_FORMAT_MML_MODERN = 2 ; } } impl TuneFormat { pub const DEFAULT : Self = Self :: TUNE_FORMAT_QBASIC1_1 ; } impl Default for TuneFormat { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct UavionixAdsbOutRfSelect : u8 { const UAVIONIX_ADSB_OUT_RF_SELECT_STANDBY = 0 ; const UAVIONIX_ADSB_OUT_RF_SELECT_RX_ENABLED = 1 ; const UAVIONIX_ADSB_OUT_RF_SELECT_TX_ENABLED = 2 ; } } impl UavionixAdsbOutRfSelect { pub const DEFAULT : Self = Self :: UAVIONIX_ADSB_OUT_RF_SELECT_STANDBY ; } impl Default for UavionixAdsbOutRfSelect { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavDataStream { MAV_DATA_STREAM_ALL = 0 , MAV_DATA_STREAM_RAW_SENSORS = 1 , MAV_DATA_STREAM_EXTENDED_STATUS = 2 , MAV_DATA_STREAM_RC_CHANNELS = 3 , MAV_DATA_STREAM_RAW_CONTROLLER = 4 , MAV_DATA_STREAM_POSITION = 6 , MAV_DATA_STREAM_EXTRA1 = 10 , MAV_DATA_STREAM_EXTRA2 = 11 , MAV_DATA_STREAM_EXTRA3 = 12 , } impl MavDataStream { pub const DEFAULT : Self = Self :: MAV_DATA_STREAM_ALL ; } impl Default for MavDataStream { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MotorTestOrder { MOTOR_TEST_ORDER_DEFAULT = 0 , MOTOR_TEST_ORDER_SEQUENCE = 1 , MOTOR_TEST_ORDER_BOARD = 2 , } impl MotorTestOrder { pub const DEFAULT : Self = Self :: MOTOR_TEST_ORDER_DEFAULT ; } impl Default for MotorTestOrder { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MavPowerStatus : u16 { const MAV_POWER_STATUS_BRICK_VALID = 1 ; const MAV_POWER_STATUS_SERVO_VALID = 2 ; const MAV_POWER_STATUS_USB_CONNECTED = 4 ; const MAV_POWER_STATUS_PERIPH_OVERCURRENT = 8 ; const MAV_POWER_STATUS_PERIPH_HIPOWER_OVERCURRENT = 16 ; const MAV_POWER_STATUS_CHANGED = 32 ; } } impl MavPowerStatus { pub const DEFAULT : Self = Self :: MAV_POWER_STATUS_BRICK_VALID ; } impl Default for MavPowerStatus { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavType { MAV_TYPE_GENERIC = 0 , MAV_TYPE_FIXED_WING = 1 , MAV_TYPE_QUADROTOR = 2 , MAV_TYPE_COAXIAL = 3 , MAV_TYPE_HELICOPTER = 4 , MAV_TYPE_ANTENNA_TRACKER = 5 , MAV_TYPE_GCS = 6 , MAV_TYPE_AIRSHIP = 7 , MAV_TYPE_FREE_BALLOON = 8 , MAV_TYPE_ROCKET = 9 , MAV_TYPE_GROUND_ROVER = 10 , MAV_TYPE_SURFACE_BOAT = 11 , MAV_TYPE_SUBMARINE = 12 , MAV_TYPE_HEXAROTOR = 13 , MAV_TYPE_OCTOROTOR = 14 , MAV_TYPE_TRICOPTER = 15 , MAV_TYPE_FLAPPING_WING = 16 , MAV_TYPE_KITE = 17 , MAV_TYPE_ONBOARD_CONTROLLER = 18 , MAV_TYPE_VTOL_TAILSITTER_DUOROTOR = 19 , MAV_TYPE_VTOL_TAILSITTER_QUADROTOR = 20 , MAV_TYPE_VTOL_TILTROTOR = 21 , MAV_TYPE_VTOL_FIXEDROTOR = 22 , MAV_TYPE_VTOL_TAILSITTER = 23 , MAV_TYPE_VTOL_TILTWING = 24 , MAV_TYPE_VTOL_RESERVED5 = 25 , MAV_TYPE_GIMBAL = 26 , MAV_TYPE_ADSB = 27 , MAV_TYPE_PARAFOIL = 28 , MAV_TYPE_DODECAROTOR = 29 , MAV_TYPE_CAMERA = 30 , MAV_TYPE_CHARGING_STATION = 31 , MAV_TYPE_FLARM = 32 , MAV_TYPE_SERVO = 33 , MAV_TYPE_ODID = 34 , MAV_TYPE_DECAROTOR = 35 , MAV_TYPE_BATTERY = 36 , MAV_TYPE_PARACHUTE = 37 , MAV_TYPE_LOG = 38 , MAV_TYPE_OSD = 39 , MAV_TYPE_IMU = 40 , MAV_TYPE_GPS = 41 , MAV_TYPE_WINCH = 42 , } impl MavType { pub const DEFAULT : Self = Self :: MAV_TYPE_GENERIC ; } impl Default for MavType { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PositionTargetTypemask : u16 { const POSITION_TARGET_TYPEMASK_X_IGNORE = 1 ; const POSITION_TARGET_TYPEMASK_Y_IGNORE = 2 ; const POSITION_TARGET_TYPEMASK_Z_IGNORE = 4 ; const POSITION_TARGET_TYPEMASK_VX_IGNORE = 8 ; const POSITION_TARGET_TYPEMASK_VY_IGNORE = 16 ; const POSITION_TARGET_TYPEMASK_VZ_IGNORE = 32 ; const POSITION_TARGET_TYPEMASK_AX_IGNORE = 64 ; const POSITION_TARGET_TYPEMASK_AY_IGNORE = 128 ; const POSITION_TARGET_TYPEMASK_AZ_IGNORE = 256 ; const POSITION_TARGET_TYPEMASK_FORCE_SET = 512 ; const POSITION_TARGET_TYPEMASK_YAW_IGNORE = 1024 ; const POSITION_TARGET_TYPEMASK_YAW_RATE_IGNORE = 2048 ; } } impl PositionTargetTypemask { pub const DEFAULT : Self = Self :: POSITION_TARGET_TYPEMASK_X_IGNORE ; } impl Default for PositionTargetTypemask { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavComponent { MAV_COMP_ID_ALL = 0 , MAV_COMP_ID_AUTOPILOT1 = 1 , MAV_COMP_ID_USER1 = 25 , MAV_COMP_ID_USER2 = 26 , MAV_COMP_ID_USER3 = 27 , MAV_COMP_ID_USER4 = 28 , MAV_COMP_ID_USER5 = 29 , MAV_COMP_ID_USER6 = 30 , MAV_COMP_ID_USER7 = 31 , MAV_COMP_ID_USER8 = 32 , MAV_COMP_ID_USER9 = 33 , MAV_COMP_ID_USER10 = 34 , MAV_COMP_ID_USER11 = 35 , MAV_COMP_ID_USER12 = 36 , MAV_COMP_ID_USER13 = 37 , MAV_COMP_ID_USER14 = 38 , MAV_COMP_ID_USER15 = 39 , MAV_COMP_ID_USER16 = 40 , MAV_COMP_ID_USER17 = 41 , MAV_COMP_ID_USER18 = 42 , MAV_COMP_ID_USER19 = 43 , MAV_COMP_ID_USER20 = 44 , MAV_COMP_ID_USER21 = 45 , MAV_COMP_ID_USER22 = 46 , MAV_COMP_ID_USER23 = 47 , MAV_COMP_ID_USER24 = 48 , MAV_COMP_ID_USER25 = 49 , MAV_COMP_ID_USER26 = 50 , MAV_COMP_ID_USER27 = 51 , MAV_COMP_ID_USER28 = 52 , MAV_COMP_ID_USER29 = 53 , MAV_COMP_ID_USER30 = 54 , MAV_COMP_ID_USER31 = 55 , MAV_COMP_ID_USER32 = 56 , MAV_COMP_ID_USER33 = 57 , MAV_COMP_ID_USER34 = 58 , MAV_COMP_ID_USER35 = 59 , MAV_COMP_ID_USER36 = 60 , MAV_COMP_ID_USER37 = 61 , MAV_COMP_ID_USER38 = 62 , MAV_COMP_ID_USER39 = 63 , MAV_COMP_ID_USER40 = 64 , MAV_COMP_ID_USER41 = 65 , MAV_COMP_ID_USER42 = 66 , MAV_COMP_ID_USER43 = 67 , MAV_COMP_ID_TELEMETRY_RADIO = 68 , MAV_COMP_ID_USER45 = 69 , MAV_COMP_ID_USER46 = 70 , MAV_COMP_ID_USER47 = 71 , MAV_COMP_ID_USER48 = 72 , MAV_COMP_ID_USER49 = 73 , MAV_COMP_ID_USER50 = 74 , MAV_COMP_ID_USER51 = 75 , MAV_COMP_ID_USER52 = 76 , MAV_COMP_ID_USER53 = 77 , MAV_COMP_ID_USER54 = 78 , MAV_COMP_ID_USER55 = 79 , MAV_COMP_ID_USER56 = 80 , MAV_COMP_ID_USER57 = 81 , MAV_COMP_ID_USER58 = 82 , MAV_COMP_ID_USER59 = 83 , MAV_COMP_ID_USER60 = 84 , MAV_COMP_ID_USER61 = 85 , MAV_COMP_ID_USER62 = 86 , MAV_COMP_ID_USER63 = 87 , MAV_COMP_ID_USER64 = 88 , MAV_COMP_ID_USER65 = 89 , MAV_COMP_ID_USER66 = 90 , MAV_COMP_ID_USER67 = 91 , MAV_COMP_ID_USER68 = 92 , MAV_COMP_ID_USER69 = 93 , MAV_COMP_ID_USER70 = 94 , MAV_COMP_ID_USER71 = 95 , MAV_COMP_ID_USER72 = 96 , MAV_COMP_ID_USER73 = 97 , MAV_COMP_ID_USER74 = 98 , MAV_COMP_ID_USER75 = 99 , MAV_COMP_ID_CAMERA = 100 , MAV_COMP_ID_CAMERA2 = 101 , MAV_COMP_ID_CAMERA3 = 102 , MAV_COMP_ID_CAMERA4 = 103 , MAV_COMP_ID_CAMERA5 = 104 , MAV_COMP_ID_CAMERA6 = 105 , MAV_COMP_ID_SERVO1 = 140 , MAV_COMP_ID_SERVO2 = 141 , MAV_COMP_ID_SERVO3 = 142 , MAV_COMP_ID_SERVO4 = 143 , MAV_COMP_ID_SERVO5 = 144 , MAV_COMP_ID_SERVO6 = 145 , MAV_COMP_ID_SERVO7 = 146 , MAV_COMP_ID_SERVO8 = 147 , MAV_COMP_ID_SERVO9 = 148 , MAV_COMP_ID_SERVO10 = 149 , MAV_COMP_ID_SERVO11 = 150 , MAV_COMP_ID_SERVO12 = 151 , MAV_COMP_ID_SERVO13 = 152 , MAV_COMP_ID_SERVO14 = 153 , MAV_COMP_ID_GIMBAL = 154 , MAV_COMP_ID_LOG = 155 , MAV_COMP_ID_ADSB = 156 , MAV_COMP_ID_OSD = 157 , MAV_COMP_ID_PERIPHERAL = 158 , MAV_COMP_ID_QX1_GIMBAL = 159 , MAV_COMP_ID_FLARM = 160 , MAV_COMP_ID_PARACHUTE = 161 , MAV_COMP_ID_WINCH = 169 , MAV_COMP_ID_GIMBAL2 = 171 , MAV_COMP_ID_GIMBAL3 = 172 , MAV_COMP_ID_GIMBAL4 = 173 , MAV_COMP_ID_GIMBAL5 = 174 , MAV_COMP_ID_GIMBAL6 = 175 , MAV_COMP_ID_BATTERY = 180 , MAV_COMP_ID_BATTERY2 = 181 , MAV_COMP_ID_MAVCAN = 189 , MAV_COMP_ID_MISSIONPLANNER = 190 , MAV_COMP_ID_ONBOARD_COMPUTER = 191 , MAV_COMP_ID_ONBOARD_COMPUTER2 = 192 , MAV_COMP_ID_ONBOARD_COMPUTER3 = 193 , MAV_COMP_ID_ONBOARD_COMPUTER4 = 194 , MAV_COMP_ID_PATHPLANNER = 195 , MAV_COMP_ID_OBSTACLE_AVOIDANCE = 196 , MAV_COMP_ID_VISUAL_INERTIAL_ODOMETRY = 197 , MAV_COMP_ID_PAIRING_MANAGER = 198 , MAV_COMP_ID_IMU = 200 , MAV_COMP_ID_IMU_2 = 201 , MAV_COMP_ID_IMU_3 = 202 , MAV_COMP_ID_GPS = 220 , MAV_COMP_ID_GPS2 = 221 , MAV_COMP_ID_ODID_TXRX_1 = 236 , MAV_COMP_ID_ODID_TXRX_2 = 237 , MAV_COMP_ID_ODID_TXRX_3 = 238 , MAV_COMP_ID_UDP_BRIDGE = 240 , MAV_COMP_ID_UART_BRIDGE = 241 , MAV_COMP_ID_TUNNEL_NODE = 242 , MAV_COMP_ID_SYSTEM_CONTROL = 250 , } impl MavComponent { pub const DEFAULT : Self = Self :: MAV_COMP_ID_ALL ; } impl Default for MavComponent { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HEARTBEAT_DATA { pub custom_mode : u32 , pub mavtype : MavType , pub autopilot : MavAutopilot , pub base_mode : MavModeFlag , pub system_status : MavState , pub mavlink_version : u8 , } impl HEARTBEAT_DATA { pub const ENCODED_LEN : usize = 9usize ; pub const DEFAULT : Self = Self { custom_mode : 0_u32 , mavtype : MavType :: DEFAULT , autopilot : MavAutopilot :: DEFAULT , base_mode : MavModeFlag :: DEFAULT , system_status : MavState :: DEFAULT , mavlink_version : 0_u8 , } ; } impl Default for HEARTBEAT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for HEARTBEAT_DATA { type Message = MavMessage ; const ID : u32 = 0u32 ; const NAME : & 'static str = "HEARTBEAT" ; const EXTRA_CRC : u8 = 50u8 ; const ENCODED_LEN : usize = 9usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . custom_mode = buf . get_u32_le () ; let tmp = buf . get_u8 () ; __struct . mavtype = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavType" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . autopilot = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavAutopilot" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . base_mode = MavModeFlag :: from_bits (tmp & MavModeFlag :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "MavModeFlag" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . system_status = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavState" , value : tmp as u32 }) ? ; __struct . mavlink_version = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . custom_mode) ; __tmp . put_u8 (self . mavtype as u8) ; __tmp . put_u8 (self . autopilot as u8) ; __tmp . put_u8 (self . base_mode . bits ()) ; __tmp . put_u8 (self . system_status as u8) ; __tmp . put_u8 (self . mavlink_version) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MISSION_ITEM_REACHED_DATA { pub seq : u16 , } impl MISSION_ITEM_REACHED_DATA { pub const ENCODED_LEN : usize = 2usize ; pub const DEFAULT : Self = Self { seq : 0_u16 , } ; } impl Default for MISSION_ITEM_REACHED_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MISSION_ITEM_REACHED_DATA { type Message = MavMessage ; const ID : u32 = 46u32 ; const NAME : & 'static str = "MISSION_ITEM_REACHED" ; const EXTRA_CRC : u8 = 11u8 ; const ENCODED_LEN : usize = 2usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . seq = buf . get_u16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . seq) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct OSD_PARAM_SHOW_CONFIG_DATA { pub request_id : u32 , pub target_system : u8 , pub target_component : u8 , pub osd_screen : u8 , pub osd_index : u8 , } impl OSD_PARAM_SHOW_CONFIG_DATA { pub const ENCODED_LEN : usize = 8usize ; pub const DEFAULT : Self = Self { request_id : 0_u32 , target_system : 0_u8 , target_component : 0_u8 , osd_screen : 0_u8 , osd_index : 0_u8 , } ; } impl Default for OSD_PARAM_SHOW_CONFIG_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for OSD_PARAM_SHOW_CONFIG_DATA { type Message = MavMessage ; const ID : u32 = 11035u32 ; const NAME : & 'static str = "OSD_PARAM_SHOW_CONFIG" ; const EXTRA_CRC : u8 = 128u8 ; const ENCODED_LEN : usize = 8usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . request_id = buf . get_u32_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . osd_screen = buf . get_u8 () ; __struct . osd_index = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . request_id) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . osd_screen) ; __tmp . put_u8 (self . osd_index) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct TIMESYNC_DATA { pub tc1 : i64 , pub ts1 : i64 , } impl TIMESYNC_DATA { pub const ENCODED_LEN : usize = 16usize ; pub const DEFAULT : Self = Self { tc1 : 0_i64 , ts1 : 0_i64 , } ; } impl Default for TIMESYNC_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for TIMESYNC_DATA { type Message = MavMessage ; const ID : u32 = 111u32 ; const NAME : & 'static str = "TIMESYNC" ; const EXTRA_CRC : u8 = 34u8 ; const ENCODED_LEN : usize = 16usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . tc1 = buf . get_i64_le () ; __struct . ts1 = buf . get_i64_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i64_le (self . tc1) ; __tmp . put_i64_le (self . ts1) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GOPRO_GET_REQUEST_DATA { pub target_system : u8 , pub target_component : u8 , pub cmd_id : GoproCommand , } impl GOPRO_GET_REQUEST_DATA { pub const ENCODED_LEN : usize = 3usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , cmd_id : GoproCommand :: DEFAULT , } ; } impl Default for GOPRO_GET_REQUEST_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GOPRO_GET_REQUEST_DATA { type Message = MavMessage ; const ID : u32 = 216u32 ; const NAME : & 'static str = "GOPRO_GET_REQUEST" ; const EXTRA_CRC : u8 = 50u8 ; const ENCODED_LEN : usize = 3usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . cmd_id = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "GoproCommand" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . cmd_id as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA { pub time_usec : u64 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub pos_x : [f32 ; 5] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub pos_y : [f32 ; 5] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub pos_z : [f32 ; 5] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub vel_x : [f32 ; 5] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub vel_y : [f32 ; 5] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub vel_z : [f32 ; 5] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub acc_x : [f32 ; 5] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub acc_y : [f32 ; 5] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub acc_z : [f32 ; 5] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub pos_yaw : [f32 ; 5] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub vel_yaw : [f32 ; 5] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub command : [u16 ; 5] , pub valid_points : u8 , } impl TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA { pub const ENCODED_LEN : usize = 239usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , pos_x : [0.0_f32 ; 5usize] , pos_y : [0.0_f32 ; 5usize] , pos_z : [0.0_f32 ; 5usize] , vel_x : [0.0_f32 ; 5usize] , vel_y : [0.0_f32 ; 5usize] , vel_z : [0.0_f32 ; 5usize] , acc_x : [0.0_f32 ; 5usize] , acc_y : [0.0_f32 ; 5usize] , acc_z : [0.0_f32 ; 5usize] , pos_yaw : [0.0_f32 ; 5usize] , vel_yaw : [0.0_f32 ; 5usize] , command : [0_u16 ; 5usize] , valid_points : 0_u8 , } ; } impl Default for TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA { type Message = MavMessage ; const ID : u32 = 332u32 ; const NAME : & 'static str = "TRAJECTORY_REPRESENTATION_WAYPOINTS" ; const EXTRA_CRC : u8 = 236u8 ; const ENCODED_LEN : usize = 239usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; for v in & mut __struct . pos_x { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . pos_y { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . pos_z { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . vel_x { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . vel_y { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . vel_z { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . acc_x { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . acc_y { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . acc_z { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . pos_yaw { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . vel_yaw { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . command { let val = buf . get_u16_le () ; * v = val ; } __struct . valid_points = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; for val in & self . pos_x { __tmp . put_f32_le (* val) ; } for val in & self . pos_y { __tmp . put_f32_le (* val) ; } for val in & self . pos_z { __tmp . put_f32_le (* val) ; } for val in & self . vel_x { __tmp . put_f32_le (* val) ; } for val in & self . vel_y { __tmp . put_f32_le (* val) ; } for val in & self . vel_z { __tmp . put_f32_le (* val) ; } for val in & self . acc_x { __tmp . put_f32_le (* val) ; } for val in & self . acc_y { __tmp . put_f32_le (* val) ; } for val in & self . acc_z { __tmp . put_f32_le (* val) ; } for val in & self . pos_yaw { __tmp . put_f32_le (* val) ; } for val in & self . vel_yaw { __tmp . put_f32_le (* val) ; } for val in & self . command { __tmp . put_u16_le (* val) ; } __tmp . put_u8 (self . valid_points) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct POSITION_TARGET_LOCAL_NED_DATA { pub time_boot_ms : u32 , pub x : f32 , pub y : f32 , pub z : f32 , pub vx : f32 , pub vy : f32 , pub vz : f32 , pub afx : f32 , pub afy : f32 , pub afz : f32 , pub yaw : f32 , pub yaw_rate : f32 , pub type_mask : PositionTargetTypemask , pub coordinate_frame : MavFrame , } impl POSITION_TARGET_LOCAL_NED_DATA { pub const ENCODED_LEN : usize = 51usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , x : 0.0_f32 , y : 0.0_f32 , z : 0.0_f32 , vx : 0.0_f32 , vy : 0.0_f32 , vz : 0.0_f32 , afx : 0.0_f32 , afy : 0.0_f32 , afz : 0.0_f32 , yaw : 0.0_f32 , yaw_rate : 0.0_f32 , type_mask : PositionTargetTypemask :: DEFAULT , coordinate_frame : MavFrame :: DEFAULT , } ; } impl Default for POSITION_TARGET_LOCAL_NED_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for POSITION_TARGET_LOCAL_NED_DATA { type Message = MavMessage ; const ID : u32 = 85u32 ; const NAME : & 'static str = "POSITION_TARGET_LOCAL_NED" ; const EXTRA_CRC : u8 = 140u8 ; const ENCODED_LEN : usize = 51usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . x = buf . get_f32_le () ; __struct . y = buf . get_f32_le () ; __struct . z = buf . get_f32_le () ; __struct . vx = buf . get_f32_le () ; __struct . vy = buf . get_f32_le () ; __struct . vz = buf . get_f32_le () ; __struct . afx = buf . get_f32_le () ; __struct . afy = buf . get_f32_le () ; __struct . afz = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; __struct . yaw_rate = buf . get_f32_le () ; let tmp = buf . get_u16_le () ; __struct . type_mask = PositionTargetTypemask :: from_bits (tmp & PositionTargetTypemask :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "PositionTargetTypemask" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . coordinate_frame = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavFrame" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; __tmp . put_f32_le (self . vx) ; __tmp . put_f32_le (self . vy) ; __tmp . put_f32_le (self . vz) ; __tmp . put_f32_le (self . afx) ; __tmp . put_f32_le (self . afy) ; __tmp . put_f32_le (self . afz) ; __tmp . put_f32_le (self . yaw) ; __tmp . put_f32_le (self . yaw_rate) ; __tmp . put_u16_le (self . type_mask . bits ()) ; __tmp . put_u8 (self . coordinate_frame as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LOCAL_POSITION_NED_DATA { pub time_boot_ms : u32 , pub x : f32 , pub y : f32 , pub z : f32 , pub vx : f32 , pub vy : f32 , pub vz : f32 , } impl LOCAL_POSITION_NED_DATA { pub const ENCODED_LEN : usize = 28usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , x : 0.0_f32 , y : 0.0_f32 , z : 0.0_f32 , vx : 0.0_f32 , vy : 0.0_f32 , vz : 0.0_f32 , } ; } impl Default for LOCAL_POSITION_NED_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for LOCAL_POSITION_NED_DATA { type Message = MavMessage ; const ID : u32 = 32u32 ; const NAME : & 'static str = "LOCAL_POSITION_NED" ; const EXTRA_CRC : u8 = 185u8 ; const ENCODED_LEN : usize = 28usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . x = buf . get_f32_le () ; __struct . y = buf . get_f32_le () ; __struct . z = buf . get_f32_le () ; __struct . vx = buf . get_f32_le () ; __struct . vy = buf . get_f32_le () ; __struct . vz = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; __tmp . put_f32_le (self . vx) ; __tmp . put_f32_le (self . vy) ; __tmp . put_f32_le (self . vz) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct TIME_ESTIMATE_TO_TARGET_DATA { pub safe_return : i32 , pub land : i32 , pub mission_next_item : i32 , pub mission_end : i32 , pub commanded_action : i32 , } impl TIME_ESTIMATE_TO_TARGET_DATA { pub const ENCODED_LEN : usize = 20usize ; pub const DEFAULT : Self = Self { safe_return : 0_i32 , land : 0_i32 , mission_next_item : 0_i32 , mission_end : 0_i32 , commanded_action : 0_i32 , } ; } impl Default for TIME_ESTIMATE_TO_TARGET_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for TIME_ESTIMATE_TO_TARGET_DATA { type Message = MavMessage ; const ID : u32 = 380u32 ; const NAME : & 'static str = "TIME_ESTIMATE_TO_TARGET" ; const EXTRA_CRC : u8 = 232u8 ; const ENCODED_LEN : usize = 20usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . safe_return = buf . get_i32_le () ; __struct . land = buf . get_i32_le () ; __struct . mission_next_item = buf . get_i32_le () ; __struct . mission_end = buf . get_i32_le () ; __struct . commanded_action = buf . get_i32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . safe_return) ; __tmp . put_i32_le (self . land) ; __tmp . put_i32_le (self . mission_next_item) ; __tmp . put_i32_le (self . mission_end) ; __tmp . put_i32_le (self . commanded_action) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SUPPORTED_TUNES_DATA { pub format : TuneFormat , pub target_system : u8 , pub target_component : u8 , } impl SUPPORTED_TUNES_DATA { pub const ENCODED_LEN : usize = 6usize ; pub const DEFAULT : Self = Self { format : TuneFormat :: DEFAULT , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for SUPPORTED_TUNES_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SUPPORTED_TUNES_DATA { type Message = MavMessage ; const ID : u32 = 401u32 ; const NAME : & 'static str = "SUPPORTED_TUNES" ; const EXTRA_CRC : u8 = 183u8 ; const ENCODED_LEN : usize = 6usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u32_le () ; __struct . format = TuneFormat :: from_bits (tmp & TuneFormat :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "TuneFormat" , value : tmp as u32 }) ? ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . format . bits ()) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct VFR_HUD_DATA { pub airspeed : f32 , pub groundspeed : f32 , pub alt : f32 , pub climb : f32 , pub heading : i16 , pub throttle : u16 , } impl VFR_HUD_DATA { pub const ENCODED_LEN : usize = 20usize ; pub const DEFAULT : Self = Self { airspeed : 0.0_f32 , groundspeed : 0.0_f32 , alt : 0.0_f32 , climb : 0.0_f32 , heading : 0_i16 , throttle : 0_u16 , } ; } impl Default for VFR_HUD_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for VFR_HUD_DATA { type Message = MavMessage ; const ID : u32 = 74u32 ; const NAME : & 'static str = "VFR_HUD" ; const EXTRA_CRC : u8 = 20u8 ; const ENCODED_LEN : usize = 20usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . airspeed = buf . get_f32_le () ; __struct . groundspeed = buf . get_f32_le () ; __struct . alt = buf . get_f32_le () ; __struct . climb = buf . get_f32_le () ; __struct . heading = buf . get_i16_le () ; __struct . throttle = buf . get_u16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . airspeed) ; __tmp . put_f32_le (self . groundspeed) ; __tmp . put_f32_le (self . alt) ; __tmp . put_f32_le (self . climb) ; __tmp . put_i16_le (self . heading) ; __tmp . put_u16_le (self . throttle) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct POSITION_TARGET_GLOBAL_INT_DATA { pub time_boot_ms : u32 , pub lat_int : i32 , pub lon_int : i32 , pub alt : f32 , pub vx : f32 , pub vy : f32 , pub vz : f32 , pub afx : f32 , pub afy : f32 , pub afz : f32 , pub yaw : f32 , pub yaw_rate : f32 , pub type_mask : PositionTargetTypemask , pub coordinate_frame : MavFrame , } impl POSITION_TARGET_GLOBAL_INT_DATA { pub const ENCODED_LEN : usize = 51usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , lat_int : 0_i32 , lon_int : 0_i32 , alt : 0.0_f32 , vx : 0.0_f32 , vy : 0.0_f32 , vz : 0.0_f32 , afx : 0.0_f32 , afy : 0.0_f32 , afz : 0.0_f32 , yaw : 0.0_f32 , yaw_rate : 0.0_f32 , type_mask : PositionTargetTypemask :: DEFAULT , coordinate_frame : MavFrame :: DEFAULT , } ; } impl Default for POSITION_TARGET_GLOBAL_INT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for POSITION_TARGET_GLOBAL_INT_DATA { type Message = MavMessage ; const ID : u32 = 87u32 ; const NAME : & 'static str = "POSITION_TARGET_GLOBAL_INT" ; const EXTRA_CRC : u8 = 150u8 ; const ENCODED_LEN : usize = 51usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . lat_int = buf . get_i32_le () ; __struct . lon_int = buf . get_i32_le () ; __struct . alt = buf . get_f32_le () ; __struct . vx = buf . get_f32_le () ; __struct . vy = buf . get_f32_le () ; __struct . vz = buf . get_f32_le () ; __struct . afx = buf . get_f32_le () ; __struct . afy = buf . get_f32_le () ; __struct . afz = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; __struct . yaw_rate = buf . get_f32_le () ; let tmp = buf . get_u16_le () ; __struct . type_mask = PositionTargetTypemask :: from_bits (tmp & PositionTargetTypemask :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "PositionTargetTypemask" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . coordinate_frame = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavFrame" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_i32_le (self . lat_int) ; __tmp . put_i32_le (self . lon_int) ; __tmp . put_f32_le (self . alt) ; __tmp . put_f32_le (self . vx) ; __tmp . put_f32_le (self . vy) ; __tmp . put_f32_le (self . vz) ; __tmp . put_f32_le (self . afx) ; __tmp . put_f32_le (self . afy) ; __tmp . put_f32_le (self . afz) ; __tmp . put_f32_le (self . yaw) ; __tmp . put_f32_le (self . yaw_rate) ; __tmp . put_u16_le (self . type_mask . bits ()) ; __tmp . put_u8 (self . coordinate_frame as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct EFI_STATUS_DATA { pub ecu_index : f32 , pub rpm : f32 , pub fuel_consumed : f32 , pub fuel_flow : f32 , pub engine_load : f32 , pub throttle_position : f32 , pub spark_dwell_time : f32 , pub barometric_pressure : f32 , pub intake_manifold_pressure : f32 , pub intake_manifold_temperature : f32 , pub cylinder_head_temperature : f32 , pub ignition_timing : f32 , pub injection_time : f32 , pub exhaust_gas_temperature : f32 , pub throttle_out : f32 , pub pt_compensation : f32 , pub health : u8 , } impl EFI_STATUS_DATA { pub const ENCODED_LEN : usize = 65usize ; pub const DEFAULT : Self = Self { ecu_index : 0.0_f32 , rpm : 0.0_f32 , fuel_consumed : 0.0_f32 , fuel_flow : 0.0_f32 , engine_load : 0.0_f32 , throttle_position : 0.0_f32 , spark_dwell_time : 0.0_f32 , barometric_pressure : 0.0_f32 , intake_manifold_pressure : 0.0_f32 , intake_manifold_temperature : 0.0_f32 , cylinder_head_temperature : 0.0_f32 , ignition_timing : 0.0_f32 , injection_time : 0.0_f32 , exhaust_gas_temperature : 0.0_f32 , throttle_out : 0.0_f32 , pt_compensation : 0.0_f32 , health : 0_u8 , } ; } impl Default for EFI_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for EFI_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 225u32 ; const NAME : & 'static str = "EFI_STATUS" ; const EXTRA_CRC : u8 = 208u8 ; const ENCODED_LEN : usize = 65usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . ecu_index = buf . get_f32_le () ; __struct . rpm = buf . get_f32_le () ; __struct . fuel_consumed = buf . get_f32_le () ; __struct . fuel_flow = buf . get_f32_le () ; __struct . engine_load = buf . get_f32_le () ; __struct . throttle_position = buf . get_f32_le () ; __struct . spark_dwell_time = buf . get_f32_le () ; __struct . barometric_pressure = buf . get_f32_le () ; __struct . intake_manifold_pressure = buf . get_f32_le () ; __struct . intake_manifold_temperature = buf . get_f32_le () ; __struct . cylinder_head_temperature = buf . get_f32_le () ; __struct . ignition_timing = buf . get_f32_le () ; __struct . injection_time = buf . get_f32_le () ; __struct . exhaust_gas_temperature = buf . get_f32_le () ; __struct . throttle_out = buf . get_f32_le () ; __struct . pt_compensation = buf . get_f32_le () ; __struct . health = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . ecu_index) ; __tmp . put_f32_le (self . rpm) ; __tmp . put_f32_le (self . fuel_consumed) ; __tmp . put_f32_le (self . fuel_flow) ; __tmp . put_f32_le (self . engine_load) ; __tmp . put_f32_le (self . throttle_position) ; __tmp . put_f32_le (self . spark_dwell_time) ; __tmp . put_f32_le (self . barometric_pressure) ; __tmp . put_f32_le (self . intake_manifold_pressure) ; __tmp . put_f32_le (self . intake_manifold_temperature) ; __tmp . put_f32_le (self . cylinder_head_temperature) ; __tmp . put_f32_le (self . ignition_timing) ; __tmp . put_f32_le (self . injection_time) ; __tmp . put_f32_le (self . exhaust_gas_temperature) ; __tmp . put_f32_le (self . throttle_out) ; __tmp . put_f32_le (self . pt_compensation) ; __tmp . put_u8 (self . health) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ALTITUDE_DATA { pub time_usec : u64 , pub altitude_monotonic : f32 , pub altitude_amsl : f32 , pub altitude_local : f32 , pub altitude_relative : f32 , pub altitude_terrain : f32 , pub bottom_clearance : f32 , } impl ALTITUDE_DATA { pub const ENCODED_LEN : usize = 32usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , altitude_monotonic : 0.0_f32 , altitude_amsl : 0.0_f32 , altitude_local : 0.0_f32 , altitude_relative : 0.0_f32 , altitude_terrain : 0.0_f32 , bottom_clearance : 0.0_f32 , } ; } impl Default for ALTITUDE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ALTITUDE_DATA { type Message = MavMessage ; const ID : u32 = 141u32 ; const NAME : & 'static str = "ALTITUDE" ; const EXTRA_CRC : u8 = 47u8 ; const ENCODED_LEN : usize = 32usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . altitude_monotonic = buf . get_f32_le () ; __struct . altitude_amsl = buf . get_f32_le () ; __struct . altitude_local = buf . get_f32_le () ; __struct . altitude_relative = buf . get_f32_le () ; __struct . altitude_terrain = buf . get_f32_le () ; __struct . bottom_clearance = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . altitude_monotonic) ; __tmp . put_f32_le (self . altitude_amsl) ; __tmp . put_f32_le (self . altitude_local) ; __tmp . put_f32_le (self . altitude_relative) ; __tmp . put_f32_le (self . altitude_terrain) ; __tmp . put_f32_le (self . bottom_clearance) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct RAW_PRESSURE_DATA { pub time_usec : u64 , pub press_abs : i16 , pub press_diff1 : i16 , pub press_diff2 : i16 , pub temperature : i16 , } impl RAW_PRESSURE_DATA { pub const ENCODED_LEN : usize = 16usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , press_abs : 0_i16 , press_diff1 : 0_i16 , press_diff2 : 0_i16 , temperature : 0_i16 , } ; } impl Default for RAW_PRESSURE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for RAW_PRESSURE_DATA { type Message = MavMessage ; const ID : u32 = 28u32 ; const NAME : & 'static str = "RAW_PRESSURE" ; const EXTRA_CRC : u8 = 67u8 ; const ENCODED_LEN : usize = 16usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . press_abs = buf . get_i16_le () ; __struct . press_diff1 = buf . get_i16_le () ; __struct . press_diff2 = buf . get_i16_le () ; __struct . temperature = buf . get_i16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_i16_le (self . press_abs) ; __tmp . put_i16_le (self . press_diff1) ; __tmp . put_i16_le (self . press_diff2) ; __tmp . put_i16_le (self . temperature) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct OBSTACLE_DISTANCE_DATA { pub time_usec : u64 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub distances : [u16 ; 72] , pub min_distance : u16 , pub max_distance : u16 , pub sensor_type : MavDistanceSensor , pub increment : u8 , } impl OBSTACLE_DISTANCE_DATA { pub const ENCODED_LEN : usize = 158usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , distances : [0_u16 ; 72usize] , min_distance : 0_u16 , max_distance : 0_u16 , sensor_type : MavDistanceSensor :: DEFAULT , increment : 0_u8 , } ; } impl Default for OBSTACLE_DISTANCE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for OBSTACLE_DISTANCE_DATA { type Message = MavMessage ; const ID : u32 = 330u32 ; const NAME : & 'static str = "OBSTACLE_DISTANCE" ; const EXTRA_CRC : u8 = 23u8 ; const ENCODED_LEN : usize = 158usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; for v in & mut __struct . distances { let val = buf . get_u16_le () ; * v = val ; } __struct . min_distance = buf . get_u16_le () ; __struct . max_distance = buf . get_u16_le () ; let tmp = buf . get_u8 () ; __struct . sensor_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavDistanceSensor" , value : tmp as u32 }) ? ; __struct . increment = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; for val in & self . distances { __tmp . put_u16_le (* val) ; } __tmp . put_u16_le (self . min_distance) ; __tmp . put_u16_le (self . max_distance) ; __tmp . put_u8 (self . sensor_type as u8) ; __tmp . put_u8 (self . increment) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LINK_NODE_STATUS_DATA { pub timestamp : u64 , pub tx_rate : u32 , pub rx_rate : u32 , pub messages_sent : u32 , pub messages_received : u32 , pub messages_lost : u32 , pub rx_parse_err : u16 , pub tx_overflows : u16 , pub rx_overflows : u16 , pub tx_buf : u8 , pub rx_buf : u8 , } impl LINK_NODE_STATUS_DATA { pub const ENCODED_LEN : usize = 36usize ; pub const DEFAULT : Self = Self { timestamp : 0_u64 , tx_rate : 0_u32 , rx_rate : 0_u32 , messages_sent : 0_u32 , messages_received : 0_u32 , messages_lost : 0_u32 , rx_parse_err : 0_u16 , tx_overflows : 0_u16 , rx_overflows : 0_u16 , tx_buf : 0_u8 , rx_buf : 0_u8 , } ; } impl Default for LINK_NODE_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for LINK_NODE_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 8u32 ; const NAME : & 'static str = "LINK_NODE_STATUS" ; const EXTRA_CRC : u8 = 117u8 ; const ENCODED_LEN : usize = 36usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . timestamp = buf . get_u64_le () ; __struct . tx_rate = buf . get_u32_le () ; __struct . rx_rate = buf . get_u32_le () ; __struct . messages_sent = buf . get_u32_le () ; __struct . messages_received = buf . get_u32_le () ; __struct . messages_lost = buf . get_u32_le () ; __struct . rx_parse_err = buf . get_u16_le () ; __struct . tx_overflows = buf . get_u16_le () ; __struct . rx_overflows = buf . get_u16_le () ; __struct . tx_buf = buf . get_u8 () ; __struct . rx_buf = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . timestamp) ; __tmp . put_u32_le (self . tx_rate) ; __tmp . put_u32_le (self . rx_rate) ; __tmp . put_u32_le (self . messages_sent) ; __tmp . put_u32_le (self . messages_received) ; __tmp . put_u32_le (self . messages_lost) ; __tmp . put_u16_le (self . rx_parse_err) ; __tmp . put_u16_le (self . tx_overflows) ; __tmp . put_u16_le (self . rx_overflows) ; __tmp . put_u8 (self . tx_buf) ; __tmp . put_u8 (self . rx_buf) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct AIRSPEED_AUTOCAL_DATA { pub vx : f32 , pub vy : f32 , pub vz : f32 , pub diff_pressure : f32 , pub EAS2TAS : f32 , pub ratio : f32 , pub state_x : f32 , pub state_y : f32 , pub state_z : f32 , pub Pax : f32 , pub Pby : f32 , pub Pcz : f32 , } impl AIRSPEED_AUTOCAL_DATA { pub const ENCODED_LEN : usize = 48usize ; pub const DEFAULT : Self = Self { vx : 0.0_f32 , vy : 0.0_f32 , vz : 0.0_f32 , diff_pressure : 0.0_f32 , EAS2TAS : 0.0_f32 , ratio : 0.0_f32 , state_x : 0.0_f32 , state_y : 0.0_f32 , state_z : 0.0_f32 , Pax : 0.0_f32 , Pby : 0.0_f32 , Pcz : 0.0_f32 , } ; } impl Default for AIRSPEED_AUTOCAL_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for AIRSPEED_AUTOCAL_DATA { type Message = MavMessage ; const ID : u32 = 174u32 ; const NAME : & 'static str = "AIRSPEED_AUTOCAL" ; const EXTRA_CRC : u8 = 167u8 ; const ENCODED_LEN : usize = 48usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . vx = buf . get_f32_le () ; __struct . vy = buf . get_f32_le () ; __struct . vz = buf . get_f32_le () ; __struct . diff_pressure = buf . get_f32_le () ; __struct . EAS2TAS = buf . get_f32_le () ; __struct . ratio = buf . get_f32_le () ; __struct . state_x = buf . get_f32_le () ; __struct . state_y = buf . get_f32_le () ; __struct . state_z = buf . get_f32_le () ; __struct . Pax = buf . get_f32_le () ; __struct . Pby = buf . get_f32_le () ; __struct . Pcz = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . vx) ; __tmp . put_f32_le (self . vy) ; __tmp . put_f32_le (self . vz) ; __tmp . put_f32_le (self . diff_pressure) ; __tmp . put_f32_le (self . EAS2TAS) ; __tmp . put_f32_le (self . ratio) ; __tmp . put_f32_le (self . state_x) ; __tmp . put_f32_le (self . state_y) ; __tmp . put_f32_le (self . state_z) ; __tmp . put_f32_le (self . Pax) ; __tmp . put_f32_le (self . Pby) ; __tmp . put_f32_le (self . Pcz) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SET_GPS_GLOBAL_ORIGIN_DATA { pub latitude : i32 , pub longitude : i32 , pub altitude : i32 , pub target_system : u8 , } impl SET_GPS_GLOBAL_ORIGIN_DATA { pub const ENCODED_LEN : usize = 13usize ; pub const DEFAULT : Self = Self { latitude : 0_i32 , longitude : 0_i32 , altitude : 0_i32 , target_system : 0_u8 , } ; } impl Default for SET_GPS_GLOBAL_ORIGIN_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SET_GPS_GLOBAL_ORIGIN_DATA { type Message = MavMessage ; const ID : u32 = 48u32 ; const NAME : & 'static str = "SET_GPS_GLOBAL_ORIGIN" ; const EXTRA_CRC : u8 = 41u8 ; const ENCODED_LEN : usize = 13usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . latitude = buf . get_i32_le () ; __struct . longitude = buf . get_i32_le () ; __struct . altitude = buf . get_i32_le () ; __struct . target_system = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . latitude) ; __tmp . put_i32_le (self . longitude) ; __tmp . put_i32_le (self . altitude) ; __tmp . put_u8 (self . target_system) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct RADIO_STATUS_DATA { pub rxerrors : u16 , pub fixed : u16 , pub rssi : u8 , pub remrssi : u8 , pub txbuf : u8 , pub noise : u8 , pub remnoise : u8 , } impl RADIO_STATUS_DATA { pub const ENCODED_LEN : usize = 9usize ; pub const DEFAULT : Self = Self { rxerrors : 0_u16 , fixed : 0_u16 , rssi : 0_u8 , remrssi : 0_u8 , txbuf : 0_u8 , noise : 0_u8 , remnoise : 0_u8 , } ; } impl Default for RADIO_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for RADIO_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 109u32 ; const NAME : & 'static str = "RADIO_STATUS" ; const EXTRA_CRC : u8 = 185u8 ; const ENCODED_LEN : usize = 9usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . rxerrors = buf . get_u16_le () ; __struct . fixed = buf . get_u16_le () ; __struct . rssi = buf . get_u8 () ; __struct . remrssi = buf . get_u8 () ; __struct . txbuf = buf . get_u8 () ; __struct . noise = buf . get_u8 () ; __struct . remnoise = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . rxerrors) ; __tmp . put_u16_le (self . fixed) ; __tmp . put_u8 (self . rssi) ; __tmp . put_u8 (self . remrssi) ; __tmp . put_u8 (self . txbuf) ; __tmp . put_u8 (self . noise) ; __tmp . put_u8 (self . remnoise) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LOGGING_DATA_DATA { pub sequence : u16 , pub target_system : u8 , pub target_component : u8 , pub length : u8 , pub first_message_offset : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub data : [u8 ; 249] , } impl LOGGING_DATA_DATA { pub const ENCODED_LEN : usize = 255usize ; pub const DEFAULT : Self = Self { sequence : 0_u16 , target_system : 0_u8 , target_component : 0_u8 , length : 0_u8 , first_message_offset : 0_u8 , data : [0_u8 ; 249usize] , } ; } impl Default for LOGGING_DATA_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for LOGGING_DATA_DATA { type Message = MavMessage ; const ID : u32 = 266u32 ; const NAME : & 'static str = "LOGGING_DATA" ; const EXTRA_CRC : u8 = 193u8 ; const ENCODED_LEN : usize = 255usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . sequence = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . length = buf . get_u8 () ; __struct . first_message_offset = buf . get_u8 () ; for v in & mut __struct . data { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . sequence) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . length) ; __tmp . put_u8 (self . first_message_offset) ; for val in & self . data { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HOME_POSITION_DATA { pub latitude : i32 , pub longitude : i32 , pub altitude : i32 , pub x : f32 , pub y : f32 , pub z : f32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub q : [f32 ; 4] , pub approach_x : f32 , pub approach_y : f32 , pub approach_z : f32 , } impl HOME_POSITION_DATA { pub const ENCODED_LEN : usize = 52usize ; pub const DEFAULT : Self = Self { latitude : 0_i32 , longitude : 0_i32 , altitude : 0_i32 , x : 0.0_f32 , y : 0.0_f32 , z : 0.0_f32 , q : [0.0_f32 ; 4usize] , approach_x : 0.0_f32 , approach_y : 0.0_f32 , approach_z : 0.0_f32 , } ; } impl Default for HOME_POSITION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for HOME_POSITION_DATA { type Message = MavMessage ; const ID : u32 = 242u32 ; const NAME : & 'static str = "HOME_POSITION" ; const EXTRA_CRC : u8 = 104u8 ; const ENCODED_LEN : usize = 52usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . latitude = buf . get_i32_le () ; __struct . longitude = buf . get_i32_le () ; __struct . altitude = buf . get_i32_le () ; __struct . x = buf . get_f32_le () ; __struct . y = buf . get_f32_le () ; __struct . z = buf . get_f32_le () ; for v in & mut __struct . q { let val = buf . get_f32_le () ; * v = val ; } __struct . approach_x = buf . get_f32_le () ; __struct . approach_y = buf . get_f32_le () ; __struct . approach_z = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . latitude) ; __tmp . put_i32_le (self . longitude) ; __tmp . put_i32_le (self . altitude) ; __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; for val in & self . q { __tmp . put_f32_le (* val) ; } __tmp . put_f32_le (self . approach_x) ; __tmp . put_f32_le (self . approach_y) ; __tmp . put_f32_le (self . approach_z) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct WHEEL_DISTANCE_DATA { pub time_usec : u64 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub distance : [f64 ; 16] , pub count : u8 , } impl WHEEL_DISTANCE_DATA { pub const ENCODED_LEN : usize = 137usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , distance : [0.0_f64 ; 16usize] , count : 0_u8 , } ; } impl Default for WHEEL_DISTANCE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for WHEEL_DISTANCE_DATA { type Message = MavMessage ; const ID : u32 = 9000u32 ; const NAME : & 'static str = "WHEEL_DISTANCE" ; const EXTRA_CRC : u8 = 113u8 ; const ENCODED_LEN : usize = 137usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; for v in & mut __struct . distance { let val = buf . get_f64_le () ; * v = val ; } __struct . count = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; for val in & self . distance { __tmp . put_f64_le (* val) ; } __tmp . put_u8 (self . count) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA { pub flags : GimbalManagerFlags , pub pitch : f32 , pub yaw : f32 , pub pitch_rate : f32 , pub yaw_rate : f32 , pub target_system : u8 , pub target_component : u8 , pub gimbal_device_id : u8 , } impl GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA { pub const ENCODED_LEN : usize = 23usize ; pub const DEFAULT : Self = Self { flags : GimbalManagerFlags :: DEFAULT , pitch : 0.0_f32 , yaw : 0.0_f32 , pitch_rate : 0.0_f32 , yaw_rate : 0.0_f32 , target_system : 0_u8 , target_component : 0_u8 , gimbal_device_id : 0_u8 , } ; } impl Default for GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA { type Message = MavMessage ; const ID : u32 = 288u32 ; const NAME : & 'static str = "GIMBAL_MANAGER_SET_MANUAL_CONTROL" ; const EXTRA_CRC : u8 = 20u8 ; const ENCODED_LEN : usize = 23usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u32_le () ; __struct . flags = FromPrimitive :: from_u32 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "GimbalManagerFlags" , value : tmp as u32 }) ? ; __struct . pitch = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; __struct . pitch_rate = buf . get_f32_le () ; __struct . yaw_rate = buf . get_f32_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . gimbal_device_id = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . flags as u32) ; __tmp . put_f32_le (self . pitch) ; __tmp . put_f32_le (self . yaw) ; __tmp . put_f32_le (self . pitch_rate) ; __tmp . put_f32_le (self . yaw_rate) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . gimbal_device_id) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct FILE_TRANSFER_PROTOCOL_DATA { pub target_network : u8 , pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub payload : [u8 ; 251] , } impl FILE_TRANSFER_PROTOCOL_DATA { pub const ENCODED_LEN : usize = 254usize ; pub const DEFAULT : Self = Self { target_network : 0_u8 , target_system : 0_u8 , target_component : 0_u8 , payload : [0_u8 ; 251usize] , } ; } impl Default for FILE_TRANSFER_PROTOCOL_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for FILE_TRANSFER_PROTOCOL_DATA { type Message = MavMessage ; const ID : u32 = 110u32 ; const NAME : & 'static str = "FILE_TRANSFER_PROTOCOL" ; const EXTRA_CRC : u8 = 84u8 ; const ENCODED_LEN : usize = 254usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_network = buf . get_u8 () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . payload { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_network) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . payload { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MISSION_REQUEST_PARTIAL_LIST_DATA { pub start_index : i16 , pub end_index : i16 , pub target_system : u8 , pub target_component : u8 , } impl MISSION_REQUEST_PARTIAL_LIST_DATA { pub const ENCODED_LEN : usize = 6usize ; pub const DEFAULT : Self = Self { start_index : 0_i16 , end_index : 0_i16 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for MISSION_REQUEST_PARTIAL_LIST_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MISSION_REQUEST_PARTIAL_LIST_DATA { type Message = MavMessage ; const ID : u32 = 37u32 ; const NAME : & 'static str = "MISSION_REQUEST_PARTIAL_LIST" ; const EXTRA_CRC : u8 = 212u8 ; const ENCODED_LEN : usize = 6usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . start_index = buf . get_i16_le () ; __struct . end_index = buf . get_i16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i16_le (self . start_index) ; __tmp . put_i16_le (self . end_index) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct RC_CHANNELS_RAW_DATA { pub time_boot_ms : u32 , pub chan1_raw : u16 , pub chan2_raw : u16 , pub chan3_raw : u16 , pub chan4_raw : u16 , pub chan5_raw : u16 , pub chan6_raw : u16 , pub chan7_raw : u16 , pub chan8_raw : u16 , pub port : u8 , pub rssi : u8 , } impl RC_CHANNELS_RAW_DATA { pub const ENCODED_LEN : usize = 22usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , chan1_raw : 0_u16 , chan2_raw : 0_u16 , chan3_raw : 0_u16 , chan4_raw : 0_u16 , chan5_raw : 0_u16 , chan6_raw : 0_u16 , chan7_raw : 0_u16 , chan8_raw : 0_u16 , port : 0_u8 , rssi : 0_u8 , } ; } impl Default for RC_CHANNELS_RAW_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for RC_CHANNELS_RAW_DATA { type Message = MavMessage ; const ID : u32 = 35u32 ; const NAME : & 'static str = "RC_CHANNELS_RAW" ; const EXTRA_CRC : u8 = 244u8 ; const ENCODED_LEN : usize = 22usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . chan1_raw = buf . get_u16_le () ; __struct . chan2_raw = buf . get_u16_le () ; __struct . chan3_raw = buf . get_u16_le () ; __struct . chan4_raw = buf . get_u16_le () ; __struct . chan5_raw = buf . get_u16_le () ; __struct . chan6_raw = buf . get_u16_le () ; __struct . chan7_raw = buf . get_u16_le () ; __struct . chan8_raw = buf . get_u16_le () ; __struct . port = buf . get_u8 () ; __struct . rssi = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_u16_le (self . chan1_raw) ; __tmp . put_u16_le (self . chan2_raw) ; __tmp . put_u16_le (self . chan3_raw) ; __tmp . put_u16_le (self . chan4_raw) ; __tmp . put_u16_le (self . chan5_raw) ; __tmp . put_u16_le (self . chan6_raw) ; __tmp . put_u16_le (self . chan7_raw) ; __tmp . put_u16_le (self . chan8_raw) ; __tmp . put_u8 (self . port) ; __tmp . put_u8 (self . rssi) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ACTUATOR_CONTROL_TARGET_DATA { pub time_usec : u64 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub controls : [f32 ; 8] , pub group_mlx : u8 , } impl ACTUATOR_CONTROL_TARGET_DATA { pub const ENCODED_LEN : usize = 41usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , controls : [0.0_f32 ; 8usize] , group_mlx : 0_u8 , } ; } impl Default for ACTUATOR_CONTROL_TARGET_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ACTUATOR_CONTROL_TARGET_DATA { type Message = MavMessage ; const ID : u32 = 140u32 ; const NAME : & 'static str = "ACTUATOR_CONTROL_TARGET" ; const EXTRA_CRC : u8 = 181u8 ; const ENCODED_LEN : usize = 41usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; for v in & mut __struct . controls { let val = buf . get_f32_le () ; * v = val ; } __struct . group_mlx = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; for val in & self . controls { __tmp . put_f32_le (* val) ; } __tmp . put_u8 (self . group_mlx) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct FOLLOW_TARGET_DATA { pub timestamp : u64 , pub custom_state : u64 , pub lat : i32 , pub lon : i32 , pub alt : f32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub vel : [f32 ; 3] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub acc : [f32 ; 3] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub attitude_q : [f32 ; 4] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub rates : [f32 ; 3] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub position_cov : [f32 ; 3] , pub est_capabilities : u8 , } impl FOLLOW_TARGET_DATA { pub const ENCODED_LEN : usize = 93usize ; pub const DEFAULT : Self = Self { timestamp : 0_u64 , custom_state : 0_u64 , lat : 0_i32 , lon : 0_i32 , alt : 0.0_f32 , vel : [0.0_f32 ; 3usize] , acc : [0.0_f32 ; 3usize] , attitude_q : [0.0_f32 ; 4usize] , rates : [0.0_f32 ; 3usize] , position_cov : [0.0_f32 ; 3usize] , est_capabilities : 0_u8 , } ; } impl Default for FOLLOW_TARGET_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for FOLLOW_TARGET_DATA { type Message = MavMessage ; const ID : u32 = 144u32 ; const NAME : & 'static str = "FOLLOW_TARGET" ; const EXTRA_CRC : u8 = 127u8 ; const ENCODED_LEN : usize = 93usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . timestamp = buf . get_u64_le () ; __struct . custom_state = buf . get_u64_le () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . alt = buf . get_f32_le () ; for v in & mut __struct . vel { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . acc { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . attitude_q { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . rates { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . position_cov { let val = buf . get_f32_le () ; * v = val ; } __struct . est_capabilities = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . timestamp) ; __tmp . put_u64_le (self . custom_state) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_f32_le (self . alt) ; for val in & self . vel { __tmp . put_f32_le (* val) ; } for val in & self . acc { __tmp . put_f32_le (* val) ; } for val in & self . attitude_q { __tmp . put_f32_le (* val) ; } for val in & self . rates { __tmp . put_f32_le (* val) ; } for val in & self . position_cov { __tmp . put_f32_le (* val) ; } __tmp . put_u8 (self . est_capabilities) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CANFD_FRAME_DATA { pub id : u32 , pub target_system : u8 , pub target_component : u8 , pub bus : u8 , pub len : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub data : [u8 ; 64] , } impl CANFD_FRAME_DATA { pub const ENCODED_LEN : usize = 72usize ; pub const DEFAULT : Self = Self { id : 0_u32 , target_system : 0_u8 , target_component : 0_u8 , bus : 0_u8 , len : 0_u8 , data : [0_u8 ; 64usize] , } ; } impl Default for CANFD_FRAME_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CANFD_FRAME_DATA { type Message = MavMessage ; const ID : u32 = 387u32 ; const NAME : & 'static str = "CANFD_FRAME" ; const EXTRA_CRC : u8 = 4u8 ; const ENCODED_LEN : usize = 72usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . id = buf . get_u32_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . bus = buf . get_u8 () ; __struct . len = buf . get_u8 () ; for v in & mut __struct . data { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . id) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . bus) ; __tmp . put_u8 (self . len) ; for val in & self . data { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct VIDEO_STREAM_STATUS_DATA { pub framerate : f32 , pub bitrate : u32 , pub flags : VideoStreamStatusFlags , pub resolution_h : u16 , pub resolution_v : u16 , pub rotation : u16 , pub hfov : u16 , pub stream_id : u8 , } impl VIDEO_STREAM_STATUS_DATA { pub const ENCODED_LEN : usize = 19usize ; pub const DEFAULT : Self = Self { framerate : 0.0_f32 , bitrate : 0_u32 , flags : VideoStreamStatusFlags :: DEFAULT , resolution_h : 0_u16 , resolution_v : 0_u16 , rotation : 0_u16 , hfov : 0_u16 , stream_id : 0_u8 , } ; } impl Default for VIDEO_STREAM_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for VIDEO_STREAM_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 270u32 ; const NAME : & 'static str = "VIDEO_STREAM_STATUS" ; const EXTRA_CRC : u8 = 59u8 ; const ENCODED_LEN : usize = 19usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . framerate = buf . get_f32_le () ; __struct . bitrate = buf . get_u32_le () ; let tmp = buf . get_u16_le () ; __struct . flags = FromPrimitive :: from_u16 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "VideoStreamStatusFlags" , value : tmp as u32 }) ? ; __struct . resolution_h = buf . get_u16_le () ; __struct . resolution_v = buf . get_u16_le () ; __struct . rotation = buf . get_u16_le () ; __struct . hfov = buf . get_u16_le () ; __struct . stream_id = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . framerate) ; __tmp . put_u32_le (self . bitrate) ; __tmp . put_u16_le (self . flags as u16) ; __tmp . put_u16_le (self . resolution_h) ; __tmp . put_u16_le (self . resolution_v) ; __tmp . put_u16_le (self . rotation) ; __tmp . put_u16_le (self . hfov) ; __tmp . put_u8 (self . stream_id) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PARAM_SET_DATA { pub param_value : f32 , pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub param_id : [u8 ; 16] , pub param_type : MavParamType , } impl PARAM_SET_DATA { pub const ENCODED_LEN : usize = 23usize ; pub const DEFAULT : Self = Self { param_value : 0.0_f32 , target_system : 0_u8 , target_component : 0_u8 , param_id : [0_u8 ; 16usize] , param_type : MavParamType :: DEFAULT , } ; } impl Default for PARAM_SET_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for PARAM_SET_DATA { type Message = MavMessage ; const ID : u32 = 23u32 ; const NAME : & 'static str = "PARAM_SET" ; const EXTRA_CRC : u8 = 168u8 ; const ENCODED_LEN : usize = 23usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . param_value = buf . get_f32_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . param_id { let val = buf . get_u8 () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . param_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavParamType" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . param_value) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . param_id { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . param_type as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SYS_STATUS_DATA { pub onboard_control_sensors_present : MavSysStatusSensor , pub onboard_control_sensors_enabled : MavSysStatusSensor , pub onboard_control_sensors_health : MavSysStatusSensor , pub load : u16 , pub voltage_battery : u16 , pub current_battery : i16 , pub drop_rate_comm : u16 , pub errors_comm : u16 , pub errors_count1 : u16 , pub errors_count2 : u16 , pub errors_count3 : u16 , pub errors_count4 : u16 , pub battery_remaining : i8 , } impl SYS_STATUS_DATA { pub const ENCODED_LEN : usize = 31usize ; pub const DEFAULT : Self = Self { onboard_control_sensors_present : MavSysStatusSensor :: DEFAULT , onboard_control_sensors_enabled : MavSysStatusSensor :: DEFAULT , onboard_control_sensors_health : MavSysStatusSensor :: DEFAULT , load : 0_u16 , voltage_battery : 0_u16 , current_battery : 0_i16 , drop_rate_comm : 0_u16 , errors_comm : 0_u16 , errors_count1 : 0_u16 , errors_count2 : 0_u16 , errors_count3 : 0_u16 , errors_count4 : 0_u16 , battery_remaining : 0_i8 , } ; } impl Default for SYS_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SYS_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 1u32 ; const NAME : & 'static str = "SYS_STATUS" ; const EXTRA_CRC : u8 = 124u8 ; const ENCODED_LEN : usize = 31usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u32_le () ; __struct . onboard_control_sensors_present = MavSysStatusSensor :: from_bits (tmp & MavSysStatusSensor :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "MavSysStatusSensor" , value : tmp as u32 }) ? ; let tmp = buf . get_u32_le () ; __struct . onboard_control_sensors_enabled = MavSysStatusSensor :: from_bits (tmp & MavSysStatusSensor :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "MavSysStatusSensor" , value : tmp as u32 }) ? ; let tmp = buf . get_u32_le () ; __struct . onboard_control_sensors_health = MavSysStatusSensor :: from_bits (tmp & MavSysStatusSensor :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "MavSysStatusSensor" , value : tmp as u32 }) ? ; __struct . load = buf . get_u16_le () ; __struct . voltage_battery = buf . get_u16_le () ; __struct . current_battery = buf . get_i16_le () ; __struct . drop_rate_comm = buf . get_u16_le () ; __struct . errors_comm = buf . get_u16_le () ; __struct . errors_count1 = buf . get_u16_le () ; __struct . errors_count2 = buf . get_u16_le () ; __struct . errors_count3 = buf . get_u16_le () ; __struct . errors_count4 = buf . get_u16_le () ; __struct . battery_remaining = buf . get_i8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . onboard_control_sensors_present . bits ()) ; __tmp . put_u32_le (self . onboard_control_sensors_enabled . bits ()) ; __tmp . put_u32_le (self . onboard_control_sensors_health . bits ()) ; __tmp . put_u16_le (self . load) ; __tmp . put_u16_le (self . voltage_battery) ; __tmp . put_i16_le (self . current_battery) ; __tmp . put_u16_le (self . drop_rate_comm) ; __tmp . put_u16_le (self . errors_comm) ; __tmp . put_u16_le (self . errors_count1) ; __tmp . put_u16_le (self . errors_count2) ; __tmp . put_u16_le (self . errors_count3) ; __tmp . put_u16_le (self . errors_count4) ; __tmp . put_i8 (self . battery_remaining) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ADSB_VEHICLE_DATA { pub ICAO_address : u32 , pub lat : i32 , pub lon : i32 , pub altitude : i32 , pub heading : u16 , pub hor_velocity : u16 , pub ver_velocity : i16 , pub flags : AdsbFlags , pub squawk : u16 , pub altitude_type : AdsbAltitudeType , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub callsign : [u8 ; 9] , pub emitter_type : AdsbEmitterType , pub tslc : u8 , } impl ADSB_VEHICLE_DATA { pub const ENCODED_LEN : usize = 38usize ; pub const DEFAULT : Self = Self { ICAO_address : 0_u32 , lat : 0_i32 , lon : 0_i32 , altitude : 0_i32 , heading : 0_u16 , hor_velocity : 0_u16 , ver_velocity : 0_i16 , flags : AdsbFlags :: DEFAULT , squawk : 0_u16 , altitude_type : AdsbAltitudeType :: DEFAULT , callsign : [0_u8 ; 9usize] , emitter_type : AdsbEmitterType :: DEFAULT , tslc : 0_u8 , } ; } impl Default for ADSB_VEHICLE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ADSB_VEHICLE_DATA { type Message = MavMessage ; const ID : u32 = 246u32 ; const NAME : & 'static str = "ADSB_VEHICLE" ; const EXTRA_CRC : u8 = 184u8 ; const ENCODED_LEN : usize = 38usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . ICAO_address = buf . get_u32_le () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . altitude = buf . get_i32_le () ; __struct . heading = buf . get_u16_le () ; __struct . hor_velocity = buf . get_u16_le () ; __struct . ver_velocity = buf . get_i16_le () ; let tmp = buf . get_u16_le () ; __struct . flags = AdsbFlags :: from_bits (tmp & AdsbFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "AdsbFlags" , value : tmp as u32 }) ? ; __struct . squawk = buf . get_u16_le () ; let tmp = buf . get_u8 () ; __struct . altitude_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "AdsbAltitudeType" , value : tmp as u32 }) ? ; for v in & mut __struct . callsign { let val = buf . get_u8 () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . emitter_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "AdsbEmitterType" , value : tmp as u32 }) ? ; __struct . tslc = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . ICAO_address) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_i32_le (self . altitude) ; __tmp . put_u16_le (self . heading) ; __tmp . put_u16_le (self . hor_velocity) ; __tmp . put_i16_le (self . ver_velocity) ; __tmp . put_u16_le (self . flags . bits ()) ; __tmp . put_u16_le (self . squawk) ; __tmp . put_u8 (self . altitude_type as u8) ; for val in & self . callsign { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . emitter_type as u8) ; __tmp . put_u8 (self . tslc) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct WIND_COV_DATA { pub time_usec : u64 , pub wind_x : f32 , pub wind_y : f32 , pub wind_z : f32 , pub var_horiz : f32 , pub var_vert : f32 , pub wind_alt : f32 , pub horiz_accuracy : f32 , pub vert_accuracy : f32 , } impl WIND_COV_DATA { pub const ENCODED_LEN : usize = 40usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , wind_x : 0.0_f32 , wind_y : 0.0_f32 , wind_z : 0.0_f32 , var_horiz : 0.0_f32 , var_vert : 0.0_f32 , wind_alt : 0.0_f32 , horiz_accuracy : 0.0_f32 , vert_accuracy : 0.0_f32 , } ; } impl Default for WIND_COV_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for WIND_COV_DATA { type Message = MavMessage ; const ID : u32 = 231u32 ; const NAME : & 'static str = "WIND_COV" ; const EXTRA_CRC : u8 = 105u8 ; const ENCODED_LEN : usize = 40usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . wind_x = buf . get_f32_le () ; __struct . wind_y = buf . get_f32_le () ; __struct . wind_z = buf . get_f32_le () ; __struct . var_horiz = buf . get_f32_le () ; __struct . var_vert = buf . get_f32_le () ; __struct . wind_alt = buf . get_f32_le () ; __struct . horiz_accuracy = buf . get_f32_le () ; __struct . vert_accuracy = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . wind_x) ; __tmp . put_f32_le (self . wind_y) ; __tmp . put_f32_le (self . wind_z) ; __tmp . put_f32_le (self . var_horiz) ; __tmp . put_f32_le (self . var_vert) ; __tmp . put_f32_le (self . wind_alt) ; __tmp . put_f32_le (self . horiz_accuracy) ; __tmp . put_f32_le (self . vert_accuracy) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ESTIMATOR_STATUS_DATA { pub time_usec : u64 , pub vel_ratio : f32 , pub pos_horiz_ratio : f32 , pub pos_vert_ratio : f32 , pub mag_ratio : f32 , pub hagl_ratio : f32 , pub tas_ratio : f32 , pub pos_horiz_accuracy : f32 , pub pos_vert_accuracy : f32 , pub flags : EstimatorStatusFlags , } impl ESTIMATOR_STATUS_DATA { pub const ENCODED_LEN : usize = 42usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , vel_ratio : 0.0_f32 , pos_horiz_ratio : 0.0_f32 , pos_vert_ratio : 0.0_f32 , mag_ratio : 0.0_f32 , hagl_ratio : 0.0_f32 , tas_ratio : 0.0_f32 , pos_horiz_accuracy : 0.0_f32 , pos_vert_accuracy : 0.0_f32 , flags : EstimatorStatusFlags :: DEFAULT , } ; } impl Default for ESTIMATOR_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ESTIMATOR_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 230u32 ; const NAME : & 'static str = "ESTIMATOR_STATUS" ; const EXTRA_CRC : u8 = 163u8 ; const ENCODED_LEN : usize = 42usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . vel_ratio = buf . get_f32_le () ; __struct . pos_horiz_ratio = buf . get_f32_le () ; __struct . pos_vert_ratio = buf . get_f32_le () ; __struct . mag_ratio = buf . get_f32_le () ; __struct . hagl_ratio = buf . get_f32_le () ; __struct . tas_ratio = buf . get_f32_le () ; __struct . pos_horiz_accuracy = buf . get_f32_le () ; __struct . pos_vert_accuracy = buf . get_f32_le () ; let tmp = buf . get_u16_le () ; __struct . flags = EstimatorStatusFlags :: from_bits (tmp & EstimatorStatusFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "EstimatorStatusFlags" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . vel_ratio) ; __tmp . put_f32_le (self . pos_horiz_ratio) ; __tmp . put_f32_le (self . pos_vert_ratio) ; __tmp . put_f32_le (self . mag_ratio) ; __tmp . put_f32_le (self . hagl_ratio) ; __tmp . put_f32_le (self . tas_ratio) ; __tmp . put_f32_le (self . pos_horiz_accuracy) ; __tmp . put_f32_le (self . pos_vert_accuracy) ; __tmp . put_u16_le (self . flags . bits ()) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct OPEN_DRONE_ID_SYSTEM_UPDATE_DATA { pub operator_latitude : i32 , pub operator_longitude : i32 , pub operator_altitude_geo : f32 , pub timestamp : u32 , pub target_system : u8 , pub target_component : u8 , } impl OPEN_DRONE_ID_SYSTEM_UPDATE_DATA { pub const ENCODED_LEN : usize = 18usize ; pub const DEFAULT : Self = Self { operator_latitude : 0_i32 , operator_longitude : 0_i32 , operator_altitude_geo : 0.0_f32 , timestamp : 0_u32 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for OPEN_DRONE_ID_SYSTEM_UPDATE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for OPEN_DRONE_ID_SYSTEM_UPDATE_DATA { type Message = MavMessage ; const ID : u32 = 12919u32 ; const NAME : & 'static str = "OPEN_DRONE_ID_SYSTEM_UPDATE" ; const EXTRA_CRC : u8 = 7u8 ; const ENCODED_LEN : usize = 18usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . operator_latitude = buf . get_i32_le () ; __struct . operator_longitude = buf . get_i32_le () ; __struct . operator_altitude_geo = buf . get_f32_le () ; __struct . timestamp = buf . get_u32_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . operator_latitude) ; __tmp . put_i32_le (self . operator_longitude) ; __tmp . put_f32_le (self . operator_altitude_geo) ; __tmp . put_u32_le (self . timestamp) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct UAVIONIX_ADSB_OUT_CFG_DATA { pub ICAO : u32 , pub stallSpeed : u16 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub callsign : [u8 ; 9] , pub emitterType : AdsbEmitterType , pub aircraftSize : UavionixAdsbOutCfgAircraftSize , pub gpsOffsetLat : UavionixAdsbOutCfgGpsOffsetLat , pub gpsOffsetLon : UavionixAdsbOutCfgGpsOffsetLon , pub rfSelect : UavionixAdsbOutRfSelect , } impl UAVIONIX_ADSB_OUT_CFG_DATA { pub const ENCODED_LEN : usize = 20usize ; pub const DEFAULT : Self = Self { ICAO : 0_u32 , stallSpeed : 0_u16 , callsign : [0_u8 ; 9usize] , emitterType : AdsbEmitterType :: DEFAULT , aircraftSize : UavionixAdsbOutCfgAircraftSize :: DEFAULT , gpsOffsetLat : UavionixAdsbOutCfgGpsOffsetLat :: DEFAULT , gpsOffsetLon : UavionixAdsbOutCfgGpsOffsetLon :: DEFAULT , rfSelect : UavionixAdsbOutRfSelect :: DEFAULT , } ; } impl Default for UAVIONIX_ADSB_OUT_CFG_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for UAVIONIX_ADSB_OUT_CFG_DATA { type Message = MavMessage ; const ID : u32 = 10001u32 ; const NAME : & 'static str = "UAVIONIX_ADSB_OUT_CFG" ; const EXTRA_CRC : u8 = 209u8 ; const ENCODED_LEN : usize = 20usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . ICAO = buf . get_u32_le () ; __struct . stallSpeed = buf . get_u16_le () ; for v in & mut __struct . callsign { let val = buf . get_u8 () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . emitterType = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "AdsbEmitterType" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . aircraftSize = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "UavionixAdsbOutCfgAircraftSize" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . gpsOffsetLat = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "UavionixAdsbOutCfgGpsOffsetLat" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . gpsOffsetLon = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "UavionixAdsbOutCfgGpsOffsetLon" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . rfSelect = UavionixAdsbOutRfSelect :: from_bits (tmp & UavionixAdsbOutRfSelect :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "UavionixAdsbOutRfSelect" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . ICAO) ; __tmp . put_u16_le (self . stallSpeed) ; for val in & self . callsign { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . emitterType as u8) ; __tmp . put_u8 (self . aircraftSize as u8) ; __tmp . put_u8 (self . gpsOffsetLat as u8) ; __tmp . put_u8 (self . gpsOffsetLon as u8) ; __tmp . put_u8 (self . rfSelect . bits ()) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct FENCE_STATUS_DATA { pub breach_time : u32 , pub breach_count : u16 , pub breach_status : u8 , pub breach_type : FenceBreach , } impl FENCE_STATUS_DATA { pub const ENCODED_LEN : usize = 8usize ; pub const DEFAULT : Self = Self { breach_time : 0_u32 , breach_count : 0_u16 , breach_status : 0_u8 , breach_type : FenceBreach :: DEFAULT , } ; } impl Default for FENCE_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for FENCE_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 162u32 ; const NAME : & 'static str = "FENCE_STATUS" ; const EXTRA_CRC : u8 = 189u8 ; const ENCODED_LEN : usize = 8usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . breach_time = buf . get_u32_le () ; __struct . breach_count = buf . get_u16_le () ; __struct . breach_status = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . breach_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "FenceBreach" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . breach_time) ; __tmp . put_u16_le (self . breach_count) ; __tmp . put_u8 (self . breach_status) ; __tmp . put_u8 (self . breach_type as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct AUTOPILOT_VERSION_REQUEST_DATA { pub target_system : u8 , pub target_component : u8 , } impl AUTOPILOT_VERSION_REQUEST_DATA { pub const ENCODED_LEN : usize = 2usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for AUTOPILOT_VERSION_REQUEST_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for AUTOPILOT_VERSION_REQUEST_DATA { type Message = MavMessage ; const ID : u32 = 183u32 ; const NAME : & 'static str = "AUTOPILOT_VERSION_REQUEST" ; const EXTRA_CRC : u8 = 85u8 ; const ENCODED_LEN : usize = 2usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct DATA16_DATA { pub mavtype : u8 , pub len : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub data : [u8 ; 16] , } impl DATA16_DATA { pub const ENCODED_LEN : usize = 18usize ; pub const DEFAULT : Self = Self { mavtype : 0_u8 , len : 0_u8 , data : [0_u8 ; 16usize] , } ; } impl Default for DATA16_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for DATA16_DATA { type Message = MavMessage ; const ID : u32 = 169u32 ; const NAME : & 'static str = "DATA16" ; const EXTRA_CRC : u8 = 234u8 ; const ENCODED_LEN : usize = 18usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . mavtype = buf . get_u8 () ; __struct . len = buf . get_u8 () ; for v in & mut __struct . data { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . mavtype) ; __tmp . put_u8 (self . len) ; for val in & self . data { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MANUAL_SETPOINT_DATA { pub time_boot_ms : u32 , pub roll : f32 , pub pitch : f32 , pub yaw : f32 , pub thrust : f32 , pub mode_switch : u8 , pub manual_override_switch : u8 , } impl MANUAL_SETPOINT_DATA { pub const ENCODED_LEN : usize = 22usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , roll : 0.0_f32 , pitch : 0.0_f32 , yaw : 0.0_f32 , thrust : 0.0_f32 , mode_switch : 0_u8 , manual_override_switch : 0_u8 , } ; } impl Default for MANUAL_SETPOINT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MANUAL_SETPOINT_DATA { type Message = MavMessage ; const ID : u32 = 81u32 ; const NAME : & 'static str = "MANUAL_SETPOINT" ; const EXTRA_CRC : u8 = 106u8 ; const ENCODED_LEN : usize = 22usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . roll = buf . get_f32_le () ; __struct . pitch = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; __struct . thrust = buf . get_f32_le () ; __struct . mode_switch = buf . get_u8 () ; __struct . manual_override_switch = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . roll) ; __tmp . put_f32_le (self . pitch) ; __tmp . put_f32_le (self . yaw) ; __tmp . put_f32_le (self . thrust) ; __tmp . put_u8 (self . mode_switch) ; __tmp . put_u8 (self . manual_override_switch) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct POWER_STATUS_DATA { pub Vcc : u16 , pub Vservo : u16 , pub flags : MavPowerStatus , } impl POWER_STATUS_DATA { pub const ENCODED_LEN : usize = 6usize ; pub const DEFAULT : Self = Self { Vcc : 0_u16 , Vservo : 0_u16 , flags : MavPowerStatus :: DEFAULT , } ; } impl Default for POWER_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for POWER_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 125u32 ; const NAME : & 'static str = "POWER_STATUS" ; const EXTRA_CRC : u8 = 203u8 ; const ENCODED_LEN : usize = 6usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . Vcc = buf . get_u16_le () ; __struct . Vservo = buf . get_u16_le () ; let tmp = buf . get_u16_le () ; __struct . flags = MavPowerStatus :: from_bits (tmp & MavPowerStatus :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "MavPowerStatus" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . Vcc) ; __tmp . put_u16_le (self . Vservo) ; __tmp . put_u16_le (self . flags . bits ()) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SET_ACTUATOR_CONTROL_TARGET_DATA { pub time_usec : u64 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub controls : [f32 ; 8] , pub group_mlx : u8 , pub target_system : u8 , pub target_component : u8 , } impl SET_ACTUATOR_CONTROL_TARGET_DATA { pub const ENCODED_LEN : usize = 43usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , controls : [0.0_f32 ; 8usize] , group_mlx : 0_u8 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for SET_ACTUATOR_CONTROL_TARGET_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SET_ACTUATOR_CONTROL_TARGET_DATA { type Message = MavMessage ; const ID : u32 = 139u32 ; const NAME : & 'static str = "SET_ACTUATOR_CONTROL_TARGET" ; const EXTRA_CRC : u8 = 168u8 ; const ENCODED_LEN : usize = 43usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; for v in & mut __struct . controls { let val = buf . get_f32_le () ; * v = val ; } __struct . group_mlx = buf . get_u8 () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; for val in & self . controls { __tmp . put_f32_le (* val) ; } __tmp . put_u8 (self . group_mlx) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HWSTATUS_DATA { pub Vcc : u16 , pub I2Cerr : u8 , } impl HWSTATUS_DATA { pub const ENCODED_LEN : usize = 3usize ; pub const DEFAULT : Self = Self { Vcc : 0_u16 , I2Cerr : 0_u8 , } ; } impl Default for HWSTATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for HWSTATUS_DATA { type Message = MavMessage ; const ID : u32 = 165u32 ; const NAME : & 'static str = "HWSTATUS" ; const EXTRA_CRC : u8 = 21u8 ; const ENCODED_LEN : usize = 3usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . Vcc = buf . get_u16_le () ; __struct . I2Cerr = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . Vcc) ; __tmp . put_u8 (self . I2Cerr) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SET_POSITION_TARGET_LOCAL_NED_DATA { pub time_boot_ms : u32 , pub x : f32 , pub y : f32 , pub z : f32 , pub vx : f32 , pub vy : f32 , pub vz : f32 , pub afx : f32 , pub afy : f32 , pub afz : f32 , pub yaw : f32 , pub yaw_rate : f32 , pub type_mask : PositionTargetTypemask , pub target_system : u8 , pub target_component : u8 , pub coordinate_frame : MavFrame , } impl SET_POSITION_TARGET_LOCAL_NED_DATA { pub const ENCODED_LEN : usize = 53usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , x : 0.0_f32 , y : 0.0_f32 , z : 0.0_f32 , vx : 0.0_f32 , vy : 0.0_f32 , vz : 0.0_f32 , afx : 0.0_f32 , afy : 0.0_f32 , afz : 0.0_f32 , yaw : 0.0_f32 , yaw_rate : 0.0_f32 , type_mask : PositionTargetTypemask :: DEFAULT , target_system : 0_u8 , target_component : 0_u8 , coordinate_frame : MavFrame :: DEFAULT , } ; } impl Default for SET_POSITION_TARGET_LOCAL_NED_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SET_POSITION_TARGET_LOCAL_NED_DATA { type Message = MavMessage ; const ID : u32 = 84u32 ; const NAME : & 'static str = "SET_POSITION_TARGET_LOCAL_NED" ; const EXTRA_CRC : u8 = 143u8 ; const ENCODED_LEN : usize = 53usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . x = buf . get_f32_le () ; __struct . y = buf . get_f32_le () ; __struct . z = buf . get_f32_le () ; __struct . vx = buf . get_f32_le () ; __struct . vy = buf . get_f32_le () ; __struct . vz = buf . get_f32_le () ; __struct . afx = buf . get_f32_le () ; __struct . afy = buf . get_f32_le () ; __struct . afz = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; __struct . yaw_rate = buf . get_f32_le () ; let tmp = buf . get_u16_le () ; __struct . type_mask = PositionTargetTypemask :: from_bits (tmp & PositionTargetTypemask :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "PositionTargetTypemask" , value : tmp as u32 }) ? ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . coordinate_frame = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavFrame" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; __tmp . put_f32_le (self . vx) ; __tmp . put_f32_le (self . vy) ; __tmp . put_f32_le (self . vz) ; __tmp . put_f32_le (self . afx) ; __tmp . put_f32_le (self . afy) ; __tmp . put_f32_le (self . afz) ; __tmp . put_f32_le (self . yaw) ; __tmp . put_f32_le (self . yaw_rate) ; __tmp . put_u16_le (self . type_mask . bits ()) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . coordinate_frame as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CAMERA_IMAGE_CAPTURED_DATA { pub time_utc : u64 , pub time_boot_ms : u32 , pub lat : i32 , pub lon : i32 , pub alt : i32 , pub relative_alt : i32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub q : [f32 ; 4] , pub image_index : i32 , pub camera_id : u8 , pub capture_result : i8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub file_url : [u8 ; 205] , } impl CAMERA_IMAGE_CAPTURED_DATA { pub const ENCODED_LEN : usize = 255usize ; pub const DEFAULT : Self = Self { time_utc : 0_u64 , time_boot_ms : 0_u32 , lat : 0_i32 , lon : 0_i32 , alt : 0_i32 , relative_alt : 0_i32 , q : [0.0_f32 ; 4usize] , image_index : 0_i32 , camera_id : 0_u8 , capture_result : 0_i8 , file_url : [0_u8 ; 205usize] , } ; } impl Default for CAMERA_IMAGE_CAPTURED_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CAMERA_IMAGE_CAPTURED_DATA { type Message = MavMessage ; const ID : u32 = 263u32 ; const NAME : & 'static str = "CAMERA_IMAGE_CAPTURED" ; const EXTRA_CRC : u8 = 133u8 ; const ENCODED_LEN : usize = 255usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_utc = buf . get_u64_le () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . alt = buf . get_i32_le () ; __struct . relative_alt = buf . get_i32_le () ; for v in & mut __struct . q { let val = buf . get_f32_le () ; * v = val ; } __struct . image_index = buf . get_i32_le () ; __struct . camera_id = buf . get_u8 () ; __struct . capture_result = buf . get_i8 () ; for v in & mut __struct . file_url { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_utc) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_i32_le (self . alt) ; __tmp . put_i32_le (self . relative_alt) ; for val in & self . q { __tmp . put_f32_le (* val) ; } __tmp . put_i32_le (self . image_index) ; __tmp . put_u8 (self . camera_id) ; __tmp . put_i8 (self . capture_result) ; for val in & self . file_url { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CAMERA_STATUS_DATA { pub time_usec : u64 , pub p1 : f32 , pub p2 : f32 , pub p3 : f32 , pub p4 : f32 , pub img_idx : u16 , pub target_system : u8 , pub cam_idx : u8 , pub event_id : CameraStatusTypes , } impl CAMERA_STATUS_DATA { pub const ENCODED_LEN : usize = 29usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , p1 : 0.0_f32 , p2 : 0.0_f32 , p3 : 0.0_f32 , p4 : 0.0_f32 , img_idx : 0_u16 , target_system : 0_u8 , cam_idx : 0_u8 , event_id : CameraStatusTypes :: DEFAULT , } ; } impl Default for CAMERA_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CAMERA_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 179u32 ; const NAME : & 'static str = "CAMERA_STATUS" ; const EXTRA_CRC : u8 = 189u8 ; const ENCODED_LEN : usize = 29usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . p1 = buf . get_f32_le () ; __struct . p2 = buf . get_f32_le () ; __struct . p3 = buf . get_f32_le () ; __struct . p4 = buf . get_f32_le () ; __struct . img_idx = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . cam_idx = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . event_id = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "CameraStatusTypes" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . p1) ; __tmp . put_f32_le (self . p2) ; __tmp . put_f32_le (self . p3) ; __tmp . put_f32_le (self . p4) ; __tmp . put_u16_le (self . img_idx) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . cam_idx) ; __tmp . put_u8 (self . event_id as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SCALED_IMU2_DATA { pub time_boot_ms : u32 , pub xacc : i16 , pub yacc : i16 , pub zacc : i16 , pub xgyro : i16 , pub ygyro : i16 , pub zgyro : i16 , pub xmag : i16 , pub ymag : i16 , pub zmag : i16 , } impl SCALED_IMU2_DATA { pub const ENCODED_LEN : usize = 22usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , xacc : 0_i16 , yacc : 0_i16 , zacc : 0_i16 , xgyro : 0_i16 , ygyro : 0_i16 , zgyro : 0_i16 , xmag : 0_i16 , ymag : 0_i16 , zmag : 0_i16 , } ; } impl Default for SCALED_IMU2_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SCALED_IMU2_DATA { type Message = MavMessage ; const ID : u32 = 116u32 ; const NAME : & 'static str = "SCALED_IMU2" ; const EXTRA_CRC : u8 = 76u8 ; const ENCODED_LEN : usize = 22usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . xacc = buf . get_i16_le () ; __struct . yacc = buf . get_i16_le () ; __struct . zacc = buf . get_i16_le () ; __struct . xgyro = buf . get_i16_le () ; __struct . ygyro = buf . get_i16_le () ; __struct . zgyro = buf . get_i16_le () ; __struct . xmag = buf . get_i16_le () ; __struct . ymag = buf . get_i16_le () ; __struct . zmag = buf . get_i16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_i16_le (self . xacc) ; __tmp . put_i16_le (self . yacc) ; __tmp . put_i16_le (self . zacc) ; __tmp . put_i16_le (self . xgyro) ; __tmp . put_i16_le (self . ygyro) ; __tmp . put_i16_le (self . zgyro) ; __tmp . put_i16_le (self . xmag) ; __tmp . put_i16_le (self . ymag) ; __tmp . put_i16_le (self . zmag) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PARAM_VALUE_DATA { pub param_value : f32 , pub param_count : u16 , pub param_index : u16 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub param_id : [u8 ; 16] , pub param_type : MavParamType , } impl PARAM_VALUE_DATA { pub const ENCODED_LEN : usize = 25usize ; pub const DEFAULT : Self = Self { param_value : 0.0_f32 , param_count : 0_u16 , param_index : 0_u16 , param_id : [0_u8 ; 16usize] , param_type : MavParamType :: DEFAULT , } ; } impl Default for PARAM_VALUE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for PARAM_VALUE_DATA { type Message = MavMessage ; const ID : u32 = 22u32 ; const NAME : & 'static str = "PARAM_VALUE" ; const EXTRA_CRC : u8 = 220u8 ; const ENCODED_LEN : usize = 25usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . param_value = buf . get_f32_le () ; __struct . param_count = buf . get_u16_le () ; __struct . param_index = buf . get_u16_le () ; for v in & mut __struct . param_id { let val = buf . get_u8 () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . param_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavParamType" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . param_value) ; __tmp . put_u16_le (self . param_count) ; __tmp . put_u16_le (self . param_index) ; for val in & self . param_id { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . param_type as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct TERRAIN_REQUEST_DATA { pub mask : u64 , pub lat : i32 , pub lon : i32 , pub grid_spacing : u16 , } impl TERRAIN_REQUEST_DATA { pub const ENCODED_LEN : usize = 18usize ; pub const DEFAULT : Self = Self { mask : 0_u64 , lat : 0_i32 , lon : 0_i32 , grid_spacing : 0_u16 , } ; } impl Default for TERRAIN_REQUEST_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for TERRAIN_REQUEST_DATA { type Message = MavMessage ; const ID : u32 = 133u32 ; const NAME : & 'static str = "TERRAIN_REQUEST" ; const EXTRA_CRC : u8 = 6u8 ; const ENCODED_LEN : usize = 18usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . mask = buf . get_u64_le () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . grid_spacing = buf . get_u16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . mask) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_u16_le (self . grid_spacing) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct WIND_DATA { pub direction : f32 , pub speed : f32 , pub speed_z : f32 , } impl WIND_DATA { pub const ENCODED_LEN : usize = 12usize ; pub const DEFAULT : Self = Self { direction : 0.0_f32 , speed : 0.0_f32 , speed_z : 0.0_f32 , } ; } impl Default for WIND_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for WIND_DATA { type Message = MavMessage ; const ID : u32 = 168u32 ; const NAME : & 'static str = "WIND" ; const EXTRA_CRC : u8 = 1u8 ; const ENCODED_LEN : usize = 12usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . direction = buf . get_f32_le () ; __struct . speed = buf . get_f32_le () ; __struct . speed_z = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . direction) ; __tmp . put_f32_le (self . speed) ; __tmp . put_f32_le (self . speed_z) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct DATA_TRANSMISSION_HANDSHAKE_DATA { pub size : u32 , pub width : u16 , pub height : u16 , pub packets : u16 , pub mavtype : MavlinkDataStreamType , pub payload : u8 , pub jpg_quality : u8 , } impl DATA_TRANSMISSION_HANDSHAKE_DATA { pub const ENCODED_LEN : usize = 13usize ; pub const DEFAULT : Self = Self { size : 0_u32 , width : 0_u16 , height : 0_u16 , packets : 0_u16 , mavtype : MavlinkDataStreamType :: DEFAULT , payload : 0_u8 , jpg_quality : 0_u8 , } ; } impl Default for DATA_TRANSMISSION_HANDSHAKE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for DATA_TRANSMISSION_HANDSHAKE_DATA { type Message = MavMessage ; const ID : u32 = 130u32 ; const NAME : & 'static str = "DATA_TRANSMISSION_HANDSHAKE" ; const EXTRA_CRC : u8 = 29u8 ; const ENCODED_LEN : usize = 13usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . size = buf . get_u32_le () ; __struct . width = buf . get_u16_le () ; __struct . height = buf . get_u16_le () ; __struct . packets = buf . get_u16_le () ; let tmp = buf . get_u8 () ; __struct . mavtype = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavlinkDataStreamType" , value : tmp as u32 }) ? ; __struct . payload = buf . get_u8 () ; __struct . jpg_quality = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . size) ; __tmp . put_u16_le (self . width) ; __tmp . put_u16_le (self . height) ; __tmp . put_u16_le (self . packets) ; __tmp . put_u8 (self . mavtype as u8) ; __tmp . put_u8 (self . payload) ; __tmp . put_u8 (self . jpg_quality) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct TUNNEL_DATA { pub payload_type : MavTunnelPayloadType , pub target_system : u8 , pub target_component : u8 , pub payload_length : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub payload : [u8 ; 128] , } impl TUNNEL_DATA { pub const ENCODED_LEN : usize = 133usize ; pub const DEFAULT : Self = Self { payload_type : MavTunnelPayloadType :: DEFAULT , target_system : 0_u8 , target_component : 0_u8 , payload_length : 0_u8 , payload : [0_u8 ; 128usize] , } ; } impl Default for TUNNEL_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for TUNNEL_DATA { type Message = MavMessage ; const ID : u32 = 385u32 ; const NAME : & 'static str = "TUNNEL" ; const EXTRA_CRC : u8 = 147u8 ; const ENCODED_LEN : usize = 133usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u16_le () ; __struct . payload_type = FromPrimitive :: from_u16 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavTunnelPayloadType" , value : tmp as u32 }) ? ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . payload_length = buf . get_u8 () ; for v in & mut __struct . payload { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . payload_type as u16) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . payload_length) ; for val in & self . payload { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HIL_ACTUATOR_CONTROLS_DATA { pub time_usec : u64 , pub flags : u64 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub controls : [f32 ; 16] , pub mode : MavModeFlag , } impl HIL_ACTUATOR_CONTROLS_DATA { pub const ENCODED_LEN : usize = 81usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , flags : 0_u64 , controls : [0.0_f32 ; 16usize] , mode : MavModeFlag :: DEFAULT , } ; } impl Default for HIL_ACTUATOR_CONTROLS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for HIL_ACTUATOR_CONTROLS_DATA { type Message = MavMessage ; const ID : u32 = 93u32 ; const NAME : & 'static str = "HIL_ACTUATOR_CONTROLS" ; const EXTRA_CRC : u8 = 47u8 ; const ENCODED_LEN : usize = 81usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . flags = buf . get_u64_le () ; for v in & mut __struct . controls { let val = buf . get_f32_le () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . mode = MavModeFlag :: from_bits (tmp & MavModeFlag :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "MavModeFlag" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_u64_le (self . flags) ; for val in & self . controls { __tmp . put_f32_le (* val) ; } __tmp . put_u8 (self . mode . bits ()) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct UAVCAN_NODE_STATUS_DATA { pub time_usec : u64 , pub uptime_sec : u32 , pub vendor_specific_status_code : u16 , pub health : UavcanNodeHealth , pub mode : UavcanNodeMode , pub sub_mode : u8 , } impl UAVCAN_NODE_STATUS_DATA { pub const ENCODED_LEN : usize = 17usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , uptime_sec : 0_u32 , vendor_specific_status_code : 0_u16 , health : UavcanNodeHealth :: DEFAULT , mode : UavcanNodeMode :: DEFAULT , sub_mode : 0_u8 , } ; } impl Default for UAVCAN_NODE_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for UAVCAN_NODE_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 310u32 ; const NAME : & 'static str = "UAVCAN_NODE_STATUS" ; const EXTRA_CRC : u8 = 28u8 ; const ENCODED_LEN : usize = 17usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . uptime_sec = buf . get_u32_le () ; __struct . vendor_specific_status_code = buf . get_u16_le () ; let tmp = buf . get_u8 () ; __struct . health = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "UavcanNodeHealth" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . mode = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "UavcanNodeMode" , value : tmp as u32 }) ? ; __struct . sub_mode = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_u32_le (self . uptime_sec) ; __tmp . put_u16_le (self . vendor_specific_status_code) ; __tmp . put_u8 (self . health as u8) ; __tmp . put_u8 (self . mode as u8) ; __tmp . put_u8 (self . sub_mode) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GPS_RTK_DATA { pub time_last_baseline_ms : u32 , pub tow : u32 , pub baseline_a_mm : i32 , pub baseline_b_mm : i32 , pub baseline_c_mm : i32 , pub accuracy : u32 , pub iar_num_hypotheses : i32 , pub wn : u16 , pub rtk_receiver_id : u8 , pub rtk_health : u8 , pub rtk_rate : u8 , pub nsats : u8 , pub baseline_coords_type : RtkBaselineCoordinateSystem , } impl GPS_RTK_DATA { pub const ENCODED_LEN : usize = 35usize ; pub const DEFAULT : Self = Self { time_last_baseline_ms : 0_u32 , tow : 0_u32 , baseline_a_mm : 0_i32 , baseline_b_mm : 0_i32 , baseline_c_mm : 0_i32 , accuracy : 0_u32 , iar_num_hypotheses : 0_i32 , wn : 0_u16 , rtk_receiver_id : 0_u8 , rtk_health : 0_u8 , rtk_rate : 0_u8 , nsats : 0_u8 , baseline_coords_type : RtkBaselineCoordinateSystem :: DEFAULT , } ; } impl Default for GPS_RTK_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GPS_RTK_DATA { type Message = MavMessage ; const ID : u32 = 127u32 ; const NAME : & 'static str = "GPS_RTK" ; const EXTRA_CRC : u8 = 25u8 ; const ENCODED_LEN : usize = 35usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_last_baseline_ms = buf . get_u32_le () ; __struct . tow = buf . get_u32_le () ; __struct . baseline_a_mm = buf . get_i32_le () ; __struct . baseline_b_mm = buf . get_i32_le () ; __struct . baseline_c_mm = buf . get_i32_le () ; __struct . accuracy = buf . get_u32_le () ; __struct . iar_num_hypotheses = buf . get_i32_le () ; __struct . wn = buf . get_u16_le () ; __struct . rtk_receiver_id = buf . get_u8 () ; __struct . rtk_health = buf . get_u8 () ; __struct . rtk_rate = buf . get_u8 () ; __struct . nsats = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . baseline_coords_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "RtkBaselineCoordinateSystem" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_last_baseline_ms) ; __tmp . put_u32_le (self . tow) ; __tmp . put_i32_le (self . baseline_a_mm) ; __tmp . put_i32_le (self . baseline_b_mm) ; __tmp . put_i32_le (self . baseline_c_mm) ; __tmp . put_u32_le (self . accuracy) ; __tmp . put_i32_le (self . iar_num_hypotheses) ; __tmp . put_u16_le (self . wn) ; __tmp . put_u8 (self . rtk_receiver_id) ; __tmp . put_u8 (self . rtk_health) ; __tmp . put_u8 (self . rtk_rate) ; __tmp . put_u8 (self . nsats) ; __tmp . put_u8 (self . baseline_coords_type as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HYGROMETER_SENSOR_DATA { pub temperature : i16 , pub humidity : u16 , pub id : u8 , } impl HYGROMETER_SENSOR_DATA { pub const ENCODED_LEN : usize = 5usize ; pub const DEFAULT : Self = Self { temperature : 0_i16 , humidity : 0_u16 , id : 0_u8 , } ; } impl Default for HYGROMETER_SENSOR_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for HYGROMETER_SENSOR_DATA { type Message = MavMessage ; const ID : u32 = 12920u32 ; const NAME : & 'static str = "HYGROMETER_SENSOR" ; const EXTRA_CRC : u8 = 20u8 ; const ENCODED_LEN : usize = 5usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . temperature = buf . get_i16_le () ; __struct . humidity = buf . get_u16_le () ; __struct . id = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i16_le (self . temperature) ; __tmp . put_u16_le (self . humidity) ; __tmp . put_u8 (self . id) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct COMPASSMOT_STATUS_DATA { pub current : f32 , pub CompensationX : f32 , pub CompensationY : f32 , pub CompensationZ : f32 , pub throttle : u16 , pub interference : u16 , } impl COMPASSMOT_STATUS_DATA { pub const ENCODED_LEN : usize = 20usize ; pub const DEFAULT : Self = Self { current : 0.0_f32 , CompensationX : 0.0_f32 , CompensationY : 0.0_f32 , CompensationZ : 0.0_f32 , throttle : 0_u16 , interference : 0_u16 , } ; } impl Default for COMPASSMOT_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for COMPASSMOT_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 177u32 ; const NAME : & 'static str = "COMPASSMOT_STATUS" ; const EXTRA_CRC : u8 = 240u8 ; const ENCODED_LEN : usize = 20usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . current = buf . get_f32_le () ; __struct . CompensationX = buf . get_f32_le () ; __struct . CompensationY = buf . get_f32_le () ; __struct . CompensationZ = buf . get_f32_le () ; __struct . throttle = buf . get_u16_le () ; __struct . interference = buf . get_u16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . current) ; __tmp . put_f32_le (self . CompensationX) ; __tmp . put_f32_le (self . CompensationY) ; __tmp . put_f32_le (self . CompensationZ) ; __tmp . put_u16_le (self . throttle) ; __tmp . put_u16_le (self . interference) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct EXTENDED_SYS_STATE_DATA { pub vtol_state : MavVtolState , pub landed_state : MavLandedState , } impl EXTENDED_SYS_STATE_DATA { pub const ENCODED_LEN : usize = 2usize ; pub const DEFAULT : Self = Self { vtol_state : MavVtolState :: DEFAULT , landed_state : MavLandedState :: DEFAULT , } ; } impl Default for EXTENDED_SYS_STATE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for EXTENDED_SYS_STATE_DATA { type Message = MavMessage ; const ID : u32 = 245u32 ; const NAME : & 'static str = "EXTENDED_SYS_STATE" ; const EXTRA_CRC : u8 = 130u8 ; const ENCODED_LEN : usize = 2usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u8 () ; __struct . vtol_state = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavVtolState" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . landed_state = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavLandedState" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . vtol_state as u8) ; __tmp . put_u8 (self . landed_state as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GIMBAL_DEVICE_INFORMATION_DATA { pub uid : u64 , pub time_boot_ms : u32 , pub firmware_version : u32 , pub hardware_version : u32 , pub roll_min : f32 , pub roll_max : f32 , pub pitch_min : f32 , pub pitch_max : f32 , pub yaw_min : f32 , pub yaw_max : f32 , pub cap_flags : GimbalDeviceCapFlags , pub custom_cap_flags : u16 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub vendor_name : [u8 ; 32] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub model_name : [u8 ; 32] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub custom_name : [u8 ; 32] , } impl GIMBAL_DEVICE_INFORMATION_DATA { pub const ENCODED_LEN : usize = 144usize ; pub const DEFAULT : Self = Self { uid : 0_u64 , time_boot_ms : 0_u32 , firmware_version : 0_u32 , hardware_version : 0_u32 , roll_min : 0.0_f32 , roll_max : 0.0_f32 , pitch_min : 0.0_f32 , pitch_max : 0.0_f32 , yaw_min : 0.0_f32 , yaw_max : 0.0_f32 , cap_flags : GimbalDeviceCapFlags :: DEFAULT , custom_cap_flags : 0_u16 , vendor_name : [0_u8 ; 32usize] , model_name : [0_u8 ; 32usize] , custom_name : [0_u8 ; 32usize] , } ; } impl Default for GIMBAL_DEVICE_INFORMATION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GIMBAL_DEVICE_INFORMATION_DATA { type Message = MavMessage ; const ID : u32 = 283u32 ; const NAME : & 'static str = "GIMBAL_DEVICE_INFORMATION" ; const EXTRA_CRC : u8 = 74u8 ; const ENCODED_LEN : usize = 144usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . uid = buf . get_u64_le () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . firmware_version = buf . get_u32_le () ; __struct . hardware_version = buf . get_u32_le () ; __struct . roll_min = buf . get_f32_le () ; __struct . roll_max = buf . get_f32_le () ; __struct . pitch_min = buf . get_f32_le () ; __struct . pitch_max = buf . get_f32_le () ; __struct . yaw_min = buf . get_f32_le () ; __struct . yaw_max = buf . get_f32_le () ; let tmp = buf . get_u16_le () ; __struct . cap_flags = GimbalDeviceCapFlags :: from_bits (tmp & GimbalDeviceCapFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "GimbalDeviceCapFlags" , value : tmp as u32 }) ? ; __struct . custom_cap_flags = buf . get_u16_le () ; for v in & mut __struct . vendor_name { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . model_name { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . custom_name { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . uid) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_u32_le (self . firmware_version) ; __tmp . put_u32_le (self . hardware_version) ; __tmp . put_f32_le (self . roll_min) ; __tmp . put_f32_le (self . roll_max) ; __tmp . put_f32_le (self . pitch_min) ; __tmp . put_f32_le (self . pitch_max) ; __tmp . put_f32_le (self . yaw_min) ; __tmp . put_f32_le (self . yaw_max) ; __tmp . put_u16_le (self . cap_flags . bits ()) ; __tmp . put_u16_le (self . custom_cap_flags) ; for val in & self . vendor_name { __tmp . put_u8 (* val) ; } for val in & self . model_name { __tmp . put_u8 (* val) ; } for val in & self . custom_name { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PLAY_TUNE_V2_DATA { pub format : TuneFormat , pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub tune : [u8 ; 248] , } impl PLAY_TUNE_V2_DATA { pub const ENCODED_LEN : usize = 254usize ; pub const DEFAULT : Self = Self { format : TuneFormat :: DEFAULT , target_system : 0_u8 , target_component : 0_u8 , tune : [0_u8 ; 248usize] , } ; } impl Default for PLAY_TUNE_V2_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for PLAY_TUNE_V2_DATA { type Message = MavMessage ; const ID : u32 = 400u32 ; const NAME : & 'static str = "PLAY_TUNE_V2" ; const EXTRA_CRC : u8 = 110u8 ; const ENCODED_LEN : usize = 254usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u32_le () ; __struct . format = TuneFormat :: from_bits (tmp & TuneFormat :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "TuneFormat" , value : tmp as u32 }) ? ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . tune { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . format . bits ()) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . tune { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct OPEN_DRONE_ID_ARM_STATUS_DATA { pub status : MavOdidArmStatus , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub error : [u8 ; 50] , } impl OPEN_DRONE_ID_ARM_STATUS_DATA { pub const ENCODED_LEN : usize = 51usize ; pub const DEFAULT : Self = Self { status : MavOdidArmStatus :: DEFAULT , error : [0_u8 ; 50usize] , } ; } impl Default for OPEN_DRONE_ID_ARM_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for OPEN_DRONE_ID_ARM_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 12918u32 ; const NAME : & 'static str = "OPEN_DRONE_ID_ARM_STATUS" ; const EXTRA_CRC : u8 = 139u8 ; const ENCODED_LEN : usize = 51usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u8 () ; __struct . status = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidArmStatus" , value : tmp as u32 }) ? ; for v in & mut __struct . error { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . status as u8) ; for val in & self . error { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SCALED_PRESSURE2_DATA { pub time_boot_ms : u32 , pub press_abs : f32 , pub press_diff : f32 , pub temperature : i16 , } impl SCALED_PRESSURE2_DATA { pub const ENCODED_LEN : usize = 14usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , press_abs : 0.0_f32 , press_diff : 0.0_f32 , temperature : 0_i16 , } ; } impl Default for SCALED_PRESSURE2_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SCALED_PRESSURE2_DATA { type Message = MavMessage ; const ID : u32 = 137u32 ; const NAME : & 'static str = "SCALED_PRESSURE2" ; const EXTRA_CRC : u8 = 195u8 ; const ENCODED_LEN : usize = 14usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . press_abs = buf . get_f32_le () ; __struct . press_diff = buf . get_f32_le () ; __struct . temperature = buf . get_i16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . press_abs) ; __tmp . put_f32_le (self . press_diff) ; __tmp . put_i16_le (self . temperature) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct DATA96_DATA { pub mavtype : u8 , pub len : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub data : [u8 ; 96] , } impl DATA96_DATA { pub const ENCODED_LEN : usize = 98usize ; pub const DEFAULT : Self = Self { mavtype : 0_u8 , len : 0_u8 , data : [0_u8 ; 96usize] , } ; } impl Default for DATA96_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for DATA96_DATA { type Message = MavMessage ; const ID : u32 = 172u32 ; const NAME : & 'static str = "DATA96" ; const EXTRA_CRC : u8 = 22u8 ; const ENCODED_LEN : usize = 98usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . mavtype = buf . get_u8 () ; __struct . len = buf . get_u8 () ; for v in & mut __struct . data { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . mavtype) ; __tmp . put_u8 (self . len) ; for val in & self . data { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct FLIGHT_INFORMATION_DATA { pub arming_time_utc : u64 , pub takeoff_time_utc : u64 , pub flight_uuid : u64 , pub time_boot_ms : u32 , } impl FLIGHT_INFORMATION_DATA { pub const ENCODED_LEN : usize = 28usize ; pub const DEFAULT : Self = Self { arming_time_utc : 0_u64 , takeoff_time_utc : 0_u64 , flight_uuid : 0_u64 , time_boot_ms : 0_u32 , } ; } impl Default for FLIGHT_INFORMATION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for FLIGHT_INFORMATION_DATA { type Message = MavMessage ; const ID : u32 = 264u32 ; const NAME : & 'static str = "FLIGHT_INFORMATION" ; const EXTRA_CRC : u8 = 49u8 ; const ENCODED_LEN : usize = 28usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . arming_time_utc = buf . get_u64_le () ; __struct . takeoff_time_utc = buf . get_u64_le () ; __struct . flight_uuid = buf . get_u64_le () ; __struct . time_boot_ms = buf . get_u32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . arming_time_utc) ; __tmp . put_u64_le (self . takeoff_time_utc) ; __tmp . put_u64_le (self . flight_uuid) ; __tmp . put_u32_le (self . time_boot_ms) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct REMOTE_LOG_DATA_BLOCK_DATA { pub seqno : MavRemoteLogDataBlockCommands , pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub data : [u8 ; 200] , } impl REMOTE_LOG_DATA_BLOCK_DATA { pub const ENCODED_LEN : usize = 206usize ; pub const DEFAULT : Self = Self { seqno : MavRemoteLogDataBlockCommands :: DEFAULT , target_system : 0_u8 , target_component : 0_u8 , data : [0_u8 ; 200usize] , } ; } impl Default for REMOTE_LOG_DATA_BLOCK_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for REMOTE_LOG_DATA_BLOCK_DATA { type Message = MavMessage ; const ID : u32 = 184u32 ; const NAME : & 'static str = "REMOTE_LOG_DATA_BLOCK" ; const EXTRA_CRC : u8 = 159u8 ; const ENCODED_LEN : usize = 206usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u32_le () ; __struct . seqno = FromPrimitive :: from_u32 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavRemoteLogDataBlockCommands" , value : tmp as u32 }) ? ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . data { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . seqno as u32) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . data { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ACTUATOR_OUTPUT_STATUS_DATA { pub time_usec : u64 , pub active : u32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub actuator : [f32 ; 32] , } impl ACTUATOR_OUTPUT_STATUS_DATA { pub const ENCODED_LEN : usize = 140usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , active : 0_u32 , actuator : [0.0_f32 ; 32usize] , } ; } impl Default for ACTUATOR_OUTPUT_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ACTUATOR_OUTPUT_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 375u32 ; const NAME : & 'static str = "ACTUATOR_OUTPUT_STATUS" ; const EXTRA_CRC : u8 = 251u8 ; const ENCODED_LEN : usize = 140usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . active = buf . get_u32_le () ; for v in & mut __struct . actuator { let val = buf . get_f32_le () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_u32_le (self . active) ; for val in & self . actuator { __tmp . put_f32_le (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct AHRS_DATA { pub omegaIx : f32 , pub omegaIy : f32 , pub omegaIz : f32 , pub accel_weight : f32 , pub renorm_val : f32 , pub error_rp : f32 , pub error_yaw : f32 , } impl AHRS_DATA { pub const ENCODED_LEN : usize = 28usize ; pub const DEFAULT : Self = Self { omegaIx : 0.0_f32 , omegaIy : 0.0_f32 , omegaIz : 0.0_f32 , accel_weight : 0.0_f32 , renorm_val : 0.0_f32 , error_rp : 0.0_f32 , error_yaw : 0.0_f32 , } ; } impl Default for AHRS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for AHRS_DATA { type Message = MavMessage ; const ID : u32 = 163u32 ; const NAME : & 'static str = "AHRS" ; const EXTRA_CRC : u8 = 127u8 ; const ENCODED_LEN : usize = 28usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . omegaIx = buf . get_f32_le () ; __struct . omegaIy = buf . get_f32_le () ; __struct . omegaIz = buf . get_f32_le () ; __struct . accel_weight = buf . get_f32_le () ; __struct . renorm_val = buf . get_f32_le () ; __struct . error_rp = buf . get_f32_le () ; __struct . error_yaw = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . omegaIx) ; __tmp . put_f32_le (self . omegaIy) ; __tmp . put_f32_le (self . omegaIz) ; __tmp . put_f32_le (self . accel_weight) ; __tmp . put_f32_le (self . renorm_val) ; __tmp . put_f32_le (self . error_rp) ; __tmp . put_f32_le (self . error_yaw) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct DEBUG_VECT_DATA { pub time_usec : u64 , pub x : f32 , pub y : f32 , pub z : f32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub name : [u8 ; 10] , } impl DEBUG_VECT_DATA { pub const ENCODED_LEN : usize = 30usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , x : 0.0_f32 , y : 0.0_f32 , z : 0.0_f32 , name : [0_u8 ; 10usize] , } ; } impl Default for DEBUG_VECT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for DEBUG_VECT_DATA { type Message = MavMessage ; const ID : u32 = 250u32 ; const NAME : & 'static str = "DEBUG_VECT" ; const EXTRA_CRC : u8 = 49u8 ; const ENCODED_LEN : usize = 30usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . x = buf . get_f32_le () ; __struct . y = buf . get_f32_le () ; __struct . z = buf . get_f32_le () ; for v in & mut __struct . name { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; for val in & self . name { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct UTM_GLOBAL_POSITION_DATA { pub time : u64 , pub lat : i32 , pub lon : i32 , pub alt : i32 , pub relative_alt : i32 , pub next_lat : i32 , pub next_lon : i32 , pub next_alt : i32 , pub vx : i16 , pub vy : i16 , pub vz : i16 , pub h_acc : u16 , pub v_acc : u16 , pub vel_acc : u16 , pub update_rate : u16 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub uas_id : [u8 ; 18] , pub flight_state : UtmFlightState , pub flags : UtmDataAvailFlags , } impl UTM_GLOBAL_POSITION_DATA { pub const ENCODED_LEN : usize = 70usize ; pub const DEFAULT : Self = Self { time : 0_u64 , lat : 0_i32 , lon : 0_i32 , alt : 0_i32 , relative_alt : 0_i32 , next_lat : 0_i32 , next_lon : 0_i32 , next_alt : 0_i32 , vx : 0_i16 , vy : 0_i16 , vz : 0_i16 , h_acc : 0_u16 , v_acc : 0_u16 , vel_acc : 0_u16 , update_rate : 0_u16 , uas_id : [0_u8 ; 18usize] , flight_state : UtmFlightState :: DEFAULT , flags : UtmDataAvailFlags :: DEFAULT , } ; } impl Default for UTM_GLOBAL_POSITION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for UTM_GLOBAL_POSITION_DATA { type Message = MavMessage ; const ID : u32 = 340u32 ; const NAME : & 'static str = "UTM_GLOBAL_POSITION" ; const EXTRA_CRC : u8 = 99u8 ; const ENCODED_LEN : usize = 70usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time = buf . get_u64_le () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . alt = buf . get_i32_le () ; __struct . relative_alt = buf . get_i32_le () ; __struct . next_lat = buf . get_i32_le () ; __struct . next_lon = buf . get_i32_le () ; __struct . next_alt = buf . get_i32_le () ; __struct . vx = buf . get_i16_le () ; __struct . vy = buf . get_i16_le () ; __struct . vz = buf . get_i16_le () ; __struct . h_acc = buf . get_u16_le () ; __struct . v_acc = buf . get_u16_le () ; __struct . vel_acc = buf . get_u16_le () ; __struct . update_rate = buf . get_u16_le () ; for v in & mut __struct . uas_id { let val = buf . get_u8 () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . flight_state = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "UtmFlightState" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . flags = UtmDataAvailFlags :: from_bits (tmp & UtmDataAvailFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "UtmDataAvailFlags" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_i32_le (self . alt) ; __tmp . put_i32_le (self . relative_alt) ; __tmp . put_i32_le (self . next_lat) ; __tmp . put_i32_le (self . next_lon) ; __tmp . put_i32_le (self . next_alt) ; __tmp . put_i16_le (self . vx) ; __tmp . put_i16_le (self . vy) ; __tmp . put_i16_le (self . vz) ; __tmp . put_u16_le (self . h_acc) ; __tmp . put_u16_le (self . v_acc) ; __tmp . put_u16_le (self . vel_acc) ; __tmp . put_u16_le (self . update_rate) ; for val in & self . uas_id { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . flight_state as u8) ; __tmp . put_u8 (self . flags . bits ()) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MISSION_ITEM_INT_DATA { pub param1 : f32 , pub param2 : f32 , pub param3 : f32 , pub param4 : f32 , pub x : i32 , pub y : i32 , pub z : f32 , pub seq : u16 , pub command : MavCmd , pub target_system : u8 , pub target_component : u8 , pub frame : MavFrame , pub current : u8 , pub autocontinue : u8 , } impl MISSION_ITEM_INT_DATA { pub const ENCODED_LEN : usize = 37usize ; pub const DEFAULT : Self = Self { param1 : 0.0_f32 , param2 : 0.0_f32 , param3 : 0.0_f32 , param4 : 0.0_f32 , x : 0_i32 , y : 0_i32 , z : 0.0_f32 , seq : 0_u16 , command : MavCmd :: DEFAULT , target_system : 0_u8 , target_component : 0_u8 , frame : MavFrame :: DEFAULT , current : 0_u8 , autocontinue : 0_u8 , } ; } impl Default for MISSION_ITEM_INT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MISSION_ITEM_INT_DATA { type Message = MavMessage ; const ID : u32 = 73u32 ; const NAME : & 'static str = "MISSION_ITEM_INT" ; const EXTRA_CRC : u8 = 38u8 ; const ENCODED_LEN : usize = 37usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . param1 = buf . get_f32_le () ; __struct . param2 = buf . get_f32_le () ; __struct . param3 = buf . get_f32_le () ; __struct . param4 = buf . get_f32_le () ; __struct . x = buf . get_i32_le () ; __struct . y = buf . get_i32_le () ; __struct . z = buf . get_f32_le () ; __struct . seq = buf . get_u16_le () ; let tmp = buf . get_u16_le () ; __struct . command = FromPrimitive :: from_u16 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavCmd" , value : tmp as u32 }) ? ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . frame = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavFrame" , value : tmp as u32 }) ? ; __struct . current = buf . get_u8 () ; __struct . autocontinue = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . param1) ; __tmp . put_f32_le (self . param2) ; __tmp . put_f32_le (self . param3) ; __tmp . put_f32_le (self . param4) ; __tmp . put_i32_le (self . x) ; __tmp . put_i32_le (self . y) ; __tmp . put_f32_le (self . z) ; __tmp . put_u16_le (self . seq) ; __tmp . put_u16_le (self . command as u16) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . frame as u8) ; __tmp . put_u8 (self . current) ; __tmp . put_u8 (self . autocontinue) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CAN_FILTER_MODIFY_DATA { # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub ids : [u16 ; 16] , pub target_system : u8 , pub target_component : u8 , pub bus : u8 , pub operation : CanFilterOp , pub num_ids : u8 , } impl CAN_FILTER_MODIFY_DATA { pub const ENCODED_LEN : usize = 37usize ; pub const DEFAULT : Self = Self { ids : [0_u16 ; 16usize] , target_system : 0_u8 , target_component : 0_u8 , bus : 0_u8 , operation : CanFilterOp :: DEFAULT , num_ids : 0_u8 , } ; } impl Default for CAN_FILTER_MODIFY_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CAN_FILTER_MODIFY_DATA { type Message = MavMessage ; const ID : u32 = 388u32 ; const NAME : & 'static str = "CAN_FILTER_MODIFY" ; const EXTRA_CRC : u8 = 8u8 ; const ENCODED_LEN : usize = 37usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; for v in & mut __struct . ids { let val = buf . get_u16_le () ; * v = val ; } __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . bus = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . operation = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "CanFilterOp" , value : tmp as u32 }) ? ; __struct . num_ids = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; for val in & self . ids { __tmp . put_u16_le (* val) ; } __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . bus) ; __tmp . put_u8 (self . operation as u8) ; __tmp . put_u8 (self . num_ids) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct DEVICE_OP_READ_REPLY_DATA { pub request_id : u32 , pub result : u8 , pub regstart : u8 , pub count : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub data : [u8 ; 128] , } impl DEVICE_OP_READ_REPLY_DATA { pub const ENCODED_LEN : usize = 135usize ; pub const DEFAULT : Self = Self { request_id : 0_u32 , result : 0_u8 , regstart : 0_u8 , count : 0_u8 , data : [0_u8 ; 128usize] , } ; } impl Default for DEVICE_OP_READ_REPLY_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for DEVICE_OP_READ_REPLY_DATA { type Message = MavMessage ; const ID : u32 = 11001u32 ; const NAME : & 'static str = "DEVICE_OP_READ_REPLY" ; const EXTRA_CRC : u8 = 15u8 ; const ENCODED_LEN : usize = 135usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . request_id = buf . get_u32_le () ; __struct . result = buf . get_u8 () ; __struct . regstart = buf . get_u8 () ; __struct . count = buf . get_u8 () ; for v in & mut __struct . data { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . request_id) ; __tmp . put_u8 (self . result) ; __tmp . put_u8 (self . regstart) ; __tmp . put_u8 (self . count) ; for val in & self . data { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ADAP_TUNING_DATA { pub desired : f32 , pub achieved : f32 , pub error : f32 , pub theta : f32 , pub omega : f32 , pub sigma : f32 , pub theta_dot : f32 , pub omega_dot : f32 , pub sigma_dot : f32 , pub f : f32 , pub f_dot : f32 , pub u : f32 , pub axis : PidTuningAxis , } impl ADAP_TUNING_DATA { pub const ENCODED_LEN : usize = 49usize ; pub const DEFAULT : Self = Self { desired : 0.0_f32 , achieved : 0.0_f32 , error : 0.0_f32 , theta : 0.0_f32 , omega : 0.0_f32 , sigma : 0.0_f32 , theta_dot : 0.0_f32 , omega_dot : 0.0_f32 , sigma_dot : 0.0_f32 , f : 0.0_f32 , f_dot : 0.0_f32 , u : 0.0_f32 , axis : PidTuningAxis :: DEFAULT , } ; } impl Default for ADAP_TUNING_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ADAP_TUNING_DATA { type Message = MavMessage ; const ID : u32 = 11010u32 ; const NAME : & 'static str = "ADAP_TUNING" ; const EXTRA_CRC : u8 = 46u8 ; const ENCODED_LEN : usize = 49usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . desired = buf . get_f32_le () ; __struct . achieved = buf . get_f32_le () ; __struct . error = buf . get_f32_le () ; __struct . theta = buf . get_f32_le () ; __struct . omega = buf . get_f32_le () ; __struct . sigma = buf . get_f32_le () ; __struct . theta_dot = buf . get_f32_le () ; __struct . omega_dot = buf . get_f32_le () ; __struct . sigma_dot = buf . get_f32_le () ; __struct . f = buf . get_f32_le () ; __struct . f_dot = buf . get_f32_le () ; __struct . u = buf . get_f32_le () ; let tmp = buf . get_u8 () ; __struct . axis = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "PidTuningAxis" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . desired) ; __tmp . put_f32_le (self . achieved) ; __tmp . put_f32_le (self . error) ; __tmp . put_f32_le (self . theta) ; __tmp . put_f32_le (self . omega) ; __tmp . put_f32_le (self . sigma) ; __tmp . put_f32_le (self . theta_dot) ; __tmp . put_f32_le (self . omega_dot) ; __tmp . put_f32_le (self . sigma_dot) ; __tmp . put_f32_le (self . f) ; __tmp . put_f32_le (self . f_dot) ; __tmp . put_f32_le (self . u) ; __tmp . put_u8 (self . axis as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SET_POSITION_TARGET_GLOBAL_INT_DATA { pub time_boot_ms : u32 , pub lat_int : i32 , pub lon_int : i32 , pub alt : f32 , pub vx : f32 , pub vy : f32 , pub vz : f32 , pub afx : f32 , pub afy : f32 , pub afz : f32 , pub yaw : f32 , pub yaw_rate : f32 , pub type_mask : PositionTargetTypemask , pub target_system : u8 , pub target_component : u8 , pub coordinate_frame : MavFrame , } impl SET_POSITION_TARGET_GLOBAL_INT_DATA { pub const ENCODED_LEN : usize = 53usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , lat_int : 0_i32 , lon_int : 0_i32 , alt : 0.0_f32 , vx : 0.0_f32 , vy : 0.0_f32 , vz : 0.0_f32 , afx : 0.0_f32 , afy : 0.0_f32 , afz : 0.0_f32 , yaw : 0.0_f32 , yaw_rate : 0.0_f32 , type_mask : PositionTargetTypemask :: DEFAULT , target_system : 0_u8 , target_component : 0_u8 , coordinate_frame : MavFrame :: DEFAULT , } ; } impl Default for SET_POSITION_TARGET_GLOBAL_INT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SET_POSITION_TARGET_GLOBAL_INT_DATA { type Message = MavMessage ; const ID : u32 = 86u32 ; const NAME : & 'static str = "SET_POSITION_TARGET_GLOBAL_INT" ; const EXTRA_CRC : u8 = 5u8 ; const ENCODED_LEN : usize = 53usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . lat_int = buf . get_i32_le () ; __struct . lon_int = buf . get_i32_le () ; __struct . alt = buf . get_f32_le () ; __struct . vx = buf . get_f32_le () ; __struct . vy = buf . get_f32_le () ; __struct . vz = buf . get_f32_le () ; __struct . afx = buf . get_f32_le () ; __struct . afy = buf . get_f32_le () ; __struct . afz = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; __struct . yaw_rate = buf . get_f32_le () ; let tmp = buf . get_u16_le () ; __struct . type_mask = PositionTargetTypemask :: from_bits (tmp & PositionTargetTypemask :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "PositionTargetTypemask" , value : tmp as u32 }) ? ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . coordinate_frame = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavFrame" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_i32_le (self . lat_int) ; __tmp . put_i32_le (self . lon_int) ; __tmp . put_f32_le (self . alt) ; __tmp . put_f32_le (self . vx) ; __tmp . put_f32_le (self . vy) ; __tmp . put_f32_le (self . vz) ; __tmp . put_f32_le (self . afx) ; __tmp . put_f32_le (self . afy) ; __tmp . put_f32_le (self . afz) ; __tmp . put_f32_le (self . yaw) ; __tmp . put_f32_le (self . yaw_rate) ; __tmp . put_u16_le (self . type_mask . bits ()) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . coordinate_frame as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PROTOCOL_VERSION_DATA { pub version : u16 , pub min_version : u16 , pub max_version : u16 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub spec_version_hash : [u8 ; 8] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub library_version_hash : [u8 ; 8] , } impl PROTOCOL_VERSION_DATA { pub const ENCODED_LEN : usize = 22usize ; pub const DEFAULT : Self = Self { version : 0_u16 , min_version : 0_u16 , max_version : 0_u16 , spec_version_hash : [0_u8 ; 8usize] , library_version_hash : [0_u8 ; 8usize] , } ; } impl Default for PROTOCOL_VERSION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for PROTOCOL_VERSION_DATA { type Message = MavMessage ; const ID : u32 = 300u32 ; const NAME : & 'static str = "PROTOCOL_VERSION" ; const EXTRA_CRC : u8 = 217u8 ; const ENCODED_LEN : usize = 22usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . version = buf . get_u16_le () ; __struct . min_version = buf . get_u16_le () ; __struct . max_version = buf . get_u16_le () ; for v in & mut __struct . spec_version_hash { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . library_version_hash { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . version) ; __tmp . put_u16_le (self . min_version) ; __tmp . put_u16_le (self . max_version) ; for val in & self . spec_version_hash { __tmp . put_u8 (* val) ; } for val in & self . library_version_hash { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HIL_GPS_DATA { pub time_usec : u64 , pub lat : i32 , pub lon : i32 , pub alt : i32 , pub eph : u16 , pub epv : u16 , pub vel : u16 , pub vn : i16 , pub ve : i16 , pub vd : i16 , pub cog : u16 , pub fix_type : u8 , pub satellites_visible : u8 , } impl HIL_GPS_DATA { pub const ENCODED_LEN : usize = 36usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , lat : 0_i32 , lon : 0_i32 , alt : 0_i32 , eph : 0_u16 , epv : 0_u16 , vel : 0_u16 , vn : 0_i16 , ve : 0_i16 , vd : 0_i16 , cog : 0_u16 , fix_type : 0_u8 , satellites_visible : 0_u8 , } ; } impl Default for HIL_GPS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for HIL_GPS_DATA { type Message = MavMessage ; const ID : u32 = 113u32 ; const NAME : & 'static str = "HIL_GPS" ; const EXTRA_CRC : u8 = 124u8 ; const ENCODED_LEN : usize = 36usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . alt = buf . get_i32_le () ; __struct . eph = buf . get_u16_le () ; __struct . epv = buf . get_u16_le () ; __struct . vel = buf . get_u16_le () ; __struct . vn = buf . get_i16_le () ; __struct . ve = buf . get_i16_le () ; __struct . vd = buf . get_i16_le () ; __struct . cog = buf . get_u16_le () ; __struct . fix_type = buf . get_u8 () ; __struct . satellites_visible = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_i32_le (self . alt) ; __tmp . put_u16_le (self . eph) ; __tmp . put_u16_le (self . epv) ; __tmp . put_u16_le (self . vel) ; __tmp . put_i16_le (self . vn) ; __tmp . put_i16_le (self . ve) ; __tmp . put_i16_le (self . vd) ; __tmp . put_u16_le (self . cog) ; __tmp . put_u8 (self . fix_type) ; __tmp . put_u8 (self . satellites_visible) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SCALED_IMU_DATA { pub time_boot_ms : u32 , pub xacc : i16 , pub yacc : i16 , pub zacc : i16 , pub xgyro : i16 , pub ygyro : i16 , pub zgyro : i16 , pub xmag : i16 , pub ymag : i16 , pub zmag : i16 , } impl SCALED_IMU_DATA { pub const ENCODED_LEN : usize = 22usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , xacc : 0_i16 , yacc : 0_i16 , zacc : 0_i16 , xgyro : 0_i16 , ygyro : 0_i16 , zgyro : 0_i16 , xmag : 0_i16 , ymag : 0_i16 , zmag : 0_i16 , } ; } impl Default for SCALED_IMU_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SCALED_IMU_DATA { type Message = MavMessage ; const ID : u32 = 26u32 ; const NAME : & 'static str = "SCALED_IMU" ; const EXTRA_CRC : u8 = 170u8 ; const ENCODED_LEN : usize = 22usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . xacc = buf . get_i16_le () ; __struct . yacc = buf . get_i16_le () ; __struct . zacc = buf . get_i16_le () ; __struct . xgyro = buf . get_i16_le () ; __struct . ygyro = buf . get_i16_le () ; __struct . zgyro = buf . get_i16_le () ; __struct . xmag = buf . get_i16_le () ; __struct . ymag = buf . get_i16_le () ; __struct . zmag = buf . get_i16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_i16_le (self . xacc) ; __tmp . put_i16_le (self . yacc) ; __tmp . put_i16_le (self . zacc) ; __tmp . put_i16_le (self . xgyro) ; __tmp . put_i16_le (self . ygyro) ; __tmp . put_i16_le (self . zgyro) ; __tmp . put_i16_le (self . xmag) ; __tmp . put_i16_le (self . ymag) ; __tmp . put_i16_le (self . zmag) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct UAVIONIX_ADSB_OUT_DYNAMIC_DATA { pub utcTime : u32 , pub gpsLat : i32 , pub gpsLon : i32 , pub gpsAlt : i32 , pub baroAltMSL : i32 , pub accuracyHor : u32 , pub accuracyVert : u16 , pub accuracyVel : u16 , pub velVert : i16 , pub velNS : i16 , pub VelEW : i16 , pub state : UavionixAdsbOutDynamicState , pub squawk : u16 , pub gpsFix : UavionixAdsbOutDynamicGpsFix , pub numSats : u8 , pub emergencyStatus : UavionixAdsbEmergencyStatus , } impl UAVIONIX_ADSB_OUT_DYNAMIC_DATA { pub const ENCODED_LEN : usize = 41usize ; pub const DEFAULT : Self = Self { utcTime : 0_u32 , gpsLat : 0_i32 , gpsLon : 0_i32 , gpsAlt : 0_i32 , baroAltMSL : 0_i32 , accuracyHor : 0_u32 , accuracyVert : 0_u16 , accuracyVel : 0_u16 , velVert : 0_i16 , velNS : 0_i16 , VelEW : 0_i16 , state : UavionixAdsbOutDynamicState :: DEFAULT , squawk : 0_u16 , gpsFix : UavionixAdsbOutDynamicGpsFix :: DEFAULT , numSats : 0_u8 , emergencyStatus : UavionixAdsbEmergencyStatus :: DEFAULT , } ; } impl Default for UAVIONIX_ADSB_OUT_DYNAMIC_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for UAVIONIX_ADSB_OUT_DYNAMIC_DATA { type Message = MavMessage ; const ID : u32 = 10002u32 ; const NAME : & 'static str = "UAVIONIX_ADSB_OUT_DYNAMIC" ; const EXTRA_CRC : u8 = 186u8 ; const ENCODED_LEN : usize = 41usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . utcTime = buf . get_u32_le () ; __struct . gpsLat = buf . get_i32_le () ; __struct . gpsLon = buf . get_i32_le () ; __struct . gpsAlt = buf . get_i32_le () ; __struct . baroAltMSL = buf . get_i32_le () ; __struct . accuracyHor = buf . get_u32_le () ; __struct . accuracyVert = buf . get_u16_le () ; __struct . accuracyVel = buf . get_u16_le () ; __struct . velVert = buf . get_i16_le () ; __struct . velNS = buf . get_i16_le () ; __struct . VelEW = buf . get_i16_le () ; let tmp = buf . get_u16_le () ; __struct . state = UavionixAdsbOutDynamicState :: from_bits (tmp & UavionixAdsbOutDynamicState :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "UavionixAdsbOutDynamicState" , value : tmp as u32 }) ? ; __struct . squawk = buf . get_u16_le () ; let tmp = buf . get_u8 () ; __struct . gpsFix = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "UavionixAdsbOutDynamicGpsFix" , value : tmp as u32 }) ? ; __struct . numSats = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . emergencyStatus = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "UavionixAdsbEmergencyStatus" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . utcTime) ; __tmp . put_i32_le (self . gpsLat) ; __tmp . put_i32_le (self . gpsLon) ; __tmp . put_i32_le (self . gpsAlt) ; __tmp . put_i32_le (self . baroAltMSL) ; __tmp . put_u32_le (self . accuracyHor) ; __tmp . put_u16_le (self . accuracyVert) ; __tmp . put_u16_le (self . accuracyVel) ; __tmp . put_i16_le (self . velVert) ; __tmp . put_i16_le (self . velNS) ; __tmp . put_i16_le (self . VelEW) ; __tmp . put_u16_le (self . state . bits ()) ; __tmp . put_u16_le (self . squawk) ; __tmp . put_u8 (self . gpsFix as u8) ; __tmp . put_u8 (self . numSats) ; __tmp . put_u8 (self . emergencyStatus as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct COMMAND_CANCEL_DATA { pub command : MavCmd , pub target_system : u8 , pub target_component : u8 , } impl COMMAND_CANCEL_DATA { pub const ENCODED_LEN : usize = 4usize ; pub const DEFAULT : Self = Self { command : MavCmd :: DEFAULT , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for COMMAND_CANCEL_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for COMMAND_CANCEL_DATA { type Message = MavMessage ; const ID : u32 = 80u32 ; const NAME : & 'static str = "COMMAND_CANCEL" ; const EXTRA_CRC : u8 = 14u8 ; const ENCODED_LEN : usize = 4usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u16_le () ; __struct . command = FromPrimitive :: from_u16 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavCmd" , value : tmp as u32 }) ? ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . command as u16) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MOUNT_CONFIGURE_DATA { pub target_system : u8 , pub target_component : u8 , pub mount_mode : MavMountMode , pub stab_roll : u8 , pub stab_pitch : u8 , pub stab_yaw : u8 , } impl MOUNT_CONFIGURE_DATA { pub const ENCODED_LEN : usize = 6usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , mount_mode : MavMountMode :: DEFAULT , stab_roll : 0_u8 , stab_pitch : 0_u8 , stab_yaw : 0_u8 , } ; } impl Default for MOUNT_CONFIGURE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MOUNT_CONFIGURE_DATA { type Message = MavMessage ; const ID : u32 = 156u32 ; const NAME : & 'static str = "MOUNT_CONFIGURE" ; const EXTRA_CRC : u8 = 19u8 ; const ENCODED_LEN : usize = 6usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . mount_mode = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavMountMode" , value : tmp as u32 }) ? ; __struct . stab_roll = buf . get_u8 () ; __struct . stab_pitch = buf . get_u8 () ; __struct . stab_yaw = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . mount_mode as u8) ; __tmp . put_u8 (self . stab_roll) ; __tmp . put_u8 (self . stab_pitch) ; __tmp . put_u8 (self . stab_yaw) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LOGGING_ACK_DATA { pub sequence : u16 , pub target_system : u8 , pub target_component : u8 , } impl LOGGING_ACK_DATA { pub const ENCODED_LEN : usize = 4usize ; pub const DEFAULT : Self = Self { sequence : 0_u16 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for LOGGING_ACK_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for LOGGING_ACK_DATA { type Message = MavMessage ; const ID : u32 = 268u32 ; const NAME : & 'static str = "LOGGING_ACK" ; const EXTRA_CRC : u8 = 14u8 ; const ENCODED_LEN : usize = 4usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . sequence = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . sequence) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ATT_POS_MOCAP_DATA { pub time_usec : u64 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub q : [f32 ; 4] , pub x : f32 , pub y : f32 , pub z : f32 , } impl ATT_POS_MOCAP_DATA { pub const ENCODED_LEN : usize = 36usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , q : [0.0_f32 ; 4usize] , x : 0.0_f32 , y : 0.0_f32 , z : 0.0_f32 , } ; } impl Default for ATT_POS_MOCAP_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ATT_POS_MOCAP_DATA { type Message = MavMessage ; const ID : u32 = 138u32 ; const NAME : & 'static str = "ATT_POS_MOCAP" ; const EXTRA_CRC : u8 = 109u8 ; const ENCODED_LEN : usize = 36usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; for v in & mut __struct . q { let val = buf . get_f32_le () ; * v = val ; } __struct . x = buf . get_f32_le () ; __struct . y = buf . get_f32_le () ; __struct . z = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; for val in & self . q { __tmp . put_f32_le (* val) ; } __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PARAM_EXT_REQUEST_READ_DATA { pub param_index : i16 , pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub param_id : [u8 ; 16] , } impl PARAM_EXT_REQUEST_READ_DATA { pub const ENCODED_LEN : usize = 20usize ; pub const DEFAULT : Self = Self { param_index : 0_i16 , target_system : 0_u8 , target_component : 0_u8 , param_id : [0_u8 ; 16usize] , } ; } impl Default for PARAM_EXT_REQUEST_READ_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for PARAM_EXT_REQUEST_READ_DATA { type Message = MavMessage ; const ID : u32 = 320u32 ; const NAME : & 'static str = "PARAM_EXT_REQUEST_READ" ; const EXTRA_CRC : u8 = 243u8 ; const ENCODED_LEN : usize = 20usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . param_index = buf . get_i16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . param_id { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i16_le (self . param_index) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . param_id { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CAMERA_TRACKING_IMAGE_STATUS_DATA { pub point_x : f32 , pub point_y : f32 , pub radius : f32 , pub rec_top_x : f32 , pub rec_top_y : f32 , pub rec_bottom_x : f32 , pub rec_bottom_y : f32 , pub tracking_status : CameraTrackingStatusFlags , pub tracking_mode : CameraTrackingMode , pub target_data : CameraTrackingTargetData , } impl CAMERA_TRACKING_IMAGE_STATUS_DATA { pub const ENCODED_LEN : usize = 31usize ; pub const DEFAULT : Self = Self { point_x : 0.0_f32 , point_y : 0.0_f32 , radius : 0.0_f32 , rec_top_x : 0.0_f32 , rec_top_y : 0.0_f32 , rec_bottom_x : 0.0_f32 , rec_bottom_y : 0.0_f32 , tracking_status : CameraTrackingStatusFlags :: DEFAULT , tracking_mode : CameraTrackingMode :: DEFAULT , target_data : CameraTrackingTargetData :: DEFAULT , } ; } impl Default for CAMERA_TRACKING_IMAGE_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CAMERA_TRACKING_IMAGE_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 275u32 ; const NAME : & 'static str = "CAMERA_TRACKING_IMAGE_STATUS" ; const EXTRA_CRC : u8 = 126u8 ; const ENCODED_LEN : usize = 31usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . point_x = buf . get_f32_le () ; __struct . point_y = buf . get_f32_le () ; __struct . radius = buf . get_f32_le () ; __struct . rec_top_x = buf . get_f32_le () ; __struct . rec_top_y = buf . get_f32_le () ; __struct . rec_bottom_x = buf . get_f32_le () ; __struct . rec_bottom_y = buf . get_f32_le () ; let tmp = buf . get_u8 () ; __struct . tracking_status = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "CameraTrackingStatusFlags" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . tracking_mode = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "CameraTrackingMode" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . target_data = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "CameraTrackingTargetData" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . point_x) ; __tmp . put_f32_le (self . point_y) ; __tmp . put_f32_le (self . radius) ; __tmp . put_f32_le (self . rec_top_x) ; __tmp . put_f32_le (self . rec_top_y) ; __tmp . put_f32_le (self . rec_bottom_x) ; __tmp . put_f32_le (self . rec_bottom_y) ; __tmp . put_u8 (self . tracking_status as u8) ; __tmp . put_u8 (self . tracking_mode as u8) ; __tmp . put_u8 (self . target_data as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct EKF_STATUS_REPORT_DATA { pub velocity_variance : f32 , pub pos_horiz_variance : f32 , pub pos_vert_variance : f32 , pub compass_variance : f32 , pub terrain_alt_variance : f32 , pub flags : EkfStatusFlags , } impl EKF_STATUS_REPORT_DATA { pub const ENCODED_LEN : usize = 22usize ; pub const DEFAULT : Self = Self { velocity_variance : 0.0_f32 , pos_horiz_variance : 0.0_f32 , pos_vert_variance : 0.0_f32 , compass_variance : 0.0_f32 , terrain_alt_variance : 0.0_f32 , flags : EkfStatusFlags :: DEFAULT , } ; } impl Default for EKF_STATUS_REPORT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for EKF_STATUS_REPORT_DATA { type Message = MavMessage ; const ID : u32 = 193u32 ; const NAME : & 'static str = "EKF_STATUS_REPORT" ; const EXTRA_CRC : u8 = 71u8 ; const ENCODED_LEN : usize = 22usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . velocity_variance = buf . get_f32_le () ; __struct . pos_horiz_variance = buf . get_f32_le () ; __struct . pos_vert_variance = buf . get_f32_le () ; __struct . compass_variance = buf . get_f32_le () ; __struct . terrain_alt_variance = buf . get_f32_le () ; let tmp = buf . get_u16_le () ; __struct . flags = EkfStatusFlags :: from_bits (tmp & EkfStatusFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "EkfStatusFlags" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . velocity_variance) ; __tmp . put_f32_le (self . pos_horiz_variance) ; __tmp . put_f32_le (self . pos_vert_variance) ; __tmp . put_f32_le (self . compass_variance) ; __tmp . put_f32_le (self . terrain_alt_variance) ; __tmp . put_u16_le (self . flags . bits ()) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct OBSTACLE_DISTANCE_3D_DATA { pub time_boot_ms : u32 , pub x : f32 , pub y : f32 , pub z : f32 , pub min_distance : f32 , pub max_distance : f32 , pub obstacle_id : u16 , pub sensor_type : MavDistanceSensor , pub frame : MavFrame , } impl OBSTACLE_DISTANCE_3D_DATA { pub const ENCODED_LEN : usize = 28usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , x : 0.0_f32 , y : 0.0_f32 , z : 0.0_f32 , min_distance : 0.0_f32 , max_distance : 0.0_f32 , obstacle_id : 0_u16 , sensor_type : MavDistanceSensor :: DEFAULT , frame : MavFrame :: DEFAULT , } ; } impl Default for OBSTACLE_DISTANCE_3D_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for OBSTACLE_DISTANCE_3D_DATA { type Message = MavMessage ; const ID : u32 = 11037u32 ; const NAME : & 'static str = "OBSTACLE_DISTANCE_3D" ; const EXTRA_CRC : u8 = 130u8 ; const ENCODED_LEN : usize = 28usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . x = buf . get_f32_le () ; __struct . y = buf . get_f32_le () ; __struct . z = buf . get_f32_le () ; __struct . min_distance = buf . get_f32_le () ; __struct . max_distance = buf . get_f32_le () ; __struct . obstacle_id = buf . get_u16_le () ; let tmp = buf . get_u8 () ; __struct . sensor_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavDistanceSensor" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . frame = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavFrame" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; __tmp . put_f32_le (self . min_distance) ; __tmp . put_f32_le (self . max_distance) ; __tmp . put_u16_le (self . obstacle_id) ; __tmp . put_u8 (self . sensor_type as u8) ; __tmp . put_u8 (self . frame as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct TERRAIN_DATA_DATA { pub lat : i32 , pub lon : i32 , pub grid_spacing : u16 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub data : [i16 ; 16] , pub gridbit : u8 , } impl TERRAIN_DATA_DATA { pub const ENCODED_LEN : usize = 43usize ; pub const DEFAULT : Self = Self { lat : 0_i32 , lon : 0_i32 , grid_spacing : 0_u16 , data : [0_i16 ; 16usize] , gridbit : 0_u8 , } ; } impl Default for TERRAIN_DATA_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for TERRAIN_DATA_DATA { type Message = MavMessage ; const ID : u32 = 134u32 ; const NAME : & 'static str = "TERRAIN_DATA" ; const EXTRA_CRC : u8 = 229u8 ; const ENCODED_LEN : usize = 43usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . grid_spacing = buf . get_u16_le () ; for v in & mut __struct . data { let val = buf . get_i16_le () ; * v = val ; } __struct . gridbit = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_u16_le (self . grid_spacing) ; for val in & self . data { __tmp . put_i16_le (* val) ; } __tmp . put_u8 (self . gridbit) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PARAM_REQUEST_LIST_DATA { pub target_system : u8 , pub target_component : u8 , } impl PARAM_REQUEST_LIST_DATA { pub const ENCODED_LEN : usize = 2usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for PARAM_REQUEST_LIST_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for PARAM_REQUEST_LIST_DATA { type Message = MavMessage ; const ID : u32 = 21u32 ; const NAME : & 'static str = "PARAM_REQUEST_LIST" ; const EXTRA_CRC : u8 = 159u8 ; const ENCODED_LEN : usize = 2usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct RPM_DATA { pub rpm1 : f32 , pub rpm2 : f32 , } impl RPM_DATA { pub const ENCODED_LEN : usize = 8usize ; pub const DEFAULT : Self = Self { rpm1 : 0.0_f32 , rpm2 : 0.0_f32 , } ; } impl Default for RPM_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for RPM_DATA { type Message = MavMessage ; const ID : u32 = 226u32 ; const NAME : & 'static str = "RPM" ; const EXTRA_CRC : u8 = 207u8 ; const ENCODED_LEN : usize = 8usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . rpm1 = buf . get_f32_le () ; __struct . rpm2 = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . rpm1) ; __tmp . put_f32_le (self . rpm2) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MISSION_REQUEST_INT_DATA { pub seq : u16 , pub target_system : u8 , pub target_component : u8 , } impl MISSION_REQUEST_INT_DATA { pub const ENCODED_LEN : usize = 4usize ; pub const DEFAULT : Self = Self { seq : 0_u16 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for MISSION_REQUEST_INT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MISSION_REQUEST_INT_DATA { type Message = MavMessage ; const ID : u32 = 51u32 ; const NAME : & 'static str = "MISSION_REQUEST_INT" ; const EXTRA_CRC : u8 = 196u8 ; const ENCODED_LEN : usize = 4usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . seq = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . seq) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CELLULAR_CONFIG_DATA { pub enable_lte : u8 , pub enable_pin : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub pin : [u8 ; 16] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub new_pin : [u8 ; 16] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub apn : [u8 ; 32] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub puk : [u8 ; 16] , pub roaming : u8 , pub response : CellularConfigResponse , } impl CELLULAR_CONFIG_DATA { pub const ENCODED_LEN : usize = 84usize ; pub const DEFAULT : Self = Self { enable_lte : 0_u8 , enable_pin : 0_u8 , pin : [0_u8 ; 16usize] , new_pin : [0_u8 ; 16usize] , apn : [0_u8 ; 32usize] , puk : [0_u8 ; 16usize] , roaming : 0_u8 , response : CellularConfigResponse :: DEFAULT , } ; } impl Default for CELLULAR_CONFIG_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CELLULAR_CONFIG_DATA { type Message = MavMessage ; const ID : u32 = 336u32 ; const NAME : & 'static str = "CELLULAR_CONFIG" ; const EXTRA_CRC : u8 = 245u8 ; const ENCODED_LEN : usize = 84usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . enable_lte = buf . get_u8 () ; __struct . enable_pin = buf . get_u8 () ; for v in & mut __struct . pin { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . new_pin { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . apn { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . puk { let val = buf . get_u8 () ; * v = val ; } __struct . roaming = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . response = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "CellularConfigResponse" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . enable_lte) ; __tmp . put_u8 (self . enable_pin) ; for val in & self . pin { __tmp . put_u8 (* val) ; } for val in & self . new_pin { __tmp . put_u8 (* val) ; } for val in & self . apn { __tmp . put_u8 (* val) ; } for val in & self . puk { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . roaming) ; __tmp . put_u8 (self . response as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SENSOR_OFFSETS_DATA { pub mag_declination : f32 , pub raw_press : i32 , pub raw_temp : i32 , pub gyro_cal_x : f32 , pub gyro_cal_y : f32 , pub gyro_cal_z : f32 , pub accel_cal_x : f32 , pub accel_cal_y : f32 , pub accel_cal_z : f32 , pub mag_ofs_x : i16 , pub mag_ofs_y : i16 , pub mag_ofs_z : i16 , } impl SENSOR_OFFSETS_DATA { pub const ENCODED_LEN : usize = 42usize ; pub const DEFAULT : Self = Self { mag_declination : 0.0_f32 , raw_press : 0_i32 , raw_temp : 0_i32 , gyro_cal_x : 0.0_f32 , gyro_cal_y : 0.0_f32 , gyro_cal_z : 0.0_f32 , accel_cal_x : 0.0_f32 , accel_cal_y : 0.0_f32 , accel_cal_z : 0.0_f32 , mag_ofs_x : 0_i16 , mag_ofs_y : 0_i16 , mag_ofs_z : 0_i16 , } ; } impl Default for SENSOR_OFFSETS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SENSOR_OFFSETS_DATA { type Message = MavMessage ; const ID : u32 = 150u32 ; const NAME : & 'static str = "SENSOR_OFFSETS" ; const EXTRA_CRC : u8 = 134u8 ; const ENCODED_LEN : usize = 42usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . mag_declination = buf . get_f32_le () ; __struct . raw_press = buf . get_i32_le () ; __struct . raw_temp = buf . get_i32_le () ; __struct . gyro_cal_x = buf . get_f32_le () ; __struct . gyro_cal_y = buf . get_f32_le () ; __struct . gyro_cal_z = buf . get_f32_le () ; __struct . accel_cal_x = buf . get_f32_le () ; __struct . accel_cal_y = buf . get_f32_le () ; __struct . accel_cal_z = buf . get_f32_le () ; __struct . mag_ofs_x = buf . get_i16_le () ; __struct . mag_ofs_y = buf . get_i16_le () ; __struct . mag_ofs_z = buf . get_i16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . mag_declination) ; __tmp . put_i32_le (self . raw_press) ; __tmp . put_i32_le (self . raw_temp) ; __tmp . put_f32_le (self . gyro_cal_x) ; __tmp . put_f32_le (self . gyro_cal_y) ; __tmp . put_f32_le (self . gyro_cal_z) ; __tmp . put_f32_le (self . accel_cal_x) ; __tmp . put_f32_le (self . accel_cal_y) ; __tmp . put_f32_le (self . accel_cal_z) ; __tmp . put_i16_le (self . mag_ofs_x) ; __tmp . put_i16_le (self . mag_ofs_y) ; __tmp . put_i16_le (self . mag_ofs_z) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct AHRS3_DATA { pub roll : f32 , pub pitch : f32 , pub yaw : f32 , pub altitude : f32 , pub lat : i32 , pub lng : i32 , pub v1 : f32 , pub v2 : f32 , pub v3 : f32 , pub v4 : f32 , } impl AHRS3_DATA { pub const ENCODED_LEN : usize = 40usize ; pub const DEFAULT : Self = Self { roll : 0.0_f32 , pitch : 0.0_f32 , yaw : 0.0_f32 , altitude : 0.0_f32 , lat : 0_i32 , lng : 0_i32 , v1 : 0.0_f32 , v2 : 0.0_f32 , v3 : 0.0_f32 , v4 : 0.0_f32 , } ; } impl Default for AHRS3_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for AHRS3_DATA { type Message = MavMessage ; const ID : u32 = 182u32 ; const NAME : & 'static str = "AHRS3" ; const EXTRA_CRC : u8 = 229u8 ; const ENCODED_LEN : usize = 40usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . roll = buf . get_f32_le () ; __struct . pitch = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; __struct . altitude = buf . get_f32_le () ; __struct . lat = buf . get_i32_le () ; __struct . lng = buf . get_i32_le () ; __struct . v1 = buf . get_f32_le () ; __struct . v2 = buf . get_f32_le () ; __struct . v3 = buf . get_f32_le () ; __struct . v4 = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . roll) ; __tmp . put_f32_le (self . pitch) ; __tmp . put_f32_le (self . yaw) ; __tmp . put_f32_le (self . altitude) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lng) ; __tmp . put_f32_le (self . v1) ; __tmp . put_f32_le (self . v2) ; __tmp . put_f32_le (self . v3) ; __tmp . put_f32_le (self . v4) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LOG_REQUEST_LIST_DATA { pub start : u16 , pub end : u16 , pub target_system : u8 , pub target_component : u8 , } impl LOG_REQUEST_LIST_DATA { pub const ENCODED_LEN : usize = 6usize ; pub const DEFAULT : Self = Self { start : 0_u16 , end : 0_u16 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for LOG_REQUEST_LIST_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for LOG_REQUEST_LIST_DATA { type Message = MavMessage ; const ID : u32 = 117u32 ; const NAME : & 'static str = "LOG_REQUEST_LIST" ; const EXTRA_CRC : u8 = 128u8 ; const ENCODED_LEN : usize = 6usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . start = buf . get_u16_le () ; __struct . end = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . start) ; __tmp . put_u16_le (self . end) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct DIGICAM_CONFIGURE_DATA { pub extra_value : f32 , pub shutter_speed : u16 , pub target_system : u8 , pub target_component : u8 , pub mode : u8 , pub aperture : u8 , pub iso : u8 , pub exposure_type : u8 , pub command_id : u8 , pub engine_cut_off : u8 , pub extra_param : u8 , } impl DIGICAM_CONFIGURE_DATA { pub const ENCODED_LEN : usize = 15usize ; pub const DEFAULT : Self = Self { extra_value : 0.0_f32 , shutter_speed : 0_u16 , target_system : 0_u8 , target_component : 0_u8 , mode : 0_u8 , aperture : 0_u8 , iso : 0_u8 , exposure_type : 0_u8 , command_id : 0_u8 , engine_cut_off : 0_u8 , extra_param : 0_u8 , } ; } impl Default for DIGICAM_CONFIGURE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for DIGICAM_CONFIGURE_DATA { type Message = MavMessage ; const ID : u32 = 154u32 ; const NAME : & 'static str = "DIGICAM_CONFIGURE" ; const EXTRA_CRC : u8 = 84u8 ; const ENCODED_LEN : usize = 15usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . extra_value = buf . get_f32_le () ; __struct . shutter_speed = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . mode = buf . get_u8 () ; __struct . aperture = buf . get_u8 () ; __struct . iso = buf . get_u8 () ; __struct . exposure_type = buf . get_u8 () ; __struct . command_id = buf . get_u8 () ; __struct . engine_cut_off = buf . get_u8 () ; __struct . extra_param = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . extra_value) ; __tmp . put_u16_le (self . shutter_speed) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . mode) ; __tmp . put_u8 (self . aperture) ; __tmp . put_u8 (self . iso) ; __tmp . put_u8 (self . exposure_type) ; __tmp . put_u8 (self . command_id) ; __tmp . put_u8 (self . engine_cut_off) ; __tmp . put_u8 (self . extra_param) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GPS2_RAW_DATA { pub time_usec : u64 , pub lat : i32 , pub lon : i32 , pub alt : i32 , pub dgps_age : u32 , pub eph : u16 , pub epv : u16 , pub vel : u16 , pub cog : u16 , pub fix_type : GpsFixType , pub satellites_visible : u8 , pub dgps_numch : u8 , } impl GPS2_RAW_DATA { pub const ENCODED_LEN : usize = 35usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , lat : 0_i32 , lon : 0_i32 , alt : 0_i32 , dgps_age : 0_u32 , eph : 0_u16 , epv : 0_u16 , vel : 0_u16 , cog : 0_u16 , fix_type : GpsFixType :: DEFAULT , satellites_visible : 0_u8 , dgps_numch : 0_u8 , } ; } impl Default for GPS2_RAW_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GPS2_RAW_DATA { type Message = MavMessage ; const ID : u32 = 124u32 ; const NAME : & 'static str = "GPS2_RAW" ; const EXTRA_CRC : u8 = 87u8 ; const ENCODED_LEN : usize = 35usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . alt = buf . get_i32_le () ; __struct . dgps_age = buf . get_u32_le () ; __struct . eph = buf . get_u16_le () ; __struct . epv = buf . get_u16_le () ; __struct . vel = buf . get_u16_le () ; __struct . cog = buf . get_u16_le () ; let tmp = buf . get_u8 () ; __struct . fix_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "GpsFixType" , value : tmp as u32 }) ? ; __struct . satellites_visible = buf . get_u8 () ; __struct . dgps_numch = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_i32_le (self . alt) ; __tmp . put_u32_le (self . dgps_age) ; __tmp . put_u16_le (self . eph) ; __tmp . put_u16_le (self . epv) ; __tmp . put_u16_le (self . vel) ; __tmp . put_u16_le (self . cog) ; __tmp . put_u8 (self . fix_type as u8) ; __tmp . put_u8 (self . satellites_visible) ; __tmp . put_u8 (self . dgps_numch) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct OPEN_DRONE_ID_SELF_ID_DATA { pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub id_or_mac : [u8 ; 20] , pub description_type : MavOdidDescType , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub description : [u8 ; 23] , } impl OPEN_DRONE_ID_SELF_ID_DATA { pub const ENCODED_LEN : usize = 46usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , id_or_mac : [0_u8 ; 20usize] , description_type : MavOdidDescType :: DEFAULT , description : [0_u8 ; 23usize] , } ; } impl Default for OPEN_DRONE_ID_SELF_ID_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for OPEN_DRONE_ID_SELF_ID_DATA { type Message = MavMessage ; const ID : u32 = 12903u32 ; const NAME : & 'static str = "OPEN_DRONE_ID_SELF_ID" ; const EXTRA_CRC : u8 = 249u8 ; const ENCODED_LEN : usize = 46usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . id_or_mac { let val = buf . get_u8 () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . description_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidDescType" , value : tmp as u32 }) ? ; for v in & mut __struct . description { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . id_or_mac { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . description_type as u8) ; for val in & self . description { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct AHRS2_DATA { pub roll : f32 , pub pitch : f32 , pub yaw : f32 , pub altitude : f32 , pub lat : i32 , pub lng : i32 , } impl AHRS2_DATA { pub const ENCODED_LEN : usize = 24usize ; pub const DEFAULT : Self = Self { roll : 0.0_f32 , pitch : 0.0_f32 , yaw : 0.0_f32 , altitude : 0.0_f32 , lat : 0_i32 , lng : 0_i32 , } ; } impl Default for AHRS2_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for AHRS2_DATA { type Message = MavMessage ; const ID : u32 = 178u32 ; const NAME : & 'static str = "AHRS2" ; const EXTRA_CRC : u8 = 47u8 ; const ENCODED_LEN : usize = 24usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . roll = buf . get_f32_le () ; __struct . pitch = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; __struct . altitude = buf . get_f32_le () ; __struct . lat = buf . get_i32_le () ; __struct . lng = buf . get_i32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . roll) ; __tmp . put_f32_le (self . pitch) ; __tmp . put_f32_le (self . yaw) ; __tmp . put_f32_le (self . altitude) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lng) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct VICON_POSITION_ESTIMATE_DATA { pub usec : u64 , pub x : f32 , pub y : f32 , pub z : f32 , pub roll : f32 , pub pitch : f32 , pub yaw : f32 , } impl VICON_POSITION_ESTIMATE_DATA { pub const ENCODED_LEN : usize = 32usize ; pub const DEFAULT : Self = Self { usec : 0_u64 , x : 0.0_f32 , y : 0.0_f32 , z : 0.0_f32 , roll : 0.0_f32 , pitch : 0.0_f32 , yaw : 0.0_f32 , } ; } impl Default for VICON_POSITION_ESTIMATE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for VICON_POSITION_ESTIMATE_DATA { type Message = MavMessage ; const ID : u32 = 104u32 ; const NAME : & 'static str = "VICON_POSITION_ESTIMATE" ; const EXTRA_CRC : u8 = 56u8 ; const ENCODED_LEN : usize = 32usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . usec = buf . get_u64_le () ; __struct . x = buf . get_f32_le () ; __struct . y = buf . get_f32_le () ; __struct . z = buf . get_f32_le () ; __struct . roll = buf . get_f32_le () ; __struct . pitch = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . usec) ; __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; __tmp . put_f32_le (self . roll) ; __tmp . put_f32_le (self . pitch) ; __tmp . put_f32_le (self . yaw) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CHANGE_OPERATOR_CONTROL_DATA { pub target_system : u8 , pub control_request : u8 , pub version : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub passkey : [u8 ; 25] , } impl CHANGE_OPERATOR_CONTROL_DATA { pub const ENCODED_LEN : usize = 28usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , control_request : 0_u8 , version : 0_u8 , passkey : [0_u8 ; 25usize] , } ; } impl Default for CHANGE_OPERATOR_CONTROL_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CHANGE_OPERATOR_CONTROL_DATA { type Message = MavMessage ; const ID : u32 = 5u32 ; const NAME : & 'static str = "CHANGE_OPERATOR_CONTROL" ; const EXTRA_CRC : u8 = 217u8 ; const ENCODED_LEN : usize = 28usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . control_request = buf . get_u8 () ; __struct . version = buf . get_u8 () ; for v in & mut __struct . passkey { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . control_request) ; __tmp . put_u8 (self . version) ; for val in & self . passkey { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct RC_CHANNELS_OVERRIDE_DATA { pub chan1_raw : u16 , pub chan2_raw : u16 , pub chan3_raw : u16 , pub chan4_raw : u16 , pub chan5_raw : u16 , pub chan6_raw : u16 , pub chan7_raw : u16 , pub chan8_raw : u16 , pub target_system : u8 , pub target_component : u8 , } impl RC_CHANNELS_OVERRIDE_DATA { pub const ENCODED_LEN : usize = 18usize ; pub const DEFAULT : Self = Self { chan1_raw : 0_u16 , chan2_raw : 0_u16 , chan3_raw : 0_u16 , chan4_raw : 0_u16 , chan5_raw : 0_u16 , chan6_raw : 0_u16 , chan7_raw : 0_u16 , chan8_raw : 0_u16 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for RC_CHANNELS_OVERRIDE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for RC_CHANNELS_OVERRIDE_DATA { type Message = MavMessage ; const ID : u32 = 70u32 ; const NAME : & 'static str = "RC_CHANNELS_OVERRIDE" ; const EXTRA_CRC : u8 = 124u8 ; const ENCODED_LEN : usize = 18usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . chan1_raw = buf . get_u16_le () ; __struct . chan2_raw = buf . get_u16_le () ; __struct . chan3_raw = buf . get_u16_le () ; __struct . chan4_raw = buf . get_u16_le () ; __struct . chan5_raw = buf . get_u16_le () ; __struct . chan6_raw = buf . get_u16_le () ; __struct . chan7_raw = buf . get_u16_le () ; __struct . chan8_raw = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . chan1_raw) ; __tmp . put_u16_le (self . chan2_raw) ; __tmp . put_u16_le (self . chan3_raw) ; __tmp . put_u16_le (self . chan4_raw) ; __tmp . put_u16_le (self . chan5_raw) ; __tmp . put_u16_le (self . chan6_raw) ; __tmp . put_u16_le (self . chan7_raw) ; __tmp . put_u16_le (self . chan8_raw) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MISSION_WRITE_PARTIAL_LIST_DATA { pub start_index : i16 , pub end_index : i16 , pub target_system : u8 , pub target_component : u8 , } impl MISSION_WRITE_PARTIAL_LIST_DATA { pub const ENCODED_LEN : usize = 6usize ; pub const DEFAULT : Self = Self { start_index : 0_i16 , end_index : 0_i16 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for MISSION_WRITE_PARTIAL_LIST_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MISSION_WRITE_PARTIAL_LIST_DATA { type Message = MavMessage ; const ID : u32 = 38u32 ; const NAME : & 'static str = "MISSION_WRITE_PARTIAL_LIST" ; const EXTRA_CRC : u8 = 9u8 ; const ENCODED_LEN : usize = 6usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . start_index = buf . get_i16_le () ; __struct . end_index = buf . get_i16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i16_le (self . start_index) ; __tmp . put_i16_le (self . end_index) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CAMERA_TRIGGER_DATA { pub time_usec : u64 , pub seq : u32 , } impl CAMERA_TRIGGER_DATA { pub const ENCODED_LEN : usize = 12usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , seq : 0_u32 , } ; } impl Default for CAMERA_TRIGGER_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CAMERA_TRIGGER_DATA { type Message = MavMessage ; const ID : u32 = 112u32 ; const NAME : & 'static str = "CAMERA_TRIGGER" ; const EXTRA_CRC : u8 = 174u8 ; const ENCODED_LEN : usize = 12usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . seq = buf . get_u32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_u32_le (self . seq) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MISSION_REQUEST_LIST_DATA { pub target_system : u8 , pub target_component : u8 , } impl MISSION_REQUEST_LIST_DATA { pub const ENCODED_LEN : usize = 2usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for MISSION_REQUEST_LIST_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MISSION_REQUEST_LIST_DATA { type Message = MavMessage ; const ID : u32 = 43u32 ; const NAME : & 'static str = "MISSION_REQUEST_LIST" ; const EXTRA_CRC : u8 = 132u8 ; const ENCODED_LEN : usize = 2usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct DATA32_DATA { pub mavtype : u8 , pub len : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub data : [u8 ; 32] , } impl DATA32_DATA { pub const ENCODED_LEN : usize = 34usize ; pub const DEFAULT : Self = Self { mavtype : 0_u8 , len : 0_u8 , data : [0_u8 ; 32usize] , } ; } impl Default for DATA32_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for DATA32_DATA { type Message = MavMessage ; const ID : u32 = 170u32 ; const NAME : & 'static str = "DATA32" ; const EXTRA_CRC : u8 = 73u8 ; const ENCODED_LEN : usize = 34usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . mavtype = buf . get_u8 () ; __struct . len = buf . get_u8 () ; for v in & mut __struct . data { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . mavtype) ; __tmp . put_u8 (self . len) ; for val in & self . data { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CAMERA_CAPTURE_STATUS_DATA { pub time_boot_ms : u32 , pub image_interval : f32 , pub recording_time_ms : u32 , pub available_capacity : f32 , pub image_status : u8 , pub video_status : u8 , } impl CAMERA_CAPTURE_STATUS_DATA { pub const ENCODED_LEN : usize = 18usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , image_interval : 0.0_f32 , recording_time_ms : 0_u32 , available_capacity : 0.0_f32 , image_status : 0_u8 , video_status : 0_u8 , } ; } impl Default for CAMERA_CAPTURE_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CAMERA_CAPTURE_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 262u32 ; const NAME : & 'static str = "CAMERA_CAPTURE_STATUS" ; const EXTRA_CRC : u8 = 12u8 ; const ENCODED_LEN : usize = 18usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . image_interval = buf . get_f32_le () ; __struct . recording_time_ms = buf . get_u32_le () ; __struct . available_capacity = buf . get_f32_le () ; __struct . image_status = buf . get_u8 () ; __struct . video_status = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . image_interval) ; __tmp . put_u32_le (self . recording_time_ms) ; __tmp . put_f32_le (self . available_capacity) ; __tmp . put_u8 (self . image_status) ; __tmp . put_u8 (self . video_status) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct TERRAIN_CHECK_DATA { pub lat : i32 , pub lon : i32 , } impl TERRAIN_CHECK_DATA { pub const ENCODED_LEN : usize = 8usize ; pub const DEFAULT : Self = Self { lat : 0_i32 , lon : 0_i32 , } ; } impl Default for TERRAIN_CHECK_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for TERRAIN_CHECK_DATA { type Message = MavMessage ; const ID : u32 = 135u32 ; const NAME : & 'static str = "TERRAIN_CHECK" ; const EXTRA_CRC : u8 = 203u8 ; const ENCODED_LEN : usize = 8usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ICAROUS_KINEMATIC_BANDS_DATA { pub min1 : f32 , pub max1 : f32 , pub min2 : f32 , pub max2 : f32 , pub min3 : f32 , pub max3 : f32 , pub min4 : f32 , pub max4 : f32 , pub min5 : f32 , pub max5 : f32 , pub numBands : i8 , pub type1 : IcarousTrackBandTypes , pub type2 : IcarousTrackBandTypes , pub type3 : IcarousTrackBandTypes , pub type4 : IcarousTrackBandTypes , pub type5 : IcarousTrackBandTypes , } impl ICAROUS_KINEMATIC_BANDS_DATA { pub const ENCODED_LEN : usize = 46usize ; pub const DEFAULT : Self = Self { min1 : 0.0_f32 , max1 : 0.0_f32 , min2 : 0.0_f32 , max2 : 0.0_f32 , min3 : 0.0_f32 , max3 : 0.0_f32 , min4 : 0.0_f32 , max4 : 0.0_f32 , min5 : 0.0_f32 , max5 : 0.0_f32 , numBands : 0_i8 , type1 : IcarousTrackBandTypes :: DEFAULT , type2 : IcarousTrackBandTypes :: DEFAULT , type3 : IcarousTrackBandTypes :: DEFAULT , type4 : IcarousTrackBandTypes :: DEFAULT , type5 : IcarousTrackBandTypes :: DEFAULT , } ; } impl Default for ICAROUS_KINEMATIC_BANDS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ICAROUS_KINEMATIC_BANDS_DATA { type Message = MavMessage ; const ID : u32 = 42001u32 ; const NAME : & 'static str = "ICAROUS_KINEMATIC_BANDS" ; const EXTRA_CRC : u8 = 239u8 ; const ENCODED_LEN : usize = 46usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . min1 = buf . get_f32_le () ; __struct . max1 = buf . get_f32_le () ; __struct . min2 = buf . get_f32_le () ; __struct . max2 = buf . get_f32_le () ; __struct . min3 = buf . get_f32_le () ; __struct . max3 = buf . get_f32_le () ; __struct . min4 = buf . get_f32_le () ; __struct . max4 = buf . get_f32_le () ; __struct . min5 = buf . get_f32_le () ; __struct . max5 = buf . get_f32_le () ; __struct . numBands = buf . get_i8 () ; let tmp = buf . get_u8 () ; __struct . type1 = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "IcarousTrackBandTypes" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . type2 = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "IcarousTrackBandTypes" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . type3 = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "IcarousTrackBandTypes" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . type4 = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "IcarousTrackBandTypes" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . type5 = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "IcarousTrackBandTypes" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . min1) ; __tmp . put_f32_le (self . max1) ; __tmp . put_f32_le (self . min2) ; __tmp . put_f32_le (self . max2) ; __tmp . put_f32_le (self . min3) ; __tmp . put_f32_le (self . max3) ; __tmp . put_f32_le (self . min4) ; __tmp . put_f32_le (self . max4) ; __tmp . put_f32_le (self . min5) ; __tmp . put_f32_le (self . max5) ; __tmp . put_i8 (self . numBands) ; __tmp . put_u8 (self . type1 as u8) ; __tmp . put_u8 (self . type2 as u8) ; __tmp . put_u8 (self . type3 as u8) ; __tmp . put_u8 (self . type4 as u8) ; __tmp . put_u8 (self . type5 as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CHANGE_OPERATOR_CONTROL_ACK_DATA { pub gcs_system_id : u8 , pub control_request : u8 , pub ack : u8 , } impl CHANGE_OPERATOR_CONTROL_ACK_DATA { pub const ENCODED_LEN : usize = 3usize ; pub const DEFAULT : Self = Self { gcs_system_id : 0_u8 , control_request : 0_u8 , ack : 0_u8 , } ; } impl Default for CHANGE_OPERATOR_CONTROL_ACK_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CHANGE_OPERATOR_CONTROL_ACK_DATA { type Message = MavMessage ; const ID : u32 = 6u32 ; const NAME : & 'static str = "CHANGE_OPERATOR_CONTROL_ACK" ; const EXTRA_CRC : u8 = 104u8 ; const ENCODED_LEN : usize = 3usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . gcs_system_id = buf . get_u8 () ; __struct . control_request = buf . get_u8 () ; __struct . ack = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . gcs_system_id) ; __tmp . put_u8 (self . control_request) ; __tmp . put_u8 (self . ack) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ORBIT_EXECUTION_STATUS_DATA { pub time_usec : u64 , pub radius : f32 , pub x : i32 , pub y : i32 , pub z : f32 , pub frame : MavFrame , } impl ORBIT_EXECUTION_STATUS_DATA { pub const ENCODED_LEN : usize = 25usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , radius : 0.0_f32 , x : 0_i32 , y : 0_i32 , z : 0.0_f32 , frame : MavFrame :: DEFAULT , } ; } impl Default for ORBIT_EXECUTION_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ORBIT_EXECUTION_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 360u32 ; const NAME : & 'static str = "ORBIT_EXECUTION_STATUS" ; const EXTRA_CRC : u8 = 11u8 ; const ENCODED_LEN : usize = 25usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . radius = buf . get_f32_le () ; __struct . x = buf . get_i32_le () ; __struct . y = buf . get_i32_le () ; __struct . z = buf . get_f32_le () ; let tmp = buf . get_u8 () ; __struct . frame = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavFrame" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . radius) ; __tmp . put_i32_le (self . x) ; __tmp . put_i32_le (self . y) ; __tmp . put_f32_le (self . z) ; __tmp . put_u8 (self . frame as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct DEVICE_OP_WRITE_DATA { pub request_id : u32 , pub target_system : u8 , pub target_component : u8 , pub bustype : DeviceOpBustype , pub bus : u8 , pub address : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub busname : [u8 ; 40] , pub regstart : u8 , pub count : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub data : [u8 ; 128] , } impl DEVICE_OP_WRITE_DATA { pub const ENCODED_LEN : usize = 179usize ; pub const DEFAULT : Self = Self { request_id : 0_u32 , target_system : 0_u8 , target_component : 0_u8 , bustype : DeviceOpBustype :: DEFAULT , bus : 0_u8 , address : 0_u8 , busname : [0_u8 ; 40usize] , regstart : 0_u8 , count : 0_u8 , data : [0_u8 ; 128usize] , } ; } impl Default for DEVICE_OP_WRITE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for DEVICE_OP_WRITE_DATA { type Message = MavMessage ; const ID : u32 = 11002u32 ; const NAME : & 'static str = "DEVICE_OP_WRITE" ; const EXTRA_CRC : u8 = 234u8 ; const ENCODED_LEN : usize = 179usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . request_id = buf . get_u32_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . bustype = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "DeviceOpBustype" , value : tmp as u32 }) ? ; __struct . bus = buf . get_u8 () ; __struct . address = buf . get_u8 () ; for v in & mut __struct . busname { let val = buf . get_u8 () ; * v = val ; } __struct . regstart = buf . get_u8 () ; __struct . count = buf . get_u8 () ; for v in & mut __struct . data { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . request_id) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . bustype as u8) ; __tmp . put_u8 (self . bus) ; __tmp . put_u8 (self . address) ; for val in & self . busname { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . regstart) ; __tmp . put_u8 (self . count) ; for val in & self . data { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct OPEN_DRONE_ID_LOCATION_DATA { pub latitude : i32 , pub longitude : i32 , pub altitude_barometric : f32 , pub altitude_geodetic : f32 , pub height : f32 , pub timestamp : f32 , pub direction : u16 , pub speed_horizontal : u16 , pub speed_vertical : i16 , pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub id_or_mac : [u8 ; 20] , pub status : MavOdidStatus , pub height_reference : MavOdidHeightRef , pub horizontal_accuracy : MavOdidHorAcc , pub vertical_accuracy : MavOdidVerAcc , pub barometer_accuracy : MavOdidVerAcc , pub speed_accuracy : MavOdidSpeedAcc , pub timestamp_accuracy : MavOdidTimeAcc , } impl OPEN_DRONE_ID_LOCATION_DATA { pub const ENCODED_LEN : usize = 59usize ; pub const DEFAULT : Self = Self { latitude : 0_i32 , longitude : 0_i32 , altitude_barometric : 0.0_f32 , altitude_geodetic : 0.0_f32 , height : 0.0_f32 , timestamp : 0.0_f32 , direction : 0_u16 , speed_horizontal : 0_u16 , speed_vertical : 0_i16 , target_system : 0_u8 , target_component : 0_u8 , id_or_mac : [0_u8 ; 20usize] , status : MavOdidStatus :: DEFAULT , height_reference : MavOdidHeightRef :: DEFAULT , horizontal_accuracy : MavOdidHorAcc :: DEFAULT , vertical_accuracy : MavOdidVerAcc :: DEFAULT , barometer_accuracy : MavOdidVerAcc :: DEFAULT , speed_accuracy : MavOdidSpeedAcc :: DEFAULT , timestamp_accuracy : MavOdidTimeAcc :: DEFAULT , } ; } impl Default for OPEN_DRONE_ID_LOCATION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for OPEN_DRONE_ID_LOCATION_DATA { type Message = MavMessage ; const ID : u32 = 12901u32 ; const NAME : & 'static str = "OPEN_DRONE_ID_LOCATION" ; const EXTRA_CRC : u8 = 254u8 ; const ENCODED_LEN : usize = 59usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . latitude = buf . get_i32_le () ; __struct . longitude = buf . get_i32_le () ; __struct . altitude_barometric = buf . get_f32_le () ; __struct . altitude_geodetic = buf . get_f32_le () ; __struct . height = buf . get_f32_le () ; __struct . timestamp = buf . get_f32_le () ; __struct . direction = buf . get_u16_le () ; __struct . speed_horizontal = buf . get_u16_le () ; __struct . speed_vertical = buf . get_i16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . id_or_mac { let val = buf . get_u8 () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . status = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidStatus" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . height_reference = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidHeightRef" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . horizontal_accuracy = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidHorAcc" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . vertical_accuracy = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidVerAcc" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . barometer_accuracy = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidVerAcc" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . speed_accuracy = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidSpeedAcc" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . timestamp_accuracy = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidTimeAcc" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . latitude) ; __tmp . put_i32_le (self . longitude) ; __tmp . put_f32_le (self . altitude_barometric) ; __tmp . put_f32_le (self . altitude_geodetic) ; __tmp . put_f32_le (self . height) ; __tmp . put_f32_le (self . timestamp) ; __tmp . put_u16_le (self . direction) ; __tmp . put_u16_le (self . speed_horizontal) ; __tmp . put_i16_le (self . speed_vertical) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . id_or_mac { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . status as u8) ; __tmp . put_u8 (self . height_reference as u8) ; __tmp . put_u8 (self . horizontal_accuracy as u8) ; __tmp . put_u8 (self . vertical_accuracy as u8) ; __tmp . put_u8 (self . barometer_accuracy as u8) ; __tmp . put_u8 (self . speed_accuracy as u8) ; __tmp . put_u8 (self . timestamp_accuracy as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LANDING_TARGET_DATA { pub time_usec : u64 , pub angle_x : f32 , pub angle_y : f32 , pub distance : f32 , pub size_x : f32 , pub size_y : f32 , pub target_num : u8 , pub frame : MavFrame , } impl LANDING_TARGET_DATA { pub const ENCODED_LEN : usize = 30usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , angle_x : 0.0_f32 , angle_y : 0.0_f32 , distance : 0.0_f32 , size_x : 0.0_f32 , size_y : 0.0_f32 , target_num : 0_u8 , frame : MavFrame :: DEFAULT , } ; } impl Default for LANDING_TARGET_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for LANDING_TARGET_DATA { type Message = MavMessage ; const ID : u32 = 149u32 ; const NAME : & 'static str = "LANDING_TARGET" ; const EXTRA_CRC : u8 = 200u8 ; const ENCODED_LEN : usize = 30usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . angle_x = buf . get_f32_le () ; __struct . angle_y = buf . get_f32_le () ; __struct . distance = buf . get_f32_le () ; __struct . size_x = buf . get_f32_le () ; __struct . size_y = buf . get_f32_le () ; __struct . target_num = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . frame = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavFrame" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . angle_x) ; __tmp . put_f32_le (self . angle_y) ; __tmp . put_f32_le (self . distance) ; __tmp . put_f32_le (self . size_x) ; __tmp . put_f32_le (self . size_y) ; __tmp . put_u8 (self . target_num) ; __tmp . put_u8 (self . frame as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct BATTERY_STATUS_DATA { pub current_consumed : i32 , pub energy_consumed : i32 , pub temperature : i16 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub voltages : [u16 ; 10] , pub current_battery : i16 , pub id : u8 , pub battery_function : MavBatteryFunction , pub mavtype : MavBatteryType , pub battery_remaining : i8 , } impl BATTERY_STATUS_DATA { pub const ENCODED_LEN : usize = 36usize ; pub const DEFAULT : Self = Self { current_consumed : 0_i32 , energy_consumed : 0_i32 , temperature : 0_i16 , voltages : [0_u16 ; 10usize] , current_battery : 0_i16 , id : 0_u8 , battery_function : MavBatteryFunction :: DEFAULT , mavtype : MavBatteryType :: DEFAULT , battery_remaining : 0_i8 , } ; } impl Default for BATTERY_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for BATTERY_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 147u32 ; const NAME : & 'static str = "BATTERY_STATUS" ; const EXTRA_CRC : u8 = 154u8 ; const ENCODED_LEN : usize = 36usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . current_consumed = buf . get_i32_le () ; __struct . energy_consumed = buf . get_i32_le () ; __struct . temperature = buf . get_i16_le () ; for v in & mut __struct . voltages { let val = buf . get_u16_le () ; * v = val ; } __struct . current_battery = buf . get_i16_le () ; __struct . id = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . battery_function = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavBatteryFunction" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . mavtype = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavBatteryType" , value : tmp as u32 }) ? ; __struct . battery_remaining = buf . get_i8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . current_consumed) ; __tmp . put_i32_le (self . energy_consumed) ; __tmp . put_i16_le (self . temperature) ; for val in & self . voltages { __tmp . put_u16_le (* val) ; } __tmp . put_i16_le (self . current_battery) ; __tmp . put_u8 (self . id) ; __tmp . put_u8 (self . battery_function as u8) ; __tmp . put_u8 (self . mavtype as u8) ; __tmp . put_i8 (self . battery_remaining) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GOPRO_SET_RESPONSE_DATA { pub cmd_id : GoproCommand , pub status : GoproRequestStatus , } impl GOPRO_SET_RESPONSE_DATA { pub const ENCODED_LEN : usize = 2usize ; pub const DEFAULT : Self = Self { cmd_id : GoproCommand :: DEFAULT , status : GoproRequestStatus :: DEFAULT , } ; } impl Default for GOPRO_SET_RESPONSE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GOPRO_SET_RESPONSE_DATA { type Message = MavMessage ; const ID : u32 = 219u32 ; const NAME : & 'static str = "GOPRO_SET_RESPONSE" ; const EXTRA_CRC : u8 = 162u8 ; const ENCODED_LEN : usize = 2usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u8 () ; __struct . cmd_id = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "GoproCommand" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . status = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "GoproRequestStatus" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . cmd_id as u8) ; __tmp . put_u8 (self . status as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct EVENT_DATA { pub id : u32 , pub event_time_boot_ms : u32 , pub sequence : u16 , pub destination_component : u8 , pub destination_system : u8 , pub log_levels : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub arguments : [u8 ; 40] , } impl EVENT_DATA { pub const ENCODED_LEN : usize = 53usize ; pub const DEFAULT : Self = Self { id : 0_u32 , event_time_boot_ms : 0_u32 , sequence : 0_u16 , destination_component : 0_u8 , destination_system : 0_u8 , log_levels : 0_u8 , arguments : [0_u8 ; 40usize] , } ; } impl Default for EVENT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for EVENT_DATA { type Message = MavMessage ; const ID : u32 = 410u32 ; const NAME : & 'static str = "EVENT" ; const EXTRA_CRC : u8 = 160u8 ; const ENCODED_LEN : usize = 53usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . id = buf . get_u32_le () ; __struct . event_time_boot_ms = buf . get_u32_le () ; __struct . sequence = buf . get_u16_le () ; __struct . destination_component = buf . get_u8 () ; __struct . destination_system = buf . get_u8 () ; __struct . log_levels = buf . get_u8 () ; for v in & mut __struct . arguments { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . id) ; __tmp . put_u32_le (self . event_time_boot_ms) ; __tmp . put_u16_le (self . sequence) ; __tmp . put_u8 (self . destination_component) ; __tmp . put_u8 (self . destination_system) ; __tmp . put_u8 (self . log_levels) ; for val in & self . arguments { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GIMBAL_MANAGER_SET_PITCHYAW_DATA { pub flags : GimbalManagerFlags , pub pitch : f32 , pub yaw : f32 , pub pitch_rate : f32 , pub yaw_rate : f32 , pub target_system : u8 , pub target_component : u8 , pub gimbal_device_id : u8 , } impl GIMBAL_MANAGER_SET_PITCHYAW_DATA { pub const ENCODED_LEN : usize = 23usize ; pub const DEFAULT : Self = Self { flags : GimbalManagerFlags :: DEFAULT , pitch : 0.0_f32 , yaw : 0.0_f32 , pitch_rate : 0.0_f32 , yaw_rate : 0.0_f32 , target_system : 0_u8 , target_component : 0_u8 , gimbal_device_id : 0_u8 , } ; } impl Default for GIMBAL_MANAGER_SET_PITCHYAW_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GIMBAL_MANAGER_SET_PITCHYAW_DATA { type Message = MavMessage ; const ID : u32 = 287u32 ; const NAME : & 'static str = "GIMBAL_MANAGER_SET_PITCHYAW" ; const EXTRA_CRC : u8 = 1u8 ; const ENCODED_LEN : usize = 23usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u32_le () ; __struct . flags = FromPrimitive :: from_u32 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "GimbalManagerFlags" , value : tmp as u32 }) ? ; __struct . pitch = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; __struct . pitch_rate = buf . get_f32_le () ; __struct . yaw_rate = buf . get_f32_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . gimbal_device_id = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . flags as u32) ; __tmp . put_f32_le (self . pitch) ; __tmp . put_f32_le (self . yaw) ; __tmp . put_f32_le (self . pitch_rate) ; __tmp . put_f32_le (self . yaw_rate) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . gimbal_device_id) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SMART_BATTERY_INFO_DATA { pub capacity_full_specification : i32 , pub capacity_full : i32 , pub cycle_count : u16 , pub weight : u16 , pub discharge_minimum_voltage : u16 , pub charging_minimum_voltage : u16 , pub resting_minimum_voltage : u16 , pub id : u8 , pub battery_function : MavBatteryFunction , pub mavtype : MavBatteryType , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub serial_number : [u8 ; 16] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub device_name : [u8 ; 50] , } impl SMART_BATTERY_INFO_DATA { pub const ENCODED_LEN : usize = 87usize ; pub const DEFAULT : Self = Self { capacity_full_specification : 0_i32 , capacity_full : 0_i32 , cycle_count : 0_u16 , weight : 0_u16 , discharge_minimum_voltage : 0_u16 , charging_minimum_voltage : 0_u16 , resting_minimum_voltage : 0_u16 , id : 0_u8 , battery_function : MavBatteryFunction :: DEFAULT , mavtype : MavBatteryType :: DEFAULT , serial_number : [0_u8 ; 16usize] , device_name : [0_u8 ; 50usize] , } ; } impl Default for SMART_BATTERY_INFO_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SMART_BATTERY_INFO_DATA { type Message = MavMessage ; const ID : u32 = 370u32 ; const NAME : & 'static str = "SMART_BATTERY_INFO" ; const EXTRA_CRC : u8 = 75u8 ; const ENCODED_LEN : usize = 87usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . capacity_full_specification = buf . get_i32_le () ; __struct . capacity_full = buf . get_i32_le () ; __struct . cycle_count = buf . get_u16_le () ; __struct . weight = buf . get_u16_le () ; __struct . discharge_minimum_voltage = buf . get_u16_le () ; __struct . charging_minimum_voltage = buf . get_u16_le () ; __struct . resting_minimum_voltage = buf . get_u16_le () ; __struct . id = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . battery_function = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavBatteryFunction" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . mavtype = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavBatteryType" , value : tmp as u32 }) ? ; for v in & mut __struct . serial_number { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . device_name { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . capacity_full_specification) ; __tmp . put_i32_le (self . capacity_full) ; __tmp . put_u16_le (self . cycle_count) ; __tmp . put_u16_le (self . weight) ; __tmp . put_u16_le (self . discharge_minimum_voltage) ; __tmp . put_u16_le (self . charging_minimum_voltage) ; __tmp . put_u16_le (self . resting_minimum_voltage) ; __tmp . put_u8 (self . id) ; __tmp . put_u8 (self . battery_function as u8) ; __tmp . put_u8 (self . mavtype as u8) ; for val in & self . serial_number { __tmp . put_u8 (* val) ; } for val in & self . device_name { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ATTITUDE_QUATERNION_DATA { pub time_boot_ms : u32 , pub q1 : f32 , pub q2 : f32 , pub q3 : f32 , pub q4 : f32 , pub rollspeed : f32 , pub pitchspeed : f32 , pub yawspeed : f32 , } impl ATTITUDE_QUATERNION_DATA { pub const ENCODED_LEN : usize = 32usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , q1 : 0.0_f32 , q2 : 0.0_f32 , q3 : 0.0_f32 , q4 : 0.0_f32 , rollspeed : 0.0_f32 , pitchspeed : 0.0_f32 , yawspeed : 0.0_f32 , } ; } impl Default for ATTITUDE_QUATERNION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ATTITUDE_QUATERNION_DATA { type Message = MavMessage ; const ID : u32 = 31u32 ; const NAME : & 'static str = "ATTITUDE_QUATERNION" ; const EXTRA_CRC : u8 = 246u8 ; const ENCODED_LEN : usize = 32usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . q1 = buf . get_f32_le () ; __struct . q2 = buf . get_f32_le () ; __struct . q3 = buf . get_f32_le () ; __struct . q4 = buf . get_f32_le () ; __struct . rollspeed = buf . get_f32_le () ; __struct . pitchspeed = buf . get_f32_le () ; __struct . yawspeed = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . q1) ; __tmp . put_f32_le (self . q2) ; __tmp . put_f32_le (self . q3) ; __tmp . put_f32_le (self . q4) ; __tmp . put_f32_le (self . rollspeed) ; __tmp . put_f32_le (self . pitchspeed) ; __tmp . put_f32_le (self . yawspeed) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SET_ATTITUDE_TARGET_DATA { pub time_boot_ms : u32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub q : [f32 ; 4] , pub body_roll_rate : f32 , pub body_pitch_rate : f32 , pub body_yaw_rate : f32 , pub thrust : f32 , pub target_system : u8 , pub target_component : u8 , pub type_mask : AttitudeTargetTypemask , } impl SET_ATTITUDE_TARGET_DATA { pub const ENCODED_LEN : usize = 39usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , q : [0.0_f32 ; 4usize] , body_roll_rate : 0.0_f32 , body_pitch_rate : 0.0_f32 , body_yaw_rate : 0.0_f32 , thrust : 0.0_f32 , target_system : 0_u8 , target_component : 0_u8 , type_mask : AttitudeTargetTypemask :: DEFAULT , } ; } impl Default for SET_ATTITUDE_TARGET_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SET_ATTITUDE_TARGET_DATA { type Message = MavMessage ; const ID : u32 = 82u32 ; const NAME : & 'static str = "SET_ATTITUDE_TARGET" ; const EXTRA_CRC : u8 = 49u8 ; const ENCODED_LEN : usize = 39usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; for v in & mut __struct . q { let val = buf . get_f32_le () ; * v = val ; } __struct . body_roll_rate = buf . get_f32_le () ; __struct . body_pitch_rate = buf . get_f32_le () ; __struct . body_yaw_rate = buf . get_f32_le () ; __struct . thrust = buf . get_f32_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . type_mask = AttitudeTargetTypemask :: from_bits (tmp & AttitudeTargetTypemask :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "AttitudeTargetTypemask" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; for val in & self . q { __tmp . put_f32_le (* val) ; } __tmp . put_f32_le (self . body_roll_rate) ; __tmp . put_f32_le (self . body_pitch_rate) ; __tmp . put_f32_le (self . body_yaw_rate) ; __tmp . put_f32_le (self . thrust) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . type_mask . bits ()) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MANUAL_CONTROL_DATA { pub x : i16 , pub y : i16 , pub z : i16 , pub r : i16 , pub buttons : u16 , pub target : u8 , } impl MANUAL_CONTROL_DATA { pub const ENCODED_LEN : usize = 11usize ; pub const DEFAULT : Self = Self { x : 0_i16 , y : 0_i16 , z : 0_i16 , r : 0_i16 , buttons : 0_u16 , target : 0_u8 , } ; } impl Default for MANUAL_CONTROL_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MANUAL_CONTROL_DATA { type Message = MavMessage ; const ID : u32 = 69u32 ; const NAME : & 'static str = "MANUAL_CONTROL" ; const EXTRA_CRC : u8 = 243u8 ; const ENCODED_LEN : usize = 11usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . x = buf . get_i16_le () ; __struct . y = buf . get_i16_le () ; __struct . z = buf . get_i16_le () ; __struct . r = buf . get_i16_le () ; __struct . buttons = buf . get_u16_le () ; __struct . target = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i16_le (self . x) ; __tmp . put_i16_le (self . y) ; __tmp . put_i16_le (self . z) ; __tmp . put_i16_le (self . r) ; __tmp . put_u16_le (self . buttons) ; __tmp . put_u8 (self . target) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct RALLY_FETCH_POINT_DATA { pub target_system : u8 , pub target_component : u8 , pub idx : u8 , } impl RALLY_FETCH_POINT_DATA { pub const ENCODED_LEN : usize = 3usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , idx : 0_u8 , } ; } impl Default for RALLY_FETCH_POINT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for RALLY_FETCH_POINT_DATA { type Message = MavMessage ; const ID : u32 = 176u32 ; const NAME : & 'static str = "RALLY_FETCH_POINT" ; const EXTRA_CRC : u8 = 234u8 ; const ENCODED_LEN : usize = 3usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . idx = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . idx) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct VISION_POSITION_ESTIMATE_DATA { pub usec : u64 , pub x : f32 , pub y : f32 , pub z : f32 , pub roll : f32 , pub pitch : f32 , pub yaw : f32 , } impl VISION_POSITION_ESTIMATE_DATA { pub const ENCODED_LEN : usize = 32usize ; pub const DEFAULT : Self = Self { usec : 0_u64 , x : 0.0_f32 , y : 0.0_f32 , z : 0.0_f32 , roll : 0.0_f32 , pitch : 0.0_f32 , yaw : 0.0_f32 , } ; } impl Default for VISION_POSITION_ESTIMATE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for VISION_POSITION_ESTIMATE_DATA { type Message = MavMessage ; const ID : u32 = 102u32 ; const NAME : & 'static str = "VISION_POSITION_ESTIMATE" ; const EXTRA_CRC : u8 = 158u8 ; const ENCODED_LEN : usize = 32usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . usec = buf . get_u64_le () ; __struct . x = buf . get_f32_le () ; __struct . y = buf . get_f32_le () ; __struct . z = buf . get_f32_le () ; __struct . roll = buf . get_f32_le () ; __struct . pitch = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . usec) ; __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; __tmp . put_f32_le (self . roll) ; __tmp . put_f32_le (self . pitch) ; __tmp . put_f32_le (self . yaw) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct RALLY_POINT_DATA { pub lat : i32 , pub lng : i32 , pub alt : i16 , pub break_alt : i16 , pub land_dir : u16 , pub target_system : u8 , pub target_component : u8 , pub idx : u8 , pub count : u8 , pub flags : RallyFlags , } impl RALLY_POINT_DATA { pub const ENCODED_LEN : usize = 19usize ; pub const DEFAULT : Self = Self { lat : 0_i32 , lng : 0_i32 , alt : 0_i16 , break_alt : 0_i16 , land_dir : 0_u16 , target_system : 0_u8 , target_component : 0_u8 , idx : 0_u8 , count : 0_u8 , flags : RallyFlags :: DEFAULT , } ; } impl Default for RALLY_POINT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for RALLY_POINT_DATA { type Message = MavMessage ; const ID : u32 = 175u32 ; const NAME : & 'static str = "RALLY_POINT" ; const EXTRA_CRC : u8 = 138u8 ; const ENCODED_LEN : usize = 19usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . lat = buf . get_i32_le () ; __struct . lng = buf . get_i32_le () ; __struct . alt = buf . get_i16_le () ; __struct . break_alt = buf . get_i16_le () ; __struct . land_dir = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . idx = buf . get_u8 () ; __struct . count = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . flags = RallyFlags :: from_bits (tmp & RallyFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "RallyFlags" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lng) ; __tmp . put_i16_le (self . alt) ; __tmp . put_i16_le (self . break_alt) ; __tmp . put_u16_le (self . land_dir) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . idx) ; __tmp . put_u8 (self . count) ; __tmp . put_u8 (self . flags . bits ()) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct VIDEO_STREAM_INFORMATION_DATA { pub framerate : f32 , pub bitrate : u32 , pub flags : VideoStreamStatusFlags , pub resolution_h : u16 , pub resolution_v : u16 , pub rotation : u16 , pub hfov : u16 , pub stream_id : u8 , pub count : u8 , pub mavtype : VideoStreamType , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub name : [u8 ; 32] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub uri : [u8 ; 160] , } impl VIDEO_STREAM_INFORMATION_DATA { pub const ENCODED_LEN : usize = 213usize ; pub const DEFAULT : Self = Self { framerate : 0.0_f32 , bitrate : 0_u32 , flags : VideoStreamStatusFlags :: DEFAULT , resolution_h : 0_u16 , resolution_v : 0_u16 , rotation : 0_u16 , hfov : 0_u16 , stream_id : 0_u8 , count : 0_u8 , mavtype : VideoStreamType :: DEFAULT , name : [0_u8 ; 32usize] , uri : [0_u8 ; 160usize] , } ; } impl Default for VIDEO_STREAM_INFORMATION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for VIDEO_STREAM_INFORMATION_DATA { type Message = MavMessage ; const ID : u32 = 269u32 ; const NAME : & 'static str = "VIDEO_STREAM_INFORMATION" ; const EXTRA_CRC : u8 = 109u8 ; const ENCODED_LEN : usize = 213usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . framerate = buf . get_f32_le () ; __struct . bitrate = buf . get_u32_le () ; let tmp = buf . get_u16_le () ; __struct . flags = FromPrimitive :: from_u16 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "VideoStreamStatusFlags" , value : tmp as u32 }) ? ; __struct . resolution_h = buf . get_u16_le () ; __struct . resolution_v = buf . get_u16_le () ; __struct . rotation = buf . get_u16_le () ; __struct . hfov = buf . get_u16_le () ; __struct . stream_id = buf . get_u8 () ; __struct . count = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . mavtype = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "VideoStreamType" , value : tmp as u32 }) ? ; for v in & mut __struct . name { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . uri { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . framerate) ; __tmp . put_u32_le (self . bitrate) ; __tmp . put_u16_le (self . flags as u16) ; __tmp . put_u16_le (self . resolution_h) ; __tmp . put_u16_le (self . resolution_v) ; __tmp . put_u16_le (self . rotation) ; __tmp . put_u16_le (self . hfov) ; __tmp . put_u8 (self . stream_id) ; __tmp . put_u8 (self . count) ; __tmp . put_u8 (self . mavtype as u8) ; for val in & self . name { __tmp . put_u8 (* val) ; } for val in & self . uri { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct OPEN_DRONE_ID_BASIC_ID_DATA { pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub id_or_mac : [u8 ; 20] , pub id_type : MavOdidIdType , pub ua_type : MavOdidUaType , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub uas_id : [u8 ; 20] , } impl OPEN_DRONE_ID_BASIC_ID_DATA { pub const ENCODED_LEN : usize = 44usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , id_or_mac : [0_u8 ; 20usize] , id_type : MavOdidIdType :: DEFAULT , ua_type : MavOdidUaType :: DEFAULT , uas_id : [0_u8 ; 20usize] , } ; } impl Default for OPEN_DRONE_ID_BASIC_ID_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for OPEN_DRONE_ID_BASIC_ID_DATA { type Message = MavMessage ; const ID : u32 = 12900u32 ; const NAME : & 'static str = "OPEN_DRONE_ID_BASIC_ID" ; const EXTRA_CRC : u8 = 114u8 ; const ENCODED_LEN : usize = 44usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . id_or_mac { let val = buf . get_u8 () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . id_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidIdType" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . ua_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidUaType" , value : tmp as u32 }) ? ; for v in & mut __struct . uas_id { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . id_or_mac { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . id_type as u8) ; __tmp . put_u8 (self . ua_type as u8) ; for val in & self . uas_id { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ENCAPSULATED_DATA_DATA { pub seqnr : u16 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub data : [u8 ; 253] , } impl ENCAPSULATED_DATA_DATA { pub const ENCODED_LEN : usize = 255usize ; pub const DEFAULT : Self = Self { seqnr : 0_u16 , data : [0_u8 ; 253usize] , } ; } impl Default for ENCAPSULATED_DATA_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ENCAPSULATED_DATA_DATA { type Message = MavMessage ; const ID : u32 = 131u32 ; const NAME : & 'static str = "ENCAPSULATED_DATA" ; const EXTRA_CRC : u8 = 223u8 ; const ENCODED_LEN : usize = 255usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . seqnr = buf . get_u16_le () ; for v in & mut __struct . data { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . seqnr) ; for val in & self . data { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct DEVICE_OP_WRITE_REPLY_DATA { pub request_id : u32 , pub result : u8 , } impl DEVICE_OP_WRITE_REPLY_DATA { pub const ENCODED_LEN : usize = 5usize ; pub const DEFAULT : Self = Self { request_id : 0_u32 , result : 0_u8 , } ; } impl Default for DEVICE_OP_WRITE_REPLY_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for DEVICE_OP_WRITE_REPLY_DATA { type Message = MavMessage ; const ID : u32 = 11003u32 ; const NAME : & 'static str = "DEVICE_OP_WRITE_REPLY" ; const EXTRA_CRC : u8 = 64u8 ; const ENCODED_LEN : usize = 5usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . request_id = buf . get_u32_le () ; __struct . result = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . request_id) ; __tmp . put_u8 (self . result) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PING_DATA { pub time_usec : u64 , pub seq : u32 , pub target_system : u8 , pub target_component : u8 , } impl PING_DATA { pub const ENCODED_LEN : usize = 14usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , seq : 0_u32 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for PING_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for PING_DATA { type Message = MavMessage ; const ID : u32 = 4u32 ; const NAME : & 'static str = "PING" ; const EXTRA_CRC : u8 = 237u8 ; const ENCODED_LEN : usize = 14usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . seq = buf . get_u32_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_u32_le (self . seq) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SET_MAG_OFFSETS_DATA { pub mag_ofs_x : i16 , pub mag_ofs_y : i16 , pub mag_ofs_z : i16 , pub target_system : u8 , pub target_component : u8 , } impl SET_MAG_OFFSETS_DATA { pub const ENCODED_LEN : usize = 8usize ; pub const DEFAULT : Self = Self { mag_ofs_x : 0_i16 , mag_ofs_y : 0_i16 , mag_ofs_z : 0_i16 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for SET_MAG_OFFSETS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SET_MAG_OFFSETS_DATA { type Message = MavMessage ; const ID : u32 = 151u32 ; const NAME : & 'static str = "SET_MAG_OFFSETS" ; const EXTRA_CRC : u8 = 219u8 ; const ENCODED_LEN : usize = 8usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . mag_ofs_x = buf . get_i16_le () ; __struct . mag_ofs_y = buf . get_i16_le () ; __struct . mag_ofs_z = buf . get_i16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i16_le (self . mag_ofs_x) ; __tmp . put_i16_le (self . mag_ofs_y) ; __tmp . put_i16_le (self . mag_ofs_z) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GPS_INPUT_DATA { pub time_usec : u64 , pub time_week_ms : u32 , pub lat : i32 , pub lon : i32 , pub alt : f32 , pub hdop : f32 , pub vdop : f32 , pub vn : f32 , pub ve : f32 , pub vd : f32 , pub speed_accuracy : f32 , pub horiz_accuracy : f32 , pub vert_accuracy : f32 , pub ignore_flags : GpsInputIgnoreFlags , pub time_week : u16 , pub gps_id : u8 , pub fix_type : u8 , pub satellites_visible : u8 , } impl GPS_INPUT_DATA { pub const ENCODED_LEN : usize = 63usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , time_week_ms : 0_u32 , lat : 0_i32 , lon : 0_i32 , alt : 0.0_f32 , hdop : 0.0_f32 , vdop : 0.0_f32 , vn : 0.0_f32 , ve : 0.0_f32 , vd : 0.0_f32 , speed_accuracy : 0.0_f32 , horiz_accuracy : 0.0_f32 , vert_accuracy : 0.0_f32 , ignore_flags : GpsInputIgnoreFlags :: DEFAULT , time_week : 0_u16 , gps_id : 0_u8 , fix_type : 0_u8 , satellites_visible : 0_u8 , } ; } impl Default for GPS_INPUT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GPS_INPUT_DATA { type Message = MavMessage ; const ID : u32 = 232u32 ; const NAME : & 'static str = "GPS_INPUT" ; const EXTRA_CRC : u8 = 151u8 ; const ENCODED_LEN : usize = 63usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . time_week_ms = buf . get_u32_le () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . alt = buf . get_f32_le () ; __struct . hdop = buf . get_f32_le () ; __struct . vdop = buf . get_f32_le () ; __struct . vn = buf . get_f32_le () ; __struct . ve = buf . get_f32_le () ; __struct . vd = buf . get_f32_le () ; __struct . speed_accuracy = buf . get_f32_le () ; __struct . horiz_accuracy = buf . get_f32_le () ; __struct . vert_accuracy = buf . get_f32_le () ; let tmp = buf . get_u16_le () ; __struct . ignore_flags = GpsInputIgnoreFlags :: from_bits (tmp & GpsInputIgnoreFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "GpsInputIgnoreFlags" , value : tmp as u32 }) ? ; __struct . time_week = buf . get_u16_le () ; __struct . gps_id = buf . get_u8 () ; __struct . fix_type = buf . get_u8 () ; __struct . satellites_visible = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_u32_le (self . time_week_ms) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_f32_le (self . alt) ; __tmp . put_f32_le (self . hdop) ; __tmp . put_f32_le (self . vdop) ; __tmp . put_f32_le (self . vn) ; __tmp . put_f32_le (self . ve) ; __tmp . put_f32_le (self . vd) ; __tmp . put_f32_le (self . speed_accuracy) ; __tmp . put_f32_le (self . horiz_accuracy) ; __tmp . put_f32_le (self . vert_accuracy) ; __tmp . put_u16_le (self . ignore_flags . bits ()) ; __tmp . put_u16_le (self . time_week) ; __tmp . put_u8 (self . gps_id) ; __tmp . put_u8 (self . fix_type) ; __tmp . put_u8 (self . satellites_visible) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LOG_ENTRY_DATA { pub time_utc : u32 , pub size : u32 , pub id : u16 , pub num_logs : u16 , pub last_log_num : u16 , } impl LOG_ENTRY_DATA { pub const ENCODED_LEN : usize = 14usize ; pub const DEFAULT : Self = Self { time_utc : 0_u32 , size : 0_u32 , id : 0_u16 , num_logs : 0_u16 , last_log_num : 0_u16 , } ; } impl Default for LOG_ENTRY_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for LOG_ENTRY_DATA { type Message = MavMessage ; const ID : u32 = 118u32 ; const NAME : & 'static str = "LOG_ENTRY" ; const EXTRA_CRC : u8 = 56u8 ; const ENCODED_LEN : usize = 14usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_utc = buf . get_u32_le () ; __struct . size = buf . get_u32_le () ; __struct . id = buf . get_u16_le () ; __struct . num_logs = buf . get_u16_le () ; __struct . last_log_num = buf . get_u16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_utc) ; __tmp . put_u32_le (self . size) ; __tmp . put_u16_le (self . id) ; __tmp . put_u16_le (self . num_logs) ; __tmp . put_u16_le (self . last_log_num) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct RAW_IMU_DATA { pub time_usec : u64 , pub xacc : i16 , pub yacc : i16 , pub zacc : i16 , pub xgyro : i16 , pub ygyro : i16 , pub zgyro : i16 , pub xmag : i16 , pub ymag : i16 , pub zmag : i16 , } impl RAW_IMU_DATA { pub const ENCODED_LEN : usize = 26usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , xacc : 0_i16 , yacc : 0_i16 , zacc : 0_i16 , xgyro : 0_i16 , ygyro : 0_i16 , zgyro : 0_i16 , xmag : 0_i16 , ymag : 0_i16 , zmag : 0_i16 , } ; } impl Default for RAW_IMU_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for RAW_IMU_DATA { type Message = MavMessage ; const ID : u32 = 27u32 ; const NAME : & 'static str = "RAW_IMU" ; const EXTRA_CRC : u8 = 144u8 ; const ENCODED_LEN : usize = 26usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . xacc = buf . get_i16_le () ; __struct . yacc = buf . get_i16_le () ; __struct . zacc = buf . get_i16_le () ; __struct . xgyro = buf . get_i16_le () ; __struct . ygyro = buf . get_i16_le () ; __struct . zgyro = buf . get_i16_le () ; __struct . xmag = buf . get_i16_le () ; __struct . ymag = buf . get_i16_le () ; __struct . zmag = buf . get_i16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_i16_le (self . xacc) ; __tmp . put_i16_le (self . yacc) ; __tmp . put_i16_le (self . zacc) ; __tmp . put_i16_le (self . xgyro) ; __tmp . put_i16_le (self . ygyro) ; __tmp . put_i16_le (self . zgyro) ; __tmp . put_i16_le (self . xmag) ; __tmp . put_i16_le (self . ymag) ; __tmp . put_i16_le (self . zmag) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GPS_RAW_INT_DATA { pub time_usec : u64 , pub lat : i32 , pub lon : i32 , pub alt : i32 , pub eph : u16 , pub epv : u16 , pub vel : u16 , pub cog : u16 , pub fix_type : GpsFixType , pub satellites_visible : u8 , } impl GPS_RAW_INT_DATA { pub const ENCODED_LEN : usize = 30usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , lat : 0_i32 , lon : 0_i32 , alt : 0_i32 , eph : 0_u16 , epv : 0_u16 , vel : 0_u16 , cog : 0_u16 , fix_type : GpsFixType :: DEFAULT , satellites_visible : 0_u8 , } ; } impl Default for GPS_RAW_INT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GPS_RAW_INT_DATA { type Message = MavMessage ; const ID : u32 = 24u32 ; const NAME : & 'static str = "GPS_RAW_INT" ; const EXTRA_CRC : u8 = 24u8 ; const ENCODED_LEN : usize = 30usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . alt = buf . get_i32_le () ; __struct . eph = buf . get_u16_le () ; __struct . epv = buf . get_u16_le () ; __struct . vel = buf . get_u16_le () ; __struct . cog = buf . get_u16_le () ; let tmp = buf . get_u8 () ; __struct . fix_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "GpsFixType" , value : tmp as u32 }) ? ; __struct . satellites_visible = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_i32_le (self . alt) ; __tmp . put_u16_le (self . eph) ; __tmp . put_u16_le (self . epv) ; __tmp . put_u16_le (self . vel) ; __tmp . put_u16_le (self . cog) ; __tmp . put_u8 (self . fix_type as u8) ; __tmp . put_u8 (self . satellites_visible) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CONTROL_SYSTEM_STATE_DATA { pub time_usec : u64 , pub x_acc : f32 , pub y_acc : f32 , pub z_acc : f32 , pub x_vel : f32 , pub y_vel : f32 , pub z_vel : f32 , pub x_pos : f32 , pub y_pos : f32 , pub z_pos : f32 , pub airspeed : f32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub vel_variance : [f32 ; 3] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub pos_variance : [f32 ; 3] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub q : [f32 ; 4] , pub roll_rate : f32 , pub pitch_rate : f32 , pub yaw_rate : f32 , } impl CONTROL_SYSTEM_STATE_DATA { pub const ENCODED_LEN : usize = 100usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , x_acc : 0.0_f32 , y_acc : 0.0_f32 , z_acc : 0.0_f32 , x_vel : 0.0_f32 , y_vel : 0.0_f32 , z_vel : 0.0_f32 , x_pos : 0.0_f32 , y_pos : 0.0_f32 , z_pos : 0.0_f32 , airspeed : 0.0_f32 , vel_variance : [0.0_f32 ; 3usize] , pos_variance : [0.0_f32 ; 3usize] , q : [0.0_f32 ; 4usize] , roll_rate : 0.0_f32 , pitch_rate : 0.0_f32 , yaw_rate : 0.0_f32 , } ; } impl Default for CONTROL_SYSTEM_STATE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CONTROL_SYSTEM_STATE_DATA { type Message = MavMessage ; const ID : u32 = 146u32 ; const NAME : & 'static str = "CONTROL_SYSTEM_STATE" ; const EXTRA_CRC : u8 = 103u8 ; const ENCODED_LEN : usize = 100usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . x_acc = buf . get_f32_le () ; __struct . y_acc = buf . get_f32_le () ; __struct . z_acc = buf . get_f32_le () ; __struct . x_vel = buf . get_f32_le () ; __struct . y_vel = buf . get_f32_le () ; __struct . z_vel = buf . get_f32_le () ; __struct . x_pos = buf . get_f32_le () ; __struct . y_pos = buf . get_f32_le () ; __struct . z_pos = buf . get_f32_le () ; __struct . airspeed = buf . get_f32_le () ; for v in & mut __struct . vel_variance { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . pos_variance { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . q { let val = buf . get_f32_le () ; * v = val ; } __struct . roll_rate = buf . get_f32_le () ; __struct . pitch_rate = buf . get_f32_le () ; __struct . yaw_rate = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . x_acc) ; __tmp . put_f32_le (self . y_acc) ; __tmp . put_f32_le (self . z_acc) ; __tmp . put_f32_le (self . x_vel) ; __tmp . put_f32_le (self . y_vel) ; __tmp . put_f32_le (self . z_vel) ; __tmp . put_f32_le (self . x_pos) ; __tmp . put_f32_le (self . y_pos) ; __tmp . put_f32_le (self . z_pos) ; __tmp . put_f32_le (self . airspeed) ; for val in & self . vel_variance { __tmp . put_f32_le (* val) ; } for val in & self . pos_variance { __tmp . put_f32_le (* val) ; } for val in & self . q { __tmp . put_f32_le (* val) ; } __tmp . put_f32_le (self . roll_rate) ; __tmp . put_f32_le (self . pitch_rate) ; __tmp . put_f32_le (self . yaw_rate) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct DEBUG_DATA { pub time_boot_ms : u32 , pub value : f32 , pub ind : u8 , } impl DEBUG_DATA { pub const ENCODED_LEN : usize = 9usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , value : 0.0_f32 , ind : 0_u8 , } ; } impl Default for DEBUG_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for DEBUG_DATA { type Message = MavMessage ; const ID : u32 = 254u32 ; const NAME : & 'static str = "DEBUG" ; const EXTRA_CRC : u8 = 46u8 ; const ENCODED_LEN : usize = 9usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . value = buf . get_f32_le () ; __struct . ind = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . value) ; __tmp . put_u8 (self . ind) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ESC_TELEMETRY_1_TO_4_DATA { # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub voltage : [u16 ; 4] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub current : [u16 ; 4] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub totalcurrent : [u16 ; 4] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub rpm : [u16 ; 4] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub count : [u16 ; 4] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub temperature : [u8 ; 4] , } impl ESC_TELEMETRY_1_TO_4_DATA { pub const ENCODED_LEN : usize = 44usize ; pub const DEFAULT : Self = Self { voltage : [0_u16 ; 4usize] , current : [0_u16 ; 4usize] , totalcurrent : [0_u16 ; 4usize] , rpm : [0_u16 ; 4usize] , count : [0_u16 ; 4usize] , temperature : [0_u8 ; 4usize] , } ; } impl Default for ESC_TELEMETRY_1_TO_4_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ESC_TELEMETRY_1_TO_4_DATA { type Message = MavMessage ; const ID : u32 = 11030u32 ; const NAME : & 'static str = "ESC_TELEMETRY_1_TO_4" ; const EXTRA_CRC : u8 = 144u8 ; const ENCODED_LEN : usize = 44usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; for v in & mut __struct . voltage { let val = buf . get_u16_le () ; * v = val ; } for v in & mut __struct . current { let val = buf . get_u16_le () ; * v = val ; } for v in & mut __struct . totalcurrent { let val = buf . get_u16_le () ; * v = val ; } for v in & mut __struct . rpm { let val = buf . get_u16_le () ; * v = val ; } for v in & mut __struct . count { let val = buf . get_u16_le () ; * v = val ; } for v in & mut __struct . temperature { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; for val in & self . voltage { __tmp . put_u16_le (* val) ; } for val in & self . current { __tmp . put_u16_le (* val) ; } for val in & self . totalcurrent { __tmp . put_u16_le (* val) ; } for val in & self . rpm { __tmp . put_u16_le (* val) ; } for val in & self . count { __tmp . put_u16_le (* val) ; } for val in & self . temperature { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MOUNT_CONTROL_DATA { pub input_a : i32 , pub input_b : i32 , pub input_c : i32 , pub target_system : u8 , pub target_component : u8 , pub save_position : u8 , } impl MOUNT_CONTROL_DATA { pub const ENCODED_LEN : usize = 15usize ; pub const DEFAULT : Self = Self { input_a : 0_i32 , input_b : 0_i32 , input_c : 0_i32 , target_system : 0_u8 , target_component : 0_u8 , save_position : 0_u8 , } ; } impl Default for MOUNT_CONTROL_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MOUNT_CONTROL_DATA { type Message = MavMessage ; const ID : u32 = 157u32 ; const NAME : & 'static str = "MOUNT_CONTROL" ; const EXTRA_CRC : u8 = 21u8 ; const ENCODED_LEN : usize = 15usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . input_a = buf . get_i32_le () ; __struct . input_b = buf . get_i32_le () ; __struct . input_c = buf . get_i32_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . save_position = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . input_a) ; __tmp . put_i32_le (self . input_b) ; __tmp . put_i32_le (self . input_c) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . save_position) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct COMPONENT_METADATA_DATA { pub time_boot_ms : u32 , pub file_crc : u32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub uri : [u8 ; 100] , } impl COMPONENT_METADATA_DATA { pub const ENCODED_LEN : usize = 108usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , file_crc : 0_u32 , uri : [0_u8 ; 100usize] , } ; } impl Default for COMPONENT_METADATA_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for COMPONENT_METADATA_DATA { type Message = MavMessage ; const ID : u32 = 397u32 ; const NAME : & 'static str = "COMPONENT_METADATA" ; const EXTRA_CRC : u8 = 182u8 ; const ENCODED_LEN : usize = 108usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . file_crc = buf . get_u32_le () ; for v in & mut __struct . uri { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_u32_le (self . file_crc) ; for val in & self . uri { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct NAMED_VALUE_FLOAT_DATA { pub time_boot_ms : u32 , pub value : f32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub name : [u8 ; 10] , } impl NAMED_VALUE_FLOAT_DATA { pub const ENCODED_LEN : usize = 18usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , value : 0.0_f32 , name : [0_u8 ; 10usize] , } ; } impl Default for NAMED_VALUE_FLOAT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for NAMED_VALUE_FLOAT_DATA { type Message = MavMessage ; const ID : u32 = 251u32 ; const NAME : & 'static str = "NAMED_VALUE_FLOAT" ; const EXTRA_CRC : u8 = 170u8 ; const ENCODED_LEN : usize = 18usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . value = buf . get_f32_le () ; for v in & mut __struct . name { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . value) ; for val in & self . name { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GPS2_RTK_DATA { pub time_last_baseline_ms : u32 , pub tow : u32 , pub baseline_a_mm : i32 , pub baseline_b_mm : i32 , pub baseline_c_mm : i32 , pub accuracy : u32 , pub iar_num_hypotheses : i32 , pub wn : u16 , pub rtk_receiver_id : u8 , pub rtk_health : u8 , pub rtk_rate : u8 , pub nsats : u8 , pub baseline_coords_type : RtkBaselineCoordinateSystem , } impl GPS2_RTK_DATA { pub const ENCODED_LEN : usize = 35usize ; pub const DEFAULT : Self = Self { time_last_baseline_ms : 0_u32 , tow : 0_u32 , baseline_a_mm : 0_i32 , baseline_b_mm : 0_i32 , baseline_c_mm : 0_i32 , accuracy : 0_u32 , iar_num_hypotheses : 0_i32 , wn : 0_u16 , rtk_receiver_id : 0_u8 , rtk_health : 0_u8 , rtk_rate : 0_u8 , nsats : 0_u8 , baseline_coords_type : RtkBaselineCoordinateSystem :: DEFAULT , } ; } impl Default for GPS2_RTK_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GPS2_RTK_DATA { type Message = MavMessage ; const ID : u32 = 128u32 ; const NAME : & 'static str = "GPS2_RTK" ; const EXTRA_CRC : u8 = 226u8 ; const ENCODED_LEN : usize = 35usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_last_baseline_ms = buf . get_u32_le () ; __struct . tow = buf . get_u32_le () ; __struct . baseline_a_mm = buf . get_i32_le () ; __struct . baseline_b_mm = buf . get_i32_le () ; __struct . baseline_c_mm = buf . get_i32_le () ; __struct . accuracy = buf . get_u32_le () ; __struct . iar_num_hypotheses = buf . get_i32_le () ; __struct . wn = buf . get_u16_le () ; __struct . rtk_receiver_id = buf . get_u8 () ; __struct . rtk_health = buf . get_u8 () ; __struct . rtk_rate = buf . get_u8 () ; __struct . nsats = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . baseline_coords_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "RtkBaselineCoordinateSystem" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_last_baseline_ms) ; __tmp . put_u32_le (self . tow) ; __tmp . put_i32_le (self . baseline_a_mm) ; __tmp . put_i32_le (self . baseline_b_mm) ; __tmp . put_i32_le (self . baseline_c_mm) ; __tmp . put_u32_le (self . accuracy) ; __tmp . put_i32_le (self . iar_num_hypotheses) ; __tmp . put_u16_le (self . wn) ; __tmp . put_u8 (self . rtk_receiver_id) ; __tmp . put_u8 (self . rtk_health) ; __tmp . put_u8 (self . rtk_rate) ; __tmp . put_u8 (self . nsats) ; __tmp . put_u8 (self . baseline_coords_type as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct VIBRATION_DATA { pub time_usec : u64 , pub vibration_x : f32 , pub vibration_y : f32 , pub vibration_z : f32 , pub clipping_0 : u32 , pub clipping_1 : u32 , pub clipping_2 : u32 , } impl VIBRATION_DATA { pub const ENCODED_LEN : usize = 32usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , vibration_x : 0.0_f32 , vibration_y : 0.0_f32 , vibration_z : 0.0_f32 , clipping_0 : 0_u32 , clipping_1 : 0_u32 , clipping_2 : 0_u32 , } ; } impl Default for VIBRATION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for VIBRATION_DATA { type Message = MavMessage ; const ID : u32 = 241u32 ; const NAME : & 'static str = "VIBRATION" ; const EXTRA_CRC : u8 = 90u8 ; const ENCODED_LEN : usize = 32usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . vibration_x = buf . get_f32_le () ; __struct . vibration_y = buf . get_f32_le () ; __struct . vibration_z = buf . get_f32_le () ; __struct . clipping_0 = buf . get_u32_le () ; __struct . clipping_1 = buf . get_u32_le () ; __struct . clipping_2 = buf . get_u32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . vibration_x) ; __tmp . put_f32_le (self . vibration_y) ; __tmp . put_f32_le (self . vibration_z) ; __tmp . put_u32_le (self . clipping_0) ; __tmp . put_u32_le (self . clipping_1) ; __tmp . put_u32_le (self . clipping_2) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MISSION_CURRENT_DATA { pub seq : u16 , } impl MISSION_CURRENT_DATA { pub const ENCODED_LEN : usize = 2usize ; pub const DEFAULT : Self = Self { seq : 0_u16 , } ; } impl Default for MISSION_CURRENT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MISSION_CURRENT_DATA { type Message = MavMessage ; const ID : u32 = 42u32 ; const NAME : & 'static str = "MISSION_CURRENT" ; const EXTRA_CRC : u8 = 28u8 ; const ENCODED_LEN : usize = 2usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . seq = buf . get_u16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . seq) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HERELINK_TELEM_DATA { } impl HERELINK_TELEM_DATA { pub const ENCODED_LEN : usize = 0usize ; pub const DEFAULT : Self = Self { } ; } impl Default for HERELINK_TELEM_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for HERELINK_TELEM_DATA { type Message = MavMessage ; const ID : u32 = 50003u32 ; const NAME : & 'static str = "HERELINK_TELEM" ; const EXTRA_CRC : u8 = 53u8 ; const ENCODED_LEN : usize = 0usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { Ok (Self :: default ()) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PARAM_EXT_ACK_DATA { # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub param_id : [u8 ; 16] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub param_value : [u8 ; 128] , pub param_type : MavParamExtType , pub param_result : ParamAck , } impl PARAM_EXT_ACK_DATA { pub const ENCODED_LEN : usize = 146usize ; pub const DEFAULT : Self = Self { param_id : [0_u8 ; 16usize] , param_value : [0_u8 ; 128usize] , param_type : MavParamExtType :: DEFAULT , param_result : ParamAck :: DEFAULT , } ; } impl Default for PARAM_EXT_ACK_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for PARAM_EXT_ACK_DATA { type Message = MavMessage ; const ID : u32 = 324u32 ; const NAME : & 'static str = "PARAM_EXT_ACK" ; const EXTRA_CRC : u8 = 132u8 ; const ENCODED_LEN : usize = 146usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; for v in & mut __struct . param_id { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . param_value { let val = buf . get_u8 () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . param_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavParamExtType" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . param_result = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "ParamAck" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; for val in & self . param_id { __tmp . put_u8 (* val) ; } for val in & self . param_value { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . param_type as u8) ; __tmp . put_u8 (self . param_result as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MISSION_REQUEST_DATA { pub seq : u16 , pub target_system : u8 , pub target_component : u8 , } impl MISSION_REQUEST_DATA { pub const ENCODED_LEN : usize = 4usize ; pub const DEFAULT : Self = Self { seq : 0_u16 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for MISSION_REQUEST_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MISSION_REQUEST_DATA { type Message = MavMessage ; const ID : u32 = 40u32 ; const NAME : & 'static str = "MISSION_REQUEST" ; const EXTRA_CRC : u8 = 230u8 ; const ENCODED_LEN : usize = 4usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . seq = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . seq) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MEMINFO_DATA { pub brkval : u16 , pub freemem : u16 , } impl MEMINFO_DATA { pub const ENCODED_LEN : usize = 4usize ; pub const DEFAULT : Self = Self { brkval : 0_u16 , freemem : 0_u16 , } ; } impl Default for MEMINFO_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MEMINFO_DATA { type Message = MavMessage ; const ID : u32 = 152u32 ; const NAME : & 'static str = "MEMINFO" ; const EXTRA_CRC : u8 = 208u8 ; const ENCODED_LEN : usize = 4usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . brkval = buf . get_u16_le () ; __struct . freemem = buf . get_u16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . brkval) ; __tmp . put_u16_le (self . freemem) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LED_CONTROL_DATA { pub target_system : u8 , pub target_component : u8 , pub instance : u8 , pub pattern : u8 , pub custom_len : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub custom_bytes : [u8 ; 24] , } impl LED_CONTROL_DATA { pub const ENCODED_LEN : usize = 29usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , instance : 0_u8 , pattern : 0_u8 , custom_len : 0_u8 , custom_bytes : [0_u8 ; 24usize] , } ; } impl Default for LED_CONTROL_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for LED_CONTROL_DATA { type Message = MavMessage ; const ID : u32 = 186u32 ; const NAME : & 'static str = "LED_CONTROL" ; const EXTRA_CRC : u8 = 72u8 ; const ENCODED_LEN : usize = 29usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . instance = buf . get_u8 () ; __struct . pattern = buf . get_u8 () ; __struct . custom_len = buf . get_u8 () ; for v in & mut __struct . custom_bytes { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . instance) ; __tmp . put_u8 (self . pattern) ; __tmp . put_u8 (self . custom_len) ; for val in & self . custom_bytes { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MISSION_ITEM_DATA { pub param1 : f32 , pub param2 : f32 , pub param3 : f32 , pub param4 : f32 , pub x : f32 , pub y : f32 , pub z : f32 , pub seq : u16 , pub command : MavCmd , pub target_system : u8 , pub target_component : u8 , pub frame : MavFrame , pub current : u8 , pub autocontinue : u8 , } impl MISSION_ITEM_DATA { pub const ENCODED_LEN : usize = 37usize ; pub const DEFAULT : Self = Self { param1 : 0.0_f32 , param2 : 0.0_f32 , param3 : 0.0_f32 , param4 : 0.0_f32 , x : 0.0_f32 , y : 0.0_f32 , z : 0.0_f32 , seq : 0_u16 , command : MavCmd :: DEFAULT , target_system : 0_u8 , target_component : 0_u8 , frame : MavFrame :: DEFAULT , current : 0_u8 , autocontinue : 0_u8 , } ; } impl Default for MISSION_ITEM_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MISSION_ITEM_DATA { type Message = MavMessage ; const ID : u32 = 39u32 ; const NAME : & 'static str = "MISSION_ITEM" ; const EXTRA_CRC : u8 = 254u8 ; const ENCODED_LEN : usize = 37usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . param1 = buf . get_f32_le () ; __struct . param2 = buf . get_f32_le () ; __struct . param3 = buf . get_f32_le () ; __struct . param4 = buf . get_f32_le () ; __struct . x = buf . get_f32_le () ; __struct . y = buf . get_f32_le () ; __struct . z = buf . get_f32_le () ; __struct . seq = buf . get_u16_le () ; let tmp = buf . get_u16_le () ; __struct . command = FromPrimitive :: from_u16 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavCmd" , value : tmp as u32 }) ? ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . frame = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavFrame" , value : tmp as u32 }) ? ; __struct . current = buf . get_u8 () ; __struct . autocontinue = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . param1) ; __tmp . put_f32_le (self . param2) ; __tmp . put_f32_le (self . param3) ; __tmp . put_f32_le (self . param4) ; __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; __tmp . put_u16_le (self . seq) ; __tmp . put_u16_le (self . command as u16) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . frame as u8) ; __tmp . put_u8 (self . current) ; __tmp . put_u8 (self . autocontinue) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GPS_RTCM_DATA_DATA { pub flags : u8 , pub len : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub data : [u8 ; 180] , } impl GPS_RTCM_DATA_DATA { pub const ENCODED_LEN : usize = 182usize ; pub const DEFAULT : Self = Self { flags : 0_u8 , len : 0_u8 , data : [0_u8 ; 180usize] , } ; } impl Default for GPS_RTCM_DATA_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GPS_RTCM_DATA_DATA { type Message = MavMessage ; const ID : u32 = 233u32 ; const NAME : & 'static str = "GPS_RTCM_DATA" ; const EXTRA_CRC : u8 = 35u8 ; const ENCODED_LEN : usize = 182usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . flags = buf . get_u8 () ; __struct . len = buf . get_u8 () ; for v in & mut __struct . data { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . flags) ; __tmp . put_u8 (self . len) ; for val in & self . data { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct OPTICAL_FLOW_RAD_DATA { pub time_usec : u64 , pub integration_time_us : u32 , pub integrated_x : f32 , pub integrated_y : f32 , pub integrated_xgyro : f32 , pub integrated_ygyro : f32 , pub integrated_zgyro : f32 , pub time_delta_distance_us : u32 , pub distance : f32 , pub temperature : i16 , pub sensor_id : u8 , pub quality : u8 , } impl OPTICAL_FLOW_RAD_DATA { pub const ENCODED_LEN : usize = 44usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , integration_time_us : 0_u32 , integrated_x : 0.0_f32 , integrated_y : 0.0_f32 , integrated_xgyro : 0.0_f32 , integrated_ygyro : 0.0_f32 , integrated_zgyro : 0.0_f32 , time_delta_distance_us : 0_u32 , distance : 0.0_f32 , temperature : 0_i16 , sensor_id : 0_u8 , quality : 0_u8 , } ; } impl Default for OPTICAL_FLOW_RAD_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for OPTICAL_FLOW_RAD_DATA { type Message = MavMessage ; const ID : u32 = 106u32 ; const NAME : & 'static str = "OPTICAL_FLOW_RAD" ; const EXTRA_CRC : u8 = 138u8 ; const ENCODED_LEN : usize = 44usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . integration_time_us = buf . get_u32_le () ; __struct . integrated_x = buf . get_f32_le () ; __struct . integrated_y = buf . get_f32_le () ; __struct . integrated_xgyro = buf . get_f32_le () ; __struct . integrated_ygyro = buf . get_f32_le () ; __struct . integrated_zgyro = buf . get_f32_le () ; __struct . time_delta_distance_us = buf . get_u32_le () ; __struct . distance = buf . get_f32_le () ; __struct . temperature = buf . get_i16_le () ; __struct . sensor_id = buf . get_u8 () ; __struct . quality = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_u32_le (self . integration_time_us) ; __tmp . put_f32_le (self . integrated_x) ; __tmp . put_f32_le (self . integrated_y) ; __tmp . put_f32_le (self . integrated_xgyro) ; __tmp . put_f32_le (self . integrated_ygyro) ; __tmp . put_f32_le (self . integrated_zgyro) ; __tmp . put_u32_le (self . time_delta_distance_us) ; __tmp . put_f32_le (self . distance) ; __tmp . put_i16_le (self . temperature) ; __tmp . put_u8 (self . sensor_id) ; __tmp . put_u8 (self . quality) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct VISION_SPEED_ESTIMATE_DATA { pub usec : u64 , pub x : f32 , pub y : f32 , pub z : f32 , } impl VISION_SPEED_ESTIMATE_DATA { pub const ENCODED_LEN : usize = 20usize ; pub const DEFAULT : Self = Self { usec : 0_u64 , x : 0.0_f32 , y : 0.0_f32 , z : 0.0_f32 , } ; } impl Default for VISION_SPEED_ESTIMATE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for VISION_SPEED_ESTIMATE_DATA { type Message = MavMessage ; const ID : u32 = 103u32 ; const NAME : & 'static str = "VISION_SPEED_ESTIMATE" ; const EXTRA_CRC : u8 = 208u8 ; const ENCODED_LEN : usize = 20usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . usec = buf . get_u64_le () ; __struct . x = buf . get_f32_le () ; __struct . y = buf . get_f32_le () ; __struct . z = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . usec) ; __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct TERRAIN_REPORT_DATA { pub lat : i32 , pub lon : i32 , pub terrain_height : f32 , pub current_height : f32 , pub spacing : u16 , pub pending : u16 , pub loaded : u16 , } impl TERRAIN_REPORT_DATA { pub const ENCODED_LEN : usize = 22usize ; pub const DEFAULT : Self = Self { lat : 0_i32 , lon : 0_i32 , terrain_height : 0.0_f32 , current_height : 0.0_f32 , spacing : 0_u16 , pending : 0_u16 , loaded : 0_u16 , } ; } impl Default for TERRAIN_REPORT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for TERRAIN_REPORT_DATA { type Message = MavMessage ; const ID : u32 = 136u32 ; const NAME : & 'static str = "TERRAIN_REPORT" ; const EXTRA_CRC : u8 = 1u8 ; const ENCODED_LEN : usize = 22usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . terrain_height = buf . get_f32_le () ; __struct . current_height = buf . get_f32_le () ; __struct . spacing = buf . get_u16_le () ; __struct . pending = buf . get_u16_le () ; __struct . loaded = buf . get_u16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_f32_le (self . terrain_height) ; __tmp . put_f32_le (self . current_height) ; __tmp . put_u16_le (self . spacing) ; __tmp . put_u16_le (self . pending) ; __tmp . put_u16_le (self . loaded) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct V2_EXTENSION_DATA { pub message_type : u16 , pub target_network : u8 , pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub payload : [u8 ; 249] , } impl V2_EXTENSION_DATA { pub const ENCODED_LEN : usize = 254usize ; pub const DEFAULT : Self = Self { message_type : 0_u16 , target_network : 0_u8 , target_system : 0_u8 , target_component : 0_u8 , payload : [0_u8 ; 249usize] , } ; } impl Default for V2_EXTENSION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for V2_EXTENSION_DATA { type Message = MavMessage ; const ID : u32 = 248u32 ; const NAME : & 'static str = "V2_EXTENSION" ; const EXTRA_CRC : u8 = 8u8 ; const ENCODED_LEN : usize = 254usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . message_type = buf . get_u16_le () ; __struct . target_network = buf . get_u8 () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . payload { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . message_type) ; __tmp . put_u8 (self . target_network) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . payload { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CAN_FRAME_DATA { pub id : u32 , pub target_system : u8 , pub target_component : u8 , pub bus : u8 , pub len : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub data : [u8 ; 8] , } impl CAN_FRAME_DATA { pub const ENCODED_LEN : usize = 16usize ; pub const DEFAULT : Self = Self { id : 0_u32 , target_system : 0_u8 , target_component : 0_u8 , bus : 0_u8 , len : 0_u8 , data : [0_u8 ; 8usize] , } ; } impl Default for CAN_FRAME_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CAN_FRAME_DATA { type Message = MavMessage ; const ID : u32 = 386u32 ; const NAME : & 'static str = "CAN_FRAME" ; const EXTRA_CRC : u8 = 132u8 ; const ENCODED_LEN : usize = 16usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . id = buf . get_u32_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . bus = buf . get_u8 () ; __struct . len = buf . get_u8 () ; for v in & mut __struct . data { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . id) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . bus) ; __tmp . put_u8 (self . len) ; for val in & self . data { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct REQUEST_EVENT_DATA { pub first_sequence : u16 , pub last_sequence : u16 , pub target_system : u8 , pub target_component : u8 , } impl REQUEST_EVENT_DATA { pub const ENCODED_LEN : usize = 6usize ; pub const DEFAULT : Self = Self { first_sequence : 0_u16 , last_sequence : 0_u16 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for REQUEST_EVENT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for REQUEST_EVENT_DATA { type Message = MavMessage ; const ID : u32 = 412u32 ; const NAME : & 'static str = "REQUEST_EVENT" ; const EXTRA_CRC : u8 = 33u8 ; const ENCODED_LEN : usize = 6usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . first_sequence = buf . get_u16_le () ; __struct . last_sequence = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . first_sequence) ; __tmp . put_u16_le (self . last_sequence) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct OSD_PARAM_CONFIG_DATA { pub request_id : u32 , pub min_value : f32 , pub max_value : f32 , pub increment : f32 , pub target_system : u8 , pub target_component : u8 , pub osd_screen : u8 , pub osd_index : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub param_id : [u8 ; 16] , pub config_type : OsdParamConfigType , } impl OSD_PARAM_CONFIG_DATA { pub const ENCODED_LEN : usize = 37usize ; pub const DEFAULT : Self = Self { request_id : 0_u32 , min_value : 0.0_f32 , max_value : 0.0_f32 , increment : 0.0_f32 , target_system : 0_u8 , target_component : 0_u8 , osd_screen : 0_u8 , osd_index : 0_u8 , param_id : [0_u8 ; 16usize] , config_type : OsdParamConfigType :: DEFAULT , } ; } impl Default for OSD_PARAM_CONFIG_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for OSD_PARAM_CONFIG_DATA { type Message = MavMessage ; const ID : u32 = 11033u32 ; const NAME : & 'static str = "OSD_PARAM_CONFIG" ; const EXTRA_CRC : u8 = 195u8 ; const ENCODED_LEN : usize = 37usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . request_id = buf . get_u32_le () ; __struct . min_value = buf . get_f32_le () ; __struct . max_value = buf . get_f32_le () ; __struct . increment = buf . get_f32_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . osd_screen = buf . get_u8 () ; __struct . osd_index = buf . get_u8 () ; for v in & mut __struct . param_id { let val = buf . get_u8 () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . config_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "OsdParamConfigType" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . request_id) ; __tmp . put_f32_le (self . min_value) ; __tmp . put_f32_le (self . max_value) ; __tmp . put_f32_le (self . increment) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . osd_screen) ; __tmp . put_u8 (self . osd_index) ; for val in & self . param_id { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . config_type as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA { pub time_boot_us : u64 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub q : [f32 ; 4] , pub q_estimated_delay_us : u32 , pub vx : f32 , pub vy : f32 , pub vz : f32 , pub v_estimated_delay_us : u32 , pub feed_forward_angular_velocity_z : f32 , pub estimator_status : EstimatorStatusFlags , pub target_system : u8 , pub target_component : u8 , pub landed_state : MavLandedState , } impl AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA { pub const ENCODED_LEN : usize = 53usize ; pub const DEFAULT : Self = Self { time_boot_us : 0_u64 , q : [0.0_f32 ; 4usize] , q_estimated_delay_us : 0_u32 , vx : 0.0_f32 , vy : 0.0_f32 , vz : 0.0_f32 , v_estimated_delay_us : 0_u32 , feed_forward_angular_velocity_z : 0.0_f32 , estimator_status : EstimatorStatusFlags :: DEFAULT , target_system : 0_u8 , target_component : 0_u8 , landed_state : MavLandedState :: DEFAULT , } ; } impl Default for AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA { type Message = MavMessage ; const ID : u32 = 286u32 ; const NAME : & 'static str = "AUTOPILOT_STATE_FOR_GIMBAL_DEVICE" ; const EXTRA_CRC : u8 = 210u8 ; const ENCODED_LEN : usize = 53usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_us = buf . get_u64_le () ; for v in & mut __struct . q { let val = buf . get_f32_le () ; * v = val ; } __struct . q_estimated_delay_us = buf . get_u32_le () ; __struct . vx = buf . get_f32_le () ; __struct . vy = buf . get_f32_le () ; __struct . vz = buf . get_f32_le () ; __struct . v_estimated_delay_us = buf . get_u32_le () ; __struct . feed_forward_angular_velocity_z = buf . get_f32_le () ; let tmp = buf . get_u16_le () ; __struct . estimator_status = EstimatorStatusFlags :: from_bits (tmp & EstimatorStatusFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "EstimatorStatusFlags" , value : tmp as u32 }) ? ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . landed_state = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavLandedState" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_boot_us) ; for val in & self . q { __tmp . put_f32_le (* val) ; } __tmp . put_u32_le (self . q_estimated_delay_us) ; __tmp . put_f32_le (self . vx) ; __tmp . put_f32_le (self . vy) ; __tmp . put_f32_le (self . vz) ; __tmp . put_u32_le (self . v_estimated_delay_us) ; __tmp . put_f32_le (self . feed_forward_angular_velocity_z) ; __tmp . put_u16_le (self . estimator_status . bits ()) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . landed_state as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ATTITUDE_DATA { pub time_boot_ms : u32 , pub roll : f32 , pub pitch : f32 , pub yaw : f32 , pub rollspeed : f32 , pub pitchspeed : f32 , pub yawspeed : f32 , } impl ATTITUDE_DATA { pub const ENCODED_LEN : usize = 28usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , roll : 0.0_f32 , pitch : 0.0_f32 , yaw : 0.0_f32 , rollspeed : 0.0_f32 , pitchspeed : 0.0_f32 , yawspeed : 0.0_f32 , } ; } impl Default for ATTITUDE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ATTITUDE_DATA { type Message = MavMessage ; const ID : u32 = 30u32 ; const NAME : & 'static str = "ATTITUDE" ; const EXTRA_CRC : u8 = 39u8 ; const ENCODED_LEN : usize = 28usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . roll = buf . get_f32_le () ; __struct . pitch = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; __struct . rollspeed = buf . get_f32_le () ; __struct . pitchspeed = buf . get_f32_le () ; __struct . yawspeed = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . roll) ; __tmp . put_f32_le (self . pitch) ; __tmp . put_f32_le (self . yaw) ; __tmp . put_f32_le (self . rollspeed) ; __tmp . put_f32_le (self . pitchspeed) ; __tmp . put_f32_le (self . yawspeed) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct UAVCAN_NODE_INFO_DATA { pub time_usec : u64 , pub uptime_sec : u32 , pub sw_vcs_commit : u32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub name : [u8 ; 80] , pub hw_version_major : u8 , pub hw_version_minor : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub hw_unique_id : [u8 ; 16] , pub sw_version_major : u8 , pub sw_version_minor : u8 , } impl UAVCAN_NODE_INFO_DATA { pub const ENCODED_LEN : usize = 116usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , uptime_sec : 0_u32 , sw_vcs_commit : 0_u32 , name : [0_u8 ; 80usize] , hw_version_major : 0_u8 , hw_version_minor : 0_u8 , hw_unique_id : [0_u8 ; 16usize] , sw_version_major : 0_u8 , sw_version_minor : 0_u8 , } ; } impl Default for UAVCAN_NODE_INFO_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for UAVCAN_NODE_INFO_DATA { type Message = MavMessage ; const ID : u32 = 311u32 ; const NAME : & 'static str = "UAVCAN_NODE_INFO" ; const EXTRA_CRC : u8 = 95u8 ; const ENCODED_LEN : usize = 116usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . uptime_sec = buf . get_u32_le () ; __struct . sw_vcs_commit = buf . get_u32_le () ; for v in & mut __struct . name { let val = buf . get_u8 () ; * v = val ; } __struct . hw_version_major = buf . get_u8 () ; __struct . hw_version_minor = buf . get_u8 () ; for v in & mut __struct . hw_unique_id { let val = buf . get_u8 () ; * v = val ; } __struct . sw_version_major = buf . get_u8 () ; __struct . sw_version_minor = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_u32_le (self . uptime_sec) ; __tmp . put_u32_le (self . sw_vcs_commit) ; for val in & self . name { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . hw_version_major) ; __tmp . put_u8 (self . hw_version_minor) ; for val in & self . hw_unique_id { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . sw_version_major) ; __tmp . put_u8 (self . sw_version_minor) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HIL_OPTICAL_FLOW_DATA { pub time_usec : u64 , pub integration_time_us : u32 , pub integrated_x : f32 , pub integrated_y : f32 , pub integrated_xgyro : f32 , pub integrated_ygyro : f32 , pub integrated_zgyro : f32 , pub time_delta_distance_us : u32 , pub distance : f32 , pub temperature : i16 , pub sensor_id : u8 , pub quality : u8 , } impl HIL_OPTICAL_FLOW_DATA { pub const ENCODED_LEN : usize = 44usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , integration_time_us : 0_u32 , integrated_x : 0.0_f32 , integrated_y : 0.0_f32 , integrated_xgyro : 0.0_f32 , integrated_ygyro : 0.0_f32 , integrated_zgyro : 0.0_f32 , time_delta_distance_us : 0_u32 , distance : 0.0_f32 , temperature : 0_i16 , sensor_id : 0_u8 , quality : 0_u8 , } ; } impl Default for HIL_OPTICAL_FLOW_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for HIL_OPTICAL_FLOW_DATA { type Message = MavMessage ; const ID : u32 = 114u32 ; const NAME : & 'static str = "HIL_OPTICAL_FLOW" ; const EXTRA_CRC : u8 = 237u8 ; const ENCODED_LEN : usize = 44usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . integration_time_us = buf . get_u32_le () ; __struct . integrated_x = buf . get_f32_le () ; __struct . integrated_y = buf . get_f32_le () ; __struct . integrated_xgyro = buf . get_f32_le () ; __struct . integrated_ygyro = buf . get_f32_le () ; __struct . integrated_zgyro = buf . get_f32_le () ; __struct . time_delta_distance_us = buf . get_u32_le () ; __struct . distance = buf . get_f32_le () ; __struct . temperature = buf . get_i16_le () ; __struct . sensor_id = buf . get_u8 () ; __struct . quality = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_u32_le (self . integration_time_us) ; __tmp . put_f32_le (self . integrated_x) ; __tmp . put_f32_le (self . integrated_y) ; __tmp . put_f32_le (self . integrated_xgyro) ; __tmp . put_f32_le (self . integrated_ygyro) ; __tmp . put_f32_le (self . integrated_zgyro) ; __tmp . put_u32_le (self . time_delta_distance_us) ; __tmp . put_f32_le (self . distance) ; __tmp . put_i16_le (self . temperature) ; __tmp . put_u8 (self . sensor_id) ; __tmp . put_u8 (self . quality) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MEMORY_VECT_DATA { pub address : u16 , pub ver : u8 , pub mavtype : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub value : [i8 ; 32] , } impl MEMORY_VECT_DATA { pub const ENCODED_LEN : usize = 36usize ; pub const DEFAULT : Self = Self { address : 0_u16 , ver : 0_u8 , mavtype : 0_u8 , value : [0_i8 ; 32usize] , } ; } impl Default for MEMORY_VECT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MEMORY_VECT_DATA { type Message = MavMessage ; const ID : u32 = 249u32 ; const NAME : & 'static str = "MEMORY_VECT" ; const EXTRA_CRC : u8 = 204u8 ; const ENCODED_LEN : usize = 36usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . address = buf . get_u16_le () ; __struct . ver = buf . get_u8 () ; __struct . mavtype = buf . get_u8 () ; for v in & mut __struct . value { let val = buf . get_i8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . address) ; __tmp . put_u8 (self . ver) ; __tmp . put_u8 (self . mavtype) ; for val in & self . value { __tmp . put_i8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SAFETY_SET_ALLOWED_AREA_DATA { pub p1x : f32 , pub p1y : f32 , pub p1z : f32 , pub p2x : f32 , pub p2y : f32 , pub p2z : f32 , pub target_system : u8 , pub target_component : u8 , pub frame : MavFrame , } impl SAFETY_SET_ALLOWED_AREA_DATA { pub const ENCODED_LEN : usize = 27usize ; pub const DEFAULT : Self = Self { p1x : 0.0_f32 , p1y : 0.0_f32 , p1z : 0.0_f32 , p2x : 0.0_f32 , p2y : 0.0_f32 , p2z : 0.0_f32 , target_system : 0_u8 , target_component : 0_u8 , frame : MavFrame :: DEFAULT , } ; } impl Default for SAFETY_SET_ALLOWED_AREA_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SAFETY_SET_ALLOWED_AREA_DATA { type Message = MavMessage ; const ID : u32 = 54u32 ; const NAME : & 'static str = "SAFETY_SET_ALLOWED_AREA" ; const EXTRA_CRC : u8 = 15u8 ; const ENCODED_LEN : usize = 27usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . p1x = buf . get_f32_le () ; __struct . p1y = buf . get_f32_le () ; __struct . p1z = buf . get_f32_le () ; __struct . p2x = buf . get_f32_le () ; __struct . p2y = buf . get_f32_le () ; __struct . p2z = buf . get_f32_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . frame = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavFrame" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . p1x) ; __tmp . put_f32_le (self . p1y) ; __tmp . put_f32_le (self . p1z) ; __tmp . put_f32_le (self . p2x) ; __tmp . put_f32_le (self . p2y) ; __tmp . put_f32_le (self . p2z) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . frame as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GIMBAL_MANAGER_STATUS_DATA { pub time_boot_ms : u32 , pub flags : GimbalManagerFlags , pub gimbal_device_id : u8 , pub primary_control_sysid : u8 , pub primary_control_compid : u8 , pub secondary_control_sysid : u8 , pub secondary_control_compid : u8 , } impl GIMBAL_MANAGER_STATUS_DATA { pub const ENCODED_LEN : usize = 13usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , flags : GimbalManagerFlags :: DEFAULT , gimbal_device_id : 0_u8 , primary_control_sysid : 0_u8 , primary_control_compid : 0_u8 , secondary_control_sysid : 0_u8 , secondary_control_compid : 0_u8 , } ; } impl Default for GIMBAL_MANAGER_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GIMBAL_MANAGER_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 281u32 ; const NAME : & 'static str = "GIMBAL_MANAGER_STATUS" ; const EXTRA_CRC : u8 = 48u8 ; const ENCODED_LEN : usize = 13usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; let tmp = buf . get_u32_le () ; __struct . flags = FromPrimitive :: from_u32 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "GimbalManagerFlags" , value : tmp as u32 }) ? ; __struct . gimbal_device_id = buf . get_u8 () ; __struct . primary_control_sysid = buf . get_u8 () ; __struct . primary_control_compid = buf . get_u8 () ; __struct . secondary_control_sysid = buf . get_u8 () ; __struct . secondary_control_compid = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_u32_le (self . flags as u32) ; __tmp . put_u8 (self . gimbal_device_id) ; __tmp . put_u8 (self . primary_control_sysid) ; __tmp . put_u8 (self . primary_control_compid) ; __tmp . put_u8 (self . secondary_control_sysid) ; __tmp . put_u8 (self . secondary_control_compid) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GLOBAL_VISION_POSITION_ESTIMATE_DATA { pub usec : u64 , pub x : f32 , pub y : f32 , pub z : f32 , pub roll : f32 , pub pitch : f32 , pub yaw : f32 , } impl GLOBAL_VISION_POSITION_ESTIMATE_DATA { pub const ENCODED_LEN : usize = 32usize ; pub const DEFAULT : Self = Self { usec : 0_u64 , x : 0.0_f32 , y : 0.0_f32 , z : 0.0_f32 , roll : 0.0_f32 , pitch : 0.0_f32 , yaw : 0.0_f32 , } ; } impl Default for GLOBAL_VISION_POSITION_ESTIMATE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GLOBAL_VISION_POSITION_ESTIMATE_DATA { type Message = MavMessage ; const ID : u32 = 101u32 ; const NAME : & 'static str = "GLOBAL_VISION_POSITION_ESTIMATE" ; const EXTRA_CRC : u8 = 102u8 ; const ENCODED_LEN : usize = 32usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . usec = buf . get_u64_le () ; __struct . x = buf . get_f32_le () ; __struct . y = buf . get_f32_le () ; __struct . z = buf . get_f32_le () ; __struct . roll = buf . get_f32_le () ; __struct . pitch = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . usec) ; __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; __tmp . put_f32_le (self . roll) ; __tmp . put_f32_le (self . pitch) ; __tmp . put_f32_le (self . yaw) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct AUTH_KEY_DATA { # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub key : [u8 ; 32] , } impl AUTH_KEY_DATA { pub const ENCODED_LEN : usize = 32usize ; pub const DEFAULT : Self = Self { key : [0_u8 ; 32usize] , } ; } impl Default for AUTH_KEY_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for AUTH_KEY_DATA { type Message = MavMessage ; const ID : u32 = 7u32 ; const NAME : & 'static str = "AUTH_KEY" ; const EXTRA_CRC : u8 = 119u8 ; const ENCODED_LEN : usize = 32usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; for v in & mut __struct . key { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; for val in & self . key { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct COMMAND_ACK_DATA { pub command : MavCmd , pub result : MavResult , } impl COMMAND_ACK_DATA { pub const ENCODED_LEN : usize = 3usize ; pub const DEFAULT : Self = Self { command : MavCmd :: DEFAULT , result : MavResult :: DEFAULT , } ; } impl Default for COMMAND_ACK_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for COMMAND_ACK_DATA { type Message = MavMessage ; const ID : u32 = 77u32 ; const NAME : & 'static str = "COMMAND_ACK" ; const EXTRA_CRC : u8 = 143u8 ; const ENCODED_LEN : usize = 3usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u16_le () ; __struct . command = FromPrimitive :: from_u16 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavCmd" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . result = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavResult" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . command as u16) ; __tmp . put_u8 (self . result as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct DIGICAM_CONTROL_DATA { pub extra_value : f32 , pub target_system : u8 , pub target_component : u8 , pub session : u8 , pub zoom_pos : u8 , pub zoom_step : i8 , pub focus_lock : u8 , pub shot : u8 , pub command_id : u8 , pub extra_param : u8 , } impl DIGICAM_CONTROL_DATA { pub const ENCODED_LEN : usize = 13usize ; pub const DEFAULT : Self = Self { extra_value : 0.0_f32 , target_system : 0_u8 , target_component : 0_u8 , session : 0_u8 , zoom_pos : 0_u8 , zoom_step : 0_i8 , focus_lock : 0_u8 , shot : 0_u8 , command_id : 0_u8 , extra_param : 0_u8 , } ; } impl Default for DIGICAM_CONTROL_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for DIGICAM_CONTROL_DATA { type Message = MavMessage ; const ID : u32 = 155u32 ; const NAME : & 'static str = "DIGICAM_CONTROL" ; const EXTRA_CRC : u8 = 22u8 ; const ENCODED_LEN : usize = 13usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . extra_value = buf . get_f32_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . session = buf . get_u8 () ; __struct . zoom_pos = buf . get_u8 () ; __struct . zoom_step = buf . get_i8 () ; __struct . focus_lock = buf . get_u8 () ; __struct . shot = buf . get_u8 () ; __struct . command_id = buf . get_u8 () ; __struct . extra_param = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . extra_value) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . session) ; __tmp . put_u8 (self . zoom_pos) ; __tmp . put_i8 (self . zoom_step) ; __tmp . put_u8 (self . focus_lock) ; __tmp . put_u8 (self . shot) ; __tmp . put_u8 (self . command_id) ; __tmp . put_u8 (self . extra_param) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct FENCE_FETCH_POINT_DATA { pub target_system : u8 , pub target_component : u8 , pub idx : u8 , } impl FENCE_FETCH_POINT_DATA { pub const ENCODED_LEN : usize = 3usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , idx : 0_u8 , } ; } impl Default for FENCE_FETCH_POINT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for FENCE_FETCH_POINT_DATA { type Message = MavMessage ; const ID : u32 = 161u32 ; const NAME : & 'static str = "FENCE_FETCH_POINT" ; const EXTRA_CRC : u8 = 68u8 ; const ENCODED_LEN : usize = 3usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . idx = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . idx) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ESC_TELEMETRY_9_TO_12_DATA { # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub voltage : [u16 ; 4] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub current : [u16 ; 4] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub totalcurrent : [u16 ; 4] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub rpm : [u16 ; 4] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub count : [u16 ; 4] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub temperature : [u8 ; 4] , } impl ESC_TELEMETRY_9_TO_12_DATA { pub const ENCODED_LEN : usize = 44usize ; pub const DEFAULT : Self = Self { voltage : [0_u16 ; 4usize] , current : [0_u16 ; 4usize] , totalcurrent : [0_u16 ; 4usize] , rpm : [0_u16 ; 4usize] , count : [0_u16 ; 4usize] , temperature : [0_u8 ; 4usize] , } ; } impl Default for ESC_TELEMETRY_9_TO_12_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ESC_TELEMETRY_9_TO_12_DATA { type Message = MavMessage ; const ID : u32 = 11032u32 ; const NAME : & 'static str = "ESC_TELEMETRY_9_TO_12" ; const EXTRA_CRC : u8 = 85u8 ; const ENCODED_LEN : usize = 44usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; for v in & mut __struct . voltage { let val = buf . get_u16_le () ; * v = val ; } for v in & mut __struct . current { let val = buf . get_u16_le () ; * v = val ; } for v in & mut __struct . totalcurrent { let val = buf . get_u16_le () ; * v = val ; } for v in & mut __struct . rpm { let val = buf . get_u16_le () ; * v = val ; } for v in & mut __struct . count { let val = buf . get_u16_le () ; * v = val ; } for v in & mut __struct . temperature { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; for val in & self . voltage { __tmp . put_u16_le (* val) ; } for val in & self . current { __tmp . put_u16_le (* val) ; } for val in & self . totalcurrent { __tmp . put_u16_le (* val) ; } for val in & self . rpm { __tmp . put_u16_le (* val) ; } for val in & self . count { __tmp . put_u16_le (* val) ; } for val in & self . temperature { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SERIAL_CONTROL_DATA { pub baudrate : u32 , pub timeout : u16 , pub device : SerialControlDev , pub flags : SerialControlFlag , pub count : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub data : [u8 ; 70] , } impl SERIAL_CONTROL_DATA { pub const ENCODED_LEN : usize = 79usize ; pub const DEFAULT : Self = Self { baudrate : 0_u32 , timeout : 0_u16 , device : SerialControlDev :: DEFAULT , flags : SerialControlFlag :: DEFAULT , count : 0_u8 , data : [0_u8 ; 70usize] , } ; } impl Default for SERIAL_CONTROL_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SERIAL_CONTROL_DATA { type Message = MavMessage ; const ID : u32 = 126u32 ; const NAME : & 'static str = "SERIAL_CONTROL" ; const EXTRA_CRC : u8 = 220u8 ; const ENCODED_LEN : usize = 79usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . baudrate = buf . get_u32_le () ; __struct . timeout = buf . get_u16_le () ; let tmp = buf . get_u8 () ; __struct . device = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "SerialControlDev" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . flags = SerialControlFlag :: from_bits (tmp & SerialControlFlag :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "SerialControlFlag" , value : tmp as u32 }) ? ; __struct . count = buf . get_u8 () ; for v in & mut __struct . data { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . baudrate) ; __tmp . put_u16_le (self . timeout) ; __tmp . put_u8 (self . device as u8) ; __tmp . put_u8 (self . flags . bits ()) ; __tmp . put_u8 (self . count) ; for val in & self . data { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MCU_STATUS_DATA { pub MCU_temperature : i16 , pub MCU_voltage : u16 , pub MCU_voltage_min : u16 , pub MCU_voltage_max : u16 , pub id : u8 , } impl MCU_STATUS_DATA { pub const ENCODED_LEN : usize = 9usize ; pub const DEFAULT : Self = Self { MCU_temperature : 0_i16 , MCU_voltage : 0_u16 , MCU_voltage_min : 0_u16 , MCU_voltage_max : 0_u16 , id : 0_u8 , } ; } impl Default for MCU_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MCU_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 11039u32 ; const NAME : & 'static str = "MCU_STATUS" ; const EXTRA_CRC : u8 = 142u8 ; const ENCODED_LEN : usize = 9usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . MCU_temperature = buf . get_i16_le () ; __struct . MCU_voltage = buf . get_u16_le () ; __struct . MCU_voltage_min = buf . get_u16_le () ; __struct . MCU_voltage_max = buf . get_u16_le () ; __struct . id = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i16_le (self . MCU_temperature) ; __tmp . put_u16_le (self . MCU_voltage) ; __tmp . put_u16_le (self . MCU_voltage_min) ; __tmp . put_u16_le (self . MCU_voltage_max) ; __tmp . put_u8 (self . id) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct COMMAND_INT_DATA { pub param1 : f32 , pub param2 : f32 , pub param3 : f32 , pub param4 : f32 , pub x : i32 , pub y : i32 , pub z : f32 , pub command : MavCmd , pub target_system : u8 , pub target_component : u8 , pub frame : MavFrame , pub current : u8 , pub autocontinue : u8 , } impl COMMAND_INT_DATA { pub const ENCODED_LEN : usize = 35usize ; pub const DEFAULT : Self = Self { param1 : 0.0_f32 , param2 : 0.0_f32 , param3 : 0.0_f32 , param4 : 0.0_f32 , x : 0_i32 , y : 0_i32 , z : 0.0_f32 , command : MavCmd :: DEFAULT , target_system : 0_u8 , target_component : 0_u8 , frame : MavFrame :: DEFAULT , current : 0_u8 , autocontinue : 0_u8 , } ; } impl Default for COMMAND_INT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for COMMAND_INT_DATA { type Message = MavMessage ; const ID : u32 = 75u32 ; const NAME : & 'static str = "COMMAND_INT" ; const EXTRA_CRC : u8 = 158u8 ; const ENCODED_LEN : usize = 35usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . param1 = buf . get_f32_le () ; __struct . param2 = buf . get_f32_le () ; __struct . param3 = buf . get_f32_le () ; __struct . param4 = buf . get_f32_le () ; __struct . x = buf . get_i32_le () ; __struct . y = buf . get_i32_le () ; __struct . z = buf . get_f32_le () ; let tmp = buf . get_u16_le () ; __struct . command = FromPrimitive :: from_u16 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavCmd" , value : tmp as u32 }) ? ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . frame = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavFrame" , value : tmp as u32 }) ? ; __struct . current = buf . get_u8 () ; __struct . autocontinue = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . param1) ; __tmp . put_f32_le (self . param2) ; __tmp . put_f32_le (self . param3) ; __tmp . put_f32_le (self . param4) ; __tmp . put_i32_le (self . x) ; __tmp . put_i32_le (self . y) ; __tmp . put_f32_le (self . z) ; __tmp . put_u16_le (self . command as u16) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . frame as u8) ; __tmp . put_u8 (self . current) ; __tmp . put_u8 (self . autocontinue) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct RAW_RPM_DATA { pub frequency : f32 , pub index : u8 , } impl RAW_RPM_DATA { pub const ENCODED_LEN : usize = 5usize ; pub const DEFAULT : Self = Self { frequency : 0.0_f32 , index : 0_u8 , } ; } impl Default for RAW_RPM_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for RAW_RPM_DATA { type Message = MavMessage ; const ID : u32 = 339u32 ; const NAME : & 'static str = "RAW_RPM" ; const EXTRA_CRC : u8 = 199u8 ; const ENCODED_LEN : usize = 5usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . frequency = buf . get_f32_le () ; __struct . index = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . frequency) ; __tmp . put_u8 (self . index) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct OPEN_DRONE_ID_OPERATOR_ID_DATA { pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub id_or_mac : [u8 ; 20] , pub operator_id_type : MavOdidOperatorIdType , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub operator_id : [u8 ; 20] , } impl OPEN_DRONE_ID_OPERATOR_ID_DATA { pub const ENCODED_LEN : usize = 43usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , id_or_mac : [0_u8 ; 20usize] , operator_id_type : MavOdidOperatorIdType :: DEFAULT , operator_id : [0_u8 ; 20usize] , } ; } impl Default for OPEN_DRONE_ID_OPERATOR_ID_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for OPEN_DRONE_ID_OPERATOR_ID_DATA { type Message = MavMessage ; const ID : u32 = 12905u32 ; const NAME : & 'static str = "OPEN_DRONE_ID_OPERATOR_ID" ; const EXTRA_CRC : u8 = 49u8 ; const ENCODED_LEN : usize = 43usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . id_or_mac { let val = buf . get_u8 () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . operator_id_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidOperatorIdType" , value : tmp as u32 }) ? ; for v in & mut __struct . operator_id { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . id_or_mac { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . operator_id_type as u8) ; for val in & self . operator_id { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct DATA_STREAM_DATA { pub message_rate : u16 , pub stream_id : u8 , pub on_off : u8 , } impl DATA_STREAM_DATA { pub const ENCODED_LEN : usize = 4usize ; pub const DEFAULT : Self = Self { message_rate : 0_u16 , stream_id : 0_u8 , on_off : 0_u8 , } ; } impl Default for DATA_STREAM_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for DATA_STREAM_DATA { type Message = MavMessage ; const ID : u32 = 67u32 ; const NAME : & 'static str = "DATA_STREAM" ; const EXTRA_CRC : u8 = 21u8 ; const ENCODED_LEN : usize = 4usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . message_rate = buf . get_u16_le () ; __struct . stream_id = buf . get_u8 () ; __struct . on_off = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . message_rate) ; __tmp . put_u8 (self . stream_id) ; __tmp . put_u8 (self . on_off) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MISSION_COUNT_DATA { pub count : u16 , pub target_system : u8 , pub target_component : u8 , } impl MISSION_COUNT_DATA { pub const ENCODED_LEN : usize = 4usize ; pub const DEFAULT : Self = Self { count : 0_u16 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for MISSION_COUNT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MISSION_COUNT_DATA { type Message = MavMessage ; const ID : u32 = 44u32 ; const NAME : & 'static str = "MISSION_COUNT" ; const EXTRA_CRC : u8 = 221u8 ; const ENCODED_LEN : usize = 4usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . count = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . count) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SCALED_IMU3_DATA { pub time_boot_ms : u32 , pub xacc : i16 , pub yacc : i16 , pub zacc : i16 , pub xgyro : i16 , pub ygyro : i16 , pub zgyro : i16 , pub xmag : i16 , pub ymag : i16 , pub zmag : i16 , } impl SCALED_IMU3_DATA { pub const ENCODED_LEN : usize = 22usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , xacc : 0_i16 , yacc : 0_i16 , zacc : 0_i16 , xgyro : 0_i16 , ygyro : 0_i16 , zgyro : 0_i16 , xmag : 0_i16 , ymag : 0_i16 , zmag : 0_i16 , } ; } impl Default for SCALED_IMU3_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SCALED_IMU3_DATA { type Message = MavMessage ; const ID : u32 = 129u32 ; const NAME : & 'static str = "SCALED_IMU3" ; const EXTRA_CRC : u8 = 46u8 ; const ENCODED_LEN : usize = 22usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . xacc = buf . get_i16_le () ; __struct . yacc = buf . get_i16_le () ; __struct . zacc = buf . get_i16_le () ; __struct . xgyro = buf . get_i16_le () ; __struct . ygyro = buf . get_i16_le () ; __struct . zgyro = buf . get_i16_le () ; __struct . xmag = buf . get_i16_le () ; __struct . ymag = buf . get_i16_le () ; __struct . zmag = buf . get_i16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_i16_le (self . xacc) ; __tmp . put_i16_le (self . yacc) ; __tmp . put_i16_le (self . zacc) ; __tmp . put_i16_le (self . xgyro) ; __tmp . put_i16_le (self . ygyro) ; __tmp . put_i16_le (self . zgyro) ; __tmp . put_i16_le (self . xmag) ; __tmp . put_i16_le (self . ymag) ; __tmp . put_i16_le (self . zmag) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct DEBUG_FLOAT_ARRAY_DATA { pub time_usec : u64 , pub array_id : u16 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub name : [u8 ; 10] , } impl DEBUG_FLOAT_ARRAY_DATA { pub const ENCODED_LEN : usize = 20usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , array_id : 0_u16 , name : [0_u8 ; 10usize] , } ; } impl Default for DEBUG_FLOAT_ARRAY_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for DEBUG_FLOAT_ARRAY_DATA { type Message = MavMessage ; const ID : u32 = 350u32 ; const NAME : & 'static str = "DEBUG_FLOAT_ARRAY" ; const EXTRA_CRC : u8 = 232u8 ; const ENCODED_LEN : usize = 20usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . array_id = buf . get_u16_le () ; for v in & mut __struct . name { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_u16_le (self . array_id) ; for val in & self . name { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GIMBAL_MANAGER_INFORMATION_DATA { pub time_boot_ms : u32 , pub cap_flags : GimbalManagerCapFlags , pub roll_min : f32 , pub roll_max : f32 , pub pitch_min : f32 , pub pitch_max : f32 , pub yaw_min : f32 , pub yaw_max : f32 , pub gimbal_device_id : u8 , } impl GIMBAL_MANAGER_INFORMATION_DATA { pub const ENCODED_LEN : usize = 33usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , cap_flags : GimbalManagerCapFlags :: DEFAULT , roll_min : 0.0_f32 , roll_max : 0.0_f32 , pitch_min : 0.0_f32 , pitch_max : 0.0_f32 , yaw_min : 0.0_f32 , yaw_max : 0.0_f32 , gimbal_device_id : 0_u8 , } ; } impl Default for GIMBAL_MANAGER_INFORMATION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GIMBAL_MANAGER_INFORMATION_DATA { type Message = MavMessage ; const ID : u32 = 280u32 ; const NAME : & 'static str = "GIMBAL_MANAGER_INFORMATION" ; const EXTRA_CRC : u8 = 70u8 ; const ENCODED_LEN : usize = 33usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; let tmp = buf . get_u32_le () ; __struct . cap_flags = GimbalManagerCapFlags :: from_bits (tmp & GimbalManagerCapFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "GimbalManagerCapFlags" , value : tmp as u32 }) ? ; __struct . roll_min = buf . get_f32_le () ; __struct . roll_max = buf . get_f32_le () ; __struct . pitch_min = buf . get_f32_le () ; __struct . pitch_max = buf . get_f32_le () ; __struct . yaw_min = buf . get_f32_le () ; __struct . yaw_max = buf . get_f32_le () ; __struct . gimbal_device_id = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_u32_le (self . cap_flags . bits ()) ; __tmp . put_f32_le (self . roll_min) ; __tmp . put_f32_le (self . roll_max) ; __tmp . put_f32_le (self . pitch_min) ; __tmp . put_f32_le (self . pitch_max) ; __tmp . put_f32_le (self . yaw_min) ; __tmp . put_f32_le (self . yaw_max) ; __tmp . put_u8 (self . gimbal_device_id) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HIGH_LATENCY2_DATA { pub timestamp : u32 , pub latitude : i32 , pub longitude : i32 , pub custom_mode : u16 , pub altitude : i16 , pub target_altitude : i16 , pub target_distance : u16 , pub wp_num : u16 , pub failure_flags : HlFailureFlag , pub mavtype : MavType , pub autopilot : MavAutopilot , pub heading : u8 , pub target_heading : u8 , pub throttle : u8 , pub airspeed : u8 , pub airspeed_sp : u8 , pub groundspeed : u8 , pub windspeed : u8 , pub wind_heading : u8 , pub eph : u8 , pub epv : u8 , pub temperature_air : i8 , pub climb_rate : i8 , pub battery : i8 , pub custom0 : i8 , pub custom1 : i8 , pub custom2 : i8 , } impl HIGH_LATENCY2_DATA { pub const ENCODED_LEN : usize = 42usize ; pub const DEFAULT : Self = Self { timestamp : 0_u32 , latitude : 0_i32 , longitude : 0_i32 , custom_mode : 0_u16 , altitude : 0_i16 , target_altitude : 0_i16 , target_distance : 0_u16 , wp_num : 0_u16 , failure_flags : HlFailureFlag :: DEFAULT , mavtype : MavType :: DEFAULT , autopilot : MavAutopilot :: DEFAULT , heading : 0_u8 , target_heading : 0_u8 , throttle : 0_u8 , airspeed : 0_u8 , airspeed_sp : 0_u8 , groundspeed : 0_u8 , windspeed : 0_u8 , wind_heading : 0_u8 , eph : 0_u8 , epv : 0_u8 , temperature_air : 0_i8 , climb_rate : 0_i8 , battery : 0_i8 , custom0 : 0_i8 , custom1 : 0_i8 , custom2 : 0_i8 , } ; } impl Default for HIGH_LATENCY2_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for HIGH_LATENCY2_DATA { type Message = MavMessage ; const ID : u32 = 235u32 ; const NAME : & 'static str = "HIGH_LATENCY2" ; const EXTRA_CRC : u8 = 179u8 ; const ENCODED_LEN : usize = 42usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . timestamp = buf . get_u32_le () ; __struct . latitude = buf . get_i32_le () ; __struct . longitude = buf . get_i32_le () ; __struct . custom_mode = buf . get_u16_le () ; __struct . altitude = buf . get_i16_le () ; __struct . target_altitude = buf . get_i16_le () ; __struct . target_distance = buf . get_u16_le () ; __struct . wp_num = buf . get_u16_le () ; let tmp = buf . get_u16_le () ; __struct . failure_flags = HlFailureFlag :: from_bits (tmp & HlFailureFlag :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "HlFailureFlag" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . mavtype = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavType" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . autopilot = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavAutopilot" , value : tmp as u32 }) ? ; __struct . heading = buf . get_u8 () ; __struct . target_heading = buf . get_u8 () ; __struct . throttle = buf . get_u8 () ; __struct . airspeed = buf . get_u8 () ; __struct . airspeed_sp = buf . get_u8 () ; __struct . groundspeed = buf . get_u8 () ; __struct . windspeed = buf . get_u8 () ; __struct . wind_heading = buf . get_u8 () ; __struct . eph = buf . get_u8 () ; __struct . epv = buf . get_u8 () ; __struct . temperature_air = buf . get_i8 () ; __struct . climb_rate = buf . get_i8 () ; __struct . battery = buf . get_i8 () ; __struct . custom0 = buf . get_i8 () ; __struct . custom1 = buf . get_i8 () ; __struct . custom2 = buf . get_i8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . timestamp) ; __tmp . put_i32_le (self . latitude) ; __tmp . put_i32_le (self . longitude) ; __tmp . put_u16_le (self . custom_mode) ; __tmp . put_i16_le (self . altitude) ; __tmp . put_i16_le (self . target_altitude) ; __tmp . put_u16_le (self . target_distance) ; __tmp . put_u16_le (self . wp_num) ; __tmp . put_u16_le (self . failure_flags . bits ()) ; __tmp . put_u8 (self . mavtype as u8) ; __tmp . put_u8 (self . autopilot as u8) ; __tmp . put_u8 (self . heading) ; __tmp . put_u8 (self . target_heading) ; __tmp . put_u8 (self . throttle) ; __tmp . put_u8 (self . airspeed) ; __tmp . put_u8 (self . airspeed_sp) ; __tmp . put_u8 (self . groundspeed) ; __tmp . put_u8 (self . windspeed) ; __tmp . put_u8 (self . wind_heading) ; __tmp . put_u8 (self . eph) ; __tmp . put_u8 (self . epv) ; __tmp . put_i8 (self . temperature_air) ; __tmp . put_i8 (self . climb_rate) ; __tmp . put_i8 (self . battery) ; __tmp . put_i8 (self . custom0) ; __tmp . put_i8 (self . custom1) ; __tmp . put_i8 (self . custom2) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PLAY_TUNE_DATA { pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub tune : [u8 ; 30] , } impl PLAY_TUNE_DATA { pub const ENCODED_LEN : usize = 32usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , tune : [0_u8 ; 30usize] , } ; } impl Default for PLAY_TUNE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for PLAY_TUNE_DATA { type Message = MavMessage ; const ID : u32 = 258u32 ; const NAME : & 'static str = "PLAY_TUNE" ; const EXTRA_CRC : u8 = 187u8 ; const ENCODED_LEN : usize = 32usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . tune { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . tune { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct AOA_SSA_DATA { pub time_usec : u64 , pub AOA : f32 , pub SSA : f32 , } impl AOA_SSA_DATA { pub const ENCODED_LEN : usize = 16usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , AOA : 0.0_f32 , SSA : 0.0_f32 , } ; } impl Default for AOA_SSA_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for AOA_SSA_DATA { type Message = MavMessage ; const ID : u32 = 11020u32 ; const NAME : & 'static str = "AOA_SSA" ; const EXTRA_CRC : u8 = 205u8 ; const ENCODED_LEN : usize = 16usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . AOA = buf . get_f32_le () ; __struct . SSA = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . AOA) ; __tmp . put_f32_le (self . SSA) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LOCAL_POSITION_NED_COV_DATA { pub time_usec : u64 , pub x : f32 , pub y : f32 , pub z : f32 , pub vx : f32 , pub vy : f32 , pub vz : f32 , pub ax : f32 , pub ay : f32 , pub az : f32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub covariance : [f32 ; 45] , pub estimator_type : MavEstimatorType , } impl LOCAL_POSITION_NED_COV_DATA { pub const ENCODED_LEN : usize = 225usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , x : 0.0_f32 , y : 0.0_f32 , z : 0.0_f32 , vx : 0.0_f32 , vy : 0.0_f32 , vz : 0.0_f32 , ax : 0.0_f32 , ay : 0.0_f32 , az : 0.0_f32 , covariance : [0.0_f32 ; 45usize] , estimator_type : MavEstimatorType :: DEFAULT , } ; } impl Default for LOCAL_POSITION_NED_COV_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for LOCAL_POSITION_NED_COV_DATA { type Message = MavMessage ; const ID : u32 = 64u32 ; const NAME : & 'static str = "LOCAL_POSITION_NED_COV" ; const EXTRA_CRC : u8 = 191u8 ; const ENCODED_LEN : usize = 225usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . x = buf . get_f32_le () ; __struct . y = buf . get_f32_le () ; __struct . z = buf . get_f32_le () ; __struct . vx = buf . get_f32_le () ; __struct . vy = buf . get_f32_le () ; __struct . vz = buf . get_f32_le () ; __struct . ax = buf . get_f32_le () ; __struct . ay = buf . get_f32_le () ; __struct . az = buf . get_f32_le () ; for v in & mut __struct . covariance { let val = buf . get_f32_le () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . estimator_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavEstimatorType" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; __tmp . put_f32_le (self . vx) ; __tmp . put_f32_le (self . vy) ; __tmp . put_f32_le (self . vz) ; __tmp . put_f32_le (self . ax) ; __tmp . put_f32_le (self . ay) ; __tmp . put_f32_le (self . az) ; for val in & self . covariance { __tmp . put_f32_le (* val) ; } __tmp . put_u8 (self . estimator_type as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MISSION_ACK_DATA { pub target_system : u8 , pub target_component : u8 , pub mavtype : MavMissionResult , } impl MISSION_ACK_DATA { pub const ENCODED_LEN : usize = 3usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , mavtype : MavMissionResult :: DEFAULT , } ; } impl Default for MISSION_ACK_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MISSION_ACK_DATA { type Message = MavMessage ; const ID : u32 = 47u32 ; const NAME : & 'static str = "MISSION_ACK" ; const EXTRA_CRC : u8 = 153u8 ; const ENCODED_LEN : usize = 3usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . mavtype = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavMissionResult" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . mavtype as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LIMITS_STATUS_DATA { pub last_trigger : u32 , pub last_action : u32 , pub last_recovery : u32 , pub last_clear : u32 , pub breach_count : u16 , pub limits_state : LimitsState , pub mods_enabled : LimitModule , pub mods_required : LimitModule , pub mods_triggered : LimitModule , } impl LIMITS_STATUS_DATA { pub const ENCODED_LEN : usize = 22usize ; pub const DEFAULT : Self = Self { last_trigger : 0_u32 , last_action : 0_u32 , last_recovery : 0_u32 , last_clear : 0_u32 , breach_count : 0_u16 , limits_state : LimitsState :: DEFAULT , mods_enabled : LimitModule :: DEFAULT , mods_required : LimitModule :: DEFAULT , mods_triggered : LimitModule :: DEFAULT , } ; } impl Default for LIMITS_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for LIMITS_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 167u32 ; const NAME : & 'static str = "LIMITS_STATUS" ; const EXTRA_CRC : u8 = 144u8 ; const ENCODED_LEN : usize = 22usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . last_trigger = buf . get_u32_le () ; __struct . last_action = buf . get_u32_le () ; __struct . last_recovery = buf . get_u32_le () ; __struct . last_clear = buf . get_u32_le () ; __struct . breach_count = buf . get_u16_le () ; let tmp = buf . get_u8 () ; __struct . limits_state = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "LimitsState" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . mods_enabled = LimitModule :: from_bits (tmp & LimitModule :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "LimitModule" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . mods_required = LimitModule :: from_bits (tmp & LimitModule :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "LimitModule" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . mods_triggered = LimitModule :: from_bits (tmp & LimitModule :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "LimitModule" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . last_trigger) ; __tmp . put_u32_le (self . last_action) ; __tmp . put_u32_le (self . last_recovery) ; __tmp . put_u32_le (self . last_clear) ; __tmp . put_u16_le (self . breach_count) ; __tmp . put_u8 (self . limits_state as u8) ; __tmp . put_u8 (self . mods_enabled . bits ()) ; __tmp . put_u8 (self . mods_required . bits ()) ; __tmp . put_u8 (self . mods_triggered . bits ()) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct COMPONENT_INFORMATION_DATA { pub time_boot_ms : u32 , pub general_metadata_file_crc : u32 , pub peripherals_metadata_file_crc : u32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub general_metadata_uri : [u8 ; 100] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub peripherals_metadata_uri : [u8 ; 100] , } impl COMPONENT_INFORMATION_DATA { pub const ENCODED_LEN : usize = 212usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , general_metadata_file_crc : 0_u32 , peripherals_metadata_file_crc : 0_u32 , general_metadata_uri : [0_u8 ; 100usize] , peripherals_metadata_uri : [0_u8 ; 100usize] , } ; } impl Default for COMPONENT_INFORMATION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for COMPONENT_INFORMATION_DATA { type Message = MavMessage ; const ID : u32 = 395u32 ; const NAME : & 'static str = "COMPONENT_INFORMATION" ; const EXTRA_CRC : u8 = 0u8 ; const ENCODED_LEN : usize = 212usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . general_metadata_file_crc = buf . get_u32_le () ; __struct . peripherals_metadata_file_crc = buf . get_u32_le () ; for v in & mut __struct . general_metadata_uri { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . peripherals_metadata_uri { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_u32_le (self . general_metadata_file_crc) ; __tmp . put_u32_le (self . peripherals_metadata_file_crc) ; for val in & self . general_metadata_uri { __tmp . put_u8 (* val) ; } for val in & self . peripherals_metadata_uri { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GIMBAL_TORQUE_CMD_REPORT_DATA { pub rl_torque_cmd : i16 , pub el_torque_cmd : i16 , pub az_torque_cmd : i16 , pub target_system : u8 , pub target_component : u8 , } impl GIMBAL_TORQUE_CMD_REPORT_DATA { pub const ENCODED_LEN : usize = 8usize ; pub const DEFAULT : Self = Self { rl_torque_cmd : 0_i16 , el_torque_cmd : 0_i16 , az_torque_cmd : 0_i16 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for GIMBAL_TORQUE_CMD_REPORT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GIMBAL_TORQUE_CMD_REPORT_DATA { type Message = MavMessage ; const ID : u32 = 214u32 ; const NAME : & 'static str = "GIMBAL_TORQUE_CMD_REPORT" ; const EXTRA_CRC : u8 = 69u8 ; const ENCODED_LEN : usize = 8usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . rl_torque_cmd = buf . get_i16_le () ; __struct . el_torque_cmd = buf . get_i16_le () ; __struct . az_torque_cmd = buf . get_i16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i16_le (self . rl_torque_cmd) ; __tmp . put_i16_le (self . el_torque_cmd) ; __tmp . put_i16_le (self . az_torque_cmd) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MOUNT_STATUS_DATA { pub pointing_a : i32 , pub pointing_b : i32 , pub pointing_c : i32 , pub target_system : u8 , pub target_component : u8 , } impl MOUNT_STATUS_DATA { pub const ENCODED_LEN : usize = 14usize ; pub const DEFAULT : Self = Self { pointing_a : 0_i32 , pointing_b : 0_i32 , pointing_c : 0_i32 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for MOUNT_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MOUNT_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 158u32 ; const NAME : & 'static str = "MOUNT_STATUS" ; const EXTRA_CRC : u8 = 134u8 ; const ENCODED_LEN : usize = 14usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . pointing_a = buf . get_i32_le () ; __struct . pointing_b = buf . get_i32_le () ; __struct . pointing_c = buf . get_i32_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . pointing_a) ; __tmp . put_i32_le (self . pointing_b) ; __tmp . put_i32_le (self . pointing_c) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SIM_STATE_DATA { pub q1 : f32 , pub q2 : f32 , pub q3 : f32 , pub q4 : f32 , pub roll : f32 , pub pitch : f32 , pub yaw : f32 , pub xacc : f32 , pub yacc : f32 , pub zacc : f32 , pub xgyro : f32 , pub ygyro : f32 , pub zgyro : f32 , pub lat : f32 , pub lon : f32 , pub alt : f32 , pub std_dev_horz : f32 , pub std_dev_vert : f32 , pub vn : f32 , pub ve : f32 , pub vd : f32 , } impl SIM_STATE_DATA { pub const ENCODED_LEN : usize = 84usize ; pub const DEFAULT : Self = Self { q1 : 0.0_f32 , q2 : 0.0_f32 , q3 : 0.0_f32 , q4 : 0.0_f32 , roll : 0.0_f32 , pitch : 0.0_f32 , yaw : 0.0_f32 , xacc : 0.0_f32 , yacc : 0.0_f32 , zacc : 0.0_f32 , xgyro : 0.0_f32 , ygyro : 0.0_f32 , zgyro : 0.0_f32 , lat : 0.0_f32 , lon : 0.0_f32 , alt : 0.0_f32 , std_dev_horz : 0.0_f32 , std_dev_vert : 0.0_f32 , vn : 0.0_f32 , ve : 0.0_f32 , vd : 0.0_f32 , } ; } impl Default for SIM_STATE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SIM_STATE_DATA { type Message = MavMessage ; const ID : u32 = 108u32 ; const NAME : & 'static str = "SIM_STATE" ; const EXTRA_CRC : u8 = 32u8 ; const ENCODED_LEN : usize = 84usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . q1 = buf . get_f32_le () ; __struct . q2 = buf . get_f32_le () ; __struct . q3 = buf . get_f32_le () ; __struct . q4 = buf . get_f32_le () ; __struct . roll = buf . get_f32_le () ; __struct . pitch = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; __struct . xacc = buf . get_f32_le () ; __struct . yacc = buf . get_f32_le () ; __struct . zacc = buf . get_f32_le () ; __struct . xgyro = buf . get_f32_le () ; __struct . ygyro = buf . get_f32_le () ; __struct . zgyro = buf . get_f32_le () ; __struct . lat = buf . get_f32_le () ; __struct . lon = buf . get_f32_le () ; __struct . alt = buf . get_f32_le () ; __struct . std_dev_horz = buf . get_f32_le () ; __struct . std_dev_vert = buf . get_f32_le () ; __struct . vn = buf . get_f32_le () ; __struct . ve = buf . get_f32_le () ; __struct . vd = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . q1) ; __tmp . put_f32_le (self . q2) ; __tmp . put_f32_le (self . q3) ; __tmp . put_f32_le (self . q4) ; __tmp . put_f32_le (self . roll) ; __tmp . put_f32_le (self . pitch) ; __tmp . put_f32_le (self . yaw) ; __tmp . put_f32_le (self . xacc) ; __tmp . put_f32_le (self . yacc) ; __tmp . put_f32_le (self . zacc) ; __tmp . put_f32_le (self . xgyro) ; __tmp . put_f32_le (self . ygyro) ; __tmp . put_f32_le (self . zgyro) ; __tmp . put_f32_le (self . lat) ; __tmp . put_f32_le (self . lon) ; __tmp . put_f32_le (self . alt) ; __tmp . put_f32_le (self . std_dev_horz) ; __tmp . put_f32_le (self . std_dev_vert) ; __tmp . put_f32_le (self . vn) ; __tmp . put_f32_le (self . ve) ; __tmp . put_f32_le (self . vd) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MISSION_SET_CURRENT_DATA { pub seq : u16 , pub target_system : u8 , pub target_component : u8 , } impl MISSION_SET_CURRENT_DATA { pub const ENCODED_LEN : usize = 4usize ; pub const DEFAULT : Self = Self { seq : 0_u16 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for MISSION_SET_CURRENT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MISSION_SET_CURRENT_DATA { type Message = MavMessage ; const ID : u32 = 41u32 ; const NAME : & 'static str = "MISSION_SET_CURRENT" ; const EXTRA_CRC : u8 = 28u8 ; const ENCODED_LEN : usize = 4usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . seq = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . seq) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PARAM_EXT_SET_DATA { pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub param_id : [u8 ; 16] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub param_value : [u8 ; 128] , pub param_type : MavParamExtType , } impl PARAM_EXT_SET_DATA { pub const ENCODED_LEN : usize = 147usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , param_id : [0_u8 ; 16usize] , param_value : [0_u8 ; 128usize] , param_type : MavParamExtType :: DEFAULT , } ; } impl Default for PARAM_EXT_SET_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for PARAM_EXT_SET_DATA { type Message = MavMessage ; const ID : u32 = 323u32 ; const NAME : & 'static str = "PARAM_EXT_SET" ; const EXTRA_CRC : u8 = 78u8 ; const ENCODED_LEN : usize = 147usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . param_id { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . param_value { let val = buf . get_u8 () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . param_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavParamExtType" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . param_id { __tmp . put_u8 (* val) ; } for val in & self . param_value { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . param_type as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ISBD_LINK_STATUS_DATA { pub timestamp : u64 , pub last_heartbeat : u64 , pub failed_sessions : u16 , pub successful_sessions : u16 , pub signal_quality : u8 , pub ring_pending : u8 , pub tx_session_pending : u8 , pub rx_session_pending : u8 , } impl ISBD_LINK_STATUS_DATA { pub const ENCODED_LEN : usize = 24usize ; pub const DEFAULT : Self = Self { timestamp : 0_u64 , last_heartbeat : 0_u64 , failed_sessions : 0_u16 , successful_sessions : 0_u16 , signal_quality : 0_u8 , ring_pending : 0_u8 , tx_session_pending : 0_u8 , rx_session_pending : 0_u8 , } ; } impl Default for ISBD_LINK_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ISBD_LINK_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 335u32 ; const NAME : & 'static str = "ISBD_LINK_STATUS" ; const EXTRA_CRC : u8 = 225u8 ; const ENCODED_LEN : usize = 24usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . timestamp = buf . get_u64_le () ; __struct . last_heartbeat = buf . get_u64_le () ; __struct . failed_sessions = buf . get_u16_le () ; __struct . successful_sessions = buf . get_u16_le () ; __struct . signal_quality = buf . get_u8 () ; __struct . ring_pending = buf . get_u8 () ; __struct . tx_session_pending = buf . get_u8 () ; __struct . rx_session_pending = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . timestamp) ; __tmp . put_u64_le (self . last_heartbeat) ; __tmp . put_u16_le (self . failed_sessions) ; __tmp . put_u16_le (self . successful_sessions) ; __tmp . put_u8 (self . signal_quality) ; __tmp . put_u8 (self . ring_pending) ; __tmp . put_u8 (self . tx_session_pending) ; __tmp . put_u8 (self . rx_session_pending) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct RC_CHANNELS_DATA { pub time_boot_ms : u32 , pub chan1_raw : u16 , pub chan2_raw : u16 , pub chan3_raw : u16 , pub chan4_raw : u16 , pub chan5_raw : u16 , pub chan6_raw : u16 , pub chan7_raw : u16 , pub chan8_raw : u16 , pub chan9_raw : u16 , pub chan10_raw : u16 , pub chan11_raw : u16 , pub chan12_raw : u16 , pub chan13_raw : u16 , pub chan14_raw : u16 , pub chan15_raw : u16 , pub chan16_raw : u16 , pub chan17_raw : u16 , pub chan18_raw : u16 , pub chancount : u8 , pub rssi : u8 , } impl RC_CHANNELS_DATA { pub const ENCODED_LEN : usize = 42usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , chan1_raw : 0_u16 , chan2_raw : 0_u16 , chan3_raw : 0_u16 , chan4_raw : 0_u16 , chan5_raw : 0_u16 , chan6_raw : 0_u16 , chan7_raw : 0_u16 , chan8_raw : 0_u16 , chan9_raw : 0_u16 , chan10_raw : 0_u16 , chan11_raw : 0_u16 , chan12_raw : 0_u16 , chan13_raw : 0_u16 , chan14_raw : 0_u16 , chan15_raw : 0_u16 , chan16_raw : 0_u16 , chan17_raw : 0_u16 , chan18_raw : 0_u16 , chancount : 0_u8 , rssi : 0_u8 , } ; } impl Default for RC_CHANNELS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for RC_CHANNELS_DATA { type Message = MavMessage ; const ID : u32 = 65u32 ; const NAME : & 'static str = "RC_CHANNELS" ; const EXTRA_CRC : u8 = 118u8 ; const ENCODED_LEN : usize = 42usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . chan1_raw = buf . get_u16_le () ; __struct . chan2_raw = buf . get_u16_le () ; __struct . chan3_raw = buf . get_u16_le () ; __struct . chan4_raw = buf . get_u16_le () ; __struct . chan5_raw = buf . get_u16_le () ; __struct . chan6_raw = buf . get_u16_le () ; __struct . chan7_raw = buf . get_u16_le () ; __struct . chan8_raw = buf . get_u16_le () ; __struct . chan9_raw = buf . get_u16_le () ; __struct . chan10_raw = buf . get_u16_le () ; __struct . chan11_raw = buf . get_u16_le () ; __struct . chan12_raw = buf . get_u16_le () ; __struct . chan13_raw = buf . get_u16_le () ; __struct . chan14_raw = buf . get_u16_le () ; __struct . chan15_raw = buf . get_u16_le () ; __struct . chan16_raw = buf . get_u16_le () ; __struct . chan17_raw = buf . get_u16_le () ; __struct . chan18_raw = buf . get_u16_le () ; __struct . chancount = buf . get_u8 () ; __struct . rssi = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_u16_le (self . chan1_raw) ; __tmp . put_u16_le (self . chan2_raw) ; __tmp . put_u16_le (self . chan3_raw) ; __tmp . put_u16_le (self . chan4_raw) ; __tmp . put_u16_le (self . chan5_raw) ; __tmp . put_u16_le (self . chan6_raw) ; __tmp . put_u16_le (self . chan7_raw) ; __tmp . put_u16_le (self . chan8_raw) ; __tmp . put_u16_le (self . chan9_raw) ; __tmp . put_u16_le (self . chan10_raw) ; __tmp . put_u16_le (self . chan11_raw) ; __tmp . put_u16_le (self . chan12_raw) ; __tmp . put_u16_le (self . chan13_raw) ; __tmp . put_u16_le (self . chan14_raw) ; __tmp . put_u16_le (self . chan15_raw) ; __tmp . put_u16_le (self . chan16_raw) ; __tmp . put_u16_le (self . chan17_raw) ; __tmp . put_u16_le (self . chan18_raw) ; __tmp . put_u8 (self . chancount) ; __tmp . put_u8 (self . rssi) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CUBEPILOT_FIRMWARE_UPDATE_RESP_DATA { pub offset : u32 , pub target_system : u8 , pub target_component : u8 , } impl CUBEPILOT_FIRMWARE_UPDATE_RESP_DATA { pub const ENCODED_LEN : usize = 6usize ; pub const DEFAULT : Self = Self { offset : 0_u32 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for CUBEPILOT_FIRMWARE_UPDATE_RESP_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CUBEPILOT_FIRMWARE_UPDATE_RESP_DATA { type Message = MavMessage ; const ID : u32 = 50005u32 ; const NAME : & 'static str = "CUBEPILOT_FIRMWARE_UPDATE_RESP" ; const EXTRA_CRC : u8 = 152u8 ; const ENCODED_LEN : usize = 6usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . offset = buf . get_u32_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . offset) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SIMSTATE_DATA { pub roll : f32 , pub pitch : f32 , pub yaw : f32 , pub xacc : f32 , pub yacc : f32 , pub zacc : f32 , pub xgyro : f32 , pub ygyro : f32 , pub zgyro : f32 , pub lat : i32 , pub lng : i32 , } impl SIMSTATE_DATA { pub const ENCODED_LEN : usize = 44usize ; pub const DEFAULT : Self = Self { roll : 0.0_f32 , pitch : 0.0_f32 , yaw : 0.0_f32 , xacc : 0.0_f32 , yacc : 0.0_f32 , zacc : 0.0_f32 , xgyro : 0.0_f32 , ygyro : 0.0_f32 , zgyro : 0.0_f32 , lat : 0_i32 , lng : 0_i32 , } ; } impl Default for SIMSTATE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SIMSTATE_DATA { type Message = MavMessage ; const ID : u32 = 164u32 ; const NAME : & 'static str = "SIMSTATE" ; const EXTRA_CRC : u8 = 154u8 ; const ENCODED_LEN : usize = 44usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . roll = buf . get_f32_le () ; __struct . pitch = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; __struct . xacc = buf . get_f32_le () ; __struct . yacc = buf . get_f32_le () ; __struct . zacc = buf . get_f32_le () ; __struct . xgyro = buf . get_f32_le () ; __struct . ygyro = buf . get_f32_le () ; __struct . zgyro = buf . get_f32_le () ; __struct . lat = buf . get_i32_le () ; __struct . lng = buf . get_i32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . roll) ; __tmp . put_f32_le (self . pitch) ; __tmp . put_f32_le (self . yaw) ; __tmp . put_f32_le (self . xacc) ; __tmp . put_f32_le (self . yacc) ; __tmp . put_f32_le (self . zacc) ; __tmp . put_f32_le (self . xgyro) ; __tmp . put_f32_le (self . ygyro) ; __tmp . put_f32_le (self . zgyro) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lng) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CAMERA_TRACKING_GEO_STATUS_DATA { pub lat : i32 , pub lon : i32 , pub alt : f32 , pub h_acc : f32 , pub v_acc : f32 , pub vel_n : f32 , pub vel_e : f32 , pub vel_d : f32 , pub vel_acc : f32 , pub dist : f32 , pub hdg : f32 , pub hdg_acc : f32 , pub tracking_status : CameraTrackingStatusFlags , } impl CAMERA_TRACKING_GEO_STATUS_DATA { pub const ENCODED_LEN : usize = 49usize ; pub const DEFAULT : Self = Self { lat : 0_i32 , lon : 0_i32 , alt : 0.0_f32 , h_acc : 0.0_f32 , v_acc : 0.0_f32 , vel_n : 0.0_f32 , vel_e : 0.0_f32 , vel_d : 0.0_f32 , vel_acc : 0.0_f32 , dist : 0.0_f32 , hdg : 0.0_f32 , hdg_acc : 0.0_f32 , tracking_status : CameraTrackingStatusFlags :: DEFAULT , } ; } impl Default for CAMERA_TRACKING_GEO_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CAMERA_TRACKING_GEO_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 276u32 ; const NAME : & 'static str = "CAMERA_TRACKING_GEO_STATUS" ; const EXTRA_CRC : u8 = 18u8 ; const ENCODED_LEN : usize = 49usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . alt = buf . get_f32_le () ; __struct . h_acc = buf . get_f32_le () ; __struct . v_acc = buf . get_f32_le () ; __struct . vel_n = buf . get_f32_le () ; __struct . vel_e = buf . get_f32_le () ; __struct . vel_d = buf . get_f32_le () ; __struct . vel_acc = buf . get_f32_le () ; __struct . dist = buf . get_f32_le () ; __struct . hdg = buf . get_f32_le () ; __struct . hdg_acc = buf . get_f32_le () ; let tmp = buf . get_u8 () ; __struct . tracking_status = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "CameraTrackingStatusFlags" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_f32_le (self . alt) ; __tmp . put_f32_le (self . h_acc) ; __tmp . put_f32_le (self . v_acc) ; __tmp . put_f32_le (self . vel_n) ; __tmp . put_f32_le (self . vel_e) ; __tmp . put_f32_le (self . vel_d) ; __tmp . put_f32_le (self . vel_acc) ; __tmp . put_f32_le (self . dist) ; __tmp . put_f32_le (self . hdg) ; __tmp . put_f32_le (self . hdg_acc) ; __tmp . put_u8 (self . tracking_status as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ESC_STATUS_DATA { pub time_usec : u64 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub rpm : [i32 ; 4] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub voltage : [f32 ; 4] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub current : [f32 ; 4] , pub index : u8 , } impl ESC_STATUS_DATA { pub const ENCODED_LEN : usize = 57usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , rpm : [0_i32 ; 4usize] , voltage : [0.0_f32 ; 4usize] , current : [0.0_f32 ; 4usize] , index : 0_u8 , } ; } impl Default for ESC_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ESC_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 291u32 ; const NAME : & 'static str = "ESC_STATUS" ; const EXTRA_CRC : u8 = 10u8 ; const ENCODED_LEN : usize = 57usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; for v in & mut __struct . rpm { let val = buf . get_i32_le () ; * v = val ; } for v in & mut __struct . voltage { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . current { let val = buf . get_f32_le () ; * v = val ; } __struct . index = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; for val in & self . rpm { __tmp . put_i32_le (* val) ; } for val in & self . voltage { __tmp . put_f32_le (* val) ; } for val in & self . current { __tmp . put_f32_le (* val) ; } __tmp . put_u8 (self . index) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CUBEPILOT_RAW_RC_DATA { } impl CUBEPILOT_RAW_RC_DATA { pub const ENCODED_LEN : usize = 0usize ; pub const DEFAULT : Self = Self { } ; } impl Default for CUBEPILOT_RAW_RC_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CUBEPILOT_RAW_RC_DATA { type Message = MavMessage ; const ID : u32 = 50001u32 ; const NAME : & 'static str = "CUBEPILOT_RAW_RC" ; const EXTRA_CRC : u8 = 1u8 ; const ENCODED_LEN : usize = 0usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { Ok (Self :: default ()) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HIGHRES_IMU_DATA { pub time_usec : u64 , pub xacc : f32 , pub yacc : f32 , pub zacc : f32 , pub xgyro : f32 , pub ygyro : f32 , pub zgyro : f32 , pub xmag : f32 , pub ymag : f32 , pub zmag : f32 , pub abs_pressure : f32 , pub diff_pressure : f32 , pub pressure_alt : f32 , pub temperature : f32 , pub fields_updated : HighresImuUpdatedFlags , } impl HIGHRES_IMU_DATA { pub const ENCODED_LEN : usize = 62usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , xacc : 0.0_f32 , yacc : 0.0_f32 , zacc : 0.0_f32 , xgyro : 0.0_f32 , ygyro : 0.0_f32 , zgyro : 0.0_f32 , xmag : 0.0_f32 , ymag : 0.0_f32 , zmag : 0.0_f32 , abs_pressure : 0.0_f32 , diff_pressure : 0.0_f32 , pressure_alt : 0.0_f32 , temperature : 0.0_f32 , fields_updated : HighresImuUpdatedFlags :: DEFAULT , } ; } impl Default for HIGHRES_IMU_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for HIGHRES_IMU_DATA { type Message = MavMessage ; const ID : u32 = 105u32 ; const NAME : & 'static str = "HIGHRES_IMU" ; const EXTRA_CRC : u8 = 93u8 ; const ENCODED_LEN : usize = 62usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . xacc = buf . get_f32_le () ; __struct . yacc = buf . get_f32_le () ; __struct . zacc = buf . get_f32_le () ; __struct . xgyro = buf . get_f32_le () ; __struct . ygyro = buf . get_f32_le () ; __struct . zgyro = buf . get_f32_le () ; __struct . xmag = buf . get_f32_le () ; __struct . ymag = buf . get_f32_le () ; __struct . zmag = buf . get_f32_le () ; __struct . abs_pressure = buf . get_f32_le () ; __struct . diff_pressure = buf . get_f32_le () ; __struct . pressure_alt = buf . get_f32_le () ; __struct . temperature = buf . get_f32_le () ; let tmp = buf . get_u16_le () ; __struct . fields_updated = HighresImuUpdatedFlags :: from_bits (tmp & HighresImuUpdatedFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "HighresImuUpdatedFlags" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . xacc) ; __tmp . put_f32_le (self . yacc) ; __tmp . put_f32_le (self . zacc) ; __tmp . put_f32_le (self . xgyro) ; __tmp . put_f32_le (self . ygyro) ; __tmp . put_f32_le (self . zgyro) ; __tmp . put_f32_le (self . xmag) ; __tmp . put_f32_le (self . ymag) ; __tmp . put_f32_le (self . zmag) ; __tmp . put_f32_le (self . abs_pressure) ; __tmp . put_f32_le (self . diff_pressure) ; __tmp . put_f32_le (self . pressure_alt) ; __tmp . put_f32_le (self . temperature) ; __tmp . put_u16_le (self . fields_updated . bits ()) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct NAV_CONTROLLER_OUTPUT_DATA { pub nav_roll : f32 , pub nav_pitch : f32 , pub alt_error : f32 , pub aspd_error : f32 , pub xtrack_error : f32 , pub nav_bearing : i16 , pub target_bearing : i16 , pub wp_dist : u16 , } impl NAV_CONTROLLER_OUTPUT_DATA { pub const ENCODED_LEN : usize = 26usize ; pub const DEFAULT : Self = Self { nav_roll : 0.0_f32 , nav_pitch : 0.0_f32 , alt_error : 0.0_f32 , aspd_error : 0.0_f32 , xtrack_error : 0.0_f32 , nav_bearing : 0_i16 , target_bearing : 0_i16 , wp_dist : 0_u16 , } ; } impl Default for NAV_CONTROLLER_OUTPUT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for NAV_CONTROLLER_OUTPUT_DATA { type Message = MavMessage ; const ID : u32 = 62u32 ; const NAME : & 'static str = "NAV_CONTROLLER_OUTPUT" ; const EXTRA_CRC : u8 = 183u8 ; const ENCODED_LEN : usize = 26usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . nav_roll = buf . get_f32_le () ; __struct . nav_pitch = buf . get_f32_le () ; __struct . alt_error = buf . get_f32_le () ; __struct . aspd_error = buf . get_f32_le () ; __struct . xtrack_error = buf . get_f32_le () ; __struct . nav_bearing = buf . get_i16_le () ; __struct . target_bearing = buf . get_i16_le () ; __struct . wp_dist = buf . get_u16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . nav_roll) ; __tmp . put_f32_le (self . nav_pitch) ; __tmp . put_f32_le (self . alt_error) ; __tmp . put_f32_le (self . aspd_error) ; __tmp . put_f32_le (self . xtrack_error) ; __tmp . put_i16_le (self . nav_bearing) ; __tmp . put_i16_le (self . target_bearing) ; __tmp . put_u16_le (self . wp_dist) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct OPEN_DRONE_ID_AUTHENTICATION_DATA { pub timestamp : u32 , pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub id_or_mac : [u8 ; 20] , pub authentication_type : MavOdidAuthType , pub data_page : u8 , pub last_page_index : u8 , pub length : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub authentication_data : [u8 ; 23] , } impl OPEN_DRONE_ID_AUTHENTICATION_DATA { pub const ENCODED_LEN : usize = 53usize ; pub const DEFAULT : Self = Self { timestamp : 0_u32 , target_system : 0_u8 , target_component : 0_u8 , id_or_mac : [0_u8 ; 20usize] , authentication_type : MavOdidAuthType :: DEFAULT , data_page : 0_u8 , last_page_index : 0_u8 , length : 0_u8 , authentication_data : [0_u8 ; 23usize] , } ; } impl Default for OPEN_DRONE_ID_AUTHENTICATION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for OPEN_DRONE_ID_AUTHENTICATION_DATA { type Message = MavMessage ; const ID : u32 = 12902u32 ; const NAME : & 'static str = "OPEN_DRONE_ID_AUTHENTICATION" ; const EXTRA_CRC : u8 = 140u8 ; const ENCODED_LEN : usize = 53usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . timestamp = buf . get_u32_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . id_or_mac { let val = buf . get_u8 () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . authentication_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidAuthType" , value : tmp as u32 }) ? ; __struct . data_page = buf . get_u8 () ; __struct . last_page_index = buf . get_u8 () ; __struct . length = buf . get_u8 () ; for v in & mut __struct . authentication_data { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . timestamp) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . id_or_mac { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . authentication_type as u8) ; __tmp . put_u8 (self . data_page) ; __tmp . put_u8 (self . last_page_index) ; __tmp . put_u8 (self . length) ; for val in & self . authentication_data { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LOGGING_DATA_ACKED_DATA { pub sequence : u16 , pub target_system : u8 , pub target_component : u8 , pub length : u8 , pub first_message_offset : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub data : [u8 ; 249] , } impl LOGGING_DATA_ACKED_DATA { pub const ENCODED_LEN : usize = 255usize ; pub const DEFAULT : Self = Self { sequence : 0_u16 , target_system : 0_u8 , target_component : 0_u8 , length : 0_u8 , first_message_offset : 0_u8 , data : [0_u8 ; 249usize] , } ; } impl Default for LOGGING_DATA_ACKED_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for LOGGING_DATA_ACKED_DATA { type Message = MavMessage ; const ID : u32 = 267u32 ; const NAME : & 'static str = "LOGGING_DATA_ACKED" ; const EXTRA_CRC : u8 = 35u8 ; const ENCODED_LEN : usize = 255usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . sequence = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . length = buf . get_u8 () ; __struct . first_message_offset = buf . get_u8 () ; for v in & mut __struct . data { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . sequence) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . length) ; __tmp . put_u8 (self . first_message_offset) ; for val in & self . data { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ICAROUS_HEARTBEAT_DATA { pub status : IcarousFmsState , } impl ICAROUS_HEARTBEAT_DATA { pub const ENCODED_LEN : usize = 1usize ; pub const DEFAULT : Self = Self { status : IcarousFmsState :: DEFAULT , } ; } impl Default for ICAROUS_HEARTBEAT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ICAROUS_HEARTBEAT_DATA { type Message = MavMessage ; const ID : u32 = 42000u32 ; const NAME : & 'static str = "ICAROUS_HEARTBEAT" ; const EXTRA_CRC : u8 = 227u8 ; const ENCODED_LEN : usize = 1usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u8 () ; __struct . status = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "IcarousFmsState" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . status as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct FENCE_POINT_DATA { pub lat : f32 , pub lng : f32 , pub target_system : u8 , pub target_component : u8 , pub idx : u8 , pub count : u8 , } impl FENCE_POINT_DATA { pub const ENCODED_LEN : usize = 12usize ; pub const DEFAULT : Self = Self { lat : 0.0_f32 , lng : 0.0_f32 , target_system : 0_u8 , target_component : 0_u8 , idx : 0_u8 , count : 0_u8 , } ; } impl Default for FENCE_POINT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for FENCE_POINT_DATA { type Message = MavMessage ; const ID : u32 = 160u32 ; const NAME : & 'static str = "FENCE_POINT" ; const EXTRA_CRC : u8 = 78u8 ; const ENCODED_LEN : usize = 12usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . lat = buf . get_f32_le () ; __struct . lng = buf . get_f32_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . idx = buf . get_u8 () ; __struct . count = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . lat) ; __tmp . put_f32_le (self . lng) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . idx) ; __tmp . put_u8 (self . count) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct OSD_PARAM_SHOW_CONFIG_REPLY_DATA { pub request_id : u32 , pub min_value : f32 , pub max_value : f32 , pub increment : f32 , pub result : OsdParamConfigError , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub param_id : [u8 ; 16] , pub config_type : OsdParamConfigType , } impl OSD_PARAM_SHOW_CONFIG_REPLY_DATA { pub const ENCODED_LEN : usize = 34usize ; pub const DEFAULT : Self = Self { request_id : 0_u32 , min_value : 0.0_f32 , max_value : 0.0_f32 , increment : 0.0_f32 , result : OsdParamConfigError :: DEFAULT , param_id : [0_u8 ; 16usize] , config_type : OsdParamConfigType :: DEFAULT , } ; } impl Default for OSD_PARAM_SHOW_CONFIG_REPLY_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for OSD_PARAM_SHOW_CONFIG_REPLY_DATA { type Message = MavMessage ; const ID : u32 = 11036u32 ; const NAME : & 'static str = "OSD_PARAM_SHOW_CONFIG_REPLY" ; const EXTRA_CRC : u8 = 177u8 ; const ENCODED_LEN : usize = 34usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . request_id = buf . get_u32_le () ; __struct . min_value = buf . get_f32_le () ; __struct . max_value = buf . get_f32_le () ; __struct . increment = buf . get_f32_le () ; let tmp = buf . get_u8 () ; __struct . result = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "OsdParamConfigError" , value : tmp as u32 }) ? ; for v in & mut __struct . param_id { let val = buf . get_u8 () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . config_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "OsdParamConfigType" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . request_id) ; __tmp . put_f32_le (self . min_value) ; __tmp . put_f32_le (self . max_value) ; __tmp . put_f32_le (self . increment) ; __tmp . put_u8 (self . result as u8) ; for val in & self . param_id { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . config_type as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ATTITUDE_TARGET_DATA { pub time_boot_ms : u32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub q : [f32 ; 4] , pub body_roll_rate : f32 , pub body_pitch_rate : f32 , pub body_yaw_rate : f32 , pub thrust : f32 , pub type_mask : AttitudeTargetTypemask , } impl ATTITUDE_TARGET_DATA { pub const ENCODED_LEN : usize = 37usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , q : [0.0_f32 ; 4usize] , body_roll_rate : 0.0_f32 , body_pitch_rate : 0.0_f32 , body_yaw_rate : 0.0_f32 , thrust : 0.0_f32 , type_mask : AttitudeTargetTypemask :: DEFAULT , } ; } impl Default for ATTITUDE_TARGET_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ATTITUDE_TARGET_DATA { type Message = MavMessage ; const ID : u32 = 83u32 ; const NAME : & 'static str = "ATTITUDE_TARGET" ; const EXTRA_CRC : u8 = 22u8 ; const ENCODED_LEN : usize = 37usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; for v in & mut __struct . q { let val = buf . get_f32_le () ; * v = val ; } __struct . body_roll_rate = buf . get_f32_le () ; __struct . body_pitch_rate = buf . get_f32_le () ; __struct . body_yaw_rate = buf . get_f32_le () ; __struct . thrust = buf . get_f32_le () ; let tmp = buf . get_u8 () ; __struct . type_mask = AttitudeTargetTypemask :: from_bits (tmp & AttitudeTargetTypemask :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "AttitudeTargetTypemask" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; for val in & self . q { __tmp . put_f32_le (* val) ; } __tmp . put_f32_le (self . body_roll_rate) ; __tmp . put_f32_le (self . body_pitch_rate) ; __tmp . put_f32_le (self . body_yaw_rate) ; __tmp . put_f32_le (self . thrust) ; __tmp . put_u8 (self . type_mask . bits ()) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LOG_REQUEST_DATA_DATA { pub ofs : u32 , pub count : u32 , pub id : u16 , pub target_system : u8 , pub target_component : u8 , } impl LOG_REQUEST_DATA_DATA { pub const ENCODED_LEN : usize = 12usize ; pub const DEFAULT : Self = Self { ofs : 0_u32 , count : 0_u32 , id : 0_u16 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for LOG_REQUEST_DATA_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for LOG_REQUEST_DATA_DATA { type Message = MavMessage ; const ID : u32 = 119u32 ; const NAME : & 'static str = "LOG_REQUEST_DATA" ; const EXTRA_CRC : u8 = 116u8 ; const ENCODED_LEN : usize = 12usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . ofs = buf . get_u32_le () ; __struct . count = buf . get_u32_le () ; __struct . id = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . ofs) ; __tmp . put_u32_le (self . count) ; __tmp . put_u16_le (self . id) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GIMBAL_REPORT_DATA { pub delta_time : f32 , pub delta_angle_x : f32 , pub delta_angle_y : f32 , pub delta_angle_z : f32 , pub delta_velocity_x : f32 , pub delta_velocity_y : f32 , pub delta_velocity_z : f32 , pub joint_roll : f32 , pub joint_el : f32 , pub joint_az : f32 , pub target_system : u8 , pub target_component : u8 , } impl GIMBAL_REPORT_DATA { pub const ENCODED_LEN : usize = 42usize ; pub const DEFAULT : Self = Self { delta_time : 0.0_f32 , delta_angle_x : 0.0_f32 , delta_angle_y : 0.0_f32 , delta_angle_z : 0.0_f32 , delta_velocity_x : 0.0_f32 , delta_velocity_y : 0.0_f32 , delta_velocity_z : 0.0_f32 , joint_roll : 0.0_f32 , joint_el : 0.0_f32 , joint_az : 0.0_f32 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for GIMBAL_REPORT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GIMBAL_REPORT_DATA { type Message = MavMessage ; const ID : u32 = 200u32 ; const NAME : & 'static str = "GIMBAL_REPORT" ; const EXTRA_CRC : u8 = 134u8 ; const ENCODED_LEN : usize = 42usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . delta_time = buf . get_f32_le () ; __struct . delta_angle_x = buf . get_f32_le () ; __struct . delta_angle_y = buf . get_f32_le () ; __struct . delta_angle_z = buf . get_f32_le () ; __struct . delta_velocity_x = buf . get_f32_le () ; __struct . delta_velocity_y = buf . get_f32_le () ; __struct . delta_velocity_z = buf . get_f32_le () ; __struct . joint_roll = buf . get_f32_le () ; __struct . joint_el = buf . get_f32_le () ; __struct . joint_az = buf . get_f32_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . delta_time) ; __tmp . put_f32_le (self . delta_angle_x) ; __tmp . put_f32_le (self . delta_angle_y) ; __tmp . put_f32_le (self . delta_angle_z) ; __tmp . put_f32_le (self . delta_velocity_x) ; __tmp . put_f32_le (self . delta_velocity_y) ; __tmp . put_f32_le (self . delta_velocity_z) ; __tmp . put_f32_le (self . joint_roll) ; __tmp . put_f32_le (self . joint_el) ; __tmp . put_f32_le (self . joint_az) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PARAM_EXT_VALUE_DATA { pub param_count : u16 , pub param_index : u16 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub param_id : [u8 ; 16] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub param_value : [u8 ; 128] , pub param_type : MavParamExtType , } impl PARAM_EXT_VALUE_DATA { pub const ENCODED_LEN : usize = 149usize ; pub const DEFAULT : Self = Self { param_count : 0_u16 , param_index : 0_u16 , param_id : [0_u8 ; 16usize] , param_value : [0_u8 ; 128usize] , param_type : MavParamExtType :: DEFAULT , } ; } impl Default for PARAM_EXT_VALUE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for PARAM_EXT_VALUE_DATA { type Message = MavMessage ; const ID : u32 = 322u32 ; const NAME : & 'static str = "PARAM_EXT_VALUE" ; const EXTRA_CRC : u8 = 243u8 ; const ENCODED_LEN : usize = 149usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . param_count = buf . get_u16_le () ; __struct . param_index = buf . get_u16_le () ; for v in & mut __struct . param_id { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . param_value { let val = buf . get_u8 () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . param_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavParamExtType" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . param_count) ; __tmp . put_u16_le (self . param_index) ; for val in & self . param_id { __tmp . put_u8 (* val) ; } for val in & self . param_value { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . param_type as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SERVO_OUTPUT_RAW_DATA { pub time_usec : u32 , pub servo1_raw : u16 , pub servo2_raw : u16 , pub servo3_raw : u16 , pub servo4_raw : u16 , pub servo5_raw : u16 , pub servo6_raw : u16 , pub servo7_raw : u16 , pub servo8_raw : u16 , pub port : u8 , } impl SERVO_OUTPUT_RAW_DATA { pub const ENCODED_LEN : usize = 21usize ; pub const DEFAULT : Self = Self { time_usec : 0_u32 , servo1_raw : 0_u16 , servo2_raw : 0_u16 , servo3_raw : 0_u16 , servo4_raw : 0_u16 , servo5_raw : 0_u16 , servo6_raw : 0_u16 , servo7_raw : 0_u16 , servo8_raw : 0_u16 , port : 0_u8 , } ; } impl Default for SERVO_OUTPUT_RAW_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SERVO_OUTPUT_RAW_DATA { type Message = MavMessage ; const ID : u32 = 36u32 ; const NAME : & 'static str = "SERVO_OUTPUT_RAW" ; const EXTRA_CRC : u8 = 222u8 ; const ENCODED_LEN : usize = 21usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u32_le () ; __struct . servo1_raw = buf . get_u16_le () ; __struct . servo2_raw = buf . get_u16_le () ; __struct . servo3_raw = buf . get_u16_le () ; __struct . servo4_raw = buf . get_u16_le () ; __struct . servo5_raw = buf . get_u16_le () ; __struct . servo6_raw = buf . get_u16_le () ; __struct . servo7_raw = buf . get_u16_le () ; __struct . servo8_raw = buf . get_u16_le () ; __struct . port = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_usec) ; __tmp . put_u16_le (self . servo1_raw) ; __tmp . put_u16_le (self . servo2_raw) ; __tmp . put_u16_le (self . servo3_raw) ; __tmp . put_u16_le (self . servo4_raw) ; __tmp . put_u16_le (self . servo5_raw) ; __tmp . put_u16_le (self . servo6_raw) ; __tmp . put_u16_le (self . servo7_raw) ; __tmp . put_u16_le (self . servo8_raw) ; __tmp . put_u8 (self . port) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ESC_INFO_DATA { pub time_usec : u64 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub error_count : [u32 ; 4] , pub counter : u16 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub failure_flags : [u16 ; 4] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub temperature : [i16 ; 4] , pub index : u8 , pub count : u8 , pub connection_type : EscConnectionType , pub info : u8 , } impl ESC_INFO_DATA { pub const ENCODED_LEN : usize = 46usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , error_count : [0_u32 ; 4usize] , counter : 0_u16 , failure_flags : [0_u16 ; 4usize] , temperature : [0_i16 ; 4usize] , index : 0_u8 , count : 0_u8 , connection_type : EscConnectionType :: DEFAULT , info : 0_u8 , } ; } impl Default for ESC_INFO_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ESC_INFO_DATA { type Message = MavMessage ; const ID : u32 = 290u32 ; const NAME : & 'static str = "ESC_INFO" ; const EXTRA_CRC : u8 = 251u8 ; const ENCODED_LEN : usize = 46usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; for v in & mut __struct . error_count { let val = buf . get_u32_le () ; * v = val ; } __struct . counter = buf . get_u16_le () ; for v in & mut __struct . failure_flags { let val = buf . get_u16_le () ; * v = val ; } for v in & mut __struct . temperature { let val = buf . get_i16_le () ; * v = val ; } __struct . index = buf . get_u8 () ; __struct . count = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . connection_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "EscConnectionType" , value : tmp as u32 }) ? ; __struct . info = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; for val in & self . error_count { __tmp . put_u32_le (* val) ; } __tmp . put_u16_le (self . counter) ; for val in & self . failure_flags { __tmp . put_u16_le (* val) ; } for val in & self . temperature { __tmp . put_i16_le (* val) ; } __tmp . put_u8 (self . index) ; __tmp . put_u8 (self . count) ; __tmp . put_u8 (self . connection_type as u8) ; __tmp . put_u8 (self . info) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct OPEN_DRONE_ID_SYSTEM_DATA { pub operator_latitude : i32 , pub operator_longitude : i32 , pub area_ceiling : f32 , pub area_floor : f32 , pub operator_altitude_geo : f32 , pub timestamp : u32 , pub area_count : u16 , pub area_radius : u16 , pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub id_or_mac : [u8 ; 20] , pub operator_location_type : MavOdidOperatorLocationType , pub classification_type : MavOdidClassificationType , pub category_eu : MavOdidCategoryEu , pub class_eu : MavOdidClassEu , } impl OPEN_DRONE_ID_SYSTEM_DATA { pub const ENCODED_LEN : usize = 54usize ; pub const DEFAULT : Self = Self { operator_latitude : 0_i32 , operator_longitude : 0_i32 , area_ceiling : 0.0_f32 , area_floor : 0.0_f32 , operator_altitude_geo : 0.0_f32 , timestamp : 0_u32 , area_count : 0_u16 , area_radius : 0_u16 , target_system : 0_u8 , target_component : 0_u8 , id_or_mac : [0_u8 ; 20usize] , operator_location_type : MavOdidOperatorLocationType :: DEFAULT , classification_type : MavOdidClassificationType :: DEFAULT , category_eu : MavOdidCategoryEu :: DEFAULT , class_eu : MavOdidClassEu :: DEFAULT , } ; } impl Default for OPEN_DRONE_ID_SYSTEM_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for OPEN_DRONE_ID_SYSTEM_DATA { type Message = MavMessage ; const ID : u32 = 12904u32 ; const NAME : & 'static str = "OPEN_DRONE_ID_SYSTEM" ; const EXTRA_CRC : u8 = 77u8 ; const ENCODED_LEN : usize = 54usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . operator_latitude = buf . get_i32_le () ; __struct . operator_longitude = buf . get_i32_le () ; __struct . area_ceiling = buf . get_f32_le () ; __struct . area_floor = buf . get_f32_le () ; __struct . operator_altitude_geo = buf . get_f32_le () ; __struct . timestamp = buf . get_u32_le () ; __struct . area_count = buf . get_u16_le () ; __struct . area_radius = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . id_or_mac { let val = buf . get_u8 () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . operator_location_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidOperatorLocationType" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . classification_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidClassificationType" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . category_eu = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidCategoryEu" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . class_eu = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidClassEu" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . operator_latitude) ; __tmp . put_i32_le (self . operator_longitude) ; __tmp . put_f32_le (self . area_ceiling) ; __tmp . put_f32_le (self . area_floor) ; __tmp . put_f32_le (self . operator_altitude_geo) ; __tmp . put_u32_le (self . timestamp) ; __tmp . put_u16_le (self . area_count) ; __tmp . put_u16_le (self . area_radius) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . id_or_mac { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . operator_location_type as u8) ; __tmp . put_u8 (self . classification_type as u8) ; __tmp . put_u8 (self . category_eu as u8) ; __tmp . put_u8 (self . class_eu as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA { pub rfHealth : UavionixAdsbRfHealth , } impl UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA { pub const ENCODED_LEN : usize = 1usize ; pub const DEFAULT : Self = Self { rfHealth : UavionixAdsbRfHealth :: DEFAULT , } ; } impl Default for UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA { type Message = MavMessage ; const ID : u32 = 10003u32 ; const NAME : & 'static str = "UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT" ; const EXTRA_CRC : u8 = 4u8 ; const ENCODED_LEN : usize = 1usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u8 () ; __struct . rfHealth = UavionixAdsbRfHealth :: from_bits (tmp & UavionixAdsbRfHealth :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "UavionixAdsbRfHealth" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . rfHealth . bits ()) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HIGH_LATENCY_DATA { pub custom_mode : u32 , pub latitude : i32 , pub longitude : i32 , pub roll : i16 , pub pitch : i16 , pub heading : u16 , pub heading_sp : i16 , pub altitude_amsl : i16 , pub altitude_sp : i16 , pub wp_distance : u16 , pub base_mode : MavModeFlag , pub landed_state : MavLandedState , pub throttle : i8 , pub airspeed : u8 , pub airspeed_sp : u8 , pub groundspeed : u8 , pub climb_rate : i8 , pub gps_nsat : u8 , pub gps_fix_type : GpsFixType , pub battery_remaining : u8 , pub temperature : i8 , pub temperature_air : i8 , pub failsafe : u8 , pub wp_num : u8 , } impl HIGH_LATENCY_DATA { pub const ENCODED_LEN : usize = 40usize ; pub const DEFAULT : Self = Self { custom_mode : 0_u32 , latitude : 0_i32 , longitude : 0_i32 , roll : 0_i16 , pitch : 0_i16 , heading : 0_u16 , heading_sp : 0_i16 , altitude_amsl : 0_i16 , altitude_sp : 0_i16 , wp_distance : 0_u16 , base_mode : MavModeFlag :: DEFAULT , landed_state : MavLandedState :: DEFAULT , throttle : 0_i8 , airspeed : 0_u8 , airspeed_sp : 0_u8 , groundspeed : 0_u8 , climb_rate : 0_i8 , gps_nsat : 0_u8 , gps_fix_type : GpsFixType :: DEFAULT , battery_remaining : 0_u8 , temperature : 0_i8 , temperature_air : 0_i8 , failsafe : 0_u8 , wp_num : 0_u8 , } ; } impl Default for HIGH_LATENCY_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for HIGH_LATENCY_DATA { type Message = MavMessage ; const ID : u32 = 234u32 ; const NAME : & 'static str = "HIGH_LATENCY" ; const EXTRA_CRC : u8 = 150u8 ; const ENCODED_LEN : usize = 40usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . custom_mode = buf . get_u32_le () ; __struct . latitude = buf . get_i32_le () ; __struct . longitude = buf . get_i32_le () ; __struct . roll = buf . get_i16_le () ; __struct . pitch = buf . get_i16_le () ; __struct . heading = buf . get_u16_le () ; __struct . heading_sp = buf . get_i16_le () ; __struct . altitude_amsl = buf . get_i16_le () ; __struct . altitude_sp = buf . get_i16_le () ; __struct . wp_distance = buf . get_u16_le () ; let tmp = buf . get_u8 () ; __struct . base_mode = MavModeFlag :: from_bits (tmp & MavModeFlag :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "MavModeFlag" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . landed_state = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavLandedState" , value : tmp as u32 }) ? ; __struct . throttle = buf . get_i8 () ; __struct . airspeed = buf . get_u8 () ; __struct . airspeed_sp = buf . get_u8 () ; __struct . groundspeed = buf . get_u8 () ; __struct . climb_rate = buf . get_i8 () ; __struct . gps_nsat = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . gps_fix_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "GpsFixType" , value : tmp as u32 }) ? ; __struct . battery_remaining = buf . get_u8 () ; __struct . temperature = buf . get_i8 () ; __struct . temperature_air = buf . get_i8 () ; __struct . failsafe = buf . get_u8 () ; __struct . wp_num = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . custom_mode) ; __tmp . put_i32_le (self . latitude) ; __tmp . put_i32_le (self . longitude) ; __tmp . put_i16_le (self . roll) ; __tmp . put_i16_le (self . pitch) ; __tmp . put_u16_le (self . heading) ; __tmp . put_i16_le (self . heading_sp) ; __tmp . put_i16_le (self . altitude_amsl) ; __tmp . put_i16_le (self . altitude_sp) ; __tmp . put_u16_le (self . wp_distance) ; __tmp . put_u8 (self . base_mode . bits ()) ; __tmp . put_u8 (self . landed_state as u8) ; __tmp . put_i8 (self . throttle) ; __tmp . put_u8 (self . airspeed) ; __tmp . put_u8 (self . airspeed_sp) ; __tmp . put_u8 (self . groundspeed) ; __tmp . put_i8 (self . climb_rate) ; __tmp . put_u8 (self . gps_nsat) ; __tmp . put_u8 (self . gps_fix_type as u8) ; __tmp . put_u8 (self . battery_remaining) ; __tmp . put_i8 (self . temperature) ; __tmp . put_i8 (self . temperature_air) ; __tmp . put_u8 (self . failsafe) ; __tmp . put_u8 (self . wp_num) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PID_TUNING_DATA { pub desired : f32 , pub achieved : f32 , pub FF : f32 , pub P : f32 , pub I : f32 , pub D : f32 , pub axis : PidTuningAxis , } impl PID_TUNING_DATA { pub const ENCODED_LEN : usize = 25usize ; pub const DEFAULT : Self = Self { desired : 0.0_f32 , achieved : 0.0_f32 , FF : 0.0_f32 , P : 0.0_f32 , I : 0.0_f32 , D : 0.0_f32 , axis : PidTuningAxis :: DEFAULT , } ; } impl Default for PID_TUNING_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for PID_TUNING_DATA { type Message = MavMessage ; const ID : u32 = 194u32 ; const NAME : & 'static str = "PID_TUNING" ; const EXTRA_CRC : u8 = 98u8 ; const ENCODED_LEN : usize = 25usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . desired = buf . get_f32_le () ; __struct . achieved = buf . get_f32_le () ; __struct . FF = buf . get_f32_le () ; __struct . P = buf . get_f32_le () ; __struct . I = buf . get_f32_le () ; __struct . D = buf . get_f32_le () ; let tmp = buf . get_u8 () ; __struct . axis = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "PidTuningAxis" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . desired) ; __tmp . put_f32_le (self . achieved) ; __tmp . put_f32_le (self . FF) ; __tmp . put_f32_le (self . P) ; __tmp . put_f32_le (self . I) ; __tmp . put_f32_le (self . D) ; __tmp . put_u8 (self . axis as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct RANGEFINDER_DATA { pub distance : f32 , pub voltage : f32 , } impl RANGEFINDER_DATA { pub const ENCODED_LEN : usize = 8usize ; pub const DEFAULT : Self = Self { distance : 0.0_f32 , voltage : 0.0_f32 , } ; } impl Default for RANGEFINDER_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for RANGEFINDER_DATA { type Message = MavMessage ; const ID : u32 = 173u32 ; const NAME : & 'static str = "RANGEFINDER" ; const EXTRA_CRC : u8 = 83u8 ; const ENCODED_LEN : usize = 8usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . distance = buf . get_f32_le () ; __struct . voltage = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . distance) ; __tmp . put_f32_le (self . voltage) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GIMBAL_DEVICE_SET_ATTITUDE_DATA { # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub q : [f32 ; 4] , pub angular_velocity_x : f32 , pub angular_velocity_y : f32 , pub angular_velocity_z : f32 , pub flags : GimbalDeviceFlags , pub target_system : u8 , pub target_component : u8 , } impl GIMBAL_DEVICE_SET_ATTITUDE_DATA { pub const ENCODED_LEN : usize = 32usize ; pub const DEFAULT : Self = Self { q : [0.0_f32 ; 4usize] , angular_velocity_x : 0.0_f32 , angular_velocity_y : 0.0_f32 , angular_velocity_z : 0.0_f32 , flags : GimbalDeviceFlags :: DEFAULT , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for GIMBAL_DEVICE_SET_ATTITUDE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GIMBAL_DEVICE_SET_ATTITUDE_DATA { type Message = MavMessage ; const ID : u32 = 284u32 ; const NAME : & 'static str = "GIMBAL_DEVICE_SET_ATTITUDE" ; const EXTRA_CRC : u8 = 99u8 ; const ENCODED_LEN : usize = 32usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; for v in & mut __struct . q { let val = buf . get_f32_le () ; * v = val ; } __struct . angular_velocity_x = buf . get_f32_le () ; __struct . angular_velocity_y = buf . get_f32_le () ; __struct . angular_velocity_z = buf . get_f32_le () ; let tmp = buf . get_u16_le () ; __struct . flags = GimbalDeviceFlags :: from_bits (tmp & GimbalDeviceFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "GimbalDeviceFlags" , value : tmp as u32 }) ? ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; for val in & self . q { __tmp . put_f32_le (* val) ; } __tmp . put_f32_le (self . angular_velocity_x) ; __tmp . put_f32_le (self . angular_velocity_y) ; __tmp . put_f32_le (self . angular_velocity_z) ; __tmp . put_u16_le (self . flags . bits ()) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct VISION_POSITION_DELTA_DATA { pub time_usec : u64 , pub time_delta_usec : u64 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub angle_delta : [f32 ; 3] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub position_delta : [f32 ; 3] , pub confidence : f32 , } impl VISION_POSITION_DELTA_DATA { pub const ENCODED_LEN : usize = 44usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , time_delta_usec : 0_u64 , angle_delta : [0.0_f32 ; 3usize] , position_delta : [0.0_f32 ; 3usize] , confidence : 0.0_f32 , } ; } impl Default for VISION_POSITION_DELTA_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for VISION_POSITION_DELTA_DATA { type Message = MavMessage ; const ID : u32 = 11011u32 ; const NAME : & 'static str = "VISION_POSITION_DELTA" ; const EXTRA_CRC : u8 = 106u8 ; const ENCODED_LEN : usize = 44usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . time_delta_usec = buf . get_u64_le () ; for v in & mut __struct . angle_delta { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . position_delta { let val = buf . get_f32_le () ; * v = val ; } __struct . confidence = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_u64_le (self . time_delta_usec) ; for val in & self . angle_delta { __tmp . put_f32_le (* val) ; } for val in & self . position_delta { __tmp . put_f32_le (* val) ; } __tmp . put_f32_le (self . confidence) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CAMERA_FEEDBACK_DATA { pub time_usec : u64 , pub lat : i32 , pub lng : i32 , pub alt_msl : f32 , pub alt_rel : f32 , pub roll : f32 , pub pitch : f32 , pub yaw : f32 , pub foc_len : f32 , pub img_idx : u16 , pub target_system : u8 , pub cam_idx : u8 , pub flags : CameraFeedbackFlags , } impl CAMERA_FEEDBACK_DATA { pub const ENCODED_LEN : usize = 45usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , lat : 0_i32 , lng : 0_i32 , alt_msl : 0.0_f32 , alt_rel : 0.0_f32 , roll : 0.0_f32 , pitch : 0.0_f32 , yaw : 0.0_f32 , foc_len : 0.0_f32 , img_idx : 0_u16 , target_system : 0_u8 , cam_idx : 0_u8 , flags : CameraFeedbackFlags :: DEFAULT , } ; } impl Default for CAMERA_FEEDBACK_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CAMERA_FEEDBACK_DATA { type Message = MavMessage ; const ID : u32 = 180u32 ; const NAME : & 'static str = "CAMERA_FEEDBACK" ; const EXTRA_CRC : u8 = 52u8 ; const ENCODED_LEN : usize = 45usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . lat = buf . get_i32_le () ; __struct . lng = buf . get_i32_le () ; __struct . alt_msl = buf . get_f32_le () ; __struct . alt_rel = buf . get_f32_le () ; __struct . roll = buf . get_f32_le () ; __struct . pitch = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; __struct . foc_len = buf . get_f32_le () ; __struct . img_idx = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . cam_idx = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . flags = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "CameraFeedbackFlags" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lng) ; __tmp . put_f32_le (self . alt_msl) ; __tmp . put_f32_le (self . alt_rel) ; __tmp . put_f32_le (self . roll) ; __tmp . put_f32_le (self . pitch) ; __tmp . put_f32_le (self . yaw) ; __tmp . put_f32_le (self . foc_len) ; __tmp . put_u16_le (self . img_idx) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . cam_idx) ; __tmp . put_u8 (self . flags as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct BUTTON_CHANGE_DATA { pub time_boot_ms : u32 , pub last_change_ms : u32 , pub state : u8 , } impl BUTTON_CHANGE_DATA { pub const ENCODED_LEN : usize = 9usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , last_change_ms : 0_u32 , state : 0_u8 , } ; } impl Default for BUTTON_CHANGE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for BUTTON_CHANGE_DATA { type Message = MavMessage ; const ID : u32 = 257u32 ; const NAME : & 'static str = "BUTTON_CHANGE" ; const EXTRA_CRC : u8 = 131u8 ; const ENCODED_LEN : usize = 9usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . last_change_ms = buf . get_u32_le () ; __struct . state = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_u32_le (self . last_change_ms) ; __tmp . put_u8 (self . state) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct DEEPSTALL_DATA { pub landing_lat : i32 , pub landing_lon : i32 , pub path_lat : i32 , pub path_lon : i32 , pub arc_entry_lat : i32 , pub arc_entry_lon : i32 , pub altitude : f32 , pub expected_travel_distance : f32 , pub cross_track_error : f32 , pub stage : DeepstallStage , } impl DEEPSTALL_DATA { pub const ENCODED_LEN : usize = 37usize ; pub const DEFAULT : Self = Self { landing_lat : 0_i32 , landing_lon : 0_i32 , path_lat : 0_i32 , path_lon : 0_i32 , arc_entry_lat : 0_i32 , arc_entry_lon : 0_i32 , altitude : 0.0_f32 , expected_travel_distance : 0.0_f32 , cross_track_error : 0.0_f32 , stage : DeepstallStage :: DEFAULT , } ; } impl Default for DEEPSTALL_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for DEEPSTALL_DATA { type Message = MavMessage ; const ID : u32 = 195u32 ; const NAME : & 'static str = "DEEPSTALL" ; const EXTRA_CRC : u8 = 120u8 ; const ENCODED_LEN : usize = 37usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . landing_lat = buf . get_i32_le () ; __struct . landing_lon = buf . get_i32_le () ; __struct . path_lat = buf . get_i32_le () ; __struct . path_lon = buf . get_i32_le () ; __struct . arc_entry_lat = buf . get_i32_le () ; __struct . arc_entry_lon = buf . get_i32_le () ; __struct . altitude = buf . get_f32_le () ; __struct . expected_travel_distance = buf . get_f32_le () ; __struct . cross_track_error = buf . get_f32_le () ; let tmp = buf . get_u8 () ; __struct . stage = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "DeepstallStage" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . landing_lat) ; __tmp . put_i32_le (self . landing_lon) ; __tmp . put_i32_le (self . path_lat) ; __tmp . put_i32_le (self . path_lon) ; __tmp . put_i32_le (self . arc_entry_lat) ; __tmp . put_i32_le (self . arc_entry_lon) ; __tmp . put_f32_le (self . altitude) ; __tmp . put_f32_le (self . expected_travel_distance) ; __tmp . put_f32_le (self . cross_track_error) ; __tmp . put_u8 (self . stage as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ONBOARD_COMPUTER_STATUS_DATA { pub time_usec : u64 , pub uptime : u32 , pub ram_usage : u32 , pub ram_total : u32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub storage_type : [u32 ; 4] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub storage_usage : [u32 ; 4] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub storage_total : [u32 ; 4] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub link_type : [u32 ; 6] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub link_tx_rate : [u32 ; 6] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub link_rx_rate : [u32 ; 6] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub link_tx_max : [u32 ; 6] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub link_rx_max : [u32 ; 6] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub fan_speed : [i16 ; 4] , pub mavtype : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub cpu_cores : [u8 ; 8] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub cpu_combined : [u8 ; 10] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub gpu_cores : [u8 ; 4] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub gpu_combined : [u8 ; 10] , pub temperature_board : i8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub temperature_core : [i8 ; 8] , } impl ONBOARD_COMPUTER_STATUS_DATA { pub const ENCODED_LEN : usize = 238usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , uptime : 0_u32 , ram_usage : 0_u32 , ram_total : 0_u32 , storage_type : [0_u32 ; 4usize] , storage_usage : [0_u32 ; 4usize] , storage_total : [0_u32 ; 4usize] , link_type : [0_u32 ; 6usize] , link_tx_rate : [0_u32 ; 6usize] , link_rx_rate : [0_u32 ; 6usize] , link_tx_max : [0_u32 ; 6usize] , link_rx_max : [0_u32 ; 6usize] , fan_speed : [0_i16 ; 4usize] , mavtype : 0_u8 , cpu_cores : [0_u8 ; 8usize] , cpu_combined : [0_u8 ; 10usize] , gpu_cores : [0_u8 ; 4usize] , gpu_combined : [0_u8 ; 10usize] , temperature_board : 0_i8 , temperature_core : [0_i8 ; 8usize] , } ; } impl Default for ONBOARD_COMPUTER_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ONBOARD_COMPUTER_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 390u32 ; const NAME : & 'static str = "ONBOARD_COMPUTER_STATUS" ; const EXTRA_CRC : u8 = 156u8 ; const ENCODED_LEN : usize = 238usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . uptime = buf . get_u32_le () ; __struct . ram_usage = buf . get_u32_le () ; __struct . ram_total = buf . get_u32_le () ; for v in & mut __struct . storage_type { let val = buf . get_u32_le () ; * v = val ; } for v in & mut __struct . storage_usage { let val = buf . get_u32_le () ; * v = val ; } for v in & mut __struct . storage_total { let val = buf . get_u32_le () ; * v = val ; } for v in & mut __struct . link_type { let val = buf . get_u32_le () ; * v = val ; } for v in & mut __struct . link_tx_rate { let val = buf . get_u32_le () ; * v = val ; } for v in & mut __struct . link_rx_rate { let val = buf . get_u32_le () ; * v = val ; } for v in & mut __struct . link_tx_max { let val = buf . get_u32_le () ; * v = val ; } for v in & mut __struct . link_rx_max { let val = buf . get_u32_le () ; * v = val ; } for v in & mut __struct . fan_speed { let val = buf . get_i16_le () ; * v = val ; } __struct . mavtype = buf . get_u8 () ; for v in & mut __struct . cpu_cores { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . cpu_combined { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . gpu_cores { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . gpu_combined { let val = buf . get_u8 () ; * v = val ; } __struct . temperature_board = buf . get_i8 () ; for v in & mut __struct . temperature_core { let val = buf . get_i8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_u32_le (self . uptime) ; __tmp . put_u32_le (self . ram_usage) ; __tmp . put_u32_le (self . ram_total) ; for val in & self . storage_type { __tmp . put_u32_le (* val) ; } for val in & self . storage_usage { __tmp . put_u32_le (* val) ; } for val in & self . storage_total { __tmp . put_u32_le (* val) ; } for val in & self . link_type { __tmp . put_u32_le (* val) ; } for val in & self . link_tx_rate { __tmp . put_u32_le (* val) ; } for val in & self . link_rx_rate { __tmp . put_u32_le (* val) ; } for val in & self . link_tx_max { __tmp . put_u32_le (* val) ; } for val in & self . link_rx_max { __tmp . put_u32_le (* val) ; } for val in & self . fan_speed { __tmp . put_i16_le (* val) ; } __tmp . put_u8 (self . mavtype) ; for val in & self . cpu_cores { __tmp . put_u8 (* val) ; } for val in & self . cpu_combined { __tmp . put_u8 (* val) ; } for val in & self . gpu_cores { __tmp . put_u8 (* val) ; } for val in & self . gpu_combined { __tmp . put_u8 (* val) ; } __tmp . put_i8 (self . temperature_board) ; for val in & self . temperature_core { __tmp . put_i8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GOPRO_GET_RESPONSE_DATA { pub cmd_id : GoproCommand , pub status : GoproRequestStatus , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub value : [u8 ; 4] , } impl GOPRO_GET_RESPONSE_DATA { pub const ENCODED_LEN : usize = 6usize ; pub const DEFAULT : Self = Self { cmd_id : GoproCommand :: DEFAULT , status : GoproRequestStatus :: DEFAULT , value : [0_u8 ; 4usize] , } ; } impl Default for GOPRO_GET_RESPONSE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GOPRO_GET_RESPONSE_DATA { type Message = MavMessage ; const ID : u32 = 217u32 ; const NAME : & 'static str = "GOPRO_GET_RESPONSE" ; const EXTRA_CRC : u8 = 202u8 ; const ENCODED_LEN : usize = 6usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u8 () ; __struct . cmd_id = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "GoproCommand" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . status = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "GoproRequestStatus" , value : tmp as u32 }) ? ; for v in & mut __struct . value { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . cmd_id as u8) ; __tmp . put_u8 (self . status as u8) ; for val in & self . value { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GIMBAL_DEVICE_ATTITUDE_STATUS_DATA { pub time_boot_ms : u32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub q : [f32 ; 4] , pub angular_velocity_x : f32 , pub angular_velocity_y : f32 , pub angular_velocity_z : f32 , pub failure_flags : GimbalDeviceErrorFlags , pub flags : GimbalDeviceFlags , pub target_system : u8 , pub target_component : u8 , } impl GIMBAL_DEVICE_ATTITUDE_STATUS_DATA { pub const ENCODED_LEN : usize = 40usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , q : [0.0_f32 ; 4usize] , angular_velocity_x : 0.0_f32 , angular_velocity_y : 0.0_f32 , angular_velocity_z : 0.0_f32 , failure_flags : GimbalDeviceErrorFlags :: DEFAULT , flags : GimbalDeviceFlags :: DEFAULT , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for GIMBAL_DEVICE_ATTITUDE_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GIMBAL_DEVICE_ATTITUDE_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 285u32 ; const NAME : & 'static str = "GIMBAL_DEVICE_ATTITUDE_STATUS" ; const EXTRA_CRC : u8 = 137u8 ; const ENCODED_LEN : usize = 40usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; for v in & mut __struct . q { let val = buf . get_f32_le () ; * v = val ; } __struct . angular_velocity_x = buf . get_f32_le () ; __struct . angular_velocity_y = buf . get_f32_le () ; __struct . angular_velocity_z = buf . get_f32_le () ; let tmp = buf . get_u32_le () ; __struct . failure_flags = GimbalDeviceErrorFlags :: from_bits (tmp & GimbalDeviceErrorFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "GimbalDeviceErrorFlags" , value : tmp as u32 }) ? ; let tmp = buf . get_u16_le () ; __struct . flags = GimbalDeviceFlags :: from_bits (tmp & GimbalDeviceFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "GimbalDeviceFlags" , value : tmp as u32 }) ? ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; for val in & self . q { __tmp . put_f32_le (* val) ; } __tmp . put_f32_le (self . angular_velocity_x) ; __tmp . put_f32_le (self . angular_velocity_y) ; __tmp . put_f32_le (self . angular_velocity_z) ; __tmp . put_u32_le (self . failure_flags . bits ()) ; __tmp . put_u16_le (self . flags . bits ()) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PARAM_EXT_REQUEST_LIST_DATA { pub target_system : u8 , pub target_component : u8 , } impl PARAM_EXT_REQUEST_LIST_DATA { pub const ENCODED_LEN : usize = 2usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for PARAM_EXT_REQUEST_LIST_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for PARAM_EXT_REQUEST_LIST_DATA { type Message = MavMessage ; const ID : u32 = 321u32 ; const NAME : & 'static str = "PARAM_EXT_REQUEST_LIST" ; const EXTRA_CRC : u8 = 88u8 ; const ENCODED_LEN : usize = 2usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct OSD_PARAM_CONFIG_REPLY_DATA { pub request_id : u32 , pub result : OsdParamConfigError , } impl OSD_PARAM_CONFIG_REPLY_DATA { pub const ENCODED_LEN : usize = 5usize ; pub const DEFAULT : Self = Self { request_id : 0_u32 , result : OsdParamConfigError :: DEFAULT , } ; } impl Default for OSD_PARAM_CONFIG_REPLY_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for OSD_PARAM_CONFIG_REPLY_DATA { type Message = MavMessage ; const ID : u32 = 11034u32 ; const NAME : & 'static str = "OSD_PARAM_CONFIG_REPLY" ; const EXTRA_CRC : u8 = 79u8 ; const ENCODED_LEN : usize = 5usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . request_id = buf . get_u32_le () ; let tmp = buf . get_u8 () ; __struct . result = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "OsdParamConfigError" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . request_id) ; __tmp . put_u8 (self . result as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HIL_STATE_QUATERNION_DATA { pub time_usec : u64 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub attitude_quaternion : [f32 ; 4] , pub rollspeed : f32 , pub pitchspeed : f32 , pub yawspeed : f32 , pub lat : i32 , pub lon : i32 , pub alt : i32 , pub vx : i16 , pub vy : i16 , pub vz : i16 , pub ind_airspeed : u16 , pub true_airspeed : u16 , pub xacc : i16 , pub yacc : i16 , pub zacc : i16 , } impl HIL_STATE_QUATERNION_DATA { pub const ENCODED_LEN : usize = 64usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , attitude_quaternion : [0.0_f32 ; 4usize] , rollspeed : 0.0_f32 , pitchspeed : 0.0_f32 , yawspeed : 0.0_f32 , lat : 0_i32 , lon : 0_i32 , alt : 0_i32 , vx : 0_i16 , vy : 0_i16 , vz : 0_i16 , ind_airspeed : 0_u16 , true_airspeed : 0_u16 , xacc : 0_i16 , yacc : 0_i16 , zacc : 0_i16 , } ; } impl Default for HIL_STATE_QUATERNION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for HIL_STATE_QUATERNION_DATA { type Message = MavMessage ; const ID : u32 = 115u32 ; const NAME : & 'static str = "HIL_STATE_QUATERNION" ; const EXTRA_CRC : u8 = 4u8 ; const ENCODED_LEN : usize = 64usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; for v in & mut __struct . attitude_quaternion { let val = buf . get_f32_le () ; * v = val ; } __struct . rollspeed = buf . get_f32_le () ; __struct . pitchspeed = buf . get_f32_le () ; __struct . yawspeed = buf . get_f32_le () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . alt = buf . get_i32_le () ; __struct . vx = buf . get_i16_le () ; __struct . vy = buf . get_i16_le () ; __struct . vz = buf . get_i16_le () ; __struct . ind_airspeed = buf . get_u16_le () ; __struct . true_airspeed = buf . get_u16_le () ; __struct . xacc = buf . get_i16_le () ; __struct . yacc = buf . get_i16_le () ; __struct . zacc = buf . get_i16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; for val in & self . attitude_quaternion { __tmp . put_f32_le (* val) ; } __tmp . put_f32_le (self . rollspeed) ; __tmp . put_f32_le (self . pitchspeed) ; __tmp . put_f32_le (self . yawspeed) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_i32_le (self . alt) ; __tmp . put_i16_le (self . vx) ; __tmp . put_i16_le (self . vy) ; __tmp . put_i16_le (self . vz) ; __tmp . put_u16_le (self . ind_airspeed) ; __tmp . put_u16_le (self . true_airspeed) ; __tmp . put_i16_le (self . xacc) ; __tmp . put_i16_le (self . yacc) ; __tmp . put_i16_le (self . zacc) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CAMERA_SETTINGS_DATA { pub time_boot_ms : u32 , pub mode_id : CameraMode , } impl CAMERA_SETTINGS_DATA { pub const ENCODED_LEN : usize = 5usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , mode_id : CameraMode :: DEFAULT , } ; } impl Default for CAMERA_SETTINGS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CAMERA_SETTINGS_DATA { type Message = MavMessage ; const ID : u32 = 260u32 ; const NAME : & 'static str = "CAMERA_SETTINGS" ; const EXTRA_CRC : u8 = 146u8 ; const ENCODED_LEN : usize = 5usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; let tmp = buf . get_u8 () ; __struct . mode_id = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "CameraMode" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_u8 (self . mode_id as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CURRENT_EVENT_SEQUENCE_DATA { pub sequence : u16 , pub flags : MavEventCurrentSequenceFlags , } impl CURRENT_EVENT_SEQUENCE_DATA { pub const ENCODED_LEN : usize = 3usize ; pub const DEFAULT : Self = Self { sequence : 0_u16 , flags : MavEventCurrentSequenceFlags :: DEFAULT , } ; } impl Default for CURRENT_EVENT_SEQUENCE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CURRENT_EVENT_SEQUENCE_DATA { type Message = MavMessage ; const ID : u32 = 411u32 ; const NAME : & 'static str = "CURRENT_EVENT_SEQUENCE" ; const EXTRA_CRC : u8 = 106u8 ; const ENCODED_LEN : usize = 3usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . sequence = buf . get_u16_le () ; let tmp = buf . get_u8 () ; __struct . flags = MavEventCurrentSequenceFlags :: from_bits (tmp & MavEventCurrentSequenceFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "MavEventCurrentSequenceFlags" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . sequence) ; __tmp . put_u8 (self . flags . bits ()) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct RESOURCE_REQUEST_DATA { pub request_id : u8 , pub uri_type : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub uri : [u8 ; 120] , pub transfer_type : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub storage : [u8 ; 120] , } impl RESOURCE_REQUEST_DATA { pub const ENCODED_LEN : usize = 243usize ; pub const DEFAULT : Self = Self { request_id : 0_u8 , uri_type : 0_u8 , uri : [0_u8 ; 120usize] , transfer_type : 0_u8 , storage : [0_u8 ; 120usize] , } ; } impl Default for RESOURCE_REQUEST_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for RESOURCE_REQUEST_DATA { type Message = MavMessage ; const ID : u32 = 142u32 ; const NAME : & 'static str = "RESOURCE_REQUEST" ; const EXTRA_CRC : u8 = 72u8 ; const ENCODED_LEN : usize = 243usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . request_id = buf . get_u8 () ; __struct . uri_type = buf . get_u8 () ; for v in & mut __struct . uri { let val = buf . get_u8 () ; * v = val ; } __struct . transfer_type = buf . get_u8 () ; for v in & mut __struct . storage { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . request_id) ; __tmp . put_u8 (self . uri_type) ; for val in & self . uri { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . transfer_type) ; for val in & self . storage { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LOG_DATA_DATA { pub ofs : u32 , pub id : u16 , pub count : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub data : [u8 ; 90] , } impl LOG_DATA_DATA { pub const ENCODED_LEN : usize = 97usize ; pub const DEFAULT : Self = Self { ofs : 0_u32 , id : 0_u16 , count : 0_u8 , data : [0_u8 ; 90usize] , } ; } impl Default for LOG_DATA_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for LOG_DATA_DATA { type Message = MavMessage ; const ID : u32 = 120u32 ; const NAME : & 'static str = "LOG_DATA" ; const EXTRA_CRC : u8 = 134u8 ; const ENCODED_LEN : usize = 97usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . ofs = buf . get_u32_le () ; __struct . id = buf . get_u16_le () ; __struct . count = buf . get_u8 () ; for v in & mut __struct . data { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . ofs) ; __tmp . put_u16_le (self . id) ; __tmp . put_u8 (self . count) ; for val in & self . data { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ATTITUDE_QUATERNION_COV_DATA { pub time_usec : u64 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub q : [f32 ; 4] , pub rollspeed : f32 , pub pitchspeed : f32 , pub yawspeed : f32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub covariance : [f32 ; 9] , } impl ATTITUDE_QUATERNION_COV_DATA { pub const ENCODED_LEN : usize = 72usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , q : [0.0_f32 ; 4usize] , rollspeed : 0.0_f32 , pitchspeed : 0.0_f32 , yawspeed : 0.0_f32 , covariance : [0.0_f32 ; 9usize] , } ; } impl Default for ATTITUDE_QUATERNION_COV_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ATTITUDE_QUATERNION_COV_DATA { type Message = MavMessage ; const ID : u32 = 61u32 ; const NAME : & 'static str = "ATTITUDE_QUATERNION_COV" ; const EXTRA_CRC : u8 = 167u8 ; const ENCODED_LEN : usize = 72usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; for v in & mut __struct . q { let val = buf . get_f32_le () ; * v = val ; } __struct . rollspeed = buf . get_f32_le () ; __struct . pitchspeed = buf . get_f32_le () ; __struct . yawspeed = buf . get_f32_le () ; for v in & mut __struct . covariance { let val = buf . get_f32_le () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; for val in & self . q { __tmp . put_f32_le (* val) ; } __tmp . put_f32_le (self . rollspeed) ; __tmp . put_f32_le (self . pitchspeed) ; __tmp . put_f32_le (self . yawspeed) ; for val in & self . covariance { __tmp . put_f32_le (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct TRAJECTORY_REPRESENTATION_BEZIER_DATA { pub time_usec : u64 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub pos_x : [f32 ; 5] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub pos_y : [f32 ; 5] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub pos_z : [f32 ; 5] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub delta : [f32 ; 5] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub pos_yaw : [f32 ; 5] , pub valid_points : u8 , } impl TRAJECTORY_REPRESENTATION_BEZIER_DATA { pub const ENCODED_LEN : usize = 109usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , pos_x : [0.0_f32 ; 5usize] , pos_y : [0.0_f32 ; 5usize] , pos_z : [0.0_f32 ; 5usize] , delta : [0.0_f32 ; 5usize] , pos_yaw : [0.0_f32 ; 5usize] , valid_points : 0_u8 , } ; } impl Default for TRAJECTORY_REPRESENTATION_BEZIER_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for TRAJECTORY_REPRESENTATION_BEZIER_DATA { type Message = MavMessage ; const ID : u32 = 333u32 ; const NAME : & 'static str = "TRAJECTORY_REPRESENTATION_BEZIER" ; const EXTRA_CRC : u8 = 231u8 ; const ENCODED_LEN : usize = 109usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; for v in & mut __struct . pos_x { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . pos_y { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . pos_z { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . delta { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . pos_yaw { let val = buf . get_f32_le () ; * v = val ; } __struct . valid_points = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; for val in & self . pos_x { __tmp . put_f32_le (* val) ; } for val in & self . pos_y { __tmp . put_f32_le (* val) ; } for val in & self . pos_z { __tmp . put_f32_le (* val) ; } for val in & self . delta { __tmp . put_f32_le (* val) ; } for val in & self . pos_yaw { __tmp . put_f32_le (* val) ; } __tmp . put_u8 (self . valid_points) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SAFETY_ALLOWED_AREA_DATA { pub p1x : f32 , pub p1y : f32 , pub p1z : f32 , pub p2x : f32 , pub p2y : f32 , pub p2z : f32 , pub frame : MavFrame , } impl SAFETY_ALLOWED_AREA_DATA { pub const ENCODED_LEN : usize = 25usize ; pub const DEFAULT : Self = Self { p1x : 0.0_f32 , p1y : 0.0_f32 , p1z : 0.0_f32 , p2x : 0.0_f32 , p2y : 0.0_f32 , p2z : 0.0_f32 , frame : MavFrame :: DEFAULT , } ; } impl Default for SAFETY_ALLOWED_AREA_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SAFETY_ALLOWED_AREA_DATA { type Message = MavMessage ; const ID : u32 = 55u32 ; const NAME : & 'static str = "SAFETY_ALLOWED_AREA" ; const EXTRA_CRC : u8 = 3u8 ; const ENCODED_LEN : usize = 25usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . p1x = buf . get_f32_le () ; __struct . p1y = buf . get_f32_le () ; __struct . p1z = buf . get_f32_le () ; __struct . p2x = buf . get_f32_le () ; __struct . p2y = buf . get_f32_le () ; __struct . p2z = buf . get_f32_le () ; let tmp = buf . get_u8 () ; __struct . frame = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavFrame" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . p1x) ; __tmp . put_f32_le (self . p1y) ; __tmp . put_f32_le (self . p1z) ; __tmp . put_f32_le (self . p2x) ; __tmp . put_f32_le (self . p2y) ; __tmp . put_f32_le (self . p2z) ; __tmp . put_u8 (self . frame as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct STATUSTEXT_DATA { pub severity : MavSeverity , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub text : [u8 ; 50] , } impl STATUSTEXT_DATA { pub const ENCODED_LEN : usize = 51usize ; pub const DEFAULT : Self = Self { severity : MavSeverity :: DEFAULT , text : [0_u8 ; 50usize] , } ; } impl Default for STATUSTEXT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for STATUSTEXT_DATA { type Message = MavMessage ; const ID : u32 = 253u32 ; const NAME : & 'static str = "STATUSTEXT" ; const EXTRA_CRC : u8 = 83u8 ; const ENCODED_LEN : usize = 51usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u8 () ; __struct . severity = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavSeverity" , value : tmp as u32 }) ? ; for v in & mut __struct . text { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . severity as u8) ; for val in & self . text { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct RADIO_DATA { pub rxerrors : u16 , pub fixed : u16 , pub rssi : u8 , pub remrssi : u8 , pub txbuf : u8 , pub noise : u8 , pub remnoise : u8 , } impl RADIO_DATA { pub const ENCODED_LEN : usize = 9usize ; pub const DEFAULT : Self = Self { rxerrors : 0_u16 , fixed : 0_u16 , rssi : 0_u8 , remrssi : 0_u8 , txbuf : 0_u8 , noise : 0_u8 , remnoise : 0_u8 , } ; } impl Default for RADIO_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for RADIO_DATA { type Message = MavMessage ; const ID : u32 = 166u32 ; const NAME : & 'static str = "RADIO" ; const EXTRA_CRC : u8 = 21u8 ; const ENCODED_LEN : usize = 9usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . rxerrors = buf . get_u16_le () ; __struct . fixed = buf . get_u16_le () ; __struct . rssi = buf . get_u8 () ; __struct . remrssi = buf . get_u8 () ; __struct . txbuf = buf . get_u8 () ; __struct . noise = buf . get_u8 () ; __struct . remnoise = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . rxerrors) ; __tmp . put_u16_le (self . fixed) ; __tmp . put_u8 (self . rssi) ; __tmp . put_u8 (self . remrssi) ; __tmp . put_u8 (self . txbuf) ; __tmp . put_u8 (self . noise) ; __tmp . put_u8 (self . remnoise) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CELLULAR_STATUS_DATA { pub mcc : u16 , pub mnc : u16 , pub lac : u16 , pub status : CellularStatusFlag , pub failure_reason : CellularNetworkFailedReason , pub mavtype : CellularNetworkRadioType , pub quality : u8 , } impl CELLULAR_STATUS_DATA { pub const ENCODED_LEN : usize = 10usize ; pub const DEFAULT : Self = Self { mcc : 0_u16 , mnc : 0_u16 , lac : 0_u16 , status : CellularStatusFlag :: DEFAULT , failure_reason : CellularNetworkFailedReason :: DEFAULT , mavtype : CellularNetworkRadioType :: DEFAULT , quality : 0_u8 , } ; } impl Default for CELLULAR_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CELLULAR_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 334u32 ; const NAME : & 'static str = "CELLULAR_STATUS" ; const EXTRA_CRC : u8 = 72u8 ; const ENCODED_LEN : usize = 10usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . mcc = buf . get_u16_le () ; __struct . mnc = buf . get_u16_le () ; __struct . lac = buf . get_u16_le () ; let tmp = buf . get_u8 () ; __struct . status = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "CellularStatusFlag" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . failure_reason = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "CellularNetworkFailedReason" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . mavtype = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "CellularNetworkRadioType" , value : tmp as u32 }) ? ; __struct . quality = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . mcc) ; __tmp . put_u16_le (self . mnc) ; __tmp . put_u16_le (self . lac) ; __tmp . put_u8 (self . status as u8) ; __tmp . put_u8 (self . failure_reason as u8) ; __tmp . put_u8 (self . mavtype as u8) ; __tmp . put_u8 (self . quality) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct DEVICE_OP_READ_DATA { pub request_id : u32 , pub target_system : u8 , pub target_component : u8 , pub bustype : DeviceOpBustype , pub bus : u8 , pub address : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub busname : [u8 ; 40] , pub regstart : u8 , pub count : u8 , } impl DEVICE_OP_READ_DATA { pub const ENCODED_LEN : usize = 51usize ; pub const DEFAULT : Self = Self { request_id : 0_u32 , target_system : 0_u8 , target_component : 0_u8 , bustype : DeviceOpBustype :: DEFAULT , bus : 0_u8 , address : 0_u8 , busname : [0_u8 ; 40usize] , regstart : 0_u8 , count : 0_u8 , } ; } impl Default for DEVICE_OP_READ_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for DEVICE_OP_READ_DATA { type Message = MavMessage ; const ID : u32 = 11000u32 ; const NAME : & 'static str = "DEVICE_OP_READ" ; const EXTRA_CRC : u8 = 134u8 ; const ENCODED_LEN : usize = 51usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . request_id = buf . get_u32_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . bustype = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "DeviceOpBustype" , value : tmp as u32 }) ? ; __struct . bus = buf . get_u8 () ; __struct . address = buf . get_u8 () ; for v in & mut __struct . busname { let val = buf . get_u8 () ; * v = val ; } __struct . regstart = buf . get_u8 () ; __struct . count = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . request_id) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . bustype as u8) ; __tmp . put_u8 (self . bus) ; __tmp . put_u8 (self . address) ; for val in & self . busname { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . regstart) ; __tmp . put_u8 (self . count) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct WIFI_CONFIG_AP_DATA { # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub ssid : [u8 ; 32] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub password : [u8 ; 64] , } impl WIFI_CONFIG_AP_DATA { pub const ENCODED_LEN : usize = 96usize ; pub const DEFAULT : Self = Self { ssid : [0_u8 ; 32usize] , password : [0_u8 ; 64usize] , } ; } impl Default for WIFI_CONFIG_AP_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for WIFI_CONFIG_AP_DATA { type Message = MavMessage ; const ID : u32 = 299u32 ; const NAME : & 'static str = "WIFI_CONFIG_AP" ; const EXTRA_CRC : u8 = 19u8 ; const ENCODED_LEN : usize = 96usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; for v in & mut __struct . ssid { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . password { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; for val in & self . ssid { __tmp . put_u8 (* val) ; } for val in & self . password { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GENERATOR_STATUS_DATA { pub status : MavGeneratorStatusFlag , pub battery_current : f32 , pub load_current : f32 , pub power_generated : f32 , pub bus_voltage : f32 , pub bat_current_setpoint : f32 , pub runtime : u32 , pub time_until_maintenance : i32 , pub generator_speed : u16 , pub rectifier_temperature : i16 , pub generator_temperature : i16 , } impl GENERATOR_STATUS_DATA { pub const ENCODED_LEN : usize = 42usize ; pub const DEFAULT : Self = Self { status : MavGeneratorStatusFlag :: DEFAULT , battery_current : 0.0_f32 , load_current : 0.0_f32 , power_generated : 0.0_f32 , bus_voltage : 0.0_f32 , bat_current_setpoint : 0.0_f32 , runtime : 0_u32 , time_until_maintenance : 0_i32 , generator_speed : 0_u16 , rectifier_temperature : 0_i16 , generator_temperature : 0_i16 , } ; } impl Default for GENERATOR_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GENERATOR_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 373u32 ; const NAME : & 'static str = "GENERATOR_STATUS" ; const EXTRA_CRC : u8 = 117u8 ; const ENCODED_LEN : usize = 42usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u64_le () ; __struct . status = MavGeneratorStatusFlag :: from_bits (tmp & MavGeneratorStatusFlag :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "MavGeneratorStatusFlag" , value : tmp as u32 }) ? ; __struct . battery_current = buf . get_f32_le () ; __struct . load_current = buf . get_f32_le () ; __struct . power_generated = buf . get_f32_le () ; __struct . bus_voltage = buf . get_f32_le () ; __struct . bat_current_setpoint = buf . get_f32_le () ; __struct . runtime = buf . get_u32_le () ; __struct . time_until_maintenance = buf . get_i32_le () ; __struct . generator_speed = buf . get_u16_le () ; __struct . rectifier_temperature = buf . get_i16_le () ; __struct . generator_temperature = buf . get_i16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . status . bits ()) ; __tmp . put_f32_le (self . battery_current) ; __tmp . put_f32_le (self . load_current) ; __tmp . put_f32_le (self . power_generated) ; __tmp . put_f32_le (self . bus_voltage) ; __tmp . put_f32_le (self . bat_current_setpoint) ; __tmp . put_u32_le (self . runtime) ; __tmp . put_i32_le (self . time_until_maintenance) ; __tmp . put_u16_le (self . generator_speed) ; __tmp . put_i16_le (self . rectifier_temperature) ; __tmp . put_i16_le (self . generator_temperature) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct NAMED_VALUE_INT_DATA { pub time_boot_ms : u32 , pub value : i32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub name : [u8 ; 10] , } impl NAMED_VALUE_INT_DATA { pub const ENCODED_LEN : usize = 18usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , value : 0_i32 , name : [0_u8 ; 10usize] , } ; } impl Default for NAMED_VALUE_INT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for NAMED_VALUE_INT_DATA { type Message = MavMessage ; const ID : u32 = 252u32 ; const NAME : & 'static str = "NAMED_VALUE_INT" ; const EXTRA_CRC : u8 = 44u8 ; const ENCODED_LEN : usize = 18usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . value = buf . get_i32_le () ; for v in & mut __struct . name { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_i32_le (self . value) ; for val in & self . name { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HIL_CONTROLS_DATA { pub time_usec : u64 , pub roll_ailerons : f32 , pub pitch_elevator : f32 , pub yaw_rudder : f32 , pub throttle : f32 , pub aux1 : f32 , pub aux2 : f32 , pub aux3 : f32 , pub aux4 : f32 , pub mode : MavMode , pub nav_mode : u8 , } impl HIL_CONTROLS_DATA { pub const ENCODED_LEN : usize = 42usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , roll_ailerons : 0.0_f32 , pitch_elevator : 0.0_f32 , yaw_rudder : 0.0_f32 , throttle : 0.0_f32 , aux1 : 0.0_f32 , aux2 : 0.0_f32 , aux3 : 0.0_f32 , aux4 : 0.0_f32 , mode : MavMode :: DEFAULT , nav_mode : 0_u8 , } ; } impl Default for HIL_CONTROLS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for HIL_CONTROLS_DATA { type Message = MavMessage ; const ID : u32 = 91u32 ; const NAME : & 'static str = "HIL_CONTROLS" ; const EXTRA_CRC : u8 = 63u8 ; const ENCODED_LEN : usize = 42usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . roll_ailerons = buf . get_f32_le () ; __struct . pitch_elevator = buf . get_f32_le () ; __struct . yaw_rudder = buf . get_f32_le () ; __struct . throttle = buf . get_f32_le () ; __struct . aux1 = buf . get_f32_le () ; __struct . aux2 = buf . get_f32_le () ; __struct . aux3 = buf . get_f32_le () ; __struct . aux4 = buf . get_f32_le () ; let tmp = buf . get_u8 () ; __struct . mode = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavMode" , value : tmp as u32 }) ? ; __struct . nav_mode = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . roll_ailerons) ; __tmp . put_f32_le (self . pitch_elevator) ; __tmp . put_f32_le (self . yaw_rudder) ; __tmp . put_f32_le (self . throttle) ; __tmp . put_f32_le (self . aux1) ; __tmp . put_f32_le (self . aux2) ; __tmp . put_f32_le (self . aux3) ; __tmp . put_f32_le (self . aux4) ; __tmp . put_u8 (self . mode as u8) ; __tmp . put_u8 (self . nav_mode) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct AUTOPILOT_VERSION_DATA { pub capabilities : MavProtocolCapability , pub uid : u64 , pub flight_sw_version : u32 , pub middleware_sw_version : u32 , pub os_sw_version : u32 , pub board_version : u32 , pub vendor_id : u16 , pub product_id : u16 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub flight_custom_version : [u8 ; 8] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub middleware_custom_version : [u8 ; 8] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub os_custom_version : [u8 ; 8] , } impl AUTOPILOT_VERSION_DATA { pub const ENCODED_LEN : usize = 60usize ; pub const DEFAULT : Self = Self { capabilities : MavProtocolCapability :: DEFAULT , uid : 0_u64 , flight_sw_version : 0_u32 , middleware_sw_version : 0_u32 , os_sw_version : 0_u32 , board_version : 0_u32 , vendor_id : 0_u16 , product_id : 0_u16 , flight_custom_version : [0_u8 ; 8usize] , middleware_custom_version : [0_u8 ; 8usize] , os_custom_version : [0_u8 ; 8usize] , } ; } impl Default for AUTOPILOT_VERSION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for AUTOPILOT_VERSION_DATA { type Message = MavMessage ; const ID : u32 = 148u32 ; const NAME : & 'static str = "AUTOPILOT_VERSION" ; const EXTRA_CRC : u8 = 178u8 ; const ENCODED_LEN : usize = 60usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u64_le () ; __struct . capabilities = MavProtocolCapability :: from_bits (tmp & MavProtocolCapability :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "MavProtocolCapability" , value : tmp as u32 }) ? ; __struct . uid = buf . get_u64_le () ; __struct . flight_sw_version = buf . get_u32_le () ; __struct . middleware_sw_version = buf . get_u32_le () ; __struct . os_sw_version = buf . get_u32_le () ; __struct . board_version = buf . get_u32_le () ; __struct . vendor_id = buf . get_u16_le () ; __struct . product_id = buf . get_u16_le () ; for v in & mut __struct . flight_custom_version { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . middleware_custom_version { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . os_custom_version { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . capabilities . bits ()) ; __tmp . put_u64_le (self . uid) ; __tmp . put_u32_le (self . flight_sw_version) ; __tmp . put_u32_le (self . middleware_sw_version) ; __tmp . put_u32_le (self . os_sw_version) ; __tmp . put_u32_le (self . board_version) ; __tmp . put_u16_le (self . vendor_id) ; __tmp . put_u16_le (self . product_id) ; for val in & self . flight_custom_version { __tmp . put_u8 (* val) ; } for val in & self . middleware_custom_version { __tmp . put_u8 (* val) ; } for val in & self . os_custom_version { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct AP_ADC_DATA { pub adc1 : u16 , pub adc2 : u16 , pub adc3 : u16 , pub adc4 : u16 , pub adc5 : u16 , pub adc6 : u16 , } impl AP_ADC_DATA { pub const ENCODED_LEN : usize = 12usize ; pub const DEFAULT : Self = Self { adc1 : 0_u16 , adc2 : 0_u16 , adc3 : 0_u16 , adc4 : 0_u16 , adc5 : 0_u16 , adc6 : 0_u16 , } ; } impl Default for AP_ADC_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for AP_ADC_DATA { type Message = MavMessage ; const ID : u32 = 153u32 ; const NAME : & 'static str = "AP_ADC" ; const EXTRA_CRC : u8 = 188u8 ; const ENCODED_LEN : usize = 12usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . adc1 = buf . get_u16_le () ; __struct . adc2 = buf . get_u16_le () ; __struct . adc3 = buf . get_u16_le () ; __struct . adc4 = buf . get_u16_le () ; __struct . adc5 = buf . get_u16_le () ; __struct . adc6 = buf . get_u16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . adc1) ; __tmp . put_u16_le (self . adc2) ; __tmp . put_u16_le (self . adc3) ; __tmp . put_u16_le (self . adc4) ; __tmp . put_u16_le (self . adc5) ; __tmp . put_u16_le (self . adc6) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HIL_STATE_DATA { pub time_usec : u64 , pub roll : f32 , pub pitch : f32 , pub yaw : f32 , pub rollspeed : f32 , pub pitchspeed : f32 , pub yawspeed : f32 , pub lat : i32 , pub lon : i32 , pub alt : i32 , pub vx : i16 , pub vy : i16 , pub vz : i16 , pub xacc : i16 , pub yacc : i16 , pub zacc : i16 , } impl HIL_STATE_DATA { pub const ENCODED_LEN : usize = 56usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , roll : 0.0_f32 , pitch : 0.0_f32 , yaw : 0.0_f32 , rollspeed : 0.0_f32 , pitchspeed : 0.0_f32 , yawspeed : 0.0_f32 , lat : 0_i32 , lon : 0_i32 , alt : 0_i32 , vx : 0_i16 , vy : 0_i16 , vz : 0_i16 , xacc : 0_i16 , yacc : 0_i16 , zacc : 0_i16 , } ; } impl Default for HIL_STATE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for HIL_STATE_DATA { type Message = MavMessage ; const ID : u32 = 90u32 ; const NAME : & 'static str = "HIL_STATE" ; const EXTRA_CRC : u8 = 183u8 ; const ENCODED_LEN : usize = 56usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . roll = buf . get_f32_le () ; __struct . pitch = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; __struct . rollspeed = buf . get_f32_le () ; __struct . pitchspeed = buf . get_f32_le () ; __struct . yawspeed = buf . get_f32_le () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . alt = buf . get_i32_le () ; __struct . vx = buf . get_i16_le () ; __struct . vy = buf . get_i16_le () ; __struct . vz = buf . get_i16_le () ; __struct . xacc = buf . get_i16_le () ; __struct . yacc = buf . get_i16_le () ; __struct . zacc = buf . get_i16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . roll) ; __tmp . put_f32_le (self . pitch) ; __tmp . put_f32_le (self . yaw) ; __tmp . put_f32_le (self . rollspeed) ; __tmp . put_f32_le (self . pitchspeed) ; __tmp . put_f32_le (self . yawspeed) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_i32_le (self . alt) ; __tmp . put_i16_le (self . vx) ; __tmp . put_i16_le (self . vy) ; __tmp . put_i16_le (self . vz) ; __tmp . put_i16_le (self . xacc) ; __tmp . put_i16_le (self . yacc) ; __tmp . put_i16_le (self . zacc) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PARAM_MAP_RC_DATA { pub param_value0 : f32 , pub scale : f32 , pub param_value_min : f32 , pub param_value_max : f32 , pub param_index : i16 , pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub param_id : [u8 ; 16] , pub parameter_rc_channel_index : u8 , } impl PARAM_MAP_RC_DATA { pub const ENCODED_LEN : usize = 37usize ; pub const DEFAULT : Self = Self { param_value0 : 0.0_f32 , scale : 0.0_f32 , param_value_min : 0.0_f32 , param_value_max : 0.0_f32 , param_index : 0_i16 , target_system : 0_u8 , target_component : 0_u8 , param_id : [0_u8 ; 16usize] , parameter_rc_channel_index : 0_u8 , } ; } impl Default for PARAM_MAP_RC_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for PARAM_MAP_RC_DATA { type Message = MavMessage ; const ID : u32 = 50u32 ; const NAME : & 'static str = "PARAM_MAP_RC" ; const EXTRA_CRC : u8 = 78u8 ; const ENCODED_LEN : usize = 37usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . param_value0 = buf . get_f32_le () ; __struct . scale = buf . get_f32_le () ; __struct . param_value_min = buf . get_f32_le () ; __struct . param_value_max = buf . get_f32_le () ; __struct . param_index = buf . get_i16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . param_id { let val = buf . get_u8 () ; * v = val ; } __struct . parameter_rc_channel_index = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . param_value0) ; __tmp . put_f32_le (self . scale) ; __tmp . put_f32_le (self . param_value_min) ; __tmp . put_f32_le (self . param_value_max) ; __tmp . put_i16_le (self . param_index) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . param_id { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . parameter_rc_channel_index) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MAG_CAL_PROGRESS_DATA { pub direction_x : f32 , pub direction_y : f32 , pub direction_z : f32 , pub compass_id : u8 , pub cal_mask : u8 , pub cal_status : MagCalStatus , pub attempt : u8 , pub completion_pct : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub completion_mask : [u8 ; 10] , } impl MAG_CAL_PROGRESS_DATA { pub const ENCODED_LEN : usize = 27usize ; pub const DEFAULT : Self = Self { direction_x : 0.0_f32 , direction_y : 0.0_f32 , direction_z : 0.0_f32 , compass_id : 0_u8 , cal_mask : 0_u8 , cal_status : MagCalStatus :: DEFAULT , attempt : 0_u8 , completion_pct : 0_u8 , completion_mask : [0_u8 ; 10usize] , } ; } impl Default for MAG_CAL_PROGRESS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MAG_CAL_PROGRESS_DATA { type Message = MavMessage ; const ID : u32 = 191u32 ; const NAME : & 'static str = "MAG_CAL_PROGRESS" ; const EXTRA_CRC : u8 = 92u8 ; const ENCODED_LEN : usize = 27usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . direction_x = buf . get_f32_le () ; __struct . direction_y = buf . get_f32_le () ; __struct . direction_z = buf . get_f32_le () ; __struct . compass_id = buf . get_u8 () ; __struct . cal_mask = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . cal_status = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MagCalStatus" , value : tmp as u32 }) ? ; __struct . attempt = buf . get_u8 () ; __struct . completion_pct = buf . get_u8 () ; for v in & mut __struct . completion_mask { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . direction_x) ; __tmp . put_f32_le (self . direction_y) ; __tmp . put_f32_le (self . direction_z) ; __tmp . put_u8 (self . compass_id) ; __tmp . put_u8 (self . cal_mask) ; __tmp . put_u8 (self . cal_status as u8) ; __tmp . put_u8 (self . attempt) ; __tmp . put_u8 (self . completion_pct) ; for val in & self . completion_mask { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GIMBAL_CONTROL_DATA { pub demanded_rate_x : f32 , pub demanded_rate_y : f32 , pub demanded_rate_z : f32 , pub target_system : u8 , pub target_component : u8 , } impl GIMBAL_CONTROL_DATA { pub const ENCODED_LEN : usize = 14usize ; pub const DEFAULT : Self = Self { demanded_rate_x : 0.0_f32 , demanded_rate_y : 0.0_f32 , demanded_rate_z : 0.0_f32 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for GIMBAL_CONTROL_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GIMBAL_CONTROL_DATA { type Message = MavMessage ; const ID : u32 = 201u32 ; const NAME : & 'static str = "GIMBAL_CONTROL" ; const EXTRA_CRC : u8 = 205u8 ; const ENCODED_LEN : usize = 14usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . demanded_rate_x = buf . get_f32_le () ; __struct . demanded_rate_y = buf . get_f32_le () ; __struct . demanded_rate_z = buf . get_f32_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . demanded_rate_x) ; __tmp . put_f32_le (self . demanded_rate_y) ; __tmp . put_f32_le (self . demanded_rate_z) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct DISTANCE_SENSOR_DATA { pub time_boot_ms : u32 , pub min_distance : u16 , pub max_distance : u16 , pub current_distance : u16 , pub mavtype : MavDistanceSensor , pub id : u8 , pub orientation : MavSensorOrientation , pub covariance : u8 , } impl DISTANCE_SENSOR_DATA { pub const ENCODED_LEN : usize = 14usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , min_distance : 0_u16 , max_distance : 0_u16 , current_distance : 0_u16 , mavtype : MavDistanceSensor :: DEFAULT , id : 0_u8 , orientation : MavSensorOrientation :: DEFAULT , covariance : 0_u8 , } ; } impl Default for DISTANCE_SENSOR_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for DISTANCE_SENSOR_DATA { type Message = MavMessage ; const ID : u32 = 132u32 ; const NAME : & 'static str = "DISTANCE_SENSOR" ; const EXTRA_CRC : u8 = 85u8 ; const ENCODED_LEN : usize = 14usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . min_distance = buf . get_u16_le () ; __struct . max_distance = buf . get_u16_le () ; __struct . current_distance = buf . get_u16_le () ; let tmp = buf . get_u8 () ; __struct . mavtype = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavDistanceSensor" , value : tmp as u32 }) ? ; __struct . id = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . orientation = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavSensorOrientation" , value : tmp as u32 }) ? ; __struct . covariance = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_u16_le (self . min_distance) ; __tmp . put_u16_le (self . max_distance) ; __tmp . put_u16_le (self . current_distance) ; __tmp . put_u8 (self . mavtype as u8) ; __tmp . put_u8 (self . id) ; __tmp . put_u8 (self . orientation as u8) ; __tmp . put_u8 (self . covariance) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SYSTEM_TIME_DATA { pub time_unix_usec : u64 , pub time_boot_ms : u32 , } impl SYSTEM_TIME_DATA { pub const ENCODED_LEN : usize = 12usize ; pub const DEFAULT : Self = Self { time_unix_usec : 0_u64 , time_boot_ms : 0_u32 , } ; } impl Default for SYSTEM_TIME_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SYSTEM_TIME_DATA { type Message = MavMessage ; const ID : u32 = 2u32 ; const NAME : & 'static str = "SYSTEM_TIME" ; const EXTRA_CRC : u8 = 137u8 ; const ENCODED_LEN : usize = 12usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_unix_usec = buf . get_u64_le () ; __struct . time_boot_ms = buf . get_u32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_unix_usec) ; __tmp . put_u32_le (self . time_boot_ms) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct COMMAND_LONG_DATA { pub param1 : f32 , pub param2 : f32 , pub param3 : f32 , pub param4 : f32 , pub param5 : f32 , pub param6 : f32 , pub param7 : f32 , pub command : MavCmd , pub target_system : u8 , pub target_component : u8 , pub confirmation : u8 , } impl COMMAND_LONG_DATA { pub const ENCODED_LEN : usize = 33usize ; pub const DEFAULT : Self = Self { param1 : 0.0_f32 , param2 : 0.0_f32 , param3 : 0.0_f32 , param4 : 0.0_f32 , param5 : 0.0_f32 , param6 : 0.0_f32 , param7 : 0.0_f32 , command : MavCmd :: DEFAULT , target_system : 0_u8 , target_component : 0_u8 , confirmation : 0_u8 , } ; } impl Default for COMMAND_LONG_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for COMMAND_LONG_DATA { type Message = MavMessage ; const ID : u32 = 76u32 ; const NAME : & 'static str = "COMMAND_LONG" ; const EXTRA_CRC : u8 = 152u8 ; const ENCODED_LEN : usize = 33usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . param1 = buf . get_f32_le () ; __struct . param2 = buf . get_f32_le () ; __struct . param3 = buf . get_f32_le () ; __struct . param4 = buf . get_f32_le () ; __struct . param5 = buf . get_f32_le () ; __struct . param6 = buf . get_f32_le () ; __struct . param7 = buf . get_f32_le () ; let tmp = buf . get_u16_le () ; __struct . command = FromPrimitive :: from_u16 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavCmd" , value : tmp as u32 }) ? ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . confirmation = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . param1) ; __tmp . put_f32_le (self . param2) ; __tmp . put_f32_le (self . param3) ; __tmp . put_f32_le (self . param4) ; __tmp . put_f32_le (self . param5) ; __tmp . put_f32_le (self . param6) ; __tmp . put_f32_le (self . param7) ; __tmp . put_u16_le (self . command as u16) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . confirmation) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GPS_INJECT_DATA_DATA { pub target_system : u8 , pub target_component : u8 , pub len : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub data : [u8 ; 110] , } impl GPS_INJECT_DATA_DATA { pub const ENCODED_LEN : usize = 113usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , len : 0_u8 , data : [0_u8 ; 110usize] , } ; } impl Default for GPS_INJECT_DATA_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GPS_INJECT_DATA_DATA { type Message = MavMessage ; const ID : u32 = 123u32 ; const NAME : & 'static str = "GPS_INJECT_DATA" ; const EXTRA_CRC : u8 = 250u8 ; const ENCODED_LEN : usize = 113usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . len = buf . get_u8 () ; for v in & mut __struct . data { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . len) ; for val in & self . data { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct OPTICAL_FLOW_DATA { pub time_usec : u64 , pub flow_comp_m_x : f32 , pub flow_comp_m_y : f32 , pub ground_distance : f32 , pub flow_x : i16 , pub flow_y : i16 , pub sensor_id : u8 , pub quality : u8 , } impl OPTICAL_FLOW_DATA { pub const ENCODED_LEN : usize = 26usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , flow_comp_m_x : 0.0_f32 , flow_comp_m_y : 0.0_f32 , ground_distance : 0.0_f32 , flow_x : 0_i16 , flow_y : 0_i16 , sensor_id : 0_u8 , quality : 0_u8 , } ; } impl Default for OPTICAL_FLOW_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for OPTICAL_FLOW_DATA { type Message = MavMessage ; const ID : u32 = 100u32 ; const NAME : & 'static str = "OPTICAL_FLOW" ; const EXTRA_CRC : u8 = 175u8 ; const ENCODED_LEN : usize = 26usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . flow_comp_m_x = buf . get_f32_le () ; __struct . flow_comp_m_y = buf . get_f32_le () ; __struct . ground_distance = buf . get_f32_le () ; __struct . flow_x = buf . get_i16_le () ; __struct . flow_y = buf . get_i16_le () ; __struct . sensor_id = buf . get_u8 () ; __struct . quality = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . flow_comp_m_x) ; __tmp . put_f32_le (self . flow_comp_m_y) ; __tmp . put_f32_le (self . ground_distance) ; __tmp . put_i16_le (self . flow_x) ; __tmp . put_i16_le (self . flow_y) ; __tmp . put_u8 (self . sensor_id) ; __tmp . put_u8 (self . quality) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GOPRO_HEARTBEAT_DATA { pub status : GoproHeartbeatStatus , pub capture_mode : GoproCaptureMode , pub flags : GoproHeartbeatFlags , } impl GOPRO_HEARTBEAT_DATA { pub const ENCODED_LEN : usize = 3usize ; pub const DEFAULT : Self = Self { status : GoproHeartbeatStatus :: DEFAULT , capture_mode : GoproCaptureMode :: DEFAULT , flags : GoproHeartbeatFlags :: DEFAULT , } ; } impl Default for GOPRO_HEARTBEAT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GOPRO_HEARTBEAT_DATA { type Message = MavMessage ; const ID : u32 = 215u32 ; const NAME : & 'static str = "GOPRO_HEARTBEAT" ; const EXTRA_CRC : u8 = 101u8 ; const ENCODED_LEN : usize = 3usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u8 () ; __struct . status = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "GoproHeartbeatStatus" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . capture_mode = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "GoproCaptureMode" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . flags = GoproHeartbeatFlags :: from_bits (tmp & GoproHeartbeatFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "GoproHeartbeatFlags" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . status as u8) ; __tmp . put_u8 (self . capture_mode as u8) ; __tmp . put_u8 (self . flags . bits ()) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MAG_CAL_REPORT_DATA { pub fitness : f32 , pub ofs_x : f32 , pub ofs_y : f32 , pub ofs_z : f32 , pub diag_x : f32 , pub diag_y : f32 , pub diag_z : f32 , pub offdiag_x : f32 , pub offdiag_y : f32 , pub offdiag_z : f32 , pub compass_id : u8 , pub cal_mask : u8 , pub cal_status : MagCalStatus , pub autosaved : u8 , } impl MAG_CAL_REPORT_DATA { pub const ENCODED_LEN : usize = 44usize ; pub const DEFAULT : Self = Self { fitness : 0.0_f32 , ofs_x : 0.0_f32 , ofs_y : 0.0_f32 , ofs_z : 0.0_f32 , diag_x : 0.0_f32 , diag_y : 0.0_f32 , diag_z : 0.0_f32 , offdiag_x : 0.0_f32 , offdiag_y : 0.0_f32 , offdiag_z : 0.0_f32 , compass_id : 0_u8 , cal_mask : 0_u8 , cal_status : MagCalStatus :: DEFAULT , autosaved : 0_u8 , } ; } impl Default for MAG_CAL_REPORT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MAG_CAL_REPORT_DATA { type Message = MavMessage ; const ID : u32 = 192u32 ; const NAME : & 'static str = "MAG_CAL_REPORT" ; const EXTRA_CRC : u8 = 36u8 ; const ENCODED_LEN : usize = 44usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . fitness = buf . get_f32_le () ; __struct . ofs_x = buf . get_f32_le () ; __struct . ofs_y = buf . get_f32_le () ; __struct . ofs_z = buf . get_f32_le () ; __struct . diag_x = buf . get_f32_le () ; __struct . diag_y = buf . get_f32_le () ; __struct . diag_z = buf . get_f32_le () ; __struct . offdiag_x = buf . get_f32_le () ; __struct . offdiag_y = buf . get_f32_le () ; __struct . offdiag_z = buf . get_f32_le () ; __struct . compass_id = buf . get_u8 () ; __struct . cal_mask = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . cal_status = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MagCalStatus" , value : tmp as u32 }) ? ; __struct . autosaved = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . fitness) ; __tmp . put_f32_le (self . ofs_x) ; __tmp . put_f32_le (self . ofs_y) ; __tmp . put_f32_le (self . ofs_z) ; __tmp . put_f32_le (self . diag_x) ; __tmp . put_f32_le (self . diag_y) ; __tmp . put_f32_le (self . diag_z) ; __tmp . put_f32_le (self . offdiag_x) ; __tmp . put_f32_le (self . offdiag_y) ; __tmp . put_f32_le (self . offdiag_z) ; __tmp . put_u8 (self . compass_id) ; __tmp . put_u8 (self . cal_mask) ; __tmp . put_u8 (self . cal_status as u8) ; __tmp . put_u8 (self . autosaved) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MESSAGE_INTERVAL_DATA { pub interval_us : i32 , pub message_id : u16 , } impl MESSAGE_INTERVAL_DATA { pub const ENCODED_LEN : usize = 6usize ; pub const DEFAULT : Self = Self { interval_us : 0_i32 , message_id : 0_u16 , } ; } impl Default for MESSAGE_INTERVAL_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MESSAGE_INTERVAL_DATA { type Message = MavMessage ; const ID : u32 = 244u32 ; const NAME : & 'static str = "MESSAGE_INTERVAL" ; const EXTRA_CRC : u8 = 95u8 ; const ENCODED_LEN : usize = 6usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . interval_us = buf . get_i32_le () ; __struct . message_id = buf . get_u16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . interval_us) ; __tmp . put_u16_le (self . message_id) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct WINCH_STATUS_DATA { pub time_usec : u64 , pub line_length : f32 , pub speed : f32 , pub tension : f32 , pub voltage : f32 , pub current : f32 , pub status : MavWinchStatusFlag , pub temperature : i16 , } impl WINCH_STATUS_DATA { pub const ENCODED_LEN : usize = 34usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , line_length : 0.0_f32 , speed : 0.0_f32 , tension : 0.0_f32 , voltage : 0.0_f32 , current : 0.0_f32 , status : MavWinchStatusFlag :: DEFAULT , temperature : 0_i16 , } ; } impl Default for WINCH_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for WINCH_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 9005u32 ; const NAME : & 'static str = "WINCH_STATUS" ; const EXTRA_CRC : u8 = 117u8 ; const ENCODED_LEN : usize = 34usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . line_length = buf . get_f32_le () ; __struct . speed = buf . get_f32_le () ; __struct . tension = buf . get_f32_le () ; __struct . voltage = buf . get_f32_le () ; __struct . current = buf . get_f32_le () ; let tmp = buf . get_u32_le () ; __struct . status = MavWinchStatusFlag :: from_bits (tmp & MavWinchStatusFlag :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "MavWinchStatusFlag" , value : tmp as u32 }) ? ; __struct . temperature = buf . get_i16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . line_length) ; __tmp . put_f32_le (self . speed) ; __tmp . put_f32_le (self . tension) ; __tmp . put_f32_le (self . voltage) ; __tmp . put_f32_le (self . current) ; __tmp . put_u32_le (self . status . bits ()) ; __tmp . put_i16_le (self . temperature) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GPS_GLOBAL_ORIGIN_DATA { pub latitude : i32 , pub longitude : i32 , pub altitude : i32 , } impl GPS_GLOBAL_ORIGIN_DATA { pub const ENCODED_LEN : usize = 12usize ; pub const DEFAULT : Self = Self { latitude : 0_i32 , longitude : 0_i32 , altitude : 0_i32 , } ; } impl Default for GPS_GLOBAL_ORIGIN_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GPS_GLOBAL_ORIGIN_DATA { type Message = MavMessage ; const ID : u32 = 49u32 ; const NAME : & 'static str = "GPS_GLOBAL_ORIGIN" ; const EXTRA_CRC : u8 = 39u8 ; const ENCODED_LEN : usize = 12usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . latitude = buf . get_i32_le () ; __struct . longitude = buf . get_i32_le () ; __struct . altitude = buf . get_i32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . latitude) ; __tmp . put_i32_le (self . longitude) ; __tmp . put_i32_le (self . altitude) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MOUNT_ORIENTATION_DATA { pub time_boot_ms : u32 , pub roll : f32 , pub pitch : f32 , pub yaw : f32 , } impl MOUNT_ORIENTATION_DATA { pub const ENCODED_LEN : usize = 16usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , roll : 0.0_f32 , pitch : 0.0_f32 , yaw : 0.0_f32 , } ; } impl Default for MOUNT_ORIENTATION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MOUNT_ORIENTATION_DATA { type Message = MavMessage ; const ID : u32 = 265u32 ; const NAME : & 'static str = "MOUNT_ORIENTATION" ; const EXTRA_CRC : u8 = 26u8 ; const ENCODED_LEN : usize = 16usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . roll = buf . get_f32_le () ; __struct . pitch = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . roll) ; __tmp . put_f32_le (self . pitch) ; __tmp . put_f32_le (self . yaw) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ODOMETRY_DATA { pub time_usec : u64 , pub x : f32 , pub y : f32 , pub z : f32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub q : [f32 ; 4] , pub vx : f32 , pub vy : f32 , pub vz : f32 , pub rollspeed : f32 , pub pitchspeed : f32 , pub yawspeed : f32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub pose_covariance : [f32 ; 21] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub velocity_covariance : [f32 ; 21] , pub frame_id : MavFrame , pub child_frame_id : MavFrame , } impl ODOMETRY_DATA { pub const ENCODED_LEN : usize = 230usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , x : 0.0_f32 , y : 0.0_f32 , z : 0.0_f32 , q : [0.0_f32 ; 4usize] , vx : 0.0_f32 , vy : 0.0_f32 , vz : 0.0_f32 , rollspeed : 0.0_f32 , pitchspeed : 0.0_f32 , yawspeed : 0.0_f32 , pose_covariance : [0.0_f32 ; 21usize] , velocity_covariance : [0.0_f32 ; 21usize] , frame_id : MavFrame :: DEFAULT , child_frame_id : MavFrame :: DEFAULT , } ; } impl Default for ODOMETRY_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ODOMETRY_DATA { type Message = MavMessage ; const ID : u32 = 331u32 ; const NAME : & 'static str = "ODOMETRY" ; const EXTRA_CRC : u8 = 91u8 ; const ENCODED_LEN : usize = 230usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . x = buf . get_f32_le () ; __struct . y = buf . get_f32_le () ; __struct . z = buf . get_f32_le () ; for v in & mut __struct . q { let val = buf . get_f32_le () ; * v = val ; } __struct . vx = buf . get_f32_le () ; __struct . vy = buf . get_f32_le () ; __struct . vz = buf . get_f32_le () ; __struct . rollspeed = buf . get_f32_le () ; __struct . pitchspeed = buf . get_f32_le () ; __struct . yawspeed = buf . get_f32_le () ; for v in & mut __struct . pose_covariance { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . velocity_covariance { let val = buf . get_f32_le () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . frame_id = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavFrame" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . child_frame_id = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavFrame" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; for val in & self . q { __tmp . put_f32_le (* val) ; } __tmp . put_f32_le (self . vx) ; __tmp . put_f32_le (self . vy) ; __tmp . put_f32_le (self . vz) ; __tmp . put_f32_le (self . rollspeed) ; __tmp . put_f32_le (self . pitchspeed) ; __tmp . put_f32_le (self . yawspeed) ; for val in & self . pose_covariance { __tmp . put_f32_le (* val) ; } for val in & self . velocity_covariance { __tmp . put_f32_le (* val) ; } __tmp . put_u8 (self . frame_id as u8) ; __tmp . put_u8 (self . child_frame_id as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SETUP_SIGNING_DATA { pub initial_timestamp : u64 , pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub secret_key : [u8 ; 32] , } impl SETUP_SIGNING_DATA { pub const ENCODED_LEN : usize = 42usize ; pub const DEFAULT : Self = Self { initial_timestamp : 0_u64 , target_system : 0_u8 , target_component : 0_u8 , secret_key : [0_u8 ; 32usize] , } ; } impl Default for SETUP_SIGNING_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SETUP_SIGNING_DATA { type Message = MavMessage ; const ID : u32 = 256u32 ; const NAME : & 'static str = "SETUP_SIGNING" ; const EXTRA_CRC : u8 = 71u8 ; const ENCODED_LEN : usize = 42usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . initial_timestamp = buf . get_u64_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . secret_key { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . initial_timestamp) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . secret_key { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA { pub time_boot_ms : u32 , pub x : f32 , pub y : f32 , pub z : f32 , pub roll : f32 , pub pitch : f32 , pub yaw : f32 , } impl LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA { pub const ENCODED_LEN : usize = 28usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , x : 0.0_f32 , y : 0.0_f32 , z : 0.0_f32 , roll : 0.0_f32 , pitch : 0.0_f32 , yaw : 0.0_f32 , } ; } impl Default for LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA { type Message = MavMessage ; const ID : u32 = 89u32 ; const NAME : & 'static str = "LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET" ; const EXTRA_CRC : u8 = 231u8 ; const ENCODED_LEN : usize = 28usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . x = buf . get_f32_le () ; __struct . y = buf . get_f32_le () ; __struct . z = buf . get_f32_le () ; __struct . roll = buf . get_f32_le () ; __struct . pitch = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; __tmp . put_f32_le (self . roll) ; __tmp . put_f32_le (self . pitch) ; __tmp . put_f32_le (self . yaw) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MISSION_CLEAR_ALL_DATA { pub target_system : u8 , pub target_component : u8 , } impl MISSION_CLEAR_ALL_DATA { pub const ENCODED_LEN : usize = 2usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for MISSION_CLEAR_ALL_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MISSION_CLEAR_ALL_DATA { type Message = MavMessage ; const ID : u32 = 45u32 ; const NAME : & 'static str = "MISSION_CLEAR_ALL" ; const EXTRA_CRC : u8 = 232u8 ; const ENCODED_LEN : usize = 2usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct OPEN_DRONE_ID_MESSAGE_PACK_DATA { pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub id_or_mac : [u8 ; 20] , pub single_message_size : u8 , pub msg_pack_size : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub messages : [u8 ; 225] , } impl OPEN_DRONE_ID_MESSAGE_PACK_DATA { pub const ENCODED_LEN : usize = 249usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , id_or_mac : [0_u8 ; 20usize] , single_message_size : 0_u8 , msg_pack_size : 0_u8 , messages : [0_u8 ; 225usize] , } ; } impl Default for OPEN_DRONE_ID_MESSAGE_PACK_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for OPEN_DRONE_ID_MESSAGE_PACK_DATA { type Message = MavMessage ; const ID : u32 = 12915u32 ; const NAME : & 'static str = "OPEN_DRONE_ID_MESSAGE_PACK" ; const EXTRA_CRC : u8 = 94u8 ; const ENCODED_LEN : usize = 249usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . id_or_mac { let val = buf . get_u8 () ; * v = val ; } __struct . single_message_size = buf . get_u8 () ; __struct . msg_pack_size = buf . get_u8 () ; for v in & mut __struct . messages { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . id_or_mac { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . single_message_size) ; __tmp . put_u8 (self . msg_pack_size) ; for val in & self . messages { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct DATA64_DATA { pub mavtype : u8 , pub len : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub data : [u8 ; 64] , } impl DATA64_DATA { pub const ENCODED_LEN : usize = 66usize ; pub const DEFAULT : Self = Self { mavtype : 0_u8 , len : 0_u8 , data : [0_u8 ; 64usize] , } ; } impl Default for DATA64_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for DATA64_DATA { type Message = MavMessage ; const ID : u32 = 171u32 ; const NAME : & 'static str = "DATA64" ; const EXTRA_CRC : u8 = 181u8 ; const ENCODED_LEN : usize = 66usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . mavtype = buf . get_u8 () ; __struct . len = buf . get_u8 () ; for v in & mut __struct . data { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . mavtype) ; __tmp . put_u8 (self . len) ; for val in & self . data { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct REMOTE_LOG_BLOCK_STATUS_DATA { pub seqno : u32 , pub target_system : u8 , pub target_component : u8 , pub status : MavRemoteLogDataBlockStatuses , } impl REMOTE_LOG_BLOCK_STATUS_DATA { pub const ENCODED_LEN : usize = 7usize ; pub const DEFAULT : Self = Self { seqno : 0_u32 , target_system : 0_u8 , target_component : 0_u8 , status : MavRemoteLogDataBlockStatuses :: DEFAULT , } ; } impl Default for REMOTE_LOG_BLOCK_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for REMOTE_LOG_BLOCK_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 185u32 ; const NAME : & 'static str = "REMOTE_LOG_BLOCK_STATUS" ; const EXTRA_CRC : u8 = 186u8 ; const ENCODED_LEN : usize = 7usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . seqno = buf . get_u32_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . status = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavRemoteLogDataBlockStatuses" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . seqno) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . status as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GOPRO_SET_REQUEST_DATA { pub target_system : u8 , pub target_component : u8 , pub cmd_id : GoproCommand , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub value : [u8 ; 4] , } impl GOPRO_SET_REQUEST_DATA { pub const ENCODED_LEN : usize = 7usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , cmd_id : GoproCommand :: DEFAULT , value : [0_u8 ; 4usize] , } ; } impl Default for GOPRO_SET_REQUEST_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GOPRO_SET_REQUEST_DATA { type Message = MavMessage ; const ID : u32 = 218u32 ; const NAME : & 'static str = "GOPRO_SET_REQUEST" ; const EXTRA_CRC : u8 = 17u8 ; const ENCODED_LEN : usize = 7usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . cmd_id = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "GoproCommand" , value : tmp as u32 }) ? ; for v in & mut __struct . value { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . cmd_id as u8) ; for val in & self . value { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SCALED_PRESSURE3_DATA { pub time_boot_ms : u32 , pub press_abs : f32 , pub press_diff : f32 , pub temperature : i16 , } impl SCALED_PRESSURE3_DATA { pub const ENCODED_LEN : usize = 14usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , press_abs : 0.0_f32 , press_diff : 0.0_f32 , temperature : 0_i16 , } ; } impl Default for SCALED_PRESSURE3_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SCALED_PRESSURE3_DATA { type Message = MavMessage ; const ID : u32 = 143u32 ; const NAME : & 'static str = "SCALED_PRESSURE3" ; const EXTRA_CRC : u8 = 131u8 ; const ENCODED_LEN : usize = 14usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . press_abs = buf . get_f32_le () ; __struct . press_diff = buf . get_f32_le () ; __struct . temperature = buf . get_i16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . press_abs) ; __tmp . put_f32_le (self . press_diff) ; __tmp . put_i16_le (self . temperature) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct REQUEST_DATA_STREAM_DATA { pub req_message_rate : u16 , pub target_system : u8 , pub target_component : u8 , pub req_stream_id : u8 , pub start_stop : u8 , } impl REQUEST_DATA_STREAM_DATA { pub const ENCODED_LEN : usize = 6usize ; pub const DEFAULT : Self = Self { req_message_rate : 0_u16 , target_system : 0_u8 , target_component : 0_u8 , req_stream_id : 0_u8 , start_stop : 0_u8 , } ; } impl Default for REQUEST_DATA_STREAM_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for REQUEST_DATA_STREAM_DATA { type Message = MavMessage ; const ID : u32 = 66u32 ; const NAME : & 'static str = "REQUEST_DATA_STREAM" ; const EXTRA_CRC : u8 = 148u8 ; const ENCODED_LEN : usize = 6usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . req_message_rate = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . req_stream_id = buf . get_u8 () ; __struct . start_stop = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . req_message_rate) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . req_stream_id) ; __tmp . put_u8 (self . start_stop) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LOG_REQUEST_END_DATA { pub target_system : u8 , pub target_component : u8 , } impl LOG_REQUEST_END_DATA { pub const ENCODED_LEN : usize = 2usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for LOG_REQUEST_END_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for LOG_REQUEST_END_DATA { type Message = MavMessage ; const ID : u32 = 122u32 ; const NAME : & 'static str = "LOG_REQUEST_END" ; const EXTRA_CRC : u8 = 203u8 ; const ENCODED_LEN : usize = 2usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct STORAGE_INFORMATION_DATA { pub time_boot_ms : u32 , pub total_capacity : f32 , pub used_capacity : f32 , pub available_capacity : f32 , pub read_speed : f32 , pub write_speed : f32 , pub storage_id : u8 , pub storage_count : u8 , pub status : StorageStatus , } impl STORAGE_INFORMATION_DATA { pub const ENCODED_LEN : usize = 27usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , total_capacity : 0.0_f32 , used_capacity : 0.0_f32 , available_capacity : 0.0_f32 , read_speed : 0.0_f32 , write_speed : 0.0_f32 , storage_id : 0_u8 , storage_count : 0_u8 , status : StorageStatus :: DEFAULT , } ; } impl Default for STORAGE_INFORMATION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for STORAGE_INFORMATION_DATA { type Message = MavMessage ; const ID : u32 = 261u32 ; const NAME : & 'static str = "STORAGE_INFORMATION" ; const EXTRA_CRC : u8 = 179u8 ; const ENCODED_LEN : usize = 27usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . total_capacity = buf . get_f32_le () ; __struct . used_capacity = buf . get_f32_le () ; __struct . available_capacity = buf . get_f32_le () ; __struct . read_speed = buf . get_f32_le () ; __struct . write_speed = buf . get_f32_le () ; __struct . storage_id = buf . get_u8 () ; __struct . storage_count = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . status = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "StorageStatus" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . total_capacity) ; __tmp . put_f32_le (self . used_capacity) ; __tmp . put_f32_le (self . available_capacity) ; __tmp . put_f32_le (self . read_speed) ; __tmp . put_f32_le (self . write_speed) ; __tmp . put_u8 (self . storage_id) ; __tmp . put_u8 (self . storage_count) ; __tmp . put_u8 (self . status as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HIL_SENSOR_DATA { pub time_usec : u64 , pub xacc : f32 , pub yacc : f32 , pub zacc : f32 , pub xgyro : f32 , pub ygyro : f32 , pub zgyro : f32 , pub xmag : f32 , pub ymag : f32 , pub zmag : f32 , pub abs_pressure : f32 , pub diff_pressure : f32 , pub pressure_alt : f32 , pub temperature : f32 , pub fields_updated : HilSensorUpdatedFlags , } impl HIL_SENSOR_DATA { pub const ENCODED_LEN : usize = 64usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , xacc : 0.0_f32 , yacc : 0.0_f32 , zacc : 0.0_f32 , xgyro : 0.0_f32 , ygyro : 0.0_f32 , zgyro : 0.0_f32 , xmag : 0.0_f32 , ymag : 0.0_f32 , zmag : 0.0_f32 , abs_pressure : 0.0_f32 , diff_pressure : 0.0_f32 , pressure_alt : 0.0_f32 , temperature : 0.0_f32 , fields_updated : HilSensorUpdatedFlags :: DEFAULT , } ; } impl Default for HIL_SENSOR_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for HIL_SENSOR_DATA { type Message = MavMessage ; const ID : u32 = 107u32 ; const NAME : & 'static str = "HIL_SENSOR" ; const EXTRA_CRC : u8 = 108u8 ; const ENCODED_LEN : usize = 64usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . xacc = buf . get_f32_le () ; __struct . yacc = buf . get_f32_le () ; __struct . zacc = buf . get_f32_le () ; __struct . xgyro = buf . get_f32_le () ; __struct . ygyro = buf . get_f32_le () ; __struct . zgyro = buf . get_f32_le () ; __struct . xmag = buf . get_f32_le () ; __struct . ymag = buf . get_f32_le () ; __struct . zmag = buf . get_f32_le () ; __struct . abs_pressure = buf . get_f32_le () ; __struct . diff_pressure = buf . get_f32_le () ; __struct . pressure_alt = buf . get_f32_le () ; __struct . temperature = buf . get_f32_le () ; let tmp = buf . get_u32_le () ; __struct . fields_updated = HilSensorUpdatedFlags :: from_bits (tmp & HilSensorUpdatedFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "HilSensorUpdatedFlags" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . xacc) ; __tmp . put_f32_le (self . yacc) ; __tmp . put_f32_le (self . zacc) ; __tmp . put_f32_le (self . xgyro) ; __tmp . put_f32_le (self . ygyro) ; __tmp . put_f32_le (self . zgyro) ; __tmp . put_f32_le (self . xmag) ; __tmp . put_f32_le (self . ymag) ; __tmp . put_f32_le (self . zmag) ; __tmp . put_f32_le (self . abs_pressure) ; __tmp . put_f32_le (self . diff_pressure) ; __tmp . put_f32_le (self . pressure_alt) ; __tmp . put_f32_le (self . temperature) ; __tmp . put_u32_le (self . fields_updated . bits ()) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct AIS_VESSEL_DATA { pub MMSI : u32 , pub lat : i32 , pub lon : i32 , pub COG : u16 , pub heading : u16 , pub velocity : u16 , pub dimension_bow : u16 , pub dimension_stern : u16 , pub tslc : u16 , pub flags : AisFlags , pub turn_rate : i8 , pub navigational_status : AisNavStatus , pub mavtype : AisType , pub dimension_port : u8 , pub dimension_starboard : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub callsign : [u8 ; 7] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub name : [u8 ; 20] , } impl AIS_VESSEL_DATA { pub const ENCODED_LEN : usize = 58usize ; pub const DEFAULT : Self = Self { MMSI : 0_u32 , lat : 0_i32 , lon : 0_i32 , COG : 0_u16 , heading : 0_u16 , velocity : 0_u16 , dimension_bow : 0_u16 , dimension_stern : 0_u16 , tslc : 0_u16 , flags : AisFlags :: DEFAULT , turn_rate : 0_i8 , navigational_status : AisNavStatus :: DEFAULT , mavtype : AisType :: DEFAULT , dimension_port : 0_u8 , dimension_starboard : 0_u8 , callsign : [0_u8 ; 7usize] , name : [0_u8 ; 20usize] , } ; } impl Default for AIS_VESSEL_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for AIS_VESSEL_DATA { type Message = MavMessage ; const ID : u32 = 301u32 ; const NAME : & 'static str = "AIS_VESSEL" ; const EXTRA_CRC : u8 = 243u8 ; const ENCODED_LEN : usize = 58usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . MMSI = buf . get_u32_le () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . COG = buf . get_u16_le () ; __struct . heading = buf . get_u16_le () ; __struct . velocity = buf . get_u16_le () ; __struct . dimension_bow = buf . get_u16_le () ; __struct . dimension_stern = buf . get_u16_le () ; __struct . tslc = buf . get_u16_le () ; let tmp = buf . get_u16_le () ; __struct . flags = AisFlags :: from_bits (tmp & AisFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "AisFlags" , value : tmp as u32 }) ? ; __struct . turn_rate = buf . get_i8 () ; let tmp = buf . get_u8 () ; __struct . navigational_status = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "AisNavStatus" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . mavtype = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "AisType" , value : tmp as u32 }) ? ; __struct . dimension_port = buf . get_u8 () ; __struct . dimension_starboard = buf . get_u8 () ; for v in & mut __struct . callsign { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . name { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . MMSI) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_u16_le (self . COG) ; __tmp . put_u16_le (self . heading) ; __tmp . put_u16_le (self . velocity) ; __tmp . put_u16_le (self . dimension_bow) ; __tmp . put_u16_le (self . dimension_stern) ; __tmp . put_u16_le (self . tslc) ; __tmp . put_u16_le (self . flags . bits ()) ; __tmp . put_i8 (self . turn_rate) ; __tmp . put_u8 (self . navigational_status as u8) ; __tmp . put_u8 (self . mavtype as u8) ; __tmp . put_u8 (self . dimension_port) ; __tmp . put_u8 (self . dimension_starboard) ; for val in & self . callsign { __tmp . put_u8 (* val) ; } for val in & self . name { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CUBEPILOT_FIRMWARE_UPDATE_START_DATA { pub size : u32 , pub crc : u32 , pub target_system : u8 , pub target_component : u8 , } impl CUBEPILOT_FIRMWARE_UPDATE_START_DATA { pub const ENCODED_LEN : usize = 10usize ; pub const DEFAULT : Self = Self { size : 0_u32 , crc : 0_u32 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for CUBEPILOT_FIRMWARE_UPDATE_START_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CUBEPILOT_FIRMWARE_UPDATE_START_DATA { type Message = MavMessage ; const ID : u32 = 50004u32 ; const NAME : & 'static str = "CUBEPILOT_FIRMWARE_UPDATE_START" ; const EXTRA_CRC : u8 = 240u8 ; const ENCODED_LEN : usize = 10usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . size = buf . get_u32_le () ; __struct . crc = buf . get_u32_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . size) ; __tmp . put_u32_le (self . crc) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct BATTERY2_DATA { pub voltage : u16 , pub current_battery : i16 , } impl BATTERY2_DATA { pub const ENCODED_LEN : usize = 4usize ; pub const DEFAULT : Self = Self { voltage : 0_u16 , current_battery : 0_i16 , } ; } impl Default for BATTERY2_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for BATTERY2_DATA { type Message = MavMessage ; const ID : u32 = 181u32 ; const NAME : & 'static str = "BATTERY2" ; const EXTRA_CRC : u8 = 174u8 ; const ENCODED_LEN : usize = 4usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . voltage = buf . get_u16_le () ; __struct . current_battery = buf . get_i16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . voltage) ; __tmp . put_i16_le (self . current_battery) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GLOBAL_POSITION_INT_DATA { pub time_boot_ms : u32 , pub lat : i32 , pub lon : i32 , pub alt : i32 , pub relative_alt : i32 , pub vx : i16 , pub vy : i16 , pub vz : i16 , pub hdg : u16 , } impl GLOBAL_POSITION_INT_DATA { pub const ENCODED_LEN : usize = 28usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , lat : 0_i32 , lon : 0_i32 , alt : 0_i32 , relative_alt : 0_i32 , vx : 0_i16 , vy : 0_i16 , vz : 0_i16 , hdg : 0_u16 , } ; } impl Default for GLOBAL_POSITION_INT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GLOBAL_POSITION_INT_DATA { type Message = MavMessage ; const ID : u32 = 33u32 ; const NAME : & 'static str = "GLOBAL_POSITION_INT" ; const EXTRA_CRC : u8 = 104u8 ; const ENCODED_LEN : usize = 28usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . alt = buf . get_i32_le () ; __struct . relative_alt = buf . get_i32_le () ; __struct . vx = buf . get_i16_le () ; __struct . vy = buf . get_i16_le () ; __struct . vz = buf . get_i16_le () ; __struct . hdg = buf . get_u16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_i32_le (self . alt) ; __tmp . put_i32_le (self . relative_alt) ; __tmp . put_i16_le (self . vx) ; __tmp . put_i16_le (self . vy) ; __tmp . put_i16_le (self . vz) ; __tmp . put_u16_le (self . hdg) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct RC_CHANNELS_SCALED_DATA { pub time_boot_ms : u32 , pub chan1_scaled : i16 , pub chan2_scaled : i16 , pub chan3_scaled : i16 , pub chan4_scaled : i16 , pub chan5_scaled : i16 , pub chan6_scaled : i16 , pub chan7_scaled : i16 , pub chan8_scaled : i16 , pub port : u8 , pub rssi : u8 , } impl RC_CHANNELS_SCALED_DATA { pub const ENCODED_LEN : usize = 22usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , chan1_scaled : 0_i16 , chan2_scaled : 0_i16 , chan3_scaled : 0_i16 , chan4_scaled : 0_i16 , chan5_scaled : 0_i16 , chan6_scaled : 0_i16 , chan7_scaled : 0_i16 , chan8_scaled : 0_i16 , port : 0_u8 , rssi : 0_u8 , } ; } impl Default for RC_CHANNELS_SCALED_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for RC_CHANNELS_SCALED_DATA { type Message = MavMessage ; const ID : u32 = 34u32 ; const NAME : & 'static str = "RC_CHANNELS_SCALED" ; const EXTRA_CRC : u8 = 237u8 ; const ENCODED_LEN : usize = 22usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . chan1_scaled = buf . get_i16_le () ; __struct . chan2_scaled = buf . get_i16_le () ; __struct . chan3_scaled = buf . get_i16_le () ; __struct . chan4_scaled = buf . get_i16_le () ; __struct . chan5_scaled = buf . get_i16_le () ; __struct . chan6_scaled = buf . get_i16_le () ; __struct . chan7_scaled = buf . get_i16_le () ; __struct . chan8_scaled = buf . get_i16_le () ; __struct . port = buf . get_u8 () ; __struct . rssi = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_i16_le (self . chan1_scaled) ; __tmp . put_i16_le (self . chan2_scaled) ; __tmp . put_i16_le (self . chan3_scaled) ; __tmp . put_i16_le (self . chan4_scaled) ; __tmp . put_i16_le (self . chan5_scaled) ; __tmp . put_i16_le (self . chan6_scaled) ; __tmp . put_i16_le (self . chan7_scaled) ; __tmp . put_i16_le (self . chan8_scaled) ; __tmp . put_u8 (self . port) ; __tmp . put_u8 (self . rssi) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct COLLISION_DATA { pub id : u32 , pub time_to_minimum_delta : f32 , pub altitude_minimum_delta : f32 , pub horizontal_minimum_delta : f32 , pub src : MavCollisionSrc , pub action : MavCollisionAction , pub threat_level : MavCollisionThreatLevel , } impl COLLISION_DATA { pub const ENCODED_LEN : usize = 19usize ; pub const DEFAULT : Self = Self { id : 0_u32 , time_to_minimum_delta : 0.0_f32 , altitude_minimum_delta : 0.0_f32 , horizontal_minimum_delta : 0.0_f32 , src : MavCollisionSrc :: DEFAULT , action : MavCollisionAction :: DEFAULT , threat_level : MavCollisionThreatLevel :: DEFAULT , } ; } impl Default for COLLISION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for COLLISION_DATA { type Message = MavMessage ; const ID : u32 = 247u32 ; const NAME : & 'static str = "COLLISION" ; const EXTRA_CRC : u8 = 81u8 ; const ENCODED_LEN : usize = 19usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . id = buf . get_u32_le () ; __struct . time_to_minimum_delta = buf . get_f32_le () ; __struct . altitude_minimum_delta = buf . get_f32_le () ; __struct . horizontal_minimum_delta = buf . get_f32_le () ; let tmp = buf . get_u8 () ; __struct . src = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavCollisionSrc" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . action = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavCollisionAction" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . threat_level = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavCollisionThreatLevel" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . id) ; __tmp . put_f32_le (self . time_to_minimum_delta) ; __tmp . put_f32_le (self . altitude_minimum_delta) ; __tmp . put_f32_le (self . horizontal_minimum_delta) ; __tmp . put_u8 (self . src as u8) ; __tmp . put_u8 (self . action as u8) ; __tmp . put_u8 (self . threat_level as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct WATER_DEPTH_DATA { pub time_boot_ms : u32 , pub lat : i32 , pub lng : i32 , pub alt : f32 , pub roll : f32 , pub pitch : f32 , pub yaw : f32 , pub distance : f32 , pub temperature : f32 , pub id : u8 , pub healthy : u8 , } impl WATER_DEPTH_DATA { pub const ENCODED_LEN : usize = 38usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , lat : 0_i32 , lng : 0_i32 , alt : 0.0_f32 , roll : 0.0_f32 , pitch : 0.0_f32 , yaw : 0.0_f32 , distance : 0.0_f32 , temperature : 0.0_f32 , id : 0_u8 , healthy : 0_u8 , } ; } impl Default for WATER_DEPTH_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for WATER_DEPTH_DATA { type Message = MavMessage ; const ID : u32 = 11038u32 ; const NAME : & 'static str = "WATER_DEPTH" ; const EXTRA_CRC : u8 = 47u8 ; const ENCODED_LEN : usize = 38usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . lat = buf . get_i32_le () ; __struct . lng = buf . get_i32_le () ; __struct . alt = buf . get_f32_le () ; __struct . roll = buf . get_f32_le () ; __struct . pitch = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; __struct . distance = buf . get_f32_le () ; __struct . temperature = buf . get_f32_le () ; __struct . id = buf . get_u8 () ; __struct . healthy = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lng) ; __tmp . put_f32_le (self . alt) ; __tmp . put_f32_le (self . roll) ; __tmp . put_f32_le (self . pitch) ; __tmp . put_f32_le (self . yaw) ; __tmp . put_f32_le (self . distance) ; __tmp . put_f32_le (self . temperature) ; __tmp . put_u8 (self . id) ; __tmp . put_u8 (self . healthy) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ESC_TELEMETRY_5_TO_8_DATA { # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub voltage : [u16 ; 4] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub current : [u16 ; 4] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub totalcurrent : [u16 ; 4] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub rpm : [u16 ; 4] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub count : [u16 ; 4] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub temperature : [u8 ; 4] , } impl ESC_TELEMETRY_5_TO_8_DATA { pub const ENCODED_LEN : usize = 44usize ; pub const DEFAULT : Self = Self { voltage : [0_u16 ; 4usize] , current : [0_u16 ; 4usize] , totalcurrent : [0_u16 ; 4usize] , rpm : [0_u16 ; 4usize] , count : [0_u16 ; 4usize] , temperature : [0_u8 ; 4usize] , } ; } impl Default for ESC_TELEMETRY_5_TO_8_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ESC_TELEMETRY_5_TO_8_DATA { type Message = MavMessage ; const ID : u32 = 11031u32 ; const NAME : & 'static str = "ESC_TELEMETRY_5_TO_8" ; const EXTRA_CRC : u8 = 133u8 ; const ENCODED_LEN : usize = 44usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; for v in & mut __struct . voltage { let val = buf . get_u16_le () ; * v = val ; } for v in & mut __struct . current { let val = buf . get_u16_le () ; * v = val ; } for v in & mut __struct . totalcurrent { let val = buf . get_u16_le () ; * v = val ; } for v in & mut __struct . rpm { let val = buf . get_u16_le () ; * v = val ; } for v in & mut __struct . count { let val = buf . get_u16_le () ; * v = val ; } for v in & mut __struct . temperature { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; for val in & self . voltage { __tmp . put_u16_le (* val) ; } for val in & self . current { __tmp . put_u16_le (* val) ; } for val in & self . totalcurrent { __tmp . put_u16_le (* val) ; } for val in & self . rpm { __tmp . put_u16_le (* val) ; } for val in & self . count { __tmp . put_u16_le (* val) ; } for val in & self . temperature { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HERELINK_VIDEO_STREAM_INFORMATION_DATA { pub framerate : f32 , pub bitrate : u32 , pub resolution_h : u16 , pub resolution_v : u16 , pub rotation : u16 , pub camera_id : u8 , pub status : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub uri : [u8 ; 230] , } impl HERELINK_VIDEO_STREAM_INFORMATION_DATA { pub const ENCODED_LEN : usize = 246usize ; pub const DEFAULT : Self = Self { framerate : 0.0_f32 , bitrate : 0_u32 , resolution_h : 0_u16 , resolution_v : 0_u16 , rotation : 0_u16 , camera_id : 0_u8 , status : 0_u8 , uri : [0_u8 ; 230usize] , } ; } impl Default for HERELINK_VIDEO_STREAM_INFORMATION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for HERELINK_VIDEO_STREAM_INFORMATION_DATA { type Message = MavMessage ; const ID : u32 = 50002u32 ; const NAME : & 'static str = "HERELINK_VIDEO_STREAM_INFORMATION" ; const EXTRA_CRC : u8 = 181u8 ; const ENCODED_LEN : usize = 246usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . framerate = buf . get_f32_le () ; __struct . bitrate = buf . get_u32_le () ; __struct . resolution_h = buf . get_u16_le () ; __struct . resolution_v = buf . get_u16_le () ; __struct . rotation = buf . get_u16_le () ; __struct . camera_id = buf . get_u8 () ; __struct . status = buf . get_u8 () ; for v in & mut __struct . uri { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . framerate) ; __tmp . put_u32_le (self . bitrate) ; __tmp . put_u16_le (self . resolution_h) ; __tmp . put_u16_le (self . resolution_v) ; __tmp . put_u16_le (self . rotation) ; __tmp . put_u8 (self . camera_id) ; __tmp . put_u8 (self . status) ; for val in & self . uri { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LOG_ERASE_DATA { pub target_system : u8 , pub target_component : u8 , } impl LOG_ERASE_DATA { pub const ENCODED_LEN : usize = 2usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for LOG_ERASE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for LOG_ERASE_DATA { type Message = MavMessage ; const ID : u32 = 121u32 ; const NAME : & 'static str = "LOG_ERASE" ; const EXTRA_CRC : u8 = 237u8 ; const ENCODED_LEN : usize = 2usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SET_HOME_POSITION_DATA { pub latitude : i32 , pub longitude : i32 , pub altitude : i32 , pub x : f32 , pub y : f32 , pub z : f32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub q : [f32 ; 4] , pub approach_x : f32 , pub approach_y : f32 , pub approach_z : f32 , pub target_system : u8 , } impl SET_HOME_POSITION_DATA { pub const ENCODED_LEN : usize = 53usize ; pub const DEFAULT : Self = Self { latitude : 0_i32 , longitude : 0_i32 , altitude : 0_i32 , x : 0.0_f32 , y : 0.0_f32 , z : 0.0_f32 , q : [0.0_f32 ; 4usize] , approach_x : 0.0_f32 , approach_y : 0.0_f32 , approach_z : 0.0_f32 , target_system : 0_u8 , } ; } impl Default for SET_HOME_POSITION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SET_HOME_POSITION_DATA { type Message = MavMessage ; const ID : u32 = 243u32 ; const NAME : & 'static str = "SET_HOME_POSITION" ; const EXTRA_CRC : u8 = 85u8 ; const ENCODED_LEN : usize = 53usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . latitude = buf . get_i32_le () ; __struct . longitude = buf . get_i32_le () ; __struct . altitude = buf . get_i32_le () ; __struct . x = buf . get_f32_le () ; __struct . y = buf . get_f32_le () ; __struct . z = buf . get_f32_le () ; for v in & mut __struct . q { let val = buf . get_f32_le () ; * v = val ; } __struct . approach_x = buf . get_f32_le () ; __struct . approach_y = buf . get_f32_le () ; __struct . approach_z = buf . get_f32_le () ; __struct . target_system = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . latitude) ; __tmp . put_i32_le (self . longitude) ; __tmp . put_i32_le (self . altitude) ; __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; for val in & self . q { __tmp . put_f32_le (* val) ; } __tmp . put_f32_le (self . approach_x) ; __tmp . put_f32_le (self . approach_y) ; __tmp . put_f32_le (self . approach_z) ; __tmp . put_u8 (self . target_system) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CAMERA_FOV_STATUS_DATA { pub time_boot_ms : u32 , pub lat_camera : i32 , pub lon_camera : i32 , pub alt_camera : i32 , pub lat_image : i32 , pub lon_image : i32 , pub alt_image : i32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub q : [f32 ; 4] , pub hfov : f32 , pub vfov : f32 , } impl CAMERA_FOV_STATUS_DATA { pub const ENCODED_LEN : usize = 52usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , lat_camera : 0_i32 , lon_camera : 0_i32 , alt_camera : 0_i32 , lat_image : 0_i32 , lon_image : 0_i32 , alt_image : 0_i32 , q : [0.0_f32 ; 4usize] , hfov : 0.0_f32 , vfov : 0.0_f32 , } ; } impl Default for CAMERA_FOV_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CAMERA_FOV_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 271u32 ; const NAME : & 'static str = "CAMERA_FOV_STATUS" ; const EXTRA_CRC : u8 = 22u8 ; const ENCODED_LEN : usize = 52usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . lat_camera = buf . get_i32_le () ; __struct . lon_camera = buf . get_i32_le () ; __struct . alt_camera = buf . get_i32_le () ; __struct . lat_image = buf . get_i32_le () ; __struct . lon_image = buf . get_i32_le () ; __struct . alt_image = buf . get_i32_le () ; for v in & mut __struct . q { let val = buf . get_f32_le () ; * v = val ; } __struct . hfov = buf . get_f32_le () ; __struct . vfov = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_i32_le (self . lat_camera) ; __tmp . put_i32_le (self . lon_camera) ; __tmp . put_i32_le (self . alt_camera) ; __tmp . put_i32_le (self . lat_image) ; __tmp . put_i32_le (self . lon_image) ; __tmp . put_i32_le (self . alt_image) ; for val in & self . q { __tmp . put_f32_le (* val) ; } __tmp . put_f32_le (self . hfov) ; __tmp . put_f32_le (self . vfov) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SCALED_PRESSURE_DATA { pub time_boot_ms : u32 , pub press_abs : f32 , pub press_diff : f32 , pub temperature : i16 , } impl SCALED_PRESSURE_DATA { pub const ENCODED_LEN : usize = 14usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , press_abs : 0.0_f32 , press_diff : 0.0_f32 , temperature : 0_i16 , } ; } impl Default for SCALED_PRESSURE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SCALED_PRESSURE_DATA { type Message = MavMessage ; const ID : u32 = 29u32 ; const NAME : & 'static str = "SCALED_PRESSURE" ; const EXTRA_CRC : u8 = 115u8 ; const ENCODED_LEN : usize = 14usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . press_abs = buf . get_f32_le () ; __struct . press_diff = buf . get_f32_le () ; __struct . temperature = buf . get_i16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . press_abs) ; __tmp . put_f32_le (self . press_diff) ; __tmp . put_i16_le (self . temperature) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PARAM_REQUEST_READ_DATA { pub param_index : i16 , pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub param_id : [u8 ; 16] , } impl PARAM_REQUEST_READ_DATA { pub const ENCODED_LEN : usize = 20usize ; pub const DEFAULT : Self = Self { param_index : 0_i16 , target_system : 0_u8 , target_component : 0_u8 , param_id : [0_u8 ; 16usize] , } ; } impl Default for PARAM_REQUEST_READ_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for PARAM_REQUEST_READ_DATA { type Message = MavMessage ; const ID : u32 = 20u32 ; const NAME : & 'static str = "PARAM_REQUEST_READ" ; const EXTRA_CRC : u8 = 214u8 ; const ENCODED_LEN : usize = 20usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . param_index = buf . get_i16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . param_id { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i16_le (self . param_index) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . param_id { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HIL_RC_INPUTS_RAW_DATA { pub time_usec : u64 , pub chan1_raw : u16 , pub chan2_raw : u16 , pub chan3_raw : u16 , pub chan4_raw : u16 , pub chan5_raw : u16 , pub chan6_raw : u16 , pub chan7_raw : u16 , pub chan8_raw : u16 , pub chan9_raw : u16 , pub chan10_raw : u16 , pub chan11_raw : u16 , pub chan12_raw : u16 , pub rssi : u8 , } impl HIL_RC_INPUTS_RAW_DATA { pub const ENCODED_LEN : usize = 33usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , chan1_raw : 0_u16 , chan2_raw : 0_u16 , chan3_raw : 0_u16 , chan4_raw : 0_u16 , chan5_raw : 0_u16 , chan6_raw : 0_u16 , chan7_raw : 0_u16 , chan8_raw : 0_u16 , chan9_raw : 0_u16 , chan10_raw : 0_u16 , chan11_raw : 0_u16 , chan12_raw : 0_u16 , rssi : 0_u8 , } ; } impl Default for HIL_RC_INPUTS_RAW_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for HIL_RC_INPUTS_RAW_DATA { type Message = MavMessage ; const ID : u32 = 92u32 ; const NAME : & 'static str = "HIL_RC_INPUTS_RAW" ; const EXTRA_CRC : u8 = 54u8 ; const ENCODED_LEN : usize = 33usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . chan1_raw = buf . get_u16_le () ; __struct . chan2_raw = buf . get_u16_le () ; __struct . chan3_raw = buf . get_u16_le () ; __struct . chan4_raw = buf . get_u16_le () ; __struct . chan5_raw = buf . get_u16_le () ; __struct . chan6_raw = buf . get_u16_le () ; __struct . chan7_raw = buf . get_u16_le () ; __struct . chan8_raw = buf . get_u16_le () ; __struct . chan9_raw = buf . get_u16_le () ; __struct . chan10_raw = buf . get_u16_le () ; __struct . chan11_raw = buf . get_u16_le () ; __struct . chan12_raw = buf . get_u16_le () ; __struct . rssi = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_u16_le (self . chan1_raw) ; __tmp . put_u16_le (self . chan2_raw) ; __tmp . put_u16_le (self . chan3_raw) ; __tmp . put_u16_le (self . chan4_raw) ; __tmp . put_u16_le (self . chan5_raw) ; __tmp . put_u16_le (self . chan6_raw) ; __tmp . put_u16_le (self . chan7_raw) ; __tmp . put_u16_le (self . chan8_raw) ; __tmp . put_u16_le (self . chan9_raw) ; __tmp . put_u16_le (self . chan10_raw) ; __tmp . put_u16_le (self . chan11_raw) ; __tmp . put_u16_le (self . chan12_raw) ; __tmp . put_u8 (self . rssi) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SET_MODE_DATA { pub custom_mode : u32 , pub target_system : u8 , pub base_mode : MavMode , } impl SET_MODE_DATA { pub const ENCODED_LEN : usize = 6usize ; pub const DEFAULT : Self = Self { custom_mode : 0_u32 , target_system : 0_u8 , base_mode : MavMode :: DEFAULT , } ; } impl Default for SET_MODE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SET_MODE_DATA { type Message = MavMessage ; const ID : u32 = 11u32 ; const NAME : & 'static str = "SET_MODE" ; const EXTRA_CRC : u8 = 89u8 ; const ENCODED_LEN : usize = 6usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . custom_mode = buf . get_u32_le () ; __struct . target_system = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . base_mode = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavMode" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . custom_mode) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . base_mode as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GIMBAL_MANAGER_SET_ATTITUDE_DATA { pub flags : GimbalManagerFlags , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub q : [f32 ; 4] , pub angular_velocity_x : f32 , pub angular_velocity_y : f32 , pub angular_velocity_z : f32 , pub target_system : u8 , pub target_component : u8 , pub gimbal_device_id : u8 , } impl GIMBAL_MANAGER_SET_ATTITUDE_DATA { pub const ENCODED_LEN : usize = 35usize ; pub const DEFAULT : Self = Self { flags : GimbalManagerFlags :: DEFAULT , q : [0.0_f32 ; 4usize] , angular_velocity_x : 0.0_f32 , angular_velocity_y : 0.0_f32 , angular_velocity_z : 0.0_f32 , target_system : 0_u8 , target_component : 0_u8 , gimbal_device_id : 0_u8 , } ; } impl Default for GIMBAL_MANAGER_SET_ATTITUDE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GIMBAL_MANAGER_SET_ATTITUDE_DATA { type Message = MavMessage ; const ID : u32 = 282u32 ; const NAME : & 'static str = "GIMBAL_MANAGER_SET_ATTITUDE" ; const EXTRA_CRC : u8 = 123u8 ; const ENCODED_LEN : usize = 35usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u32_le () ; __struct . flags = FromPrimitive :: from_u32 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "GimbalManagerFlags" , value : tmp as u32 }) ? ; for v in & mut __struct . q { let val = buf . get_f32_le () ; * v = val ; } __struct . angular_velocity_x = buf . get_f32_le () ; __struct . angular_velocity_y = buf . get_f32_le () ; __struct . angular_velocity_z = buf . get_f32_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . gimbal_device_id = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . flags as u32) ; for val in & self . q { __tmp . put_f32_le (* val) ; } __tmp . put_f32_le (self . angular_velocity_x) ; __tmp . put_f32_le (self . angular_velocity_y) ; __tmp . put_f32_le (self . angular_velocity_z) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . gimbal_device_id) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CAMERA_INFORMATION_DATA { pub time_boot_ms : u32 , pub firmware_version : u32 , pub focal_length : f32 , pub sensor_size_h : f32 , pub sensor_size_v : f32 , pub flags : CameraCapFlags , pub resolution_h : u16 , pub resolution_v : u16 , pub cam_definition_version : u16 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub vendor_name : [u8 ; 32] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub model_name : [u8 ; 32] , pub lens_id : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub cam_definition_uri : [u8 ; 140] , } impl CAMERA_INFORMATION_DATA { pub const ENCODED_LEN : usize = 235usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , firmware_version : 0_u32 , focal_length : 0.0_f32 , sensor_size_h : 0.0_f32 , sensor_size_v : 0.0_f32 , flags : CameraCapFlags :: DEFAULT , resolution_h : 0_u16 , resolution_v : 0_u16 , cam_definition_version : 0_u16 , vendor_name : [0_u8 ; 32usize] , model_name : [0_u8 ; 32usize] , lens_id : 0_u8 , cam_definition_uri : [0_u8 ; 140usize] , } ; } impl Default for CAMERA_INFORMATION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CAMERA_INFORMATION_DATA { type Message = MavMessage ; const ID : u32 = 259u32 ; const NAME : & 'static str = "CAMERA_INFORMATION" ; const EXTRA_CRC : u8 = 92u8 ; const ENCODED_LEN : usize = 235usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . firmware_version = buf . get_u32_le () ; __struct . focal_length = buf . get_f32_le () ; __struct . sensor_size_h = buf . get_f32_le () ; __struct . sensor_size_v = buf . get_f32_le () ; let tmp = buf . get_u32_le () ; __struct . flags = CameraCapFlags :: from_bits (tmp & CameraCapFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "CameraCapFlags" , value : tmp as u32 }) ? ; __struct . resolution_h = buf . get_u16_le () ; __struct . resolution_v = buf . get_u16_le () ; __struct . cam_definition_version = buf . get_u16_le () ; for v in & mut __struct . vendor_name { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . model_name { let val = buf . get_u8 () ; * v = val ; } __struct . lens_id = buf . get_u8 () ; for v in & mut __struct . cam_definition_uri { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_u32_le (self . firmware_version) ; __tmp . put_f32_le (self . focal_length) ; __tmp . put_f32_le (self . sensor_size_h) ; __tmp . put_f32_le (self . sensor_size_v) ; __tmp . put_u32_le (self . flags . bits ()) ; __tmp . put_u16_le (self . resolution_h) ; __tmp . put_u16_le (self . resolution_v) ; __tmp . put_u16_le (self . cam_definition_version) ; for val in & self . vendor_name { __tmp . put_u8 (* val) ; } for val in & self . model_name { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . lens_id) ; for val in & self . cam_definition_uri { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GLOBAL_POSITION_INT_COV_DATA { pub time_usec : u64 , pub lat : i32 , pub lon : i32 , pub alt : i32 , pub relative_alt : i32 , pub vx : f32 , pub vy : f32 , pub vz : f32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub covariance : [f32 ; 36] , pub estimator_type : MavEstimatorType , } impl GLOBAL_POSITION_INT_COV_DATA { pub const ENCODED_LEN : usize = 181usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , lat : 0_i32 , lon : 0_i32 , alt : 0_i32 , relative_alt : 0_i32 , vx : 0.0_f32 , vy : 0.0_f32 , vz : 0.0_f32 , covariance : [0.0_f32 ; 36usize] , estimator_type : MavEstimatorType :: DEFAULT , } ; } impl Default for GLOBAL_POSITION_INT_COV_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GLOBAL_POSITION_INT_COV_DATA { type Message = MavMessage ; const ID : u32 = 63u32 ; const NAME : & 'static str = "GLOBAL_POSITION_INT_COV" ; const EXTRA_CRC : u8 = 119u8 ; const ENCODED_LEN : usize = 181usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . alt = buf . get_i32_le () ; __struct . relative_alt = buf . get_i32_le () ; __struct . vx = buf . get_f32_le () ; __struct . vy = buf . get_f32_le () ; __struct . vz = buf . get_f32_le () ; for v in & mut __struct . covariance { let val = buf . get_f32_le () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . estimator_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavEstimatorType" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_i32_le (self . alt) ; __tmp . put_i32_le (self . relative_alt) ; __tmp . put_f32_le (self . vx) ; __tmp . put_f32_le (self . vy) ; __tmp . put_f32_le (self . vz) ; for val in & self . covariance { __tmp . put_f32_le (* val) ; } __tmp . put_u8 (self . estimator_type as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GPS_STATUS_DATA { pub satellites_visible : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub satellite_prn : [u8 ; 20] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub satellite_used : [u8 ; 20] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub satellite_elevation : [u8 ; 20] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub satellite_azimuth : [u8 ; 20] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub satellite_snr : [u8 ; 20] , } impl GPS_STATUS_DATA { pub const ENCODED_LEN : usize = 101usize ; pub const DEFAULT : Self = Self { satellites_visible : 0_u8 , satellite_prn : [0_u8 ; 20usize] , satellite_used : [0_u8 ; 20usize] , satellite_elevation : [0_u8 ; 20usize] , satellite_azimuth : [0_u8 ; 20usize] , satellite_snr : [0_u8 ; 20usize] , } ; } impl Default for GPS_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GPS_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 25u32 ; const NAME : & 'static str = "GPS_STATUS" ; const EXTRA_CRC : u8 = 23u8 ; const ENCODED_LEN : usize = 101usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . satellites_visible = buf . get_u8 () ; for v in & mut __struct . satellite_prn { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . satellite_used { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . satellite_elevation { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . satellite_azimuth { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . satellite_snr { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . satellites_visible) ; for val in & self . satellite_prn { __tmp . put_u8 (* val) ; } for val in & self . satellite_used { __tmp . put_u8 (* val) ; } for val in & self . satellite_elevation { __tmp . put_u8 (* val) ; } for val in & self . satellite_azimuth { __tmp . put_u8 (* val) ; } for val in & self . satellite_snr { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct RESPONSE_EVENT_ERROR_DATA { pub sequence : u16 , pub sequence_oldest_available : u16 , pub target_system : u8 , pub target_component : u8 , pub reason : MavEventErrorReason , } impl RESPONSE_EVENT_ERROR_DATA { pub const ENCODED_LEN : usize = 7usize ; pub const DEFAULT : Self = Self { sequence : 0_u16 , sequence_oldest_available : 0_u16 , target_system : 0_u8 , target_component : 0_u8 , reason : MavEventErrorReason :: DEFAULT , } ; } impl Default for RESPONSE_EVENT_ERROR_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for RESPONSE_EVENT_ERROR_DATA { type Message = MavMessage ; const ID : u32 = 413u32 ; const NAME : & 'static str = "RESPONSE_EVENT_ERROR" ; const EXTRA_CRC : u8 = 77u8 ; const ENCODED_LEN : usize = 7usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . sequence = buf . get_u16_le () ; __struct . sequence_oldest_available = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . reason = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavEventErrorReason" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . sequence) ; __tmp . put_u16_le (self . sequence_oldest_available) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . reason as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Clone , PartialEq , Debug)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavMessage { HEARTBEAT (HEARTBEAT_DATA) , MISSION_ITEM_REACHED (MISSION_ITEM_REACHED_DATA) , OSD_PARAM_SHOW_CONFIG (OSD_PARAM_SHOW_CONFIG_DATA) , TIMESYNC (TIMESYNC_DATA) , GOPRO_GET_REQUEST (GOPRO_GET_REQUEST_DATA) , TRAJECTORY_REPRESENTATION_WAYPOINTS (TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA) , POSITION_TARGET_LOCAL_NED (POSITION_TARGET_LOCAL_NED_DATA) , LOCAL_POSITION_NED (LOCAL_POSITION_NED_DATA) , TIME_ESTIMATE_TO_TARGET (TIME_ESTIMATE_TO_TARGET_DATA) , SUPPORTED_TUNES (SUPPORTED_TUNES_DATA) , VFR_HUD (VFR_HUD_DATA) , POSITION_TARGET_GLOBAL_INT (POSITION_TARGET_GLOBAL_INT_DATA) , EFI_STATUS (EFI_STATUS_DATA) , ALTITUDE (ALTITUDE_DATA) , RAW_PRESSURE (RAW_PRESSURE_DATA) , OBSTACLE_DISTANCE (OBSTACLE_DISTANCE_DATA) , LINK_NODE_STATUS (LINK_NODE_STATUS_DATA) , AIRSPEED_AUTOCAL (AIRSPEED_AUTOCAL_DATA) , SET_GPS_GLOBAL_ORIGIN (SET_GPS_GLOBAL_ORIGIN_DATA) , RADIO_STATUS (RADIO_STATUS_DATA) , LOGGING_DATA (LOGGING_DATA_DATA) , HOME_POSITION (HOME_POSITION_DATA) , WHEEL_DISTANCE (WHEEL_DISTANCE_DATA) , GIMBAL_MANAGER_SET_MANUAL_CONTROL (GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA) , FILE_TRANSFER_PROTOCOL (FILE_TRANSFER_PROTOCOL_DATA) , MISSION_REQUEST_PARTIAL_LIST (MISSION_REQUEST_PARTIAL_LIST_DATA) , RC_CHANNELS_RAW (RC_CHANNELS_RAW_DATA) , ACTUATOR_CONTROL_TARGET (ACTUATOR_CONTROL_TARGET_DATA) , FOLLOW_TARGET (FOLLOW_TARGET_DATA) , CANFD_FRAME (CANFD_FRAME_DATA) , VIDEO_STREAM_STATUS (VIDEO_STREAM_STATUS_DATA) , PARAM_SET (PARAM_SET_DATA) , SYS_STATUS (SYS_STATUS_DATA) , ADSB_VEHICLE (ADSB_VEHICLE_DATA) , WIND_COV (WIND_COV_DATA) , ESTIMATOR_STATUS (ESTIMATOR_STATUS_DATA) , OPEN_DRONE_ID_SYSTEM_UPDATE (OPEN_DRONE_ID_SYSTEM_UPDATE_DATA) , UAVIONIX_ADSB_OUT_CFG (UAVIONIX_ADSB_OUT_CFG_DATA) , FENCE_STATUS (FENCE_STATUS_DATA) , AUTOPILOT_VERSION_REQUEST (AUTOPILOT_VERSION_REQUEST_DATA) , DATA16 (DATA16_DATA) , MANUAL_SETPOINT (MANUAL_SETPOINT_DATA) , POWER_STATUS (POWER_STATUS_DATA) , SET_ACTUATOR_CONTROL_TARGET (SET_ACTUATOR_CONTROL_TARGET_DATA) , HWSTATUS (HWSTATUS_DATA) , SET_POSITION_TARGET_LOCAL_NED (SET_POSITION_TARGET_LOCAL_NED_DATA) , CAMERA_IMAGE_CAPTURED (CAMERA_IMAGE_CAPTURED_DATA) , CAMERA_STATUS (CAMERA_STATUS_DATA) , SCALED_IMU2 (SCALED_IMU2_DATA) , PARAM_VALUE (PARAM_VALUE_DATA) , TERRAIN_REQUEST (TERRAIN_REQUEST_DATA) , WIND (WIND_DATA) , DATA_TRANSMISSION_HANDSHAKE (DATA_TRANSMISSION_HANDSHAKE_DATA) , TUNNEL (TUNNEL_DATA) , HIL_ACTUATOR_CONTROLS (HIL_ACTUATOR_CONTROLS_DATA) , UAVCAN_NODE_STATUS (UAVCAN_NODE_STATUS_DATA) , GPS_RTK (GPS_RTK_DATA) , HYGROMETER_SENSOR (HYGROMETER_SENSOR_DATA) , COMPASSMOT_STATUS (COMPASSMOT_STATUS_DATA) , EXTENDED_SYS_STATE (EXTENDED_SYS_STATE_DATA) , GIMBAL_DEVICE_INFORMATION (GIMBAL_DEVICE_INFORMATION_DATA) , PLAY_TUNE_V2 (PLAY_TUNE_V2_DATA) , OPEN_DRONE_ID_ARM_STATUS (OPEN_DRONE_ID_ARM_STATUS_DATA) , SCALED_PRESSURE2 (SCALED_PRESSURE2_DATA) , DATA96 (DATA96_DATA) , FLIGHT_INFORMATION (FLIGHT_INFORMATION_DATA) , REMOTE_LOG_DATA_BLOCK (REMOTE_LOG_DATA_BLOCK_DATA) , ACTUATOR_OUTPUT_STATUS (ACTUATOR_OUTPUT_STATUS_DATA) , AHRS (AHRS_DATA) , DEBUG_VECT (DEBUG_VECT_DATA) , UTM_GLOBAL_POSITION (UTM_GLOBAL_POSITION_DATA) , MISSION_ITEM_INT (MISSION_ITEM_INT_DATA) , CAN_FILTER_MODIFY (CAN_FILTER_MODIFY_DATA) , DEVICE_OP_READ_REPLY (DEVICE_OP_READ_REPLY_DATA) , ADAP_TUNING (ADAP_TUNING_DATA) , SET_POSITION_TARGET_GLOBAL_INT (SET_POSITION_TARGET_GLOBAL_INT_DATA) , PROTOCOL_VERSION (PROTOCOL_VERSION_DATA) , HIL_GPS (HIL_GPS_DATA) , SCALED_IMU (SCALED_IMU_DATA) , UAVIONIX_ADSB_OUT_DYNAMIC (UAVIONIX_ADSB_OUT_DYNAMIC_DATA) , COMMAND_CANCEL (COMMAND_CANCEL_DATA) , MOUNT_CONFIGURE (MOUNT_CONFIGURE_DATA) , LOGGING_ACK (LOGGING_ACK_DATA) , ATT_POS_MOCAP (ATT_POS_MOCAP_DATA) , PARAM_EXT_REQUEST_READ (PARAM_EXT_REQUEST_READ_DATA) , CAMERA_TRACKING_IMAGE_STATUS (CAMERA_TRACKING_IMAGE_STATUS_DATA) , EKF_STATUS_REPORT (EKF_STATUS_REPORT_DATA) , OBSTACLE_DISTANCE_3D (OBSTACLE_DISTANCE_3D_DATA) , TERRAIN_DATA (TERRAIN_DATA_DATA) , PARAM_REQUEST_LIST (PARAM_REQUEST_LIST_DATA) , RPM (RPM_DATA) , MISSION_REQUEST_INT (MISSION_REQUEST_INT_DATA) , CELLULAR_CONFIG (CELLULAR_CONFIG_DATA) , SENSOR_OFFSETS (SENSOR_OFFSETS_DATA) , AHRS3 (AHRS3_DATA) , LOG_REQUEST_LIST (LOG_REQUEST_LIST_DATA) , DIGICAM_CONFIGURE (DIGICAM_CONFIGURE_DATA) , GPS2_RAW (GPS2_RAW_DATA) , OPEN_DRONE_ID_SELF_ID (OPEN_DRONE_ID_SELF_ID_DATA) , AHRS2 (AHRS2_DATA) , VICON_POSITION_ESTIMATE (VICON_POSITION_ESTIMATE_DATA) , CHANGE_OPERATOR_CONTROL (CHANGE_OPERATOR_CONTROL_DATA) , RC_CHANNELS_OVERRIDE (RC_CHANNELS_OVERRIDE_DATA) , MISSION_WRITE_PARTIAL_LIST (MISSION_WRITE_PARTIAL_LIST_DATA) , CAMERA_TRIGGER (CAMERA_TRIGGER_DATA) , MISSION_REQUEST_LIST (MISSION_REQUEST_LIST_DATA) , DATA32 (DATA32_DATA) , CAMERA_CAPTURE_STATUS (CAMERA_CAPTURE_STATUS_DATA) , TERRAIN_CHECK (TERRAIN_CHECK_DATA) , ICAROUS_KINEMATIC_BANDS (ICAROUS_KINEMATIC_BANDS_DATA) , CHANGE_OPERATOR_CONTROL_ACK (CHANGE_OPERATOR_CONTROL_ACK_DATA) , ORBIT_EXECUTION_STATUS (ORBIT_EXECUTION_STATUS_DATA) , DEVICE_OP_WRITE (DEVICE_OP_WRITE_DATA) , OPEN_DRONE_ID_LOCATION (OPEN_DRONE_ID_LOCATION_DATA) , LANDING_TARGET (LANDING_TARGET_DATA) , BATTERY_STATUS (BATTERY_STATUS_DATA) , GOPRO_SET_RESPONSE (GOPRO_SET_RESPONSE_DATA) , EVENT (EVENT_DATA) , GIMBAL_MANAGER_SET_PITCHYAW (GIMBAL_MANAGER_SET_PITCHYAW_DATA) , SMART_BATTERY_INFO (SMART_BATTERY_INFO_DATA) , ATTITUDE_QUATERNION (ATTITUDE_QUATERNION_DATA) , SET_ATTITUDE_TARGET (SET_ATTITUDE_TARGET_DATA) , MANUAL_CONTROL (MANUAL_CONTROL_DATA) , RALLY_FETCH_POINT (RALLY_FETCH_POINT_DATA) , VISION_POSITION_ESTIMATE (VISION_POSITION_ESTIMATE_DATA) , RALLY_POINT (RALLY_POINT_DATA) , VIDEO_STREAM_INFORMATION (VIDEO_STREAM_INFORMATION_DATA) , OPEN_DRONE_ID_BASIC_ID (OPEN_DRONE_ID_BASIC_ID_DATA) , ENCAPSULATED_DATA (ENCAPSULATED_DATA_DATA) , DEVICE_OP_WRITE_REPLY (DEVICE_OP_WRITE_REPLY_DATA) , PING (PING_DATA) , SET_MAG_OFFSETS (SET_MAG_OFFSETS_DATA) , GPS_INPUT (GPS_INPUT_DATA) , LOG_ENTRY (LOG_ENTRY_DATA) , RAW_IMU (RAW_IMU_DATA) , GPS_RAW_INT (GPS_RAW_INT_DATA) , CONTROL_SYSTEM_STATE (CONTROL_SYSTEM_STATE_DATA) , DEBUG (DEBUG_DATA) , ESC_TELEMETRY_1_TO_4 (ESC_TELEMETRY_1_TO_4_DATA) , MOUNT_CONTROL (MOUNT_CONTROL_DATA) , COMPONENT_METADATA (COMPONENT_METADATA_DATA) , NAMED_VALUE_FLOAT (NAMED_VALUE_FLOAT_DATA) , GPS2_RTK (GPS2_RTK_DATA) , VIBRATION (VIBRATION_DATA) , MISSION_CURRENT (MISSION_CURRENT_DATA) , HERELINK_TELEM (HERELINK_TELEM_DATA) , PARAM_EXT_ACK (PARAM_EXT_ACK_DATA) , MISSION_REQUEST (MISSION_REQUEST_DATA) , MEMINFO (MEMINFO_DATA) , LED_CONTROL (LED_CONTROL_DATA) , MISSION_ITEM (MISSION_ITEM_DATA) , GPS_RTCM_DATA (GPS_RTCM_DATA_DATA) , OPTICAL_FLOW_RAD (OPTICAL_FLOW_RAD_DATA) , VISION_SPEED_ESTIMATE (VISION_SPEED_ESTIMATE_DATA) , TERRAIN_REPORT (TERRAIN_REPORT_DATA) , V2_EXTENSION (V2_EXTENSION_DATA) , CAN_FRAME (CAN_FRAME_DATA) , REQUEST_EVENT (REQUEST_EVENT_DATA) , OSD_PARAM_CONFIG (OSD_PARAM_CONFIG_DATA) , AUTOPILOT_STATE_FOR_GIMBAL_DEVICE (AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA) , ATTITUDE (ATTITUDE_DATA) , UAVCAN_NODE_INFO (UAVCAN_NODE_INFO_DATA) , HIL_OPTICAL_FLOW (HIL_OPTICAL_FLOW_DATA) , MEMORY_VECT (MEMORY_VECT_DATA) , SAFETY_SET_ALLOWED_AREA (SAFETY_SET_ALLOWED_AREA_DATA) , GIMBAL_MANAGER_STATUS (GIMBAL_MANAGER_STATUS_DATA) , GLOBAL_VISION_POSITION_ESTIMATE (GLOBAL_VISION_POSITION_ESTIMATE_DATA) , AUTH_KEY (AUTH_KEY_DATA) , COMMAND_ACK (COMMAND_ACK_DATA) , DIGICAM_CONTROL (DIGICAM_CONTROL_DATA) , FENCE_FETCH_POINT (FENCE_FETCH_POINT_DATA) , ESC_TELEMETRY_9_TO_12 (ESC_TELEMETRY_9_TO_12_DATA) , SERIAL_CONTROL (SERIAL_CONTROL_DATA) , MCU_STATUS (MCU_STATUS_DATA) , COMMAND_INT (COMMAND_INT_DATA) , RAW_RPM (RAW_RPM_DATA) , OPEN_DRONE_ID_OPERATOR_ID (OPEN_DRONE_ID_OPERATOR_ID_DATA) , DATA_STREAM (DATA_STREAM_DATA) , MISSION_COUNT (MISSION_COUNT_DATA) , SCALED_IMU3 (SCALED_IMU3_DATA) , DEBUG_FLOAT_ARRAY (DEBUG_FLOAT_ARRAY_DATA) , GIMBAL_MANAGER_INFORMATION (GIMBAL_MANAGER_INFORMATION_DATA) , HIGH_LATENCY2 (HIGH_LATENCY2_DATA) , PLAY_TUNE (PLAY_TUNE_DATA) , AOA_SSA (AOA_SSA_DATA) , LOCAL_POSITION_NED_COV (LOCAL_POSITION_NED_COV_DATA) , MISSION_ACK (MISSION_ACK_DATA) , LIMITS_STATUS (LIMITS_STATUS_DATA) , COMPONENT_INFORMATION (COMPONENT_INFORMATION_DATA) , GIMBAL_TORQUE_CMD_REPORT (GIMBAL_TORQUE_CMD_REPORT_DATA) , MOUNT_STATUS (MOUNT_STATUS_DATA) , SIM_STATE (SIM_STATE_DATA) , MISSION_SET_CURRENT (MISSION_SET_CURRENT_DATA) , PARAM_EXT_SET (PARAM_EXT_SET_DATA) , ISBD_LINK_STATUS (ISBD_LINK_STATUS_DATA) , RC_CHANNELS (RC_CHANNELS_DATA) , CUBEPILOT_FIRMWARE_UPDATE_RESP (CUBEPILOT_FIRMWARE_UPDATE_RESP_DATA) , SIMSTATE (SIMSTATE_DATA) , CAMERA_TRACKING_GEO_STATUS (CAMERA_TRACKING_GEO_STATUS_DATA) , ESC_STATUS (ESC_STATUS_DATA) , CUBEPILOT_RAW_RC (CUBEPILOT_RAW_RC_DATA) , HIGHRES_IMU (HIGHRES_IMU_DATA) , NAV_CONTROLLER_OUTPUT (NAV_CONTROLLER_OUTPUT_DATA) , OPEN_DRONE_ID_AUTHENTICATION (OPEN_DRONE_ID_AUTHENTICATION_DATA) , LOGGING_DATA_ACKED (LOGGING_DATA_ACKED_DATA) , ICAROUS_HEARTBEAT (ICAROUS_HEARTBEAT_DATA) , FENCE_POINT (FENCE_POINT_DATA) , OSD_PARAM_SHOW_CONFIG_REPLY (OSD_PARAM_SHOW_CONFIG_REPLY_DATA) , ATTITUDE_TARGET (ATTITUDE_TARGET_DATA) , LOG_REQUEST_DATA (LOG_REQUEST_DATA_DATA) , GIMBAL_REPORT (GIMBAL_REPORT_DATA) , PARAM_EXT_VALUE (PARAM_EXT_VALUE_DATA) , SERVO_OUTPUT_RAW (SERVO_OUTPUT_RAW_DATA) , ESC_INFO (ESC_INFO_DATA) , OPEN_DRONE_ID_SYSTEM (OPEN_DRONE_ID_SYSTEM_DATA) , UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT (UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA) , HIGH_LATENCY (HIGH_LATENCY_DATA) , PID_TUNING (PID_TUNING_DATA) , RANGEFINDER (RANGEFINDER_DATA) , GIMBAL_DEVICE_SET_ATTITUDE (GIMBAL_DEVICE_SET_ATTITUDE_DATA) , VISION_POSITION_DELTA (VISION_POSITION_DELTA_DATA) , CAMERA_FEEDBACK (CAMERA_FEEDBACK_DATA) , BUTTON_CHANGE (BUTTON_CHANGE_DATA) , DEEPSTALL (DEEPSTALL_DATA) , ONBOARD_COMPUTER_STATUS (ONBOARD_COMPUTER_STATUS_DATA) , GOPRO_GET_RESPONSE (GOPRO_GET_RESPONSE_DATA) , GIMBAL_DEVICE_ATTITUDE_STATUS (GIMBAL_DEVICE_ATTITUDE_STATUS_DATA) , PARAM_EXT_REQUEST_LIST (PARAM_EXT_REQUEST_LIST_DATA) , OSD_PARAM_CONFIG_REPLY (OSD_PARAM_CONFIG_REPLY_DATA) , HIL_STATE_QUATERNION (HIL_STATE_QUATERNION_DATA) , CAMERA_SETTINGS (CAMERA_SETTINGS_DATA) , CURRENT_EVENT_SEQUENCE (CURRENT_EVENT_SEQUENCE_DATA) , RESOURCE_REQUEST (RESOURCE_REQUEST_DATA) , LOG_DATA (LOG_DATA_DATA) , ATTITUDE_QUATERNION_COV (ATTITUDE_QUATERNION_COV_DATA) , TRAJECTORY_REPRESENTATION_BEZIER (TRAJECTORY_REPRESENTATION_BEZIER_DATA) , SAFETY_ALLOWED_AREA (SAFETY_ALLOWED_AREA_DATA) , STATUSTEXT (STATUSTEXT_DATA) , RADIO (RADIO_DATA) , CELLULAR_STATUS (CELLULAR_STATUS_DATA) , DEVICE_OP_READ (DEVICE_OP_READ_DATA) , WIFI_CONFIG_AP (WIFI_CONFIG_AP_DATA) , GENERATOR_STATUS (GENERATOR_STATUS_DATA) , NAMED_VALUE_INT (NAMED_VALUE_INT_DATA) , HIL_CONTROLS (HIL_CONTROLS_DATA) , AUTOPILOT_VERSION (AUTOPILOT_VERSION_DATA) , AP_ADC (AP_ADC_DATA) , HIL_STATE (HIL_STATE_DATA) , PARAM_MAP_RC (PARAM_MAP_RC_DATA) , MAG_CAL_PROGRESS (MAG_CAL_PROGRESS_DATA) , GIMBAL_CONTROL (GIMBAL_CONTROL_DATA) , DISTANCE_SENSOR (DISTANCE_SENSOR_DATA) , SYSTEM_TIME (SYSTEM_TIME_DATA) , COMMAND_LONG (COMMAND_LONG_DATA) , GPS_INJECT_DATA (GPS_INJECT_DATA_DATA) , OPTICAL_FLOW (OPTICAL_FLOW_DATA) , GOPRO_HEARTBEAT (GOPRO_HEARTBEAT_DATA) , MAG_CAL_REPORT (MAG_CAL_REPORT_DATA) , MESSAGE_INTERVAL (MESSAGE_INTERVAL_DATA) , WINCH_STATUS (WINCH_STATUS_DATA) , GPS_GLOBAL_ORIGIN (GPS_GLOBAL_ORIGIN_DATA) , MOUNT_ORIENTATION (MOUNT_ORIENTATION_DATA) , ODOMETRY (ODOMETRY_DATA) , SETUP_SIGNING (SETUP_SIGNING_DATA) , LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET (LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA) , MISSION_CLEAR_ALL (MISSION_CLEAR_ALL_DATA) , OPEN_DRONE_ID_MESSAGE_PACK (OPEN_DRONE_ID_MESSAGE_PACK_DATA) , DATA64 (DATA64_DATA) , REMOTE_LOG_BLOCK_STATUS (REMOTE_LOG_BLOCK_STATUS_DATA) , GOPRO_SET_REQUEST (GOPRO_SET_REQUEST_DATA) , SCALED_PRESSURE3 (SCALED_PRESSURE3_DATA) , REQUEST_DATA_STREAM (REQUEST_DATA_STREAM_DATA) , LOG_REQUEST_END (LOG_REQUEST_END_DATA) , STORAGE_INFORMATION (STORAGE_INFORMATION_DATA) , HIL_SENSOR (HIL_SENSOR_DATA) , AIS_VESSEL (AIS_VESSEL_DATA) , CUBEPILOT_FIRMWARE_UPDATE_START (CUBEPILOT_FIRMWARE_UPDATE_START_DATA) , BATTERY2 (BATTERY2_DATA) , GLOBAL_POSITION_INT (GLOBAL_POSITION_INT_DATA) , RC_CHANNELS_SCALED (RC_CHANNELS_SCALED_DATA) , COLLISION (COLLISION_DATA) , WATER_DEPTH (WATER_DEPTH_DATA) , ESC_TELEMETRY_5_TO_8 (ESC_TELEMETRY_5_TO_8_DATA) , HERELINK_VIDEO_STREAM_INFORMATION (HERELINK_VIDEO_STREAM_INFORMATION_DATA) , LOG_ERASE (LOG_ERASE_DATA) , SET_HOME_POSITION (SET_HOME_POSITION_DATA) , CAMERA_FOV_STATUS (CAMERA_FOV_STATUS_DATA) , SCALED_PRESSURE (SCALED_PRESSURE_DATA) , PARAM_REQUEST_READ (PARAM_REQUEST_READ_DATA) , HIL_RC_INPUTS_RAW (HIL_RC_INPUTS_RAW_DATA) , SET_MODE (SET_MODE_DATA) , GIMBAL_MANAGER_SET_ATTITUDE (GIMBAL_MANAGER_SET_ATTITUDE_DATA) , CAMERA_INFORMATION (CAMERA_INFORMATION_DATA) , GLOBAL_POSITION_INT_COV (GLOBAL_POSITION_INT_COV_DATA) , GPS_STATUS (GPS_STATUS_DATA) , RESPONSE_EVENT_ERROR (RESPONSE_EVENT_ERROR_DATA) , } impl Message for MavMessage { fn parse (version : MavlinkVersion , id : u32 , payload : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { match id { HEARTBEAT_DATA :: ID => HEARTBEAT_DATA :: deser (version , payload) . map (Self :: HEARTBEAT) , MISSION_ITEM_REACHED_DATA :: ID => MISSION_ITEM_REACHED_DATA :: deser (version , payload) . map (Self :: MISSION_ITEM_REACHED) , OSD_PARAM_SHOW_CONFIG_DATA :: ID => OSD_PARAM_SHOW_CONFIG_DATA :: deser (version , payload) . map (Self :: OSD_PARAM_SHOW_CONFIG) , TIMESYNC_DATA :: ID => TIMESYNC_DATA :: deser (version , payload) . map (Self :: TIMESYNC) , GOPRO_GET_REQUEST_DATA :: ID => GOPRO_GET_REQUEST_DATA :: deser (version , payload) . map (Self :: GOPRO_GET_REQUEST) , TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: ID => TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: deser (version , payload) . map (Self :: TRAJECTORY_REPRESENTATION_WAYPOINTS) , POSITION_TARGET_LOCAL_NED_DATA :: ID => POSITION_TARGET_LOCAL_NED_DATA :: deser (version , payload) . map (Self :: POSITION_TARGET_LOCAL_NED) , LOCAL_POSITION_NED_DATA :: ID => LOCAL_POSITION_NED_DATA :: deser (version , payload) . map (Self :: LOCAL_POSITION_NED) , TIME_ESTIMATE_TO_TARGET_DATA :: ID => TIME_ESTIMATE_TO_TARGET_DATA :: deser (version , payload) . map (Self :: TIME_ESTIMATE_TO_TARGET) , SUPPORTED_TUNES_DATA :: ID => SUPPORTED_TUNES_DATA :: deser (version , payload) . map (Self :: SUPPORTED_TUNES) , VFR_HUD_DATA :: ID => VFR_HUD_DATA :: deser (version , payload) . map (Self :: VFR_HUD) , POSITION_TARGET_GLOBAL_INT_DATA :: ID => POSITION_TARGET_GLOBAL_INT_DATA :: deser (version , payload) . map (Self :: POSITION_TARGET_GLOBAL_INT) , EFI_STATUS_DATA :: ID => EFI_STATUS_DATA :: deser (version , payload) . map (Self :: EFI_STATUS) , ALTITUDE_DATA :: ID => ALTITUDE_DATA :: deser (version , payload) . map (Self :: ALTITUDE) , RAW_PRESSURE_DATA :: ID => RAW_PRESSURE_DATA :: deser (version , payload) . map (Self :: RAW_PRESSURE) , OBSTACLE_DISTANCE_DATA :: ID => OBSTACLE_DISTANCE_DATA :: deser (version , payload) . map (Self :: OBSTACLE_DISTANCE) , LINK_NODE_STATUS_DATA :: ID => LINK_NODE_STATUS_DATA :: deser (version , payload) . map (Self :: LINK_NODE_STATUS) , AIRSPEED_AUTOCAL_DATA :: ID => AIRSPEED_AUTOCAL_DATA :: deser (version , payload) . map (Self :: AIRSPEED_AUTOCAL) , SET_GPS_GLOBAL_ORIGIN_DATA :: ID => SET_GPS_GLOBAL_ORIGIN_DATA :: deser (version , payload) . map (Self :: SET_GPS_GLOBAL_ORIGIN) , RADIO_STATUS_DATA :: ID => RADIO_STATUS_DATA :: deser (version , payload) . map (Self :: RADIO_STATUS) , LOGGING_DATA_DATA :: ID => LOGGING_DATA_DATA :: deser (version , payload) . map (Self :: LOGGING_DATA) , HOME_POSITION_DATA :: ID => HOME_POSITION_DATA :: deser (version , payload) . map (Self :: HOME_POSITION) , WHEEL_DISTANCE_DATA :: ID => WHEEL_DISTANCE_DATA :: deser (version , payload) . map (Self :: WHEEL_DISTANCE) , GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: ID => GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: deser (version , payload) . map (Self :: GIMBAL_MANAGER_SET_MANUAL_CONTROL) , FILE_TRANSFER_PROTOCOL_DATA :: ID => FILE_TRANSFER_PROTOCOL_DATA :: deser (version , payload) . map (Self :: FILE_TRANSFER_PROTOCOL) , MISSION_REQUEST_PARTIAL_LIST_DATA :: ID => MISSION_REQUEST_PARTIAL_LIST_DATA :: deser (version , payload) . map (Self :: MISSION_REQUEST_PARTIAL_LIST) , RC_CHANNELS_RAW_DATA :: ID => RC_CHANNELS_RAW_DATA :: deser (version , payload) . map (Self :: RC_CHANNELS_RAW) , ACTUATOR_CONTROL_TARGET_DATA :: ID => ACTUATOR_CONTROL_TARGET_DATA :: deser (version , payload) . map (Self :: ACTUATOR_CONTROL_TARGET) , FOLLOW_TARGET_DATA :: ID => FOLLOW_TARGET_DATA :: deser (version , payload) . map (Self :: FOLLOW_TARGET) , CANFD_FRAME_DATA :: ID => CANFD_FRAME_DATA :: deser (version , payload) . map (Self :: CANFD_FRAME) , VIDEO_STREAM_STATUS_DATA :: ID => VIDEO_STREAM_STATUS_DATA :: deser (version , payload) . map (Self :: VIDEO_STREAM_STATUS) , PARAM_SET_DATA :: ID => PARAM_SET_DATA :: deser (version , payload) . map (Self :: PARAM_SET) , SYS_STATUS_DATA :: ID => SYS_STATUS_DATA :: deser (version , payload) . map (Self :: SYS_STATUS) , ADSB_VEHICLE_DATA :: ID => ADSB_VEHICLE_DATA :: deser (version , payload) . map (Self :: ADSB_VEHICLE) , WIND_COV_DATA :: ID => WIND_COV_DATA :: deser (version , payload) . map (Self :: WIND_COV) , ESTIMATOR_STATUS_DATA :: ID => ESTIMATOR_STATUS_DATA :: deser (version , payload) . map (Self :: ESTIMATOR_STATUS) , OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: ID => OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_SYSTEM_UPDATE) , UAVIONIX_ADSB_OUT_CFG_DATA :: ID => UAVIONIX_ADSB_OUT_CFG_DATA :: deser (version , payload) . map (Self :: UAVIONIX_ADSB_OUT_CFG) , FENCE_STATUS_DATA :: ID => FENCE_STATUS_DATA :: deser (version , payload) . map (Self :: FENCE_STATUS) , AUTOPILOT_VERSION_REQUEST_DATA :: ID => AUTOPILOT_VERSION_REQUEST_DATA :: deser (version , payload) . map (Self :: AUTOPILOT_VERSION_REQUEST) , DATA16_DATA :: ID => DATA16_DATA :: deser (version , payload) . map (Self :: DATA16) , MANUAL_SETPOINT_DATA :: ID => MANUAL_SETPOINT_DATA :: deser (version , payload) . map (Self :: MANUAL_SETPOINT) , POWER_STATUS_DATA :: ID => POWER_STATUS_DATA :: deser (version , payload) . map (Self :: POWER_STATUS) , SET_ACTUATOR_CONTROL_TARGET_DATA :: ID => SET_ACTUATOR_CONTROL_TARGET_DATA :: deser (version , payload) . map (Self :: SET_ACTUATOR_CONTROL_TARGET) , HWSTATUS_DATA :: ID => HWSTATUS_DATA :: deser (version , payload) . map (Self :: HWSTATUS) , SET_POSITION_TARGET_LOCAL_NED_DATA :: ID => SET_POSITION_TARGET_LOCAL_NED_DATA :: deser (version , payload) . map (Self :: SET_POSITION_TARGET_LOCAL_NED) , CAMERA_IMAGE_CAPTURED_DATA :: ID => CAMERA_IMAGE_CAPTURED_DATA :: deser (version , payload) . map (Self :: CAMERA_IMAGE_CAPTURED) , CAMERA_STATUS_DATA :: ID => CAMERA_STATUS_DATA :: deser (version , payload) . map (Self :: CAMERA_STATUS) , SCALED_IMU2_DATA :: ID => SCALED_IMU2_DATA :: deser (version , payload) . map (Self :: SCALED_IMU2) , PARAM_VALUE_DATA :: ID => PARAM_VALUE_DATA :: deser (version , payload) . map (Self :: PARAM_VALUE) , TERRAIN_REQUEST_DATA :: ID => TERRAIN_REQUEST_DATA :: deser (version , payload) . map (Self :: TERRAIN_REQUEST) , WIND_DATA :: ID => WIND_DATA :: deser (version , payload) . map (Self :: WIND) , DATA_TRANSMISSION_HANDSHAKE_DATA :: ID => DATA_TRANSMISSION_HANDSHAKE_DATA :: deser (version , payload) . map (Self :: DATA_TRANSMISSION_HANDSHAKE) , TUNNEL_DATA :: ID => TUNNEL_DATA :: deser (version , payload) . map (Self :: TUNNEL) , HIL_ACTUATOR_CONTROLS_DATA :: ID => HIL_ACTUATOR_CONTROLS_DATA :: deser (version , payload) . map (Self :: HIL_ACTUATOR_CONTROLS) , UAVCAN_NODE_STATUS_DATA :: ID => UAVCAN_NODE_STATUS_DATA :: deser (version , payload) . map (Self :: UAVCAN_NODE_STATUS) , GPS_RTK_DATA :: ID => GPS_RTK_DATA :: deser (version , payload) . map (Self :: GPS_RTK) , HYGROMETER_SENSOR_DATA :: ID => HYGROMETER_SENSOR_DATA :: deser (version , payload) . map (Self :: HYGROMETER_SENSOR) , COMPASSMOT_STATUS_DATA :: ID => COMPASSMOT_STATUS_DATA :: deser (version , payload) . map (Self :: COMPASSMOT_STATUS) , EXTENDED_SYS_STATE_DATA :: ID => EXTENDED_SYS_STATE_DATA :: deser (version , payload) . map (Self :: EXTENDED_SYS_STATE) , GIMBAL_DEVICE_INFORMATION_DATA :: ID => GIMBAL_DEVICE_INFORMATION_DATA :: deser (version , payload) . map (Self :: GIMBAL_DEVICE_INFORMATION) , PLAY_TUNE_V2_DATA :: ID => PLAY_TUNE_V2_DATA :: deser (version , payload) . map (Self :: PLAY_TUNE_V2) , OPEN_DRONE_ID_ARM_STATUS_DATA :: ID => OPEN_DRONE_ID_ARM_STATUS_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_ARM_STATUS) , SCALED_PRESSURE2_DATA :: ID => SCALED_PRESSURE2_DATA :: deser (version , payload) . map (Self :: SCALED_PRESSURE2) , DATA96_DATA :: ID => DATA96_DATA :: deser (version , payload) . map (Self :: DATA96) , FLIGHT_INFORMATION_DATA :: ID => FLIGHT_INFORMATION_DATA :: deser (version , payload) . map (Self :: FLIGHT_INFORMATION) , REMOTE_LOG_DATA_BLOCK_DATA :: ID => REMOTE_LOG_DATA_BLOCK_DATA :: deser (version , payload) . map (Self :: REMOTE_LOG_DATA_BLOCK) , ACTUATOR_OUTPUT_STATUS_DATA :: ID => ACTUATOR_OUTPUT_STATUS_DATA :: deser (version , payload) . map (Self :: ACTUATOR_OUTPUT_STATUS) , AHRS_DATA :: ID => AHRS_DATA :: deser (version , payload) . map (Self :: AHRS) , DEBUG_VECT_DATA :: ID => DEBUG_VECT_DATA :: deser (version , payload) . map (Self :: DEBUG_VECT) , UTM_GLOBAL_POSITION_DATA :: ID => UTM_GLOBAL_POSITION_DATA :: deser (version , payload) . map (Self :: UTM_GLOBAL_POSITION) , MISSION_ITEM_INT_DATA :: ID => MISSION_ITEM_INT_DATA :: deser (version , payload) . map (Self :: MISSION_ITEM_INT) , CAN_FILTER_MODIFY_DATA :: ID => CAN_FILTER_MODIFY_DATA :: deser (version , payload) . map (Self :: CAN_FILTER_MODIFY) , DEVICE_OP_READ_REPLY_DATA :: ID => DEVICE_OP_READ_REPLY_DATA :: deser (version , payload) . map (Self :: DEVICE_OP_READ_REPLY) , ADAP_TUNING_DATA :: ID => ADAP_TUNING_DATA :: deser (version , payload) . map (Self :: ADAP_TUNING) , SET_POSITION_TARGET_GLOBAL_INT_DATA :: ID => SET_POSITION_TARGET_GLOBAL_INT_DATA :: deser (version , payload) . map (Self :: SET_POSITION_TARGET_GLOBAL_INT) , PROTOCOL_VERSION_DATA :: ID => PROTOCOL_VERSION_DATA :: deser (version , payload) . map (Self :: PROTOCOL_VERSION) , HIL_GPS_DATA :: ID => HIL_GPS_DATA :: deser (version , payload) . map (Self :: HIL_GPS) , SCALED_IMU_DATA :: ID => SCALED_IMU_DATA :: deser (version , payload) . map (Self :: SCALED_IMU) , UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: ID => UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: deser (version , payload) . map (Self :: UAVIONIX_ADSB_OUT_DYNAMIC) , COMMAND_CANCEL_DATA :: ID => COMMAND_CANCEL_DATA :: deser (version , payload) . map (Self :: COMMAND_CANCEL) , MOUNT_CONFIGURE_DATA :: ID => MOUNT_CONFIGURE_DATA :: deser (version , payload) . map (Self :: MOUNT_CONFIGURE) , LOGGING_ACK_DATA :: ID => LOGGING_ACK_DATA :: deser (version , payload) . map (Self :: LOGGING_ACK) , ATT_POS_MOCAP_DATA :: ID => ATT_POS_MOCAP_DATA :: deser (version , payload) . map (Self :: ATT_POS_MOCAP) , PARAM_EXT_REQUEST_READ_DATA :: ID => PARAM_EXT_REQUEST_READ_DATA :: deser (version , payload) . map (Self :: PARAM_EXT_REQUEST_READ) , CAMERA_TRACKING_IMAGE_STATUS_DATA :: ID => CAMERA_TRACKING_IMAGE_STATUS_DATA :: deser (version , payload) . map (Self :: CAMERA_TRACKING_IMAGE_STATUS) , EKF_STATUS_REPORT_DATA :: ID => EKF_STATUS_REPORT_DATA :: deser (version , payload) . map (Self :: EKF_STATUS_REPORT) , OBSTACLE_DISTANCE_3D_DATA :: ID => OBSTACLE_DISTANCE_3D_DATA :: deser (version , payload) . map (Self :: OBSTACLE_DISTANCE_3D) , TERRAIN_DATA_DATA :: ID => TERRAIN_DATA_DATA :: deser (version , payload) . map (Self :: TERRAIN_DATA) , PARAM_REQUEST_LIST_DATA :: ID => PARAM_REQUEST_LIST_DATA :: deser (version , payload) . map (Self :: PARAM_REQUEST_LIST) , RPM_DATA :: ID => RPM_DATA :: deser (version , payload) . map (Self :: RPM) , MISSION_REQUEST_INT_DATA :: ID => MISSION_REQUEST_INT_DATA :: deser (version , payload) . map (Self :: MISSION_REQUEST_INT) , CELLULAR_CONFIG_DATA :: ID => CELLULAR_CONFIG_DATA :: deser (version , payload) . map (Self :: CELLULAR_CONFIG) , SENSOR_OFFSETS_DATA :: ID => SENSOR_OFFSETS_DATA :: deser (version , payload) . map (Self :: SENSOR_OFFSETS) , AHRS3_DATA :: ID => AHRS3_DATA :: deser (version , payload) . map (Self :: AHRS3) , LOG_REQUEST_LIST_DATA :: ID => LOG_REQUEST_LIST_DATA :: deser (version , payload) . map (Self :: LOG_REQUEST_LIST) , DIGICAM_CONFIGURE_DATA :: ID => DIGICAM_CONFIGURE_DATA :: deser (version , payload) . map (Self :: DIGICAM_CONFIGURE) , GPS2_RAW_DATA :: ID => GPS2_RAW_DATA :: deser (version , payload) . map (Self :: GPS2_RAW) , OPEN_DRONE_ID_SELF_ID_DATA :: ID => OPEN_DRONE_ID_SELF_ID_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_SELF_ID) , AHRS2_DATA :: ID => AHRS2_DATA :: deser (version , payload) . map (Self :: AHRS2) , VICON_POSITION_ESTIMATE_DATA :: ID => VICON_POSITION_ESTIMATE_DATA :: deser (version , payload) . map (Self :: VICON_POSITION_ESTIMATE) , CHANGE_OPERATOR_CONTROL_DATA :: ID => CHANGE_OPERATOR_CONTROL_DATA :: deser (version , payload) . map (Self :: CHANGE_OPERATOR_CONTROL) , RC_CHANNELS_OVERRIDE_DATA :: ID => RC_CHANNELS_OVERRIDE_DATA :: deser (version , payload) . map (Self :: RC_CHANNELS_OVERRIDE) , MISSION_WRITE_PARTIAL_LIST_DATA :: ID => MISSION_WRITE_PARTIAL_LIST_DATA :: deser (version , payload) . map (Self :: MISSION_WRITE_PARTIAL_LIST) , CAMERA_TRIGGER_DATA :: ID => CAMERA_TRIGGER_DATA :: deser (version , payload) . map (Self :: CAMERA_TRIGGER) , MISSION_REQUEST_LIST_DATA :: ID => MISSION_REQUEST_LIST_DATA :: deser (version , payload) . map (Self :: MISSION_REQUEST_LIST) , DATA32_DATA :: ID => DATA32_DATA :: deser (version , payload) . map (Self :: DATA32) , CAMERA_CAPTURE_STATUS_DATA :: ID => CAMERA_CAPTURE_STATUS_DATA :: deser (version , payload) . map (Self :: CAMERA_CAPTURE_STATUS) , TERRAIN_CHECK_DATA :: ID => TERRAIN_CHECK_DATA :: deser (version , payload) . map (Self :: TERRAIN_CHECK) , ICAROUS_KINEMATIC_BANDS_DATA :: ID => ICAROUS_KINEMATIC_BANDS_DATA :: deser (version , payload) . map (Self :: ICAROUS_KINEMATIC_BANDS) , CHANGE_OPERATOR_CONTROL_ACK_DATA :: ID => CHANGE_OPERATOR_CONTROL_ACK_DATA :: deser (version , payload) . map (Self :: CHANGE_OPERATOR_CONTROL_ACK) , ORBIT_EXECUTION_STATUS_DATA :: ID => ORBIT_EXECUTION_STATUS_DATA :: deser (version , payload) . map (Self :: ORBIT_EXECUTION_STATUS) , DEVICE_OP_WRITE_DATA :: ID => DEVICE_OP_WRITE_DATA :: deser (version , payload) . map (Self :: DEVICE_OP_WRITE) , OPEN_DRONE_ID_LOCATION_DATA :: ID => OPEN_DRONE_ID_LOCATION_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_LOCATION) , LANDING_TARGET_DATA :: ID => LANDING_TARGET_DATA :: deser (version , payload) . map (Self :: LANDING_TARGET) , BATTERY_STATUS_DATA :: ID => BATTERY_STATUS_DATA :: deser (version , payload) . map (Self :: BATTERY_STATUS) , GOPRO_SET_RESPONSE_DATA :: ID => GOPRO_SET_RESPONSE_DATA :: deser (version , payload) . map (Self :: GOPRO_SET_RESPONSE) , EVENT_DATA :: ID => EVENT_DATA :: deser (version , payload) . map (Self :: EVENT) , GIMBAL_MANAGER_SET_PITCHYAW_DATA :: ID => GIMBAL_MANAGER_SET_PITCHYAW_DATA :: deser (version , payload) . map (Self :: GIMBAL_MANAGER_SET_PITCHYAW) , SMART_BATTERY_INFO_DATA :: ID => SMART_BATTERY_INFO_DATA :: deser (version , payload) . map (Self :: SMART_BATTERY_INFO) , ATTITUDE_QUATERNION_DATA :: ID => ATTITUDE_QUATERNION_DATA :: deser (version , payload) . map (Self :: ATTITUDE_QUATERNION) , SET_ATTITUDE_TARGET_DATA :: ID => SET_ATTITUDE_TARGET_DATA :: deser (version , payload) . map (Self :: SET_ATTITUDE_TARGET) , MANUAL_CONTROL_DATA :: ID => MANUAL_CONTROL_DATA :: deser (version , payload) . map (Self :: MANUAL_CONTROL) , RALLY_FETCH_POINT_DATA :: ID => RALLY_FETCH_POINT_DATA :: deser (version , payload) . map (Self :: RALLY_FETCH_POINT) , VISION_POSITION_ESTIMATE_DATA :: ID => VISION_POSITION_ESTIMATE_DATA :: deser (version , payload) . map (Self :: VISION_POSITION_ESTIMATE) , RALLY_POINT_DATA :: ID => RALLY_POINT_DATA :: deser (version , payload) . map (Self :: RALLY_POINT) , VIDEO_STREAM_INFORMATION_DATA :: ID => VIDEO_STREAM_INFORMATION_DATA :: deser (version , payload) . map (Self :: VIDEO_STREAM_INFORMATION) , OPEN_DRONE_ID_BASIC_ID_DATA :: ID => OPEN_DRONE_ID_BASIC_ID_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_BASIC_ID) , ENCAPSULATED_DATA_DATA :: ID => ENCAPSULATED_DATA_DATA :: deser (version , payload) . map (Self :: ENCAPSULATED_DATA) , DEVICE_OP_WRITE_REPLY_DATA :: ID => DEVICE_OP_WRITE_REPLY_DATA :: deser (version , payload) . map (Self :: DEVICE_OP_WRITE_REPLY) , PING_DATA :: ID => PING_DATA :: deser (version , payload) . map (Self :: PING) , SET_MAG_OFFSETS_DATA :: ID => SET_MAG_OFFSETS_DATA :: deser (version , payload) . map (Self :: SET_MAG_OFFSETS) , GPS_INPUT_DATA :: ID => GPS_INPUT_DATA :: deser (version , payload) . map (Self :: GPS_INPUT) , LOG_ENTRY_DATA :: ID => LOG_ENTRY_DATA :: deser (version , payload) . map (Self :: LOG_ENTRY) , RAW_IMU_DATA :: ID => RAW_IMU_DATA :: deser (version , payload) . map (Self :: RAW_IMU) , GPS_RAW_INT_DATA :: ID => GPS_RAW_INT_DATA :: deser (version , payload) . map (Self :: GPS_RAW_INT) , CONTROL_SYSTEM_STATE_DATA :: ID => CONTROL_SYSTEM_STATE_DATA :: deser (version , payload) . map (Self :: CONTROL_SYSTEM_STATE) , DEBUG_DATA :: ID => DEBUG_DATA :: deser (version , payload) . map (Self :: DEBUG) , ESC_TELEMETRY_1_TO_4_DATA :: ID => ESC_TELEMETRY_1_TO_4_DATA :: deser (version , payload) . map (Self :: ESC_TELEMETRY_1_TO_4) , MOUNT_CONTROL_DATA :: ID => MOUNT_CONTROL_DATA :: deser (version , payload) . map (Self :: MOUNT_CONTROL) , COMPONENT_METADATA_DATA :: ID => COMPONENT_METADATA_DATA :: deser (version , payload) . map (Self :: COMPONENT_METADATA) , NAMED_VALUE_FLOAT_DATA :: ID => NAMED_VALUE_FLOAT_DATA :: deser (version , payload) . map (Self :: NAMED_VALUE_FLOAT) , GPS2_RTK_DATA :: ID => GPS2_RTK_DATA :: deser (version , payload) . map (Self :: GPS2_RTK) , VIBRATION_DATA :: ID => VIBRATION_DATA :: deser (version , payload) . map (Self :: VIBRATION) , MISSION_CURRENT_DATA :: ID => MISSION_CURRENT_DATA :: deser (version , payload) . map (Self :: MISSION_CURRENT) , HERELINK_TELEM_DATA :: ID => HERELINK_TELEM_DATA :: deser (version , payload) . map (Self :: HERELINK_TELEM) , PARAM_EXT_ACK_DATA :: ID => PARAM_EXT_ACK_DATA :: deser (version , payload) . map (Self :: PARAM_EXT_ACK) , MISSION_REQUEST_DATA :: ID => MISSION_REQUEST_DATA :: deser (version , payload) . map (Self :: MISSION_REQUEST) , MEMINFO_DATA :: ID => MEMINFO_DATA :: deser (version , payload) . map (Self :: MEMINFO) , LED_CONTROL_DATA :: ID => LED_CONTROL_DATA :: deser (version , payload) . map (Self :: LED_CONTROL) , MISSION_ITEM_DATA :: ID => MISSION_ITEM_DATA :: deser (version , payload) . map (Self :: MISSION_ITEM) , GPS_RTCM_DATA_DATA :: ID => GPS_RTCM_DATA_DATA :: deser (version , payload) . map (Self :: GPS_RTCM_DATA) , OPTICAL_FLOW_RAD_DATA :: ID => OPTICAL_FLOW_RAD_DATA :: deser (version , payload) . map (Self :: OPTICAL_FLOW_RAD) , VISION_SPEED_ESTIMATE_DATA :: ID => VISION_SPEED_ESTIMATE_DATA :: deser (version , payload) . map (Self :: VISION_SPEED_ESTIMATE) , TERRAIN_REPORT_DATA :: ID => TERRAIN_REPORT_DATA :: deser (version , payload) . map (Self :: TERRAIN_REPORT) , V2_EXTENSION_DATA :: ID => V2_EXTENSION_DATA :: deser (version , payload) . map (Self :: V2_EXTENSION) , CAN_FRAME_DATA :: ID => CAN_FRAME_DATA :: deser (version , payload) . map (Self :: CAN_FRAME) , REQUEST_EVENT_DATA :: ID => REQUEST_EVENT_DATA :: deser (version , payload) . map (Self :: REQUEST_EVENT) , OSD_PARAM_CONFIG_DATA :: ID => OSD_PARAM_CONFIG_DATA :: deser (version , payload) . map (Self :: OSD_PARAM_CONFIG) , AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: ID => AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: deser (version , payload) . map (Self :: AUTOPILOT_STATE_FOR_GIMBAL_DEVICE) , ATTITUDE_DATA :: ID => ATTITUDE_DATA :: deser (version , payload) . map (Self :: ATTITUDE) , UAVCAN_NODE_INFO_DATA :: ID => UAVCAN_NODE_INFO_DATA :: deser (version , payload) . map (Self :: UAVCAN_NODE_INFO) , HIL_OPTICAL_FLOW_DATA :: ID => HIL_OPTICAL_FLOW_DATA :: deser (version , payload) . map (Self :: HIL_OPTICAL_FLOW) , MEMORY_VECT_DATA :: ID => MEMORY_VECT_DATA :: deser (version , payload) . map (Self :: MEMORY_VECT) , SAFETY_SET_ALLOWED_AREA_DATA :: ID => SAFETY_SET_ALLOWED_AREA_DATA :: deser (version , payload) . map (Self :: SAFETY_SET_ALLOWED_AREA) , GIMBAL_MANAGER_STATUS_DATA :: ID => GIMBAL_MANAGER_STATUS_DATA :: deser (version , payload) . map (Self :: GIMBAL_MANAGER_STATUS) , GLOBAL_VISION_POSITION_ESTIMATE_DATA :: ID => GLOBAL_VISION_POSITION_ESTIMATE_DATA :: deser (version , payload) . map (Self :: GLOBAL_VISION_POSITION_ESTIMATE) , AUTH_KEY_DATA :: ID => AUTH_KEY_DATA :: deser (version , payload) . map (Self :: AUTH_KEY) , COMMAND_ACK_DATA :: ID => COMMAND_ACK_DATA :: deser (version , payload) . map (Self :: COMMAND_ACK) , DIGICAM_CONTROL_DATA :: ID => DIGICAM_CONTROL_DATA :: deser (version , payload) . map (Self :: DIGICAM_CONTROL) , FENCE_FETCH_POINT_DATA :: ID => FENCE_FETCH_POINT_DATA :: deser (version , payload) . map (Self :: FENCE_FETCH_POINT) , ESC_TELEMETRY_9_TO_12_DATA :: ID => ESC_TELEMETRY_9_TO_12_DATA :: deser (version , payload) . map (Self :: ESC_TELEMETRY_9_TO_12) , SERIAL_CONTROL_DATA :: ID => SERIAL_CONTROL_DATA :: deser (version , payload) . map (Self :: SERIAL_CONTROL) , MCU_STATUS_DATA :: ID => MCU_STATUS_DATA :: deser (version , payload) . map (Self :: MCU_STATUS) , COMMAND_INT_DATA :: ID => COMMAND_INT_DATA :: deser (version , payload) . map (Self :: COMMAND_INT) , RAW_RPM_DATA :: ID => RAW_RPM_DATA :: deser (version , payload) . map (Self :: RAW_RPM) , OPEN_DRONE_ID_OPERATOR_ID_DATA :: ID => OPEN_DRONE_ID_OPERATOR_ID_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_OPERATOR_ID) , DATA_STREAM_DATA :: ID => DATA_STREAM_DATA :: deser (version , payload) . map (Self :: DATA_STREAM) , MISSION_COUNT_DATA :: ID => MISSION_COUNT_DATA :: deser (version , payload) . map (Self :: MISSION_COUNT) , SCALED_IMU3_DATA :: ID => SCALED_IMU3_DATA :: deser (version , payload) . map (Self :: SCALED_IMU3) , DEBUG_FLOAT_ARRAY_DATA :: ID => DEBUG_FLOAT_ARRAY_DATA :: deser (version , payload) . map (Self :: DEBUG_FLOAT_ARRAY) , GIMBAL_MANAGER_INFORMATION_DATA :: ID => GIMBAL_MANAGER_INFORMATION_DATA :: deser (version , payload) . map (Self :: GIMBAL_MANAGER_INFORMATION) , HIGH_LATENCY2_DATA :: ID => HIGH_LATENCY2_DATA :: deser (version , payload) . map (Self :: HIGH_LATENCY2) , PLAY_TUNE_DATA :: ID => PLAY_TUNE_DATA :: deser (version , payload) . map (Self :: PLAY_TUNE) , AOA_SSA_DATA :: ID => AOA_SSA_DATA :: deser (version , payload) . map (Self :: AOA_SSA) , LOCAL_POSITION_NED_COV_DATA :: ID => LOCAL_POSITION_NED_COV_DATA :: deser (version , payload) . map (Self :: LOCAL_POSITION_NED_COV) , MISSION_ACK_DATA :: ID => MISSION_ACK_DATA :: deser (version , payload) . map (Self :: MISSION_ACK) , LIMITS_STATUS_DATA :: ID => LIMITS_STATUS_DATA :: deser (version , payload) . map (Self :: LIMITS_STATUS) , COMPONENT_INFORMATION_DATA :: ID => COMPONENT_INFORMATION_DATA :: deser (version , payload) . map (Self :: COMPONENT_INFORMATION) , GIMBAL_TORQUE_CMD_REPORT_DATA :: ID => GIMBAL_TORQUE_CMD_REPORT_DATA :: deser (version , payload) . map (Self :: GIMBAL_TORQUE_CMD_REPORT) , MOUNT_STATUS_DATA :: ID => MOUNT_STATUS_DATA :: deser (version , payload) . map (Self :: MOUNT_STATUS) , SIM_STATE_DATA :: ID => SIM_STATE_DATA :: deser (version , payload) . map (Self :: SIM_STATE) , MISSION_SET_CURRENT_DATA :: ID => MISSION_SET_CURRENT_DATA :: deser (version , payload) . map (Self :: MISSION_SET_CURRENT) , PARAM_EXT_SET_DATA :: ID => PARAM_EXT_SET_DATA :: deser (version , payload) . map (Self :: PARAM_EXT_SET) , ISBD_LINK_STATUS_DATA :: ID => ISBD_LINK_STATUS_DATA :: deser (version , payload) . map (Self :: ISBD_LINK_STATUS) , RC_CHANNELS_DATA :: ID => RC_CHANNELS_DATA :: deser (version , payload) . map (Self :: RC_CHANNELS) , CUBEPILOT_FIRMWARE_UPDATE_RESP_DATA :: ID => CUBEPILOT_FIRMWARE_UPDATE_RESP_DATA :: deser (version , payload) . map (Self :: CUBEPILOT_FIRMWARE_UPDATE_RESP) , SIMSTATE_DATA :: ID => SIMSTATE_DATA :: deser (version , payload) . map (Self :: SIMSTATE) , CAMERA_TRACKING_GEO_STATUS_DATA :: ID => CAMERA_TRACKING_GEO_STATUS_DATA :: deser (version , payload) . map (Self :: CAMERA_TRACKING_GEO_STATUS) , ESC_STATUS_DATA :: ID => ESC_STATUS_DATA :: deser (version , payload) . map (Self :: ESC_STATUS) , CUBEPILOT_RAW_RC_DATA :: ID => CUBEPILOT_RAW_RC_DATA :: deser (version , payload) . map (Self :: CUBEPILOT_RAW_RC) , HIGHRES_IMU_DATA :: ID => HIGHRES_IMU_DATA :: deser (version , payload) . map (Self :: HIGHRES_IMU) , NAV_CONTROLLER_OUTPUT_DATA :: ID => NAV_CONTROLLER_OUTPUT_DATA :: deser (version , payload) . map (Self :: NAV_CONTROLLER_OUTPUT) , OPEN_DRONE_ID_AUTHENTICATION_DATA :: ID => OPEN_DRONE_ID_AUTHENTICATION_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_AUTHENTICATION) , LOGGING_DATA_ACKED_DATA :: ID => LOGGING_DATA_ACKED_DATA :: deser (version , payload) . map (Self :: LOGGING_DATA_ACKED) , ICAROUS_HEARTBEAT_DATA :: ID => ICAROUS_HEARTBEAT_DATA :: deser (version , payload) . map (Self :: ICAROUS_HEARTBEAT) , FENCE_POINT_DATA :: ID => FENCE_POINT_DATA :: deser (version , payload) . map (Self :: FENCE_POINT) , OSD_PARAM_SHOW_CONFIG_REPLY_DATA :: ID => OSD_PARAM_SHOW_CONFIG_REPLY_DATA :: deser (version , payload) . map (Self :: OSD_PARAM_SHOW_CONFIG_REPLY) , ATTITUDE_TARGET_DATA :: ID => ATTITUDE_TARGET_DATA :: deser (version , payload) . map (Self :: ATTITUDE_TARGET) , LOG_REQUEST_DATA_DATA :: ID => LOG_REQUEST_DATA_DATA :: deser (version , payload) . map (Self :: LOG_REQUEST_DATA) , GIMBAL_REPORT_DATA :: ID => GIMBAL_REPORT_DATA :: deser (version , payload) . map (Self :: GIMBAL_REPORT) , PARAM_EXT_VALUE_DATA :: ID => PARAM_EXT_VALUE_DATA :: deser (version , payload) . map (Self :: PARAM_EXT_VALUE) , SERVO_OUTPUT_RAW_DATA :: ID => SERVO_OUTPUT_RAW_DATA :: deser (version , payload) . map (Self :: SERVO_OUTPUT_RAW) , ESC_INFO_DATA :: ID => ESC_INFO_DATA :: deser (version , payload) . map (Self :: ESC_INFO) , OPEN_DRONE_ID_SYSTEM_DATA :: ID => OPEN_DRONE_ID_SYSTEM_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_SYSTEM) , UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: ID => UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: deser (version , payload) . map (Self :: UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT) , HIGH_LATENCY_DATA :: ID => HIGH_LATENCY_DATA :: deser (version , payload) . map (Self :: HIGH_LATENCY) , PID_TUNING_DATA :: ID => PID_TUNING_DATA :: deser (version , payload) . map (Self :: PID_TUNING) , RANGEFINDER_DATA :: ID => RANGEFINDER_DATA :: deser (version , payload) . map (Self :: RANGEFINDER) , GIMBAL_DEVICE_SET_ATTITUDE_DATA :: ID => GIMBAL_DEVICE_SET_ATTITUDE_DATA :: deser (version , payload) . map (Self :: GIMBAL_DEVICE_SET_ATTITUDE) , VISION_POSITION_DELTA_DATA :: ID => VISION_POSITION_DELTA_DATA :: deser (version , payload) . map (Self :: VISION_POSITION_DELTA) , CAMERA_FEEDBACK_DATA :: ID => CAMERA_FEEDBACK_DATA :: deser (version , payload) . map (Self :: CAMERA_FEEDBACK) , BUTTON_CHANGE_DATA :: ID => BUTTON_CHANGE_DATA :: deser (version , payload) . map (Self :: BUTTON_CHANGE) , DEEPSTALL_DATA :: ID => DEEPSTALL_DATA :: deser (version , payload) . map (Self :: DEEPSTALL) , ONBOARD_COMPUTER_STATUS_DATA :: ID => ONBOARD_COMPUTER_STATUS_DATA :: deser (version , payload) . map (Self :: ONBOARD_COMPUTER_STATUS) , GOPRO_GET_RESPONSE_DATA :: ID => GOPRO_GET_RESPONSE_DATA :: deser (version , payload) . map (Self :: GOPRO_GET_RESPONSE) , GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: ID => GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: deser (version , payload) . map (Self :: GIMBAL_DEVICE_ATTITUDE_STATUS) , PARAM_EXT_REQUEST_LIST_DATA :: ID => PARAM_EXT_REQUEST_LIST_DATA :: deser (version , payload) . map (Self :: PARAM_EXT_REQUEST_LIST) , OSD_PARAM_CONFIG_REPLY_DATA :: ID => OSD_PARAM_CONFIG_REPLY_DATA :: deser (version , payload) . map (Self :: OSD_PARAM_CONFIG_REPLY) , HIL_STATE_QUATERNION_DATA :: ID => HIL_STATE_QUATERNION_DATA :: deser (version , payload) . map (Self :: HIL_STATE_QUATERNION) , CAMERA_SETTINGS_DATA :: ID => CAMERA_SETTINGS_DATA :: deser (version , payload) . map (Self :: CAMERA_SETTINGS) , CURRENT_EVENT_SEQUENCE_DATA :: ID => CURRENT_EVENT_SEQUENCE_DATA :: deser (version , payload) . map (Self :: CURRENT_EVENT_SEQUENCE) , RESOURCE_REQUEST_DATA :: ID => RESOURCE_REQUEST_DATA :: deser (version , payload) . map (Self :: RESOURCE_REQUEST) , LOG_DATA_DATA :: ID => LOG_DATA_DATA :: deser (version , payload) . map (Self :: LOG_DATA) , ATTITUDE_QUATERNION_COV_DATA :: ID => ATTITUDE_QUATERNION_COV_DATA :: deser (version , payload) . map (Self :: ATTITUDE_QUATERNION_COV) , TRAJECTORY_REPRESENTATION_BEZIER_DATA :: ID => TRAJECTORY_REPRESENTATION_BEZIER_DATA :: deser (version , payload) . map (Self :: TRAJECTORY_REPRESENTATION_BEZIER) , SAFETY_ALLOWED_AREA_DATA :: ID => SAFETY_ALLOWED_AREA_DATA :: deser (version , payload) . map (Self :: SAFETY_ALLOWED_AREA) , STATUSTEXT_DATA :: ID => STATUSTEXT_DATA :: deser (version , payload) . map (Self :: STATUSTEXT) , RADIO_DATA :: ID => RADIO_DATA :: deser (version , payload) . map (Self :: RADIO) , CELLULAR_STATUS_DATA :: ID => CELLULAR_STATUS_DATA :: deser (version , payload) . map (Self :: CELLULAR_STATUS) , DEVICE_OP_READ_DATA :: ID => DEVICE_OP_READ_DATA :: deser (version , payload) . map (Self :: DEVICE_OP_READ) , WIFI_CONFIG_AP_DATA :: ID => WIFI_CONFIG_AP_DATA :: deser (version , payload) . map (Self :: WIFI_CONFIG_AP) , GENERATOR_STATUS_DATA :: ID => GENERATOR_STATUS_DATA :: deser (version , payload) . map (Self :: GENERATOR_STATUS) , NAMED_VALUE_INT_DATA :: ID => NAMED_VALUE_INT_DATA :: deser (version , payload) . map (Self :: NAMED_VALUE_INT) , HIL_CONTROLS_DATA :: ID => HIL_CONTROLS_DATA :: deser (version , payload) . map (Self :: HIL_CONTROLS) , AUTOPILOT_VERSION_DATA :: ID => AUTOPILOT_VERSION_DATA :: deser (version , payload) . map (Self :: AUTOPILOT_VERSION) , AP_ADC_DATA :: ID => AP_ADC_DATA :: deser (version , payload) . map (Self :: AP_ADC) , HIL_STATE_DATA :: ID => HIL_STATE_DATA :: deser (version , payload) . map (Self :: HIL_STATE) , PARAM_MAP_RC_DATA :: ID => PARAM_MAP_RC_DATA :: deser (version , payload) . map (Self :: PARAM_MAP_RC) , MAG_CAL_PROGRESS_DATA :: ID => MAG_CAL_PROGRESS_DATA :: deser (version , payload) . map (Self :: MAG_CAL_PROGRESS) , GIMBAL_CONTROL_DATA :: ID => GIMBAL_CONTROL_DATA :: deser (version , payload) . map (Self :: GIMBAL_CONTROL) , DISTANCE_SENSOR_DATA :: ID => DISTANCE_SENSOR_DATA :: deser (version , payload) . map (Self :: DISTANCE_SENSOR) , SYSTEM_TIME_DATA :: ID => SYSTEM_TIME_DATA :: deser (version , payload) . map (Self :: SYSTEM_TIME) , COMMAND_LONG_DATA :: ID => COMMAND_LONG_DATA :: deser (version , payload) . map (Self :: COMMAND_LONG) , GPS_INJECT_DATA_DATA :: ID => GPS_INJECT_DATA_DATA :: deser (version , payload) . map (Self :: GPS_INJECT_DATA) , OPTICAL_FLOW_DATA :: ID => OPTICAL_FLOW_DATA :: deser (version , payload) . map (Self :: OPTICAL_FLOW) , GOPRO_HEARTBEAT_DATA :: ID => GOPRO_HEARTBEAT_DATA :: deser (version , payload) . map (Self :: GOPRO_HEARTBEAT) , MAG_CAL_REPORT_DATA :: ID => MAG_CAL_REPORT_DATA :: deser (version , payload) . map (Self :: MAG_CAL_REPORT) , MESSAGE_INTERVAL_DATA :: ID => MESSAGE_INTERVAL_DATA :: deser (version , payload) . map (Self :: MESSAGE_INTERVAL) , WINCH_STATUS_DATA :: ID => WINCH_STATUS_DATA :: deser (version , payload) . map (Self :: WINCH_STATUS) , GPS_GLOBAL_ORIGIN_DATA :: ID => GPS_GLOBAL_ORIGIN_DATA :: deser (version , payload) . map (Self :: GPS_GLOBAL_ORIGIN) , MOUNT_ORIENTATION_DATA :: ID => MOUNT_ORIENTATION_DATA :: deser (version , payload) . map (Self :: MOUNT_ORIENTATION) , ODOMETRY_DATA :: ID => ODOMETRY_DATA :: deser (version , payload) . map (Self :: ODOMETRY) , SETUP_SIGNING_DATA :: ID => SETUP_SIGNING_DATA :: deser (version , payload) . map (Self :: SETUP_SIGNING) , LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: ID => LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: deser (version , payload) . map (Self :: LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET) , MISSION_CLEAR_ALL_DATA :: ID => MISSION_CLEAR_ALL_DATA :: deser (version , payload) . map (Self :: MISSION_CLEAR_ALL) , OPEN_DRONE_ID_MESSAGE_PACK_DATA :: ID => OPEN_DRONE_ID_MESSAGE_PACK_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_MESSAGE_PACK) , DATA64_DATA :: ID => DATA64_DATA :: deser (version , payload) . map (Self :: DATA64) , REMOTE_LOG_BLOCK_STATUS_DATA :: ID => REMOTE_LOG_BLOCK_STATUS_DATA :: deser (version , payload) . map (Self :: REMOTE_LOG_BLOCK_STATUS) , GOPRO_SET_REQUEST_DATA :: ID => GOPRO_SET_REQUEST_DATA :: deser (version , payload) . map (Self :: GOPRO_SET_REQUEST) , SCALED_PRESSURE3_DATA :: ID => SCALED_PRESSURE3_DATA :: deser (version , payload) . map (Self :: SCALED_PRESSURE3) , REQUEST_DATA_STREAM_DATA :: ID => REQUEST_DATA_STREAM_DATA :: deser (version , payload) . map (Self :: REQUEST_DATA_STREAM) , LOG_REQUEST_END_DATA :: ID => LOG_REQUEST_END_DATA :: deser (version , payload) . map (Self :: LOG_REQUEST_END) , STORAGE_INFORMATION_DATA :: ID => STORAGE_INFORMATION_DATA :: deser (version , payload) . map (Self :: STORAGE_INFORMATION) , HIL_SENSOR_DATA :: ID => HIL_SENSOR_DATA :: deser (version , payload) . map (Self :: HIL_SENSOR) , AIS_VESSEL_DATA :: ID => AIS_VESSEL_DATA :: deser (version , payload) . map (Self :: AIS_VESSEL) , CUBEPILOT_FIRMWARE_UPDATE_START_DATA :: ID => CUBEPILOT_FIRMWARE_UPDATE_START_DATA :: deser (version , payload) . map (Self :: CUBEPILOT_FIRMWARE_UPDATE_START) , BATTERY2_DATA :: ID => BATTERY2_DATA :: deser (version , payload) . map (Self :: BATTERY2) , GLOBAL_POSITION_INT_DATA :: ID => GLOBAL_POSITION_INT_DATA :: deser (version , payload) . map (Self :: GLOBAL_POSITION_INT) , RC_CHANNELS_SCALED_DATA :: ID => RC_CHANNELS_SCALED_DATA :: deser (version , payload) . map (Self :: RC_CHANNELS_SCALED) , COLLISION_DATA :: ID => COLLISION_DATA :: deser (version , payload) . map (Self :: COLLISION) , WATER_DEPTH_DATA :: ID => WATER_DEPTH_DATA :: deser (version , payload) . map (Self :: WATER_DEPTH) , ESC_TELEMETRY_5_TO_8_DATA :: ID => ESC_TELEMETRY_5_TO_8_DATA :: deser (version , payload) . map (Self :: ESC_TELEMETRY_5_TO_8) , HERELINK_VIDEO_STREAM_INFORMATION_DATA :: ID => HERELINK_VIDEO_STREAM_INFORMATION_DATA :: deser (version , payload) . map (Self :: HERELINK_VIDEO_STREAM_INFORMATION) , LOG_ERASE_DATA :: ID => LOG_ERASE_DATA :: deser (version , payload) . map (Self :: LOG_ERASE) , SET_HOME_POSITION_DATA :: ID => SET_HOME_POSITION_DATA :: deser (version , payload) . map (Self :: SET_HOME_POSITION) , CAMERA_FOV_STATUS_DATA :: ID => CAMERA_FOV_STATUS_DATA :: deser (version , payload) . map (Self :: CAMERA_FOV_STATUS) , SCALED_PRESSURE_DATA :: ID => SCALED_PRESSURE_DATA :: deser (version , payload) . map (Self :: SCALED_PRESSURE) , PARAM_REQUEST_READ_DATA :: ID => PARAM_REQUEST_READ_DATA :: deser (version , payload) . map (Self :: PARAM_REQUEST_READ) , HIL_RC_INPUTS_RAW_DATA :: ID => HIL_RC_INPUTS_RAW_DATA :: deser (version , payload) . map (Self :: HIL_RC_INPUTS_RAW) , SET_MODE_DATA :: ID => SET_MODE_DATA :: deser (version , payload) . map (Self :: SET_MODE) , GIMBAL_MANAGER_SET_ATTITUDE_DATA :: ID => GIMBAL_MANAGER_SET_ATTITUDE_DATA :: deser (version , payload) . map (Self :: GIMBAL_MANAGER_SET_ATTITUDE) , CAMERA_INFORMATION_DATA :: ID => CAMERA_INFORMATION_DATA :: deser (version , payload) . map (Self :: CAMERA_INFORMATION) , GLOBAL_POSITION_INT_COV_DATA :: ID => GLOBAL_POSITION_INT_COV_DATA :: deser (version , payload) . map (Self :: GLOBAL_POSITION_INT_COV) , GPS_STATUS_DATA :: ID => GPS_STATUS_DATA :: deser (version , payload) . map (Self :: GPS_STATUS) , RESPONSE_EVENT_ERROR_DATA :: ID => RESPONSE_EVENT_ERROR_DATA :: deser (version , payload) . map (Self :: RESPONSE_EVENT_ERROR) , _ => { Err (:: mavlink_core :: error :: ParserError :: UnknownMessage { id }) } , } } fn message_name (& self) -> & 'static str { match self { Self :: HEARTBEAT (..) => HEARTBEAT_DATA :: NAME , Self :: MISSION_ITEM_REACHED (..) => MISSION_ITEM_REACHED_DATA :: NAME , Self :: OSD_PARAM_SHOW_CONFIG (..) => OSD_PARAM_SHOW_CONFIG_DATA :: NAME , Self :: TIMESYNC (..) => TIMESYNC_DATA :: NAME , Self :: GOPRO_GET_REQUEST (..) => GOPRO_GET_REQUEST_DATA :: NAME , Self :: TRAJECTORY_REPRESENTATION_WAYPOINTS (..) => TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: NAME , Self :: POSITION_TARGET_LOCAL_NED (..) => POSITION_TARGET_LOCAL_NED_DATA :: NAME , Self :: LOCAL_POSITION_NED (..) => LOCAL_POSITION_NED_DATA :: NAME , Self :: TIME_ESTIMATE_TO_TARGET (..) => TIME_ESTIMATE_TO_TARGET_DATA :: NAME , Self :: SUPPORTED_TUNES (..) => SUPPORTED_TUNES_DATA :: NAME , Self :: VFR_HUD (..) => VFR_HUD_DATA :: NAME , Self :: POSITION_TARGET_GLOBAL_INT (..) => POSITION_TARGET_GLOBAL_INT_DATA :: NAME , Self :: EFI_STATUS (..) => EFI_STATUS_DATA :: NAME , Self :: ALTITUDE (..) => ALTITUDE_DATA :: NAME , Self :: RAW_PRESSURE (..) => RAW_PRESSURE_DATA :: NAME , Self :: OBSTACLE_DISTANCE (..) => OBSTACLE_DISTANCE_DATA :: NAME , Self :: LINK_NODE_STATUS (..) => LINK_NODE_STATUS_DATA :: NAME , Self :: AIRSPEED_AUTOCAL (..) => AIRSPEED_AUTOCAL_DATA :: NAME , Self :: SET_GPS_GLOBAL_ORIGIN (..) => SET_GPS_GLOBAL_ORIGIN_DATA :: NAME , Self :: RADIO_STATUS (..) => RADIO_STATUS_DATA :: NAME , Self :: LOGGING_DATA (..) => LOGGING_DATA_DATA :: NAME , Self :: HOME_POSITION (..) => HOME_POSITION_DATA :: NAME , Self :: WHEEL_DISTANCE (..) => WHEEL_DISTANCE_DATA :: NAME , Self :: GIMBAL_MANAGER_SET_MANUAL_CONTROL (..) => GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: NAME , Self :: FILE_TRANSFER_PROTOCOL (..) => FILE_TRANSFER_PROTOCOL_DATA :: NAME , Self :: MISSION_REQUEST_PARTIAL_LIST (..) => MISSION_REQUEST_PARTIAL_LIST_DATA :: NAME , Self :: RC_CHANNELS_RAW (..) => RC_CHANNELS_RAW_DATA :: NAME , Self :: ACTUATOR_CONTROL_TARGET (..) => ACTUATOR_CONTROL_TARGET_DATA :: NAME , Self :: FOLLOW_TARGET (..) => FOLLOW_TARGET_DATA :: NAME , Self :: CANFD_FRAME (..) => CANFD_FRAME_DATA :: NAME , Self :: VIDEO_STREAM_STATUS (..) => VIDEO_STREAM_STATUS_DATA :: NAME , Self :: PARAM_SET (..) => PARAM_SET_DATA :: NAME , Self :: SYS_STATUS (..) => SYS_STATUS_DATA :: NAME , Self :: ADSB_VEHICLE (..) => ADSB_VEHICLE_DATA :: NAME , Self :: WIND_COV (..) => WIND_COV_DATA :: NAME , Self :: ESTIMATOR_STATUS (..) => ESTIMATOR_STATUS_DATA :: NAME , Self :: OPEN_DRONE_ID_SYSTEM_UPDATE (..) => OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: NAME , Self :: UAVIONIX_ADSB_OUT_CFG (..) => UAVIONIX_ADSB_OUT_CFG_DATA :: NAME , Self :: FENCE_STATUS (..) => FENCE_STATUS_DATA :: NAME , Self :: AUTOPILOT_VERSION_REQUEST (..) => AUTOPILOT_VERSION_REQUEST_DATA :: NAME , Self :: DATA16 (..) => DATA16_DATA :: NAME , Self :: MANUAL_SETPOINT (..) => MANUAL_SETPOINT_DATA :: NAME , Self :: POWER_STATUS (..) => POWER_STATUS_DATA :: NAME , Self :: SET_ACTUATOR_CONTROL_TARGET (..) => SET_ACTUATOR_CONTROL_TARGET_DATA :: NAME , Self :: HWSTATUS (..) => HWSTATUS_DATA :: NAME , Self :: SET_POSITION_TARGET_LOCAL_NED (..) => SET_POSITION_TARGET_LOCAL_NED_DATA :: NAME , Self :: CAMERA_IMAGE_CAPTURED (..) => CAMERA_IMAGE_CAPTURED_DATA :: NAME , Self :: CAMERA_STATUS (..) => CAMERA_STATUS_DATA :: NAME , Self :: SCALED_IMU2 (..) => SCALED_IMU2_DATA :: NAME , Self :: PARAM_VALUE (..) => PARAM_VALUE_DATA :: NAME , Self :: TERRAIN_REQUEST (..) => TERRAIN_REQUEST_DATA :: NAME , Self :: WIND (..) => WIND_DATA :: NAME , Self :: DATA_TRANSMISSION_HANDSHAKE (..) => DATA_TRANSMISSION_HANDSHAKE_DATA :: NAME , Self :: TUNNEL (..) => TUNNEL_DATA :: NAME , Self :: HIL_ACTUATOR_CONTROLS (..) => HIL_ACTUATOR_CONTROLS_DATA :: NAME , Self :: UAVCAN_NODE_STATUS (..) => UAVCAN_NODE_STATUS_DATA :: NAME , Self :: GPS_RTK (..) => GPS_RTK_DATA :: NAME , Self :: HYGROMETER_SENSOR (..) => HYGROMETER_SENSOR_DATA :: NAME , Self :: COMPASSMOT_STATUS (..) => COMPASSMOT_STATUS_DATA :: NAME , Self :: EXTENDED_SYS_STATE (..) => EXTENDED_SYS_STATE_DATA :: NAME , Self :: GIMBAL_DEVICE_INFORMATION (..) => GIMBAL_DEVICE_INFORMATION_DATA :: NAME , Self :: PLAY_TUNE_V2 (..) => PLAY_TUNE_V2_DATA :: NAME , Self :: OPEN_DRONE_ID_ARM_STATUS (..) => OPEN_DRONE_ID_ARM_STATUS_DATA :: NAME , Self :: SCALED_PRESSURE2 (..) => SCALED_PRESSURE2_DATA :: NAME , Self :: DATA96 (..) => DATA96_DATA :: NAME , Self :: FLIGHT_INFORMATION (..) => FLIGHT_INFORMATION_DATA :: NAME , Self :: REMOTE_LOG_DATA_BLOCK (..) => REMOTE_LOG_DATA_BLOCK_DATA :: NAME , Self :: ACTUATOR_OUTPUT_STATUS (..) => ACTUATOR_OUTPUT_STATUS_DATA :: NAME , Self :: AHRS (..) => AHRS_DATA :: NAME , Self :: DEBUG_VECT (..) => DEBUG_VECT_DATA :: NAME , Self :: UTM_GLOBAL_POSITION (..) => UTM_GLOBAL_POSITION_DATA :: NAME , Self :: MISSION_ITEM_INT (..) => MISSION_ITEM_INT_DATA :: NAME , Self :: CAN_FILTER_MODIFY (..) => CAN_FILTER_MODIFY_DATA :: NAME , Self :: DEVICE_OP_READ_REPLY (..) => DEVICE_OP_READ_REPLY_DATA :: NAME , Self :: ADAP_TUNING (..) => ADAP_TUNING_DATA :: NAME , Self :: SET_POSITION_TARGET_GLOBAL_INT (..) => SET_POSITION_TARGET_GLOBAL_INT_DATA :: NAME , Self :: PROTOCOL_VERSION (..) => PROTOCOL_VERSION_DATA :: NAME , Self :: HIL_GPS (..) => HIL_GPS_DATA :: NAME , Self :: SCALED_IMU (..) => SCALED_IMU_DATA :: NAME , Self :: UAVIONIX_ADSB_OUT_DYNAMIC (..) => UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: NAME , Self :: COMMAND_CANCEL (..) => COMMAND_CANCEL_DATA :: NAME , Self :: MOUNT_CONFIGURE (..) => MOUNT_CONFIGURE_DATA :: NAME , Self :: LOGGING_ACK (..) => LOGGING_ACK_DATA :: NAME , Self :: ATT_POS_MOCAP (..) => ATT_POS_MOCAP_DATA :: NAME , Self :: PARAM_EXT_REQUEST_READ (..) => PARAM_EXT_REQUEST_READ_DATA :: NAME , Self :: CAMERA_TRACKING_IMAGE_STATUS (..) => CAMERA_TRACKING_IMAGE_STATUS_DATA :: NAME , Self :: EKF_STATUS_REPORT (..) => EKF_STATUS_REPORT_DATA :: NAME , Self :: OBSTACLE_DISTANCE_3D (..) => OBSTACLE_DISTANCE_3D_DATA :: NAME , Self :: TERRAIN_DATA (..) => TERRAIN_DATA_DATA :: NAME , Self :: PARAM_REQUEST_LIST (..) => PARAM_REQUEST_LIST_DATA :: NAME , Self :: RPM (..) => RPM_DATA :: NAME , Self :: MISSION_REQUEST_INT (..) => MISSION_REQUEST_INT_DATA :: NAME , Self :: CELLULAR_CONFIG (..) => CELLULAR_CONFIG_DATA :: NAME , Self :: SENSOR_OFFSETS (..) => SENSOR_OFFSETS_DATA :: NAME , Self :: AHRS3 (..) => AHRS3_DATA :: NAME , Self :: LOG_REQUEST_LIST (..) => LOG_REQUEST_LIST_DATA :: NAME , Self :: DIGICAM_CONFIGURE (..) => DIGICAM_CONFIGURE_DATA :: NAME , Self :: GPS2_RAW (..) => GPS2_RAW_DATA :: NAME , Self :: OPEN_DRONE_ID_SELF_ID (..) => OPEN_DRONE_ID_SELF_ID_DATA :: NAME , Self :: AHRS2 (..) => AHRS2_DATA :: NAME , Self :: VICON_POSITION_ESTIMATE (..) => VICON_POSITION_ESTIMATE_DATA :: NAME , Self :: CHANGE_OPERATOR_CONTROL (..) => CHANGE_OPERATOR_CONTROL_DATA :: NAME , Self :: RC_CHANNELS_OVERRIDE (..) => RC_CHANNELS_OVERRIDE_DATA :: NAME , Self :: MISSION_WRITE_PARTIAL_LIST (..) => MISSION_WRITE_PARTIAL_LIST_DATA :: NAME , Self :: CAMERA_TRIGGER (..) => CAMERA_TRIGGER_DATA :: NAME , Self :: MISSION_REQUEST_LIST (..) => MISSION_REQUEST_LIST_DATA :: NAME , Self :: DATA32 (..) => DATA32_DATA :: NAME , Self :: CAMERA_CAPTURE_STATUS (..) => CAMERA_CAPTURE_STATUS_DATA :: NAME , Self :: TERRAIN_CHECK (..) => TERRAIN_CHECK_DATA :: NAME , Self :: ICAROUS_KINEMATIC_BANDS (..) => ICAROUS_KINEMATIC_BANDS_DATA :: NAME , Self :: CHANGE_OPERATOR_CONTROL_ACK (..) => CHANGE_OPERATOR_CONTROL_ACK_DATA :: NAME , Self :: ORBIT_EXECUTION_STATUS (..) => ORBIT_EXECUTION_STATUS_DATA :: NAME , Self :: DEVICE_OP_WRITE (..) => DEVICE_OP_WRITE_DATA :: NAME , Self :: OPEN_DRONE_ID_LOCATION (..) => OPEN_DRONE_ID_LOCATION_DATA :: NAME , Self :: LANDING_TARGET (..) => LANDING_TARGET_DATA :: NAME , Self :: BATTERY_STATUS (..) => BATTERY_STATUS_DATA :: NAME , Self :: GOPRO_SET_RESPONSE (..) => GOPRO_SET_RESPONSE_DATA :: NAME , Self :: EVENT (..) => EVENT_DATA :: NAME , Self :: GIMBAL_MANAGER_SET_PITCHYAW (..) => GIMBAL_MANAGER_SET_PITCHYAW_DATA :: NAME , Self :: SMART_BATTERY_INFO (..) => SMART_BATTERY_INFO_DATA :: NAME , Self :: ATTITUDE_QUATERNION (..) => ATTITUDE_QUATERNION_DATA :: NAME , Self :: SET_ATTITUDE_TARGET (..) => SET_ATTITUDE_TARGET_DATA :: NAME , Self :: MANUAL_CONTROL (..) => MANUAL_CONTROL_DATA :: NAME , Self :: RALLY_FETCH_POINT (..) => RALLY_FETCH_POINT_DATA :: NAME , Self :: VISION_POSITION_ESTIMATE (..) => VISION_POSITION_ESTIMATE_DATA :: NAME , Self :: RALLY_POINT (..) => RALLY_POINT_DATA :: NAME , Self :: VIDEO_STREAM_INFORMATION (..) => VIDEO_STREAM_INFORMATION_DATA :: NAME , Self :: OPEN_DRONE_ID_BASIC_ID (..) => OPEN_DRONE_ID_BASIC_ID_DATA :: NAME , Self :: ENCAPSULATED_DATA (..) => ENCAPSULATED_DATA_DATA :: NAME , Self :: DEVICE_OP_WRITE_REPLY (..) => DEVICE_OP_WRITE_REPLY_DATA :: NAME , Self :: PING (..) => PING_DATA :: NAME , Self :: SET_MAG_OFFSETS (..) => SET_MAG_OFFSETS_DATA :: NAME , Self :: GPS_INPUT (..) => GPS_INPUT_DATA :: NAME , Self :: LOG_ENTRY (..) => LOG_ENTRY_DATA :: NAME , Self :: RAW_IMU (..) => RAW_IMU_DATA :: NAME , Self :: GPS_RAW_INT (..) => GPS_RAW_INT_DATA :: NAME , Self :: CONTROL_SYSTEM_STATE (..) => CONTROL_SYSTEM_STATE_DATA :: NAME , Self :: DEBUG (..) => DEBUG_DATA :: NAME , Self :: ESC_TELEMETRY_1_TO_4 (..) => ESC_TELEMETRY_1_TO_4_DATA :: NAME , Self :: MOUNT_CONTROL (..) => MOUNT_CONTROL_DATA :: NAME , Self :: COMPONENT_METADATA (..) => COMPONENT_METADATA_DATA :: NAME , Self :: NAMED_VALUE_FLOAT (..) => NAMED_VALUE_FLOAT_DATA :: NAME , Self :: GPS2_RTK (..) => GPS2_RTK_DATA :: NAME , Self :: VIBRATION (..) => VIBRATION_DATA :: NAME , Self :: MISSION_CURRENT (..) => MISSION_CURRENT_DATA :: NAME , Self :: HERELINK_TELEM (..) => HERELINK_TELEM_DATA :: NAME , Self :: PARAM_EXT_ACK (..) => PARAM_EXT_ACK_DATA :: NAME , Self :: MISSION_REQUEST (..) => MISSION_REQUEST_DATA :: NAME , Self :: MEMINFO (..) => MEMINFO_DATA :: NAME , Self :: LED_CONTROL (..) => LED_CONTROL_DATA :: NAME , Self :: MISSION_ITEM (..) => MISSION_ITEM_DATA :: NAME , Self :: GPS_RTCM_DATA (..) => GPS_RTCM_DATA_DATA :: NAME , Self :: OPTICAL_FLOW_RAD (..) => OPTICAL_FLOW_RAD_DATA :: NAME , Self :: VISION_SPEED_ESTIMATE (..) => VISION_SPEED_ESTIMATE_DATA :: NAME , Self :: TERRAIN_REPORT (..) => TERRAIN_REPORT_DATA :: NAME , Self :: V2_EXTENSION (..) => V2_EXTENSION_DATA :: NAME , Self :: CAN_FRAME (..) => CAN_FRAME_DATA :: NAME , Self :: REQUEST_EVENT (..) => REQUEST_EVENT_DATA :: NAME , Self :: OSD_PARAM_CONFIG (..) => OSD_PARAM_CONFIG_DATA :: NAME , Self :: AUTOPILOT_STATE_FOR_GIMBAL_DEVICE (..) => AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: NAME , Self :: ATTITUDE (..) => ATTITUDE_DATA :: NAME , Self :: UAVCAN_NODE_INFO (..) => UAVCAN_NODE_INFO_DATA :: NAME , Self :: HIL_OPTICAL_FLOW (..) => HIL_OPTICAL_FLOW_DATA :: NAME , Self :: MEMORY_VECT (..) => MEMORY_VECT_DATA :: NAME , Self :: SAFETY_SET_ALLOWED_AREA (..) => SAFETY_SET_ALLOWED_AREA_DATA :: NAME , Self :: GIMBAL_MANAGER_STATUS (..) => GIMBAL_MANAGER_STATUS_DATA :: NAME , Self :: GLOBAL_VISION_POSITION_ESTIMATE (..) => GLOBAL_VISION_POSITION_ESTIMATE_DATA :: NAME , Self :: AUTH_KEY (..) => AUTH_KEY_DATA :: NAME , Self :: COMMAND_ACK (..) => COMMAND_ACK_DATA :: NAME , Self :: DIGICAM_CONTROL (..) => DIGICAM_CONTROL_DATA :: NAME , Self :: FENCE_FETCH_POINT (..) => FENCE_FETCH_POINT_DATA :: NAME , Self :: ESC_TELEMETRY_9_TO_12 (..) => ESC_TELEMETRY_9_TO_12_DATA :: NAME , Self :: SERIAL_CONTROL (..) => SERIAL_CONTROL_DATA :: NAME , Self :: MCU_STATUS (..) => MCU_STATUS_DATA :: NAME , Self :: COMMAND_INT (..) => COMMAND_INT_DATA :: NAME , Self :: RAW_RPM (..) => RAW_RPM_DATA :: NAME , Self :: OPEN_DRONE_ID_OPERATOR_ID (..) => OPEN_DRONE_ID_OPERATOR_ID_DATA :: NAME , Self :: DATA_STREAM (..) => DATA_STREAM_DATA :: NAME , Self :: MISSION_COUNT (..) => MISSION_COUNT_DATA :: NAME , Self :: SCALED_IMU3 (..) => SCALED_IMU3_DATA :: NAME , Self :: DEBUG_FLOAT_ARRAY (..) => DEBUG_FLOAT_ARRAY_DATA :: NAME , Self :: GIMBAL_MANAGER_INFORMATION (..) => GIMBAL_MANAGER_INFORMATION_DATA :: NAME , Self :: HIGH_LATENCY2 (..) => HIGH_LATENCY2_DATA :: NAME , Self :: PLAY_TUNE (..) => PLAY_TUNE_DATA :: NAME , Self :: AOA_SSA (..) => AOA_SSA_DATA :: NAME , Self :: LOCAL_POSITION_NED_COV (..) => LOCAL_POSITION_NED_COV_DATA :: NAME , Self :: MISSION_ACK (..) => MISSION_ACK_DATA :: NAME , Self :: LIMITS_STATUS (..) => LIMITS_STATUS_DATA :: NAME , Self :: COMPONENT_INFORMATION (..) => COMPONENT_INFORMATION_DATA :: NAME , Self :: GIMBAL_TORQUE_CMD_REPORT (..) => GIMBAL_TORQUE_CMD_REPORT_DATA :: NAME , Self :: MOUNT_STATUS (..) => MOUNT_STATUS_DATA :: NAME , Self :: SIM_STATE (..) => SIM_STATE_DATA :: NAME , Self :: MISSION_SET_CURRENT (..) => MISSION_SET_CURRENT_DATA :: NAME , Self :: PARAM_EXT_SET (..) => PARAM_EXT_SET_DATA :: NAME , Self :: ISBD_LINK_STATUS (..) => ISBD_LINK_STATUS_DATA :: NAME , Self :: RC_CHANNELS (..) => RC_CHANNELS_DATA :: NAME , Self :: CUBEPILOT_FIRMWARE_UPDATE_RESP (..) => CUBEPILOT_FIRMWARE_UPDATE_RESP_DATA :: NAME , Self :: SIMSTATE (..) => SIMSTATE_DATA :: NAME , Self :: CAMERA_TRACKING_GEO_STATUS (..) => CAMERA_TRACKING_GEO_STATUS_DATA :: NAME , Self :: ESC_STATUS (..) => ESC_STATUS_DATA :: NAME , Self :: CUBEPILOT_RAW_RC (..) => CUBEPILOT_RAW_RC_DATA :: NAME , Self :: HIGHRES_IMU (..) => HIGHRES_IMU_DATA :: NAME , Self :: NAV_CONTROLLER_OUTPUT (..) => NAV_CONTROLLER_OUTPUT_DATA :: NAME , Self :: OPEN_DRONE_ID_AUTHENTICATION (..) => OPEN_DRONE_ID_AUTHENTICATION_DATA :: NAME , Self :: LOGGING_DATA_ACKED (..) => LOGGING_DATA_ACKED_DATA :: NAME , Self :: ICAROUS_HEARTBEAT (..) => ICAROUS_HEARTBEAT_DATA :: NAME , Self :: FENCE_POINT (..) => FENCE_POINT_DATA :: NAME , Self :: OSD_PARAM_SHOW_CONFIG_REPLY (..) => OSD_PARAM_SHOW_CONFIG_REPLY_DATA :: NAME , Self :: ATTITUDE_TARGET (..) => ATTITUDE_TARGET_DATA :: NAME , Self :: LOG_REQUEST_DATA (..) => LOG_REQUEST_DATA_DATA :: NAME , Self :: GIMBAL_REPORT (..) => GIMBAL_REPORT_DATA :: NAME , Self :: PARAM_EXT_VALUE (..) => PARAM_EXT_VALUE_DATA :: NAME , Self :: SERVO_OUTPUT_RAW (..) => SERVO_OUTPUT_RAW_DATA :: NAME , Self :: ESC_INFO (..) => ESC_INFO_DATA :: NAME , Self :: OPEN_DRONE_ID_SYSTEM (..) => OPEN_DRONE_ID_SYSTEM_DATA :: NAME , Self :: UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT (..) => UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: NAME , Self :: HIGH_LATENCY (..) => HIGH_LATENCY_DATA :: NAME , Self :: PID_TUNING (..) => PID_TUNING_DATA :: NAME , Self :: RANGEFINDER (..) => RANGEFINDER_DATA :: NAME , Self :: GIMBAL_DEVICE_SET_ATTITUDE (..) => GIMBAL_DEVICE_SET_ATTITUDE_DATA :: NAME , Self :: VISION_POSITION_DELTA (..) => VISION_POSITION_DELTA_DATA :: NAME , Self :: CAMERA_FEEDBACK (..) => CAMERA_FEEDBACK_DATA :: NAME , Self :: BUTTON_CHANGE (..) => BUTTON_CHANGE_DATA :: NAME , Self :: DEEPSTALL (..) => DEEPSTALL_DATA :: NAME , Self :: ONBOARD_COMPUTER_STATUS (..) => ONBOARD_COMPUTER_STATUS_DATA :: NAME , Self :: GOPRO_GET_RESPONSE (..) => GOPRO_GET_RESPONSE_DATA :: NAME , Self :: GIMBAL_DEVICE_ATTITUDE_STATUS (..) => GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: NAME , Self :: PARAM_EXT_REQUEST_LIST (..) => PARAM_EXT_REQUEST_LIST_DATA :: NAME , Self :: OSD_PARAM_CONFIG_REPLY (..) => OSD_PARAM_CONFIG_REPLY_DATA :: NAME , Self :: HIL_STATE_QUATERNION (..) => HIL_STATE_QUATERNION_DATA :: NAME , Self :: CAMERA_SETTINGS (..) => CAMERA_SETTINGS_DATA :: NAME , Self :: CURRENT_EVENT_SEQUENCE (..) => CURRENT_EVENT_SEQUENCE_DATA :: NAME , Self :: RESOURCE_REQUEST (..) => RESOURCE_REQUEST_DATA :: NAME , Self :: LOG_DATA (..) => LOG_DATA_DATA :: NAME , Self :: ATTITUDE_QUATERNION_COV (..) => ATTITUDE_QUATERNION_COV_DATA :: NAME , Self :: TRAJECTORY_REPRESENTATION_BEZIER (..) => TRAJECTORY_REPRESENTATION_BEZIER_DATA :: NAME , Self :: SAFETY_ALLOWED_AREA (..) => SAFETY_ALLOWED_AREA_DATA :: NAME , Self :: STATUSTEXT (..) => STATUSTEXT_DATA :: NAME , Self :: RADIO (..) => RADIO_DATA :: NAME , Self :: CELLULAR_STATUS (..) => CELLULAR_STATUS_DATA :: NAME , Self :: DEVICE_OP_READ (..) => DEVICE_OP_READ_DATA :: NAME , Self :: WIFI_CONFIG_AP (..) => WIFI_CONFIG_AP_DATA :: NAME , Self :: GENERATOR_STATUS (..) => GENERATOR_STATUS_DATA :: NAME , Self :: NAMED_VALUE_INT (..) => NAMED_VALUE_INT_DATA :: NAME , Self :: HIL_CONTROLS (..) => HIL_CONTROLS_DATA :: NAME , Self :: AUTOPILOT_VERSION (..) => AUTOPILOT_VERSION_DATA :: NAME , Self :: AP_ADC (..) => AP_ADC_DATA :: NAME , Self :: HIL_STATE (..) => HIL_STATE_DATA :: NAME , Self :: PARAM_MAP_RC (..) => PARAM_MAP_RC_DATA :: NAME , Self :: MAG_CAL_PROGRESS (..) => MAG_CAL_PROGRESS_DATA :: NAME , Self :: GIMBAL_CONTROL (..) => GIMBAL_CONTROL_DATA :: NAME , Self :: DISTANCE_SENSOR (..) => DISTANCE_SENSOR_DATA :: NAME , Self :: SYSTEM_TIME (..) => SYSTEM_TIME_DATA :: NAME , Self :: COMMAND_LONG (..) => COMMAND_LONG_DATA :: NAME , Self :: GPS_INJECT_DATA (..) => GPS_INJECT_DATA_DATA :: NAME , Self :: OPTICAL_FLOW (..) => OPTICAL_FLOW_DATA :: NAME , Self :: GOPRO_HEARTBEAT (..) => GOPRO_HEARTBEAT_DATA :: NAME , Self :: MAG_CAL_REPORT (..) => MAG_CAL_REPORT_DATA :: NAME , Self :: MESSAGE_INTERVAL (..) => MESSAGE_INTERVAL_DATA :: NAME , Self :: WINCH_STATUS (..) => WINCH_STATUS_DATA :: NAME , Self :: GPS_GLOBAL_ORIGIN (..) => GPS_GLOBAL_ORIGIN_DATA :: NAME , Self :: MOUNT_ORIENTATION (..) => MOUNT_ORIENTATION_DATA :: NAME , Self :: ODOMETRY (..) => ODOMETRY_DATA :: NAME , Self :: SETUP_SIGNING (..) => SETUP_SIGNING_DATA :: NAME , Self :: LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET (..) => LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: NAME , Self :: MISSION_CLEAR_ALL (..) => MISSION_CLEAR_ALL_DATA :: NAME , Self :: OPEN_DRONE_ID_MESSAGE_PACK (..) => OPEN_DRONE_ID_MESSAGE_PACK_DATA :: NAME , Self :: DATA64 (..) => DATA64_DATA :: NAME , Self :: REMOTE_LOG_BLOCK_STATUS (..) => REMOTE_LOG_BLOCK_STATUS_DATA :: NAME , Self :: GOPRO_SET_REQUEST (..) => GOPRO_SET_REQUEST_DATA :: NAME , Self :: SCALED_PRESSURE3 (..) => SCALED_PRESSURE3_DATA :: NAME , Self :: REQUEST_DATA_STREAM (..) => REQUEST_DATA_STREAM_DATA :: NAME , Self :: LOG_REQUEST_END (..) => LOG_REQUEST_END_DATA :: NAME , Self :: STORAGE_INFORMATION (..) => STORAGE_INFORMATION_DATA :: NAME , Self :: HIL_SENSOR (..) => HIL_SENSOR_DATA :: NAME , Self :: AIS_VESSEL (..) => AIS_VESSEL_DATA :: NAME , Self :: CUBEPILOT_FIRMWARE_UPDATE_START (..) => CUBEPILOT_FIRMWARE_UPDATE_START_DATA :: NAME , Self :: BATTERY2 (..) => BATTERY2_DATA :: NAME , Self :: GLOBAL_POSITION_INT (..) => GLOBAL_POSITION_INT_DATA :: NAME , Self :: RC_CHANNELS_SCALED (..) => RC_CHANNELS_SCALED_DATA :: NAME , Self :: COLLISION (..) => COLLISION_DATA :: NAME , Self :: WATER_DEPTH (..) => WATER_DEPTH_DATA :: NAME , Self :: ESC_TELEMETRY_5_TO_8 (..) => ESC_TELEMETRY_5_TO_8_DATA :: NAME , Self :: HERELINK_VIDEO_STREAM_INFORMATION (..) => HERELINK_VIDEO_STREAM_INFORMATION_DATA :: NAME , Self :: LOG_ERASE (..) => LOG_ERASE_DATA :: NAME , Self :: SET_HOME_POSITION (..) => SET_HOME_POSITION_DATA :: NAME , Self :: CAMERA_FOV_STATUS (..) => CAMERA_FOV_STATUS_DATA :: NAME , Self :: SCALED_PRESSURE (..) => SCALED_PRESSURE_DATA :: NAME , Self :: PARAM_REQUEST_READ (..) => PARAM_REQUEST_READ_DATA :: NAME , Self :: HIL_RC_INPUTS_RAW (..) => HIL_RC_INPUTS_RAW_DATA :: NAME , Self :: SET_MODE (..) => SET_MODE_DATA :: NAME , Self :: GIMBAL_MANAGER_SET_ATTITUDE (..) => GIMBAL_MANAGER_SET_ATTITUDE_DATA :: NAME , Self :: CAMERA_INFORMATION (..) => CAMERA_INFORMATION_DATA :: NAME , Self :: GLOBAL_POSITION_INT_COV (..) => GLOBAL_POSITION_INT_COV_DATA :: NAME , Self :: GPS_STATUS (..) => GPS_STATUS_DATA :: NAME , Self :: RESPONSE_EVENT_ERROR (..) => RESPONSE_EVENT_ERROR_DATA :: NAME , } } fn message_id (& self) -> u32 { match self { Self :: HEARTBEAT (..) => HEARTBEAT_DATA :: ID , Self :: MISSION_ITEM_REACHED (..) => MISSION_ITEM_REACHED_DATA :: ID , Self :: OSD_PARAM_SHOW_CONFIG (..) => OSD_PARAM_SHOW_CONFIG_DATA :: ID , Self :: TIMESYNC (..) => TIMESYNC_DATA :: ID , Self :: GOPRO_GET_REQUEST (..) => GOPRO_GET_REQUEST_DATA :: ID , Self :: TRAJECTORY_REPRESENTATION_WAYPOINTS (..) => TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: ID , Self :: POSITION_TARGET_LOCAL_NED (..) => POSITION_TARGET_LOCAL_NED_DATA :: ID , Self :: LOCAL_POSITION_NED (..) => LOCAL_POSITION_NED_DATA :: ID , Self :: TIME_ESTIMATE_TO_TARGET (..) => TIME_ESTIMATE_TO_TARGET_DATA :: ID , Self :: SUPPORTED_TUNES (..) => SUPPORTED_TUNES_DATA :: ID , Self :: VFR_HUD (..) => VFR_HUD_DATA :: ID , Self :: POSITION_TARGET_GLOBAL_INT (..) => POSITION_TARGET_GLOBAL_INT_DATA :: ID , Self :: EFI_STATUS (..) => EFI_STATUS_DATA :: ID , Self :: ALTITUDE (..) => ALTITUDE_DATA :: ID , Self :: RAW_PRESSURE (..) => RAW_PRESSURE_DATA :: ID , Self :: OBSTACLE_DISTANCE (..) => OBSTACLE_DISTANCE_DATA :: ID , Self :: LINK_NODE_STATUS (..) => LINK_NODE_STATUS_DATA :: ID , Self :: AIRSPEED_AUTOCAL (..) => AIRSPEED_AUTOCAL_DATA :: ID , Self :: SET_GPS_GLOBAL_ORIGIN (..) => SET_GPS_GLOBAL_ORIGIN_DATA :: ID , Self :: RADIO_STATUS (..) => RADIO_STATUS_DATA :: ID , Self :: LOGGING_DATA (..) => LOGGING_DATA_DATA :: ID , Self :: HOME_POSITION (..) => HOME_POSITION_DATA :: ID , Self :: WHEEL_DISTANCE (..) => WHEEL_DISTANCE_DATA :: ID , Self :: GIMBAL_MANAGER_SET_MANUAL_CONTROL (..) => GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: ID , Self :: FILE_TRANSFER_PROTOCOL (..) => FILE_TRANSFER_PROTOCOL_DATA :: ID , Self :: MISSION_REQUEST_PARTIAL_LIST (..) => MISSION_REQUEST_PARTIAL_LIST_DATA :: ID , Self :: RC_CHANNELS_RAW (..) => RC_CHANNELS_RAW_DATA :: ID , Self :: ACTUATOR_CONTROL_TARGET (..) => ACTUATOR_CONTROL_TARGET_DATA :: ID , Self :: FOLLOW_TARGET (..) => FOLLOW_TARGET_DATA :: ID , Self :: CANFD_FRAME (..) => CANFD_FRAME_DATA :: ID , Self :: VIDEO_STREAM_STATUS (..) => VIDEO_STREAM_STATUS_DATA :: ID , Self :: PARAM_SET (..) => PARAM_SET_DATA :: ID , Self :: SYS_STATUS (..) => SYS_STATUS_DATA :: ID , Self :: ADSB_VEHICLE (..) => ADSB_VEHICLE_DATA :: ID , Self :: WIND_COV (..) => WIND_COV_DATA :: ID , Self :: ESTIMATOR_STATUS (..) => ESTIMATOR_STATUS_DATA :: ID , Self :: OPEN_DRONE_ID_SYSTEM_UPDATE (..) => OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: ID , Self :: UAVIONIX_ADSB_OUT_CFG (..) => UAVIONIX_ADSB_OUT_CFG_DATA :: ID , Self :: FENCE_STATUS (..) => FENCE_STATUS_DATA :: ID , Self :: AUTOPILOT_VERSION_REQUEST (..) => AUTOPILOT_VERSION_REQUEST_DATA :: ID , Self :: DATA16 (..) => DATA16_DATA :: ID , Self :: MANUAL_SETPOINT (..) => MANUAL_SETPOINT_DATA :: ID , Self :: POWER_STATUS (..) => POWER_STATUS_DATA :: ID , Self :: SET_ACTUATOR_CONTROL_TARGET (..) => SET_ACTUATOR_CONTROL_TARGET_DATA :: ID , Self :: HWSTATUS (..) => HWSTATUS_DATA :: ID , Self :: SET_POSITION_TARGET_LOCAL_NED (..) => SET_POSITION_TARGET_LOCAL_NED_DATA :: ID , Self :: CAMERA_IMAGE_CAPTURED (..) => CAMERA_IMAGE_CAPTURED_DATA :: ID , Self :: CAMERA_STATUS (..) => CAMERA_STATUS_DATA :: ID , Self :: SCALED_IMU2 (..) => SCALED_IMU2_DATA :: ID , Self :: PARAM_VALUE (..) => PARAM_VALUE_DATA :: ID , Self :: TERRAIN_REQUEST (..) => TERRAIN_REQUEST_DATA :: ID , Self :: WIND (..) => WIND_DATA :: ID , Self :: DATA_TRANSMISSION_HANDSHAKE (..) => DATA_TRANSMISSION_HANDSHAKE_DATA :: ID , Self :: TUNNEL (..) => TUNNEL_DATA :: ID , Self :: HIL_ACTUATOR_CONTROLS (..) => HIL_ACTUATOR_CONTROLS_DATA :: ID , Self :: UAVCAN_NODE_STATUS (..) => UAVCAN_NODE_STATUS_DATA :: ID , Self :: GPS_RTK (..) => GPS_RTK_DATA :: ID , Self :: HYGROMETER_SENSOR (..) => HYGROMETER_SENSOR_DATA :: ID , Self :: COMPASSMOT_STATUS (..) => COMPASSMOT_STATUS_DATA :: ID , Self :: EXTENDED_SYS_STATE (..) => EXTENDED_SYS_STATE_DATA :: ID , Self :: GIMBAL_DEVICE_INFORMATION (..) => GIMBAL_DEVICE_INFORMATION_DATA :: ID , Self :: PLAY_TUNE_V2 (..) => PLAY_TUNE_V2_DATA :: ID , Self :: OPEN_DRONE_ID_ARM_STATUS (..) => OPEN_DRONE_ID_ARM_STATUS_DATA :: ID , Self :: SCALED_PRESSURE2 (..) => SCALED_PRESSURE2_DATA :: ID , Self :: DATA96 (..) => DATA96_DATA :: ID , Self :: FLIGHT_INFORMATION (..) => FLIGHT_INFORMATION_DATA :: ID , Self :: REMOTE_LOG_DATA_BLOCK (..) => REMOTE_LOG_DATA_BLOCK_DATA :: ID , Self :: ACTUATOR_OUTPUT_STATUS (..) => ACTUATOR_OUTPUT_STATUS_DATA :: ID , Self :: AHRS (..) => AHRS_DATA :: ID , Self :: DEBUG_VECT (..) => DEBUG_VECT_DATA :: ID , Self :: UTM_GLOBAL_POSITION (..) => UTM_GLOBAL_POSITION_DATA :: ID , Self :: MISSION_ITEM_INT (..) => MISSION_ITEM_INT_DATA :: ID , Self :: CAN_FILTER_MODIFY (..) => CAN_FILTER_MODIFY_DATA :: ID , Self :: DEVICE_OP_READ_REPLY (..) => DEVICE_OP_READ_REPLY_DATA :: ID , Self :: ADAP_TUNING (..) => ADAP_TUNING_DATA :: ID , Self :: SET_POSITION_TARGET_GLOBAL_INT (..) => SET_POSITION_TARGET_GLOBAL_INT_DATA :: ID , Self :: PROTOCOL_VERSION (..) => PROTOCOL_VERSION_DATA :: ID , Self :: HIL_GPS (..) => HIL_GPS_DATA :: ID , Self :: SCALED_IMU (..) => SCALED_IMU_DATA :: ID , Self :: UAVIONIX_ADSB_OUT_DYNAMIC (..) => UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: ID , Self :: COMMAND_CANCEL (..) => COMMAND_CANCEL_DATA :: ID , Self :: MOUNT_CONFIGURE (..) => MOUNT_CONFIGURE_DATA :: ID , Self :: LOGGING_ACK (..) => LOGGING_ACK_DATA :: ID , Self :: ATT_POS_MOCAP (..) => ATT_POS_MOCAP_DATA :: ID , Self :: PARAM_EXT_REQUEST_READ (..) => PARAM_EXT_REQUEST_READ_DATA :: ID , Self :: CAMERA_TRACKING_IMAGE_STATUS (..) => CAMERA_TRACKING_IMAGE_STATUS_DATA :: ID , Self :: EKF_STATUS_REPORT (..) => EKF_STATUS_REPORT_DATA :: ID , Self :: OBSTACLE_DISTANCE_3D (..) => OBSTACLE_DISTANCE_3D_DATA :: ID , Self :: TERRAIN_DATA (..) => TERRAIN_DATA_DATA :: ID , Self :: PARAM_REQUEST_LIST (..) => PARAM_REQUEST_LIST_DATA :: ID , Self :: RPM (..) => RPM_DATA :: ID , Self :: MISSION_REQUEST_INT (..) => MISSION_REQUEST_INT_DATA :: ID , Self :: CELLULAR_CONFIG (..) => CELLULAR_CONFIG_DATA :: ID , Self :: SENSOR_OFFSETS (..) => SENSOR_OFFSETS_DATA :: ID , Self :: AHRS3 (..) => AHRS3_DATA :: ID , Self :: LOG_REQUEST_LIST (..) => LOG_REQUEST_LIST_DATA :: ID , Self :: DIGICAM_CONFIGURE (..) => DIGICAM_CONFIGURE_DATA :: ID , Self :: GPS2_RAW (..) => GPS2_RAW_DATA :: ID , Self :: OPEN_DRONE_ID_SELF_ID (..) => OPEN_DRONE_ID_SELF_ID_DATA :: ID , Self :: AHRS2 (..) => AHRS2_DATA :: ID , Self :: VICON_POSITION_ESTIMATE (..) => VICON_POSITION_ESTIMATE_DATA :: ID , Self :: CHANGE_OPERATOR_CONTROL (..) => CHANGE_OPERATOR_CONTROL_DATA :: ID , Self :: RC_CHANNELS_OVERRIDE (..) => RC_CHANNELS_OVERRIDE_DATA :: ID , Self :: MISSION_WRITE_PARTIAL_LIST (..) => MISSION_WRITE_PARTIAL_LIST_DATA :: ID , Self :: CAMERA_TRIGGER (..) => CAMERA_TRIGGER_DATA :: ID , Self :: MISSION_REQUEST_LIST (..) => MISSION_REQUEST_LIST_DATA :: ID , Self :: DATA32 (..) => DATA32_DATA :: ID , Self :: CAMERA_CAPTURE_STATUS (..) => CAMERA_CAPTURE_STATUS_DATA :: ID , Self :: TERRAIN_CHECK (..) => TERRAIN_CHECK_DATA :: ID , Self :: ICAROUS_KINEMATIC_BANDS (..) => ICAROUS_KINEMATIC_BANDS_DATA :: ID , Self :: CHANGE_OPERATOR_CONTROL_ACK (..) => CHANGE_OPERATOR_CONTROL_ACK_DATA :: ID , Self :: ORBIT_EXECUTION_STATUS (..) => ORBIT_EXECUTION_STATUS_DATA :: ID , Self :: DEVICE_OP_WRITE (..) => DEVICE_OP_WRITE_DATA :: ID , Self :: OPEN_DRONE_ID_LOCATION (..) => OPEN_DRONE_ID_LOCATION_DATA :: ID , Self :: LANDING_TARGET (..) => LANDING_TARGET_DATA :: ID , Self :: BATTERY_STATUS (..) => BATTERY_STATUS_DATA :: ID , Self :: GOPRO_SET_RESPONSE (..) => GOPRO_SET_RESPONSE_DATA :: ID , Self :: EVENT (..) => EVENT_DATA :: ID , Self :: GIMBAL_MANAGER_SET_PITCHYAW (..) => GIMBAL_MANAGER_SET_PITCHYAW_DATA :: ID , Self :: SMART_BATTERY_INFO (..) => SMART_BATTERY_INFO_DATA :: ID , Self :: ATTITUDE_QUATERNION (..) => ATTITUDE_QUATERNION_DATA :: ID , Self :: SET_ATTITUDE_TARGET (..) => SET_ATTITUDE_TARGET_DATA :: ID , Self :: MANUAL_CONTROL (..) => MANUAL_CONTROL_DATA :: ID , Self :: RALLY_FETCH_POINT (..) => RALLY_FETCH_POINT_DATA :: ID , Self :: VISION_POSITION_ESTIMATE (..) => VISION_POSITION_ESTIMATE_DATA :: ID , Self :: RALLY_POINT (..) => RALLY_POINT_DATA :: ID , Self :: VIDEO_STREAM_INFORMATION (..) => VIDEO_STREAM_INFORMATION_DATA :: ID , Self :: OPEN_DRONE_ID_BASIC_ID (..) => OPEN_DRONE_ID_BASIC_ID_DATA :: ID , Self :: ENCAPSULATED_DATA (..) => ENCAPSULATED_DATA_DATA :: ID , Self :: DEVICE_OP_WRITE_REPLY (..) => DEVICE_OP_WRITE_REPLY_DATA :: ID , Self :: PING (..) => PING_DATA :: ID , Self :: SET_MAG_OFFSETS (..) => SET_MAG_OFFSETS_DATA :: ID , Self :: GPS_INPUT (..) => GPS_INPUT_DATA :: ID , Self :: LOG_ENTRY (..) => LOG_ENTRY_DATA :: ID , Self :: RAW_IMU (..) => RAW_IMU_DATA :: ID , Self :: GPS_RAW_INT (..) => GPS_RAW_INT_DATA :: ID , Self :: CONTROL_SYSTEM_STATE (..) => CONTROL_SYSTEM_STATE_DATA :: ID , Self :: DEBUG (..) => DEBUG_DATA :: ID , Self :: ESC_TELEMETRY_1_TO_4 (..) => ESC_TELEMETRY_1_TO_4_DATA :: ID , Self :: MOUNT_CONTROL (..) => MOUNT_CONTROL_DATA :: ID , Self :: COMPONENT_METADATA (..) => COMPONENT_METADATA_DATA :: ID , Self :: NAMED_VALUE_FLOAT (..) => NAMED_VALUE_FLOAT_DATA :: ID , Self :: GPS2_RTK (..) => GPS2_RTK_DATA :: ID , Self :: VIBRATION (..) => VIBRATION_DATA :: ID , Self :: MISSION_CURRENT (..) => MISSION_CURRENT_DATA :: ID , Self :: HERELINK_TELEM (..) => HERELINK_TELEM_DATA :: ID , Self :: PARAM_EXT_ACK (..) => PARAM_EXT_ACK_DATA :: ID , Self :: MISSION_REQUEST (..) => MISSION_REQUEST_DATA :: ID , Self :: MEMINFO (..) => MEMINFO_DATA :: ID , Self :: LED_CONTROL (..) => LED_CONTROL_DATA :: ID , Self :: MISSION_ITEM (..) => MISSION_ITEM_DATA :: ID , Self :: GPS_RTCM_DATA (..) => GPS_RTCM_DATA_DATA :: ID , Self :: OPTICAL_FLOW_RAD (..) => OPTICAL_FLOW_RAD_DATA :: ID , Self :: VISION_SPEED_ESTIMATE (..) => VISION_SPEED_ESTIMATE_DATA :: ID , Self :: TERRAIN_REPORT (..) => TERRAIN_REPORT_DATA :: ID , Self :: V2_EXTENSION (..) => V2_EXTENSION_DATA :: ID , Self :: CAN_FRAME (..) => CAN_FRAME_DATA :: ID , Self :: REQUEST_EVENT (..) => REQUEST_EVENT_DATA :: ID , Self :: OSD_PARAM_CONFIG (..) => OSD_PARAM_CONFIG_DATA :: ID , Self :: AUTOPILOT_STATE_FOR_GIMBAL_DEVICE (..) => AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: ID , Self :: ATTITUDE (..) => ATTITUDE_DATA :: ID , Self :: UAVCAN_NODE_INFO (..) => UAVCAN_NODE_INFO_DATA :: ID , Self :: HIL_OPTICAL_FLOW (..) => HIL_OPTICAL_FLOW_DATA :: ID , Self :: MEMORY_VECT (..) => MEMORY_VECT_DATA :: ID , Self :: SAFETY_SET_ALLOWED_AREA (..) => SAFETY_SET_ALLOWED_AREA_DATA :: ID , Self :: GIMBAL_MANAGER_STATUS (..) => GIMBAL_MANAGER_STATUS_DATA :: ID , Self :: GLOBAL_VISION_POSITION_ESTIMATE (..) => GLOBAL_VISION_POSITION_ESTIMATE_DATA :: ID , Self :: AUTH_KEY (..) => AUTH_KEY_DATA :: ID , Self :: COMMAND_ACK (..) => COMMAND_ACK_DATA :: ID , Self :: DIGICAM_CONTROL (..) => DIGICAM_CONTROL_DATA :: ID , Self :: FENCE_FETCH_POINT (..) => FENCE_FETCH_POINT_DATA :: ID , Self :: ESC_TELEMETRY_9_TO_12 (..) => ESC_TELEMETRY_9_TO_12_DATA :: ID , Self :: SERIAL_CONTROL (..) => SERIAL_CONTROL_DATA :: ID , Self :: MCU_STATUS (..) => MCU_STATUS_DATA :: ID , Self :: COMMAND_INT (..) => COMMAND_INT_DATA :: ID , Self :: RAW_RPM (..) => RAW_RPM_DATA :: ID , Self :: OPEN_DRONE_ID_OPERATOR_ID (..) => OPEN_DRONE_ID_OPERATOR_ID_DATA :: ID , Self :: DATA_STREAM (..) => DATA_STREAM_DATA :: ID , Self :: MISSION_COUNT (..) => MISSION_COUNT_DATA :: ID , Self :: SCALED_IMU3 (..) => SCALED_IMU3_DATA :: ID , Self :: DEBUG_FLOAT_ARRAY (..) => DEBUG_FLOAT_ARRAY_DATA :: ID , Self :: GIMBAL_MANAGER_INFORMATION (..) => GIMBAL_MANAGER_INFORMATION_DATA :: ID , Self :: HIGH_LATENCY2 (..) => HIGH_LATENCY2_DATA :: ID , Self :: PLAY_TUNE (..) => PLAY_TUNE_DATA :: ID , Self :: AOA_SSA (..) => AOA_SSA_DATA :: ID , Self :: LOCAL_POSITION_NED_COV (..) => LOCAL_POSITION_NED_COV_DATA :: ID , Self :: MISSION_ACK (..) => MISSION_ACK_DATA :: ID , Self :: LIMITS_STATUS (..) => LIMITS_STATUS_DATA :: ID , Self :: COMPONENT_INFORMATION (..) => COMPONENT_INFORMATION_DATA :: ID , Self :: GIMBAL_TORQUE_CMD_REPORT (..) => GIMBAL_TORQUE_CMD_REPORT_DATA :: ID , Self :: MOUNT_STATUS (..) => MOUNT_STATUS_DATA :: ID , Self :: SIM_STATE (..) => SIM_STATE_DATA :: ID , Self :: MISSION_SET_CURRENT (..) => MISSION_SET_CURRENT_DATA :: ID , Self :: PARAM_EXT_SET (..) => PARAM_EXT_SET_DATA :: ID , Self :: ISBD_LINK_STATUS (..) => ISBD_LINK_STATUS_DATA :: ID , Self :: RC_CHANNELS (..) => RC_CHANNELS_DATA :: ID , Self :: CUBEPILOT_FIRMWARE_UPDATE_RESP (..) => CUBEPILOT_FIRMWARE_UPDATE_RESP_DATA :: ID , Self :: SIMSTATE (..) => SIMSTATE_DATA :: ID , Self :: CAMERA_TRACKING_GEO_STATUS (..) => CAMERA_TRACKING_GEO_STATUS_DATA :: ID , Self :: ESC_STATUS (..) => ESC_STATUS_DATA :: ID , Self :: CUBEPILOT_RAW_RC (..) => CUBEPILOT_RAW_RC_DATA :: ID , Self :: HIGHRES_IMU (..) => HIGHRES_IMU_DATA :: ID , Self :: NAV_CONTROLLER_OUTPUT (..) => NAV_CONTROLLER_OUTPUT_DATA :: ID , Self :: OPEN_DRONE_ID_AUTHENTICATION (..) => OPEN_DRONE_ID_AUTHENTICATION_DATA :: ID , Self :: LOGGING_DATA_ACKED (..) => LOGGING_DATA_ACKED_DATA :: ID , Self :: ICAROUS_HEARTBEAT (..) => ICAROUS_HEARTBEAT_DATA :: ID , Self :: FENCE_POINT (..) => FENCE_POINT_DATA :: ID , Self :: OSD_PARAM_SHOW_CONFIG_REPLY (..) => OSD_PARAM_SHOW_CONFIG_REPLY_DATA :: ID , Self :: ATTITUDE_TARGET (..) => ATTITUDE_TARGET_DATA :: ID , Self :: LOG_REQUEST_DATA (..) => LOG_REQUEST_DATA_DATA :: ID , Self :: GIMBAL_REPORT (..) => GIMBAL_REPORT_DATA :: ID , Self :: PARAM_EXT_VALUE (..) => PARAM_EXT_VALUE_DATA :: ID , Self :: SERVO_OUTPUT_RAW (..) => SERVO_OUTPUT_RAW_DATA :: ID , Self :: ESC_INFO (..) => ESC_INFO_DATA :: ID , Self :: OPEN_DRONE_ID_SYSTEM (..) => OPEN_DRONE_ID_SYSTEM_DATA :: ID , Self :: UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT (..) => UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: ID , Self :: HIGH_LATENCY (..) => HIGH_LATENCY_DATA :: ID , Self :: PID_TUNING (..) => PID_TUNING_DATA :: ID , Self :: RANGEFINDER (..) => RANGEFINDER_DATA :: ID , Self :: GIMBAL_DEVICE_SET_ATTITUDE (..) => GIMBAL_DEVICE_SET_ATTITUDE_DATA :: ID , Self :: VISION_POSITION_DELTA (..) => VISION_POSITION_DELTA_DATA :: ID , Self :: CAMERA_FEEDBACK (..) => CAMERA_FEEDBACK_DATA :: ID , Self :: BUTTON_CHANGE (..) => BUTTON_CHANGE_DATA :: ID , Self :: DEEPSTALL (..) => DEEPSTALL_DATA :: ID , Self :: ONBOARD_COMPUTER_STATUS (..) => ONBOARD_COMPUTER_STATUS_DATA :: ID , Self :: GOPRO_GET_RESPONSE (..) => GOPRO_GET_RESPONSE_DATA :: ID , Self :: GIMBAL_DEVICE_ATTITUDE_STATUS (..) => GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: ID , Self :: PARAM_EXT_REQUEST_LIST (..) => PARAM_EXT_REQUEST_LIST_DATA :: ID , Self :: OSD_PARAM_CONFIG_REPLY (..) => OSD_PARAM_CONFIG_REPLY_DATA :: ID , Self :: HIL_STATE_QUATERNION (..) => HIL_STATE_QUATERNION_DATA :: ID , Self :: CAMERA_SETTINGS (..) => CAMERA_SETTINGS_DATA :: ID , Self :: CURRENT_EVENT_SEQUENCE (..) => CURRENT_EVENT_SEQUENCE_DATA :: ID , Self :: RESOURCE_REQUEST (..) => RESOURCE_REQUEST_DATA :: ID , Self :: LOG_DATA (..) => LOG_DATA_DATA :: ID , Self :: ATTITUDE_QUATERNION_COV (..) => ATTITUDE_QUATERNION_COV_DATA :: ID , Self :: TRAJECTORY_REPRESENTATION_BEZIER (..) => TRAJECTORY_REPRESENTATION_BEZIER_DATA :: ID , Self :: SAFETY_ALLOWED_AREA (..) => SAFETY_ALLOWED_AREA_DATA :: ID , Self :: STATUSTEXT (..) => STATUSTEXT_DATA :: ID , Self :: RADIO (..) => RADIO_DATA :: ID , Self :: CELLULAR_STATUS (..) => CELLULAR_STATUS_DATA :: ID , Self :: DEVICE_OP_READ (..) => DEVICE_OP_READ_DATA :: ID , Self :: WIFI_CONFIG_AP (..) => WIFI_CONFIG_AP_DATA :: ID , Self :: GENERATOR_STATUS (..) => GENERATOR_STATUS_DATA :: ID , Self :: NAMED_VALUE_INT (..) => NAMED_VALUE_INT_DATA :: ID , Self :: HIL_CONTROLS (..) => HIL_CONTROLS_DATA :: ID , Self :: AUTOPILOT_VERSION (..) => AUTOPILOT_VERSION_DATA :: ID , Self :: AP_ADC (..) => AP_ADC_DATA :: ID , Self :: HIL_STATE (..) => HIL_STATE_DATA :: ID , Self :: PARAM_MAP_RC (..) => PARAM_MAP_RC_DATA :: ID , Self :: MAG_CAL_PROGRESS (..) => MAG_CAL_PROGRESS_DATA :: ID , Self :: GIMBAL_CONTROL (..) => GIMBAL_CONTROL_DATA :: ID , Self :: DISTANCE_SENSOR (..) => DISTANCE_SENSOR_DATA :: ID , Self :: SYSTEM_TIME (..) => SYSTEM_TIME_DATA :: ID , Self :: COMMAND_LONG (..) => COMMAND_LONG_DATA :: ID , Self :: GPS_INJECT_DATA (..) => GPS_INJECT_DATA_DATA :: ID , Self :: OPTICAL_FLOW (..) => OPTICAL_FLOW_DATA :: ID , Self :: GOPRO_HEARTBEAT (..) => GOPRO_HEARTBEAT_DATA :: ID , Self :: MAG_CAL_REPORT (..) => MAG_CAL_REPORT_DATA :: ID , Self :: MESSAGE_INTERVAL (..) => MESSAGE_INTERVAL_DATA :: ID , Self :: WINCH_STATUS (..) => WINCH_STATUS_DATA :: ID , Self :: GPS_GLOBAL_ORIGIN (..) => GPS_GLOBAL_ORIGIN_DATA :: ID , Self :: MOUNT_ORIENTATION (..) => MOUNT_ORIENTATION_DATA :: ID , Self :: ODOMETRY (..) => ODOMETRY_DATA :: ID , Self :: SETUP_SIGNING (..) => SETUP_SIGNING_DATA :: ID , Self :: LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET (..) => LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: ID , Self :: MISSION_CLEAR_ALL (..) => MISSION_CLEAR_ALL_DATA :: ID , Self :: OPEN_DRONE_ID_MESSAGE_PACK (..) => OPEN_DRONE_ID_MESSAGE_PACK_DATA :: ID , Self :: DATA64 (..) => DATA64_DATA :: ID , Self :: REMOTE_LOG_BLOCK_STATUS (..) => REMOTE_LOG_BLOCK_STATUS_DATA :: ID , Self :: GOPRO_SET_REQUEST (..) => GOPRO_SET_REQUEST_DATA :: ID , Self :: SCALED_PRESSURE3 (..) => SCALED_PRESSURE3_DATA :: ID , Self :: REQUEST_DATA_STREAM (..) => REQUEST_DATA_STREAM_DATA :: ID , Self :: LOG_REQUEST_END (..) => LOG_REQUEST_END_DATA :: ID , Self :: STORAGE_INFORMATION (..) => STORAGE_INFORMATION_DATA :: ID , Self :: HIL_SENSOR (..) => HIL_SENSOR_DATA :: ID , Self :: AIS_VESSEL (..) => AIS_VESSEL_DATA :: ID , Self :: CUBEPILOT_FIRMWARE_UPDATE_START (..) => CUBEPILOT_FIRMWARE_UPDATE_START_DATA :: ID , Self :: BATTERY2 (..) => BATTERY2_DATA :: ID , Self :: GLOBAL_POSITION_INT (..) => GLOBAL_POSITION_INT_DATA :: ID , Self :: RC_CHANNELS_SCALED (..) => RC_CHANNELS_SCALED_DATA :: ID , Self :: COLLISION (..) => COLLISION_DATA :: ID , Self :: WATER_DEPTH (..) => WATER_DEPTH_DATA :: ID , Self :: ESC_TELEMETRY_5_TO_8 (..) => ESC_TELEMETRY_5_TO_8_DATA :: ID , Self :: HERELINK_VIDEO_STREAM_INFORMATION (..) => HERELINK_VIDEO_STREAM_INFORMATION_DATA :: ID , Self :: LOG_ERASE (..) => LOG_ERASE_DATA :: ID , Self :: SET_HOME_POSITION (..) => SET_HOME_POSITION_DATA :: ID , Self :: CAMERA_FOV_STATUS (..) => CAMERA_FOV_STATUS_DATA :: ID , Self :: SCALED_PRESSURE (..) => SCALED_PRESSURE_DATA :: ID , Self :: PARAM_REQUEST_READ (..) => PARAM_REQUEST_READ_DATA :: ID , Self :: HIL_RC_INPUTS_RAW (..) => HIL_RC_INPUTS_RAW_DATA :: ID , Self :: SET_MODE (..) => SET_MODE_DATA :: ID , Self :: GIMBAL_MANAGER_SET_ATTITUDE (..) => GIMBAL_MANAGER_SET_ATTITUDE_DATA :: ID , Self :: CAMERA_INFORMATION (..) => CAMERA_INFORMATION_DATA :: ID , Self :: GLOBAL_POSITION_INT_COV (..) => GLOBAL_POSITION_INT_COV_DATA :: ID , Self :: GPS_STATUS (..) => GPS_STATUS_DATA :: ID , Self :: RESPONSE_EVENT_ERROR (..) => RESPONSE_EVENT_ERROR_DATA :: ID , } } fn message_id_from_name (name : & str) -> Result < u32 , & 'static str > { match name { HEARTBEAT_DATA :: NAME => Ok (HEARTBEAT_DATA :: ID) , MISSION_ITEM_REACHED_DATA :: NAME => Ok (MISSION_ITEM_REACHED_DATA :: ID) , OSD_PARAM_SHOW_CONFIG_DATA :: NAME => Ok (OSD_PARAM_SHOW_CONFIG_DATA :: ID) , TIMESYNC_DATA :: NAME => Ok (TIMESYNC_DATA :: ID) , GOPRO_GET_REQUEST_DATA :: NAME => Ok (GOPRO_GET_REQUEST_DATA :: ID) , TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: NAME => Ok (TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: ID) , POSITION_TARGET_LOCAL_NED_DATA :: NAME => Ok (POSITION_TARGET_LOCAL_NED_DATA :: ID) , LOCAL_POSITION_NED_DATA :: NAME => Ok (LOCAL_POSITION_NED_DATA :: ID) , TIME_ESTIMATE_TO_TARGET_DATA :: NAME => Ok (TIME_ESTIMATE_TO_TARGET_DATA :: ID) , SUPPORTED_TUNES_DATA :: NAME => Ok (SUPPORTED_TUNES_DATA :: ID) , VFR_HUD_DATA :: NAME => Ok (VFR_HUD_DATA :: ID) , POSITION_TARGET_GLOBAL_INT_DATA :: NAME => Ok (POSITION_TARGET_GLOBAL_INT_DATA :: ID) , EFI_STATUS_DATA :: NAME => Ok (EFI_STATUS_DATA :: ID) , ALTITUDE_DATA :: NAME => Ok (ALTITUDE_DATA :: ID) , RAW_PRESSURE_DATA :: NAME => Ok (RAW_PRESSURE_DATA :: ID) , OBSTACLE_DISTANCE_DATA :: NAME => Ok (OBSTACLE_DISTANCE_DATA :: ID) , LINK_NODE_STATUS_DATA :: NAME => Ok (LINK_NODE_STATUS_DATA :: ID) , AIRSPEED_AUTOCAL_DATA :: NAME => Ok (AIRSPEED_AUTOCAL_DATA :: ID) , SET_GPS_GLOBAL_ORIGIN_DATA :: NAME => Ok (SET_GPS_GLOBAL_ORIGIN_DATA :: ID) , RADIO_STATUS_DATA :: NAME => Ok (RADIO_STATUS_DATA :: ID) , LOGGING_DATA_DATA :: NAME => Ok (LOGGING_DATA_DATA :: ID) , HOME_POSITION_DATA :: NAME => Ok (HOME_POSITION_DATA :: ID) , WHEEL_DISTANCE_DATA :: NAME => Ok (WHEEL_DISTANCE_DATA :: ID) , GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: NAME => Ok (GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: ID) , FILE_TRANSFER_PROTOCOL_DATA :: NAME => Ok (FILE_TRANSFER_PROTOCOL_DATA :: ID) , MISSION_REQUEST_PARTIAL_LIST_DATA :: NAME => Ok (MISSION_REQUEST_PARTIAL_LIST_DATA :: ID) , RC_CHANNELS_RAW_DATA :: NAME => Ok (RC_CHANNELS_RAW_DATA :: ID) , ACTUATOR_CONTROL_TARGET_DATA :: NAME => Ok (ACTUATOR_CONTROL_TARGET_DATA :: ID) , FOLLOW_TARGET_DATA :: NAME => Ok (FOLLOW_TARGET_DATA :: ID) , CANFD_FRAME_DATA :: NAME => Ok (CANFD_FRAME_DATA :: ID) , VIDEO_STREAM_STATUS_DATA :: NAME => Ok (VIDEO_STREAM_STATUS_DATA :: ID) , PARAM_SET_DATA :: NAME => Ok (PARAM_SET_DATA :: ID) , SYS_STATUS_DATA :: NAME => Ok (SYS_STATUS_DATA :: ID) , ADSB_VEHICLE_DATA :: NAME => Ok (ADSB_VEHICLE_DATA :: ID) , WIND_COV_DATA :: NAME => Ok (WIND_COV_DATA :: ID) , ESTIMATOR_STATUS_DATA :: NAME => Ok (ESTIMATOR_STATUS_DATA :: ID) , OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: NAME => Ok (OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: ID) , UAVIONIX_ADSB_OUT_CFG_DATA :: NAME => Ok (UAVIONIX_ADSB_OUT_CFG_DATA :: ID) , FENCE_STATUS_DATA :: NAME => Ok (FENCE_STATUS_DATA :: ID) , AUTOPILOT_VERSION_REQUEST_DATA :: NAME => Ok (AUTOPILOT_VERSION_REQUEST_DATA :: ID) , DATA16_DATA :: NAME => Ok (DATA16_DATA :: ID) , MANUAL_SETPOINT_DATA :: NAME => Ok (MANUAL_SETPOINT_DATA :: ID) , POWER_STATUS_DATA :: NAME => Ok (POWER_STATUS_DATA :: ID) , SET_ACTUATOR_CONTROL_TARGET_DATA :: NAME => Ok (SET_ACTUATOR_CONTROL_TARGET_DATA :: ID) , HWSTATUS_DATA :: NAME => Ok (HWSTATUS_DATA :: ID) , SET_POSITION_TARGET_LOCAL_NED_DATA :: NAME => Ok (SET_POSITION_TARGET_LOCAL_NED_DATA :: ID) , CAMERA_IMAGE_CAPTURED_DATA :: NAME => Ok (CAMERA_IMAGE_CAPTURED_DATA :: ID) , CAMERA_STATUS_DATA :: NAME => Ok (CAMERA_STATUS_DATA :: ID) , SCALED_IMU2_DATA :: NAME => Ok (SCALED_IMU2_DATA :: ID) , PARAM_VALUE_DATA :: NAME => Ok (PARAM_VALUE_DATA :: ID) , TERRAIN_REQUEST_DATA :: NAME => Ok (TERRAIN_REQUEST_DATA :: ID) , WIND_DATA :: NAME => Ok (WIND_DATA :: ID) , DATA_TRANSMISSION_HANDSHAKE_DATA :: NAME => Ok (DATA_TRANSMISSION_HANDSHAKE_DATA :: ID) , TUNNEL_DATA :: NAME => Ok (TUNNEL_DATA :: ID) , HIL_ACTUATOR_CONTROLS_DATA :: NAME => Ok (HIL_ACTUATOR_CONTROLS_DATA :: ID) , UAVCAN_NODE_STATUS_DATA :: NAME => Ok (UAVCAN_NODE_STATUS_DATA :: ID) , GPS_RTK_DATA :: NAME => Ok (GPS_RTK_DATA :: ID) , HYGROMETER_SENSOR_DATA :: NAME => Ok (HYGROMETER_SENSOR_DATA :: ID) , COMPASSMOT_STATUS_DATA :: NAME => Ok (COMPASSMOT_STATUS_DATA :: ID) , EXTENDED_SYS_STATE_DATA :: NAME => Ok (EXTENDED_SYS_STATE_DATA :: ID) , GIMBAL_DEVICE_INFORMATION_DATA :: NAME => Ok (GIMBAL_DEVICE_INFORMATION_DATA :: ID) , PLAY_TUNE_V2_DATA :: NAME => Ok (PLAY_TUNE_V2_DATA :: ID) , OPEN_DRONE_ID_ARM_STATUS_DATA :: NAME => Ok (OPEN_DRONE_ID_ARM_STATUS_DATA :: ID) , SCALED_PRESSURE2_DATA :: NAME => Ok (SCALED_PRESSURE2_DATA :: ID) , DATA96_DATA :: NAME => Ok (DATA96_DATA :: ID) , FLIGHT_INFORMATION_DATA :: NAME => Ok (FLIGHT_INFORMATION_DATA :: ID) , REMOTE_LOG_DATA_BLOCK_DATA :: NAME => Ok (REMOTE_LOG_DATA_BLOCK_DATA :: ID) , ACTUATOR_OUTPUT_STATUS_DATA :: NAME => Ok (ACTUATOR_OUTPUT_STATUS_DATA :: ID) , AHRS_DATA :: NAME => Ok (AHRS_DATA :: ID) , DEBUG_VECT_DATA :: NAME => Ok (DEBUG_VECT_DATA :: ID) , UTM_GLOBAL_POSITION_DATA :: NAME => Ok (UTM_GLOBAL_POSITION_DATA :: ID) , MISSION_ITEM_INT_DATA :: NAME => Ok (MISSION_ITEM_INT_DATA :: ID) , CAN_FILTER_MODIFY_DATA :: NAME => Ok (CAN_FILTER_MODIFY_DATA :: ID) , DEVICE_OP_READ_REPLY_DATA :: NAME => Ok (DEVICE_OP_READ_REPLY_DATA :: ID) , ADAP_TUNING_DATA :: NAME => Ok (ADAP_TUNING_DATA :: ID) , SET_POSITION_TARGET_GLOBAL_INT_DATA :: NAME => Ok (SET_POSITION_TARGET_GLOBAL_INT_DATA :: ID) , PROTOCOL_VERSION_DATA :: NAME => Ok (PROTOCOL_VERSION_DATA :: ID) , HIL_GPS_DATA :: NAME => Ok (HIL_GPS_DATA :: ID) , SCALED_IMU_DATA :: NAME => Ok (SCALED_IMU_DATA :: ID) , UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: NAME => Ok (UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: ID) , COMMAND_CANCEL_DATA :: NAME => Ok (COMMAND_CANCEL_DATA :: ID) , MOUNT_CONFIGURE_DATA :: NAME => Ok (MOUNT_CONFIGURE_DATA :: ID) , LOGGING_ACK_DATA :: NAME => Ok (LOGGING_ACK_DATA :: ID) , ATT_POS_MOCAP_DATA :: NAME => Ok (ATT_POS_MOCAP_DATA :: ID) , PARAM_EXT_REQUEST_READ_DATA :: NAME => Ok (PARAM_EXT_REQUEST_READ_DATA :: ID) , CAMERA_TRACKING_IMAGE_STATUS_DATA :: NAME => Ok (CAMERA_TRACKING_IMAGE_STATUS_DATA :: ID) , EKF_STATUS_REPORT_DATA :: NAME => Ok (EKF_STATUS_REPORT_DATA :: ID) , OBSTACLE_DISTANCE_3D_DATA :: NAME => Ok (OBSTACLE_DISTANCE_3D_DATA :: ID) , TERRAIN_DATA_DATA :: NAME => Ok (TERRAIN_DATA_DATA :: ID) , PARAM_REQUEST_LIST_DATA :: NAME => Ok (PARAM_REQUEST_LIST_DATA :: ID) , RPM_DATA :: NAME => Ok (RPM_DATA :: ID) , MISSION_REQUEST_INT_DATA :: NAME => Ok (MISSION_REQUEST_INT_DATA :: ID) , CELLULAR_CONFIG_DATA :: NAME => Ok (CELLULAR_CONFIG_DATA :: ID) , SENSOR_OFFSETS_DATA :: NAME => Ok (SENSOR_OFFSETS_DATA :: ID) , AHRS3_DATA :: NAME => Ok (AHRS3_DATA :: ID) , LOG_REQUEST_LIST_DATA :: NAME => Ok (LOG_REQUEST_LIST_DATA :: ID) , DIGICAM_CONFIGURE_DATA :: NAME => Ok (DIGICAM_CONFIGURE_DATA :: ID) , GPS2_RAW_DATA :: NAME => Ok (GPS2_RAW_DATA :: ID) , OPEN_DRONE_ID_SELF_ID_DATA :: NAME => Ok (OPEN_DRONE_ID_SELF_ID_DATA :: ID) , AHRS2_DATA :: NAME => Ok (AHRS2_DATA :: ID) , VICON_POSITION_ESTIMATE_DATA :: NAME => Ok (VICON_POSITION_ESTIMATE_DATA :: ID) , CHANGE_OPERATOR_CONTROL_DATA :: NAME => Ok (CHANGE_OPERATOR_CONTROL_DATA :: ID) , RC_CHANNELS_OVERRIDE_DATA :: NAME => Ok (RC_CHANNELS_OVERRIDE_DATA :: ID) , MISSION_WRITE_PARTIAL_LIST_DATA :: NAME => Ok (MISSION_WRITE_PARTIAL_LIST_DATA :: ID) , CAMERA_TRIGGER_DATA :: NAME => Ok (CAMERA_TRIGGER_DATA :: ID) , MISSION_REQUEST_LIST_DATA :: NAME => Ok (MISSION_REQUEST_LIST_DATA :: ID) , DATA32_DATA :: NAME => Ok (DATA32_DATA :: ID) , CAMERA_CAPTURE_STATUS_DATA :: NAME => Ok (CAMERA_CAPTURE_STATUS_DATA :: ID) , TERRAIN_CHECK_DATA :: NAME => Ok (TERRAIN_CHECK_DATA :: ID) , ICAROUS_KINEMATIC_BANDS_DATA :: NAME => Ok (ICAROUS_KINEMATIC_BANDS_DATA :: ID) , CHANGE_OPERATOR_CONTROL_ACK_DATA :: NAME => Ok (CHANGE_OPERATOR_CONTROL_ACK_DATA :: ID) , ORBIT_EXECUTION_STATUS_DATA :: NAME => Ok (ORBIT_EXECUTION_STATUS_DATA :: ID) , DEVICE_OP_WRITE_DATA :: NAME => Ok (DEVICE_OP_WRITE_DATA :: ID) , OPEN_DRONE_ID_LOCATION_DATA :: NAME => Ok (OPEN_DRONE_ID_LOCATION_DATA :: ID) , LANDING_TARGET_DATA :: NAME => Ok (LANDING_TARGET_DATA :: ID) , BATTERY_STATUS_DATA :: NAME => Ok (BATTERY_STATUS_DATA :: ID) , GOPRO_SET_RESPONSE_DATA :: NAME => Ok (GOPRO_SET_RESPONSE_DATA :: ID) , EVENT_DATA :: NAME => Ok (EVENT_DATA :: ID) , GIMBAL_MANAGER_SET_PITCHYAW_DATA :: NAME => Ok (GIMBAL_MANAGER_SET_PITCHYAW_DATA :: ID) , SMART_BATTERY_INFO_DATA :: NAME => Ok (SMART_BATTERY_INFO_DATA :: ID) , ATTITUDE_QUATERNION_DATA :: NAME => Ok (ATTITUDE_QUATERNION_DATA :: ID) , SET_ATTITUDE_TARGET_DATA :: NAME => Ok (SET_ATTITUDE_TARGET_DATA :: ID) , MANUAL_CONTROL_DATA :: NAME => Ok (MANUAL_CONTROL_DATA :: ID) , RALLY_FETCH_POINT_DATA :: NAME => Ok (RALLY_FETCH_POINT_DATA :: ID) , VISION_POSITION_ESTIMATE_DATA :: NAME => Ok (VISION_POSITION_ESTIMATE_DATA :: ID) , RALLY_POINT_DATA :: NAME => Ok (RALLY_POINT_DATA :: ID) , VIDEO_STREAM_INFORMATION_DATA :: NAME => Ok (VIDEO_STREAM_INFORMATION_DATA :: ID) , OPEN_DRONE_ID_BASIC_ID_DATA :: NAME => Ok (OPEN_DRONE_ID_BASIC_ID_DATA :: ID) , ENCAPSULATED_DATA_DATA :: NAME => Ok (ENCAPSULATED_DATA_DATA :: ID) , DEVICE_OP_WRITE_REPLY_DATA :: NAME => Ok (DEVICE_OP_WRITE_REPLY_DATA :: ID) , PING_DATA :: NAME => Ok (PING_DATA :: ID) , SET_MAG_OFFSETS_DATA :: NAME => Ok (SET_MAG_OFFSETS_DATA :: ID) , GPS_INPUT_DATA :: NAME => Ok (GPS_INPUT_DATA :: ID) , LOG_ENTRY_DATA :: NAME => Ok (LOG_ENTRY_DATA :: ID) , RAW_IMU_DATA :: NAME => Ok (RAW_IMU_DATA :: ID) , GPS_RAW_INT_DATA :: NAME => Ok (GPS_RAW_INT_DATA :: ID) , CONTROL_SYSTEM_STATE_DATA :: NAME => Ok (CONTROL_SYSTEM_STATE_DATA :: ID) , DEBUG_DATA :: NAME => Ok (DEBUG_DATA :: ID) , ESC_TELEMETRY_1_TO_4_DATA :: NAME => Ok (ESC_TELEMETRY_1_TO_4_DATA :: ID) , MOUNT_CONTROL_DATA :: NAME => Ok (MOUNT_CONTROL_DATA :: ID) , COMPONENT_METADATA_DATA :: NAME => Ok (COMPONENT_METADATA_DATA :: ID) , NAMED_VALUE_FLOAT_DATA :: NAME => Ok (NAMED_VALUE_FLOAT_DATA :: ID) , GPS2_RTK_DATA :: NAME => Ok (GPS2_RTK_DATA :: ID) , VIBRATION_DATA :: NAME => Ok (VIBRATION_DATA :: ID) , MISSION_CURRENT_DATA :: NAME => Ok (MISSION_CURRENT_DATA :: ID) , HERELINK_TELEM_DATA :: NAME => Ok (HERELINK_TELEM_DATA :: ID) , PARAM_EXT_ACK_DATA :: NAME => Ok (PARAM_EXT_ACK_DATA :: ID) , MISSION_REQUEST_DATA :: NAME => Ok (MISSION_REQUEST_DATA :: ID) , MEMINFO_DATA :: NAME => Ok (MEMINFO_DATA :: ID) , LED_CONTROL_DATA :: NAME => Ok (LED_CONTROL_DATA :: ID) , MISSION_ITEM_DATA :: NAME => Ok (MISSION_ITEM_DATA :: ID) , GPS_RTCM_DATA_DATA :: NAME => Ok (GPS_RTCM_DATA_DATA :: ID) , OPTICAL_FLOW_RAD_DATA :: NAME => Ok (OPTICAL_FLOW_RAD_DATA :: ID) , VISION_SPEED_ESTIMATE_DATA :: NAME => Ok (VISION_SPEED_ESTIMATE_DATA :: ID) , TERRAIN_REPORT_DATA :: NAME => Ok (TERRAIN_REPORT_DATA :: ID) , V2_EXTENSION_DATA :: NAME => Ok (V2_EXTENSION_DATA :: ID) , CAN_FRAME_DATA :: NAME => Ok (CAN_FRAME_DATA :: ID) , REQUEST_EVENT_DATA :: NAME => Ok (REQUEST_EVENT_DATA :: ID) , OSD_PARAM_CONFIG_DATA :: NAME => Ok (OSD_PARAM_CONFIG_DATA :: ID) , AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: NAME => Ok (AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: ID) , ATTITUDE_DATA :: NAME => Ok (ATTITUDE_DATA :: ID) , UAVCAN_NODE_INFO_DATA :: NAME => Ok (UAVCAN_NODE_INFO_DATA :: ID) , HIL_OPTICAL_FLOW_DATA :: NAME => Ok (HIL_OPTICAL_FLOW_DATA :: ID) , MEMORY_VECT_DATA :: NAME => Ok (MEMORY_VECT_DATA :: ID) , SAFETY_SET_ALLOWED_AREA_DATA :: NAME => Ok (SAFETY_SET_ALLOWED_AREA_DATA :: ID) , GIMBAL_MANAGER_STATUS_DATA :: NAME => Ok (GIMBAL_MANAGER_STATUS_DATA :: ID) , GLOBAL_VISION_POSITION_ESTIMATE_DATA :: NAME => Ok (GLOBAL_VISION_POSITION_ESTIMATE_DATA :: ID) , AUTH_KEY_DATA :: NAME => Ok (AUTH_KEY_DATA :: ID) , COMMAND_ACK_DATA :: NAME => Ok (COMMAND_ACK_DATA :: ID) , DIGICAM_CONTROL_DATA :: NAME => Ok (DIGICAM_CONTROL_DATA :: ID) , FENCE_FETCH_POINT_DATA :: NAME => Ok (FENCE_FETCH_POINT_DATA :: ID) , ESC_TELEMETRY_9_TO_12_DATA :: NAME => Ok (ESC_TELEMETRY_9_TO_12_DATA :: ID) , SERIAL_CONTROL_DATA :: NAME => Ok (SERIAL_CONTROL_DATA :: ID) , MCU_STATUS_DATA :: NAME => Ok (MCU_STATUS_DATA :: ID) , COMMAND_INT_DATA :: NAME => Ok (COMMAND_INT_DATA :: ID) , RAW_RPM_DATA :: NAME => Ok (RAW_RPM_DATA :: ID) , OPEN_DRONE_ID_OPERATOR_ID_DATA :: NAME => Ok (OPEN_DRONE_ID_OPERATOR_ID_DATA :: ID) , DATA_STREAM_DATA :: NAME => Ok (DATA_STREAM_DATA :: ID) , MISSION_COUNT_DATA :: NAME => Ok (MISSION_COUNT_DATA :: ID) , SCALED_IMU3_DATA :: NAME => Ok (SCALED_IMU3_DATA :: ID) , DEBUG_FLOAT_ARRAY_DATA :: NAME => Ok (DEBUG_FLOAT_ARRAY_DATA :: ID) , GIMBAL_MANAGER_INFORMATION_DATA :: NAME => Ok (GIMBAL_MANAGER_INFORMATION_DATA :: ID) , HIGH_LATENCY2_DATA :: NAME => Ok (HIGH_LATENCY2_DATA :: ID) , PLAY_TUNE_DATA :: NAME => Ok (PLAY_TUNE_DATA :: ID) , AOA_SSA_DATA :: NAME => Ok (AOA_SSA_DATA :: ID) , LOCAL_POSITION_NED_COV_DATA :: NAME => Ok (LOCAL_POSITION_NED_COV_DATA :: ID) , MISSION_ACK_DATA :: NAME => Ok (MISSION_ACK_DATA :: ID) , LIMITS_STATUS_DATA :: NAME => Ok (LIMITS_STATUS_DATA :: ID) , COMPONENT_INFORMATION_DATA :: NAME => Ok (COMPONENT_INFORMATION_DATA :: ID) , GIMBAL_TORQUE_CMD_REPORT_DATA :: NAME => Ok (GIMBAL_TORQUE_CMD_REPORT_DATA :: ID) , MOUNT_STATUS_DATA :: NAME => Ok (MOUNT_STATUS_DATA :: ID) , SIM_STATE_DATA :: NAME => Ok (SIM_STATE_DATA :: ID) , MISSION_SET_CURRENT_DATA :: NAME => Ok (MISSION_SET_CURRENT_DATA :: ID) , PARAM_EXT_SET_DATA :: NAME => Ok (PARAM_EXT_SET_DATA :: ID) , ISBD_LINK_STATUS_DATA :: NAME => Ok (ISBD_LINK_STATUS_DATA :: ID) , RC_CHANNELS_DATA :: NAME => Ok (RC_CHANNELS_DATA :: ID) , CUBEPILOT_FIRMWARE_UPDATE_RESP_DATA :: NAME => Ok (CUBEPILOT_FIRMWARE_UPDATE_RESP_DATA :: ID) , SIMSTATE_DATA :: NAME => Ok (SIMSTATE_DATA :: ID) , CAMERA_TRACKING_GEO_STATUS_DATA :: NAME => Ok (CAMERA_TRACKING_GEO_STATUS_DATA :: ID) , ESC_STATUS_DATA :: NAME => Ok (ESC_STATUS_DATA :: ID) , CUBEPILOT_RAW_RC_DATA :: NAME => Ok (CUBEPILOT_RAW_RC_DATA :: ID) , HIGHRES_IMU_DATA :: NAME => Ok (HIGHRES_IMU_DATA :: ID) , NAV_CONTROLLER_OUTPUT_DATA :: NAME => Ok (NAV_CONTROLLER_OUTPUT_DATA :: ID) , OPEN_DRONE_ID_AUTHENTICATION_DATA :: NAME => Ok (OPEN_DRONE_ID_AUTHENTICATION_DATA :: ID) , LOGGING_DATA_ACKED_DATA :: NAME => Ok (LOGGING_DATA_ACKED_DATA :: ID) , ICAROUS_HEARTBEAT_DATA :: NAME => Ok (ICAROUS_HEARTBEAT_DATA :: ID) , FENCE_POINT_DATA :: NAME => Ok (FENCE_POINT_DATA :: ID) , OSD_PARAM_SHOW_CONFIG_REPLY_DATA :: NAME => Ok (OSD_PARAM_SHOW_CONFIG_REPLY_DATA :: ID) , ATTITUDE_TARGET_DATA :: NAME => Ok (ATTITUDE_TARGET_DATA :: ID) , LOG_REQUEST_DATA_DATA :: NAME => Ok (LOG_REQUEST_DATA_DATA :: ID) , GIMBAL_REPORT_DATA :: NAME => Ok (GIMBAL_REPORT_DATA :: ID) , PARAM_EXT_VALUE_DATA :: NAME => Ok (PARAM_EXT_VALUE_DATA :: ID) , SERVO_OUTPUT_RAW_DATA :: NAME => Ok (SERVO_OUTPUT_RAW_DATA :: ID) , ESC_INFO_DATA :: NAME => Ok (ESC_INFO_DATA :: ID) , OPEN_DRONE_ID_SYSTEM_DATA :: NAME => Ok (OPEN_DRONE_ID_SYSTEM_DATA :: ID) , UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: NAME => Ok (UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: ID) , HIGH_LATENCY_DATA :: NAME => Ok (HIGH_LATENCY_DATA :: ID) , PID_TUNING_DATA :: NAME => Ok (PID_TUNING_DATA :: ID) , RANGEFINDER_DATA :: NAME => Ok (RANGEFINDER_DATA :: ID) , GIMBAL_DEVICE_SET_ATTITUDE_DATA :: NAME => Ok (GIMBAL_DEVICE_SET_ATTITUDE_DATA :: ID) , VISION_POSITION_DELTA_DATA :: NAME => Ok (VISION_POSITION_DELTA_DATA :: ID) , CAMERA_FEEDBACK_DATA :: NAME => Ok (CAMERA_FEEDBACK_DATA :: ID) , BUTTON_CHANGE_DATA :: NAME => Ok (BUTTON_CHANGE_DATA :: ID) , DEEPSTALL_DATA :: NAME => Ok (DEEPSTALL_DATA :: ID) , ONBOARD_COMPUTER_STATUS_DATA :: NAME => Ok (ONBOARD_COMPUTER_STATUS_DATA :: ID) , GOPRO_GET_RESPONSE_DATA :: NAME => Ok (GOPRO_GET_RESPONSE_DATA :: ID) , GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: NAME => Ok (GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: ID) , PARAM_EXT_REQUEST_LIST_DATA :: NAME => Ok (PARAM_EXT_REQUEST_LIST_DATA :: ID) , OSD_PARAM_CONFIG_REPLY_DATA :: NAME => Ok (OSD_PARAM_CONFIG_REPLY_DATA :: ID) , HIL_STATE_QUATERNION_DATA :: NAME => Ok (HIL_STATE_QUATERNION_DATA :: ID) , CAMERA_SETTINGS_DATA :: NAME => Ok (CAMERA_SETTINGS_DATA :: ID) , CURRENT_EVENT_SEQUENCE_DATA :: NAME => Ok (CURRENT_EVENT_SEQUENCE_DATA :: ID) , RESOURCE_REQUEST_DATA :: NAME => Ok (RESOURCE_REQUEST_DATA :: ID) , LOG_DATA_DATA :: NAME => Ok (LOG_DATA_DATA :: ID) , ATTITUDE_QUATERNION_COV_DATA :: NAME => Ok (ATTITUDE_QUATERNION_COV_DATA :: ID) , TRAJECTORY_REPRESENTATION_BEZIER_DATA :: NAME => Ok (TRAJECTORY_REPRESENTATION_BEZIER_DATA :: ID) , SAFETY_ALLOWED_AREA_DATA :: NAME => Ok (SAFETY_ALLOWED_AREA_DATA :: ID) , STATUSTEXT_DATA :: NAME => Ok (STATUSTEXT_DATA :: ID) , RADIO_DATA :: NAME => Ok (RADIO_DATA :: ID) , CELLULAR_STATUS_DATA :: NAME => Ok (CELLULAR_STATUS_DATA :: ID) , DEVICE_OP_READ_DATA :: NAME => Ok (DEVICE_OP_READ_DATA :: ID) , WIFI_CONFIG_AP_DATA :: NAME => Ok (WIFI_CONFIG_AP_DATA :: ID) , GENERATOR_STATUS_DATA :: NAME => Ok (GENERATOR_STATUS_DATA :: ID) , NAMED_VALUE_INT_DATA :: NAME => Ok (NAMED_VALUE_INT_DATA :: ID) , HIL_CONTROLS_DATA :: NAME => Ok (HIL_CONTROLS_DATA :: ID) , AUTOPILOT_VERSION_DATA :: NAME => Ok (AUTOPILOT_VERSION_DATA :: ID) , AP_ADC_DATA :: NAME => Ok (AP_ADC_DATA :: ID) , HIL_STATE_DATA :: NAME => Ok (HIL_STATE_DATA :: ID) , PARAM_MAP_RC_DATA :: NAME => Ok (PARAM_MAP_RC_DATA :: ID) , MAG_CAL_PROGRESS_DATA :: NAME => Ok (MAG_CAL_PROGRESS_DATA :: ID) , GIMBAL_CONTROL_DATA :: NAME => Ok (GIMBAL_CONTROL_DATA :: ID) , DISTANCE_SENSOR_DATA :: NAME => Ok (DISTANCE_SENSOR_DATA :: ID) , SYSTEM_TIME_DATA :: NAME => Ok (SYSTEM_TIME_DATA :: ID) , COMMAND_LONG_DATA :: NAME => Ok (COMMAND_LONG_DATA :: ID) , GPS_INJECT_DATA_DATA :: NAME => Ok (GPS_INJECT_DATA_DATA :: ID) , OPTICAL_FLOW_DATA :: NAME => Ok (OPTICAL_FLOW_DATA :: ID) , GOPRO_HEARTBEAT_DATA :: NAME => Ok (GOPRO_HEARTBEAT_DATA :: ID) , MAG_CAL_REPORT_DATA :: NAME => Ok (MAG_CAL_REPORT_DATA :: ID) , MESSAGE_INTERVAL_DATA :: NAME => Ok (MESSAGE_INTERVAL_DATA :: ID) , WINCH_STATUS_DATA :: NAME => Ok (WINCH_STATUS_DATA :: ID) , GPS_GLOBAL_ORIGIN_DATA :: NAME => Ok (GPS_GLOBAL_ORIGIN_DATA :: ID) , MOUNT_ORIENTATION_DATA :: NAME => Ok (MOUNT_ORIENTATION_DATA :: ID) , ODOMETRY_DATA :: NAME => Ok (ODOMETRY_DATA :: ID) , SETUP_SIGNING_DATA :: NAME => Ok (SETUP_SIGNING_DATA :: ID) , LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: NAME => Ok (LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: ID) , MISSION_CLEAR_ALL_DATA :: NAME => Ok (MISSION_CLEAR_ALL_DATA :: ID) , OPEN_DRONE_ID_MESSAGE_PACK_DATA :: NAME => Ok (OPEN_DRONE_ID_MESSAGE_PACK_DATA :: ID) , DATA64_DATA :: NAME => Ok (DATA64_DATA :: ID) , REMOTE_LOG_BLOCK_STATUS_DATA :: NAME => Ok (REMOTE_LOG_BLOCK_STATUS_DATA :: ID) , GOPRO_SET_REQUEST_DATA :: NAME => Ok (GOPRO_SET_REQUEST_DATA :: ID) , SCALED_PRESSURE3_DATA :: NAME => Ok (SCALED_PRESSURE3_DATA :: ID) , REQUEST_DATA_STREAM_DATA :: NAME => Ok (REQUEST_DATA_STREAM_DATA :: ID) , LOG_REQUEST_END_DATA :: NAME => Ok (LOG_REQUEST_END_DATA :: ID) , STORAGE_INFORMATION_DATA :: NAME => Ok (STORAGE_INFORMATION_DATA :: ID) , HIL_SENSOR_DATA :: NAME => Ok (HIL_SENSOR_DATA :: ID) , AIS_VESSEL_DATA :: NAME => Ok (AIS_VESSEL_DATA :: ID) , CUBEPILOT_FIRMWARE_UPDATE_START_DATA :: NAME => Ok (CUBEPILOT_FIRMWARE_UPDATE_START_DATA :: ID) , BATTERY2_DATA :: NAME => Ok (BATTERY2_DATA :: ID) , GLOBAL_POSITION_INT_DATA :: NAME => Ok (GLOBAL_POSITION_INT_DATA :: ID) , RC_CHANNELS_SCALED_DATA :: NAME => Ok (RC_CHANNELS_SCALED_DATA :: ID) , COLLISION_DATA :: NAME => Ok (COLLISION_DATA :: ID) , WATER_DEPTH_DATA :: NAME => Ok (WATER_DEPTH_DATA :: ID) , ESC_TELEMETRY_5_TO_8_DATA :: NAME => Ok (ESC_TELEMETRY_5_TO_8_DATA :: ID) , HERELINK_VIDEO_STREAM_INFORMATION_DATA :: NAME => Ok (HERELINK_VIDEO_STREAM_INFORMATION_DATA :: ID) , LOG_ERASE_DATA :: NAME => Ok (LOG_ERASE_DATA :: ID) , SET_HOME_POSITION_DATA :: NAME => Ok (SET_HOME_POSITION_DATA :: ID) , CAMERA_FOV_STATUS_DATA :: NAME => Ok (CAMERA_FOV_STATUS_DATA :: ID) , SCALED_PRESSURE_DATA :: NAME => Ok (SCALED_PRESSURE_DATA :: ID) , PARAM_REQUEST_READ_DATA :: NAME => Ok (PARAM_REQUEST_READ_DATA :: ID) , HIL_RC_INPUTS_RAW_DATA :: NAME => Ok (HIL_RC_INPUTS_RAW_DATA :: ID) , SET_MODE_DATA :: NAME => Ok (SET_MODE_DATA :: ID) , GIMBAL_MANAGER_SET_ATTITUDE_DATA :: NAME => Ok (GIMBAL_MANAGER_SET_ATTITUDE_DATA :: ID) , CAMERA_INFORMATION_DATA :: NAME => Ok (CAMERA_INFORMATION_DATA :: ID) , GLOBAL_POSITION_INT_COV_DATA :: NAME => Ok (GLOBAL_POSITION_INT_COV_DATA :: ID) , GPS_STATUS_DATA :: NAME => Ok (GPS_STATUS_DATA :: ID) , RESPONSE_EVENT_ERROR_DATA :: NAME => Ok (RESPONSE_EVENT_ERROR_DATA :: ID) , _ => { Err ("Invalid message name.") } } } fn default_message_from_id (id : u32) -> Result < Self , & 'static str > { match id { HEARTBEAT_DATA :: ID => Ok (Self :: HEARTBEAT (HEARTBEAT_DATA :: default ())) , MISSION_ITEM_REACHED_DATA :: ID => Ok (Self :: MISSION_ITEM_REACHED (MISSION_ITEM_REACHED_DATA :: default ())) , OSD_PARAM_SHOW_CONFIG_DATA :: ID => Ok (Self :: OSD_PARAM_SHOW_CONFIG (OSD_PARAM_SHOW_CONFIG_DATA :: default ())) , TIMESYNC_DATA :: ID => Ok (Self :: TIMESYNC (TIMESYNC_DATA :: default ())) , GOPRO_GET_REQUEST_DATA :: ID => Ok (Self :: GOPRO_GET_REQUEST (GOPRO_GET_REQUEST_DATA :: default ())) , TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: ID => Ok (Self :: TRAJECTORY_REPRESENTATION_WAYPOINTS (TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: default ())) , POSITION_TARGET_LOCAL_NED_DATA :: ID => Ok (Self :: POSITION_TARGET_LOCAL_NED (POSITION_TARGET_LOCAL_NED_DATA :: default ())) , LOCAL_POSITION_NED_DATA :: ID => Ok (Self :: LOCAL_POSITION_NED (LOCAL_POSITION_NED_DATA :: default ())) , TIME_ESTIMATE_TO_TARGET_DATA :: ID => Ok (Self :: TIME_ESTIMATE_TO_TARGET (TIME_ESTIMATE_TO_TARGET_DATA :: default ())) , SUPPORTED_TUNES_DATA :: ID => Ok (Self :: SUPPORTED_TUNES (SUPPORTED_TUNES_DATA :: default ())) , VFR_HUD_DATA :: ID => Ok (Self :: VFR_HUD (VFR_HUD_DATA :: default ())) , POSITION_TARGET_GLOBAL_INT_DATA :: ID => Ok (Self :: POSITION_TARGET_GLOBAL_INT (POSITION_TARGET_GLOBAL_INT_DATA :: default ())) , EFI_STATUS_DATA :: ID => Ok (Self :: EFI_STATUS (EFI_STATUS_DATA :: default ())) , ALTITUDE_DATA :: ID => Ok (Self :: ALTITUDE (ALTITUDE_DATA :: default ())) , RAW_PRESSURE_DATA :: ID => Ok (Self :: RAW_PRESSURE (RAW_PRESSURE_DATA :: default ())) , OBSTACLE_DISTANCE_DATA :: ID => Ok (Self :: OBSTACLE_DISTANCE (OBSTACLE_DISTANCE_DATA :: default ())) , LINK_NODE_STATUS_DATA :: ID => Ok (Self :: LINK_NODE_STATUS (LINK_NODE_STATUS_DATA :: default ())) , AIRSPEED_AUTOCAL_DATA :: ID => Ok (Self :: AIRSPEED_AUTOCAL (AIRSPEED_AUTOCAL_DATA :: default ())) , SET_GPS_GLOBAL_ORIGIN_DATA :: ID => Ok (Self :: SET_GPS_GLOBAL_ORIGIN (SET_GPS_GLOBAL_ORIGIN_DATA :: default ())) , RADIO_STATUS_DATA :: ID => Ok (Self :: RADIO_STATUS (RADIO_STATUS_DATA :: default ())) , LOGGING_DATA_DATA :: ID => Ok (Self :: LOGGING_DATA (LOGGING_DATA_DATA :: default ())) , HOME_POSITION_DATA :: ID => Ok (Self :: HOME_POSITION (HOME_POSITION_DATA :: default ())) , WHEEL_DISTANCE_DATA :: ID => Ok (Self :: WHEEL_DISTANCE (WHEEL_DISTANCE_DATA :: default ())) , GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: ID => Ok (Self :: GIMBAL_MANAGER_SET_MANUAL_CONTROL (GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: default ())) , FILE_TRANSFER_PROTOCOL_DATA :: ID => Ok (Self :: FILE_TRANSFER_PROTOCOL (FILE_TRANSFER_PROTOCOL_DATA :: default ())) , MISSION_REQUEST_PARTIAL_LIST_DATA :: ID => Ok (Self :: MISSION_REQUEST_PARTIAL_LIST (MISSION_REQUEST_PARTIAL_LIST_DATA :: default ())) , RC_CHANNELS_RAW_DATA :: ID => Ok (Self :: RC_CHANNELS_RAW (RC_CHANNELS_RAW_DATA :: default ())) , ACTUATOR_CONTROL_TARGET_DATA :: ID => Ok (Self :: ACTUATOR_CONTROL_TARGET (ACTUATOR_CONTROL_TARGET_DATA :: default ())) , FOLLOW_TARGET_DATA :: ID => Ok (Self :: FOLLOW_TARGET (FOLLOW_TARGET_DATA :: default ())) , CANFD_FRAME_DATA :: ID => Ok (Self :: CANFD_FRAME (CANFD_FRAME_DATA :: default ())) , VIDEO_STREAM_STATUS_DATA :: ID => Ok (Self :: VIDEO_STREAM_STATUS (VIDEO_STREAM_STATUS_DATA :: default ())) , PARAM_SET_DATA :: ID => Ok (Self :: PARAM_SET (PARAM_SET_DATA :: default ())) , SYS_STATUS_DATA :: ID => Ok (Self :: SYS_STATUS (SYS_STATUS_DATA :: default ())) , ADSB_VEHICLE_DATA :: ID => Ok (Self :: ADSB_VEHICLE (ADSB_VEHICLE_DATA :: default ())) , WIND_COV_DATA :: ID => Ok (Self :: WIND_COV (WIND_COV_DATA :: default ())) , ESTIMATOR_STATUS_DATA :: ID => Ok (Self :: ESTIMATOR_STATUS (ESTIMATOR_STATUS_DATA :: default ())) , OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_SYSTEM_UPDATE (OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: default ())) , UAVIONIX_ADSB_OUT_CFG_DATA :: ID => Ok (Self :: UAVIONIX_ADSB_OUT_CFG (UAVIONIX_ADSB_OUT_CFG_DATA :: default ())) , FENCE_STATUS_DATA :: ID => Ok (Self :: FENCE_STATUS (FENCE_STATUS_DATA :: default ())) , AUTOPILOT_VERSION_REQUEST_DATA :: ID => Ok (Self :: AUTOPILOT_VERSION_REQUEST (AUTOPILOT_VERSION_REQUEST_DATA :: default ())) , DATA16_DATA :: ID => Ok (Self :: DATA16 (DATA16_DATA :: default ())) , MANUAL_SETPOINT_DATA :: ID => Ok (Self :: MANUAL_SETPOINT (MANUAL_SETPOINT_DATA :: default ())) , POWER_STATUS_DATA :: ID => Ok (Self :: POWER_STATUS (POWER_STATUS_DATA :: default ())) , SET_ACTUATOR_CONTROL_TARGET_DATA :: ID => Ok (Self :: SET_ACTUATOR_CONTROL_TARGET (SET_ACTUATOR_CONTROL_TARGET_DATA :: default ())) , HWSTATUS_DATA :: ID => Ok (Self :: HWSTATUS (HWSTATUS_DATA :: default ())) , SET_POSITION_TARGET_LOCAL_NED_DATA :: ID => Ok (Self :: SET_POSITION_TARGET_LOCAL_NED (SET_POSITION_TARGET_LOCAL_NED_DATA :: default ())) , CAMERA_IMAGE_CAPTURED_DATA :: ID => Ok (Self :: CAMERA_IMAGE_CAPTURED (CAMERA_IMAGE_CAPTURED_DATA :: default ())) , CAMERA_STATUS_DATA :: ID => Ok (Self :: CAMERA_STATUS (CAMERA_STATUS_DATA :: default ())) , SCALED_IMU2_DATA :: ID => Ok (Self :: SCALED_IMU2 (SCALED_IMU2_DATA :: default ())) , PARAM_VALUE_DATA :: ID => Ok (Self :: PARAM_VALUE (PARAM_VALUE_DATA :: default ())) , TERRAIN_REQUEST_DATA :: ID => Ok (Self :: TERRAIN_REQUEST (TERRAIN_REQUEST_DATA :: default ())) , WIND_DATA :: ID => Ok (Self :: WIND (WIND_DATA :: default ())) , DATA_TRANSMISSION_HANDSHAKE_DATA :: ID => Ok (Self :: DATA_TRANSMISSION_HANDSHAKE (DATA_TRANSMISSION_HANDSHAKE_DATA :: default ())) , TUNNEL_DATA :: ID => Ok (Self :: TUNNEL (TUNNEL_DATA :: default ())) , HIL_ACTUATOR_CONTROLS_DATA :: ID => Ok (Self :: HIL_ACTUATOR_CONTROLS (HIL_ACTUATOR_CONTROLS_DATA :: default ())) , UAVCAN_NODE_STATUS_DATA :: ID => Ok (Self :: UAVCAN_NODE_STATUS (UAVCAN_NODE_STATUS_DATA :: default ())) , GPS_RTK_DATA :: ID => Ok (Self :: GPS_RTK (GPS_RTK_DATA :: default ())) , HYGROMETER_SENSOR_DATA :: ID => Ok (Self :: HYGROMETER_SENSOR (HYGROMETER_SENSOR_DATA :: default ())) , COMPASSMOT_STATUS_DATA :: ID => Ok (Self :: COMPASSMOT_STATUS (COMPASSMOT_STATUS_DATA :: default ())) , EXTENDED_SYS_STATE_DATA :: ID => Ok (Self :: EXTENDED_SYS_STATE (EXTENDED_SYS_STATE_DATA :: default ())) , GIMBAL_DEVICE_INFORMATION_DATA :: ID => Ok (Self :: GIMBAL_DEVICE_INFORMATION (GIMBAL_DEVICE_INFORMATION_DATA :: default ())) , PLAY_TUNE_V2_DATA :: ID => Ok (Self :: PLAY_TUNE_V2 (PLAY_TUNE_V2_DATA :: default ())) , OPEN_DRONE_ID_ARM_STATUS_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_ARM_STATUS (OPEN_DRONE_ID_ARM_STATUS_DATA :: default ())) , SCALED_PRESSURE2_DATA :: ID => Ok (Self :: SCALED_PRESSURE2 (SCALED_PRESSURE2_DATA :: default ())) , DATA96_DATA :: ID => Ok (Self :: DATA96 (DATA96_DATA :: default ())) , FLIGHT_INFORMATION_DATA :: ID => Ok (Self :: FLIGHT_INFORMATION (FLIGHT_INFORMATION_DATA :: default ())) , REMOTE_LOG_DATA_BLOCK_DATA :: ID => Ok (Self :: REMOTE_LOG_DATA_BLOCK (REMOTE_LOG_DATA_BLOCK_DATA :: default ())) , ACTUATOR_OUTPUT_STATUS_DATA :: ID => Ok (Self :: ACTUATOR_OUTPUT_STATUS (ACTUATOR_OUTPUT_STATUS_DATA :: default ())) , AHRS_DATA :: ID => Ok (Self :: AHRS (AHRS_DATA :: default ())) , DEBUG_VECT_DATA :: ID => Ok (Self :: DEBUG_VECT (DEBUG_VECT_DATA :: default ())) , UTM_GLOBAL_POSITION_DATA :: ID => Ok (Self :: UTM_GLOBAL_POSITION (UTM_GLOBAL_POSITION_DATA :: default ())) , MISSION_ITEM_INT_DATA :: ID => Ok (Self :: MISSION_ITEM_INT (MISSION_ITEM_INT_DATA :: default ())) , CAN_FILTER_MODIFY_DATA :: ID => Ok (Self :: CAN_FILTER_MODIFY (CAN_FILTER_MODIFY_DATA :: default ())) , DEVICE_OP_READ_REPLY_DATA :: ID => Ok (Self :: DEVICE_OP_READ_REPLY (DEVICE_OP_READ_REPLY_DATA :: default ())) , ADAP_TUNING_DATA :: ID => Ok (Self :: ADAP_TUNING (ADAP_TUNING_DATA :: default ())) , SET_POSITION_TARGET_GLOBAL_INT_DATA :: ID => Ok (Self :: SET_POSITION_TARGET_GLOBAL_INT (SET_POSITION_TARGET_GLOBAL_INT_DATA :: default ())) , PROTOCOL_VERSION_DATA :: ID => Ok (Self :: PROTOCOL_VERSION (PROTOCOL_VERSION_DATA :: default ())) , HIL_GPS_DATA :: ID => Ok (Self :: HIL_GPS (HIL_GPS_DATA :: default ())) , SCALED_IMU_DATA :: ID => Ok (Self :: SCALED_IMU (SCALED_IMU_DATA :: default ())) , UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: ID => Ok (Self :: UAVIONIX_ADSB_OUT_DYNAMIC (UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: default ())) , COMMAND_CANCEL_DATA :: ID => Ok (Self :: COMMAND_CANCEL (COMMAND_CANCEL_DATA :: default ())) , MOUNT_CONFIGURE_DATA :: ID => Ok (Self :: MOUNT_CONFIGURE (MOUNT_CONFIGURE_DATA :: default ())) , LOGGING_ACK_DATA :: ID => Ok (Self :: LOGGING_ACK (LOGGING_ACK_DATA :: default ())) , ATT_POS_MOCAP_DATA :: ID => Ok (Self :: ATT_POS_MOCAP (ATT_POS_MOCAP_DATA :: default ())) , PARAM_EXT_REQUEST_READ_DATA :: ID => Ok (Self :: PARAM_EXT_REQUEST_READ (PARAM_EXT_REQUEST_READ_DATA :: default ())) , CAMERA_TRACKING_IMAGE_STATUS_DATA :: ID => Ok (Self :: CAMERA_TRACKING_IMAGE_STATUS (CAMERA_TRACKING_IMAGE_STATUS_DATA :: default ())) , EKF_STATUS_REPORT_DATA :: ID => Ok (Self :: EKF_STATUS_REPORT (EKF_STATUS_REPORT_DATA :: default ())) , OBSTACLE_DISTANCE_3D_DATA :: ID => Ok (Self :: OBSTACLE_DISTANCE_3D (OBSTACLE_DISTANCE_3D_DATA :: default ())) , TERRAIN_DATA_DATA :: ID => Ok (Self :: TERRAIN_DATA (TERRAIN_DATA_DATA :: default ())) , PARAM_REQUEST_LIST_DATA :: ID => Ok (Self :: PARAM_REQUEST_LIST (PARAM_REQUEST_LIST_DATA :: default ())) , RPM_DATA :: ID => Ok (Self :: RPM (RPM_DATA :: default ())) , MISSION_REQUEST_INT_DATA :: ID => Ok (Self :: MISSION_REQUEST_INT (MISSION_REQUEST_INT_DATA :: default ())) , CELLULAR_CONFIG_DATA :: ID => Ok (Self :: CELLULAR_CONFIG (CELLULAR_CONFIG_DATA :: default ())) , SENSOR_OFFSETS_DATA :: ID => Ok (Self :: SENSOR_OFFSETS (SENSOR_OFFSETS_DATA :: default ())) , AHRS3_DATA :: ID => Ok (Self :: AHRS3 (AHRS3_DATA :: default ())) , LOG_REQUEST_LIST_DATA :: ID => Ok (Self :: LOG_REQUEST_LIST (LOG_REQUEST_LIST_DATA :: default ())) , DIGICAM_CONFIGURE_DATA :: ID => Ok (Self :: DIGICAM_CONFIGURE (DIGICAM_CONFIGURE_DATA :: default ())) , GPS2_RAW_DATA :: ID => Ok (Self :: GPS2_RAW (GPS2_RAW_DATA :: default ())) , OPEN_DRONE_ID_SELF_ID_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_SELF_ID (OPEN_DRONE_ID_SELF_ID_DATA :: default ())) , AHRS2_DATA :: ID => Ok (Self :: AHRS2 (AHRS2_DATA :: default ())) , VICON_POSITION_ESTIMATE_DATA :: ID => Ok (Self :: VICON_POSITION_ESTIMATE (VICON_POSITION_ESTIMATE_DATA :: default ())) , CHANGE_OPERATOR_CONTROL_DATA :: ID => Ok (Self :: CHANGE_OPERATOR_CONTROL (CHANGE_OPERATOR_CONTROL_DATA :: default ())) , RC_CHANNELS_OVERRIDE_DATA :: ID => Ok (Self :: RC_CHANNELS_OVERRIDE (RC_CHANNELS_OVERRIDE_DATA :: default ())) , MISSION_WRITE_PARTIAL_LIST_DATA :: ID => Ok (Self :: MISSION_WRITE_PARTIAL_LIST (MISSION_WRITE_PARTIAL_LIST_DATA :: default ())) , CAMERA_TRIGGER_DATA :: ID => Ok (Self :: CAMERA_TRIGGER (CAMERA_TRIGGER_DATA :: default ())) , MISSION_REQUEST_LIST_DATA :: ID => Ok (Self :: MISSION_REQUEST_LIST (MISSION_REQUEST_LIST_DATA :: default ())) , DATA32_DATA :: ID => Ok (Self :: DATA32 (DATA32_DATA :: default ())) , CAMERA_CAPTURE_STATUS_DATA :: ID => Ok (Self :: CAMERA_CAPTURE_STATUS (CAMERA_CAPTURE_STATUS_DATA :: default ())) , TERRAIN_CHECK_DATA :: ID => Ok (Self :: TERRAIN_CHECK (TERRAIN_CHECK_DATA :: default ())) , ICAROUS_KINEMATIC_BANDS_DATA :: ID => Ok (Self :: ICAROUS_KINEMATIC_BANDS (ICAROUS_KINEMATIC_BANDS_DATA :: default ())) , CHANGE_OPERATOR_CONTROL_ACK_DATA :: ID => Ok (Self :: CHANGE_OPERATOR_CONTROL_ACK (CHANGE_OPERATOR_CONTROL_ACK_DATA :: default ())) , ORBIT_EXECUTION_STATUS_DATA :: ID => Ok (Self :: ORBIT_EXECUTION_STATUS (ORBIT_EXECUTION_STATUS_DATA :: default ())) , DEVICE_OP_WRITE_DATA :: ID => Ok (Self :: DEVICE_OP_WRITE (DEVICE_OP_WRITE_DATA :: default ())) , OPEN_DRONE_ID_LOCATION_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_LOCATION (OPEN_DRONE_ID_LOCATION_DATA :: default ())) , LANDING_TARGET_DATA :: ID => Ok (Self :: LANDING_TARGET (LANDING_TARGET_DATA :: default ())) , BATTERY_STATUS_DATA :: ID => Ok (Self :: BATTERY_STATUS (BATTERY_STATUS_DATA :: default ())) , GOPRO_SET_RESPONSE_DATA :: ID => Ok (Self :: GOPRO_SET_RESPONSE (GOPRO_SET_RESPONSE_DATA :: default ())) , EVENT_DATA :: ID => Ok (Self :: EVENT (EVENT_DATA :: default ())) , GIMBAL_MANAGER_SET_PITCHYAW_DATA :: ID => Ok (Self :: GIMBAL_MANAGER_SET_PITCHYAW (GIMBAL_MANAGER_SET_PITCHYAW_DATA :: default ())) , SMART_BATTERY_INFO_DATA :: ID => Ok (Self :: SMART_BATTERY_INFO (SMART_BATTERY_INFO_DATA :: default ())) , ATTITUDE_QUATERNION_DATA :: ID => Ok (Self :: ATTITUDE_QUATERNION (ATTITUDE_QUATERNION_DATA :: default ())) , SET_ATTITUDE_TARGET_DATA :: ID => Ok (Self :: SET_ATTITUDE_TARGET (SET_ATTITUDE_TARGET_DATA :: default ())) , MANUAL_CONTROL_DATA :: ID => Ok (Self :: MANUAL_CONTROL (MANUAL_CONTROL_DATA :: default ())) , RALLY_FETCH_POINT_DATA :: ID => Ok (Self :: RALLY_FETCH_POINT (RALLY_FETCH_POINT_DATA :: default ())) , VISION_POSITION_ESTIMATE_DATA :: ID => Ok (Self :: VISION_POSITION_ESTIMATE (VISION_POSITION_ESTIMATE_DATA :: default ())) , RALLY_POINT_DATA :: ID => Ok (Self :: RALLY_POINT (RALLY_POINT_DATA :: default ())) , VIDEO_STREAM_INFORMATION_DATA :: ID => Ok (Self :: VIDEO_STREAM_INFORMATION (VIDEO_STREAM_INFORMATION_DATA :: default ())) , OPEN_DRONE_ID_BASIC_ID_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_BASIC_ID (OPEN_DRONE_ID_BASIC_ID_DATA :: default ())) , ENCAPSULATED_DATA_DATA :: ID => Ok (Self :: ENCAPSULATED_DATA (ENCAPSULATED_DATA_DATA :: default ())) , DEVICE_OP_WRITE_REPLY_DATA :: ID => Ok (Self :: DEVICE_OP_WRITE_REPLY (DEVICE_OP_WRITE_REPLY_DATA :: default ())) , PING_DATA :: ID => Ok (Self :: PING (PING_DATA :: default ())) , SET_MAG_OFFSETS_DATA :: ID => Ok (Self :: SET_MAG_OFFSETS (SET_MAG_OFFSETS_DATA :: default ())) , GPS_INPUT_DATA :: ID => Ok (Self :: GPS_INPUT (GPS_INPUT_DATA :: default ())) , LOG_ENTRY_DATA :: ID => Ok (Self :: LOG_ENTRY (LOG_ENTRY_DATA :: default ())) , RAW_IMU_DATA :: ID => Ok (Self :: RAW_IMU (RAW_IMU_DATA :: default ())) , GPS_RAW_INT_DATA :: ID => Ok (Self :: GPS_RAW_INT (GPS_RAW_INT_DATA :: default ())) , CONTROL_SYSTEM_STATE_DATA :: ID => Ok (Self :: CONTROL_SYSTEM_STATE (CONTROL_SYSTEM_STATE_DATA :: default ())) , DEBUG_DATA :: ID => Ok (Self :: DEBUG (DEBUG_DATA :: default ())) , ESC_TELEMETRY_1_TO_4_DATA :: ID => Ok (Self :: ESC_TELEMETRY_1_TO_4 (ESC_TELEMETRY_1_TO_4_DATA :: default ())) , MOUNT_CONTROL_DATA :: ID => Ok (Self :: MOUNT_CONTROL (MOUNT_CONTROL_DATA :: default ())) , COMPONENT_METADATA_DATA :: ID => Ok (Self :: COMPONENT_METADATA (COMPONENT_METADATA_DATA :: default ())) , NAMED_VALUE_FLOAT_DATA :: ID => Ok (Self :: NAMED_VALUE_FLOAT (NAMED_VALUE_FLOAT_DATA :: default ())) , GPS2_RTK_DATA :: ID => Ok (Self :: GPS2_RTK (GPS2_RTK_DATA :: default ())) , VIBRATION_DATA :: ID => Ok (Self :: VIBRATION (VIBRATION_DATA :: default ())) , MISSION_CURRENT_DATA :: ID => Ok (Self :: MISSION_CURRENT (MISSION_CURRENT_DATA :: default ())) , HERELINK_TELEM_DATA :: ID => Ok (Self :: HERELINK_TELEM (HERELINK_TELEM_DATA :: default ())) , PARAM_EXT_ACK_DATA :: ID => Ok (Self :: PARAM_EXT_ACK (PARAM_EXT_ACK_DATA :: default ())) , MISSION_REQUEST_DATA :: ID => Ok (Self :: MISSION_REQUEST (MISSION_REQUEST_DATA :: default ())) , MEMINFO_DATA :: ID => Ok (Self :: MEMINFO (MEMINFO_DATA :: default ())) , LED_CONTROL_DATA :: ID => Ok (Self :: LED_CONTROL (LED_CONTROL_DATA :: default ())) , MISSION_ITEM_DATA :: ID => Ok (Self :: MISSION_ITEM (MISSION_ITEM_DATA :: default ())) , GPS_RTCM_DATA_DATA :: ID => Ok (Self :: GPS_RTCM_DATA (GPS_RTCM_DATA_DATA :: default ())) , OPTICAL_FLOW_RAD_DATA :: ID => Ok (Self :: OPTICAL_FLOW_RAD (OPTICAL_FLOW_RAD_DATA :: default ())) , VISION_SPEED_ESTIMATE_DATA :: ID => Ok (Self :: VISION_SPEED_ESTIMATE (VISION_SPEED_ESTIMATE_DATA :: default ())) , TERRAIN_REPORT_DATA :: ID => Ok (Self :: TERRAIN_REPORT (TERRAIN_REPORT_DATA :: default ())) , V2_EXTENSION_DATA :: ID => Ok (Self :: V2_EXTENSION (V2_EXTENSION_DATA :: default ())) , CAN_FRAME_DATA :: ID => Ok (Self :: CAN_FRAME (CAN_FRAME_DATA :: default ())) , REQUEST_EVENT_DATA :: ID => Ok (Self :: REQUEST_EVENT (REQUEST_EVENT_DATA :: default ())) , OSD_PARAM_CONFIG_DATA :: ID => Ok (Self :: OSD_PARAM_CONFIG (OSD_PARAM_CONFIG_DATA :: default ())) , AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: ID => Ok (Self :: AUTOPILOT_STATE_FOR_GIMBAL_DEVICE (AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: default ())) , ATTITUDE_DATA :: ID => Ok (Self :: ATTITUDE (ATTITUDE_DATA :: default ())) , UAVCAN_NODE_INFO_DATA :: ID => Ok (Self :: UAVCAN_NODE_INFO (UAVCAN_NODE_INFO_DATA :: default ())) , HIL_OPTICAL_FLOW_DATA :: ID => Ok (Self :: HIL_OPTICAL_FLOW (HIL_OPTICAL_FLOW_DATA :: default ())) , MEMORY_VECT_DATA :: ID => Ok (Self :: MEMORY_VECT (MEMORY_VECT_DATA :: default ())) , SAFETY_SET_ALLOWED_AREA_DATA :: ID => Ok (Self :: SAFETY_SET_ALLOWED_AREA (SAFETY_SET_ALLOWED_AREA_DATA :: default ())) , GIMBAL_MANAGER_STATUS_DATA :: ID => Ok (Self :: GIMBAL_MANAGER_STATUS (GIMBAL_MANAGER_STATUS_DATA :: default ())) , GLOBAL_VISION_POSITION_ESTIMATE_DATA :: ID => Ok (Self :: GLOBAL_VISION_POSITION_ESTIMATE (GLOBAL_VISION_POSITION_ESTIMATE_DATA :: default ())) , AUTH_KEY_DATA :: ID => Ok (Self :: AUTH_KEY (AUTH_KEY_DATA :: default ())) , COMMAND_ACK_DATA :: ID => Ok (Self :: COMMAND_ACK (COMMAND_ACK_DATA :: default ())) , DIGICAM_CONTROL_DATA :: ID => Ok (Self :: DIGICAM_CONTROL (DIGICAM_CONTROL_DATA :: default ())) , FENCE_FETCH_POINT_DATA :: ID => Ok (Self :: FENCE_FETCH_POINT (FENCE_FETCH_POINT_DATA :: default ())) , ESC_TELEMETRY_9_TO_12_DATA :: ID => Ok (Self :: ESC_TELEMETRY_9_TO_12 (ESC_TELEMETRY_9_TO_12_DATA :: default ())) , SERIAL_CONTROL_DATA :: ID => Ok (Self :: SERIAL_CONTROL (SERIAL_CONTROL_DATA :: default ())) , MCU_STATUS_DATA :: ID => Ok (Self :: MCU_STATUS (MCU_STATUS_DATA :: default ())) , COMMAND_INT_DATA :: ID => Ok (Self :: COMMAND_INT (COMMAND_INT_DATA :: default ())) , RAW_RPM_DATA :: ID => Ok (Self :: RAW_RPM (RAW_RPM_DATA :: default ())) , OPEN_DRONE_ID_OPERATOR_ID_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_OPERATOR_ID (OPEN_DRONE_ID_OPERATOR_ID_DATA :: default ())) , DATA_STREAM_DATA :: ID => Ok (Self :: DATA_STREAM (DATA_STREAM_DATA :: default ())) , MISSION_COUNT_DATA :: ID => Ok (Self :: MISSION_COUNT (MISSION_COUNT_DATA :: default ())) , SCALED_IMU3_DATA :: ID => Ok (Self :: SCALED_IMU3 (SCALED_IMU3_DATA :: default ())) , DEBUG_FLOAT_ARRAY_DATA :: ID => Ok (Self :: DEBUG_FLOAT_ARRAY (DEBUG_FLOAT_ARRAY_DATA :: default ())) , GIMBAL_MANAGER_INFORMATION_DATA :: ID => Ok (Self :: GIMBAL_MANAGER_INFORMATION (GIMBAL_MANAGER_INFORMATION_DATA :: default ())) , HIGH_LATENCY2_DATA :: ID => Ok (Self :: HIGH_LATENCY2 (HIGH_LATENCY2_DATA :: default ())) , PLAY_TUNE_DATA :: ID => Ok (Self :: PLAY_TUNE (PLAY_TUNE_DATA :: default ())) , AOA_SSA_DATA :: ID => Ok (Self :: AOA_SSA (AOA_SSA_DATA :: default ())) , LOCAL_POSITION_NED_COV_DATA :: ID => Ok (Self :: LOCAL_POSITION_NED_COV (LOCAL_POSITION_NED_COV_DATA :: default ())) , MISSION_ACK_DATA :: ID => Ok (Self :: MISSION_ACK (MISSION_ACK_DATA :: default ())) , LIMITS_STATUS_DATA :: ID => Ok (Self :: LIMITS_STATUS (LIMITS_STATUS_DATA :: default ())) , COMPONENT_INFORMATION_DATA :: ID => Ok (Self :: COMPONENT_INFORMATION (COMPONENT_INFORMATION_DATA :: default ())) , GIMBAL_TORQUE_CMD_REPORT_DATA :: ID => Ok (Self :: GIMBAL_TORQUE_CMD_REPORT (GIMBAL_TORQUE_CMD_REPORT_DATA :: default ())) , MOUNT_STATUS_DATA :: ID => Ok (Self :: MOUNT_STATUS (MOUNT_STATUS_DATA :: default ())) , SIM_STATE_DATA :: ID => Ok (Self :: SIM_STATE (SIM_STATE_DATA :: default ())) , MISSION_SET_CURRENT_DATA :: ID => Ok (Self :: MISSION_SET_CURRENT (MISSION_SET_CURRENT_DATA :: default ())) , PARAM_EXT_SET_DATA :: ID => Ok (Self :: PARAM_EXT_SET (PARAM_EXT_SET_DATA :: default ())) , ISBD_LINK_STATUS_DATA :: ID => Ok (Self :: ISBD_LINK_STATUS (ISBD_LINK_STATUS_DATA :: default ())) , RC_CHANNELS_DATA :: ID => Ok (Self :: RC_CHANNELS (RC_CHANNELS_DATA :: default ())) , CUBEPILOT_FIRMWARE_UPDATE_RESP_DATA :: ID => Ok (Self :: CUBEPILOT_FIRMWARE_UPDATE_RESP (CUBEPILOT_FIRMWARE_UPDATE_RESP_DATA :: default ())) , SIMSTATE_DATA :: ID => Ok (Self :: SIMSTATE (SIMSTATE_DATA :: default ())) , CAMERA_TRACKING_GEO_STATUS_DATA :: ID => Ok (Self :: CAMERA_TRACKING_GEO_STATUS (CAMERA_TRACKING_GEO_STATUS_DATA :: default ())) , ESC_STATUS_DATA :: ID => Ok (Self :: ESC_STATUS (ESC_STATUS_DATA :: default ())) , CUBEPILOT_RAW_RC_DATA :: ID => Ok (Self :: CUBEPILOT_RAW_RC (CUBEPILOT_RAW_RC_DATA :: default ())) , HIGHRES_IMU_DATA :: ID => Ok (Self :: HIGHRES_IMU (HIGHRES_IMU_DATA :: default ())) , NAV_CONTROLLER_OUTPUT_DATA :: ID => Ok (Self :: NAV_CONTROLLER_OUTPUT (NAV_CONTROLLER_OUTPUT_DATA :: default ())) , OPEN_DRONE_ID_AUTHENTICATION_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_AUTHENTICATION (OPEN_DRONE_ID_AUTHENTICATION_DATA :: default ())) , LOGGING_DATA_ACKED_DATA :: ID => Ok (Self :: LOGGING_DATA_ACKED (LOGGING_DATA_ACKED_DATA :: default ())) , ICAROUS_HEARTBEAT_DATA :: ID => Ok (Self :: ICAROUS_HEARTBEAT (ICAROUS_HEARTBEAT_DATA :: default ())) , FENCE_POINT_DATA :: ID => Ok (Self :: FENCE_POINT (FENCE_POINT_DATA :: default ())) , OSD_PARAM_SHOW_CONFIG_REPLY_DATA :: ID => Ok (Self :: OSD_PARAM_SHOW_CONFIG_REPLY (OSD_PARAM_SHOW_CONFIG_REPLY_DATA :: default ())) , ATTITUDE_TARGET_DATA :: ID => Ok (Self :: ATTITUDE_TARGET (ATTITUDE_TARGET_DATA :: default ())) , LOG_REQUEST_DATA_DATA :: ID => Ok (Self :: LOG_REQUEST_DATA (LOG_REQUEST_DATA_DATA :: default ())) , GIMBAL_REPORT_DATA :: ID => Ok (Self :: GIMBAL_REPORT (GIMBAL_REPORT_DATA :: default ())) , PARAM_EXT_VALUE_DATA :: ID => Ok (Self :: PARAM_EXT_VALUE (PARAM_EXT_VALUE_DATA :: default ())) , SERVO_OUTPUT_RAW_DATA :: ID => Ok (Self :: SERVO_OUTPUT_RAW (SERVO_OUTPUT_RAW_DATA :: default ())) , ESC_INFO_DATA :: ID => Ok (Self :: ESC_INFO (ESC_INFO_DATA :: default ())) , OPEN_DRONE_ID_SYSTEM_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_SYSTEM (OPEN_DRONE_ID_SYSTEM_DATA :: default ())) , UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: ID => Ok (Self :: UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT (UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: default ())) , HIGH_LATENCY_DATA :: ID => Ok (Self :: HIGH_LATENCY (HIGH_LATENCY_DATA :: default ())) , PID_TUNING_DATA :: ID => Ok (Self :: PID_TUNING (PID_TUNING_DATA :: default ())) , RANGEFINDER_DATA :: ID => Ok (Self :: RANGEFINDER (RANGEFINDER_DATA :: default ())) , GIMBAL_DEVICE_SET_ATTITUDE_DATA :: ID => Ok (Self :: GIMBAL_DEVICE_SET_ATTITUDE (GIMBAL_DEVICE_SET_ATTITUDE_DATA :: default ())) , VISION_POSITION_DELTA_DATA :: ID => Ok (Self :: VISION_POSITION_DELTA (VISION_POSITION_DELTA_DATA :: default ())) , CAMERA_FEEDBACK_DATA :: ID => Ok (Self :: CAMERA_FEEDBACK (CAMERA_FEEDBACK_DATA :: default ())) , BUTTON_CHANGE_DATA :: ID => Ok (Self :: BUTTON_CHANGE (BUTTON_CHANGE_DATA :: default ())) , DEEPSTALL_DATA :: ID => Ok (Self :: DEEPSTALL (DEEPSTALL_DATA :: default ())) , ONBOARD_COMPUTER_STATUS_DATA :: ID => Ok (Self :: ONBOARD_COMPUTER_STATUS (ONBOARD_COMPUTER_STATUS_DATA :: default ())) , GOPRO_GET_RESPONSE_DATA :: ID => Ok (Self :: GOPRO_GET_RESPONSE (GOPRO_GET_RESPONSE_DATA :: default ())) , GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: ID => Ok (Self :: GIMBAL_DEVICE_ATTITUDE_STATUS (GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: default ())) , PARAM_EXT_REQUEST_LIST_DATA :: ID => Ok (Self :: PARAM_EXT_REQUEST_LIST (PARAM_EXT_REQUEST_LIST_DATA :: default ())) , OSD_PARAM_CONFIG_REPLY_DATA :: ID => Ok (Self :: OSD_PARAM_CONFIG_REPLY (OSD_PARAM_CONFIG_REPLY_DATA :: default ())) , HIL_STATE_QUATERNION_DATA :: ID => Ok (Self :: HIL_STATE_QUATERNION (HIL_STATE_QUATERNION_DATA :: default ())) , CAMERA_SETTINGS_DATA :: ID => Ok (Self :: CAMERA_SETTINGS (CAMERA_SETTINGS_DATA :: default ())) , CURRENT_EVENT_SEQUENCE_DATA :: ID => Ok (Self :: CURRENT_EVENT_SEQUENCE (CURRENT_EVENT_SEQUENCE_DATA :: default ())) , RESOURCE_REQUEST_DATA :: ID => Ok (Self :: RESOURCE_REQUEST (RESOURCE_REQUEST_DATA :: default ())) , LOG_DATA_DATA :: ID => Ok (Self :: LOG_DATA (LOG_DATA_DATA :: default ())) , ATTITUDE_QUATERNION_COV_DATA :: ID => Ok (Self :: ATTITUDE_QUATERNION_COV (ATTITUDE_QUATERNION_COV_DATA :: default ())) , TRAJECTORY_REPRESENTATION_BEZIER_DATA :: ID => Ok (Self :: TRAJECTORY_REPRESENTATION_BEZIER (TRAJECTORY_REPRESENTATION_BEZIER_DATA :: default ())) , SAFETY_ALLOWED_AREA_DATA :: ID => Ok (Self :: SAFETY_ALLOWED_AREA (SAFETY_ALLOWED_AREA_DATA :: default ())) , STATUSTEXT_DATA :: ID => Ok (Self :: STATUSTEXT (STATUSTEXT_DATA :: default ())) , RADIO_DATA :: ID => Ok (Self :: RADIO (RADIO_DATA :: default ())) , CELLULAR_STATUS_DATA :: ID => Ok (Self :: CELLULAR_STATUS (CELLULAR_STATUS_DATA :: default ())) , DEVICE_OP_READ_DATA :: ID => Ok (Self :: DEVICE_OP_READ (DEVICE_OP_READ_DATA :: default ())) , WIFI_CONFIG_AP_DATA :: ID => Ok (Self :: WIFI_CONFIG_AP (WIFI_CONFIG_AP_DATA :: default ())) , GENERATOR_STATUS_DATA :: ID => Ok (Self :: GENERATOR_STATUS (GENERATOR_STATUS_DATA :: default ())) , NAMED_VALUE_INT_DATA :: ID => Ok (Self :: NAMED_VALUE_INT (NAMED_VALUE_INT_DATA :: default ())) , HIL_CONTROLS_DATA :: ID => Ok (Self :: HIL_CONTROLS (HIL_CONTROLS_DATA :: default ())) , AUTOPILOT_VERSION_DATA :: ID => Ok (Self :: AUTOPILOT_VERSION (AUTOPILOT_VERSION_DATA :: default ())) , AP_ADC_DATA :: ID => Ok (Self :: AP_ADC (AP_ADC_DATA :: default ())) , HIL_STATE_DATA :: ID => Ok (Self :: HIL_STATE (HIL_STATE_DATA :: default ())) , PARAM_MAP_RC_DATA :: ID => Ok (Self :: PARAM_MAP_RC (PARAM_MAP_RC_DATA :: default ())) , MAG_CAL_PROGRESS_DATA :: ID => Ok (Self :: MAG_CAL_PROGRESS (MAG_CAL_PROGRESS_DATA :: default ())) , GIMBAL_CONTROL_DATA :: ID => Ok (Self :: GIMBAL_CONTROL (GIMBAL_CONTROL_DATA :: default ())) , DISTANCE_SENSOR_DATA :: ID => Ok (Self :: DISTANCE_SENSOR (DISTANCE_SENSOR_DATA :: default ())) , SYSTEM_TIME_DATA :: ID => Ok (Self :: SYSTEM_TIME (SYSTEM_TIME_DATA :: default ())) , COMMAND_LONG_DATA :: ID => Ok (Self :: COMMAND_LONG (COMMAND_LONG_DATA :: default ())) , GPS_INJECT_DATA_DATA :: ID => Ok (Self :: GPS_INJECT_DATA (GPS_INJECT_DATA_DATA :: default ())) , OPTICAL_FLOW_DATA :: ID => Ok (Self :: OPTICAL_FLOW (OPTICAL_FLOW_DATA :: default ())) , GOPRO_HEARTBEAT_DATA :: ID => Ok (Self :: GOPRO_HEARTBEAT (GOPRO_HEARTBEAT_DATA :: default ())) , MAG_CAL_REPORT_DATA :: ID => Ok (Self :: MAG_CAL_REPORT (MAG_CAL_REPORT_DATA :: default ())) , MESSAGE_INTERVAL_DATA :: ID => Ok (Self :: MESSAGE_INTERVAL (MESSAGE_INTERVAL_DATA :: default ())) , WINCH_STATUS_DATA :: ID => Ok (Self :: WINCH_STATUS (WINCH_STATUS_DATA :: default ())) , GPS_GLOBAL_ORIGIN_DATA :: ID => Ok (Self :: GPS_GLOBAL_ORIGIN (GPS_GLOBAL_ORIGIN_DATA :: default ())) , MOUNT_ORIENTATION_DATA :: ID => Ok (Self :: MOUNT_ORIENTATION (MOUNT_ORIENTATION_DATA :: default ())) , ODOMETRY_DATA :: ID => Ok (Self :: ODOMETRY (ODOMETRY_DATA :: default ())) , SETUP_SIGNING_DATA :: ID => Ok (Self :: SETUP_SIGNING (SETUP_SIGNING_DATA :: default ())) , LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: ID => Ok (Self :: LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET (LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: default ())) , MISSION_CLEAR_ALL_DATA :: ID => Ok (Self :: MISSION_CLEAR_ALL (MISSION_CLEAR_ALL_DATA :: default ())) , OPEN_DRONE_ID_MESSAGE_PACK_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_MESSAGE_PACK (OPEN_DRONE_ID_MESSAGE_PACK_DATA :: default ())) , DATA64_DATA :: ID => Ok (Self :: DATA64 (DATA64_DATA :: default ())) , REMOTE_LOG_BLOCK_STATUS_DATA :: ID => Ok (Self :: REMOTE_LOG_BLOCK_STATUS (REMOTE_LOG_BLOCK_STATUS_DATA :: default ())) , GOPRO_SET_REQUEST_DATA :: ID => Ok (Self :: GOPRO_SET_REQUEST (GOPRO_SET_REQUEST_DATA :: default ())) , SCALED_PRESSURE3_DATA :: ID => Ok (Self :: SCALED_PRESSURE3 (SCALED_PRESSURE3_DATA :: default ())) , REQUEST_DATA_STREAM_DATA :: ID => Ok (Self :: REQUEST_DATA_STREAM (REQUEST_DATA_STREAM_DATA :: default ())) , LOG_REQUEST_END_DATA :: ID => Ok (Self :: LOG_REQUEST_END (LOG_REQUEST_END_DATA :: default ())) , STORAGE_INFORMATION_DATA :: ID => Ok (Self :: STORAGE_INFORMATION (STORAGE_INFORMATION_DATA :: default ())) , HIL_SENSOR_DATA :: ID => Ok (Self :: HIL_SENSOR (HIL_SENSOR_DATA :: default ())) , AIS_VESSEL_DATA :: ID => Ok (Self :: AIS_VESSEL (AIS_VESSEL_DATA :: default ())) , CUBEPILOT_FIRMWARE_UPDATE_START_DATA :: ID => Ok (Self :: CUBEPILOT_FIRMWARE_UPDATE_START (CUBEPILOT_FIRMWARE_UPDATE_START_DATA :: default ())) , BATTERY2_DATA :: ID => Ok (Self :: BATTERY2 (BATTERY2_DATA :: default ())) , GLOBAL_POSITION_INT_DATA :: ID => Ok (Self :: GLOBAL_POSITION_INT (GLOBAL_POSITION_INT_DATA :: default ())) , RC_CHANNELS_SCALED_DATA :: ID => Ok (Self :: RC_CHANNELS_SCALED (RC_CHANNELS_SCALED_DATA :: default ())) , COLLISION_DATA :: ID => Ok (Self :: COLLISION (COLLISION_DATA :: default ())) , WATER_DEPTH_DATA :: ID => Ok (Self :: WATER_DEPTH (WATER_DEPTH_DATA :: default ())) , ESC_TELEMETRY_5_TO_8_DATA :: ID => Ok (Self :: ESC_TELEMETRY_5_TO_8 (ESC_TELEMETRY_5_TO_8_DATA :: default ())) , HERELINK_VIDEO_STREAM_INFORMATION_DATA :: ID => Ok (Self :: HERELINK_VIDEO_STREAM_INFORMATION (HERELINK_VIDEO_STREAM_INFORMATION_DATA :: default ())) , LOG_ERASE_DATA :: ID => Ok (Self :: LOG_ERASE (LOG_ERASE_DATA :: default ())) , SET_HOME_POSITION_DATA :: ID => Ok (Self :: SET_HOME_POSITION (SET_HOME_POSITION_DATA :: default ())) , CAMERA_FOV_STATUS_DATA :: ID => Ok (Self :: CAMERA_FOV_STATUS (CAMERA_FOV_STATUS_DATA :: default ())) , SCALED_PRESSURE_DATA :: ID => Ok (Self :: SCALED_PRESSURE (SCALED_PRESSURE_DATA :: default ())) , PARAM_REQUEST_READ_DATA :: ID => Ok (Self :: PARAM_REQUEST_READ (PARAM_REQUEST_READ_DATA :: default ())) , HIL_RC_INPUTS_RAW_DATA :: ID => Ok (Self :: HIL_RC_INPUTS_RAW (HIL_RC_INPUTS_RAW_DATA :: default ())) , SET_MODE_DATA :: ID => Ok (Self :: SET_MODE (SET_MODE_DATA :: default ())) , GIMBAL_MANAGER_SET_ATTITUDE_DATA :: ID => Ok (Self :: GIMBAL_MANAGER_SET_ATTITUDE (GIMBAL_MANAGER_SET_ATTITUDE_DATA :: default ())) , CAMERA_INFORMATION_DATA :: ID => Ok (Self :: CAMERA_INFORMATION (CAMERA_INFORMATION_DATA :: default ())) , GLOBAL_POSITION_INT_COV_DATA :: ID => Ok (Self :: GLOBAL_POSITION_INT_COV (GLOBAL_POSITION_INT_COV_DATA :: default ())) , GPS_STATUS_DATA :: ID => Ok (Self :: GPS_STATUS (GPS_STATUS_DATA :: default ())) , RESPONSE_EVENT_ERROR_DATA :: ID => Ok (Self :: RESPONSE_EVENT_ERROR (RESPONSE_EVENT_ERROR_DATA :: default ())) , _ => { Err ("Invalid message id.") } } } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { match self { Self :: HEARTBEAT (body) => body . ser (version , bytes) , Self :: MISSION_ITEM_REACHED (body) => body . ser (version , bytes) , Self :: OSD_PARAM_SHOW_CONFIG (body) => body . ser (version , bytes) , Self :: TIMESYNC (body) => body . ser (version , bytes) , Self :: GOPRO_GET_REQUEST (body) => body . ser (version , bytes) , Self :: TRAJECTORY_REPRESENTATION_WAYPOINTS (body) => body . ser (version , bytes) , Self :: POSITION_TARGET_LOCAL_NED (body) => body . ser (version , bytes) , Self :: LOCAL_POSITION_NED (body) => body . ser (version , bytes) , Self :: TIME_ESTIMATE_TO_TARGET (body) => body . ser (version , bytes) , Self :: SUPPORTED_TUNES (body) => body . ser (version , bytes) , Self :: VFR_HUD (body) => body . ser (version , bytes) , Self :: POSITION_TARGET_GLOBAL_INT (body) => body . ser (version , bytes) , Self :: EFI_STATUS (body) => body . ser (version , bytes) , Self :: ALTITUDE (body) => body . ser (version , bytes) , Self :: RAW_PRESSURE (body) => body . ser (version , bytes) , Self :: OBSTACLE_DISTANCE (body) => body . ser (version , bytes) , Self :: LINK_NODE_STATUS (body) => body . ser (version , bytes) , Self :: AIRSPEED_AUTOCAL (body) => body . ser (version , bytes) , Self :: SET_GPS_GLOBAL_ORIGIN (body) => body . ser (version , bytes) , Self :: RADIO_STATUS (body) => body . ser (version , bytes) , Self :: LOGGING_DATA (body) => body . ser (version , bytes) , Self :: HOME_POSITION (body) => body . ser (version , bytes) , Self :: WHEEL_DISTANCE (body) => body . ser (version , bytes) , Self :: GIMBAL_MANAGER_SET_MANUAL_CONTROL (body) => body . ser (version , bytes) , Self :: FILE_TRANSFER_PROTOCOL (body) => body . ser (version , bytes) , Self :: MISSION_REQUEST_PARTIAL_LIST (body) => body . ser (version , bytes) , Self :: RC_CHANNELS_RAW (body) => body . ser (version , bytes) , Self :: ACTUATOR_CONTROL_TARGET (body) => body . ser (version , bytes) , Self :: FOLLOW_TARGET (body) => body . ser (version , bytes) , Self :: CANFD_FRAME (body) => body . ser (version , bytes) , Self :: VIDEO_STREAM_STATUS (body) => body . ser (version , bytes) , Self :: PARAM_SET (body) => body . ser (version , bytes) , Self :: SYS_STATUS (body) => body . ser (version , bytes) , Self :: ADSB_VEHICLE (body) => body . ser (version , bytes) , Self :: WIND_COV (body) => body . ser (version , bytes) , Self :: ESTIMATOR_STATUS (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_SYSTEM_UPDATE (body) => body . ser (version , bytes) , Self :: UAVIONIX_ADSB_OUT_CFG (body) => body . ser (version , bytes) , Self :: FENCE_STATUS (body) => body . ser (version , bytes) , Self :: AUTOPILOT_VERSION_REQUEST (body) => body . ser (version , bytes) , Self :: DATA16 (body) => body . ser (version , bytes) , Self :: MANUAL_SETPOINT (body) => body . ser (version , bytes) , Self :: POWER_STATUS (body) => body . ser (version , bytes) , Self :: SET_ACTUATOR_CONTROL_TARGET (body) => body . ser (version , bytes) , Self :: HWSTATUS (body) => body . ser (version , bytes) , Self :: SET_POSITION_TARGET_LOCAL_NED (body) => body . ser (version , bytes) , Self :: CAMERA_IMAGE_CAPTURED (body) => body . ser (version , bytes) , Self :: CAMERA_STATUS (body) => body . ser (version , bytes) , Self :: SCALED_IMU2 (body) => body . ser (version , bytes) , Self :: PARAM_VALUE (body) => body . ser (version , bytes) , Self :: TERRAIN_REQUEST (body) => body . ser (version , bytes) , Self :: WIND (body) => body . ser (version , bytes) , Self :: DATA_TRANSMISSION_HANDSHAKE (body) => body . ser (version , bytes) , Self :: TUNNEL (body) => body . ser (version , bytes) , Self :: HIL_ACTUATOR_CONTROLS (body) => body . ser (version , bytes) , Self :: UAVCAN_NODE_STATUS (body) => body . ser (version , bytes) , Self :: GPS_RTK (body) => body . ser (version , bytes) , Self :: HYGROMETER_SENSOR (body) => body . ser (version , bytes) , Self :: COMPASSMOT_STATUS (body) => body . ser (version , bytes) , Self :: EXTENDED_SYS_STATE (body) => body . ser (version , bytes) , Self :: GIMBAL_DEVICE_INFORMATION (body) => body . ser (version , bytes) , Self :: PLAY_TUNE_V2 (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_ARM_STATUS (body) => body . ser (version , bytes) , Self :: SCALED_PRESSURE2 (body) => body . ser (version , bytes) , Self :: DATA96 (body) => body . ser (version , bytes) , Self :: FLIGHT_INFORMATION (body) => body . ser (version , bytes) , Self :: REMOTE_LOG_DATA_BLOCK (body) => body . ser (version , bytes) , Self :: ACTUATOR_OUTPUT_STATUS (body) => body . ser (version , bytes) , Self :: AHRS (body) => body . ser (version , bytes) , Self :: DEBUG_VECT (body) => body . ser (version , bytes) , Self :: UTM_GLOBAL_POSITION (body) => body . ser (version , bytes) , Self :: MISSION_ITEM_INT (body) => body . ser (version , bytes) , Self :: CAN_FILTER_MODIFY (body) => body . ser (version , bytes) , Self :: DEVICE_OP_READ_REPLY (body) => body . ser (version , bytes) , Self :: ADAP_TUNING (body) => body . ser (version , bytes) , Self :: SET_POSITION_TARGET_GLOBAL_INT (body) => body . ser (version , bytes) , Self :: PROTOCOL_VERSION (body) => body . ser (version , bytes) , Self :: HIL_GPS (body) => body . ser (version , bytes) , Self :: SCALED_IMU (body) => body . ser (version , bytes) , Self :: UAVIONIX_ADSB_OUT_DYNAMIC (body) => body . ser (version , bytes) , Self :: COMMAND_CANCEL (body) => body . ser (version , bytes) , Self :: MOUNT_CONFIGURE (body) => body . ser (version , bytes) , Self :: LOGGING_ACK (body) => body . ser (version , bytes) , Self :: ATT_POS_MOCAP (body) => body . ser (version , bytes) , Self :: PARAM_EXT_REQUEST_READ (body) => body . ser (version , bytes) , Self :: CAMERA_TRACKING_IMAGE_STATUS (body) => body . ser (version , bytes) , Self :: EKF_STATUS_REPORT (body) => body . ser (version , bytes) , Self :: OBSTACLE_DISTANCE_3D (body) => body . ser (version , bytes) , Self :: TERRAIN_DATA (body) => body . ser (version , bytes) , Self :: PARAM_REQUEST_LIST (body) => body . ser (version , bytes) , Self :: RPM (body) => body . ser (version , bytes) , Self :: MISSION_REQUEST_INT (body) => body . ser (version , bytes) , Self :: CELLULAR_CONFIG (body) => body . ser (version , bytes) , Self :: SENSOR_OFFSETS (body) => body . ser (version , bytes) , Self :: AHRS3 (body) => body . ser (version , bytes) , Self :: LOG_REQUEST_LIST (body) => body . ser (version , bytes) , Self :: DIGICAM_CONFIGURE (body) => body . ser (version , bytes) , Self :: GPS2_RAW (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_SELF_ID (body) => body . ser (version , bytes) , Self :: AHRS2 (body) => body . ser (version , bytes) , Self :: VICON_POSITION_ESTIMATE (body) => body . ser (version , bytes) , Self :: CHANGE_OPERATOR_CONTROL (body) => body . ser (version , bytes) , Self :: RC_CHANNELS_OVERRIDE (body) => body . ser (version , bytes) , Self :: MISSION_WRITE_PARTIAL_LIST (body) => body . ser (version , bytes) , Self :: CAMERA_TRIGGER (body) => body . ser (version , bytes) , Self :: MISSION_REQUEST_LIST (body) => body . ser (version , bytes) , Self :: DATA32 (body) => body . ser (version , bytes) , Self :: CAMERA_CAPTURE_STATUS (body) => body . ser (version , bytes) , Self :: TERRAIN_CHECK (body) => body . ser (version , bytes) , Self :: ICAROUS_KINEMATIC_BANDS (body) => body . ser (version , bytes) , Self :: CHANGE_OPERATOR_CONTROL_ACK (body) => body . ser (version , bytes) , Self :: ORBIT_EXECUTION_STATUS (body) => body . ser (version , bytes) , Self :: DEVICE_OP_WRITE (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_LOCATION (body) => body . ser (version , bytes) , Self :: LANDING_TARGET (body) => body . ser (version , bytes) , Self :: BATTERY_STATUS (body) => body . ser (version , bytes) , Self :: GOPRO_SET_RESPONSE (body) => body . ser (version , bytes) , Self :: EVENT (body) => body . ser (version , bytes) , Self :: GIMBAL_MANAGER_SET_PITCHYAW (body) => body . ser (version , bytes) , Self :: SMART_BATTERY_INFO (body) => body . ser (version , bytes) , Self :: ATTITUDE_QUATERNION (body) => body . ser (version , bytes) , Self :: SET_ATTITUDE_TARGET (body) => body . ser (version , bytes) , Self :: MANUAL_CONTROL (body) => body . ser (version , bytes) , Self :: RALLY_FETCH_POINT (body) => body . ser (version , bytes) , Self :: VISION_POSITION_ESTIMATE (body) => body . ser (version , bytes) , Self :: RALLY_POINT (body) => body . ser (version , bytes) , Self :: VIDEO_STREAM_INFORMATION (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_BASIC_ID (body) => body . ser (version , bytes) , Self :: ENCAPSULATED_DATA (body) => body . ser (version , bytes) , Self :: DEVICE_OP_WRITE_REPLY (body) => body . ser (version , bytes) , Self :: PING (body) => body . ser (version , bytes) , Self :: SET_MAG_OFFSETS (body) => body . ser (version , bytes) , Self :: GPS_INPUT (body) => body . ser (version , bytes) , Self :: LOG_ENTRY (body) => body . ser (version , bytes) , Self :: RAW_IMU (body) => body . ser (version , bytes) , Self :: GPS_RAW_INT (body) => body . ser (version , bytes) , Self :: CONTROL_SYSTEM_STATE (body) => body . ser (version , bytes) , Self :: DEBUG (body) => body . ser (version , bytes) , Self :: ESC_TELEMETRY_1_TO_4 (body) => body . ser (version , bytes) , Self :: MOUNT_CONTROL (body) => body . ser (version , bytes) , Self :: COMPONENT_METADATA (body) => body . ser (version , bytes) , Self :: NAMED_VALUE_FLOAT (body) => body . ser (version , bytes) , Self :: GPS2_RTK (body) => body . ser (version , bytes) , Self :: VIBRATION (body) => body . ser (version , bytes) , Self :: MISSION_CURRENT (body) => body . ser (version , bytes) , Self :: HERELINK_TELEM (body) => body . ser (version , bytes) , Self :: PARAM_EXT_ACK (body) => body . ser (version , bytes) , Self :: MISSION_REQUEST (body) => body . ser (version , bytes) , Self :: MEMINFO (body) => body . ser (version , bytes) , Self :: LED_CONTROL (body) => body . ser (version , bytes) , Self :: MISSION_ITEM (body) => body . ser (version , bytes) , Self :: GPS_RTCM_DATA (body) => body . ser (version , bytes) , Self :: OPTICAL_FLOW_RAD (body) => body . ser (version , bytes) , Self :: VISION_SPEED_ESTIMATE (body) => body . ser (version , bytes) , Self :: TERRAIN_REPORT (body) => body . ser (version , bytes) , Self :: V2_EXTENSION (body) => body . ser (version , bytes) , Self :: CAN_FRAME (body) => body . ser (version , bytes) , Self :: REQUEST_EVENT (body) => body . ser (version , bytes) , Self :: OSD_PARAM_CONFIG (body) => body . ser (version , bytes) , Self :: AUTOPILOT_STATE_FOR_GIMBAL_DEVICE (body) => body . ser (version , bytes) , Self :: ATTITUDE (body) => body . ser (version , bytes) , Self :: UAVCAN_NODE_INFO (body) => body . ser (version , bytes) , Self :: HIL_OPTICAL_FLOW (body) => body . ser (version , bytes) , Self :: MEMORY_VECT (body) => body . ser (version , bytes) , Self :: SAFETY_SET_ALLOWED_AREA (body) => body . ser (version , bytes) , Self :: GIMBAL_MANAGER_STATUS (body) => body . ser (version , bytes) , Self :: GLOBAL_VISION_POSITION_ESTIMATE (body) => body . ser (version , bytes) , Self :: AUTH_KEY (body) => body . ser (version , bytes) , Self :: COMMAND_ACK (body) => body . ser (version , bytes) , Self :: DIGICAM_CONTROL (body) => body . ser (version , bytes) , Self :: FENCE_FETCH_POINT (body) => body . ser (version , bytes) , Self :: ESC_TELEMETRY_9_TO_12 (body) => body . ser (version , bytes) , Self :: SERIAL_CONTROL (body) => body . ser (version , bytes) , Self :: MCU_STATUS (body) => body . ser (version , bytes) , Self :: COMMAND_INT (body) => body . ser (version , bytes) , Self :: RAW_RPM (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_OPERATOR_ID (body) => body . ser (version , bytes) , Self :: DATA_STREAM (body) => body . ser (version , bytes) , Self :: MISSION_COUNT (body) => body . ser (version , bytes) , Self :: SCALED_IMU3 (body) => body . ser (version , bytes) , Self :: DEBUG_FLOAT_ARRAY (body) => body . ser (version , bytes) , Self :: GIMBAL_MANAGER_INFORMATION (body) => body . ser (version , bytes) , Self :: HIGH_LATENCY2 (body) => body . ser (version , bytes) , Self :: PLAY_TUNE (body) => body . ser (version , bytes) , Self :: AOA_SSA (body) => body . ser (version , bytes) , Self :: LOCAL_POSITION_NED_COV (body) => body . ser (version , bytes) , Self :: MISSION_ACK (body) => body . ser (version , bytes) , Self :: LIMITS_STATUS (body) => body . ser (version , bytes) , Self :: COMPONENT_INFORMATION (body) => body . ser (version , bytes) , Self :: GIMBAL_TORQUE_CMD_REPORT (body) => body . ser (version , bytes) , Self :: MOUNT_STATUS (body) => body . ser (version , bytes) , Self :: SIM_STATE (body) => body . ser (version , bytes) , Self :: MISSION_SET_CURRENT (body) => body . ser (version , bytes) , Self :: PARAM_EXT_SET (body) => body . ser (version , bytes) , Self :: ISBD_LINK_STATUS (body) => body . ser (version , bytes) , Self :: RC_CHANNELS (body) => body . ser (version , bytes) , Self :: CUBEPILOT_FIRMWARE_UPDATE_RESP (body) => body . ser (version , bytes) , Self :: SIMSTATE (body) => body . ser (version , bytes) , Self :: CAMERA_TRACKING_GEO_STATUS (body) => body . ser (version , bytes) , Self :: ESC_STATUS (body) => body . ser (version , bytes) , Self :: CUBEPILOT_RAW_RC (body) => body . ser (version , bytes) , Self :: HIGHRES_IMU (body) => body . ser (version , bytes) , Self :: NAV_CONTROLLER_OUTPUT (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_AUTHENTICATION (body) => body . ser (version , bytes) , Self :: LOGGING_DATA_ACKED (body) => body . ser (version , bytes) , Self :: ICAROUS_HEARTBEAT (body) => body . ser (version , bytes) , Self :: FENCE_POINT (body) => body . ser (version , bytes) , Self :: OSD_PARAM_SHOW_CONFIG_REPLY (body) => body . ser (version , bytes) , Self :: ATTITUDE_TARGET (body) => body . ser (version , bytes) , Self :: LOG_REQUEST_DATA (body) => body . ser (version , bytes) , Self :: GIMBAL_REPORT (body) => body . ser (version , bytes) , Self :: PARAM_EXT_VALUE (body) => body . ser (version , bytes) , Self :: SERVO_OUTPUT_RAW (body) => body . ser (version , bytes) , Self :: ESC_INFO (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_SYSTEM (body) => body . ser (version , bytes) , Self :: UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT (body) => body . ser (version , bytes) , Self :: HIGH_LATENCY (body) => body . ser (version , bytes) , Self :: PID_TUNING (body) => body . ser (version , bytes) , Self :: RANGEFINDER (body) => body . ser (version , bytes) , Self :: GIMBAL_DEVICE_SET_ATTITUDE (body) => body . ser (version , bytes) , Self :: VISION_POSITION_DELTA (body) => body . ser (version , bytes) , Self :: CAMERA_FEEDBACK (body) => body . ser (version , bytes) , Self :: BUTTON_CHANGE (body) => body . ser (version , bytes) , Self :: DEEPSTALL (body) => body . ser (version , bytes) , Self :: ONBOARD_COMPUTER_STATUS (body) => body . ser (version , bytes) , Self :: GOPRO_GET_RESPONSE (body) => body . ser (version , bytes) , Self :: GIMBAL_DEVICE_ATTITUDE_STATUS (body) => body . ser (version , bytes) , Self :: PARAM_EXT_REQUEST_LIST (body) => body . ser (version , bytes) , Self :: OSD_PARAM_CONFIG_REPLY (body) => body . ser (version , bytes) , Self :: HIL_STATE_QUATERNION (body) => body . ser (version , bytes) , Self :: CAMERA_SETTINGS (body) => body . ser (version , bytes) , Self :: CURRENT_EVENT_SEQUENCE (body) => body . ser (version , bytes) , Self :: RESOURCE_REQUEST (body) => body . ser (version , bytes) , Self :: LOG_DATA (body) => body . ser (version , bytes) , Self :: ATTITUDE_QUATERNION_COV (body) => body . ser (version , bytes) , Self :: TRAJECTORY_REPRESENTATION_BEZIER (body) => body . ser (version , bytes) , Self :: SAFETY_ALLOWED_AREA (body) => body . ser (version , bytes) , Self :: STATUSTEXT (body) => body . ser (version , bytes) , Self :: RADIO (body) => body . ser (version , bytes) , Self :: CELLULAR_STATUS (body) => body . ser (version , bytes) , Self :: DEVICE_OP_READ (body) => body . ser (version , bytes) , Self :: WIFI_CONFIG_AP (body) => body . ser (version , bytes) , Self :: GENERATOR_STATUS (body) => body . ser (version , bytes) , Self :: NAMED_VALUE_INT (body) => body . ser (version , bytes) , Self :: HIL_CONTROLS (body) => body . ser (version , bytes) , Self :: AUTOPILOT_VERSION (body) => body . ser (version , bytes) , Self :: AP_ADC (body) => body . ser (version , bytes) , Self :: HIL_STATE (body) => body . ser (version , bytes) , Self :: PARAM_MAP_RC (body) => body . ser (version , bytes) , Self :: MAG_CAL_PROGRESS (body) => body . ser (version , bytes) , Self :: GIMBAL_CONTROL (body) => body . ser (version , bytes) , Self :: DISTANCE_SENSOR (body) => body . ser (version , bytes) , Self :: SYSTEM_TIME (body) => body . ser (version , bytes) , Self :: COMMAND_LONG (body) => body . ser (version , bytes) , Self :: GPS_INJECT_DATA (body) => body . ser (version , bytes) , Self :: OPTICAL_FLOW (body) => body . ser (version , bytes) , Self :: GOPRO_HEARTBEAT (body) => body . ser (version , bytes) , Self :: MAG_CAL_REPORT (body) => body . ser (version , bytes) , Self :: MESSAGE_INTERVAL (body) => body . ser (version , bytes) , Self :: WINCH_STATUS (body) => body . ser (version , bytes) , Self :: GPS_GLOBAL_ORIGIN (body) => body . ser (version , bytes) , Self :: MOUNT_ORIENTATION (body) => body . ser (version , bytes) , Self :: ODOMETRY (body) => body . ser (version , bytes) , Self :: SETUP_SIGNING (body) => body . ser (version , bytes) , Self :: LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET (body) => body . ser (version , bytes) , Self :: MISSION_CLEAR_ALL (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_MESSAGE_PACK (body) => body . ser (version , bytes) , Self :: DATA64 (body) => body . ser (version , bytes) , Self :: REMOTE_LOG_BLOCK_STATUS (body) => body . ser (version , bytes) , Self :: GOPRO_SET_REQUEST (body) => body . ser (version , bytes) , Self :: SCALED_PRESSURE3 (body) => body . ser (version , bytes) , Self :: REQUEST_DATA_STREAM (body) => body . ser (version , bytes) , Self :: LOG_REQUEST_END (body) => body . ser (version , bytes) , Self :: STORAGE_INFORMATION (body) => body . ser (version , bytes) , Self :: HIL_SENSOR (body) => body . ser (version , bytes) , Self :: AIS_VESSEL (body) => body . ser (version , bytes) , Self :: CUBEPILOT_FIRMWARE_UPDATE_START (body) => body . ser (version , bytes) , Self :: BATTERY2 (body) => body . ser (version , bytes) , Self :: GLOBAL_POSITION_INT (body) => body . ser (version , bytes) , Self :: RC_CHANNELS_SCALED (body) => body . ser (version , bytes) , Self :: COLLISION (body) => body . ser (version , bytes) , Self :: WATER_DEPTH (body) => body . ser (version , bytes) , Self :: ESC_TELEMETRY_5_TO_8 (body) => body . ser (version , bytes) , Self :: HERELINK_VIDEO_STREAM_INFORMATION (body) => body . ser (version , bytes) , Self :: LOG_ERASE (body) => body . ser (version , bytes) , Self :: SET_HOME_POSITION (body) => body . ser (version , bytes) , Self :: CAMERA_FOV_STATUS (body) => body . ser (version , bytes) , Self :: SCALED_PRESSURE (body) => body . ser (version , bytes) , Self :: PARAM_REQUEST_READ (body) => body . ser (version , bytes) , Self :: HIL_RC_INPUTS_RAW (body) => body . ser (version , bytes) , Self :: SET_MODE (body) => body . ser (version , bytes) , Self :: GIMBAL_MANAGER_SET_ATTITUDE (body) => body . ser (version , bytes) , Self :: CAMERA_INFORMATION (body) => body . ser (version , bytes) , Self :: GLOBAL_POSITION_INT_COV (body) => body . ser (version , bytes) , Self :: GPS_STATUS (body) => body . ser (version , bytes) , Self :: RESPONSE_EVENT_ERROR (body) => body . ser (version , bytes) , } } fn extra_crc (id : u32) -> u8 { match id { HEARTBEAT_DATA :: ID => HEARTBEAT_DATA :: EXTRA_CRC , MISSION_ITEM_REACHED_DATA :: ID => MISSION_ITEM_REACHED_DATA :: EXTRA_CRC , OSD_PARAM_SHOW_CONFIG_DATA :: ID => OSD_PARAM_SHOW_CONFIG_DATA :: EXTRA_CRC , TIMESYNC_DATA :: ID => TIMESYNC_DATA :: EXTRA_CRC , GOPRO_GET_REQUEST_DATA :: ID => GOPRO_GET_REQUEST_DATA :: EXTRA_CRC , TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: ID => TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: EXTRA_CRC , POSITION_TARGET_LOCAL_NED_DATA :: ID => POSITION_TARGET_LOCAL_NED_DATA :: EXTRA_CRC , LOCAL_POSITION_NED_DATA :: ID => LOCAL_POSITION_NED_DATA :: EXTRA_CRC , TIME_ESTIMATE_TO_TARGET_DATA :: ID => TIME_ESTIMATE_TO_TARGET_DATA :: EXTRA_CRC , SUPPORTED_TUNES_DATA :: ID => SUPPORTED_TUNES_DATA :: EXTRA_CRC , VFR_HUD_DATA :: ID => VFR_HUD_DATA :: EXTRA_CRC , POSITION_TARGET_GLOBAL_INT_DATA :: ID => POSITION_TARGET_GLOBAL_INT_DATA :: EXTRA_CRC , EFI_STATUS_DATA :: ID => EFI_STATUS_DATA :: EXTRA_CRC , ALTITUDE_DATA :: ID => ALTITUDE_DATA :: EXTRA_CRC , RAW_PRESSURE_DATA :: ID => RAW_PRESSURE_DATA :: EXTRA_CRC , OBSTACLE_DISTANCE_DATA :: ID => OBSTACLE_DISTANCE_DATA :: EXTRA_CRC , LINK_NODE_STATUS_DATA :: ID => LINK_NODE_STATUS_DATA :: EXTRA_CRC , AIRSPEED_AUTOCAL_DATA :: ID => AIRSPEED_AUTOCAL_DATA :: EXTRA_CRC , SET_GPS_GLOBAL_ORIGIN_DATA :: ID => SET_GPS_GLOBAL_ORIGIN_DATA :: EXTRA_CRC , RADIO_STATUS_DATA :: ID => RADIO_STATUS_DATA :: EXTRA_CRC , LOGGING_DATA_DATA :: ID => LOGGING_DATA_DATA :: EXTRA_CRC , HOME_POSITION_DATA :: ID => HOME_POSITION_DATA :: EXTRA_CRC , WHEEL_DISTANCE_DATA :: ID => WHEEL_DISTANCE_DATA :: EXTRA_CRC , GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: ID => GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: EXTRA_CRC , FILE_TRANSFER_PROTOCOL_DATA :: ID => FILE_TRANSFER_PROTOCOL_DATA :: EXTRA_CRC , MISSION_REQUEST_PARTIAL_LIST_DATA :: ID => MISSION_REQUEST_PARTIAL_LIST_DATA :: EXTRA_CRC , RC_CHANNELS_RAW_DATA :: ID => RC_CHANNELS_RAW_DATA :: EXTRA_CRC , ACTUATOR_CONTROL_TARGET_DATA :: ID => ACTUATOR_CONTROL_TARGET_DATA :: EXTRA_CRC , FOLLOW_TARGET_DATA :: ID => FOLLOW_TARGET_DATA :: EXTRA_CRC , CANFD_FRAME_DATA :: ID => CANFD_FRAME_DATA :: EXTRA_CRC , VIDEO_STREAM_STATUS_DATA :: ID => VIDEO_STREAM_STATUS_DATA :: EXTRA_CRC , PARAM_SET_DATA :: ID => PARAM_SET_DATA :: EXTRA_CRC , SYS_STATUS_DATA :: ID => SYS_STATUS_DATA :: EXTRA_CRC , ADSB_VEHICLE_DATA :: ID => ADSB_VEHICLE_DATA :: EXTRA_CRC , WIND_COV_DATA :: ID => WIND_COV_DATA :: EXTRA_CRC , ESTIMATOR_STATUS_DATA :: ID => ESTIMATOR_STATUS_DATA :: EXTRA_CRC , OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: ID => OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: EXTRA_CRC , UAVIONIX_ADSB_OUT_CFG_DATA :: ID => UAVIONIX_ADSB_OUT_CFG_DATA :: EXTRA_CRC , FENCE_STATUS_DATA :: ID => FENCE_STATUS_DATA :: EXTRA_CRC , AUTOPILOT_VERSION_REQUEST_DATA :: ID => AUTOPILOT_VERSION_REQUEST_DATA :: EXTRA_CRC , DATA16_DATA :: ID => DATA16_DATA :: EXTRA_CRC , MANUAL_SETPOINT_DATA :: ID => MANUAL_SETPOINT_DATA :: EXTRA_CRC , POWER_STATUS_DATA :: ID => POWER_STATUS_DATA :: EXTRA_CRC , SET_ACTUATOR_CONTROL_TARGET_DATA :: ID => SET_ACTUATOR_CONTROL_TARGET_DATA :: EXTRA_CRC , HWSTATUS_DATA :: ID => HWSTATUS_DATA :: EXTRA_CRC , SET_POSITION_TARGET_LOCAL_NED_DATA :: ID => SET_POSITION_TARGET_LOCAL_NED_DATA :: EXTRA_CRC , CAMERA_IMAGE_CAPTURED_DATA :: ID => CAMERA_IMAGE_CAPTURED_DATA :: EXTRA_CRC , CAMERA_STATUS_DATA :: ID => CAMERA_STATUS_DATA :: EXTRA_CRC , SCALED_IMU2_DATA :: ID => SCALED_IMU2_DATA :: EXTRA_CRC , PARAM_VALUE_DATA :: ID => PARAM_VALUE_DATA :: EXTRA_CRC , TERRAIN_REQUEST_DATA :: ID => TERRAIN_REQUEST_DATA :: EXTRA_CRC , WIND_DATA :: ID => WIND_DATA :: EXTRA_CRC , DATA_TRANSMISSION_HANDSHAKE_DATA :: ID => DATA_TRANSMISSION_HANDSHAKE_DATA :: EXTRA_CRC , TUNNEL_DATA :: ID => TUNNEL_DATA :: EXTRA_CRC , HIL_ACTUATOR_CONTROLS_DATA :: ID => HIL_ACTUATOR_CONTROLS_DATA :: EXTRA_CRC , UAVCAN_NODE_STATUS_DATA :: ID => UAVCAN_NODE_STATUS_DATA :: EXTRA_CRC , GPS_RTK_DATA :: ID => GPS_RTK_DATA :: EXTRA_CRC , HYGROMETER_SENSOR_DATA :: ID => HYGROMETER_SENSOR_DATA :: EXTRA_CRC , COMPASSMOT_STATUS_DATA :: ID => COMPASSMOT_STATUS_DATA :: EXTRA_CRC , EXTENDED_SYS_STATE_DATA :: ID => EXTENDED_SYS_STATE_DATA :: EXTRA_CRC , GIMBAL_DEVICE_INFORMATION_DATA :: ID => GIMBAL_DEVICE_INFORMATION_DATA :: EXTRA_CRC , PLAY_TUNE_V2_DATA :: ID => PLAY_TUNE_V2_DATA :: EXTRA_CRC , OPEN_DRONE_ID_ARM_STATUS_DATA :: ID => OPEN_DRONE_ID_ARM_STATUS_DATA :: EXTRA_CRC , SCALED_PRESSURE2_DATA :: ID => SCALED_PRESSURE2_DATA :: EXTRA_CRC , DATA96_DATA :: ID => DATA96_DATA :: EXTRA_CRC , FLIGHT_INFORMATION_DATA :: ID => FLIGHT_INFORMATION_DATA :: EXTRA_CRC , REMOTE_LOG_DATA_BLOCK_DATA :: ID => REMOTE_LOG_DATA_BLOCK_DATA :: EXTRA_CRC , ACTUATOR_OUTPUT_STATUS_DATA :: ID => ACTUATOR_OUTPUT_STATUS_DATA :: EXTRA_CRC , AHRS_DATA :: ID => AHRS_DATA :: EXTRA_CRC , DEBUG_VECT_DATA :: ID => DEBUG_VECT_DATA :: EXTRA_CRC , UTM_GLOBAL_POSITION_DATA :: ID => UTM_GLOBAL_POSITION_DATA :: EXTRA_CRC , MISSION_ITEM_INT_DATA :: ID => MISSION_ITEM_INT_DATA :: EXTRA_CRC , CAN_FILTER_MODIFY_DATA :: ID => CAN_FILTER_MODIFY_DATA :: EXTRA_CRC , DEVICE_OP_READ_REPLY_DATA :: ID => DEVICE_OP_READ_REPLY_DATA :: EXTRA_CRC , ADAP_TUNING_DATA :: ID => ADAP_TUNING_DATA :: EXTRA_CRC , SET_POSITION_TARGET_GLOBAL_INT_DATA :: ID => SET_POSITION_TARGET_GLOBAL_INT_DATA :: EXTRA_CRC , PROTOCOL_VERSION_DATA :: ID => PROTOCOL_VERSION_DATA :: EXTRA_CRC , HIL_GPS_DATA :: ID => HIL_GPS_DATA :: EXTRA_CRC , SCALED_IMU_DATA :: ID => SCALED_IMU_DATA :: EXTRA_CRC , UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: ID => UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: EXTRA_CRC , COMMAND_CANCEL_DATA :: ID => COMMAND_CANCEL_DATA :: EXTRA_CRC , MOUNT_CONFIGURE_DATA :: ID => MOUNT_CONFIGURE_DATA :: EXTRA_CRC , LOGGING_ACK_DATA :: ID => LOGGING_ACK_DATA :: EXTRA_CRC , ATT_POS_MOCAP_DATA :: ID => ATT_POS_MOCAP_DATA :: EXTRA_CRC , PARAM_EXT_REQUEST_READ_DATA :: ID => PARAM_EXT_REQUEST_READ_DATA :: EXTRA_CRC , CAMERA_TRACKING_IMAGE_STATUS_DATA :: ID => CAMERA_TRACKING_IMAGE_STATUS_DATA :: EXTRA_CRC , EKF_STATUS_REPORT_DATA :: ID => EKF_STATUS_REPORT_DATA :: EXTRA_CRC , OBSTACLE_DISTANCE_3D_DATA :: ID => OBSTACLE_DISTANCE_3D_DATA :: EXTRA_CRC , TERRAIN_DATA_DATA :: ID => TERRAIN_DATA_DATA :: EXTRA_CRC , PARAM_REQUEST_LIST_DATA :: ID => PARAM_REQUEST_LIST_DATA :: EXTRA_CRC , RPM_DATA :: ID => RPM_DATA :: EXTRA_CRC , MISSION_REQUEST_INT_DATA :: ID => MISSION_REQUEST_INT_DATA :: EXTRA_CRC , CELLULAR_CONFIG_DATA :: ID => CELLULAR_CONFIG_DATA :: EXTRA_CRC , SENSOR_OFFSETS_DATA :: ID => SENSOR_OFFSETS_DATA :: EXTRA_CRC , AHRS3_DATA :: ID => AHRS3_DATA :: EXTRA_CRC , LOG_REQUEST_LIST_DATA :: ID => LOG_REQUEST_LIST_DATA :: EXTRA_CRC , DIGICAM_CONFIGURE_DATA :: ID => DIGICAM_CONFIGURE_DATA :: EXTRA_CRC , GPS2_RAW_DATA :: ID => GPS2_RAW_DATA :: EXTRA_CRC , OPEN_DRONE_ID_SELF_ID_DATA :: ID => OPEN_DRONE_ID_SELF_ID_DATA :: EXTRA_CRC , AHRS2_DATA :: ID => AHRS2_DATA :: EXTRA_CRC , VICON_POSITION_ESTIMATE_DATA :: ID => VICON_POSITION_ESTIMATE_DATA :: EXTRA_CRC , CHANGE_OPERATOR_CONTROL_DATA :: ID => CHANGE_OPERATOR_CONTROL_DATA :: EXTRA_CRC , RC_CHANNELS_OVERRIDE_DATA :: ID => RC_CHANNELS_OVERRIDE_DATA :: EXTRA_CRC , MISSION_WRITE_PARTIAL_LIST_DATA :: ID => MISSION_WRITE_PARTIAL_LIST_DATA :: EXTRA_CRC , CAMERA_TRIGGER_DATA :: ID => CAMERA_TRIGGER_DATA :: EXTRA_CRC , MISSION_REQUEST_LIST_DATA :: ID => MISSION_REQUEST_LIST_DATA :: EXTRA_CRC , DATA32_DATA :: ID => DATA32_DATA :: EXTRA_CRC , CAMERA_CAPTURE_STATUS_DATA :: ID => CAMERA_CAPTURE_STATUS_DATA :: EXTRA_CRC , TERRAIN_CHECK_DATA :: ID => TERRAIN_CHECK_DATA :: EXTRA_CRC , ICAROUS_KINEMATIC_BANDS_DATA :: ID => ICAROUS_KINEMATIC_BANDS_DATA :: EXTRA_CRC , CHANGE_OPERATOR_CONTROL_ACK_DATA :: ID => CHANGE_OPERATOR_CONTROL_ACK_DATA :: EXTRA_CRC , ORBIT_EXECUTION_STATUS_DATA :: ID => ORBIT_EXECUTION_STATUS_DATA :: EXTRA_CRC , DEVICE_OP_WRITE_DATA :: ID => DEVICE_OP_WRITE_DATA :: EXTRA_CRC , OPEN_DRONE_ID_LOCATION_DATA :: ID => OPEN_DRONE_ID_LOCATION_DATA :: EXTRA_CRC , LANDING_TARGET_DATA :: ID => LANDING_TARGET_DATA :: EXTRA_CRC , BATTERY_STATUS_DATA :: ID => BATTERY_STATUS_DATA :: EXTRA_CRC , GOPRO_SET_RESPONSE_DATA :: ID => GOPRO_SET_RESPONSE_DATA :: EXTRA_CRC , EVENT_DATA :: ID => EVENT_DATA :: EXTRA_CRC , GIMBAL_MANAGER_SET_PITCHYAW_DATA :: ID => GIMBAL_MANAGER_SET_PITCHYAW_DATA :: EXTRA_CRC , SMART_BATTERY_INFO_DATA :: ID => SMART_BATTERY_INFO_DATA :: EXTRA_CRC , ATTITUDE_QUATERNION_DATA :: ID => ATTITUDE_QUATERNION_DATA :: EXTRA_CRC , SET_ATTITUDE_TARGET_DATA :: ID => SET_ATTITUDE_TARGET_DATA :: EXTRA_CRC , MANUAL_CONTROL_DATA :: ID => MANUAL_CONTROL_DATA :: EXTRA_CRC , RALLY_FETCH_POINT_DATA :: ID => RALLY_FETCH_POINT_DATA :: EXTRA_CRC , VISION_POSITION_ESTIMATE_DATA :: ID => VISION_POSITION_ESTIMATE_DATA :: EXTRA_CRC , RALLY_POINT_DATA :: ID => RALLY_POINT_DATA :: EXTRA_CRC , VIDEO_STREAM_INFORMATION_DATA :: ID => VIDEO_STREAM_INFORMATION_DATA :: EXTRA_CRC , OPEN_DRONE_ID_BASIC_ID_DATA :: ID => OPEN_DRONE_ID_BASIC_ID_DATA :: EXTRA_CRC , ENCAPSULATED_DATA_DATA :: ID => ENCAPSULATED_DATA_DATA :: EXTRA_CRC , DEVICE_OP_WRITE_REPLY_DATA :: ID => DEVICE_OP_WRITE_REPLY_DATA :: EXTRA_CRC , PING_DATA :: ID => PING_DATA :: EXTRA_CRC , SET_MAG_OFFSETS_DATA :: ID => SET_MAG_OFFSETS_DATA :: EXTRA_CRC , GPS_INPUT_DATA :: ID => GPS_INPUT_DATA :: EXTRA_CRC , LOG_ENTRY_DATA :: ID => LOG_ENTRY_DATA :: EXTRA_CRC , RAW_IMU_DATA :: ID => RAW_IMU_DATA :: EXTRA_CRC , GPS_RAW_INT_DATA :: ID => GPS_RAW_INT_DATA :: EXTRA_CRC , CONTROL_SYSTEM_STATE_DATA :: ID => CONTROL_SYSTEM_STATE_DATA :: EXTRA_CRC , DEBUG_DATA :: ID => DEBUG_DATA :: EXTRA_CRC , ESC_TELEMETRY_1_TO_4_DATA :: ID => ESC_TELEMETRY_1_TO_4_DATA :: EXTRA_CRC , MOUNT_CONTROL_DATA :: ID => MOUNT_CONTROL_DATA :: EXTRA_CRC , COMPONENT_METADATA_DATA :: ID => COMPONENT_METADATA_DATA :: EXTRA_CRC , NAMED_VALUE_FLOAT_DATA :: ID => NAMED_VALUE_FLOAT_DATA :: EXTRA_CRC , GPS2_RTK_DATA :: ID => GPS2_RTK_DATA :: EXTRA_CRC , VIBRATION_DATA :: ID => VIBRATION_DATA :: EXTRA_CRC , MISSION_CURRENT_DATA :: ID => MISSION_CURRENT_DATA :: EXTRA_CRC , HERELINK_TELEM_DATA :: ID => HERELINK_TELEM_DATA :: EXTRA_CRC , PARAM_EXT_ACK_DATA :: ID => PARAM_EXT_ACK_DATA :: EXTRA_CRC , MISSION_REQUEST_DATA :: ID => MISSION_REQUEST_DATA :: EXTRA_CRC , MEMINFO_DATA :: ID => MEMINFO_DATA :: EXTRA_CRC , LED_CONTROL_DATA :: ID => LED_CONTROL_DATA :: EXTRA_CRC , MISSION_ITEM_DATA :: ID => MISSION_ITEM_DATA :: EXTRA_CRC , GPS_RTCM_DATA_DATA :: ID => GPS_RTCM_DATA_DATA :: EXTRA_CRC , OPTICAL_FLOW_RAD_DATA :: ID => OPTICAL_FLOW_RAD_DATA :: EXTRA_CRC , VISION_SPEED_ESTIMATE_DATA :: ID => VISION_SPEED_ESTIMATE_DATA :: EXTRA_CRC , TERRAIN_REPORT_DATA :: ID => TERRAIN_REPORT_DATA :: EXTRA_CRC , V2_EXTENSION_DATA :: ID => V2_EXTENSION_DATA :: EXTRA_CRC , CAN_FRAME_DATA :: ID => CAN_FRAME_DATA :: EXTRA_CRC , REQUEST_EVENT_DATA :: ID => REQUEST_EVENT_DATA :: EXTRA_CRC , OSD_PARAM_CONFIG_DATA :: ID => OSD_PARAM_CONFIG_DATA :: EXTRA_CRC , AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: ID => AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: EXTRA_CRC , ATTITUDE_DATA :: ID => ATTITUDE_DATA :: EXTRA_CRC , UAVCAN_NODE_INFO_DATA :: ID => UAVCAN_NODE_INFO_DATA :: EXTRA_CRC , HIL_OPTICAL_FLOW_DATA :: ID => HIL_OPTICAL_FLOW_DATA :: EXTRA_CRC , MEMORY_VECT_DATA :: ID => MEMORY_VECT_DATA :: EXTRA_CRC , SAFETY_SET_ALLOWED_AREA_DATA :: ID => SAFETY_SET_ALLOWED_AREA_DATA :: EXTRA_CRC , GIMBAL_MANAGER_STATUS_DATA :: ID => GIMBAL_MANAGER_STATUS_DATA :: EXTRA_CRC , GLOBAL_VISION_POSITION_ESTIMATE_DATA :: ID => GLOBAL_VISION_POSITION_ESTIMATE_DATA :: EXTRA_CRC , AUTH_KEY_DATA :: ID => AUTH_KEY_DATA :: EXTRA_CRC , COMMAND_ACK_DATA :: ID => COMMAND_ACK_DATA :: EXTRA_CRC , DIGICAM_CONTROL_DATA :: ID => DIGICAM_CONTROL_DATA :: EXTRA_CRC , FENCE_FETCH_POINT_DATA :: ID => FENCE_FETCH_POINT_DATA :: EXTRA_CRC , ESC_TELEMETRY_9_TO_12_DATA :: ID => ESC_TELEMETRY_9_TO_12_DATA :: EXTRA_CRC , SERIAL_CONTROL_DATA :: ID => SERIAL_CONTROL_DATA :: EXTRA_CRC , MCU_STATUS_DATA :: ID => MCU_STATUS_DATA :: EXTRA_CRC , COMMAND_INT_DATA :: ID => COMMAND_INT_DATA :: EXTRA_CRC , RAW_RPM_DATA :: ID => RAW_RPM_DATA :: EXTRA_CRC , OPEN_DRONE_ID_OPERATOR_ID_DATA :: ID => OPEN_DRONE_ID_OPERATOR_ID_DATA :: EXTRA_CRC , DATA_STREAM_DATA :: ID => DATA_STREAM_DATA :: EXTRA_CRC , MISSION_COUNT_DATA :: ID => MISSION_COUNT_DATA :: EXTRA_CRC , SCALED_IMU3_DATA :: ID => SCALED_IMU3_DATA :: EXTRA_CRC , DEBUG_FLOAT_ARRAY_DATA :: ID => DEBUG_FLOAT_ARRAY_DATA :: EXTRA_CRC , GIMBAL_MANAGER_INFORMATION_DATA :: ID => GIMBAL_MANAGER_INFORMATION_DATA :: EXTRA_CRC , HIGH_LATENCY2_DATA :: ID => HIGH_LATENCY2_DATA :: EXTRA_CRC , PLAY_TUNE_DATA :: ID => PLAY_TUNE_DATA :: EXTRA_CRC , AOA_SSA_DATA :: ID => AOA_SSA_DATA :: EXTRA_CRC , LOCAL_POSITION_NED_COV_DATA :: ID => LOCAL_POSITION_NED_COV_DATA :: EXTRA_CRC , MISSION_ACK_DATA :: ID => MISSION_ACK_DATA :: EXTRA_CRC , LIMITS_STATUS_DATA :: ID => LIMITS_STATUS_DATA :: EXTRA_CRC , COMPONENT_INFORMATION_DATA :: ID => COMPONENT_INFORMATION_DATA :: EXTRA_CRC , GIMBAL_TORQUE_CMD_REPORT_DATA :: ID => GIMBAL_TORQUE_CMD_REPORT_DATA :: EXTRA_CRC , MOUNT_STATUS_DATA :: ID => MOUNT_STATUS_DATA :: EXTRA_CRC , SIM_STATE_DATA :: ID => SIM_STATE_DATA :: EXTRA_CRC , MISSION_SET_CURRENT_DATA :: ID => MISSION_SET_CURRENT_DATA :: EXTRA_CRC , PARAM_EXT_SET_DATA :: ID => PARAM_EXT_SET_DATA :: EXTRA_CRC , ISBD_LINK_STATUS_DATA :: ID => ISBD_LINK_STATUS_DATA :: EXTRA_CRC , RC_CHANNELS_DATA :: ID => RC_CHANNELS_DATA :: EXTRA_CRC , CUBEPILOT_FIRMWARE_UPDATE_RESP_DATA :: ID => CUBEPILOT_FIRMWARE_UPDATE_RESP_DATA :: EXTRA_CRC , SIMSTATE_DATA :: ID => SIMSTATE_DATA :: EXTRA_CRC , CAMERA_TRACKING_GEO_STATUS_DATA :: ID => CAMERA_TRACKING_GEO_STATUS_DATA :: EXTRA_CRC , ESC_STATUS_DATA :: ID => ESC_STATUS_DATA :: EXTRA_CRC , CUBEPILOT_RAW_RC_DATA :: ID => CUBEPILOT_RAW_RC_DATA :: EXTRA_CRC , HIGHRES_IMU_DATA :: ID => HIGHRES_IMU_DATA :: EXTRA_CRC , NAV_CONTROLLER_OUTPUT_DATA :: ID => NAV_CONTROLLER_OUTPUT_DATA :: EXTRA_CRC , OPEN_DRONE_ID_AUTHENTICATION_DATA :: ID => OPEN_DRONE_ID_AUTHENTICATION_DATA :: EXTRA_CRC , LOGGING_DATA_ACKED_DATA :: ID => LOGGING_DATA_ACKED_DATA :: EXTRA_CRC , ICAROUS_HEARTBEAT_DATA :: ID => ICAROUS_HEARTBEAT_DATA :: EXTRA_CRC , FENCE_POINT_DATA :: ID => FENCE_POINT_DATA :: EXTRA_CRC , OSD_PARAM_SHOW_CONFIG_REPLY_DATA :: ID => OSD_PARAM_SHOW_CONFIG_REPLY_DATA :: EXTRA_CRC , ATTITUDE_TARGET_DATA :: ID => ATTITUDE_TARGET_DATA :: EXTRA_CRC , LOG_REQUEST_DATA_DATA :: ID => LOG_REQUEST_DATA_DATA :: EXTRA_CRC , GIMBAL_REPORT_DATA :: ID => GIMBAL_REPORT_DATA :: EXTRA_CRC , PARAM_EXT_VALUE_DATA :: ID => PARAM_EXT_VALUE_DATA :: EXTRA_CRC , SERVO_OUTPUT_RAW_DATA :: ID => SERVO_OUTPUT_RAW_DATA :: EXTRA_CRC , ESC_INFO_DATA :: ID => ESC_INFO_DATA :: EXTRA_CRC , OPEN_DRONE_ID_SYSTEM_DATA :: ID => OPEN_DRONE_ID_SYSTEM_DATA :: EXTRA_CRC , UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: ID => UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: EXTRA_CRC , HIGH_LATENCY_DATA :: ID => HIGH_LATENCY_DATA :: EXTRA_CRC , PID_TUNING_DATA :: ID => PID_TUNING_DATA :: EXTRA_CRC , RANGEFINDER_DATA :: ID => RANGEFINDER_DATA :: EXTRA_CRC , GIMBAL_DEVICE_SET_ATTITUDE_DATA :: ID => GIMBAL_DEVICE_SET_ATTITUDE_DATA :: EXTRA_CRC , VISION_POSITION_DELTA_DATA :: ID => VISION_POSITION_DELTA_DATA :: EXTRA_CRC , CAMERA_FEEDBACK_DATA :: ID => CAMERA_FEEDBACK_DATA :: EXTRA_CRC , BUTTON_CHANGE_DATA :: ID => BUTTON_CHANGE_DATA :: EXTRA_CRC , DEEPSTALL_DATA :: ID => DEEPSTALL_DATA :: EXTRA_CRC , ONBOARD_COMPUTER_STATUS_DATA :: ID => ONBOARD_COMPUTER_STATUS_DATA :: EXTRA_CRC , GOPRO_GET_RESPONSE_DATA :: ID => GOPRO_GET_RESPONSE_DATA :: EXTRA_CRC , GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: ID => GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: EXTRA_CRC , PARAM_EXT_REQUEST_LIST_DATA :: ID => PARAM_EXT_REQUEST_LIST_DATA :: EXTRA_CRC , OSD_PARAM_CONFIG_REPLY_DATA :: ID => OSD_PARAM_CONFIG_REPLY_DATA :: EXTRA_CRC , HIL_STATE_QUATERNION_DATA :: ID => HIL_STATE_QUATERNION_DATA :: EXTRA_CRC , CAMERA_SETTINGS_DATA :: ID => CAMERA_SETTINGS_DATA :: EXTRA_CRC , CURRENT_EVENT_SEQUENCE_DATA :: ID => CURRENT_EVENT_SEQUENCE_DATA :: EXTRA_CRC , RESOURCE_REQUEST_DATA :: ID => RESOURCE_REQUEST_DATA :: EXTRA_CRC , LOG_DATA_DATA :: ID => LOG_DATA_DATA :: EXTRA_CRC , ATTITUDE_QUATERNION_COV_DATA :: ID => ATTITUDE_QUATERNION_COV_DATA :: EXTRA_CRC , TRAJECTORY_REPRESENTATION_BEZIER_DATA :: ID => TRAJECTORY_REPRESENTATION_BEZIER_DATA :: EXTRA_CRC , SAFETY_ALLOWED_AREA_DATA :: ID => SAFETY_ALLOWED_AREA_DATA :: EXTRA_CRC , STATUSTEXT_DATA :: ID => STATUSTEXT_DATA :: EXTRA_CRC , RADIO_DATA :: ID => RADIO_DATA :: EXTRA_CRC , CELLULAR_STATUS_DATA :: ID => CELLULAR_STATUS_DATA :: EXTRA_CRC , DEVICE_OP_READ_DATA :: ID => DEVICE_OP_READ_DATA :: EXTRA_CRC , WIFI_CONFIG_AP_DATA :: ID => WIFI_CONFIG_AP_DATA :: EXTRA_CRC , GENERATOR_STATUS_DATA :: ID => GENERATOR_STATUS_DATA :: EXTRA_CRC , NAMED_VALUE_INT_DATA :: ID => NAMED_VALUE_INT_DATA :: EXTRA_CRC , HIL_CONTROLS_DATA :: ID => HIL_CONTROLS_DATA :: EXTRA_CRC , AUTOPILOT_VERSION_DATA :: ID => AUTOPILOT_VERSION_DATA :: EXTRA_CRC , AP_ADC_DATA :: ID => AP_ADC_DATA :: EXTRA_CRC , HIL_STATE_DATA :: ID => HIL_STATE_DATA :: EXTRA_CRC , PARAM_MAP_RC_DATA :: ID => PARAM_MAP_RC_DATA :: EXTRA_CRC , MAG_CAL_PROGRESS_DATA :: ID => MAG_CAL_PROGRESS_DATA :: EXTRA_CRC , GIMBAL_CONTROL_DATA :: ID => GIMBAL_CONTROL_DATA :: EXTRA_CRC , DISTANCE_SENSOR_DATA :: ID => DISTANCE_SENSOR_DATA :: EXTRA_CRC , SYSTEM_TIME_DATA :: ID => SYSTEM_TIME_DATA :: EXTRA_CRC , COMMAND_LONG_DATA :: ID => COMMAND_LONG_DATA :: EXTRA_CRC , GPS_INJECT_DATA_DATA :: ID => GPS_INJECT_DATA_DATA :: EXTRA_CRC , OPTICAL_FLOW_DATA :: ID => OPTICAL_FLOW_DATA :: EXTRA_CRC , GOPRO_HEARTBEAT_DATA :: ID => GOPRO_HEARTBEAT_DATA :: EXTRA_CRC , MAG_CAL_REPORT_DATA :: ID => MAG_CAL_REPORT_DATA :: EXTRA_CRC , MESSAGE_INTERVAL_DATA :: ID => MESSAGE_INTERVAL_DATA :: EXTRA_CRC , WINCH_STATUS_DATA :: ID => WINCH_STATUS_DATA :: EXTRA_CRC , GPS_GLOBAL_ORIGIN_DATA :: ID => GPS_GLOBAL_ORIGIN_DATA :: EXTRA_CRC , MOUNT_ORIENTATION_DATA :: ID => MOUNT_ORIENTATION_DATA :: EXTRA_CRC , ODOMETRY_DATA :: ID => ODOMETRY_DATA :: EXTRA_CRC , SETUP_SIGNING_DATA :: ID => SETUP_SIGNING_DATA :: EXTRA_CRC , LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: ID => LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: EXTRA_CRC , MISSION_CLEAR_ALL_DATA :: ID => MISSION_CLEAR_ALL_DATA :: EXTRA_CRC , OPEN_DRONE_ID_MESSAGE_PACK_DATA :: ID => OPEN_DRONE_ID_MESSAGE_PACK_DATA :: EXTRA_CRC , DATA64_DATA :: ID => DATA64_DATA :: EXTRA_CRC , REMOTE_LOG_BLOCK_STATUS_DATA :: ID => REMOTE_LOG_BLOCK_STATUS_DATA :: EXTRA_CRC , GOPRO_SET_REQUEST_DATA :: ID => GOPRO_SET_REQUEST_DATA :: EXTRA_CRC , SCALED_PRESSURE3_DATA :: ID => SCALED_PRESSURE3_DATA :: EXTRA_CRC , REQUEST_DATA_STREAM_DATA :: ID => REQUEST_DATA_STREAM_DATA :: EXTRA_CRC , LOG_REQUEST_END_DATA :: ID => LOG_REQUEST_END_DATA :: EXTRA_CRC , STORAGE_INFORMATION_DATA :: ID => STORAGE_INFORMATION_DATA :: EXTRA_CRC , HIL_SENSOR_DATA :: ID => HIL_SENSOR_DATA :: EXTRA_CRC , AIS_VESSEL_DATA :: ID => AIS_VESSEL_DATA :: EXTRA_CRC , CUBEPILOT_FIRMWARE_UPDATE_START_DATA :: ID => CUBEPILOT_FIRMWARE_UPDATE_START_DATA :: EXTRA_CRC , BATTERY2_DATA :: ID => BATTERY2_DATA :: EXTRA_CRC , GLOBAL_POSITION_INT_DATA :: ID => GLOBAL_POSITION_INT_DATA :: EXTRA_CRC , RC_CHANNELS_SCALED_DATA :: ID => RC_CHANNELS_SCALED_DATA :: EXTRA_CRC , COLLISION_DATA :: ID => COLLISION_DATA :: EXTRA_CRC , WATER_DEPTH_DATA :: ID => WATER_DEPTH_DATA :: EXTRA_CRC , ESC_TELEMETRY_5_TO_8_DATA :: ID => ESC_TELEMETRY_5_TO_8_DATA :: EXTRA_CRC , HERELINK_VIDEO_STREAM_INFORMATION_DATA :: ID => HERELINK_VIDEO_STREAM_INFORMATION_DATA :: EXTRA_CRC , LOG_ERASE_DATA :: ID => LOG_ERASE_DATA :: EXTRA_CRC , SET_HOME_POSITION_DATA :: ID => SET_HOME_POSITION_DATA :: EXTRA_CRC , CAMERA_FOV_STATUS_DATA :: ID => CAMERA_FOV_STATUS_DATA :: EXTRA_CRC , SCALED_PRESSURE_DATA :: ID => SCALED_PRESSURE_DATA :: EXTRA_CRC , PARAM_REQUEST_READ_DATA :: ID => PARAM_REQUEST_READ_DATA :: EXTRA_CRC , HIL_RC_INPUTS_RAW_DATA :: ID => HIL_RC_INPUTS_RAW_DATA :: EXTRA_CRC , SET_MODE_DATA :: ID => SET_MODE_DATA :: EXTRA_CRC , GIMBAL_MANAGER_SET_ATTITUDE_DATA :: ID => GIMBAL_MANAGER_SET_ATTITUDE_DATA :: EXTRA_CRC , CAMERA_INFORMATION_DATA :: ID => CAMERA_INFORMATION_DATA :: EXTRA_CRC , GLOBAL_POSITION_INT_COV_DATA :: ID => GLOBAL_POSITION_INT_COV_DATA :: EXTRA_CRC , GPS_STATUS_DATA :: ID => GPS_STATUS_DATA :: EXTRA_CRC , RESPONSE_EVENT_ERROR_DATA :: ID => RESPONSE_EVENT_ERROR_DATA :: EXTRA_CRC , _ => { 0 } , } } }
       
      \ No newline at end of file diff --git a/src/mavlink/home/runner/work/rust-mavlink/rust-mavlink/target/debug/build/mavlink-08cb26f928ee1368/out/common.rs.html b/src/mavlink/home/runner/work/rust-mavlink/rust-mavlink/target/debug/build/mavlink-08cb26f928ee1368/out/common.rs.html index 19956bb55c..6a4be67f18 100644 --- a/src/mavlink/home/runner/work/rust-mavlink/rust-mavlink/target/debug/build/mavlink-08cb26f928ee1368/out/common.rs.html +++ b/src/mavlink/home/runner/work/rust-mavlink/rust-mavlink/target/debug/build/mavlink-08cb26f928ee1368/out/common.rs.html @@ -1,3 +1,3 @@ common.rs - source
      1
      -
      # ! [doc = "This file was automatically generated, do not edit"] # [allow (unused_imports)] use num_derive :: FromPrimitive ; # [allow (unused_imports)] use num_traits :: FromPrimitive ; # [allow (unused_imports)] use num_derive :: ToPrimitive ; # [allow (unused_imports)] use num_traits :: ToPrimitive ; # [allow (unused_imports)] use bitflags :: bitflags ; use mavlink_core :: { MavlinkVersion , Message , MessageData , bytes :: Bytes , bytes_mut :: BytesMut } ; # [cfg (feature = "serde")] use serde :: { Serialize , Deserialize } ; # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MotorTestOrder { MOTOR_TEST_ORDER_DEFAULT = 0 , MOTOR_TEST_ORDER_SEQUENCE = 1 , MOTOR_TEST_ORDER_BOARD = 2 , } impl MotorTestOrder { pub const DEFAULT : Self = Self :: MOTOR_TEST_ORDER_DEFAULT ; } impl Default for MotorTestOrder { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum RcType { RC_TYPE_SPEKTRUM_DSM2 = 0 , RC_TYPE_SPEKTRUM_DSMX = 1 , } impl RcType { pub const DEFAULT : Self = Self :: RC_TYPE_SPEKTRUM_DSM2 ; } impl Default for RcType { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MavPowerStatus : u16 { const MAV_POWER_STATUS_BRICK_VALID = 1 ; const MAV_POWER_STATUS_SERVO_VALID = 2 ; const MAV_POWER_STATUS_USB_CONNECTED = 4 ; const MAV_POWER_STATUS_PERIPH_OVERCURRENT = 8 ; const MAV_POWER_STATUS_PERIPH_HIPOWER_OVERCURRENT = 16 ; const MAV_POWER_STATUS_CHANGED = 32 ; } } impl MavPowerStatus { pub const DEFAULT : Self = Self :: MAV_POWER_STATUS_BRICK_VALID ; } impl Default for MavPowerStatus { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct UtmDataAvailFlags : u8 { const UTM_DATA_AVAIL_FLAGS_TIME_VALID = 1 ; const UTM_DATA_AVAIL_FLAGS_UAS_ID_AVAILABLE = 2 ; const UTM_DATA_AVAIL_FLAGS_POSITION_AVAILABLE = 4 ; const UTM_DATA_AVAIL_FLAGS_ALTITUDE_AVAILABLE = 8 ; const UTM_DATA_AVAIL_FLAGS_RELATIVE_ALTITUDE_AVAILABLE = 16 ; const UTM_DATA_AVAIL_FLAGS_HORIZONTAL_VELO_AVAILABLE = 32 ; const UTM_DATA_AVAIL_FLAGS_VERTICAL_VELO_AVAILABLE = 64 ; const UTM_DATA_AVAIL_FLAGS_NEXT_WAYPOINT_AVAILABLE = 128 ; } } impl UtmDataAvailFlags { pub const DEFAULT : Self = Self :: UTM_DATA_AVAIL_FLAGS_TIME_VALID ; } impl Default for UtmDataAvailFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum WifiConfigApResponse { WIFI_CONFIG_AP_RESPONSE_UNDEFINED = 0 , WIFI_CONFIG_AP_RESPONSE_ACCEPTED = 1 , WIFI_CONFIG_AP_RESPONSE_REJECTED = 2 , WIFI_CONFIG_AP_RESPONSE_MODE_ERROR = 3 , WIFI_CONFIG_AP_RESPONSE_SSID_ERROR = 4 , WIFI_CONFIG_AP_RESPONSE_PASSWORD_ERROR = 5 , } impl WifiConfigApResponse { pub const DEFAULT : Self = Self :: WIFI_CONFIG_AP_RESPONSE_UNDEFINED ; } impl Default for WifiConfigApResponse { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidStatus { MAV_ODID_STATUS_UNDECLARED = 0 , MAV_ODID_STATUS_GROUND = 1 , MAV_ODID_STATUS_AIRBORNE = 2 , MAV_ODID_STATUS_EMERGENCY = 3 , MAV_ODID_STATUS_REMOTE_ID_SYSTEM_FAILURE = 4 , } impl MavOdidStatus { pub const DEFAULT : Self = Self :: MAV_ODID_STATUS_UNDECLARED ; } impl Default for MavOdidStatus { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SerialControlFlag : u8 { const SERIAL_CONTROL_FLAG_REPLY = 1 ; const SERIAL_CONTROL_FLAG_RESPOND = 2 ; const SERIAL_CONTROL_FLAG_EXCLUSIVE = 4 ; const SERIAL_CONTROL_FLAG_BLOCKING = 8 ; const SERIAL_CONTROL_FLAG_MULTI = 16 ; } } impl SerialControlFlag { pub const DEFAULT : Self = Self :: SERIAL_CONTROL_FLAG_REPLY ; } impl Default for SerialControlFlag { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MavEventCurrentSequenceFlags : u8 { const MAV_EVENT_CURRENT_SEQUENCE_FLAGS_RESET = 1 ; } } impl MavEventCurrentSequenceFlags { pub const DEFAULT : Self = Self :: MAV_EVENT_CURRENT_SEQUENCE_FLAGS_RESET ; } impl Default for MavEventCurrentSequenceFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum SerialControlDev { SERIAL_CONTROL_DEV_TELEM1 = 0 , SERIAL_CONTROL_DEV_TELEM2 = 1 , SERIAL_CONTROL_DEV_GPS1 = 2 , SERIAL_CONTROL_DEV_GPS2 = 3 , SERIAL_CONTROL_DEV_SHELL = 10 , SERIAL_CONTROL_SERIAL0 = 100 , SERIAL_CONTROL_SERIAL1 = 101 , SERIAL_CONTROL_SERIAL2 = 102 , SERIAL_CONTROL_SERIAL3 = 103 , SERIAL_CONTROL_SERIAL4 = 104 , SERIAL_CONTROL_SERIAL5 = 105 , SERIAL_CONTROL_SERIAL6 = 106 , SERIAL_CONTROL_SERIAL7 = 107 , SERIAL_CONTROL_SERIAL8 = 108 , SERIAL_CONTROL_SERIAL9 = 109 , } impl SerialControlDev { pub const DEFAULT : Self = Self :: SERIAL_CONTROL_DEV_TELEM1 ; } impl Default for SerialControlDev { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HlFailureFlag : u16 { const HL_FAILURE_FLAG_GPS = 1 ; const HL_FAILURE_FLAG_DIFFERENTIAL_PRESSURE = 2 ; const HL_FAILURE_FLAG_ABSOLUTE_PRESSURE = 4 ; const HL_FAILURE_FLAG_3D_ACCEL = 8 ; const HL_FAILURE_FLAG_3D_GYRO = 16 ; const HL_FAILURE_FLAG_3D_MAG = 32 ; const HL_FAILURE_FLAG_TERRAIN = 64 ; const HL_FAILURE_FLAG_BATTERY = 128 ; const HL_FAILURE_FLAG_RC_RECEIVER = 256 ; const HL_FAILURE_FLAG_OFFBOARD_LINK = 512 ; const HL_FAILURE_FLAG_ENGINE = 1024 ; const HL_FAILURE_FLAG_GEOFENCE = 2048 ; const HL_FAILURE_FLAG_ESTIMATOR = 4096 ; const HL_FAILURE_FLAG_MISSION = 8192 ; } } impl HlFailureFlag { pub const DEFAULT : Self = Self :: HL_FAILURE_FLAG_GPS ; } impl Default for HlFailureFlag { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum CameraMode { CAMERA_MODE_IMAGE = 0 , CAMERA_MODE_VIDEO = 1 , CAMERA_MODE_IMAGE_SURVEY = 2 , } impl CameraMode { pub const DEFAULT : Self = Self :: CAMERA_MODE_IMAGE ; } impl Default for CameraMode { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavMountMode { MAV_MOUNT_MODE_RETRACT = 0 , MAV_MOUNT_MODE_NEUTRAL = 1 , MAV_MOUNT_MODE_MAVLINK_TARGETING = 2 , MAV_MOUNT_MODE_RC_TARGETING = 3 , MAV_MOUNT_MODE_GPS_POINT = 4 , MAV_MOUNT_MODE_SYSID_TARGET = 5 , MAV_MOUNT_MODE_HOME_LOCATION = 6 , } impl MavMountMode { pub const DEFAULT : Self = Self :: MAV_MOUNT_MODE_RETRACT ; } impl Default for MavMountMode { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavlinkDataStreamType { MAVLINK_DATA_STREAM_IMG_JPEG = 0 , MAVLINK_DATA_STREAM_IMG_BMP = 1 , MAVLINK_DATA_STREAM_IMG_RAW8U = 2 , MAVLINK_DATA_STREAM_IMG_RAW32U = 3 , MAVLINK_DATA_STREAM_IMG_PGM = 4 , MAVLINK_DATA_STREAM_IMG_PNG = 5 , } impl MavlinkDataStreamType { pub const DEFAULT : Self = Self :: MAVLINK_DATA_STREAM_IMG_JPEG ; } impl Default for MavlinkDataStreamType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum VideoStreamType { VIDEO_STREAM_TYPE_RTSP = 0 , VIDEO_STREAM_TYPE_RTPUDP = 1 , VIDEO_STREAM_TYPE_TCP_MPEG = 2 , VIDEO_STREAM_TYPE_MPEG_TS_H264 = 3 , } impl VideoStreamType { pub const DEFAULT : Self = Self :: VIDEO_STREAM_TYPE_RTSP ; } impl Default for VideoStreamType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavParamType { MAV_PARAM_TYPE_UINT8 = 1 , MAV_PARAM_TYPE_INT8 = 2 , MAV_PARAM_TYPE_UINT16 = 3 , MAV_PARAM_TYPE_INT16 = 4 , MAV_PARAM_TYPE_UINT32 = 5 , MAV_PARAM_TYPE_INT32 = 6 , MAV_PARAM_TYPE_UINT64 = 7 , MAV_PARAM_TYPE_INT64 = 8 , MAV_PARAM_TYPE_REAL32 = 9 , MAV_PARAM_TYPE_REAL64 = 10 , } impl MavParamType { pub const DEFAULT : Self = Self :: MAV_PARAM_TYPE_UINT8 ; } impl Default for MavParamType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum ParachuteAction { PARACHUTE_DISABLE = 0 , PARACHUTE_ENABLE = 1 , PARACHUTE_RELEASE = 2 , } impl ParachuteAction { pub const DEFAULT : Self = Self :: PARACHUTE_DISABLE ; } impl Default for ParachuteAction { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavLandedState { MAV_LANDED_STATE_UNDEFINED = 0 , MAV_LANDED_STATE_ON_GROUND = 1 , MAV_LANDED_STATE_IN_AIR = 2 , MAV_LANDED_STATE_TAKEOFF = 3 , MAV_LANDED_STATE_LANDING = 4 , } impl MavLandedState { pub const DEFAULT : Self = Self :: MAV_LANDED_STATE_UNDEFINED ; } impl Default for MavLandedState { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidAuthType { MAV_ODID_AUTH_TYPE_NONE = 0 , MAV_ODID_AUTH_TYPE_UAS_ID_SIGNATURE = 1 , MAV_ODID_AUTH_TYPE_OPERATOR_ID_SIGNATURE = 2 , MAV_ODID_AUTH_TYPE_MESSAGE_SET_SIGNATURE = 3 , MAV_ODID_AUTH_TYPE_NETWORK_REMOTE_ID = 4 , MAV_ODID_AUTH_TYPE_SPECIFIC_AUTHENTICATION = 5 , } impl MavOdidAuthType { pub const DEFAULT : Self = Self :: MAV_ODID_AUTH_TYPE_NONE ; } impl Default for MavOdidAuthType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum AisNavStatus { UNDER_WAY = 0 , AIS_NAV_ANCHORED = 1 , AIS_NAV_UN_COMMANDED = 2 , AIS_NAV_RESTRICTED_MANOEUVERABILITY = 3 , AIS_NAV_DRAUGHT_CONSTRAINED = 4 , AIS_NAV_MOORED = 5 , AIS_NAV_AGROUND = 6 , AIS_NAV_FISHING = 7 , AIS_NAV_SAILING = 8 , AIS_NAV_RESERVED_HSC = 9 , AIS_NAV_RESERVED_WIG = 10 , AIS_NAV_RESERVED_1 = 11 , AIS_NAV_RESERVED_2 = 12 , AIS_NAV_RESERVED_3 = 13 , AIS_NAV_AIS_SART = 14 , AIS_NAV_UNKNOWN = 15 , } impl AisNavStatus { pub const DEFAULT : Self = Self :: UNDER_WAY ; } impl Default for AisNavStatus { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidOperatorIdType { MAV_ODID_OPERATOR_ID_TYPE_CAA = 0 , } impl MavOdidOperatorIdType { pub const DEFAULT : Self = Self :: MAV_ODID_OPERATOR_ID_TYPE_CAA ; } impl Default for MavOdidOperatorIdType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum VtolTransitionHeading { VTOL_TRANSITION_HEADING_VEHICLE_DEFAULT = 0 , VTOL_TRANSITION_HEADING_NEXT_WAYPOINT = 1 , VTOL_TRANSITION_HEADING_TAKEOFF = 2 , VTOL_TRANSITION_HEADING_SPECIFIED = 3 , VTOL_TRANSITION_HEADING_ANY = 4 , } impl VtolTransitionHeading { pub const DEFAULT : Self = Self :: VTOL_TRANSITION_HEADING_VEHICLE_DEFAULT ; } impl Default for VtolTransitionHeading { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum FenceBreach { FENCE_BREACH_NONE = 0 , FENCE_BREACH_MINALT = 1 , FENCE_BREACH_MAXALT = 2 , FENCE_BREACH_BOUNDARY = 3 , } impl FenceBreach { pub const DEFAULT : Self = Self :: FENCE_BREACH_NONE ; } impl Default for FenceBreach { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum LandingTargetType { LANDING_TARGET_TYPE_LIGHT_BEACON = 0 , LANDING_TARGET_TYPE_RADIO_BEACON = 1 , LANDING_TARGET_TYPE_VISION_FIDUCIAL = 2 , LANDING_TARGET_TYPE_VISION_OTHER = 3 , } impl LandingTargetType { pub const DEFAULT : Self = Self :: LANDING_TARGET_TYPE_LIGHT_BEACON ; } impl Default for LandingTargetType { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PositionTargetTypemask : u16 { const POSITION_TARGET_TYPEMASK_X_IGNORE = 1 ; const POSITION_TARGET_TYPEMASK_Y_IGNORE = 2 ; const POSITION_TARGET_TYPEMASK_Z_IGNORE = 4 ; const POSITION_TARGET_TYPEMASK_VX_IGNORE = 8 ; const POSITION_TARGET_TYPEMASK_VY_IGNORE = 16 ; const POSITION_TARGET_TYPEMASK_VZ_IGNORE = 32 ; const POSITION_TARGET_TYPEMASK_AX_IGNORE = 64 ; const POSITION_TARGET_TYPEMASK_AY_IGNORE = 128 ; const POSITION_TARGET_TYPEMASK_AZ_IGNORE = 256 ; const POSITION_TARGET_TYPEMASK_FORCE_SET = 512 ; const POSITION_TARGET_TYPEMASK_YAW_IGNORE = 1024 ; const POSITION_TARGET_TYPEMASK_YAW_RATE_IGNORE = 2048 ; } } impl PositionTargetTypemask { pub const DEFAULT : Self = Self :: POSITION_TARGET_TYPEMASK_X_IGNORE ; } impl Default for PositionTargetTypemask { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavSensorOrientation { MAV_SENSOR_ROTATION_NONE = 0 , MAV_SENSOR_ROTATION_YAW_45 = 1 , MAV_SENSOR_ROTATION_YAW_90 = 2 , MAV_SENSOR_ROTATION_YAW_135 = 3 , MAV_SENSOR_ROTATION_YAW_180 = 4 , MAV_SENSOR_ROTATION_YAW_225 = 5 , MAV_SENSOR_ROTATION_YAW_270 = 6 , MAV_SENSOR_ROTATION_YAW_315 = 7 , MAV_SENSOR_ROTATION_ROLL_180 = 8 , MAV_SENSOR_ROTATION_ROLL_180_YAW_45 = 9 , MAV_SENSOR_ROTATION_ROLL_180_YAW_90 = 10 , MAV_SENSOR_ROTATION_ROLL_180_YAW_135 = 11 , MAV_SENSOR_ROTATION_PITCH_180 = 12 , MAV_SENSOR_ROTATION_ROLL_180_YAW_225 = 13 , MAV_SENSOR_ROTATION_ROLL_180_YAW_270 = 14 , MAV_SENSOR_ROTATION_ROLL_180_YAW_315 = 15 , MAV_SENSOR_ROTATION_ROLL_90 = 16 , MAV_SENSOR_ROTATION_ROLL_90_YAW_45 = 17 , MAV_SENSOR_ROTATION_ROLL_90_YAW_90 = 18 , MAV_SENSOR_ROTATION_ROLL_90_YAW_135 = 19 , MAV_SENSOR_ROTATION_ROLL_270 = 20 , MAV_SENSOR_ROTATION_ROLL_270_YAW_45 = 21 , MAV_SENSOR_ROTATION_ROLL_270_YAW_90 = 22 , MAV_SENSOR_ROTATION_ROLL_270_YAW_135 = 23 , MAV_SENSOR_ROTATION_PITCH_90 = 24 , MAV_SENSOR_ROTATION_PITCH_270 = 25 , MAV_SENSOR_ROTATION_PITCH_180_YAW_90 = 26 , MAV_SENSOR_ROTATION_PITCH_180_YAW_270 = 27 , MAV_SENSOR_ROTATION_ROLL_90_PITCH_90 = 28 , MAV_SENSOR_ROTATION_ROLL_180_PITCH_90 = 29 , MAV_SENSOR_ROTATION_ROLL_270_PITCH_90 = 30 , MAV_SENSOR_ROTATION_ROLL_90_PITCH_180 = 31 , MAV_SENSOR_ROTATION_ROLL_270_PITCH_180 = 32 , MAV_SENSOR_ROTATION_ROLL_90_PITCH_270 = 33 , MAV_SENSOR_ROTATION_ROLL_180_PITCH_270 = 34 , MAV_SENSOR_ROTATION_ROLL_270_PITCH_270 = 35 , MAV_SENSOR_ROTATION_ROLL_90_PITCH_180_YAW_90 = 36 , MAV_SENSOR_ROTATION_ROLL_90_YAW_270 = 37 , MAV_SENSOR_ROTATION_ROLL_90_PITCH_68_YAW_293 = 38 , MAV_SENSOR_ROTATION_PITCH_315 = 39 , MAV_SENSOR_ROTATION_ROLL_90_PITCH_315 = 40 , MAV_SENSOR_ROTATION_CUSTOM = 100 , } impl MavSensorOrientation { pub const DEFAULT : Self = Self :: MAV_SENSOR_ROTATION_NONE ; } impl Default for MavSensorOrientation { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavAutopilot { MAV_AUTOPILOT_GENERIC = 0 , MAV_AUTOPILOT_RESERVED = 1 , MAV_AUTOPILOT_SLUGS = 2 , MAV_AUTOPILOT_ARDUPILOTMEGA = 3 , MAV_AUTOPILOT_OPENPILOT = 4 , MAV_AUTOPILOT_GENERIC_WAYPOINTS_ONLY = 5 , MAV_AUTOPILOT_GENERIC_WAYPOINTS_AND_SIMPLE_NAVIGATION_ONLY = 6 , MAV_AUTOPILOT_GENERIC_MISSION_FULL = 7 , MAV_AUTOPILOT_INVALID = 8 , MAV_AUTOPILOT_PPZ = 9 , MAV_AUTOPILOT_UDB = 10 , MAV_AUTOPILOT_FP = 11 , MAV_AUTOPILOT_PX4 = 12 , MAV_AUTOPILOT_SMACCMPILOT = 13 , MAV_AUTOPILOT_AUTOQUAD = 14 , MAV_AUTOPILOT_ARMAZILA = 15 , MAV_AUTOPILOT_AEROB = 16 , MAV_AUTOPILOT_ASLUAV = 17 , MAV_AUTOPILOT_SMARTAP = 18 , MAV_AUTOPILOT_AIRRAILS = 19 , MAV_AUTOPILOT_REFLEX = 20 , } impl MavAutopilot { pub const DEFAULT : Self = Self :: MAV_AUTOPILOT_GENERIC ; } impl Default for MavAutopilot { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum CameraZoomType { ZOOM_TYPE_STEP = 0 , ZOOM_TYPE_CONTINUOUS = 1 , ZOOM_TYPE_RANGE = 2 , ZOOM_TYPE_FOCAL_LENGTH = 3 , } impl CameraZoomType { pub const DEFAULT : Self = Self :: ZOOM_TYPE_STEP ; } impl Default for CameraZoomType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavEstimatorType { MAV_ESTIMATOR_TYPE_UNKNOWN = 0 , MAV_ESTIMATOR_TYPE_NAIVE = 1 , MAV_ESTIMATOR_TYPE_VISION = 2 , MAV_ESTIMATOR_TYPE_VIO = 3 , MAV_ESTIMATOR_TYPE_GPS = 4 , MAV_ESTIMATOR_TYPE_GPS_INS = 5 , MAV_ESTIMATOR_TYPE_MOCAP = 6 , MAV_ESTIMATOR_TYPE_LIDAR = 7 , MAV_ESTIMATOR_TYPE_AUTOPILOT = 8 , } impl MavEstimatorType { pub const DEFAULT : Self = Self :: MAV_ESTIMATOR_TYPE_UNKNOWN ; } impl Default for MavEstimatorType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavArmAuthDeniedReason { MAV_ARM_AUTH_DENIED_REASON_GENERIC = 0 , MAV_ARM_AUTH_DENIED_REASON_NONE = 1 , MAV_ARM_AUTH_DENIED_REASON_INVALID_WAYPOINT = 2 , MAV_ARM_AUTH_DENIED_REASON_TIMEOUT = 3 , MAV_ARM_AUTH_DENIED_REASON_AIRSPACE_IN_USE = 4 , MAV_ARM_AUTH_DENIED_REASON_BAD_WEATHER = 5 , } impl MavArmAuthDeniedReason { pub const DEFAULT : Self = Self :: MAV_ARM_AUTH_DENIED_REASON_GENERIC ; } impl Default for MavArmAuthDeniedReason { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidIdType { MAV_ODID_ID_TYPE_NONE = 0 , MAV_ODID_ID_TYPE_SERIAL_NUMBER = 1 , MAV_ODID_ID_TYPE_CAA_REGISTRATION_ID = 2 , MAV_ODID_ID_TYPE_UTM_ASSIGNED_UUID = 3 , MAV_ODID_ID_TYPE_SPECIFIC_SESSION_ID = 4 , } impl MavOdidIdType { pub const DEFAULT : Self = Self :: MAV_ODID_ID_TYPE_NONE ; } impl Default for MavOdidIdType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum CanFilterOp { CAN_FILTER_REPLACE = 0 , CAN_FILTER_ADD = 1 , CAN_FILTER_REMOVE = 2 , } impl CanFilterOp { pub const DEFAULT : Self = Self :: CAN_FILTER_REPLACE ; } impl Default for CanFilterOp { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavRoi { MAV_ROI_NONE = 0 , MAV_ROI_WPNEXT = 1 , MAV_ROI_WPINDEX = 2 , MAV_ROI_LOCATION = 3 , MAV_ROI_TARGET = 4 , } impl MavRoi { pub const DEFAULT : Self = Self :: MAV_ROI_NONE ; } impl Default for MavRoi { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GimbalDeviceCapFlags : u16 { const GIMBAL_DEVICE_CAP_FLAGS_HAS_RETRACT = 1 ; const GIMBAL_DEVICE_CAP_FLAGS_HAS_NEUTRAL = 2 ; const GIMBAL_DEVICE_CAP_FLAGS_HAS_ROLL_AXIS = 4 ; const GIMBAL_DEVICE_CAP_FLAGS_HAS_ROLL_FOLLOW = 8 ; const GIMBAL_DEVICE_CAP_FLAGS_HAS_ROLL_LOCK = 16 ; const GIMBAL_DEVICE_CAP_FLAGS_HAS_PITCH_AXIS = 32 ; const GIMBAL_DEVICE_CAP_FLAGS_HAS_PITCH_FOLLOW = 64 ; const GIMBAL_DEVICE_CAP_FLAGS_HAS_PITCH_LOCK = 128 ; const GIMBAL_DEVICE_CAP_FLAGS_HAS_YAW_AXIS = 256 ; const GIMBAL_DEVICE_CAP_FLAGS_HAS_YAW_FOLLOW = 512 ; const GIMBAL_DEVICE_CAP_FLAGS_HAS_YAW_LOCK = 1024 ; const GIMBAL_DEVICE_CAP_FLAGS_SUPPORTS_INFINITE_YAW = 2048 ; const GIMBAL_DEVICE_CAP_FLAGS_SUPPORTS_YAW_IN_EARTH_FRAME = 4096 ; const GIMBAL_DEVICE_CAP_FLAGS_HAS_RC_INPUTS = 8192 ; } } impl GimbalDeviceCapFlags { pub const DEFAULT : Self = Self :: GIMBAL_DEVICE_CAP_FLAGS_HAS_RETRACT ; } impl Default for GimbalDeviceCapFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MotorTestThrottleType { MOTOR_TEST_THROTTLE_PERCENT = 0 , MOTOR_TEST_THROTTLE_PWM = 1 , MOTOR_TEST_THROTTLE_PILOT = 2 , MOTOR_TEST_COMPASS_CAL = 3 , } impl MotorTestThrottleType { pub const DEFAULT : Self = Self :: MOTOR_TEST_THROTTLE_PERCENT ; } impl Default for MotorTestThrottleType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum CompMetadataType { COMP_METADATA_TYPE_GENERAL = 0 , COMP_METADATA_TYPE_PARAMETER = 1 , COMP_METADATA_TYPE_COMMANDS = 2 , COMP_METADATA_TYPE_PERIPHERALS = 3 , COMP_METADATA_TYPE_EVENTS = 4 , COMP_METADATA_TYPE_ACTUATORS = 5 , } impl CompMetadataType { pub const DEFAULT : Self = Self :: COMP_METADATA_TYPE_GENERAL ; } impl Default for CompMetadataType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum PrecisionLandMode { PRECISION_LAND_MODE_DISABLED = 0 , PRECISION_LAND_MODE_OPPORTUNISTIC = 1 , PRECISION_LAND_MODE_REQUIRED = 2 , } impl PrecisionLandMode { pub const DEFAULT : Self = Self :: PRECISION_LAND_MODE_DISABLED ; } impl Default for PrecisionLandMode { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum AdsbAltitudeType { ADSB_ALTITUDE_TYPE_PRESSURE_QNH = 0 , ADSB_ALTITUDE_TYPE_GEOMETRIC = 1 , } impl AdsbAltitudeType { pub const DEFAULT : Self = Self :: ADSB_ALTITUDE_TYPE_PRESSURE_QNH ; } impl Default for AdsbAltitudeType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavFtpErr { MAV_FTP_ERR_NONE = 0 , MAV_FTP_ERR_FAIL = 1 , MAV_FTP_ERR_FAILERRNO = 2 , MAV_FTP_ERR_INVALIDDATASIZE = 3 , MAV_FTP_ERR_INVALIDSESSION = 4 , MAV_FTP_ERR_NOSESSIONSAVAILABLE = 5 , MAV_FTP_ERR_EOF = 6 , MAV_FTP_ERR_UNKNOWNCOMMAND = 7 , MAV_FTP_ERR_FILEEXISTS = 8 , MAV_FTP_ERR_FILEPROTECTED = 9 , MAV_FTP_ERR_FILENOTFOUND = 10 , } impl MavFtpErr { pub const DEFAULT : Self = Self :: MAV_FTP_ERR_NONE ; } impl Default for MavFtpErr { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidSpeedAcc { MAV_ODID_SPEED_ACC_UNKNOWN = 0 , MAV_ODID_SPEED_ACC_10_METERS_PER_SECOND = 1 , MAV_ODID_SPEED_ACC_3_METERS_PER_SECOND = 2 , MAV_ODID_SPEED_ACC_1_METERS_PER_SECOND = 3 , MAV_ODID_SPEED_ACC_0_3_METERS_PER_SECOND = 4 , } impl MavOdidSpeedAcc { pub const DEFAULT : Self = Self :: MAV_ODID_SPEED_ACC_UNKNOWN ; } impl Default for MavOdidSpeedAcc { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum EscConnectionType { ESC_CONNECTION_TYPE_PPM = 0 , ESC_CONNECTION_TYPE_SERIAL = 1 , ESC_CONNECTION_TYPE_ONESHOT = 2 , ESC_CONNECTION_TYPE_I2C = 3 , ESC_CONNECTION_TYPE_CAN = 4 , ESC_CONNECTION_TYPE_DSHOT = 5 , } impl EscConnectionType { pub const DEFAULT : Self = Self :: ESC_CONNECTION_TYPE_PPM ; } impl Default for EscConnectionType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum StorageUsageFlag { STORAGE_USAGE_FLAG_SET = 1 , STORAGE_USAGE_FLAG_PHOTO = 2 , STORAGE_USAGE_FLAG_VIDEO = 4 , STORAGE_USAGE_FLAG_LOGS = 8 , } impl StorageUsageFlag { pub const DEFAULT : Self = Self :: STORAGE_USAGE_FLAG_SET ; } impl Default for StorageUsageFlag { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum UtmFlightState { UTM_FLIGHT_STATE_UNKNOWN = 1 , UTM_FLIGHT_STATE_GROUND = 2 , UTM_FLIGHT_STATE_AIRBORNE = 3 , UTM_FLIGHT_STATE_EMERGENCY = 16 , UTM_FLIGHT_STATE_NOCTRL = 32 , } impl UtmFlightState { pub const DEFAULT : Self = Self :: UTM_FLIGHT_STATE_UNKNOWN ; } impl Default for UtmFlightState { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidClassificationType { MAV_ODID_CLASSIFICATION_TYPE_UNDECLARED = 0 , MAV_ODID_CLASSIFICATION_TYPE_EU = 1 , } impl MavOdidClassificationType { pub const DEFAULT : Self = Self :: MAV_ODID_CLASSIFICATION_TYPE_UNDECLARED ; } impl Default for MavOdidClassificationType { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MavGeneratorStatusFlag : u64 { const MAV_GENERATOR_STATUS_FLAG_OFF = 1 ; const MAV_GENERATOR_STATUS_FLAG_READY = 2 ; const MAV_GENERATOR_STATUS_FLAG_GENERATING = 4 ; const MAV_GENERATOR_STATUS_FLAG_CHARGING = 8 ; const MAV_GENERATOR_STATUS_FLAG_REDUCED_POWER = 16 ; const MAV_GENERATOR_STATUS_FLAG_MAXPOWER = 32 ; const MAV_GENERATOR_STATUS_FLAG_OVERTEMP_WARNING = 64 ; const MAV_GENERATOR_STATUS_FLAG_OVERTEMP_FAULT = 128 ; const MAV_GENERATOR_STATUS_FLAG_ELECTRONICS_OVERTEMP_WARNING = 256 ; const MAV_GENERATOR_STATUS_FLAG_ELECTRONICS_OVERTEMP_FAULT = 512 ; const MAV_GENERATOR_STATUS_FLAG_ELECTRONICS_FAULT = 1024 ; const MAV_GENERATOR_STATUS_FLAG_POWERSOURCE_FAULT = 2048 ; const MAV_GENERATOR_STATUS_FLAG_COMMUNICATION_WARNING = 4096 ; const MAV_GENERATOR_STATUS_FLAG_COOLING_WARNING = 8192 ; const MAV_GENERATOR_STATUS_FLAG_POWER_RAIL_FAULT = 16384 ; const MAV_GENERATOR_STATUS_FLAG_OVERCURRENT_FAULT = 32768 ; const MAV_GENERATOR_STATUS_FLAG_BATTERY_OVERCHARGE_CURRENT_FAULT = 65536 ; const MAV_GENERATOR_STATUS_FLAG_OVERVOLTAGE_FAULT = 131072 ; const MAV_GENERATOR_STATUS_FLAG_BATTERY_UNDERVOLT_FAULT = 262144 ; const MAV_GENERATOR_STATUS_FLAG_START_INHIBITED = 524288 ; const MAV_GENERATOR_STATUS_FLAG_MAINTENANCE_REQUIRED = 1048576 ; const MAV_GENERATOR_STATUS_FLAG_WARMING_UP = 2097152 ; const MAV_GENERATOR_STATUS_FLAG_IDLE = 4194304 ; } } impl MavGeneratorStatusFlag { pub const DEFAULT : Self = Self :: MAV_GENERATOR_STATUS_FLAG_OFF ; } impl Default for MavGeneratorStatusFlag { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavMode { MAV_MODE_PREFLIGHT = 0 , MAV_MODE_STABILIZE_DISARMED = 80 , MAV_MODE_STABILIZE_ARMED = 208 , MAV_MODE_MANUAL_DISARMED = 64 , MAV_MODE_MANUAL_ARMED = 192 , MAV_MODE_GUIDED_DISARMED = 88 , MAV_MODE_GUIDED_ARMED = 216 , MAV_MODE_AUTO_DISARMED = 92 , MAV_MODE_AUTO_ARMED = 220 , MAV_MODE_TEST_DISARMED = 66 , MAV_MODE_TEST_ARMED = 194 , } impl MavMode { pub const DEFAULT : Self = Self :: MAV_MODE_PREFLIGHT ; } impl Default for MavMode { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavTunnelPayloadType { MAV_TUNNEL_PAYLOAD_TYPE_UNKNOWN = 0 , MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED0 = 200 , MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED1 = 201 , MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED2 = 202 , MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED3 = 203 , MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED4 = 204 , MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED5 = 205 , MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED6 = 206 , MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED7 = 207 , MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED8 = 208 , MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED9 = 209 , } impl MavTunnelPayloadType { pub const DEFAULT : Self = Self :: MAV_TUNNEL_PAYLOAD_TYPE_UNKNOWN ; } impl Default for MavTunnelPayloadType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidTimeAcc { MAV_ODID_TIME_ACC_UNKNOWN = 0 , MAV_ODID_TIME_ACC_0_1_SECOND = 1 , MAV_ODID_TIME_ACC_0_2_SECOND = 2 , MAV_ODID_TIME_ACC_0_3_SECOND = 3 , MAV_ODID_TIME_ACC_0_4_SECOND = 4 , MAV_ODID_TIME_ACC_0_5_SECOND = 5 , MAV_ODID_TIME_ACC_0_6_SECOND = 6 , MAV_ODID_TIME_ACC_0_7_SECOND = 7 , MAV_ODID_TIME_ACC_0_8_SECOND = 8 , MAV_ODID_TIME_ACC_0_9_SECOND = 9 , MAV_ODID_TIME_ACC_1_0_SECOND = 10 , MAV_ODID_TIME_ACC_1_1_SECOND = 11 , MAV_ODID_TIME_ACC_1_2_SECOND = 12 , MAV_ODID_TIME_ACC_1_3_SECOND = 13 , MAV_ODID_TIME_ACC_1_4_SECOND = 14 , MAV_ODID_TIME_ACC_1_5_SECOND = 15 , } impl MavOdidTimeAcc { pub const DEFAULT : Self = Self :: MAV_ODID_TIME_ACC_UNKNOWN ; } impl Default for MavOdidTimeAcc { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavFrame { MAV_FRAME_GLOBAL = 0 , MAV_FRAME_LOCAL_NED = 1 , MAV_FRAME_MISSION = 2 , MAV_FRAME_GLOBAL_RELATIVE_ALT = 3 , MAV_FRAME_LOCAL_ENU = 4 , MAV_FRAME_GLOBAL_INT = 5 , MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6 , MAV_FRAME_LOCAL_OFFSET_NED = 7 , MAV_FRAME_BODY_NED = 8 , MAV_FRAME_BODY_OFFSET_NED = 9 , MAV_FRAME_GLOBAL_TERRAIN_ALT = 10 , MAV_FRAME_GLOBAL_TERRAIN_ALT_INT = 11 , MAV_FRAME_BODY_FRD = 12 , MAV_FRAME_RESERVED_13 = 13 , MAV_FRAME_RESERVED_14 = 14 , MAV_FRAME_RESERVED_15 = 15 , MAV_FRAME_RESERVED_16 = 16 , MAV_FRAME_RESERVED_17 = 17 , MAV_FRAME_RESERVED_18 = 18 , MAV_FRAME_RESERVED_19 = 19 , MAV_FRAME_LOCAL_FRD = 20 , MAV_FRAME_LOCAL_FLU = 21 , } impl MavFrame { pub const DEFAULT : Self = Self :: MAV_FRAME_GLOBAL ; } impl Default for MavFrame { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum FirmwareVersionType { FIRMWARE_VERSION_TYPE_DEV = 0 , FIRMWARE_VERSION_TYPE_ALPHA = 64 , FIRMWARE_VERSION_TYPE_BETA = 128 , FIRMWARE_VERSION_TYPE_RC = 192 , FIRMWARE_VERSION_TYPE_OFFICIAL = 255 , } impl FirmwareVersionType { pub const DEFAULT : Self = Self :: FIRMWARE_VERSION_TYPE_DEV ; } impl Default for FirmwareVersionType { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct EscFailureFlags : u16 { const ESC_FAILURE_NONE = 0 ; const ESC_FAILURE_OVER_CURRENT = 1 ; const ESC_FAILURE_OVER_VOLTAGE = 2 ; const ESC_FAILURE_OVER_TEMPERATURE = 4 ; const ESC_FAILURE_OVER_RPM = 8 ; const ESC_FAILURE_INCONSISTENT_CMD = 16 ; const ESC_FAILURE_MOTOR_STUCK = 32 ; const ESC_FAILURE_GENERIC = 64 ; } } impl EscFailureFlags { pub const DEFAULT : Self = Self :: ESC_FAILURE_NONE ; } impl Default for EscFailureFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavCmd { MAV_CMD_NAV_WAYPOINT = 16 , MAV_CMD_NAV_LOITER_UNLIM = 17 , MAV_CMD_NAV_LOITER_TURNS = 18 , MAV_CMD_NAV_LOITER_TIME = 19 , MAV_CMD_NAV_RETURN_TO_LAUNCH = 20 , MAV_CMD_NAV_LAND = 21 , MAV_CMD_NAV_TAKEOFF = 22 , MAV_CMD_NAV_LAND_LOCAL = 23 , MAV_CMD_NAV_TAKEOFF_LOCAL = 24 , MAV_CMD_NAV_FOLLOW = 25 , MAV_CMD_NAV_CONTINUE_AND_CHANGE_ALT = 30 , MAV_CMD_NAV_LOITER_TO_ALT = 31 , MAV_CMD_DO_FOLLOW = 32 , MAV_CMD_DO_FOLLOW_REPOSITION = 33 , MAV_CMD_DO_ORBIT = 34 , MAV_CMD_NAV_ROI = 80 , MAV_CMD_NAV_PATHPLANNING = 81 , MAV_CMD_NAV_SPLINE_WAYPOINT = 82 , MAV_CMD_NAV_VTOL_TAKEOFF = 84 , MAV_CMD_NAV_VTOL_LAND = 85 , MAV_CMD_NAV_GUIDED_ENABLE = 92 , MAV_CMD_NAV_DELAY = 93 , MAV_CMD_NAV_PAYLOAD_PLACE = 94 , MAV_CMD_NAV_LAST = 95 , MAV_CMD_CONDITION_DELAY = 112 , MAV_CMD_CONDITION_CHANGE_ALT = 113 , MAV_CMD_CONDITION_DISTANCE = 114 , MAV_CMD_CONDITION_YAW = 115 , MAV_CMD_CONDITION_LAST = 159 , MAV_CMD_DO_SET_MODE = 176 , MAV_CMD_DO_JUMP = 177 , MAV_CMD_DO_CHANGE_SPEED = 178 , MAV_CMD_DO_SET_HOME = 179 , MAV_CMD_DO_SET_PARAMETER = 180 , MAV_CMD_DO_SET_RELAY = 181 , MAV_CMD_DO_REPEAT_RELAY = 182 , MAV_CMD_DO_SET_SERVO = 183 , MAV_CMD_DO_REPEAT_SERVO = 184 , MAV_CMD_DO_FLIGHTTERMINATION = 185 , MAV_CMD_DO_CHANGE_ALTITUDE = 186 , MAV_CMD_DO_SET_ACTUATOR = 187 , MAV_CMD_DO_LAND_START = 189 , MAV_CMD_DO_RALLY_LAND = 190 , MAV_CMD_DO_GO_AROUND = 191 , MAV_CMD_DO_REPOSITION = 192 , MAV_CMD_DO_PAUSE_CONTINUE = 193 , MAV_CMD_DO_SET_REVERSE = 194 , MAV_CMD_DO_SET_ROI_LOCATION = 195 , MAV_CMD_DO_SET_ROI_WPNEXT_OFFSET = 196 , MAV_CMD_DO_SET_ROI_NONE = 197 , MAV_CMD_DO_SET_ROI_SYSID = 198 , MAV_CMD_DO_CONTROL_VIDEO = 200 , MAV_CMD_DO_SET_ROI = 201 , MAV_CMD_DO_DIGICAM_CONFIGURE = 202 , MAV_CMD_DO_DIGICAM_CONTROL = 203 , MAV_CMD_DO_MOUNT_CONFIGURE = 204 , MAV_CMD_DO_MOUNT_CONTROL = 205 , MAV_CMD_DO_SET_CAM_TRIGG_DIST = 206 , MAV_CMD_DO_FENCE_ENABLE = 207 , MAV_CMD_DO_PARACHUTE = 208 , MAV_CMD_DO_MOTOR_TEST = 209 , MAV_CMD_DO_INVERTED_FLIGHT = 210 , MAV_CMD_DO_GRIPPER = 211 , MAV_CMD_DO_AUTOTUNE_ENABLE = 212 , MAV_CMD_NAV_SET_YAW_SPEED = 213 , MAV_CMD_DO_SET_CAM_TRIGG_INTERVAL = 214 , MAV_CMD_DO_MOUNT_CONTROL_QUAT = 220 , MAV_CMD_DO_GUIDED_MASTER = 221 , MAV_CMD_DO_GUIDED_LIMITS = 222 , MAV_CMD_DO_ENGINE_CONTROL = 223 , MAV_CMD_DO_SET_MISSION_CURRENT = 224 , MAV_CMD_DO_LAST = 240 , MAV_CMD_PREFLIGHT_CALIBRATION = 241 , MAV_CMD_PREFLIGHT_SET_SENSOR_OFFSETS = 242 , MAV_CMD_PREFLIGHT_UAVCAN = 243 , MAV_CMD_PREFLIGHT_STORAGE = 245 , MAV_CMD_PREFLIGHT_REBOOT_SHUTDOWN = 246 , MAV_CMD_OVERRIDE_GOTO = 252 , MAV_CMD_OBLIQUE_SURVEY = 260 , MAV_CMD_MISSION_START = 300 , MAV_CMD_ACTUATOR_TEST = 310 , MAV_CMD_CONFIGURE_ACTUATOR = 311 , MAV_CMD_COMPONENT_ARM_DISARM = 400 , MAV_CMD_RUN_PREARM_CHECKS = 401 , MAV_CMD_ILLUMINATOR_ON_OFF = 405 , MAV_CMD_GET_HOME_POSITION = 410 , MAV_CMD_INJECT_FAILURE = 420 , MAV_CMD_START_RX_PAIR = 500 , MAV_CMD_GET_MESSAGE_INTERVAL = 510 , MAV_CMD_SET_MESSAGE_INTERVAL = 511 , MAV_CMD_REQUEST_MESSAGE = 512 , MAV_CMD_REQUEST_PROTOCOL_VERSION = 519 , MAV_CMD_REQUEST_AUTOPILOT_CAPABILITIES = 520 , MAV_CMD_REQUEST_CAMERA_INFORMATION = 521 , MAV_CMD_REQUEST_CAMERA_SETTINGS = 522 , MAV_CMD_REQUEST_STORAGE_INFORMATION = 525 , MAV_CMD_STORAGE_FORMAT = 526 , MAV_CMD_REQUEST_CAMERA_CAPTURE_STATUS = 527 , MAV_CMD_REQUEST_FLIGHT_INFORMATION = 528 , MAV_CMD_RESET_CAMERA_SETTINGS = 529 , MAV_CMD_SET_CAMERA_MODE = 530 , MAV_CMD_SET_CAMERA_ZOOM = 531 , MAV_CMD_SET_CAMERA_FOCUS = 532 , MAV_CMD_SET_STORAGE_USAGE = 533 , MAV_CMD_JUMP_TAG = 600 , MAV_CMD_DO_JUMP_TAG = 601 , MAV_CMD_DO_GIMBAL_MANAGER_PITCHYAW = 1000 , MAV_CMD_DO_GIMBAL_MANAGER_CONFIGURE = 1001 , MAV_CMD_IMAGE_START_CAPTURE = 2000 , MAV_CMD_IMAGE_STOP_CAPTURE = 2001 , MAV_CMD_REQUEST_CAMERA_IMAGE_CAPTURE = 2002 , MAV_CMD_DO_TRIGGER_CONTROL = 2003 , MAV_CMD_CAMERA_TRACK_POINT = 2004 , MAV_CMD_CAMERA_TRACK_RECTANGLE = 2005 , MAV_CMD_CAMERA_STOP_TRACKING = 2010 , MAV_CMD_VIDEO_START_CAPTURE = 2500 , MAV_CMD_VIDEO_STOP_CAPTURE = 2501 , MAV_CMD_VIDEO_START_STREAMING = 2502 , MAV_CMD_VIDEO_STOP_STREAMING = 2503 , MAV_CMD_REQUEST_VIDEO_STREAM_INFORMATION = 2504 , MAV_CMD_REQUEST_VIDEO_STREAM_STATUS = 2505 , MAV_CMD_LOGGING_START = 2510 , MAV_CMD_LOGGING_STOP = 2511 , MAV_CMD_AIRFRAME_CONFIGURATION = 2520 , MAV_CMD_CONTROL_HIGH_LATENCY = 2600 , MAV_CMD_PANORAMA_CREATE = 2800 , MAV_CMD_DO_VTOL_TRANSITION = 3000 , MAV_CMD_ARM_AUTHORIZATION_REQUEST = 3001 , MAV_CMD_SET_GUIDED_SUBMODE_STANDARD = 4000 , MAV_CMD_SET_GUIDED_SUBMODE_CIRCLE = 4001 , MAV_CMD_CONDITION_GATE = 4501 , MAV_CMD_NAV_FENCE_RETURN_POINT = 5000 , MAV_CMD_NAV_FENCE_POLYGON_VERTEX_INCLUSION = 5001 , MAV_CMD_NAV_FENCE_POLYGON_VERTEX_EXCLUSION = 5002 , MAV_CMD_NAV_FENCE_CIRCLE_INCLUSION = 5003 , MAV_CMD_NAV_FENCE_CIRCLE_EXCLUSION = 5004 , MAV_CMD_NAV_RALLY_POINT = 5100 , MAV_CMD_UAVCAN_GET_NODE_INFO = 5200 , MAV_CMD_DO_ADSB_OUT_IDENT = 10001 , MAV_CMD_PAYLOAD_PREPARE_DEPLOY = 30001 , MAV_CMD_PAYLOAD_CONTROL_DEPLOY = 30002 , MAV_CMD_FIXED_MAG_CAL_YAW = 42006 , MAV_CMD_DO_WINCH = 42600 , MAV_CMD_WAYPOINT_USER_1 = 31000 , MAV_CMD_WAYPOINT_USER_2 = 31001 , MAV_CMD_WAYPOINT_USER_3 = 31002 , MAV_CMD_WAYPOINT_USER_4 = 31003 , MAV_CMD_WAYPOINT_USER_5 = 31004 , MAV_CMD_SPATIAL_USER_1 = 31005 , MAV_CMD_SPATIAL_USER_2 = 31006 , MAV_CMD_SPATIAL_USER_3 = 31007 , MAV_CMD_SPATIAL_USER_4 = 31008 , MAV_CMD_SPATIAL_USER_5 = 31009 , MAV_CMD_USER_1 = 31010 , MAV_CMD_USER_2 = 31011 , MAV_CMD_USER_3 = 31012 , MAV_CMD_USER_4 = 31013 , MAV_CMD_USER_5 = 31014 , MAV_CMD_CAN_FORWARD = 32000 , } impl MavCmd { pub const DEFAULT : Self = Self :: MAV_CMD_NAV_WAYPOINT ; } impl Default for MavCmd { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum CameraTrackingMode { CAMERA_TRACKING_MODE_NONE = 0 , CAMERA_TRACKING_MODE_POINT = 1 , CAMERA_TRACKING_MODE_RECTANGLE = 2 , } impl CameraTrackingMode { pub const DEFAULT : Self = Self :: CAMERA_TRACKING_MODE_NONE ; } impl Default for CameraTrackingMode { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavDistanceSensor { MAV_DISTANCE_SENSOR_LASER = 0 , MAV_DISTANCE_SENSOR_ULTRASOUND = 1 , MAV_DISTANCE_SENSOR_INFRARED = 2 , MAV_DISTANCE_SENSOR_RADAR = 3 , MAV_DISTANCE_SENSOR_UNKNOWN = 4 , } impl MavDistanceSensor { pub const DEFAULT : Self = Self :: MAV_DISTANCE_SENSOR_LASER ; } impl Default for MavDistanceSensor { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavBatteryFunction { MAV_BATTERY_FUNCTION_UNKNOWN = 0 , MAV_BATTERY_FUNCTION_ALL = 1 , MAV_BATTERY_FUNCTION_PROPULSION = 2 , MAV_BATTERY_FUNCTION_AVIONICS = 3 , MAV_BATTERY_FUNCTION_PAYLOAD = 4 , } impl MavBatteryFunction { pub const DEFAULT : Self = Self :: MAV_BATTERY_FUNCTION_UNKNOWN ; } impl Default for MavBatteryFunction { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavState { MAV_STATE_UNINIT = 0 , MAV_STATE_BOOT = 1 , MAV_STATE_CALIBRATING = 2 , MAV_STATE_STANDBY = 3 , MAV_STATE_ACTIVE = 4 , MAV_STATE_CRITICAL = 5 , MAV_STATE_EMERGENCY = 6 , MAV_STATE_POWEROFF = 7 , MAV_STATE_FLIGHT_TERMINATION = 8 , } impl MavState { pub const DEFAULT : Self = Self :: MAV_STATE_UNINIT ; } impl Default for MavState { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidOperatorLocationType { MAV_ODID_OPERATOR_LOCATION_TYPE_TAKEOFF = 0 , MAV_ODID_OPERATOR_LOCATION_TYPE_LIVE_GNSS = 1 , MAV_ODID_OPERATOR_LOCATION_TYPE_FIXED = 2 , } impl MavOdidOperatorLocationType { pub const DEFAULT : Self = Self :: MAV_ODID_OPERATOR_LOCATION_TYPE_TAKEOFF ; } impl Default for MavOdidOperatorLocationType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavEventErrorReason { MAV_EVENT_ERROR_REASON_UNAVAILABLE = 0 , } impl MavEventErrorReason { pub const DEFAULT : Self = Self :: MAV_EVENT_ERROR_REASON_UNAVAILABLE ; } impl Default for MavEventErrorReason { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum PreflightStorageMissionAction { MISSION_READ_PERSISTENT = 0 , MISSION_WRITE_PERSISTENT = 1 , MISSION_RESET_DEFAULT = 2 , } impl PreflightStorageMissionAction { pub const DEFAULT : Self = Self :: MISSION_READ_PERSISTENT ; } impl Default for PreflightStorageMissionAction { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum FailureUnit { FAILURE_UNIT_SENSOR_GYRO = 0 , FAILURE_UNIT_SENSOR_ACCEL = 1 , FAILURE_UNIT_SENSOR_MAG = 2 , FAILURE_UNIT_SENSOR_BARO = 3 , FAILURE_UNIT_SENSOR_GPS = 4 , FAILURE_UNIT_SENSOR_OPTICAL_FLOW = 5 , FAILURE_UNIT_SENSOR_VIO = 6 , FAILURE_UNIT_SENSOR_DISTANCE_SENSOR = 7 , FAILURE_UNIT_SENSOR_AIRSPEED = 8 , FAILURE_UNIT_SYSTEM_BATTERY = 100 , FAILURE_UNIT_SYSTEM_MOTOR = 101 , FAILURE_UNIT_SYSTEM_SERVO = 102 , FAILURE_UNIT_SYSTEM_AVOIDANCE = 103 , FAILURE_UNIT_SYSTEM_RC_SIGNAL = 104 , FAILURE_UNIT_SYSTEM_MAVLINK_SIGNAL = 105 , } impl FailureUnit { pub const DEFAULT : Self = Self :: FAILURE_UNIT_SENSOR_GYRO ; } impl Default for FailureUnit { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavComponent { MAV_COMP_ID_ALL = 0 , MAV_COMP_ID_AUTOPILOT1 = 1 , MAV_COMP_ID_USER1 = 25 , MAV_COMP_ID_USER2 = 26 , MAV_COMP_ID_USER3 = 27 , MAV_COMP_ID_USER4 = 28 , MAV_COMP_ID_USER5 = 29 , MAV_COMP_ID_USER6 = 30 , MAV_COMP_ID_USER7 = 31 , MAV_COMP_ID_USER8 = 32 , MAV_COMP_ID_USER9 = 33 , MAV_COMP_ID_USER10 = 34 , MAV_COMP_ID_USER11 = 35 , MAV_COMP_ID_USER12 = 36 , MAV_COMP_ID_USER13 = 37 , MAV_COMP_ID_USER14 = 38 , MAV_COMP_ID_USER15 = 39 , MAV_COMP_ID_USER16 = 40 , MAV_COMP_ID_USER17 = 41 , MAV_COMP_ID_USER18 = 42 , MAV_COMP_ID_USER19 = 43 , MAV_COMP_ID_USER20 = 44 , MAV_COMP_ID_USER21 = 45 , MAV_COMP_ID_USER22 = 46 , MAV_COMP_ID_USER23 = 47 , MAV_COMP_ID_USER24 = 48 , MAV_COMP_ID_USER25 = 49 , MAV_COMP_ID_USER26 = 50 , MAV_COMP_ID_USER27 = 51 , MAV_COMP_ID_USER28 = 52 , MAV_COMP_ID_USER29 = 53 , MAV_COMP_ID_USER30 = 54 , MAV_COMP_ID_USER31 = 55 , MAV_COMP_ID_USER32 = 56 , MAV_COMP_ID_USER33 = 57 , MAV_COMP_ID_USER34 = 58 , MAV_COMP_ID_USER35 = 59 , MAV_COMP_ID_USER36 = 60 , MAV_COMP_ID_USER37 = 61 , MAV_COMP_ID_USER38 = 62 , MAV_COMP_ID_USER39 = 63 , MAV_COMP_ID_USER40 = 64 , MAV_COMP_ID_USER41 = 65 , MAV_COMP_ID_USER42 = 66 , MAV_COMP_ID_USER43 = 67 , MAV_COMP_ID_TELEMETRY_RADIO = 68 , MAV_COMP_ID_USER45 = 69 , MAV_COMP_ID_USER46 = 70 , MAV_COMP_ID_USER47 = 71 , MAV_COMP_ID_USER48 = 72 , MAV_COMP_ID_USER49 = 73 , MAV_COMP_ID_USER50 = 74 , MAV_COMP_ID_USER51 = 75 , MAV_COMP_ID_USER52 = 76 , MAV_COMP_ID_USER53 = 77 , MAV_COMP_ID_USER54 = 78 , MAV_COMP_ID_USER55 = 79 , MAV_COMP_ID_USER56 = 80 , MAV_COMP_ID_USER57 = 81 , MAV_COMP_ID_USER58 = 82 , MAV_COMP_ID_USER59 = 83 , MAV_COMP_ID_USER60 = 84 , MAV_COMP_ID_USER61 = 85 , MAV_COMP_ID_USER62 = 86 , MAV_COMP_ID_USER63 = 87 , MAV_COMP_ID_USER64 = 88 , MAV_COMP_ID_USER65 = 89 , MAV_COMP_ID_USER66 = 90 , MAV_COMP_ID_USER67 = 91 , MAV_COMP_ID_USER68 = 92 , MAV_COMP_ID_USER69 = 93 , MAV_COMP_ID_USER70 = 94 , MAV_COMP_ID_USER71 = 95 , MAV_COMP_ID_USER72 = 96 , MAV_COMP_ID_USER73 = 97 , MAV_COMP_ID_USER74 = 98 , MAV_COMP_ID_USER75 = 99 , MAV_COMP_ID_CAMERA = 100 , MAV_COMP_ID_CAMERA2 = 101 , MAV_COMP_ID_CAMERA3 = 102 , MAV_COMP_ID_CAMERA4 = 103 , MAV_COMP_ID_CAMERA5 = 104 , MAV_COMP_ID_CAMERA6 = 105 , MAV_COMP_ID_SERVO1 = 140 , MAV_COMP_ID_SERVO2 = 141 , MAV_COMP_ID_SERVO3 = 142 , MAV_COMP_ID_SERVO4 = 143 , MAV_COMP_ID_SERVO5 = 144 , MAV_COMP_ID_SERVO6 = 145 , MAV_COMP_ID_SERVO7 = 146 , MAV_COMP_ID_SERVO8 = 147 , MAV_COMP_ID_SERVO9 = 148 , MAV_COMP_ID_SERVO10 = 149 , MAV_COMP_ID_SERVO11 = 150 , MAV_COMP_ID_SERVO12 = 151 , MAV_COMP_ID_SERVO13 = 152 , MAV_COMP_ID_SERVO14 = 153 , MAV_COMP_ID_GIMBAL = 154 , MAV_COMP_ID_LOG = 155 , MAV_COMP_ID_ADSB = 156 , MAV_COMP_ID_OSD = 157 , MAV_COMP_ID_PERIPHERAL = 158 , MAV_COMP_ID_QX1_GIMBAL = 159 , MAV_COMP_ID_FLARM = 160 , MAV_COMP_ID_PARACHUTE = 161 , MAV_COMP_ID_WINCH = 169 , MAV_COMP_ID_GIMBAL2 = 171 , MAV_COMP_ID_GIMBAL3 = 172 , MAV_COMP_ID_GIMBAL4 = 173 , MAV_COMP_ID_GIMBAL5 = 174 , MAV_COMP_ID_GIMBAL6 = 175 , MAV_COMP_ID_BATTERY = 180 , MAV_COMP_ID_BATTERY2 = 181 , MAV_COMP_ID_MAVCAN = 189 , MAV_COMP_ID_MISSIONPLANNER = 190 , MAV_COMP_ID_ONBOARD_COMPUTER = 191 , MAV_COMP_ID_ONBOARD_COMPUTER2 = 192 , MAV_COMP_ID_ONBOARD_COMPUTER3 = 193 , MAV_COMP_ID_ONBOARD_COMPUTER4 = 194 , MAV_COMP_ID_PATHPLANNER = 195 , MAV_COMP_ID_OBSTACLE_AVOIDANCE = 196 , MAV_COMP_ID_VISUAL_INERTIAL_ODOMETRY = 197 , MAV_COMP_ID_PAIRING_MANAGER = 198 , MAV_COMP_ID_IMU = 200 , MAV_COMP_ID_IMU_2 = 201 , MAV_COMP_ID_IMU_3 = 202 , MAV_COMP_ID_GPS = 220 , MAV_COMP_ID_GPS2 = 221 , MAV_COMP_ID_ODID_TXRX_1 = 236 , MAV_COMP_ID_ODID_TXRX_2 = 237 , MAV_COMP_ID_ODID_TXRX_3 = 238 , MAV_COMP_ID_UDP_BRIDGE = 240 , MAV_COMP_ID_UART_BRIDGE = 241 , MAV_COMP_ID_TUNNEL_NODE = 242 , MAV_COMP_ID_SYSTEM_CONTROL = 250 , } impl MavComponent { pub const DEFAULT : Self = Self :: MAV_COMP_ID_ALL ; } impl Default for MavComponent { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavDoRepositionFlags { MAV_DO_REPOSITION_FLAGS_CHANGE_MODE = 1 , } impl MavDoRepositionFlags { pub const DEFAULT : Self = Self :: MAV_DO_REPOSITION_FLAGS_CHANGE_MODE ; } impl Default for MavDoRepositionFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum AutotuneAxis { AUTOTUNE_AXIS_DEFAULT = 0 , AUTOTUNE_AXIS_ROLL = 1 , AUTOTUNE_AXIS_PITCH = 2 , AUTOTUNE_AXIS_YAW = 4 , } impl AutotuneAxis { pub const DEFAULT : Self = Self :: AUTOTUNE_AXIS_DEFAULT ; } impl Default for AutotuneAxis { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct AttitudeTargetTypemask : u8 { const ATTITUDE_TARGET_TYPEMASK_BODY_ROLL_RATE_IGNORE = 1 ; const ATTITUDE_TARGET_TYPEMASK_BODY_PITCH_RATE_IGNORE = 2 ; const ATTITUDE_TARGET_TYPEMASK_BODY_YAW_RATE_IGNORE = 4 ; const ATTITUDE_TARGET_TYPEMASK_THRUST_BODY_SET = 32 ; const ATTITUDE_TARGET_TYPEMASK_THROTTLE_IGNORE = 64 ; const ATTITUDE_TARGET_TYPEMASK_ATTITUDE_IGNORE = 128 ; } } impl AttitudeTargetTypemask { pub const DEFAULT : Self = Self :: ATTITUDE_TARGET_TYPEMASK_BODY_ROLL_RATE_IGNORE ; } impl Default for AttitudeTargetTypemask { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GimbalDeviceErrorFlags : u32 { const GIMBAL_DEVICE_ERROR_FLAGS_AT_ROLL_LIMIT = 1 ; const GIMBAL_DEVICE_ERROR_FLAGS_AT_PITCH_LIMIT = 2 ; const GIMBAL_DEVICE_ERROR_FLAGS_AT_YAW_LIMIT = 4 ; const GIMBAL_DEVICE_ERROR_FLAGS_ENCODER_ERROR = 8 ; const GIMBAL_DEVICE_ERROR_FLAGS_POWER_ERROR = 16 ; const GIMBAL_DEVICE_ERROR_FLAGS_MOTOR_ERROR = 32 ; const GIMBAL_DEVICE_ERROR_FLAGS_SOFTWARE_ERROR = 64 ; const GIMBAL_DEVICE_ERROR_FLAGS_COMMS_ERROR = 128 ; const GIMBAL_DEVICE_ERROR_FLAGS_CALIBRATION_RUNNING = 256 ; const GIMBAL_DEVICE_ERROR_FLAGS_NO_MANAGER = 512 ; } } impl GimbalDeviceErrorFlags { pub const DEFAULT : Self = Self :: GIMBAL_DEVICE_ERROR_FLAGS_AT_ROLL_LIMIT ; } impl Default for GimbalDeviceErrorFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum AdsbEmitterType { ADSB_EMITTER_TYPE_NO_INFO = 0 , ADSB_EMITTER_TYPE_LIGHT = 1 , ADSB_EMITTER_TYPE_SMALL = 2 , ADSB_EMITTER_TYPE_LARGE = 3 , ADSB_EMITTER_TYPE_HIGH_VORTEX_LARGE = 4 , ADSB_EMITTER_TYPE_HEAVY = 5 , ADSB_EMITTER_TYPE_HIGHLY_MANUV = 6 , ADSB_EMITTER_TYPE_ROTOCRAFT = 7 , ADSB_EMITTER_TYPE_UNASSIGNED = 8 , ADSB_EMITTER_TYPE_GLIDER = 9 , ADSB_EMITTER_TYPE_LIGHTER_AIR = 10 , ADSB_EMITTER_TYPE_PARACHUTE = 11 , ADSB_EMITTER_TYPE_ULTRA_LIGHT = 12 , ADSB_EMITTER_TYPE_UNASSIGNED2 = 13 , ADSB_EMITTER_TYPE_UAV = 14 , ADSB_EMITTER_TYPE_SPACE = 15 , ADSB_EMITTER_TYPE_UNASSGINED3 = 16 , ADSB_EMITTER_TYPE_EMERGENCY_SURFACE = 17 , ADSB_EMITTER_TYPE_SERVICE_SURFACE = 18 , ADSB_EMITTER_TYPE_POINT_OBSTACLE = 19 , } impl AdsbEmitterType { pub const DEFAULT : Self = Self :: ADSB_EMITTER_TYPE_NO_INFO ; } impl Default for AdsbEmitterType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavBatteryFault { MAV_BATTERY_FAULT_DEEP_DISCHARGE = 1 , MAV_BATTERY_FAULT_SPIKES = 2 , MAV_BATTERY_FAULT_CELL_FAIL = 4 , MAV_BATTERY_FAULT_OVER_CURRENT = 8 , MAV_BATTERY_FAULT_OVER_TEMPERATURE = 16 , MAV_BATTERY_FAULT_UNDER_TEMPERATURE = 32 , MAV_BATTERY_FAULT_INCOMPATIBLE_VOLTAGE = 64 , MAV_BATTERY_FAULT_INCOMPATIBLE_FIRMWARE = 128 , BATTERY_FAULT_INCOMPATIBLE_CELLS_CONFIGURATION = 256 , } impl MavBatteryFault { pub const DEFAULT : Self = Self :: MAV_BATTERY_FAULT_DEEP_DISCHARGE ; } impl Default for MavBatteryFault { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidDescType { MAV_ODID_DESC_TYPE_TEXT = 0 , MAV_ODID_DESC_TYPE_EMERGENCY = 1 , MAV_ODID_DESC_TYPE_EXTENDED_STATUS = 2 , } impl MavOdidDescType { pub const DEFAULT : Self = Self :: MAV_ODID_DESC_TYPE_TEXT ; } impl Default for MavOdidDescType { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MavWinchStatusFlag : u32 { const MAV_WINCH_STATUS_HEALTHY = 1 ; const MAV_WINCH_STATUS_FULLY_RETRACTED = 2 ; const MAV_WINCH_STATUS_MOVING = 4 ; const MAV_WINCH_STATUS_CLUTCH_ENGAGED = 8 ; const MAV_WINCH_STATUS_LOCKED = 16 ; const MAV_WINCH_STATUS_DROPPING = 32 ; const MAV_WINCH_STATUS_ARRESTING = 64 ; const MAV_WINCH_STATUS_GROUND_SENSE = 128 ; const MAV_WINCH_STATUS_RETRACTING = 256 ; const MAV_WINCH_STATUS_REDELIVER = 512 ; const MAV_WINCH_STATUS_ABANDON_LINE = 1024 ; const MAV_WINCH_STATUS_LOCKING = 2048 ; const MAV_WINCH_STATUS_LOAD_LINE = 4096 ; const MAV_WINCH_STATUS_LOAD_PAYLOAD = 8192 ; } } impl MavWinchStatusFlag { pub const DEFAULT : Self = Self :: MAV_WINCH_STATUS_HEALTHY ; } impl Default for MavWinchStatusFlag { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum FenceAction { FENCE_ACTION_NONE = 0 , FENCE_ACTION_GUIDED = 1 , FENCE_ACTION_REPORT = 2 , FENCE_ACTION_GUIDED_THR_PASS = 3 , FENCE_ACTION_RTL = 4 , FENCE_ACTION_HOLD = 5 , FENCE_ACTION_TERMINATE = 6 , FENCE_ACTION_LAND = 7 , } impl FenceAction { pub const DEFAULT : Self = Self :: FENCE_ACTION_NONE ; } impl Default for FenceAction { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum PreflightStorageParameterAction { PARAM_READ_PERSISTENT = 0 , PARAM_WRITE_PERSISTENT = 1 , PARAM_RESET_CONFIG_DEFAULT = 2 , PARAM_RESET_SENSOR_DEFAULT = 3 , PARAM_RESET_ALL_DEFAULT = 4 , } impl PreflightStorageParameterAction { pub const DEFAULT : Self = Self :: PARAM_READ_PERSISTENT ; } impl Default for PreflightStorageParameterAction { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavMissionResult { MAV_MISSION_ACCEPTED = 0 , MAV_MISSION_ERROR = 1 , MAV_MISSION_UNSUPPORTED_FRAME = 2 , MAV_MISSION_UNSUPPORTED = 3 , MAV_MISSION_NO_SPACE = 4 , MAV_MISSION_INVALID = 5 , MAV_MISSION_INVALID_PARAM1 = 6 , MAV_MISSION_INVALID_PARAM2 = 7 , MAV_MISSION_INVALID_PARAM3 = 8 , MAV_MISSION_INVALID_PARAM4 = 9 , MAV_MISSION_INVALID_PARAM5_X = 10 , MAV_MISSION_INVALID_PARAM6_Y = 11 , MAV_MISSION_INVALID_PARAM7 = 12 , MAV_MISSION_INVALID_SEQUENCE = 13 , MAV_MISSION_DENIED = 14 , MAV_MISSION_OPERATION_CANCELLED = 15 , } impl MavMissionResult { pub const DEFAULT : Self = Self :: MAV_MISSION_ACCEPTED ; } impl Default for MavMissionResult { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GimbalManagerCapFlags : u32 { const GIMBAL_MANAGER_CAP_FLAGS_HAS_RETRACT = 1 ; const GIMBAL_MANAGER_CAP_FLAGS_HAS_NEUTRAL = 2 ; const GIMBAL_MANAGER_CAP_FLAGS_HAS_ROLL_AXIS = 4 ; const GIMBAL_MANAGER_CAP_FLAGS_HAS_ROLL_FOLLOW = 8 ; const GIMBAL_MANAGER_CAP_FLAGS_HAS_ROLL_LOCK = 16 ; const GIMBAL_MANAGER_CAP_FLAGS_HAS_PITCH_AXIS = 32 ; const GIMBAL_MANAGER_CAP_FLAGS_HAS_PITCH_FOLLOW = 64 ; const GIMBAL_MANAGER_CAP_FLAGS_HAS_PITCH_LOCK = 128 ; const GIMBAL_MANAGER_CAP_FLAGS_HAS_YAW_AXIS = 256 ; const GIMBAL_MANAGER_CAP_FLAGS_HAS_YAW_FOLLOW = 512 ; const GIMBAL_MANAGER_CAP_FLAGS_HAS_YAW_LOCK = 1024 ; const GIMBAL_MANAGER_CAP_FLAGS_SUPPORTS_INFINITE_YAW = 2048 ; const GIMBAL_MANAGER_CAP_FLAGS_SUPPORTS_YAW_IN_EARTH_FRAME = 4096 ; const GIMBAL_MANAGER_CAP_FLAGS_HAS_RC_INPUTS = 8192 ; const GIMBAL_MANAGER_CAP_FLAGS_CAN_POINT_LOCATION_LOCAL = 65536 ; const GIMBAL_MANAGER_CAP_FLAGS_CAN_POINT_LOCATION_GLOBAL = 131072 ; } } impl GimbalManagerCapFlags { pub const DEFAULT : Self = Self :: GIMBAL_MANAGER_CAP_FLAGS_HAS_RETRACT ; } impl Default for GimbalManagerCapFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum CellularConfigResponse { CELLULAR_CONFIG_RESPONSE_ACCEPTED = 0 , CELLULAR_CONFIG_RESPONSE_APN_ERROR = 1 , CELLULAR_CONFIG_RESPONSE_PIN_ERROR = 2 , CELLULAR_CONFIG_RESPONSE_REJECTED = 3 , CELLULAR_CONFIG_BLOCKED_PUK_REQUIRED = 4 , } impl CellularConfigResponse { pub const DEFAULT : Self = Self :: CELLULAR_CONFIG_RESPONSE_ACCEPTED ; } impl Default for CellularConfigResponse { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavBatteryMode { MAV_BATTERY_MODE_UNKNOWN = 0 , MAV_BATTERY_MODE_AUTO_DISCHARGING = 1 , MAV_BATTERY_MODE_HOT_SWAP = 2 , } impl MavBatteryMode { pub const DEFAULT : Self = Self :: MAV_BATTERY_MODE_UNKNOWN ; } impl Default for MavBatteryMode { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum StorageStatus { STORAGE_STATUS_EMPTY = 0 , STORAGE_STATUS_UNFORMATTED = 1 , STORAGE_STATUS_READY = 2 , STORAGE_STATUS_NOT_SUPPORTED = 3 , } impl StorageStatus { pub const DEFAULT : Self = Self :: STORAGE_STATUS_EMPTY ; } impl Default for StorageStatus { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GimbalDeviceFlags : u16 { const GIMBAL_DEVICE_FLAGS_RETRACT = 1 ; const GIMBAL_DEVICE_FLAGS_NEUTRAL = 2 ; const GIMBAL_DEVICE_FLAGS_ROLL_LOCK = 4 ; const GIMBAL_DEVICE_FLAGS_PITCH_LOCK = 8 ; const GIMBAL_DEVICE_FLAGS_YAW_LOCK = 16 ; const GIMBAL_DEVICE_FLAGS_YAW_IN_VEHICLE_FRAME = 32 ; const GIMBAL_DEVICE_FLAGS_YAW_IN_EARTH_FRAME = 64 ; const GIMBAL_DEVICE_FLAGS_ACCEPTS_YAW_IN_EARTH_FRAME = 128 ; const GIMBAL_DEVICE_FLAGS_RC_EXCLUSIVE = 256 ; const GIMBAL_DEVICE_FLAGS_RC_MIXED = 512 ; } } impl GimbalDeviceFlags { pub const DEFAULT : Self = Self :: GIMBAL_DEVICE_FLAGS_RETRACT ; } impl Default for GimbalDeviceFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum FenceMitigate { FENCE_MITIGATE_UNKNOWN = 0 , FENCE_MITIGATE_NONE = 1 , FENCE_MITIGATE_VEL_LIMIT = 2 , } impl FenceMitigate { pub const DEFAULT : Self = Self :: FENCE_MITIGATE_UNKNOWN ; } impl Default for FenceMitigate { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CameraCapFlags : u32 { const CAMERA_CAP_FLAGS_CAPTURE_VIDEO = 1 ; const CAMERA_CAP_FLAGS_CAPTURE_IMAGE = 2 ; const CAMERA_CAP_FLAGS_HAS_MODES = 4 ; const CAMERA_CAP_FLAGS_CAN_CAPTURE_IMAGE_IN_VIDEO_MODE = 8 ; const CAMERA_CAP_FLAGS_CAN_CAPTURE_VIDEO_IN_IMAGE_MODE = 16 ; const CAMERA_CAP_FLAGS_HAS_IMAGE_SURVEY_MODE = 32 ; const CAMERA_CAP_FLAGS_HAS_BASIC_ZOOM = 64 ; const CAMERA_CAP_FLAGS_HAS_BASIC_FOCUS = 128 ; const CAMERA_CAP_FLAGS_HAS_VIDEO_STREAM = 256 ; const CAMERA_CAP_FLAGS_HAS_TRACKING_POINT = 512 ; const CAMERA_CAP_FLAGS_HAS_TRACKING_RECTANGLE = 1024 ; const CAMERA_CAP_FLAGS_HAS_TRACKING_GEO_STATUS = 2048 ; } } impl CameraCapFlags { pub const DEFAULT : Self = Self :: CAMERA_CAP_FLAGS_CAPTURE_VIDEO ; } impl Default for CameraCapFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MagCalStatus { MAG_CAL_NOT_STARTED = 0 , MAG_CAL_WAITING_TO_START = 1 , MAG_CAL_RUNNING_STEP_ONE = 2 , MAG_CAL_RUNNING_STEP_TWO = 3 , MAG_CAL_SUCCESS = 4 , MAG_CAL_FAILED = 5 , MAG_CAL_BAD_ORIENTATION = 6 , MAG_CAL_BAD_RADIUS = 7 , } impl MagCalStatus { pub const DEFAULT : Self = Self :: MAG_CAL_NOT_STARTED ; } impl Default for MagCalStatus { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavSeverity { MAV_SEVERITY_EMERGENCY = 0 , MAV_SEVERITY_ALERT = 1 , MAV_SEVERITY_CRITICAL = 2 , MAV_SEVERITY_ERROR = 3 , MAV_SEVERITY_WARNING = 4 , MAV_SEVERITY_NOTICE = 5 , MAV_SEVERITY_INFO = 6 , MAV_SEVERITY_DEBUG = 7 , } impl MavSeverity { pub const DEFAULT : Self = Self :: MAV_SEVERITY_EMERGENCY ; } impl Default for MavSeverity { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidClassEu { MAV_ODID_CLASS_EU_UNDECLARED = 0 , MAV_ODID_CLASS_EU_CLASS_0 = 1 , MAV_ODID_CLASS_EU_CLASS_1 = 2 , MAV_ODID_CLASS_EU_CLASS_2 = 3 , MAV_ODID_CLASS_EU_CLASS_3 = 4 , MAV_ODID_CLASS_EU_CLASS_4 = 5 , MAV_ODID_CLASS_EU_CLASS_5 = 6 , MAV_ODID_CLASS_EU_CLASS_6 = 7 , } impl MavOdidClassEu { pub const DEFAULT : Self = Self :: MAV_ODID_CLASS_EU_UNDECLARED ; } impl Default for MavOdidClassEu { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavCollisionAction { MAV_COLLISION_ACTION_NONE = 0 , MAV_COLLISION_ACTION_REPORT = 1 , MAV_COLLISION_ACTION_ASCEND_OR_DESCEND = 2 , MAV_COLLISION_ACTION_MOVE_HORIZONTALLY = 3 , MAV_COLLISION_ACTION_MOVE_PERPENDICULAR = 4 , MAV_COLLISION_ACTION_RTL = 5 , MAV_COLLISION_ACTION_HOVER = 6 , } impl MavCollisionAction { pub const DEFAULT : Self = Self :: MAV_COLLISION_ACTION_NONE ; } impl Default for MavCollisionAction { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum ActuatorOutputFunction { ACTUATOR_OUTPUT_FUNCTION_NONE = 0 , ACTUATOR_OUTPUT_FUNCTION_MOTOR1 = 1 , ACTUATOR_OUTPUT_FUNCTION_MOTOR2 = 2 , ACTUATOR_OUTPUT_FUNCTION_MOTOR3 = 3 , ACTUATOR_OUTPUT_FUNCTION_MOTOR4 = 4 , ACTUATOR_OUTPUT_FUNCTION_MOTOR5 = 5 , ACTUATOR_OUTPUT_FUNCTION_MOTOR6 = 6 , ACTUATOR_OUTPUT_FUNCTION_MOTOR7 = 7 , ACTUATOR_OUTPUT_FUNCTION_MOTOR8 = 8 , ACTUATOR_OUTPUT_FUNCTION_MOTOR9 = 9 , ACTUATOR_OUTPUT_FUNCTION_MOTOR10 = 10 , ACTUATOR_OUTPUT_FUNCTION_MOTOR11 = 11 , ACTUATOR_OUTPUT_FUNCTION_MOTOR12 = 12 , ACTUATOR_OUTPUT_FUNCTION_MOTOR13 = 13 , ACTUATOR_OUTPUT_FUNCTION_MOTOR14 = 14 , ACTUATOR_OUTPUT_FUNCTION_MOTOR15 = 15 , ACTUATOR_OUTPUT_FUNCTION_MOTOR16 = 16 , ACTUATOR_OUTPUT_FUNCTION_SERVO1 = 33 , ACTUATOR_OUTPUT_FUNCTION_SERVO2 = 34 , ACTUATOR_OUTPUT_FUNCTION_SERVO3 = 35 , ACTUATOR_OUTPUT_FUNCTION_SERVO4 = 36 , ACTUATOR_OUTPUT_FUNCTION_SERVO5 = 37 , ACTUATOR_OUTPUT_FUNCTION_SERVO6 = 38 , ACTUATOR_OUTPUT_FUNCTION_SERVO7 = 39 , ACTUATOR_OUTPUT_FUNCTION_SERVO8 = 40 , ACTUATOR_OUTPUT_FUNCTION_SERVO9 = 41 , ACTUATOR_OUTPUT_FUNCTION_SERVO10 = 42 , ACTUATOR_OUTPUT_FUNCTION_SERVO11 = 43 , ACTUATOR_OUTPUT_FUNCTION_SERVO12 = 44 , ACTUATOR_OUTPUT_FUNCTION_SERVO13 = 45 , ACTUATOR_OUTPUT_FUNCTION_SERVO14 = 46 , ACTUATOR_OUTPUT_FUNCTION_SERVO15 = 47 , ACTUATOR_OUTPUT_FUNCTION_SERVO16 = 48 , } impl ActuatorOutputFunction { pub const DEFAULT : Self = Self :: ACTUATOR_OUTPUT_FUNCTION_NONE ; } impl Default for ActuatorOutputFunction { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MavModeFlag : u8 { const MAV_MODE_FLAG_SAFETY_ARMED = 128 ; const MAV_MODE_FLAG_MANUAL_INPUT_ENABLED = 64 ; const MAV_MODE_FLAG_HIL_ENABLED = 32 ; const MAV_MODE_FLAG_STABILIZE_ENABLED = 16 ; const MAV_MODE_FLAG_GUIDED_ENABLED = 8 ; const MAV_MODE_FLAG_AUTO_ENABLED = 4 ; const MAV_MODE_FLAG_TEST_ENABLED = 2 ; const MAV_MODE_FLAG_CUSTOM_MODE_ENABLED = 1 ; } } impl MavModeFlag { pub const DEFAULT : Self = Self :: MAV_MODE_FLAG_SAFETY_ARMED ; } impl Default for MavModeFlag { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavBatteryType { MAV_BATTERY_TYPE_UNKNOWN = 0 , MAV_BATTERY_TYPE_LIPO = 1 , MAV_BATTERY_TYPE_LIFE = 2 , MAV_BATTERY_TYPE_LION = 3 , MAV_BATTERY_TYPE_NIMH = 4 , } impl MavBatteryType { pub const DEFAULT : Self = Self :: MAV_BATTERY_TYPE_UNKNOWN ; } impl Default for MavBatteryType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidUaType { MAV_ODID_UA_TYPE_NONE = 0 , MAV_ODID_UA_TYPE_AEROPLANE = 1 , MAV_ODID_UA_TYPE_HELICOPTER_OR_MULTIROTOR = 2 , MAV_ODID_UA_TYPE_GYROPLANE = 3 , MAV_ODID_UA_TYPE_HYBRID_LIFT = 4 , MAV_ODID_UA_TYPE_ORNITHOPTER = 5 , MAV_ODID_UA_TYPE_GLIDER = 6 , MAV_ODID_UA_TYPE_KITE = 7 , MAV_ODID_UA_TYPE_FREE_BALLOON = 8 , MAV_ODID_UA_TYPE_CAPTIVE_BALLOON = 9 , MAV_ODID_UA_TYPE_AIRSHIP = 10 , MAV_ODID_UA_TYPE_FREE_FALL_PARACHUTE = 11 , MAV_ODID_UA_TYPE_ROCKET = 12 , MAV_ODID_UA_TYPE_TETHERED_POWERED_AIRCRAFT = 13 , MAV_ODID_UA_TYPE_GROUND_OBSTACLE = 14 , MAV_ODID_UA_TYPE_OTHER = 15 , } impl MavOdidUaType { pub const DEFAULT : Self = Self :: MAV_ODID_UA_TYPE_NONE ; } impl Default for MavOdidUaType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum NavVtolLandOptions { NAV_VTOL_LAND_OPTIONS_DEFAULT = 0 , NAV_VTOL_LAND_OPTIONS_FW_DESCENT = 1 , NAV_VTOL_LAND_OPTIONS_HOVER_DESCENT = 2 , } impl NavVtolLandOptions { pub const DEFAULT : Self = Self :: NAV_VTOL_LAND_OPTIONS_DEFAULT ; } impl Default for NavVtolLandOptions { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavVtolState { MAV_VTOL_STATE_UNDEFINED = 0 , MAV_VTOL_STATE_TRANSITION_TO_FW = 1 , MAV_VTOL_STATE_TRANSITION_TO_MC = 2 , MAV_VTOL_STATE_MC = 3 , MAV_VTOL_STATE_FW = 4 , } impl MavVtolState { pub const DEFAULT : Self = Self :: MAV_VTOL_STATE_UNDEFINED ; } impl Default for MavVtolState { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum UavcanNodeMode { UAVCAN_NODE_MODE_OPERATIONAL = 0 , UAVCAN_NODE_MODE_INITIALIZATION = 1 , UAVCAN_NODE_MODE_MAINTENANCE = 2 , UAVCAN_NODE_MODE_SOFTWARE_UPDATE = 3 , UAVCAN_NODE_MODE_OFFLINE = 7 , } impl UavcanNodeMode { pub const DEFAULT : Self = Self :: UAVCAN_NODE_MODE_OPERATIONAL ; } impl Default for UavcanNodeMode { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum WifiConfigApMode { WIFI_CONFIG_AP_MODE_UNDEFINED = 0 , WIFI_CONFIG_AP_MODE_AP = 1 , WIFI_CONFIG_AP_MODE_STATION = 2 , WIFI_CONFIG_AP_MODE_DISABLED = 3 , } impl WifiConfigApMode { pub const DEFAULT : Self = Self :: WIFI_CONFIG_AP_MODE_UNDEFINED ; } impl Default for WifiConfigApMode { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct EstimatorStatusFlags : u16 { const ESTIMATOR_ATTITUDE = 1 ; const ESTIMATOR_VELOCITY_HORIZ = 2 ; const ESTIMATOR_VELOCITY_VERT = 4 ; const ESTIMATOR_POS_HORIZ_REL = 8 ; const ESTIMATOR_POS_HORIZ_ABS = 16 ; const ESTIMATOR_POS_VERT_ABS = 32 ; const ESTIMATOR_POS_VERT_AGL = 64 ; const ESTIMATOR_CONST_POS_MODE = 128 ; const ESTIMATOR_PRED_POS_HORIZ_REL = 256 ; const ESTIMATOR_PRED_POS_HORIZ_ABS = 512 ; const ESTIMATOR_GPS_GLITCH = 1024 ; const ESTIMATOR_ACCEL_ERROR = 2048 ; } } impl EstimatorStatusFlags { pub const DEFAULT : Self = Self :: ESTIMATOR_ATTITUDE ; } impl Default for EstimatorStatusFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MissionState { MISSION_STATE_UNKNOWN = 0 , MISSION_STATE_NO_MISSION = 1 , MISSION_STATE_NOT_STARTED = 2 , MISSION_STATE_ACTIVE = 3 , MISSION_STATE_PAUSED = 4 , MISSION_STATE_COMPLETE = 5 , } impl MissionState { pub const DEFAULT : Self = Self :: MISSION_STATE_UNKNOWN ; } impl Default for MissionState { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum UavcanNodeHealth { UAVCAN_NODE_HEALTH_OK = 0 , UAVCAN_NODE_HEALTH_WARNING = 1 , UAVCAN_NODE_HEALTH_ERROR = 2 , UAVCAN_NODE_HEALTH_CRITICAL = 3 , } impl UavcanNodeHealth { pub const DEFAULT : Self = Self :: UAVCAN_NODE_HEALTH_OK ; } impl Default for UavcanNodeHealth { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum AisType { AIS_TYPE_UNKNOWN = 0 , AIS_TYPE_RESERVED_1 = 1 , AIS_TYPE_RESERVED_2 = 2 , AIS_TYPE_RESERVED_3 = 3 , AIS_TYPE_RESERVED_4 = 4 , AIS_TYPE_RESERVED_5 = 5 , AIS_TYPE_RESERVED_6 = 6 , AIS_TYPE_RESERVED_7 = 7 , AIS_TYPE_RESERVED_8 = 8 , AIS_TYPE_RESERVED_9 = 9 , AIS_TYPE_RESERVED_10 = 10 , AIS_TYPE_RESERVED_11 = 11 , AIS_TYPE_RESERVED_12 = 12 , AIS_TYPE_RESERVED_13 = 13 , AIS_TYPE_RESERVED_14 = 14 , AIS_TYPE_RESERVED_15 = 15 , AIS_TYPE_RESERVED_16 = 16 , AIS_TYPE_RESERVED_17 = 17 , AIS_TYPE_RESERVED_18 = 18 , AIS_TYPE_RESERVED_19 = 19 , AIS_TYPE_WIG = 20 , AIS_TYPE_WIG_HAZARDOUS_A = 21 , AIS_TYPE_WIG_HAZARDOUS_B = 22 , AIS_TYPE_WIG_HAZARDOUS_C = 23 , AIS_TYPE_WIG_HAZARDOUS_D = 24 , AIS_TYPE_WIG_RESERVED_1 = 25 , AIS_TYPE_WIG_RESERVED_2 = 26 , AIS_TYPE_WIG_RESERVED_3 = 27 , AIS_TYPE_WIG_RESERVED_4 = 28 , AIS_TYPE_WIG_RESERVED_5 = 29 , AIS_TYPE_FISHING = 30 , AIS_TYPE_TOWING = 31 , AIS_TYPE_TOWING_LARGE = 32 , AIS_TYPE_DREDGING = 33 , AIS_TYPE_DIVING = 34 , AIS_TYPE_MILITARY = 35 , AIS_TYPE_SAILING = 36 , AIS_TYPE_PLEASURE = 37 , AIS_TYPE_RESERVED_20 = 38 , AIS_TYPE_RESERVED_21 = 39 , AIS_TYPE_HSC = 40 , AIS_TYPE_HSC_HAZARDOUS_A = 41 , AIS_TYPE_HSC_HAZARDOUS_B = 42 , AIS_TYPE_HSC_HAZARDOUS_C = 43 , AIS_TYPE_HSC_HAZARDOUS_D = 44 , AIS_TYPE_HSC_RESERVED_1 = 45 , AIS_TYPE_HSC_RESERVED_2 = 46 , AIS_TYPE_HSC_RESERVED_3 = 47 , AIS_TYPE_HSC_RESERVED_4 = 48 , AIS_TYPE_HSC_UNKNOWN = 49 , AIS_TYPE_PILOT = 50 , AIS_TYPE_SAR = 51 , AIS_TYPE_TUG = 52 , AIS_TYPE_PORT_TENDER = 53 , AIS_TYPE_ANTI_POLLUTION = 54 , AIS_TYPE_LAW_ENFORCEMENT = 55 , AIS_TYPE_SPARE_LOCAL_1 = 56 , AIS_TYPE_SPARE_LOCAL_2 = 57 , AIS_TYPE_MEDICAL_TRANSPORT = 58 , AIS_TYPE_NONECOMBATANT = 59 , AIS_TYPE_PASSENGER = 60 , AIS_TYPE_PASSENGER_HAZARDOUS_A = 61 , AIS_TYPE_PASSENGER_HAZARDOUS_B = 62 , AIS_TYPE_PASSENGER_HAZARDOUS_C = 63 , AIS_TYPE_PASSENGER_HAZARDOUS_D = 64 , AIS_TYPE_PASSENGER_RESERVED_1 = 65 , AIS_TYPE_PASSENGER_RESERVED_2 = 66 , AIS_TYPE_PASSENGER_RESERVED_3 = 67 , AIS_TYPE_PASSENGER_RESERVED_4 = 68 , AIS_TYPE_PASSENGER_UNKNOWN = 69 , AIS_TYPE_CARGO = 70 , AIS_TYPE_CARGO_HAZARDOUS_A = 71 , AIS_TYPE_CARGO_HAZARDOUS_B = 72 , AIS_TYPE_CARGO_HAZARDOUS_C = 73 , AIS_TYPE_CARGO_HAZARDOUS_D = 74 , AIS_TYPE_CARGO_RESERVED_1 = 75 , AIS_TYPE_CARGO_RESERVED_2 = 76 , AIS_TYPE_CARGO_RESERVED_3 = 77 , AIS_TYPE_CARGO_RESERVED_4 = 78 , AIS_TYPE_CARGO_UNKNOWN = 79 , AIS_TYPE_TANKER = 80 , AIS_TYPE_TANKER_HAZARDOUS_A = 81 , AIS_TYPE_TANKER_HAZARDOUS_B = 82 , AIS_TYPE_TANKER_HAZARDOUS_C = 83 , AIS_TYPE_TANKER_HAZARDOUS_D = 84 , AIS_TYPE_TANKER_RESERVED_1 = 85 , AIS_TYPE_TANKER_RESERVED_2 = 86 , AIS_TYPE_TANKER_RESERVED_3 = 87 , AIS_TYPE_TANKER_RESERVED_4 = 88 , AIS_TYPE_TANKER_UNKNOWN = 89 , AIS_TYPE_OTHER = 90 , AIS_TYPE_OTHER_HAZARDOUS_A = 91 , AIS_TYPE_OTHER_HAZARDOUS_B = 92 , AIS_TYPE_OTHER_HAZARDOUS_C = 93 , AIS_TYPE_OTHER_HAZARDOUS_D = 94 , AIS_TYPE_OTHER_RESERVED_1 = 95 , AIS_TYPE_OTHER_RESERVED_2 = 96 , AIS_TYPE_OTHER_RESERVED_3 = 97 , AIS_TYPE_OTHER_RESERVED_4 = 98 , AIS_TYPE_OTHER_UNKNOWN = 99 , } impl AisType { pub const DEFAULT : Self = Self :: AIS_TYPE_UNKNOWN ; } impl Default for AisType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidCategoryEu { MAV_ODID_CATEGORY_EU_UNDECLARED = 0 , MAV_ODID_CATEGORY_EU_OPEN = 1 , MAV_ODID_CATEGORY_EU_SPECIFIC = 2 , MAV_ODID_CATEGORY_EU_CERTIFIED = 3 , } impl MavOdidCategoryEu { pub const DEFAULT : Self = Self :: MAV_ODID_CATEGORY_EU_UNDECLARED ; } impl Default for MavOdidCategoryEu { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavFtpOpcode { MAV_FTP_OPCODE_NONE = 0 , MAV_FTP_OPCODE_TERMINATESESSION = 1 , MAV_FTP_OPCODE_RESETSESSION = 2 , MAV_FTP_OPCODE_LISTDIRECTORY = 3 , MAV_FTP_OPCODE_OPENFILERO = 4 , MAV_FTP_OPCODE_READFILE = 5 , MAV_FTP_OPCODE_CREATEFILE = 6 , MAV_FTP_OPCODE_WRITEFILE = 7 , MAV_FTP_OPCODE_REMOVEFILE = 8 , MAV_FTP_OPCODE_CREATEDIRECTORY = 9 , MAV_FTP_OPCODE_REMOVEDIRECTORY = 10 , MAV_FTP_OPCODE_OPENFILEWO = 11 , MAV_FTP_OPCODE_TRUNCATEFILE = 12 , MAV_FTP_OPCODE_RENAME = 13 , MAV_FTP_OPCODE_CALCFILECRC = 14 , MAV_FTP_OPCODE_BURSTREADFILE = 15 , MAV_FTP_OPCODE_ACK = 128 , MAV_FTP_OPCODE_NAK = 129 , } impl MavFtpOpcode { pub const DEFAULT : Self = Self :: MAV_FTP_OPCODE_NONE ; } impl Default for MavFtpOpcode { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavBatteryChargeState { MAV_BATTERY_CHARGE_STATE_UNDEFINED = 0 , MAV_BATTERY_CHARGE_STATE_OK = 1 , MAV_BATTERY_CHARGE_STATE_LOW = 2 , MAV_BATTERY_CHARGE_STATE_CRITICAL = 3 , MAV_BATTERY_CHARGE_STATE_EMERGENCY = 4 , MAV_BATTERY_CHARGE_STATE_FAILED = 5 , MAV_BATTERY_CHARGE_STATE_UNHEALTHY = 6 , MAV_BATTERY_CHARGE_STATE_CHARGING = 7 , } impl MavBatteryChargeState { pub const DEFAULT : Self = Self :: MAV_BATTERY_CHARGE_STATE_UNDEFINED ; } impl Default for MavBatteryChargeState { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum CellularNetworkFailedReason { CELLULAR_NETWORK_FAILED_REASON_NONE = 0 , CELLULAR_NETWORK_FAILED_REASON_UNKNOWN = 1 , CELLULAR_NETWORK_FAILED_REASON_SIM_MISSING = 2 , CELLULAR_NETWORK_FAILED_REASON_SIM_ERROR = 3 , } impl CellularNetworkFailedReason { pub const DEFAULT : Self = Self :: CELLULAR_NETWORK_FAILED_REASON_NONE ; } impl Default for CellularNetworkFailedReason { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct AdsbFlags : u16 { const ADSB_FLAGS_VALID_COORDS = 1 ; const ADSB_FLAGS_VALID_ALTITUDE = 2 ; const ADSB_FLAGS_VALID_HEADING = 4 ; const ADSB_FLAGS_VALID_VELOCITY = 8 ; const ADSB_FLAGS_VALID_CALLSIGN = 16 ; const ADSB_FLAGS_VALID_SQUAWK = 32 ; const ADSB_FLAGS_SIMULATED = 64 ; const ADSB_FLAGS_VERTICAL_VELOCITY_VALID = 128 ; const ADSB_FLAGS_BARO_VALID = 256 ; const ADSB_FLAGS_SOURCE_UAT = 32768 ; } } impl AdsbFlags { pub const DEFAULT : Self = Self :: ADSB_FLAGS_VALID_COORDS ; } impl Default for AdsbFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavModeFlagDecodePosition { MAV_MODE_FLAG_DECODE_POSITION_SAFETY = 128 , MAV_MODE_FLAG_DECODE_POSITION_MANUAL = 64 , MAV_MODE_FLAG_DECODE_POSITION_HIL = 32 , MAV_MODE_FLAG_DECODE_POSITION_STABILIZE = 16 , MAV_MODE_FLAG_DECODE_POSITION_GUIDED = 8 , MAV_MODE_FLAG_DECODE_POSITION_AUTO = 4 , MAV_MODE_FLAG_DECODE_POSITION_TEST = 2 , MAV_MODE_FLAG_DECODE_POSITION_CUSTOM_MODE = 1 , } impl MavModeFlagDecodePosition { pub const DEFAULT : Self = Self :: MAV_MODE_FLAG_DECODE_POSITION_SAFETY ; } impl Default for MavModeFlagDecodePosition { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum GpsFixType { GPS_FIX_TYPE_NO_GPS = 0 , GPS_FIX_TYPE_NO_FIX = 1 , GPS_FIX_TYPE_2D_FIX = 2 , GPS_FIX_TYPE_3D_FIX = 3 , GPS_FIX_TYPE_DGPS = 4 , GPS_FIX_TYPE_RTK_FLOAT = 5 , GPS_FIX_TYPE_RTK_FIXED = 6 , GPS_FIX_TYPE_STATIC = 7 , GPS_FIX_TYPE_PPP = 8 , } impl GpsFixType { pub const DEFAULT : Self = Self :: GPS_FIX_TYPE_NO_GPS ; } impl Default for GpsFixType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum CameraTrackingTargetData { CAMERA_TRACKING_TARGET_DATA_NONE = 0 , CAMERA_TRACKING_TARGET_DATA_EMBEDDED = 1 , CAMERA_TRACKING_TARGET_DATA_RENDERED = 2 , CAMERA_TRACKING_TARGET_DATA_IN_STATUS = 4 , } impl CameraTrackingTargetData { pub const DEFAULT : Self = Self :: CAMERA_TRACKING_TARGET_DATA_NONE ; } impl Default for CameraTrackingTargetData { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct AisFlags : u16 { const AIS_FLAGS_POSITION_ACCURACY = 1 ; const AIS_FLAGS_VALID_COG = 2 ; const AIS_FLAGS_VALID_VELOCITY = 4 ; const AIS_FLAGS_HIGH_VELOCITY = 8 ; const AIS_FLAGS_VALID_TURN_RATE = 16 ; const AIS_FLAGS_TURN_RATE_SIGN_ONLY = 32 ; const AIS_FLAGS_VALID_DIMENSIONS = 64 ; const AIS_FLAGS_LARGE_BOW_DIMENSION = 128 ; const AIS_FLAGS_LARGE_STERN_DIMENSION = 256 ; const AIS_FLAGS_LARGE_PORT_DIMENSION = 512 ; const AIS_FLAGS_LARGE_STARBOARD_DIMENSION = 1024 ; const AIS_FLAGS_VALID_CALLSIGN = 2048 ; const AIS_FLAGS_VALID_NAME = 4096 ; } } impl AisFlags { pub const DEFAULT : Self = Self :: AIS_FLAGS_POSITION_ACCURACY ; } impl Default for AisFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum WinchActions { WINCH_RELAXED = 0 , WINCH_RELATIVE_LENGTH_CONTROL = 1 , WINCH_RATE_CONTROL = 2 , WINCH_LOCK = 3 , WINCH_DELIVER = 4 , WINCH_HOLD = 5 , WINCH_RETRACT = 6 , WINCH_LOAD_LINE = 7 , WINCH_ABANDON_LINE = 8 , WINCH_LOAD_PAYLOAD = 9 , } impl WinchActions { pub const DEFAULT : Self = Self :: WINCH_RELAXED ; } impl Default for WinchActions { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidArmStatus { MAV_ODID_ARM_STATUS_GOOD_TO_ARM = 0 , MAV_ODID_ARM_STATUS_PRE_ARM_FAIL_GENERIC = 1 , } impl MavOdidArmStatus { pub const DEFAULT : Self = Self :: MAV_ODID_ARM_STATUS_GOOD_TO_ARM ; } impl Default for MavOdidArmStatus { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HilSensorUpdatedFlags : u32 { const HIL_SENSOR_UPDATED_NONE = 0 ; const HIL_SENSOR_UPDATED_XACC = 1 ; const HIL_SENSOR_UPDATED_YACC = 2 ; const HIL_SENSOR_UPDATED_ZACC = 4 ; const HIL_SENSOR_UPDATED_XGYRO = 8 ; const HIL_SENSOR_UPDATED_YGYRO = 16 ; const HIL_SENSOR_UPDATED_ZGYRO = 32 ; const HIL_SENSOR_UPDATED_XMAG = 64 ; const HIL_SENSOR_UPDATED_YMAG = 128 ; const HIL_SENSOR_UPDATED_ZMAG = 256 ; const HIL_SENSOR_UPDATED_ABS_PRESSURE = 512 ; const HIL_SENSOR_UPDATED_DIFF_PRESSURE = 1024 ; const HIL_SENSOR_UPDATED_PRESSURE_ALT = 2048 ; const HIL_SENSOR_UPDATED_TEMPERATURE = 4096 ; const HIL_SENSOR_UPDATED_RESET = 2147483648 ; } } impl HilSensorUpdatedFlags { pub const DEFAULT : Self = Self :: HIL_SENSOR_UPDATED_NONE ; } impl Default for HilSensorUpdatedFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidVerAcc { MAV_ODID_VER_ACC_UNKNOWN = 0 , MAV_ODID_VER_ACC_150_METER = 1 , MAV_ODID_VER_ACC_45_METER = 2 , MAV_ODID_VER_ACC_25_METER = 3 , MAV_ODID_VER_ACC_10_METER = 4 , MAV_ODID_VER_ACC_3_METER = 5 , MAV_ODID_VER_ACC_1_METER = 6 , } impl MavOdidVerAcc { pub const DEFAULT : Self = Self :: MAV_ODID_VER_ACC_UNKNOWN ; } impl Default for MavOdidVerAcc { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavMissionType { MAV_MISSION_TYPE_MISSION = 0 , MAV_MISSION_TYPE_FENCE = 1 , MAV_MISSION_TYPE_RALLY = 2 , MAV_MISSION_TYPE_ALL = 255 , } impl MavMissionType { pub const DEFAULT : Self = Self :: MAV_MISSION_TYPE_MISSION ; } impl Default for MavMissionType { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MavProtocolCapability : u64 { const MAV_PROTOCOL_CAPABILITY_MISSION_FLOAT = 1 ; const MAV_PROTOCOL_CAPABILITY_PARAM_FLOAT = 2 ; const MAV_PROTOCOL_CAPABILITY_MISSION_INT = 4 ; const MAV_PROTOCOL_CAPABILITY_COMMAND_INT = 8 ; const MAV_PROTOCOL_CAPABILITY_PARAM_ENCODE_BYTEWISE = 16 ; const MAV_PROTOCOL_CAPABILITY_FTP = 32 ; const MAV_PROTOCOL_CAPABILITY_SET_ATTITUDE_TARGET = 64 ; const MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_LOCAL_NED = 128 ; const MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_GLOBAL_INT = 256 ; const MAV_PROTOCOL_CAPABILITY_TERRAIN = 512 ; const MAV_PROTOCOL_CAPABILITY_SET_ACTUATOR_TARGET = 1024 ; const MAV_PROTOCOL_CAPABILITY_FLIGHT_TERMINATION = 2048 ; const MAV_PROTOCOL_CAPABILITY_COMPASS_CALIBRATION = 4096 ; const MAV_PROTOCOL_CAPABILITY_MAVLINK2 = 8192 ; const MAV_PROTOCOL_CAPABILITY_MISSION_FENCE = 16384 ; const MAV_PROTOCOL_CAPABILITY_MISSION_RALLY = 32768 ; const MAV_PROTOCOL_CAPABILITY_RESERVED2 = 65536 ; const MAV_PROTOCOL_CAPABILITY_PARAM_ENCODE_C_CAST = 131072 ; } } impl MavProtocolCapability { pub const DEFAULT : Self = Self :: MAV_PROTOCOL_CAPABILITY_MISSION_FLOAT ; } impl Default for MavProtocolCapability { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavSysStatusSensorExtended { MAV_SYS_STATUS_RECOVERY_SYSTEM = 1 , } impl MavSysStatusSensorExtended { pub const DEFAULT : Self = Self :: MAV_SYS_STATUS_RECOVERY_SYSTEM ; } impl Default for MavSysStatusSensorExtended { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum FailureType { FAILURE_TYPE_OK = 0 , FAILURE_TYPE_OFF = 1 , FAILURE_TYPE_STUCK = 2 , FAILURE_TYPE_GARBAGE = 3 , FAILURE_TYPE_WRONG = 4 , FAILURE_TYPE_SLOW = 5 , FAILURE_TYPE_DELAYED = 6 , FAILURE_TYPE_INTERMITTENT = 7 , } impl FailureType { pub const DEFAULT : Self = Self :: FAILURE_TYPE_OK ; } impl Default for FailureType { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GpsInputIgnoreFlags : u16 { const GPS_INPUT_IGNORE_FLAG_ALT = 1 ; const GPS_INPUT_IGNORE_FLAG_HDOP = 2 ; const GPS_INPUT_IGNORE_FLAG_VDOP = 4 ; const GPS_INPUT_IGNORE_FLAG_VEL_HORIZ = 8 ; const GPS_INPUT_IGNORE_FLAG_VEL_VERT = 16 ; const GPS_INPUT_IGNORE_FLAG_SPEED_ACCURACY = 32 ; const GPS_INPUT_IGNORE_FLAG_HORIZONTAL_ACCURACY = 64 ; const GPS_INPUT_IGNORE_FLAG_VERTICAL_ACCURACY = 128 ; } } impl GpsInputIgnoreFlags { pub const DEFAULT : Self = Self :: GPS_INPUT_IGNORE_FLAG_ALT ; } impl Default for GpsInputIgnoreFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavGoto { MAV_GOTO_DO_HOLD = 0 , MAV_GOTO_DO_CONTINUE = 1 , MAV_GOTO_HOLD_AT_CURRENT_POSITION = 2 , MAV_GOTO_HOLD_AT_SPECIFIED_POSITION = 3 , } impl MavGoto { pub const DEFAULT : Self = Self :: MAV_GOTO_DO_HOLD ; } impl Default for MavGoto { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum OrbitYawBehaviour { ORBIT_YAW_BEHAVIOUR_HOLD_FRONT_TO_CIRCLE_CENTER = 0 , ORBIT_YAW_BEHAVIOUR_HOLD_INITIAL_HEADING = 1 , ORBIT_YAW_BEHAVIOUR_UNCONTROLLED = 2 , ORBIT_YAW_BEHAVIOUR_HOLD_FRONT_TANGENT_TO_CIRCLE = 3 , ORBIT_YAW_BEHAVIOUR_RC_CONTROLLED = 4 , } impl OrbitYawBehaviour { pub const DEFAULT : Self = Self :: ORBIT_YAW_BEHAVIOUR_HOLD_FRONT_TO_CIRCLE_CENTER ; } impl Default for OrbitYawBehaviour { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum GimbalManagerFlags { GIMBAL_MANAGER_FLAGS_RETRACT = 1 , GIMBAL_MANAGER_FLAGS_NEUTRAL = 2 , GIMBAL_MANAGER_FLAGS_ROLL_LOCK = 4 , GIMBAL_MANAGER_FLAGS_PITCH_LOCK = 8 , GIMBAL_MANAGER_FLAGS_YAW_LOCK = 16 , GIMBAL_MANAGER_FLAGS_YAW_IN_VEHICLE_FRAME = 32 , GIMBAL_MANAGER_FLAGS_YAW_IN_EARTH_FRAME = 64 , GIMBAL_MANAGER_FLAGS_ACCEPTS_YAW_IN_EARTH_FRAME = 128 , GIMBAL_MANAGER_FLAGS_RC_EXCLUSIVE = 256 , GIMBAL_MANAGER_FLAGS_RC_MIXED = 512 , } impl GimbalManagerFlags { pub const DEFAULT : Self = Self :: GIMBAL_MANAGER_FLAGS_RETRACT ; } impl Default for GimbalManagerFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavCollisionSrc { MAV_COLLISION_SRC_ADSB = 0 , MAV_COLLISION_SRC_MAVLINK_GPS_GLOBAL_INT = 1 , } impl MavCollisionSrc { pub const DEFAULT : Self = Self :: MAV_COLLISION_SRC_ADSB ; } impl Default for MavCollisionSrc { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavParamExtType { MAV_PARAM_EXT_TYPE_UINT8 = 1 , MAV_PARAM_EXT_TYPE_INT8 = 2 , MAV_PARAM_EXT_TYPE_UINT16 = 3 , MAV_PARAM_EXT_TYPE_INT16 = 4 , MAV_PARAM_EXT_TYPE_UINT32 = 5 , MAV_PARAM_EXT_TYPE_INT32 = 6 , MAV_PARAM_EXT_TYPE_UINT64 = 7 , MAV_PARAM_EXT_TYPE_INT64 = 8 , MAV_PARAM_EXT_TYPE_REAL32 = 9 , MAV_PARAM_EXT_TYPE_REAL64 = 10 , MAV_PARAM_EXT_TYPE_CUSTOM = 11 , } impl MavParamExtType { pub const DEFAULT : Self = Self :: MAV_PARAM_EXT_TYPE_UINT8 ; } impl Default for MavParamExtType { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HighresImuUpdatedFlags : u16 { const HIGHRES_IMU_UPDATED_NONE = 0 ; const HIGHRES_IMU_UPDATED_XACC = 1 ; const HIGHRES_IMU_UPDATED_YACC = 2 ; const HIGHRES_IMU_UPDATED_ZACC = 4 ; const HIGHRES_IMU_UPDATED_XGYRO = 8 ; const HIGHRES_IMU_UPDATED_YGYRO = 16 ; const HIGHRES_IMU_UPDATED_ZGYRO = 32 ; const HIGHRES_IMU_UPDATED_XMAG = 64 ; const HIGHRES_IMU_UPDATED_YMAG = 128 ; const HIGHRES_IMU_UPDATED_ZMAG = 256 ; const HIGHRES_IMU_UPDATED_ABS_PRESSURE = 512 ; const HIGHRES_IMU_UPDATED_DIFF_PRESSURE = 1024 ; const HIGHRES_IMU_UPDATED_PRESSURE_ALT = 2048 ; const HIGHRES_IMU_UPDATED_TEMPERATURE = 4096 ; const HIGHRES_IMU_UPDATED_ALL = 65535 ; } } impl HighresImuUpdatedFlags { pub const DEFAULT : Self = Self :: HIGHRES_IMU_UPDATED_NONE ; } impl Default for HighresImuUpdatedFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum ActuatorConfiguration { ACTUATOR_CONFIGURATION_NONE = 0 , ACTUATOR_CONFIGURATION_BEEP = 1 , ACTUATOR_CONFIGURATION_3D_MODE_ON = 2 , ACTUATOR_CONFIGURATION_3D_MODE_OFF = 3 , ACTUATOR_CONFIGURATION_SPIN_DIRECTION1 = 4 , ACTUATOR_CONFIGURATION_SPIN_DIRECTION2 = 5 , } impl ActuatorConfiguration { pub const DEFAULT : Self = Self :: ACTUATOR_CONFIGURATION_NONE ; } impl Default for ActuatorConfiguration { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidHorAcc { MAV_ODID_HOR_ACC_UNKNOWN = 0 , MAV_ODID_HOR_ACC_10NM = 1 , MAV_ODID_HOR_ACC_4NM = 2 , MAV_ODID_HOR_ACC_2NM = 3 , MAV_ODID_HOR_ACC_1NM = 4 , MAV_ODID_HOR_ACC_0_5NM = 5 , MAV_ODID_HOR_ACC_0_3NM = 6 , MAV_ODID_HOR_ACC_0_1NM = 7 , MAV_ODID_HOR_ACC_0_05NM = 8 , MAV_ODID_HOR_ACC_30_METER = 9 , MAV_ODID_HOR_ACC_10_METER = 10 , MAV_ODID_HOR_ACC_3_METER = 11 , MAV_ODID_HOR_ACC_1_METER = 12 , } impl MavOdidHorAcc { pub const DEFAULT : Self = Self :: MAV_ODID_HOR_ACC_UNKNOWN ; } impl Default for MavOdidHorAcc { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavDataStream { MAV_DATA_STREAM_ALL = 0 , MAV_DATA_STREAM_RAW_SENSORS = 1 , MAV_DATA_STREAM_EXTENDED_STATUS = 2 , MAV_DATA_STREAM_RC_CHANNELS = 3 , MAV_DATA_STREAM_RAW_CONTROLLER = 4 , MAV_DATA_STREAM_POSITION = 6 , MAV_DATA_STREAM_EXTRA1 = 10 , MAV_DATA_STREAM_EXTRA2 = 11 , MAV_DATA_STREAM_EXTRA3 = 12 , } impl MavDataStream { pub const DEFAULT : Self = Self :: MAV_DATA_STREAM_ALL ; } impl Default for MavDataStream { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MavSysStatusSensor : u32 { const MAV_SYS_STATUS_SENSOR_3D_GYRO = 1 ; const MAV_SYS_STATUS_SENSOR_3D_ACCEL = 2 ; const MAV_SYS_STATUS_SENSOR_3D_MAG = 4 ; const MAV_SYS_STATUS_SENSOR_ABSOLUTE_PRESSURE = 8 ; const MAV_SYS_STATUS_SENSOR_DIFFERENTIAL_PRESSURE = 16 ; const MAV_SYS_STATUS_SENSOR_GPS = 32 ; const MAV_SYS_STATUS_SENSOR_OPTICAL_FLOW = 64 ; const MAV_SYS_STATUS_SENSOR_VISION_POSITION = 128 ; const MAV_SYS_STATUS_SENSOR_LASER_POSITION = 256 ; const MAV_SYS_STATUS_SENSOR_EXTERNAL_GROUND_TRUTH = 512 ; const MAV_SYS_STATUS_SENSOR_ANGULAR_RATE_CONTROL = 1024 ; const MAV_SYS_STATUS_SENSOR_ATTITUDE_STABILIZATION = 2048 ; const MAV_SYS_STATUS_SENSOR_YAW_POSITION = 4096 ; const MAV_SYS_STATUS_SENSOR_Z_ALTITUDE_CONTROL = 8192 ; const MAV_SYS_STATUS_SENSOR_XY_POSITION_CONTROL = 16384 ; const MAV_SYS_STATUS_SENSOR_MOTOR_OUTPUTS = 32768 ; const MAV_SYS_STATUS_SENSOR_RC_RECEIVER = 65536 ; const MAV_SYS_STATUS_SENSOR_3D_GYRO2 = 131072 ; const MAV_SYS_STATUS_SENSOR_3D_ACCEL2 = 262144 ; const MAV_SYS_STATUS_SENSOR_3D_MAG2 = 524288 ; const MAV_SYS_STATUS_GEOFENCE = 1048576 ; const MAV_SYS_STATUS_AHRS = 2097152 ; const MAV_SYS_STATUS_TERRAIN = 4194304 ; const MAV_SYS_STATUS_REVERSE_MOTOR = 8388608 ; const MAV_SYS_STATUS_LOGGING = 16777216 ; const MAV_SYS_STATUS_SENSOR_BATTERY = 33554432 ; const MAV_SYS_STATUS_SENSOR_PROXIMITY = 67108864 ; const MAV_SYS_STATUS_SENSOR_SATCOM = 134217728 ; const MAV_SYS_STATUS_PREARM_CHECK = 268435456 ; const MAV_SYS_STATUS_OBSTACLE_AVOIDANCE = 536870912 ; const MAV_SYS_STATUS_SENSOR_PROPULSION = 1073741824 ; const MAV_SYS_STATUS_EXTENSION_USED = 2147483648 ; } } impl MavSysStatusSensor { pub const DEFAULT : Self = Self :: MAV_SYS_STATUS_SENSOR_3D_GYRO ; } impl Default for MavSysStatusSensor { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum RtkBaselineCoordinateSystem { RTK_BASELINE_COORDINATE_SYSTEM_ECEF = 0 , RTK_BASELINE_COORDINATE_SYSTEM_NED = 1 , } impl RtkBaselineCoordinateSystem { pub const DEFAULT : Self = Self :: RTK_BASELINE_COORDINATE_SYSTEM_ECEF ; } impl Default for RtkBaselineCoordinateSystem { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum SetFocusType { FOCUS_TYPE_STEP = 0 , FOCUS_TYPE_CONTINUOUS = 1 , FOCUS_TYPE_RANGE = 2 , FOCUS_TYPE_METERS = 3 , FOCUS_TYPE_AUTO = 4 , FOCUS_TYPE_AUTO_SINGLE = 5 , FOCUS_TYPE_AUTO_CONTINUOUS = 6 , } impl SetFocusType { pub const DEFAULT : Self = Self :: FOCUS_TYPE_STEP ; } impl Default for SetFocusType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidHeightRef { MAV_ODID_HEIGHT_REF_OVER_TAKEOFF = 0 , MAV_ODID_HEIGHT_REF_OVER_GROUND = 1 , } impl MavOdidHeightRef { pub const DEFAULT : Self = Self :: MAV_ODID_HEIGHT_REF_OVER_TAKEOFF ; } impl Default for MavOdidHeightRef { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavType { MAV_TYPE_GENERIC = 0 , MAV_TYPE_FIXED_WING = 1 , MAV_TYPE_QUADROTOR = 2 , MAV_TYPE_COAXIAL = 3 , MAV_TYPE_HELICOPTER = 4 , MAV_TYPE_ANTENNA_TRACKER = 5 , MAV_TYPE_GCS = 6 , MAV_TYPE_AIRSHIP = 7 , MAV_TYPE_FREE_BALLOON = 8 , MAV_TYPE_ROCKET = 9 , MAV_TYPE_GROUND_ROVER = 10 , MAV_TYPE_SURFACE_BOAT = 11 , MAV_TYPE_SUBMARINE = 12 , MAV_TYPE_HEXAROTOR = 13 , MAV_TYPE_OCTOROTOR = 14 , MAV_TYPE_TRICOPTER = 15 , MAV_TYPE_FLAPPING_WING = 16 , MAV_TYPE_KITE = 17 , MAV_TYPE_ONBOARD_CONTROLLER = 18 , MAV_TYPE_VTOL_TAILSITTER_DUOROTOR = 19 , MAV_TYPE_VTOL_TAILSITTER_QUADROTOR = 20 , MAV_TYPE_VTOL_TILTROTOR = 21 , MAV_TYPE_VTOL_FIXEDROTOR = 22 , MAV_TYPE_VTOL_TAILSITTER = 23 , MAV_TYPE_VTOL_TILTWING = 24 , MAV_TYPE_VTOL_RESERVED5 = 25 , MAV_TYPE_GIMBAL = 26 , MAV_TYPE_ADSB = 27 , MAV_TYPE_PARAFOIL = 28 , MAV_TYPE_DODECAROTOR = 29 , MAV_TYPE_CAMERA = 30 , MAV_TYPE_CHARGING_STATION = 31 , MAV_TYPE_FLARM = 32 , MAV_TYPE_SERVO = 33 , MAV_TYPE_ODID = 34 , MAV_TYPE_DECAROTOR = 35 , MAV_TYPE_BATTERY = 36 , MAV_TYPE_PARACHUTE = 37 , MAV_TYPE_LOG = 38 , MAV_TYPE_OSD = 39 , MAV_TYPE_IMU = 40 , MAV_TYPE_GPS = 41 , MAV_TYPE_WINCH = 42 , } impl MavType { pub const DEFAULT : Self = Self :: MAV_TYPE_GENERIC ; } impl Default for MavType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum CellularNetworkRadioType { CELLULAR_NETWORK_RADIO_TYPE_NONE = 0 , CELLULAR_NETWORK_RADIO_TYPE_GSM = 1 , CELLULAR_NETWORK_RADIO_TYPE_CDMA = 2 , CELLULAR_NETWORK_RADIO_TYPE_WCDMA = 3 , CELLULAR_NETWORK_RADIO_TYPE_LTE = 4 , } impl CellularNetworkRadioType { pub const DEFAULT : Self = Self :: CELLULAR_NETWORK_RADIO_TYPE_NONE ; } impl Default for CellularNetworkRadioType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum CameraTrackingStatusFlags { CAMERA_TRACKING_STATUS_FLAGS_IDLE = 0 , CAMERA_TRACKING_STATUS_FLAGS_ACTIVE = 1 , CAMERA_TRACKING_STATUS_FLAGS_ERROR = 2 , } impl CameraTrackingStatusFlags { pub const DEFAULT : Self = Self :: CAMERA_TRACKING_STATUS_FLAGS_IDLE ; } impl Default for CameraTrackingStatusFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavResult { MAV_RESULT_ACCEPTED = 0 , MAV_RESULT_TEMPORARILY_REJECTED = 1 , MAV_RESULT_DENIED = 2 , MAV_RESULT_UNSUPPORTED = 3 , MAV_RESULT_FAILED = 4 , MAV_RESULT_IN_PROGRESS = 5 , MAV_RESULT_CANCELLED = 6 , } impl MavResult { pub const DEFAULT : Self = Self :: MAV_RESULT_ACCEPTED ; } impl Default for MavResult { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavCollisionThreatLevel { MAV_COLLISION_THREAT_LEVEL_NONE = 0 , MAV_COLLISION_THREAT_LEVEL_LOW = 1 , MAV_COLLISION_THREAT_LEVEL_HIGH = 2 , } impl MavCollisionThreatLevel { pub const DEFAULT : Self = Self :: MAV_COLLISION_THREAT_LEVEL_NONE ; } impl Default for MavCollisionThreatLevel { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum ParamAck { PARAM_ACK_ACCEPTED = 0 , PARAM_ACK_VALUE_UNSUPPORTED = 1 , PARAM_ACK_FAILED = 2 , PARAM_ACK_IN_PROGRESS = 3 , } impl ParamAck { pub const DEFAULT : Self = Self :: PARAM_ACK_ACCEPTED ; } impl Default for ParamAck { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum CellularStatusFlag { CELLULAR_STATUS_FLAG_UNKNOWN = 0 , CELLULAR_STATUS_FLAG_FAILED = 1 , CELLULAR_STATUS_FLAG_INITIALIZING = 2 , CELLULAR_STATUS_FLAG_LOCKED = 3 , CELLULAR_STATUS_FLAG_DISABLED = 4 , CELLULAR_STATUS_FLAG_DISABLING = 5 , CELLULAR_STATUS_FLAG_ENABLING = 6 , CELLULAR_STATUS_FLAG_ENABLED = 7 , CELLULAR_STATUS_FLAG_SEARCHING = 8 , CELLULAR_STATUS_FLAG_REGISTERED = 9 , CELLULAR_STATUS_FLAG_DISCONNECTING = 10 , CELLULAR_STATUS_FLAG_CONNECTING = 11 , CELLULAR_STATUS_FLAG_CONNECTED = 12 , } impl CellularStatusFlag { pub const DEFAULT : Self = Self :: CELLULAR_STATUS_FLAG_UNKNOWN ; } impl Default for CellularStatusFlag { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum StorageType { STORAGE_TYPE_UNKNOWN = 0 , STORAGE_TYPE_USB_STICK = 1 , STORAGE_TYPE_SD = 2 , STORAGE_TYPE_MICROSD = 3 , STORAGE_TYPE_CF = 4 , STORAGE_TYPE_CFE = 5 , STORAGE_TYPE_XQD = 6 , STORAGE_TYPE_HD = 7 , STORAGE_TYPE_OTHER = 254 , } impl StorageType { pub const DEFAULT : Self = Self :: STORAGE_TYPE_UNKNOWN ; } impl Default for StorageType { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct TuneFormat : u32 { const TUNE_FORMAT_QBASIC1_1 = 1 ; const TUNE_FORMAT_MML_MODERN = 2 ; } } impl TuneFormat { pub const DEFAULT : Self = Self :: TUNE_FORMAT_QBASIC1_1 ; } impl Default for TuneFormat { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavCmdAck { MAV_CMD_ACK_OK = 0 , MAV_CMD_ACK_ERR_FAIL = 1 , MAV_CMD_ACK_ERR_ACCESS_DENIED = 2 , MAV_CMD_ACK_ERR_NOT_SUPPORTED = 3 , MAV_CMD_ACK_ERR_COORDINATE_FRAME_NOT_SUPPORTED = 4 , MAV_CMD_ACK_ERR_COORDINATES_OUT_OF_RANGE = 5 , MAV_CMD_ACK_ERR_X_LAT_OUT_OF_RANGE = 6 , MAV_CMD_ACK_ERR_Y_LON_OUT_OF_RANGE = 7 , MAV_CMD_ACK_ERR_Z_ALT_OUT_OF_RANGE = 8 , } impl MavCmdAck { pub const DEFAULT : Self = Self :: MAV_CMD_ACK_OK ; } impl Default for MavCmdAck { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum GripperActions { GRIPPER_ACTION_RELEASE = 0 , GRIPPER_ACTION_GRAB = 1 , } impl GripperActions { pub const DEFAULT : Self = Self :: GRIPPER_ACTION_RELEASE ; } impl Default for GripperActions { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum VideoStreamStatusFlags { VIDEO_STREAM_STATUS_FLAGS_RUNNING = 1 , VIDEO_STREAM_STATUS_FLAGS_THERMAL = 2 , } impl VideoStreamStatusFlags { pub const DEFAULT : Self = Self :: VIDEO_STREAM_STATUS_FLAGS_RUNNING ; } impl Default for VideoStreamStatusFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LOCAL_POSITION_NED_DATA { pub time_boot_ms : u32 , pub x : f32 , pub y : f32 , pub z : f32 , pub vx : f32 , pub vy : f32 , pub vz : f32 , } impl LOCAL_POSITION_NED_DATA { pub const ENCODED_LEN : usize = 28usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , x : 0.0_f32 , y : 0.0_f32 , z : 0.0_f32 , vx : 0.0_f32 , vy : 0.0_f32 , vz : 0.0_f32 , } ; } impl Default for LOCAL_POSITION_NED_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for LOCAL_POSITION_NED_DATA { type Message = MavMessage ; const ID : u32 = 32u32 ; const NAME : & 'static str = "LOCAL_POSITION_NED" ; const EXTRA_CRC : u8 = 185u8 ; const ENCODED_LEN : usize = 28usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . x = buf . get_f32_le () ; __struct . y = buf . get_f32_le () ; __struct . z = buf . get_f32_le () ; __struct . vx = buf . get_f32_le () ; __struct . vy = buf . get_f32_le () ; __struct . vz = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; __tmp . put_f32_le (self . vx) ; __tmp . put_f32_le (self . vy) ; __tmp . put_f32_le (self . vz) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct FOLLOW_TARGET_DATA { pub timestamp : u64 , pub custom_state : u64 , pub lat : i32 , pub lon : i32 , pub alt : f32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub vel : [f32 ; 3] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub acc : [f32 ; 3] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub attitude_q : [f32 ; 4] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub rates : [f32 ; 3] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub position_cov : [f32 ; 3] , pub est_capabilities : u8 , } impl FOLLOW_TARGET_DATA { pub const ENCODED_LEN : usize = 93usize ; pub const DEFAULT : Self = Self { timestamp : 0_u64 , custom_state : 0_u64 , lat : 0_i32 , lon : 0_i32 , alt : 0.0_f32 , vel : [0.0_f32 ; 3usize] , acc : [0.0_f32 ; 3usize] , attitude_q : [0.0_f32 ; 4usize] , rates : [0.0_f32 ; 3usize] , position_cov : [0.0_f32 ; 3usize] , est_capabilities : 0_u8 , } ; } impl Default for FOLLOW_TARGET_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for FOLLOW_TARGET_DATA { type Message = MavMessage ; const ID : u32 = 144u32 ; const NAME : & 'static str = "FOLLOW_TARGET" ; const EXTRA_CRC : u8 = 127u8 ; const ENCODED_LEN : usize = 93usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . timestamp = buf . get_u64_le () ; __struct . custom_state = buf . get_u64_le () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . alt = buf . get_f32_le () ; for v in & mut __struct . vel { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . acc { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . attitude_q { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . rates { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . position_cov { let val = buf . get_f32_le () ; * v = val ; } __struct . est_capabilities = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . timestamp) ; __tmp . put_u64_le (self . custom_state) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_f32_le (self . alt) ; for val in & self . vel { __tmp . put_f32_le (* val) ; } for val in & self . acc { __tmp . put_f32_le (* val) ; } for val in & self . attitude_q { __tmp . put_f32_le (* val) ; } for val in & self . rates { __tmp . put_f32_le (* val) ; } for val in & self . position_cov { __tmp . put_f32_le (* val) ; } __tmp . put_u8 (self . est_capabilities) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct OPTICAL_FLOW_DATA { pub time_usec : u64 , pub flow_comp_m_x : f32 , pub flow_comp_m_y : f32 , pub ground_distance : f32 , pub flow_x : i16 , pub flow_y : i16 , pub sensor_id : u8 , pub quality : u8 , } impl OPTICAL_FLOW_DATA { pub const ENCODED_LEN : usize = 26usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , flow_comp_m_x : 0.0_f32 , flow_comp_m_y : 0.0_f32 , ground_distance : 0.0_f32 , flow_x : 0_i16 , flow_y : 0_i16 , sensor_id : 0_u8 , quality : 0_u8 , } ; } impl Default for OPTICAL_FLOW_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for OPTICAL_FLOW_DATA { type Message = MavMessage ; const ID : u32 = 100u32 ; const NAME : & 'static str = "OPTICAL_FLOW" ; const EXTRA_CRC : u8 = 175u8 ; const ENCODED_LEN : usize = 26usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . flow_comp_m_x = buf . get_f32_le () ; __struct . flow_comp_m_y = buf . get_f32_le () ; __struct . ground_distance = buf . get_f32_le () ; __struct . flow_x = buf . get_i16_le () ; __struct . flow_y = buf . get_i16_le () ; __struct . sensor_id = buf . get_u8 () ; __struct . quality = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . flow_comp_m_x) ; __tmp . put_f32_le (self . flow_comp_m_y) ; __tmp . put_f32_le (self . ground_distance) ; __tmp . put_i16_le (self . flow_x) ; __tmp . put_i16_le (self . flow_y) ; __tmp . put_u8 (self . sensor_id) ; __tmp . put_u8 (self . quality) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct STORAGE_INFORMATION_DATA { pub time_boot_ms : u32 , pub total_capacity : f32 , pub used_capacity : f32 , pub available_capacity : f32 , pub read_speed : f32 , pub write_speed : f32 , pub storage_id : u8 , pub storage_count : u8 , pub status : StorageStatus , } impl STORAGE_INFORMATION_DATA { pub const ENCODED_LEN : usize = 27usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , total_capacity : 0.0_f32 , used_capacity : 0.0_f32 , available_capacity : 0.0_f32 , read_speed : 0.0_f32 , write_speed : 0.0_f32 , storage_id : 0_u8 , storage_count : 0_u8 , status : StorageStatus :: DEFAULT , } ; } impl Default for STORAGE_INFORMATION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for STORAGE_INFORMATION_DATA { type Message = MavMessage ; const ID : u32 = 261u32 ; const NAME : & 'static str = "STORAGE_INFORMATION" ; const EXTRA_CRC : u8 = 179u8 ; const ENCODED_LEN : usize = 27usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . total_capacity = buf . get_f32_le () ; __struct . used_capacity = buf . get_f32_le () ; __struct . available_capacity = buf . get_f32_le () ; __struct . read_speed = buf . get_f32_le () ; __struct . write_speed = buf . get_f32_le () ; __struct . storage_id = buf . get_u8 () ; __struct . storage_count = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . status = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "StorageStatus" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . total_capacity) ; __tmp . put_f32_le (self . used_capacity) ; __tmp . put_f32_le (self . available_capacity) ; __tmp . put_f32_le (self . read_speed) ; __tmp . put_f32_le (self . write_speed) ; __tmp . put_u8 (self . storage_id) ; __tmp . put_u8 (self . storage_count) ; __tmp . put_u8 (self . status as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SAFETY_ALLOWED_AREA_DATA { pub p1x : f32 , pub p1y : f32 , pub p1z : f32 , pub p2x : f32 , pub p2y : f32 , pub p2z : f32 , pub frame : MavFrame , } impl SAFETY_ALLOWED_AREA_DATA { pub const ENCODED_LEN : usize = 25usize ; pub const DEFAULT : Self = Self { p1x : 0.0_f32 , p1y : 0.0_f32 , p1z : 0.0_f32 , p2x : 0.0_f32 , p2y : 0.0_f32 , p2z : 0.0_f32 , frame : MavFrame :: DEFAULT , } ; } impl Default for SAFETY_ALLOWED_AREA_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SAFETY_ALLOWED_AREA_DATA { type Message = MavMessage ; const ID : u32 = 55u32 ; const NAME : & 'static str = "SAFETY_ALLOWED_AREA" ; const EXTRA_CRC : u8 = 3u8 ; const ENCODED_LEN : usize = 25usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . p1x = buf . get_f32_le () ; __struct . p1y = buf . get_f32_le () ; __struct . p1z = buf . get_f32_le () ; __struct . p2x = buf . get_f32_le () ; __struct . p2y = buf . get_f32_le () ; __struct . p2z = buf . get_f32_le () ; let tmp = buf . get_u8 () ; __struct . frame = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavFrame" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . p1x) ; __tmp . put_f32_le (self . p1y) ; __tmp . put_f32_le (self . p1z) ; __tmp . put_f32_le (self . p2x) ; __tmp . put_f32_le (self . p2y) ; __tmp . put_f32_le (self . p2z) ; __tmp . put_u8 (self . frame as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MANUAL_SETPOINT_DATA { pub time_boot_ms : u32 , pub roll : f32 , pub pitch : f32 , pub yaw : f32 , pub thrust : f32 , pub mode_switch : u8 , pub manual_override_switch : u8 , } impl MANUAL_SETPOINT_DATA { pub const ENCODED_LEN : usize = 22usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , roll : 0.0_f32 , pitch : 0.0_f32 , yaw : 0.0_f32 , thrust : 0.0_f32 , mode_switch : 0_u8 , manual_override_switch : 0_u8 , } ; } impl Default for MANUAL_SETPOINT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MANUAL_SETPOINT_DATA { type Message = MavMessage ; const ID : u32 = 81u32 ; const NAME : & 'static str = "MANUAL_SETPOINT" ; const EXTRA_CRC : u8 = 106u8 ; const ENCODED_LEN : usize = 22usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . roll = buf . get_f32_le () ; __struct . pitch = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; __struct . thrust = buf . get_f32_le () ; __struct . mode_switch = buf . get_u8 () ; __struct . manual_override_switch = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . roll) ; __tmp . put_f32_le (self . pitch) ; __tmp . put_f32_le (self . yaw) ; __tmp . put_f32_le (self . thrust) ; __tmp . put_u8 (self . mode_switch) ; __tmp . put_u8 (self . manual_override_switch) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct AUTOPILOT_VERSION_DATA { pub capabilities : MavProtocolCapability , pub uid : u64 , pub flight_sw_version : u32 , pub middleware_sw_version : u32 , pub os_sw_version : u32 , pub board_version : u32 , pub vendor_id : u16 , pub product_id : u16 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub flight_custom_version : [u8 ; 8] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub middleware_custom_version : [u8 ; 8] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub os_custom_version : [u8 ; 8] , } impl AUTOPILOT_VERSION_DATA { pub const ENCODED_LEN : usize = 60usize ; pub const DEFAULT : Self = Self { capabilities : MavProtocolCapability :: DEFAULT , uid : 0_u64 , flight_sw_version : 0_u32 , middleware_sw_version : 0_u32 , os_sw_version : 0_u32 , board_version : 0_u32 , vendor_id : 0_u16 , product_id : 0_u16 , flight_custom_version : [0_u8 ; 8usize] , middleware_custom_version : [0_u8 ; 8usize] , os_custom_version : [0_u8 ; 8usize] , } ; } impl Default for AUTOPILOT_VERSION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for AUTOPILOT_VERSION_DATA { type Message = MavMessage ; const ID : u32 = 148u32 ; const NAME : & 'static str = "AUTOPILOT_VERSION" ; const EXTRA_CRC : u8 = 178u8 ; const ENCODED_LEN : usize = 60usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u64_le () ; __struct . capabilities = MavProtocolCapability :: from_bits (tmp & MavProtocolCapability :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "MavProtocolCapability" , value : tmp as u32 }) ? ; __struct . uid = buf . get_u64_le () ; __struct . flight_sw_version = buf . get_u32_le () ; __struct . middleware_sw_version = buf . get_u32_le () ; __struct . os_sw_version = buf . get_u32_le () ; __struct . board_version = buf . get_u32_le () ; __struct . vendor_id = buf . get_u16_le () ; __struct . product_id = buf . get_u16_le () ; for v in & mut __struct . flight_custom_version { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . middleware_custom_version { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . os_custom_version { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . capabilities . bits ()) ; __tmp . put_u64_le (self . uid) ; __tmp . put_u32_le (self . flight_sw_version) ; __tmp . put_u32_le (self . middleware_sw_version) ; __tmp . put_u32_le (self . os_sw_version) ; __tmp . put_u32_le (self . board_version) ; __tmp . put_u16_le (self . vendor_id) ; __tmp . put_u16_le (self . product_id) ; for val in & self . flight_custom_version { __tmp . put_u8 (* val) ; } for val in & self . middleware_custom_version { __tmp . put_u8 (* val) ; } for val in & self . os_custom_version { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct RC_CHANNELS_DATA { pub time_boot_ms : u32 , pub chan1_raw : u16 , pub chan2_raw : u16 , pub chan3_raw : u16 , pub chan4_raw : u16 , pub chan5_raw : u16 , pub chan6_raw : u16 , pub chan7_raw : u16 , pub chan8_raw : u16 , pub chan9_raw : u16 , pub chan10_raw : u16 , pub chan11_raw : u16 , pub chan12_raw : u16 , pub chan13_raw : u16 , pub chan14_raw : u16 , pub chan15_raw : u16 , pub chan16_raw : u16 , pub chan17_raw : u16 , pub chan18_raw : u16 , pub chancount : u8 , pub rssi : u8 , } impl RC_CHANNELS_DATA { pub const ENCODED_LEN : usize = 42usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , chan1_raw : 0_u16 , chan2_raw : 0_u16 , chan3_raw : 0_u16 , chan4_raw : 0_u16 , chan5_raw : 0_u16 , chan6_raw : 0_u16 , chan7_raw : 0_u16 , chan8_raw : 0_u16 , chan9_raw : 0_u16 , chan10_raw : 0_u16 , chan11_raw : 0_u16 , chan12_raw : 0_u16 , chan13_raw : 0_u16 , chan14_raw : 0_u16 , chan15_raw : 0_u16 , chan16_raw : 0_u16 , chan17_raw : 0_u16 , chan18_raw : 0_u16 , chancount : 0_u8 , rssi : 0_u8 , } ; } impl Default for RC_CHANNELS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for RC_CHANNELS_DATA { type Message = MavMessage ; const ID : u32 = 65u32 ; const NAME : & 'static str = "RC_CHANNELS" ; const EXTRA_CRC : u8 = 118u8 ; const ENCODED_LEN : usize = 42usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . chan1_raw = buf . get_u16_le () ; __struct . chan2_raw = buf . get_u16_le () ; __struct . chan3_raw = buf . get_u16_le () ; __struct . chan4_raw = buf . get_u16_le () ; __struct . chan5_raw = buf . get_u16_le () ; __struct . chan6_raw = buf . get_u16_le () ; __struct . chan7_raw = buf . get_u16_le () ; __struct . chan8_raw = buf . get_u16_le () ; __struct . chan9_raw = buf . get_u16_le () ; __struct . chan10_raw = buf . get_u16_le () ; __struct . chan11_raw = buf . get_u16_le () ; __struct . chan12_raw = buf . get_u16_le () ; __struct . chan13_raw = buf . get_u16_le () ; __struct . chan14_raw = buf . get_u16_le () ; __struct . chan15_raw = buf . get_u16_le () ; __struct . chan16_raw = buf . get_u16_le () ; __struct . chan17_raw = buf . get_u16_le () ; __struct . chan18_raw = buf . get_u16_le () ; __struct . chancount = buf . get_u8 () ; __struct . rssi = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_u16_le (self . chan1_raw) ; __tmp . put_u16_le (self . chan2_raw) ; __tmp . put_u16_le (self . chan3_raw) ; __tmp . put_u16_le (self . chan4_raw) ; __tmp . put_u16_le (self . chan5_raw) ; __tmp . put_u16_le (self . chan6_raw) ; __tmp . put_u16_le (self . chan7_raw) ; __tmp . put_u16_le (self . chan8_raw) ; __tmp . put_u16_le (self . chan9_raw) ; __tmp . put_u16_le (self . chan10_raw) ; __tmp . put_u16_le (self . chan11_raw) ; __tmp . put_u16_le (self . chan12_raw) ; __tmp . put_u16_le (self . chan13_raw) ; __tmp . put_u16_le (self . chan14_raw) ; __tmp . put_u16_le (self . chan15_raw) ; __tmp . put_u16_le (self . chan16_raw) ; __tmp . put_u16_le (self . chan17_raw) ; __tmp . put_u16_le (self . chan18_raw) ; __tmp . put_u8 (self . chancount) ; __tmp . put_u8 (self . rssi) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ESTIMATOR_STATUS_DATA { pub time_usec : u64 , pub vel_ratio : f32 , pub pos_horiz_ratio : f32 , pub pos_vert_ratio : f32 , pub mag_ratio : f32 , pub hagl_ratio : f32 , pub tas_ratio : f32 , pub pos_horiz_accuracy : f32 , pub pos_vert_accuracy : f32 , pub flags : EstimatorStatusFlags , } impl ESTIMATOR_STATUS_DATA { pub const ENCODED_LEN : usize = 42usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , vel_ratio : 0.0_f32 , pos_horiz_ratio : 0.0_f32 , pos_vert_ratio : 0.0_f32 , mag_ratio : 0.0_f32 , hagl_ratio : 0.0_f32 , tas_ratio : 0.0_f32 , pos_horiz_accuracy : 0.0_f32 , pos_vert_accuracy : 0.0_f32 , flags : EstimatorStatusFlags :: DEFAULT , } ; } impl Default for ESTIMATOR_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ESTIMATOR_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 230u32 ; const NAME : & 'static str = "ESTIMATOR_STATUS" ; const EXTRA_CRC : u8 = 163u8 ; const ENCODED_LEN : usize = 42usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . vel_ratio = buf . get_f32_le () ; __struct . pos_horiz_ratio = buf . get_f32_le () ; __struct . pos_vert_ratio = buf . get_f32_le () ; __struct . mag_ratio = buf . get_f32_le () ; __struct . hagl_ratio = buf . get_f32_le () ; __struct . tas_ratio = buf . get_f32_le () ; __struct . pos_horiz_accuracy = buf . get_f32_le () ; __struct . pos_vert_accuracy = buf . get_f32_le () ; let tmp = buf . get_u16_le () ; __struct . flags = EstimatorStatusFlags :: from_bits (tmp & EstimatorStatusFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "EstimatorStatusFlags" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . vel_ratio) ; __tmp . put_f32_le (self . pos_horiz_ratio) ; __tmp . put_f32_le (self . pos_vert_ratio) ; __tmp . put_f32_le (self . mag_ratio) ; __tmp . put_f32_le (self . hagl_ratio) ; __tmp . put_f32_le (self . tas_ratio) ; __tmp . put_f32_le (self . pos_horiz_accuracy) ; __tmp . put_f32_le (self . pos_vert_accuracy) ; __tmp . put_u16_le (self . flags . bits ()) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ADSB_VEHICLE_DATA { pub ICAO_address : u32 , pub lat : i32 , pub lon : i32 , pub altitude : i32 , pub heading : u16 , pub hor_velocity : u16 , pub ver_velocity : i16 , pub flags : AdsbFlags , pub squawk : u16 , pub altitude_type : AdsbAltitudeType , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub callsign : [u8 ; 9] , pub emitter_type : AdsbEmitterType , pub tslc : u8 , } impl ADSB_VEHICLE_DATA { pub const ENCODED_LEN : usize = 38usize ; pub const DEFAULT : Self = Self { ICAO_address : 0_u32 , lat : 0_i32 , lon : 0_i32 , altitude : 0_i32 , heading : 0_u16 , hor_velocity : 0_u16 , ver_velocity : 0_i16 , flags : AdsbFlags :: DEFAULT , squawk : 0_u16 , altitude_type : AdsbAltitudeType :: DEFAULT , callsign : [0_u8 ; 9usize] , emitter_type : AdsbEmitterType :: DEFAULT , tslc : 0_u8 , } ; } impl Default for ADSB_VEHICLE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ADSB_VEHICLE_DATA { type Message = MavMessage ; const ID : u32 = 246u32 ; const NAME : & 'static str = "ADSB_VEHICLE" ; const EXTRA_CRC : u8 = 184u8 ; const ENCODED_LEN : usize = 38usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . ICAO_address = buf . get_u32_le () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . altitude = buf . get_i32_le () ; __struct . heading = buf . get_u16_le () ; __struct . hor_velocity = buf . get_u16_le () ; __struct . ver_velocity = buf . get_i16_le () ; let tmp = buf . get_u16_le () ; __struct . flags = AdsbFlags :: from_bits (tmp & AdsbFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "AdsbFlags" , value : tmp as u32 }) ? ; __struct . squawk = buf . get_u16_le () ; let tmp = buf . get_u8 () ; __struct . altitude_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "AdsbAltitudeType" , value : tmp as u32 }) ? ; for v in & mut __struct . callsign { let val = buf . get_u8 () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . emitter_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "AdsbEmitterType" , value : tmp as u32 }) ? ; __struct . tslc = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . ICAO_address) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_i32_le (self . altitude) ; __tmp . put_u16_le (self . heading) ; __tmp . put_u16_le (self . hor_velocity) ; __tmp . put_i16_le (self . ver_velocity) ; __tmp . put_u16_le (self . flags . bits ()) ; __tmp . put_u16_le (self . squawk) ; __tmp . put_u8 (self . altitude_type as u8) ; for val in & self . callsign { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . emitter_type as u8) ; __tmp . put_u8 (self . tslc) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA { pub time_usec : u64 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub pos_x : [f32 ; 5] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub pos_y : [f32 ; 5] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub pos_z : [f32 ; 5] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub vel_x : [f32 ; 5] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub vel_y : [f32 ; 5] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub vel_z : [f32 ; 5] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub acc_x : [f32 ; 5] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub acc_y : [f32 ; 5] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub acc_z : [f32 ; 5] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub pos_yaw : [f32 ; 5] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub vel_yaw : [f32 ; 5] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub command : [u16 ; 5] , pub valid_points : u8 , } impl TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA { pub const ENCODED_LEN : usize = 239usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , pos_x : [0.0_f32 ; 5usize] , pos_y : [0.0_f32 ; 5usize] , pos_z : [0.0_f32 ; 5usize] , vel_x : [0.0_f32 ; 5usize] , vel_y : [0.0_f32 ; 5usize] , vel_z : [0.0_f32 ; 5usize] , acc_x : [0.0_f32 ; 5usize] , acc_y : [0.0_f32 ; 5usize] , acc_z : [0.0_f32 ; 5usize] , pos_yaw : [0.0_f32 ; 5usize] , vel_yaw : [0.0_f32 ; 5usize] , command : [0_u16 ; 5usize] , valid_points : 0_u8 , } ; } impl Default for TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA { type Message = MavMessage ; const ID : u32 = 332u32 ; const NAME : & 'static str = "TRAJECTORY_REPRESENTATION_WAYPOINTS" ; const EXTRA_CRC : u8 = 236u8 ; const ENCODED_LEN : usize = 239usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; for v in & mut __struct . pos_x { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . pos_y { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . pos_z { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . vel_x { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . vel_y { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . vel_z { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . acc_x { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . acc_y { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . acc_z { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . pos_yaw { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . vel_yaw { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . command { let val = buf . get_u16_le () ; * v = val ; } __struct . valid_points = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; for val in & self . pos_x { __tmp . put_f32_le (* val) ; } for val in & self . pos_y { __tmp . put_f32_le (* val) ; } for val in & self . pos_z { __tmp . put_f32_le (* val) ; } for val in & self . vel_x { __tmp . put_f32_le (* val) ; } for val in & self . vel_y { __tmp . put_f32_le (* val) ; } for val in & self . vel_z { __tmp . put_f32_le (* val) ; } for val in & self . acc_x { __tmp . put_f32_le (* val) ; } for val in & self . acc_y { __tmp . put_f32_le (* val) ; } for val in & self . acc_z { __tmp . put_f32_le (* val) ; } for val in & self . pos_yaw { __tmp . put_f32_le (* val) ; } for val in & self . vel_yaw { __tmp . put_f32_le (* val) ; } for val in & self . command { __tmp . put_u16_le (* val) ; } __tmp . put_u8 (self . valid_points) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct WHEEL_DISTANCE_DATA { pub time_usec : u64 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub distance : [f64 ; 16] , pub count : u8 , } impl WHEEL_DISTANCE_DATA { pub const ENCODED_LEN : usize = 137usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , distance : [0.0_f64 ; 16usize] , count : 0_u8 , } ; } impl Default for WHEEL_DISTANCE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for WHEEL_DISTANCE_DATA { type Message = MavMessage ; const ID : u32 = 9000u32 ; const NAME : & 'static str = "WHEEL_DISTANCE" ; const EXTRA_CRC : u8 = 113u8 ; const ENCODED_LEN : usize = 137usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; for v in & mut __struct . distance { let val = buf . get_f64_le () ; * v = val ; } __struct . count = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; for val in & self . distance { __tmp . put_f64_le (* val) ; } __tmp . put_u8 (self . count) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct NAMED_VALUE_FLOAT_DATA { pub time_boot_ms : u32 , pub value : f32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub name : [u8 ; 10] , } impl NAMED_VALUE_FLOAT_DATA { pub const ENCODED_LEN : usize = 18usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , value : 0.0_f32 , name : [0_u8 ; 10usize] , } ; } impl Default for NAMED_VALUE_FLOAT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for NAMED_VALUE_FLOAT_DATA { type Message = MavMessage ; const ID : u32 = 251u32 ; const NAME : & 'static str = "NAMED_VALUE_FLOAT" ; const EXTRA_CRC : u8 = 170u8 ; const ENCODED_LEN : usize = 18usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . value = buf . get_f32_le () ; for v in & mut __struct . name { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . value) ; for val in & self . name { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ACTUATOR_OUTPUT_STATUS_DATA { pub time_usec : u64 , pub active : u32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub actuator : [f32 ; 32] , } impl ACTUATOR_OUTPUT_STATUS_DATA { pub const ENCODED_LEN : usize = 140usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , active : 0_u32 , actuator : [0.0_f32 ; 32usize] , } ; } impl Default for ACTUATOR_OUTPUT_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ACTUATOR_OUTPUT_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 375u32 ; const NAME : & 'static str = "ACTUATOR_OUTPUT_STATUS" ; const EXTRA_CRC : u8 = 251u8 ; const ENCODED_LEN : usize = 140usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . active = buf . get_u32_le () ; for v in & mut __struct . actuator { let val = buf . get_f32_le () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_u32_le (self . active) ; for val in & self . actuator { __tmp . put_f32_le (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct OPEN_DRONE_ID_BASIC_ID_DATA { pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub id_or_mac : [u8 ; 20] , pub id_type : MavOdidIdType , pub ua_type : MavOdidUaType , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub uas_id : [u8 ; 20] , } impl OPEN_DRONE_ID_BASIC_ID_DATA { pub const ENCODED_LEN : usize = 44usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , id_or_mac : [0_u8 ; 20usize] , id_type : MavOdidIdType :: DEFAULT , ua_type : MavOdidUaType :: DEFAULT , uas_id : [0_u8 ; 20usize] , } ; } impl Default for OPEN_DRONE_ID_BASIC_ID_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for OPEN_DRONE_ID_BASIC_ID_DATA { type Message = MavMessage ; const ID : u32 = 12900u32 ; const NAME : & 'static str = "OPEN_DRONE_ID_BASIC_ID" ; const EXTRA_CRC : u8 = 114u8 ; const ENCODED_LEN : usize = 44usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . id_or_mac { let val = buf . get_u8 () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . id_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidIdType" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . ua_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidUaType" , value : tmp as u32 }) ? ; for v in & mut __struct . uas_id { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . id_or_mac { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . id_type as u8) ; __tmp . put_u8 (self . ua_type as u8) ; for val in & self . uas_id { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PARAM_EXT_REQUEST_READ_DATA { pub param_index : i16 , pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub param_id : [u8 ; 16] , } impl PARAM_EXT_REQUEST_READ_DATA { pub const ENCODED_LEN : usize = 20usize ; pub const DEFAULT : Self = Self { param_index : 0_i16 , target_system : 0_u8 , target_component : 0_u8 , param_id : [0_u8 ; 16usize] , } ; } impl Default for PARAM_EXT_REQUEST_READ_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for PARAM_EXT_REQUEST_READ_DATA { type Message = MavMessage ; const ID : u32 = 320u32 ; const NAME : & 'static str = "PARAM_EXT_REQUEST_READ" ; const EXTRA_CRC : u8 = 243u8 ; const ENCODED_LEN : usize = 20usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . param_index = buf . get_i16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . param_id { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i16_le (self . param_index) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . param_id { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct OPEN_DRONE_ID_SELF_ID_DATA { pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub id_or_mac : [u8 ; 20] , pub description_type : MavOdidDescType , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub description : [u8 ; 23] , } impl OPEN_DRONE_ID_SELF_ID_DATA { pub const ENCODED_LEN : usize = 46usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , id_or_mac : [0_u8 ; 20usize] , description_type : MavOdidDescType :: DEFAULT , description : [0_u8 ; 23usize] , } ; } impl Default for OPEN_DRONE_ID_SELF_ID_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for OPEN_DRONE_ID_SELF_ID_DATA { type Message = MavMessage ; const ID : u32 = 12903u32 ; const NAME : & 'static str = "OPEN_DRONE_ID_SELF_ID" ; const EXTRA_CRC : u8 = 249u8 ; const ENCODED_LEN : usize = 46usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . id_or_mac { let val = buf . get_u8 () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . description_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidDescType" , value : tmp as u32 }) ? ; for v in & mut __struct . description { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . id_or_mac { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . description_type as u8) ; for val in & self . description { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct DISTANCE_SENSOR_DATA { pub time_boot_ms : u32 , pub min_distance : u16 , pub max_distance : u16 , pub current_distance : u16 , pub mavtype : MavDistanceSensor , pub id : u8 , pub orientation : MavSensorOrientation , pub covariance : u8 , } impl DISTANCE_SENSOR_DATA { pub const ENCODED_LEN : usize = 14usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , min_distance : 0_u16 , max_distance : 0_u16 , current_distance : 0_u16 , mavtype : MavDistanceSensor :: DEFAULT , id : 0_u8 , orientation : MavSensorOrientation :: DEFAULT , covariance : 0_u8 , } ; } impl Default for DISTANCE_SENSOR_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for DISTANCE_SENSOR_DATA { type Message = MavMessage ; const ID : u32 = 132u32 ; const NAME : & 'static str = "DISTANCE_SENSOR" ; const EXTRA_CRC : u8 = 85u8 ; const ENCODED_LEN : usize = 14usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . min_distance = buf . get_u16_le () ; __struct . max_distance = buf . get_u16_le () ; __struct . current_distance = buf . get_u16_le () ; let tmp = buf . get_u8 () ; __struct . mavtype = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavDistanceSensor" , value : tmp as u32 }) ? ; __struct . id = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . orientation = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavSensorOrientation" , value : tmp as u32 }) ? ; __struct . covariance = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_u16_le (self . min_distance) ; __tmp . put_u16_le (self . max_distance) ; __tmp . put_u16_le (self . current_distance) ; __tmp . put_u8 (self . mavtype as u8) ; __tmp . put_u8 (self . id) ; __tmp . put_u8 (self . orientation as u8) ; __tmp . put_u8 (self . covariance) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PARAM_EXT_SET_DATA { pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub param_id : [u8 ; 16] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub param_value : [u8 ; 128] , pub param_type : MavParamExtType , } impl PARAM_EXT_SET_DATA { pub const ENCODED_LEN : usize = 147usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , param_id : [0_u8 ; 16usize] , param_value : [0_u8 ; 128usize] , param_type : MavParamExtType :: DEFAULT , } ; } impl Default for PARAM_EXT_SET_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for PARAM_EXT_SET_DATA { type Message = MavMessage ; const ID : u32 = 323u32 ; const NAME : & 'static str = "PARAM_EXT_SET" ; const EXTRA_CRC : u8 = 78u8 ; const ENCODED_LEN : usize = 147usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . param_id { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . param_value { let val = buf . get_u8 () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . param_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavParamExtType" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . param_id { __tmp . put_u8 (* val) ; } for val in & self . param_value { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . param_type as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct OPEN_DRONE_ID_AUTHENTICATION_DATA { pub timestamp : u32 , pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub id_or_mac : [u8 ; 20] , pub authentication_type : MavOdidAuthType , pub data_page : u8 , pub last_page_index : u8 , pub length : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub authentication_data : [u8 ; 23] , } impl OPEN_DRONE_ID_AUTHENTICATION_DATA { pub const ENCODED_LEN : usize = 53usize ; pub const DEFAULT : Self = Self { timestamp : 0_u32 , target_system : 0_u8 , target_component : 0_u8 , id_or_mac : [0_u8 ; 20usize] , authentication_type : MavOdidAuthType :: DEFAULT , data_page : 0_u8 , last_page_index : 0_u8 , length : 0_u8 , authentication_data : [0_u8 ; 23usize] , } ; } impl Default for OPEN_DRONE_ID_AUTHENTICATION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for OPEN_DRONE_ID_AUTHENTICATION_DATA { type Message = MavMessage ; const ID : u32 = 12902u32 ; const NAME : & 'static str = "OPEN_DRONE_ID_AUTHENTICATION" ; const EXTRA_CRC : u8 = 140u8 ; const ENCODED_LEN : usize = 53usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . timestamp = buf . get_u32_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . id_or_mac { let val = buf . get_u8 () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . authentication_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidAuthType" , value : tmp as u32 }) ? ; __struct . data_page = buf . get_u8 () ; __struct . last_page_index = buf . get_u8 () ; __struct . length = buf . get_u8 () ; for v in & mut __struct . authentication_data { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . timestamp) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . id_or_mac { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . authentication_type as u8) ; __tmp . put_u8 (self . data_page) ; __tmp . put_u8 (self . last_page_index) ; __tmp . put_u8 (self . length) ; for val in & self . authentication_data { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MISSION_CURRENT_DATA { pub seq : u16 , } impl MISSION_CURRENT_DATA { pub const ENCODED_LEN : usize = 2usize ; pub const DEFAULT : Self = Self { seq : 0_u16 , } ; } impl Default for MISSION_CURRENT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MISSION_CURRENT_DATA { type Message = MavMessage ; const ID : u32 = 42u32 ; const NAME : & 'static str = "MISSION_CURRENT" ; const EXTRA_CRC : u8 = 28u8 ; const ENCODED_LEN : usize = 2usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . seq = buf . get_u16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . seq) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ATTITUDE_TARGET_DATA { pub time_boot_ms : u32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub q : [f32 ; 4] , pub body_roll_rate : f32 , pub body_pitch_rate : f32 , pub body_yaw_rate : f32 , pub thrust : f32 , pub type_mask : AttitudeTargetTypemask , } impl ATTITUDE_TARGET_DATA { pub const ENCODED_LEN : usize = 37usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , q : [0.0_f32 ; 4usize] , body_roll_rate : 0.0_f32 , body_pitch_rate : 0.0_f32 , body_yaw_rate : 0.0_f32 , thrust : 0.0_f32 , type_mask : AttitudeTargetTypemask :: DEFAULT , } ; } impl Default for ATTITUDE_TARGET_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ATTITUDE_TARGET_DATA { type Message = MavMessage ; const ID : u32 = 83u32 ; const NAME : & 'static str = "ATTITUDE_TARGET" ; const EXTRA_CRC : u8 = 22u8 ; const ENCODED_LEN : usize = 37usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; for v in & mut __struct . q { let val = buf . get_f32_le () ; * v = val ; } __struct . body_roll_rate = buf . get_f32_le () ; __struct . body_pitch_rate = buf . get_f32_le () ; __struct . body_yaw_rate = buf . get_f32_le () ; __struct . thrust = buf . get_f32_le () ; let tmp = buf . get_u8 () ; __struct . type_mask = AttitudeTargetTypemask :: from_bits (tmp & AttitudeTargetTypemask :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "AttitudeTargetTypemask" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; for val in & self . q { __tmp . put_f32_le (* val) ; } __tmp . put_f32_le (self . body_roll_rate) ; __tmp . put_f32_le (self . body_pitch_rate) ; __tmp . put_f32_le (self . body_yaw_rate) ; __tmp . put_f32_le (self . thrust) ; __tmp . put_u8 (self . type_mask . bits ()) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GPS2_RAW_DATA { pub time_usec : u64 , pub lat : i32 , pub lon : i32 , pub alt : i32 , pub dgps_age : u32 , pub eph : u16 , pub epv : u16 , pub vel : u16 , pub cog : u16 , pub fix_type : GpsFixType , pub satellites_visible : u8 , pub dgps_numch : u8 , } impl GPS2_RAW_DATA { pub const ENCODED_LEN : usize = 35usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , lat : 0_i32 , lon : 0_i32 , alt : 0_i32 , dgps_age : 0_u32 , eph : 0_u16 , epv : 0_u16 , vel : 0_u16 , cog : 0_u16 , fix_type : GpsFixType :: DEFAULT , satellites_visible : 0_u8 , dgps_numch : 0_u8 , } ; } impl Default for GPS2_RAW_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GPS2_RAW_DATA { type Message = MavMessage ; const ID : u32 = 124u32 ; const NAME : & 'static str = "GPS2_RAW" ; const EXTRA_CRC : u8 = 87u8 ; const ENCODED_LEN : usize = 35usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . alt = buf . get_i32_le () ; __struct . dgps_age = buf . get_u32_le () ; __struct . eph = buf . get_u16_le () ; __struct . epv = buf . get_u16_le () ; __struct . vel = buf . get_u16_le () ; __struct . cog = buf . get_u16_le () ; let tmp = buf . get_u8 () ; __struct . fix_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "GpsFixType" , value : tmp as u32 }) ? ; __struct . satellites_visible = buf . get_u8 () ; __struct . dgps_numch = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_i32_le (self . alt) ; __tmp . put_u32_le (self . dgps_age) ; __tmp . put_u16_le (self . eph) ; __tmp . put_u16_le (self . epv) ; __tmp . put_u16_le (self . vel) ; __tmp . put_u16_le (self . cog) ; __tmp . put_u8 (self . fix_type as u8) ; __tmp . put_u8 (self . satellites_visible) ; __tmp . put_u8 (self . dgps_numch) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct FLIGHT_INFORMATION_DATA { pub arming_time_utc : u64 , pub takeoff_time_utc : u64 , pub flight_uuid : u64 , pub time_boot_ms : u32 , } impl FLIGHT_INFORMATION_DATA { pub const ENCODED_LEN : usize = 28usize ; pub const DEFAULT : Self = Self { arming_time_utc : 0_u64 , takeoff_time_utc : 0_u64 , flight_uuid : 0_u64 , time_boot_ms : 0_u32 , } ; } impl Default for FLIGHT_INFORMATION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for FLIGHT_INFORMATION_DATA { type Message = MavMessage ; const ID : u32 = 264u32 ; const NAME : & 'static str = "FLIGHT_INFORMATION" ; const EXTRA_CRC : u8 = 49u8 ; const ENCODED_LEN : usize = 28usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . arming_time_utc = buf . get_u64_le () ; __struct . takeoff_time_utc = buf . get_u64_le () ; __struct . flight_uuid = buf . get_u64_le () ; __struct . time_boot_ms = buf . get_u32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . arming_time_utc) ; __tmp . put_u64_le (self . takeoff_time_utc) ; __tmp . put_u64_le (self . flight_uuid) ; __tmp . put_u32_le (self . time_boot_ms) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MISSION_COUNT_DATA { pub count : u16 , pub target_system : u8 , pub target_component : u8 , } impl MISSION_COUNT_DATA { pub const ENCODED_LEN : usize = 4usize ; pub const DEFAULT : Self = Self { count : 0_u16 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for MISSION_COUNT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MISSION_COUNT_DATA { type Message = MavMessage ; const ID : u32 = 44u32 ; const NAME : & 'static str = "MISSION_COUNT" ; const EXTRA_CRC : u8 = 221u8 ; const ENCODED_LEN : usize = 4usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . count = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . count) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SAFETY_SET_ALLOWED_AREA_DATA { pub p1x : f32 , pub p1y : f32 , pub p1z : f32 , pub p2x : f32 , pub p2y : f32 , pub p2z : f32 , pub target_system : u8 , pub target_component : u8 , pub frame : MavFrame , } impl SAFETY_SET_ALLOWED_AREA_DATA { pub const ENCODED_LEN : usize = 27usize ; pub const DEFAULT : Self = Self { p1x : 0.0_f32 , p1y : 0.0_f32 , p1z : 0.0_f32 , p2x : 0.0_f32 , p2y : 0.0_f32 , p2z : 0.0_f32 , target_system : 0_u8 , target_component : 0_u8 , frame : MavFrame :: DEFAULT , } ; } impl Default for SAFETY_SET_ALLOWED_AREA_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SAFETY_SET_ALLOWED_AREA_DATA { type Message = MavMessage ; const ID : u32 = 54u32 ; const NAME : & 'static str = "SAFETY_SET_ALLOWED_AREA" ; const EXTRA_CRC : u8 = 15u8 ; const ENCODED_LEN : usize = 27usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . p1x = buf . get_f32_le () ; __struct . p1y = buf . get_f32_le () ; __struct . p1z = buf . get_f32_le () ; __struct . p2x = buf . get_f32_le () ; __struct . p2y = buf . get_f32_le () ; __struct . p2z = buf . get_f32_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . frame = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavFrame" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . p1x) ; __tmp . put_f32_le (self . p1y) ; __tmp . put_f32_le (self . p1z) ; __tmp . put_f32_le (self . p2x) ; __tmp . put_f32_le (self . p2y) ; __tmp . put_f32_le (self . p2z) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . frame as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CAMERA_TRACKING_IMAGE_STATUS_DATA { pub point_x : f32 , pub point_y : f32 , pub radius : f32 , pub rec_top_x : f32 , pub rec_top_y : f32 , pub rec_bottom_x : f32 , pub rec_bottom_y : f32 , pub tracking_status : CameraTrackingStatusFlags , pub tracking_mode : CameraTrackingMode , pub target_data : CameraTrackingTargetData , } impl CAMERA_TRACKING_IMAGE_STATUS_DATA { pub const ENCODED_LEN : usize = 31usize ; pub const DEFAULT : Self = Self { point_x : 0.0_f32 , point_y : 0.0_f32 , radius : 0.0_f32 , rec_top_x : 0.0_f32 , rec_top_y : 0.0_f32 , rec_bottom_x : 0.0_f32 , rec_bottom_y : 0.0_f32 , tracking_status : CameraTrackingStatusFlags :: DEFAULT , tracking_mode : CameraTrackingMode :: DEFAULT , target_data : CameraTrackingTargetData :: DEFAULT , } ; } impl Default for CAMERA_TRACKING_IMAGE_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CAMERA_TRACKING_IMAGE_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 275u32 ; const NAME : & 'static str = "CAMERA_TRACKING_IMAGE_STATUS" ; const EXTRA_CRC : u8 = 126u8 ; const ENCODED_LEN : usize = 31usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . point_x = buf . get_f32_le () ; __struct . point_y = buf . get_f32_le () ; __struct . radius = buf . get_f32_le () ; __struct . rec_top_x = buf . get_f32_le () ; __struct . rec_top_y = buf . get_f32_le () ; __struct . rec_bottom_x = buf . get_f32_le () ; __struct . rec_bottom_y = buf . get_f32_le () ; let tmp = buf . get_u8 () ; __struct . tracking_status = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "CameraTrackingStatusFlags" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . tracking_mode = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "CameraTrackingMode" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . target_data = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "CameraTrackingTargetData" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . point_x) ; __tmp . put_f32_le (self . point_y) ; __tmp . put_f32_le (self . radius) ; __tmp . put_f32_le (self . rec_top_x) ; __tmp . put_f32_le (self . rec_top_y) ; __tmp . put_f32_le (self . rec_bottom_x) ; __tmp . put_f32_le (self . rec_bottom_y) ; __tmp . put_u8 (self . tracking_status as u8) ; __tmp . put_u8 (self . tracking_mode as u8) ; __tmp . put_u8 (self . target_data as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GIMBAL_MANAGER_SET_PITCHYAW_DATA { pub flags : GimbalManagerFlags , pub pitch : f32 , pub yaw : f32 , pub pitch_rate : f32 , pub yaw_rate : f32 , pub target_system : u8 , pub target_component : u8 , pub gimbal_device_id : u8 , } impl GIMBAL_MANAGER_SET_PITCHYAW_DATA { pub const ENCODED_LEN : usize = 23usize ; pub const DEFAULT : Self = Self { flags : GimbalManagerFlags :: DEFAULT , pitch : 0.0_f32 , yaw : 0.0_f32 , pitch_rate : 0.0_f32 , yaw_rate : 0.0_f32 , target_system : 0_u8 , target_component : 0_u8 , gimbal_device_id : 0_u8 , } ; } impl Default for GIMBAL_MANAGER_SET_PITCHYAW_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GIMBAL_MANAGER_SET_PITCHYAW_DATA { type Message = MavMessage ; const ID : u32 = 287u32 ; const NAME : & 'static str = "GIMBAL_MANAGER_SET_PITCHYAW" ; const EXTRA_CRC : u8 = 1u8 ; const ENCODED_LEN : usize = 23usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u32_le () ; __struct . flags = FromPrimitive :: from_u32 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "GimbalManagerFlags" , value : tmp as u32 }) ? ; __struct . pitch = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; __struct . pitch_rate = buf . get_f32_le () ; __struct . yaw_rate = buf . get_f32_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . gimbal_device_id = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . flags as u32) ; __tmp . put_f32_le (self . pitch) ; __tmp . put_f32_le (self . yaw) ; __tmp . put_f32_le (self . pitch_rate) ; __tmp . put_f32_le (self . yaw_rate) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . gimbal_device_id) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ATTITUDE_DATA { pub time_boot_ms : u32 , pub roll : f32 , pub pitch : f32 , pub yaw : f32 , pub rollspeed : f32 , pub pitchspeed : f32 , pub yawspeed : f32 , } impl ATTITUDE_DATA { pub const ENCODED_LEN : usize = 28usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , roll : 0.0_f32 , pitch : 0.0_f32 , yaw : 0.0_f32 , rollspeed : 0.0_f32 , pitchspeed : 0.0_f32 , yawspeed : 0.0_f32 , } ; } impl Default for ATTITUDE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ATTITUDE_DATA { type Message = MavMessage ; const ID : u32 = 30u32 ; const NAME : & 'static str = "ATTITUDE" ; const EXTRA_CRC : u8 = 39u8 ; const ENCODED_LEN : usize = 28usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . roll = buf . get_f32_le () ; __struct . pitch = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; __struct . rollspeed = buf . get_f32_le () ; __struct . pitchspeed = buf . get_f32_le () ; __struct . yawspeed = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . roll) ; __tmp . put_f32_le (self . pitch) ; __tmp . put_f32_le (self . yaw) ; __tmp . put_f32_le (self . rollspeed) ; __tmp . put_f32_le (self . pitchspeed) ; __tmp . put_f32_le (self . yawspeed) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MISSION_REQUEST_PARTIAL_LIST_DATA { pub start_index : i16 , pub end_index : i16 , pub target_system : u8 , pub target_component : u8 , } impl MISSION_REQUEST_PARTIAL_LIST_DATA { pub const ENCODED_LEN : usize = 6usize ; pub const DEFAULT : Self = Self { start_index : 0_i16 , end_index : 0_i16 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for MISSION_REQUEST_PARTIAL_LIST_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MISSION_REQUEST_PARTIAL_LIST_DATA { type Message = MavMessage ; const ID : u32 = 37u32 ; const NAME : & 'static str = "MISSION_REQUEST_PARTIAL_LIST" ; const EXTRA_CRC : u8 = 212u8 ; const ENCODED_LEN : usize = 6usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . start_index = buf . get_i16_le () ; __struct . end_index = buf . get_i16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i16_le (self . start_index) ; __tmp . put_i16_le (self . end_index) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct POSITION_TARGET_LOCAL_NED_DATA { pub time_boot_ms : u32 , pub x : f32 , pub y : f32 , pub z : f32 , pub vx : f32 , pub vy : f32 , pub vz : f32 , pub afx : f32 , pub afy : f32 , pub afz : f32 , pub yaw : f32 , pub yaw_rate : f32 , pub type_mask : PositionTargetTypemask , pub coordinate_frame : MavFrame , } impl POSITION_TARGET_LOCAL_NED_DATA { pub const ENCODED_LEN : usize = 51usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , x : 0.0_f32 , y : 0.0_f32 , z : 0.0_f32 , vx : 0.0_f32 , vy : 0.0_f32 , vz : 0.0_f32 , afx : 0.0_f32 , afy : 0.0_f32 , afz : 0.0_f32 , yaw : 0.0_f32 , yaw_rate : 0.0_f32 , type_mask : PositionTargetTypemask :: DEFAULT , coordinate_frame : MavFrame :: DEFAULT , } ; } impl Default for POSITION_TARGET_LOCAL_NED_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for POSITION_TARGET_LOCAL_NED_DATA { type Message = MavMessage ; const ID : u32 = 85u32 ; const NAME : & 'static str = "POSITION_TARGET_LOCAL_NED" ; const EXTRA_CRC : u8 = 140u8 ; const ENCODED_LEN : usize = 51usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . x = buf . get_f32_le () ; __struct . y = buf . get_f32_le () ; __struct . z = buf . get_f32_le () ; __struct . vx = buf . get_f32_le () ; __struct . vy = buf . get_f32_le () ; __struct . vz = buf . get_f32_le () ; __struct . afx = buf . get_f32_le () ; __struct . afy = buf . get_f32_le () ; __struct . afz = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; __struct . yaw_rate = buf . get_f32_le () ; let tmp = buf . get_u16_le () ; __struct . type_mask = PositionTargetTypemask :: from_bits (tmp & PositionTargetTypemask :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "PositionTargetTypemask" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . coordinate_frame = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavFrame" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; __tmp . put_f32_le (self . vx) ; __tmp . put_f32_le (self . vy) ; __tmp . put_f32_le (self . vz) ; __tmp . put_f32_le (self . afx) ; __tmp . put_f32_le (self . afy) ; __tmp . put_f32_le (self . afz) ; __tmp . put_f32_le (self . yaw) ; __tmp . put_f32_le (self . yaw_rate) ; __tmp . put_u16_le (self . type_mask . bits ()) ; __tmp . put_u8 (self . coordinate_frame as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GPS_STATUS_DATA { pub satellites_visible : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub satellite_prn : [u8 ; 20] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub satellite_used : [u8 ; 20] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub satellite_elevation : [u8 ; 20] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub satellite_azimuth : [u8 ; 20] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub satellite_snr : [u8 ; 20] , } impl GPS_STATUS_DATA { pub const ENCODED_LEN : usize = 101usize ; pub const DEFAULT : Self = Self { satellites_visible : 0_u8 , satellite_prn : [0_u8 ; 20usize] , satellite_used : [0_u8 ; 20usize] , satellite_elevation : [0_u8 ; 20usize] , satellite_azimuth : [0_u8 ; 20usize] , satellite_snr : [0_u8 ; 20usize] , } ; } impl Default for GPS_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GPS_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 25u32 ; const NAME : & 'static str = "GPS_STATUS" ; const EXTRA_CRC : u8 = 23u8 ; const ENCODED_LEN : usize = 101usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . satellites_visible = buf . get_u8 () ; for v in & mut __struct . satellite_prn { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . satellite_used { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . satellite_elevation { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . satellite_azimuth { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . satellite_snr { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . satellites_visible) ; for val in & self . satellite_prn { __tmp . put_u8 (* val) ; } for val in & self . satellite_used { __tmp . put_u8 (* val) ; } for val in & self . satellite_elevation { __tmp . put_u8 (* val) ; } for val in & self . satellite_azimuth { __tmp . put_u8 (* val) ; } for val in & self . satellite_snr { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SET_ATTITUDE_TARGET_DATA { pub time_boot_ms : u32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub q : [f32 ; 4] , pub body_roll_rate : f32 , pub body_pitch_rate : f32 , pub body_yaw_rate : f32 , pub thrust : f32 , pub target_system : u8 , pub target_component : u8 , pub type_mask : AttitudeTargetTypemask , } impl SET_ATTITUDE_TARGET_DATA { pub const ENCODED_LEN : usize = 39usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , q : [0.0_f32 ; 4usize] , body_roll_rate : 0.0_f32 , body_pitch_rate : 0.0_f32 , body_yaw_rate : 0.0_f32 , thrust : 0.0_f32 , target_system : 0_u8 , target_component : 0_u8 , type_mask : AttitudeTargetTypemask :: DEFAULT , } ; } impl Default for SET_ATTITUDE_TARGET_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SET_ATTITUDE_TARGET_DATA { type Message = MavMessage ; const ID : u32 = 82u32 ; const NAME : & 'static str = "SET_ATTITUDE_TARGET" ; const EXTRA_CRC : u8 = 49u8 ; const ENCODED_LEN : usize = 39usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; for v in & mut __struct . q { let val = buf . get_f32_le () ; * v = val ; } __struct . body_roll_rate = buf . get_f32_le () ; __struct . body_pitch_rate = buf . get_f32_le () ; __struct . body_yaw_rate = buf . get_f32_le () ; __struct . thrust = buf . get_f32_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . type_mask = AttitudeTargetTypemask :: from_bits (tmp & AttitudeTargetTypemask :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "AttitudeTargetTypemask" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; for val in & self . q { __tmp . put_f32_le (* val) ; } __tmp . put_f32_le (self . body_roll_rate) ; __tmp . put_f32_le (self . body_pitch_rate) ; __tmp . put_f32_le (self . body_yaw_rate) ; __tmp . put_f32_le (self . thrust) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . type_mask . bits ()) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HIL_GPS_DATA { pub time_usec : u64 , pub lat : i32 , pub lon : i32 , pub alt : i32 , pub eph : u16 , pub epv : u16 , pub vel : u16 , pub vn : i16 , pub ve : i16 , pub vd : i16 , pub cog : u16 , pub fix_type : u8 , pub satellites_visible : u8 , } impl HIL_GPS_DATA { pub const ENCODED_LEN : usize = 36usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , lat : 0_i32 , lon : 0_i32 , alt : 0_i32 , eph : 0_u16 , epv : 0_u16 , vel : 0_u16 , vn : 0_i16 , ve : 0_i16 , vd : 0_i16 , cog : 0_u16 , fix_type : 0_u8 , satellites_visible : 0_u8 , } ; } impl Default for HIL_GPS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for HIL_GPS_DATA { type Message = MavMessage ; const ID : u32 = 113u32 ; const NAME : & 'static str = "HIL_GPS" ; const EXTRA_CRC : u8 = 124u8 ; const ENCODED_LEN : usize = 36usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . alt = buf . get_i32_le () ; __struct . eph = buf . get_u16_le () ; __struct . epv = buf . get_u16_le () ; __struct . vel = buf . get_u16_le () ; __struct . vn = buf . get_i16_le () ; __struct . ve = buf . get_i16_le () ; __struct . vd = buf . get_i16_le () ; __struct . cog = buf . get_u16_le () ; __struct . fix_type = buf . get_u8 () ; __struct . satellites_visible = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_i32_le (self . alt) ; __tmp . put_u16_le (self . eph) ; __tmp . put_u16_le (self . epv) ; __tmp . put_u16_le (self . vel) ; __tmp . put_i16_le (self . vn) ; __tmp . put_i16_le (self . ve) ; __tmp . put_i16_le (self . vd) ; __tmp . put_u16_le (self . cog) ; __tmp . put_u8 (self . fix_type) ; __tmp . put_u8 (self . satellites_visible) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LOG_ERASE_DATA { pub target_system : u8 , pub target_component : u8 , } impl LOG_ERASE_DATA { pub const ENCODED_LEN : usize = 2usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for LOG_ERASE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for LOG_ERASE_DATA { type Message = MavMessage ; const ID : u32 = 121u32 ; const NAME : & 'static str = "LOG_ERASE" ; const EXTRA_CRC : u8 = 237u8 ; const ENCODED_LEN : usize = 2usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct VISION_SPEED_ESTIMATE_DATA { pub usec : u64 , pub x : f32 , pub y : f32 , pub z : f32 , } impl VISION_SPEED_ESTIMATE_DATA { pub const ENCODED_LEN : usize = 20usize ; pub const DEFAULT : Self = Self { usec : 0_u64 , x : 0.0_f32 , y : 0.0_f32 , z : 0.0_f32 , } ; } impl Default for VISION_SPEED_ESTIMATE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for VISION_SPEED_ESTIMATE_DATA { type Message = MavMessage ; const ID : u32 = 103u32 ; const NAME : & 'static str = "VISION_SPEED_ESTIMATE" ; const EXTRA_CRC : u8 = 208u8 ; const ENCODED_LEN : usize = 20usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . usec = buf . get_u64_le () ; __struct . x = buf . get_f32_le () ; __struct . y = buf . get_f32_le () ; __struct . z = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . usec) ; __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HIL_STATE_QUATERNION_DATA { pub time_usec : u64 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub attitude_quaternion : [f32 ; 4] , pub rollspeed : f32 , pub pitchspeed : f32 , pub yawspeed : f32 , pub lat : i32 , pub lon : i32 , pub alt : i32 , pub vx : i16 , pub vy : i16 , pub vz : i16 , pub ind_airspeed : u16 , pub true_airspeed : u16 , pub xacc : i16 , pub yacc : i16 , pub zacc : i16 , } impl HIL_STATE_QUATERNION_DATA { pub const ENCODED_LEN : usize = 64usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , attitude_quaternion : [0.0_f32 ; 4usize] , rollspeed : 0.0_f32 , pitchspeed : 0.0_f32 , yawspeed : 0.0_f32 , lat : 0_i32 , lon : 0_i32 , alt : 0_i32 , vx : 0_i16 , vy : 0_i16 , vz : 0_i16 , ind_airspeed : 0_u16 , true_airspeed : 0_u16 , xacc : 0_i16 , yacc : 0_i16 , zacc : 0_i16 , } ; } impl Default for HIL_STATE_QUATERNION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for HIL_STATE_QUATERNION_DATA { type Message = MavMessage ; const ID : u32 = 115u32 ; const NAME : & 'static str = "HIL_STATE_QUATERNION" ; const EXTRA_CRC : u8 = 4u8 ; const ENCODED_LEN : usize = 64usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; for v in & mut __struct . attitude_quaternion { let val = buf . get_f32_le () ; * v = val ; } __struct . rollspeed = buf . get_f32_le () ; __struct . pitchspeed = buf . get_f32_le () ; __struct . yawspeed = buf . get_f32_le () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . alt = buf . get_i32_le () ; __struct . vx = buf . get_i16_le () ; __struct . vy = buf . get_i16_le () ; __struct . vz = buf . get_i16_le () ; __struct . ind_airspeed = buf . get_u16_le () ; __struct . true_airspeed = buf . get_u16_le () ; __struct . xacc = buf . get_i16_le () ; __struct . yacc = buf . get_i16_le () ; __struct . zacc = buf . get_i16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; for val in & self . attitude_quaternion { __tmp . put_f32_le (* val) ; } __tmp . put_f32_le (self . rollspeed) ; __tmp . put_f32_le (self . pitchspeed) ; __tmp . put_f32_le (self . yawspeed) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_i32_le (self . alt) ; __tmp . put_i16_le (self . vx) ; __tmp . put_i16_le (self . vy) ; __tmp . put_i16_le (self . vz) ; __tmp . put_u16_le (self . ind_airspeed) ; __tmp . put_u16_le (self . true_airspeed) ; __tmp . put_i16_le (self . xacc) ; __tmp . put_i16_le (self . yacc) ; __tmp . put_i16_le (self . zacc) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct NAV_CONTROLLER_OUTPUT_DATA { pub nav_roll : f32 , pub nav_pitch : f32 , pub alt_error : f32 , pub aspd_error : f32 , pub xtrack_error : f32 , pub nav_bearing : i16 , pub target_bearing : i16 , pub wp_dist : u16 , } impl NAV_CONTROLLER_OUTPUT_DATA { pub const ENCODED_LEN : usize = 26usize ; pub const DEFAULT : Self = Self { nav_roll : 0.0_f32 , nav_pitch : 0.0_f32 , alt_error : 0.0_f32 , aspd_error : 0.0_f32 , xtrack_error : 0.0_f32 , nav_bearing : 0_i16 , target_bearing : 0_i16 , wp_dist : 0_u16 , } ; } impl Default for NAV_CONTROLLER_OUTPUT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for NAV_CONTROLLER_OUTPUT_DATA { type Message = MavMessage ; const ID : u32 = 62u32 ; const NAME : & 'static str = "NAV_CONTROLLER_OUTPUT" ; const EXTRA_CRC : u8 = 183u8 ; const ENCODED_LEN : usize = 26usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . nav_roll = buf . get_f32_le () ; __struct . nav_pitch = buf . get_f32_le () ; __struct . alt_error = buf . get_f32_le () ; __struct . aspd_error = buf . get_f32_le () ; __struct . xtrack_error = buf . get_f32_le () ; __struct . nav_bearing = buf . get_i16_le () ; __struct . target_bearing = buf . get_i16_le () ; __struct . wp_dist = buf . get_u16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . nav_roll) ; __tmp . put_f32_le (self . nav_pitch) ; __tmp . put_f32_le (self . alt_error) ; __tmp . put_f32_le (self . aspd_error) ; __tmp . put_f32_le (self . xtrack_error) ; __tmp . put_i16_le (self . nav_bearing) ; __tmp . put_i16_le (self . target_bearing) ; __tmp . put_u16_le (self . wp_dist) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct RC_CHANNELS_OVERRIDE_DATA { pub chan1_raw : u16 , pub chan2_raw : u16 , pub chan3_raw : u16 , pub chan4_raw : u16 , pub chan5_raw : u16 , pub chan6_raw : u16 , pub chan7_raw : u16 , pub chan8_raw : u16 , pub target_system : u8 , pub target_component : u8 , } impl RC_CHANNELS_OVERRIDE_DATA { pub const ENCODED_LEN : usize = 18usize ; pub const DEFAULT : Self = Self { chan1_raw : 0_u16 , chan2_raw : 0_u16 , chan3_raw : 0_u16 , chan4_raw : 0_u16 , chan5_raw : 0_u16 , chan6_raw : 0_u16 , chan7_raw : 0_u16 , chan8_raw : 0_u16 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for RC_CHANNELS_OVERRIDE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for RC_CHANNELS_OVERRIDE_DATA { type Message = MavMessage ; const ID : u32 = 70u32 ; const NAME : & 'static str = "RC_CHANNELS_OVERRIDE" ; const EXTRA_CRC : u8 = 124u8 ; const ENCODED_LEN : usize = 18usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . chan1_raw = buf . get_u16_le () ; __struct . chan2_raw = buf . get_u16_le () ; __struct . chan3_raw = buf . get_u16_le () ; __struct . chan4_raw = buf . get_u16_le () ; __struct . chan5_raw = buf . get_u16_le () ; __struct . chan6_raw = buf . get_u16_le () ; __struct . chan7_raw = buf . get_u16_le () ; __struct . chan8_raw = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . chan1_raw) ; __tmp . put_u16_le (self . chan2_raw) ; __tmp . put_u16_le (self . chan3_raw) ; __tmp . put_u16_le (self . chan4_raw) ; __tmp . put_u16_le (self . chan5_raw) ; __tmp . put_u16_le (self . chan6_raw) ; __tmp . put_u16_le (self . chan7_raw) ; __tmp . put_u16_le (self . chan8_raw) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct FILE_TRANSFER_PROTOCOL_DATA { pub target_network : u8 , pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub payload : [u8 ; 251] , } impl FILE_TRANSFER_PROTOCOL_DATA { pub const ENCODED_LEN : usize = 254usize ; pub const DEFAULT : Self = Self { target_network : 0_u8 , target_system : 0_u8 , target_component : 0_u8 , payload : [0_u8 ; 251usize] , } ; } impl Default for FILE_TRANSFER_PROTOCOL_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for FILE_TRANSFER_PROTOCOL_DATA { type Message = MavMessage ; const ID : u32 = 110u32 ; const NAME : & 'static str = "FILE_TRANSFER_PROTOCOL" ; const EXTRA_CRC : u8 = 84u8 ; const ENCODED_LEN : usize = 254usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_network = buf . get_u8 () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . payload { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_network) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . payload { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct EFI_STATUS_DATA { pub ecu_index : f32 , pub rpm : f32 , pub fuel_consumed : f32 , pub fuel_flow : f32 , pub engine_load : f32 , pub throttle_position : f32 , pub spark_dwell_time : f32 , pub barometric_pressure : f32 , pub intake_manifold_pressure : f32 , pub intake_manifold_temperature : f32 , pub cylinder_head_temperature : f32 , pub ignition_timing : f32 , pub injection_time : f32 , pub exhaust_gas_temperature : f32 , pub throttle_out : f32 , pub pt_compensation : f32 , pub health : u8 , } impl EFI_STATUS_DATA { pub const ENCODED_LEN : usize = 65usize ; pub const DEFAULT : Self = Self { ecu_index : 0.0_f32 , rpm : 0.0_f32 , fuel_consumed : 0.0_f32 , fuel_flow : 0.0_f32 , engine_load : 0.0_f32 , throttle_position : 0.0_f32 , spark_dwell_time : 0.0_f32 , barometric_pressure : 0.0_f32 , intake_manifold_pressure : 0.0_f32 , intake_manifold_temperature : 0.0_f32 , cylinder_head_temperature : 0.0_f32 , ignition_timing : 0.0_f32 , injection_time : 0.0_f32 , exhaust_gas_temperature : 0.0_f32 , throttle_out : 0.0_f32 , pt_compensation : 0.0_f32 , health : 0_u8 , } ; } impl Default for EFI_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for EFI_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 225u32 ; const NAME : & 'static str = "EFI_STATUS" ; const EXTRA_CRC : u8 = 208u8 ; const ENCODED_LEN : usize = 65usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . ecu_index = buf . get_f32_le () ; __struct . rpm = buf . get_f32_le () ; __struct . fuel_consumed = buf . get_f32_le () ; __struct . fuel_flow = buf . get_f32_le () ; __struct . engine_load = buf . get_f32_le () ; __struct . throttle_position = buf . get_f32_le () ; __struct . spark_dwell_time = buf . get_f32_le () ; __struct . barometric_pressure = buf . get_f32_le () ; __struct . intake_manifold_pressure = buf . get_f32_le () ; __struct . intake_manifold_temperature = buf . get_f32_le () ; __struct . cylinder_head_temperature = buf . get_f32_le () ; __struct . ignition_timing = buf . get_f32_le () ; __struct . injection_time = buf . get_f32_le () ; __struct . exhaust_gas_temperature = buf . get_f32_le () ; __struct . throttle_out = buf . get_f32_le () ; __struct . pt_compensation = buf . get_f32_le () ; __struct . health = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . ecu_index) ; __tmp . put_f32_le (self . rpm) ; __tmp . put_f32_le (self . fuel_consumed) ; __tmp . put_f32_le (self . fuel_flow) ; __tmp . put_f32_le (self . engine_load) ; __tmp . put_f32_le (self . throttle_position) ; __tmp . put_f32_le (self . spark_dwell_time) ; __tmp . put_f32_le (self . barometric_pressure) ; __tmp . put_f32_le (self . intake_manifold_pressure) ; __tmp . put_f32_le (self . intake_manifold_temperature) ; __tmp . put_f32_le (self . cylinder_head_temperature) ; __tmp . put_f32_le (self . ignition_timing) ; __tmp . put_f32_le (self . injection_time) ; __tmp . put_f32_le (self . exhaust_gas_temperature) ; __tmp . put_f32_le (self . throttle_out) ; __tmp . put_f32_le (self . pt_compensation) ; __tmp . put_u8 (self . health) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CAMERA_IMAGE_CAPTURED_DATA { pub time_utc : u64 , pub time_boot_ms : u32 , pub lat : i32 , pub lon : i32 , pub alt : i32 , pub relative_alt : i32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub q : [f32 ; 4] , pub image_index : i32 , pub camera_id : u8 , pub capture_result : i8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub file_url : [u8 ; 205] , } impl CAMERA_IMAGE_CAPTURED_DATA { pub const ENCODED_LEN : usize = 255usize ; pub const DEFAULT : Self = Self { time_utc : 0_u64 , time_boot_ms : 0_u32 , lat : 0_i32 , lon : 0_i32 , alt : 0_i32 , relative_alt : 0_i32 , q : [0.0_f32 ; 4usize] , image_index : 0_i32 , camera_id : 0_u8 , capture_result : 0_i8 , file_url : [0_u8 ; 205usize] , } ; } impl Default for CAMERA_IMAGE_CAPTURED_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CAMERA_IMAGE_CAPTURED_DATA { type Message = MavMessage ; const ID : u32 = 263u32 ; const NAME : & 'static str = "CAMERA_IMAGE_CAPTURED" ; const EXTRA_CRC : u8 = 133u8 ; const ENCODED_LEN : usize = 255usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_utc = buf . get_u64_le () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . alt = buf . get_i32_le () ; __struct . relative_alt = buf . get_i32_le () ; for v in & mut __struct . q { let val = buf . get_f32_le () ; * v = val ; } __struct . image_index = buf . get_i32_le () ; __struct . camera_id = buf . get_u8 () ; __struct . capture_result = buf . get_i8 () ; for v in & mut __struct . file_url { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_utc) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_i32_le (self . alt) ; __tmp . put_i32_le (self . relative_alt) ; for val in & self . q { __tmp . put_f32_le (* val) ; } __tmp . put_i32_le (self . image_index) ; __tmp . put_u8 (self . camera_id) ; __tmp . put_i8 (self . capture_result) ; for val in & self . file_url { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ENCAPSULATED_DATA_DATA { pub seqnr : u16 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub data : [u8 ; 253] , } impl ENCAPSULATED_DATA_DATA { pub const ENCODED_LEN : usize = 255usize ; pub const DEFAULT : Self = Self { seqnr : 0_u16 , data : [0_u8 ; 253usize] , } ; } impl Default for ENCAPSULATED_DATA_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ENCAPSULATED_DATA_DATA { type Message = MavMessage ; const ID : u32 = 131u32 ; const NAME : & 'static str = "ENCAPSULATED_DATA" ; const EXTRA_CRC : u8 = 223u8 ; const ENCODED_LEN : usize = 255usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . seqnr = buf . get_u16_le () ; for v in & mut __struct . data { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . seqnr) ; for val in & self . data { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct COMMAND_LONG_DATA { pub param1 : f32 , pub param2 : f32 , pub param3 : f32 , pub param4 : f32 , pub param5 : f32 , pub param6 : f32 , pub param7 : f32 , pub command : MavCmd , pub target_system : u8 , pub target_component : u8 , pub confirmation : u8 , } impl COMMAND_LONG_DATA { pub const ENCODED_LEN : usize = 33usize ; pub const DEFAULT : Self = Self { param1 : 0.0_f32 , param2 : 0.0_f32 , param3 : 0.0_f32 , param4 : 0.0_f32 , param5 : 0.0_f32 , param6 : 0.0_f32 , param7 : 0.0_f32 , command : MavCmd :: DEFAULT , target_system : 0_u8 , target_component : 0_u8 , confirmation : 0_u8 , } ; } impl Default for COMMAND_LONG_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for COMMAND_LONG_DATA { type Message = MavMessage ; const ID : u32 = 76u32 ; const NAME : & 'static str = "COMMAND_LONG" ; const EXTRA_CRC : u8 = 152u8 ; const ENCODED_LEN : usize = 33usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . param1 = buf . get_f32_le () ; __struct . param2 = buf . get_f32_le () ; __struct . param3 = buf . get_f32_le () ; __struct . param4 = buf . get_f32_le () ; __struct . param5 = buf . get_f32_le () ; __struct . param6 = buf . get_f32_le () ; __struct . param7 = buf . get_f32_le () ; let tmp = buf . get_u16_le () ; __struct . command = FromPrimitive :: from_u16 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavCmd" , value : tmp as u32 }) ? ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . confirmation = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . param1) ; __tmp . put_f32_le (self . param2) ; __tmp . put_f32_le (self . param3) ; __tmp . put_f32_le (self . param4) ; __tmp . put_f32_le (self . param5) ; __tmp . put_f32_le (self . param6) ; __tmp . put_f32_le (self . param7) ; __tmp . put_u16_le (self . command as u16) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . confirmation) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MESSAGE_INTERVAL_DATA { pub interval_us : i32 , pub message_id : u16 , } impl MESSAGE_INTERVAL_DATA { pub const ENCODED_LEN : usize = 6usize ; pub const DEFAULT : Self = Self { interval_us : 0_i32 , message_id : 0_u16 , } ; } impl Default for MESSAGE_INTERVAL_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MESSAGE_INTERVAL_DATA { type Message = MavMessage ; const ID : u32 = 244u32 ; const NAME : & 'static str = "MESSAGE_INTERVAL" ; const EXTRA_CRC : u8 = 95u8 ; const ENCODED_LEN : usize = 6usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . interval_us = buf . get_i32_le () ; __struct . message_id = buf . get_u16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . interval_us) ; __tmp . put_u16_le (self . message_id) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LOGGING_DATA_ACKED_DATA { pub sequence : u16 , pub target_system : u8 , pub target_component : u8 , pub length : u8 , pub first_message_offset : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub data : [u8 ; 249] , } impl LOGGING_DATA_ACKED_DATA { pub const ENCODED_LEN : usize = 255usize ; pub const DEFAULT : Self = Self { sequence : 0_u16 , target_system : 0_u8 , target_component : 0_u8 , length : 0_u8 , first_message_offset : 0_u8 , data : [0_u8 ; 249usize] , } ; } impl Default for LOGGING_DATA_ACKED_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for LOGGING_DATA_ACKED_DATA { type Message = MavMessage ; const ID : u32 = 267u32 ; const NAME : & 'static str = "LOGGING_DATA_ACKED" ; const EXTRA_CRC : u8 = 35u8 ; const ENCODED_LEN : usize = 255usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . sequence = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . length = buf . get_u8 () ; __struct . first_message_offset = buf . get_u8 () ; for v in & mut __struct . data { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . sequence) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . length) ; __tmp . put_u8 (self . first_message_offset) ; for val in & self . data { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct VIDEO_STREAM_STATUS_DATA { pub framerate : f32 , pub bitrate : u32 , pub flags : VideoStreamStatusFlags , pub resolution_h : u16 , pub resolution_v : u16 , pub rotation : u16 , pub hfov : u16 , pub stream_id : u8 , } impl VIDEO_STREAM_STATUS_DATA { pub const ENCODED_LEN : usize = 19usize ; pub const DEFAULT : Self = Self { framerate : 0.0_f32 , bitrate : 0_u32 , flags : VideoStreamStatusFlags :: DEFAULT , resolution_h : 0_u16 , resolution_v : 0_u16 , rotation : 0_u16 , hfov : 0_u16 , stream_id : 0_u8 , } ; } impl Default for VIDEO_STREAM_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for VIDEO_STREAM_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 270u32 ; const NAME : & 'static str = "VIDEO_STREAM_STATUS" ; const EXTRA_CRC : u8 = 59u8 ; const ENCODED_LEN : usize = 19usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . framerate = buf . get_f32_le () ; __struct . bitrate = buf . get_u32_le () ; let tmp = buf . get_u16_le () ; __struct . flags = FromPrimitive :: from_u16 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "VideoStreamStatusFlags" , value : tmp as u32 }) ? ; __struct . resolution_h = buf . get_u16_le () ; __struct . resolution_v = buf . get_u16_le () ; __struct . rotation = buf . get_u16_le () ; __struct . hfov = buf . get_u16_le () ; __struct . stream_id = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . framerate) ; __tmp . put_u32_le (self . bitrate) ; __tmp . put_u16_le (self . flags as u16) ; __tmp . put_u16_le (self . resolution_h) ; __tmp . put_u16_le (self . resolution_v) ; __tmp . put_u16_le (self . rotation) ; __tmp . put_u16_le (self . hfov) ; __tmp . put_u8 (self . stream_id) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GIMBAL_MANAGER_INFORMATION_DATA { pub time_boot_ms : u32 , pub cap_flags : GimbalManagerCapFlags , pub roll_min : f32 , pub roll_max : f32 , pub pitch_min : f32 , pub pitch_max : f32 , pub yaw_min : f32 , pub yaw_max : f32 , pub gimbal_device_id : u8 , } impl GIMBAL_MANAGER_INFORMATION_DATA { pub const ENCODED_LEN : usize = 33usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , cap_flags : GimbalManagerCapFlags :: DEFAULT , roll_min : 0.0_f32 , roll_max : 0.0_f32 , pitch_min : 0.0_f32 , pitch_max : 0.0_f32 , yaw_min : 0.0_f32 , yaw_max : 0.0_f32 , gimbal_device_id : 0_u8 , } ; } impl Default for GIMBAL_MANAGER_INFORMATION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GIMBAL_MANAGER_INFORMATION_DATA { type Message = MavMessage ; const ID : u32 = 280u32 ; const NAME : & 'static str = "GIMBAL_MANAGER_INFORMATION" ; const EXTRA_CRC : u8 = 70u8 ; const ENCODED_LEN : usize = 33usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; let tmp = buf . get_u32_le () ; __struct . cap_flags = GimbalManagerCapFlags :: from_bits (tmp & GimbalManagerCapFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "GimbalManagerCapFlags" , value : tmp as u32 }) ? ; __struct . roll_min = buf . get_f32_le () ; __struct . roll_max = buf . get_f32_le () ; __struct . pitch_min = buf . get_f32_le () ; __struct . pitch_max = buf . get_f32_le () ; __struct . yaw_min = buf . get_f32_le () ; __struct . yaw_max = buf . get_f32_le () ; __struct . gimbal_device_id = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_u32_le (self . cap_flags . bits ()) ; __tmp . put_f32_le (self . roll_min) ; __tmp . put_f32_le (self . roll_max) ; __tmp . put_f32_le (self . pitch_min) ; __tmp . put_f32_le (self . pitch_max) ; __tmp . put_f32_le (self . yaw_min) ; __tmp . put_f32_le (self . yaw_max) ; __tmp . put_u8 (self . gimbal_device_id) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct WIFI_CONFIG_AP_DATA { # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub ssid : [u8 ; 32] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub password : [u8 ; 64] , } impl WIFI_CONFIG_AP_DATA { pub const ENCODED_LEN : usize = 96usize ; pub const DEFAULT : Self = Self { ssid : [0_u8 ; 32usize] , password : [0_u8 ; 64usize] , } ; } impl Default for WIFI_CONFIG_AP_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for WIFI_CONFIG_AP_DATA { type Message = MavMessage ; const ID : u32 = 299u32 ; const NAME : & 'static str = "WIFI_CONFIG_AP" ; const EXTRA_CRC : u8 = 19u8 ; const ENCODED_LEN : usize = 96usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; for v in & mut __struct . ssid { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . password { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; for val in & self . ssid { __tmp . put_u8 (* val) ; } for val in & self . password { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA { pub time_boot_us : u64 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub q : [f32 ; 4] , pub q_estimated_delay_us : u32 , pub vx : f32 , pub vy : f32 , pub vz : f32 , pub v_estimated_delay_us : u32 , pub feed_forward_angular_velocity_z : f32 , pub estimator_status : EstimatorStatusFlags , pub target_system : u8 , pub target_component : u8 , pub landed_state : MavLandedState , } impl AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA { pub const ENCODED_LEN : usize = 53usize ; pub const DEFAULT : Self = Self { time_boot_us : 0_u64 , q : [0.0_f32 ; 4usize] , q_estimated_delay_us : 0_u32 , vx : 0.0_f32 , vy : 0.0_f32 , vz : 0.0_f32 , v_estimated_delay_us : 0_u32 , feed_forward_angular_velocity_z : 0.0_f32 , estimator_status : EstimatorStatusFlags :: DEFAULT , target_system : 0_u8 , target_component : 0_u8 , landed_state : MavLandedState :: DEFAULT , } ; } impl Default for AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA { type Message = MavMessage ; const ID : u32 = 286u32 ; const NAME : & 'static str = "AUTOPILOT_STATE_FOR_GIMBAL_DEVICE" ; const EXTRA_CRC : u8 = 210u8 ; const ENCODED_LEN : usize = 53usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_us = buf . get_u64_le () ; for v in & mut __struct . q { let val = buf . get_f32_le () ; * v = val ; } __struct . q_estimated_delay_us = buf . get_u32_le () ; __struct . vx = buf . get_f32_le () ; __struct . vy = buf . get_f32_le () ; __struct . vz = buf . get_f32_le () ; __struct . v_estimated_delay_us = buf . get_u32_le () ; __struct . feed_forward_angular_velocity_z = buf . get_f32_le () ; let tmp = buf . get_u16_le () ; __struct . estimator_status = EstimatorStatusFlags :: from_bits (tmp & EstimatorStatusFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "EstimatorStatusFlags" , value : tmp as u32 }) ? ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . landed_state = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavLandedState" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_boot_us) ; for val in & self . q { __tmp . put_f32_le (* val) ; } __tmp . put_u32_le (self . q_estimated_delay_us) ; __tmp . put_f32_le (self . vx) ; __tmp . put_f32_le (self . vy) ; __tmp . put_f32_le (self . vz) ; __tmp . put_u32_le (self . v_estimated_delay_us) ; __tmp . put_f32_le (self . feed_forward_angular_velocity_z) ; __tmp . put_u16_le (self . estimator_status . bits ()) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . landed_state as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SET_MODE_DATA { pub custom_mode : u32 , pub target_system : u8 , pub base_mode : MavMode , } impl SET_MODE_DATA { pub const ENCODED_LEN : usize = 6usize ; pub const DEFAULT : Self = Self { custom_mode : 0_u32 , target_system : 0_u8 , base_mode : MavMode :: DEFAULT , } ; } impl Default for SET_MODE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SET_MODE_DATA { type Message = MavMessage ; const ID : u32 = 11u32 ; const NAME : & 'static str = "SET_MODE" ; const EXTRA_CRC : u8 = 89u8 ; const ENCODED_LEN : usize = 6usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . custom_mode = buf . get_u32_le () ; __struct . target_system = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . base_mode = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavMode" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . custom_mode) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . base_mode as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MISSION_ITEM_DATA { pub param1 : f32 , pub param2 : f32 , pub param3 : f32 , pub param4 : f32 , pub x : f32 , pub y : f32 , pub z : f32 , pub seq : u16 , pub command : MavCmd , pub target_system : u8 , pub target_component : u8 , pub frame : MavFrame , pub current : u8 , pub autocontinue : u8 , } impl MISSION_ITEM_DATA { pub const ENCODED_LEN : usize = 37usize ; pub const DEFAULT : Self = Self { param1 : 0.0_f32 , param2 : 0.0_f32 , param3 : 0.0_f32 , param4 : 0.0_f32 , x : 0.0_f32 , y : 0.0_f32 , z : 0.0_f32 , seq : 0_u16 , command : MavCmd :: DEFAULT , target_system : 0_u8 , target_component : 0_u8 , frame : MavFrame :: DEFAULT , current : 0_u8 , autocontinue : 0_u8 , } ; } impl Default for MISSION_ITEM_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MISSION_ITEM_DATA { type Message = MavMessage ; const ID : u32 = 39u32 ; const NAME : & 'static str = "MISSION_ITEM" ; const EXTRA_CRC : u8 = 254u8 ; const ENCODED_LEN : usize = 37usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . param1 = buf . get_f32_le () ; __struct . param2 = buf . get_f32_le () ; __struct . param3 = buf . get_f32_le () ; __struct . param4 = buf . get_f32_le () ; __struct . x = buf . get_f32_le () ; __struct . y = buf . get_f32_le () ; __struct . z = buf . get_f32_le () ; __struct . seq = buf . get_u16_le () ; let tmp = buf . get_u16_le () ; __struct . command = FromPrimitive :: from_u16 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavCmd" , value : tmp as u32 }) ? ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . frame = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavFrame" , value : tmp as u32 }) ? ; __struct . current = buf . get_u8 () ; __struct . autocontinue = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . param1) ; __tmp . put_f32_le (self . param2) ; __tmp . put_f32_le (self . param3) ; __tmp . put_f32_le (self . param4) ; __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; __tmp . put_u16_le (self . seq) ; __tmp . put_u16_le (self . command as u16) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . frame as u8) ; __tmp . put_u8 (self . current) ; __tmp . put_u8 (self . autocontinue) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PROTOCOL_VERSION_DATA { pub version : u16 , pub min_version : u16 , pub max_version : u16 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub spec_version_hash : [u8 ; 8] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub library_version_hash : [u8 ; 8] , } impl PROTOCOL_VERSION_DATA { pub const ENCODED_LEN : usize = 22usize ; pub const DEFAULT : Self = Self { version : 0_u16 , min_version : 0_u16 , max_version : 0_u16 , spec_version_hash : [0_u8 ; 8usize] , library_version_hash : [0_u8 ; 8usize] , } ; } impl Default for PROTOCOL_VERSION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for PROTOCOL_VERSION_DATA { type Message = MavMessage ; const ID : u32 = 300u32 ; const NAME : & 'static str = "PROTOCOL_VERSION" ; const EXTRA_CRC : u8 = 217u8 ; const ENCODED_LEN : usize = 22usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . version = buf . get_u16_le () ; __struct . min_version = buf . get_u16_le () ; __struct . max_version = buf . get_u16_le () ; for v in & mut __struct . spec_version_hash { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . library_version_hash { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . version) ; __tmp . put_u16_le (self . min_version) ; __tmp . put_u16_le (self . max_version) ; for val in & self . spec_version_hash { __tmp . put_u8 (* val) ; } for val in & self . library_version_hash { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MISSION_ITEM_REACHED_DATA { pub seq : u16 , } impl MISSION_ITEM_REACHED_DATA { pub const ENCODED_LEN : usize = 2usize ; pub const DEFAULT : Self = Self { seq : 0_u16 , } ; } impl Default for MISSION_ITEM_REACHED_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MISSION_ITEM_REACHED_DATA { type Message = MavMessage ; const ID : u32 = 46u32 ; const NAME : & 'static str = "MISSION_ITEM_REACHED" ; const EXTRA_CRC : u8 = 11u8 ; const ENCODED_LEN : usize = 2usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . seq = buf . get_u16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . seq) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MISSION_ACK_DATA { pub target_system : u8 , pub target_component : u8 , pub mavtype : MavMissionResult , } impl MISSION_ACK_DATA { pub const ENCODED_LEN : usize = 3usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , mavtype : MavMissionResult :: DEFAULT , } ; } impl Default for MISSION_ACK_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MISSION_ACK_DATA { type Message = MavMessage ; const ID : u32 = 47u32 ; const NAME : & 'static str = "MISSION_ACK" ; const EXTRA_CRC : u8 = 153u8 ; const ENCODED_LEN : usize = 3usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . mavtype = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavMissionResult" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . mavtype as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SET_GPS_GLOBAL_ORIGIN_DATA { pub latitude : i32 , pub longitude : i32 , pub altitude : i32 , pub target_system : u8 , } impl SET_GPS_GLOBAL_ORIGIN_DATA { pub const ENCODED_LEN : usize = 13usize ; pub const DEFAULT : Self = Self { latitude : 0_i32 , longitude : 0_i32 , altitude : 0_i32 , target_system : 0_u8 , } ; } impl Default for SET_GPS_GLOBAL_ORIGIN_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SET_GPS_GLOBAL_ORIGIN_DATA { type Message = MavMessage ; const ID : u32 = 48u32 ; const NAME : & 'static str = "SET_GPS_GLOBAL_ORIGIN" ; const EXTRA_CRC : u8 = 41u8 ; const ENCODED_LEN : usize = 13usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . latitude = buf . get_i32_le () ; __struct . longitude = buf . get_i32_le () ; __struct . altitude = buf . get_i32_le () ; __struct . target_system = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . latitude) ; __tmp . put_i32_le (self . longitude) ; __tmp . put_i32_le (self . altitude) ; __tmp . put_u8 (self . target_system) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GPS_GLOBAL_ORIGIN_DATA { pub latitude : i32 , pub longitude : i32 , pub altitude : i32 , } impl GPS_GLOBAL_ORIGIN_DATA { pub const ENCODED_LEN : usize = 12usize ; pub const DEFAULT : Self = Self { latitude : 0_i32 , longitude : 0_i32 , altitude : 0_i32 , } ; } impl Default for GPS_GLOBAL_ORIGIN_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GPS_GLOBAL_ORIGIN_DATA { type Message = MavMessage ; const ID : u32 = 49u32 ; const NAME : & 'static str = "GPS_GLOBAL_ORIGIN" ; const EXTRA_CRC : u8 = 39u8 ; const ENCODED_LEN : usize = 12usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . latitude = buf . get_i32_le () ; __struct . longitude = buf . get_i32_le () ; __struct . altitude = buf . get_i32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . latitude) ; __tmp . put_i32_le (self . longitude) ; __tmp . put_i32_le (self . altitude) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MISSION_REQUEST_LIST_DATA { pub target_system : u8 , pub target_component : u8 , } impl MISSION_REQUEST_LIST_DATA { pub const ENCODED_LEN : usize = 2usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for MISSION_REQUEST_LIST_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MISSION_REQUEST_LIST_DATA { type Message = MavMessage ; const ID : u32 = 43u32 ; const NAME : & 'static str = "MISSION_REQUEST_LIST" ; const EXTRA_CRC : u8 = 132u8 ; const ENCODED_LEN : usize = 2usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HIL_SENSOR_DATA { pub time_usec : u64 , pub xacc : f32 , pub yacc : f32 , pub zacc : f32 , pub xgyro : f32 , pub ygyro : f32 , pub zgyro : f32 , pub xmag : f32 , pub ymag : f32 , pub zmag : f32 , pub abs_pressure : f32 , pub diff_pressure : f32 , pub pressure_alt : f32 , pub temperature : f32 , pub fields_updated : HilSensorUpdatedFlags , } impl HIL_SENSOR_DATA { pub const ENCODED_LEN : usize = 64usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , xacc : 0.0_f32 , yacc : 0.0_f32 , zacc : 0.0_f32 , xgyro : 0.0_f32 , ygyro : 0.0_f32 , zgyro : 0.0_f32 , xmag : 0.0_f32 , ymag : 0.0_f32 , zmag : 0.0_f32 , abs_pressure : 0.0_f32 , diff_pressure : 0.0_f32 , pressure_alt : 0.0_f32 , temperature : 0.0_f32 , fields_updated : HilSensorUpdatedFlags :: DEFAULT , } ; } impl Default for HIL_SENSOR_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for HIL_SENSOR_DATA { type Message = MavMessage ; const ID : u32 = 107u32 ; const NAME : & 'static str = "HIL_SENSOR" ; const EXTRA_CRC : u8 = 108u8 ; const ENCODED_LEN : usize = 64usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . xacc = buf . get_f32_le () ; __struct . yacc = buf . get_f32_le () ; __struct . zacc = buf . get_f32_le () ; __struct . xgyro = buf . get_f32_le () ; __struct . ygyro = buf . get_f32_le () ; __struct . zgyro = buf . get_f32_le () ; __struct . xmag = buf . get_f32_le () ; __struct . ymag = buf . get_f32_le () ; __struct . zmag = buf . get_f32_le () ; __struct . abs_pressure = buf . get_f32_le () ; __struct . diff_pressure = buf . get_f32_le () ; __struct . pressure_alt = buf . get_f32_le () ; __struct . temperature = buf . get_f32_le () ; let tmp = buf . get_u32_le () ; __struct . fields_updated = HilSensorUpdatedFlags :: from_bits (tmp & HilSensorUpdatedFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "HilSensorUpdatedFlags" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . xacc) ; __tmp . put_f32_le (self . yacc) ; __tmp . put_f32_le (self . zacc) ; __tmp . put_f32_le (self . xgyro) ; __tmp . put_f32_le (self . ygyro) ; __tmp . put_f32_le (self . zgyro) ; __tmp . put_f32_le (self . xmag) ; __tmp . put_f32_le (self . ymag) ; __tmp . put_f32_le (self . zmag) ; __tmp . put_f32_le (self . abs_pressure) ; __tmp . put_f32_le (self . diff_pressure) ; __tmp . put_f32_le (self . pressure_alt) ; __tmp . put_f32_le (self . temperature) ; __tmp . put_u32_le (self . fields_updated . bits ()) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ATTITUDE_QUATERNION_COV_DATA { pub time_usec : u64 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub q : [f32 ; 4] , pub rollspeed : f32 , pub pitchspeed : f32 , pub yawspeed : f32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub covariance : [f32 ; 9] , } impl ATTITUDE_QUATERNION_COV_DATA { pub const ENCODED_LEN : usize = 72usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , q : [0.0_f32 ; 4usize] , rollspeed : 0.0_f32 , pitchspeed : 0.0_f32 , yawspeed : 0.0_f32 , covariance : [0.0_f32 ; 9usize] , } ; } impl Default for ATTITUDE_QUATERNION_COV_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ATTITUDE_QUATERNION_COV_DATA { type Message = MavMessage ; const ID : u32 = 61u32 ; const NAME : & 'static str = "ATTITUDE_QUATERNION_COV" ; const EXTRA_CRC : u8 = 167u8 ; const ENCODED_LEN : usize = 72usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; for v in & mut __struct . q { let val = buf . get_f32_le () ; * v = val ; } __struct . rollspeed = buf . get_f32_le () ; __struct . pitchspeed = buf . get_f32_le () ; __struct . yawspeed = buf . get_f32_le () ; for v in & mut __struct . covariance { let val = buf . get_f32_le () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; for val in & self . q { __tmp . put_f32_le (* val) ; } __tmp . put_f32_le (self . rollspeed) ; __tmp . put_f32_le (self . pitchspeed) ; __tmp . put_f32_le (self . yawspeed) ; for val in & self . covariance { __tmp . put_f32_le (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SET_POSITION_TARGET_GLOBAL_INT_DATA { pub time_boot_ms : u32 , pub lat_int : i32 , pub lon_int : i32 , pub alt : f32 , pub vx : f32 , pub vy : f32 , pub vz : f32 , pub afx : f32 , pub afy : f32 , pub afz : f32 , pub yaw : f32 , pub yaw_rate : f32 , pub type_mask : PositionTargetTypemask , pub target_system : u8 , pub target_component : u8 , pub coordinate_frame : MavFrame , } impl SET_POSITION_TARGET_GLOBAL_INT_DATA { pub const ENCODED_LEN : usize = 53usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , lat_int : 0_i32 , lon_int : 0_i32 , alt : 0.0_f32 , vx : 0.0_f32 , vy : 0.0_f32 , vz : 0.0_f32 , afx : 0.0_f32 , afy : 0.0_f32 , afz : 0.0_f32 , yaw : 0.0_f32 , yaw_rate : 0.0_f32 , type_mask : PositionTargetTypemask :: DEFAULT , target_system : 0_u8 , target_component : 0_u8 , coordinate_frame : MavFrame :: DEFAULT , } ; } impl Default for SET_POSITION_TARGET_GLOBAL_INT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SET_POSITION_TARGET_GLOBAL_INT_DATA { type Message = MavMessage ; const ID : u32 = 86u32 ; const NAME : & 'static str = "SET_POSITION_TARGET_GLOBAL_INT" ; const EXTRA_CRC : u8 = 5u8 ; const ENCODED_LEN : usize = 53usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . lat_int = buf . get_i32_le () ; __struct . lon_int = buf . get_i32_le () ; __struct . alt = buf . get_f32_le () ; __struct . vx = buf . get_f32_le () ; __struct . vy = buf . get_f32_le () ; __struct . vz = buf . get_f32_le () ; __struct . afx = buf . get_f32_le () ; __struct . afy = buf . get_f32_le () ; __struct . afz = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; __struct . yaw_rate = buf . get_f32_le () ; let tmp = buf . get_u16_le () ; __struct . type_mask = PositionTargetTypemask :: from_bits (tmp & PositionTargetTypemask :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "PositionTargetTypemask" , value : tmp as u32 }) ? ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . coordinate_frame = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavFrame" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_i32_le (self . lat_int) ; __tmp . put_i32_le (self . lon_int) ; __tmp . put_f32_le (self . alt) ; __tmp . put_f32_le (self . vx) ; __tmp . put_f32_le (self . vy) ; __tmp . put_f32_le (self . vz) ; __tmp . put_f32_le (self . afx) ; __tmp . put_f32_le (self . afy) ; __tmp . put_f32_le (self . afz) ; __tmp . put_f32_le (self . yaw) ; __tmp . put_f32_le (self . yaw_rate) ; __tmp . put_u16_le (self . type_mask . bits ()) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . coordinate_frame as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct TERRAIN_REQUEST_DATA { pub mask : u64 , pub lat : i32 , pub lon : i32 , pub grid_spacing : u16 , } impl TERRAIN_REQUEST_DATA { pub const ENCODED_LEN : usize = 18usize ; pub const DEFAULT : Self = Self { mask : 0_u64 , lat : 0_i32 , lon : 0_i32 , grid_spacing : 0_u16 , } ; } impl Default for TERRAIN_REQUEST_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for TERRAIN_REQUEST_DATA { type Message = MavMessage ; const ID : u32 = 133u32 ; const NAME : & 'static str = "TERRAIN_REQUEST" ; const EXTRA_CRC : u8 = 6u8 ; const ENCODED_LEN : usize = 18usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . mask = buf . get_u64_le () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . grid_spacing = buf . get_u16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . mask) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_u16_le (self . grid_spacing) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct TERRAIN_DATA_DATA { pub lat : i32 , pub lon : i32 , pub grid_spacing : u16 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub data : [i16 ; 16] , pub gridbit : u8 , } impl TERRAIN_DATA_DATA { pub const ENCODED_LEN : usize = 43usize ; pub const DEFAULT : Self = Self { lat : 0_i32 , lon : 0_i32 , grid_spacing : 0_u16 , data : [0_i16 ; 16usize] , gridbit : 0_u8 , } ; } impl Default for TERRAIN_DATA_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for TERRAIN_DATA_DATA { type Message = MavMessage ; const ID : u32 = 134u32 ; const NAME : & 'static str = "TERRAIN_DATA" ; const EXTRA_CRC : u8 = 229u8 ; const ENCODED_LEN : usize = 43usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . grid_spacing = buf . get_u16_le () ; for v in & mut __struct . data { let val = buf . get_i16_le () ; * v = val ; } __struct . gridbit = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_u16_le (self . grid_spacing) ; for val in & self . data { __tmp . put_i16_le (* val) ; } __tmp . put_u8 (self . gridbit) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ATT_POS_MOCAP_DATA { pub time_usec : u64 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub q : [f32 ; 4] , pub x : f32 , pub y : f32 , pub z : f32 , } impl ATT_POS_MOCAP_DATA { pub const ENCODED_LEN : usize = 36usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , q : [0.0_f32 ; 4usize] , x : 0.0_f32 , y : 0.0_f32 , z : 0.0_f32 , } ; } impl Default for ATT_POS_MOCAP_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ATT_POS_MOCAP_DATA { type Message = MavMessage ; const ID : u32 = 138u32 ; const NAME : & 'static str = "ATT_POS_MOCAP" ; const EXTRA_CRC : u8 = 109u8 ; const ENCODED_LEN : usize = 36usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; for v in & mut __struct . q { let val = buf . get_f32_le () ; * v = val ; } __struct . x = buf . get_f32_le () ; __struct . y = buf . get_f32_le () ; __struct . z = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; for val in & self . q { __tmp . put_f32_le (* val) ; } __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CONTROL_SYSTEM_STATE_DATA { pub time_usec : u64 , pub x_acc : f32 , pub y_acc : f32 , pub z_acc : f32 , pub x_vel : f32 , pub y_vel : f32 , pub z_vel : f32 , pub x_pos : f32 , pub y_pos : f32 , pub z_pos : f32 , pub airspeed : f32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub vel_variance : [f32 ; 3] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub pos_variance : [f32 ; 3] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub q : [f32 ; 4] , pub roll_rate : f32 , pub pitch_rate : f32 , pub yaw_rate : f32 , } impl CONTROL_SYSTEM_STATE_DATA { pub const ENCODED_LEN : usize = 100usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , x_acc : 0.0_f32 , y_acc : 0.0_f32 , z_acc : 0.0_f32 , x_vel : 0.0_f32 , y_vel : 0.0_f32 , z_vel : 0.0_f32 , x_pos : 0.0_f32 , y_pos : 0.0_f32 , z_pos : 0.0_f32 , airspeed : 0.0_f32 , vel_variance : [0.0_f32 ; 3usize] , pos_variance : [0.0_f32 ; 3usize] , q : [0.0_f32 ; 4usize] , roll_rate : 0.0_f32 , pitch_rate : 0.0_f32 , yaw_rate : 0.0_f32 , } ; } impl Default for CONTROL_SYSTEM_STATE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CONTROL_SYSTEM_STATE_DATA { type Message = MavMessage ; const ID : u32 = 146u32 ; const NAME : & 'static str = "CONTROL_SYSTEM_STATE" ; const EXTRA_CRC : u8 = 103u8 ; const ENCODED_LEN : usize = 100usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . x_acc = buf . get_f32_le () ; __struct . y_acc = buf . get_f32_le () ; __struct . z_acc = buf . get_f32_le () ; __struct . x_vel = buf . get_f32_le () ; __struct . y_vel = buf . get_f32_le () ; __struct . z_vel = buf . get_f32_le () ; __struct . x_pos = buf . get_f32_le () ; __struct . y_pos = buf . get_f32_le () ; __struct . z_pos = buf . get_f32_le () ; __struct . airspeed = buf . get_f32_le () ; for v in & mut __struct . vel_variance { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . pos_variance { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . q { let val = buf . get_f32_le () ; * v = val ; } __struct . roll_rate = buf . get_f32_le () ; __struct . pitch_rate = buf . get_f32_le () ; __struct . yaw_rate = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . x_acc) ; __tmp . put_f32_le (self . y_acc) ; __tmp . put_f32_le (self . z_acc) ; __tmp . put_f32_le (self . x_vel) ; __tmp . put_f32_le (self . y_vel) ; __tmp . put_f32_le (self . z_vel) ; __tmp . put_f32_le (self . x_pos) ; __tmp . put_f32_le (self . y_pos) ; __tmp . put_f32_le (self . z_pos) ; __tmp . put_f32_le (self . airspeed) ; for val in & self . vel_variance { __tmp . put_f32_le (* val) ; } for val in & self . pos_variance { __tmp . put_f32_le (* val) ; } for val in & self . q { __tmp . put_f32_le (* val) ; } __tmp . put_f32_le (self . roll_rate) ; __tmp . put_f32_le (self . pitch_rate) ; __tmp . put_f32_le (self . yaw_rate) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SCALED_IMU3_DATA { pub time_boot_ms : u32 , pub xacc : i16 , pub yacc : i16 , pub zacc : i16 , pub xgyro : i16 , pub ygyro : i16 , pub zgyro : i16 , pub xmag : i16 , pub ymag : i16 , pub zmag : i16 , } impl SCALED_IMU3_DATA { pub const ENCODED_LEN : usize = 22usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , xacc : 0_i16 , yacc : 0_i16 , zacc : 0_i16 , xgyro : 0_i16 , ygyro : 0_i16 , zgyro : 0_i16 , xmag : 0_i16 , ymag : 0_i16 , zmag : 0_i16 , } ; } impl Default for SCALED_IMU3_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SCALED_IMU3_DATA { type Message = MavMessage ; const ID : u32 = 129u32 ; const NAME : & 'static str = "SCALED_IMU3" ; const EXTRA_CRC : u8 = 46u8 ; const ENCODED_LEN : usize = 22usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . xacc = buf . get_i16_le () ; __struct . yacc = buf . get_i16_le () ; __struct . zacc = buf . get_i16_le () ; __struct . xgyro = buf . get_i16_le () ; __struct . ygyro = buf . get_i16_le () ; __struct . zgyro = buf . get_i16_le () ; __struct . xmag = buf . get_i16_le () ; __struct . ymag = buf . get_i16_le () ; __struct . zmag = buf . get_i16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_i16_le (self . xacc) ; __tmp . put_i16_le (self . yacc) ; __tmp . put_i16_le (self . zacc) ; __tmp . put_i16_le (self . xgyro) ; __tmp . put_i16_le (self . ygyro) ; __tmp . put_i16_le (self . zgyro) ; __tmp . put_i16_le (self . xmag) ; __tmp . put_i16_le (self . ymag) ; __tmp . put_i16_le (self . zmag) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct WIND_COV_DATA { pub time_usec : u64 , pub wind_x : f32 , pub wind_y : f32 , pub wind_z : f32 , pub var_horiz : f32 , pub var_vert : f32 , pub wind_alt : f32 , pub horiz_accuracy : f32 , pub vert_accuracy : f32 , } impl WIND_COV_DATA { pub const ENCODED_LEN : usize = 40usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , wind_x : 0.0_f32 , wind_y : 0.0_f32 , wind_z : 0.0_f32 , var_horiz : 0.0_f32 , var_vert : 0.0_f32 , wind_alt : 0.0_f32 , horiz_accuracy : 0.0_f32 , vert_accuracy : 0.0_f32 , } ; } impl Default for WIND_COV_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for WIND_COV_DATA { type Message = MavMessage ; const ID : u32 = 231u32 ; const NAME : & 'static str = "WIND_COV" ; const EXTRA_CRC : u8 = 105u8 ; const ENCODED_LEN : usize = 40usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . wind_x = buf . get_f32_le () ; __struct . wind_y = buf . get_f32_le () ; __struct . wind_z = buf . get_f32_le () ; __struct . var_horiz = buf . get_f32_le () ; __struct . var_vert = buf . get_f32_le () ; __struct . wind_alt = buf . get_f32_le () ; __struct . horiz_accuracy = buf . get_f32_le () ; __struct . vert_accuracy = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . wind_x) ; __tmp . put_f32_le (self . wind_y) ; __tmp . put_f32_le (self . wind_z) ; __tmp . put_f32_le (self . var_horiz) ; __tmp . put_f32_le (self . var_vert) ; __tmp . put_f32_le (self . wind_alt) ; __tmp . put_f32_le (self . horiz_accuracy) ; __tmp . put_f32_le (self . vert_accuracy) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CAMERA_INFORMATION_DATA { pub time_boot_ms : u32 , pub firmware_version : u32 , pub focal_length : f32 , pub sensor_size_h : f32 , pub sensor_size_v : f32 , pub flags : CameraCapFlags , pub resolution_h : u16 , pub resolution_v : u16 , pub cam_definition_version : u16 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub vendor_name : [u8 ; 32] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub model_name : [u8 ; 32] , pub lens_id : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub cam_definition_uri : [u8 ; 140] , } impl CAMERA_INFORMATION_DATA { pub const ENCODED_LEN : usize = 235usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , firmware_version : 0_u32 , focal_length : 0.0_f32 , sensor_size_h : 0.0_f32 , sensor_size_v : 0.0_f32 , flags : CameraCapFlags :: DEFAULT , resolution_h : 0_u16 , resolution_v : 0_u16 , cam_definition_version : 0_u16 , vendor_name : [0_u8 ; 32usize] , model_name : [0_u8 ; 32usize] , lens_id : 0_u8 , cam_definition_uri : [0_u8 ; 140usize] , } ; } impl Default for CAMERA_INFORMATION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CAMERA_INFORMATION_DATA { type Message = MavMessage ; const ID : u32 = 259u32 ; const NAME : & 'static str = "CAMERA_INFORMATION" ; const EXTRA_CRC : u8 = 92u8 ; const ENCODED_LEN : usize = 235usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . firmware_version = buf . get_u32_le () ; __struct . focal_length = buf . get_f32_le () ; __struct . sensor_size_h = buf . get_f32_le () ; __struct . sensor_size_v = buf . get_f32_le () ; let tmp = buf . get_u32_le () ; __struct . flags = CameraCapFlags :: from_bits (tmp & CameraCapFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "CameraCapFlags" , value : tmp as u32 }) ? ; __struct . resolution_h = buf . get_u16_le () ; __struct . resolution_v = buf . get_u16_le () ; __struct . cam_definition_version = buf . get_u16_le () ; for v in & mut __struct . vendor_name { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . model_name { let val = buf . get_u8 () ; * v = val ; } __struct . lens_id = buf . get_u8 () ; for v in & mut __struct . cam_definition_uri { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_u32_le (self . firmware_version) ; __tmp . put_f32_le (self . focal_length) ; __tmp . put_f32_le (self . sensor_size_h) ; __tmp . put_f32_le (self . sensor_size_v) ; __tmp . put_u32_le (self . flags . bits ()) ; __tmp . put_u16_le (self . resolution_h) ; __tmp . put_u16_le (self . resolution_v) ; __tmp . put_u16_le (self . cam_definition_version) ; for val in & self . vendor_name { __tmp . put_u8 (* val) ; } for val in & self . model_name { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . lens_id) ; for val in & self . cam_definition_uri { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA { pub flags : GimbalManagerFlags , pub pitch : f32 , pub yaw : f32 , pub pitch_rate : f32 , pub yaw_rate : f32 , pub target_system : u8 , pub target_component : u8 , pub gimbal_device_id : u8 , } impl GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA { pub const ENCODED_LEN : usize = 23usize ; pub const DEFAULT : Self = Self { flags : GimbalManagerFlags :: DEFAULT , pitch : 0.0_f32 , yaw : 0.0_f32 , pitch_rate : 0.0_f32 , yaw_rate : 0.0_f32 , target_system : 0_u8 , target_component : 0_u8 , gimbal_device_id : 0_u8 , } ; } impl Default for GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA { type Message = MavMessage ; const ID : u32 = 288u32 ; const NAME : & 'static str = "GIMBAL_MANAGER_SET_MANUAL_CONTROL" ; const EXTRA_CRC : u8 = 20u8 ; const ENCODED_LEN : usize = 23usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u32_le () ; __struct . flags = FromPrimitive :: from_u32 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "GimbalManagerFlags" , value : tmp as u32 }) ? ; __struct . pitch = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; __struct . pitch_rate = buf . get_f32_le () ; __struct . yaw_rate = buf . get_f32_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . gimbal_device_id = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . flags as u32) ; __tmp . put_f32_le (self . pitch) ; __tmp . put_f32_le (self . yaw) ; __tmp . put_f32_le (self . pitch_rate) ; __tmp . put_f32_le (self . yaw_rate) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . gimbal_device_id) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct OBSTACLE_DISTANCE_DATA { pub time_usec : u64 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub distances : [u16 ; 72] , pub min_distance : u16 , pub max_distance : u16 , pub sensor_type : MavDistanceSensor , pub increment : u8 , } impl OBSTACLE_DISTANCE_DATA { pub const ENCODED_LEN : usize = 158usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , distances : [0_u16 ; 72usize] , min_distance : 0_u16 , max_distance : 0_u16 , sensor_type : MavDistanceSensor :: DEFAULT , increment : 0_u8 , } ; } impl Default for OBSTACLE_DISTANCE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for OBSTACLE_DISTANCE_DATA { type Message = MavMessage ; const ID : u32 = 330u32 ; const NAME : & 'static str = "OBSTACLE_DISTANCE" ; const EXTRA_CRC : u8 = 23u8 ; const ENCODED_LEN : usize = 158usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; for v in & mut __struct . distances { let val = buf . get_u16_le () ; * v = val ; } __struct . min_distance = buf . get_u16_le () ; __struct . max_distance = buf . get_u16_le () ; let tmp = buf . get_u8 () ; __struct . sensor_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavDistanceSensor" , value : tmp as u32 }) ? ; __struct . increment = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; for val in & self . distances { __tmp . put_u16_le (* val) ; } __tmp . put_u16_le (self . min_distance) ; __tmp . put_u16_le (self . max_distance) ; __tmp . put_u8 (self . sensor_type as u8) ; __tmp . put_u8 (self . increment) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SERIAL_CONTROL_DATA { pub baudrate : u32 , pub timeout : u16 , pub device : SerialControlDev , pub flags : SerialControlFlag , pub count : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub data : [u8 ; 70] , } impl SERIAL_CONTROL_DATA { pub const ENCODED_LEN : usize = 79usize ; pub const DEFAULT : Self = Self { baudrate : 0_u32 , timeout : 0_u16 , device : SerialControlDev :: DEFAULT , flags : SerialControlFlag :: DEFAULT , count : 0_u8 , data : [0_u8 ; 70usize] , } ; } impl Default for SERIAL_CONTROL_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SERIAL_CONTROL_DATA { type Message = MavMessage ; const ID : u32 = 126u32 ; const NAME : & 'static str = "SERIAL_CONTROL" ; const EXTRA_CRC : u8 = 220u8 ; const ENCODED_LEN : usize = 79usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . baudrate = buf . get_u32_le () ; __struct . timeout = buf . get_u16_le () ; let tmp = buf . get_u8 () ; __struct . device = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "SerialControlDev" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . flags = SerialControlFlag :: from_bits (tmp & SerialControlFlag :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "SerialControlFlag" , value : tmp as u32 }) ? ; __struct . count = buf . get_u8 () ; for v in & mut __struct . data { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . baudrate) ; __tmp . put_u16_le (self . timeout) ; __tmp . put_u8 (self . device as u8) ; __tmp . put_u8 (self . flags . bits ()) ; __tmp . put_u8 (self . count) ; for val in & self . data { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ACTUATOR_CONTROL_TARGET_DATA { pub time_usec : u64 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub controls : [f32 ; 8] , pub group_mlx : u8 , } impl ACTUATOR_CONTROL_TARGET_DATA { pub const ENCODED_LEN : usize = 41usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , controls : [0.0_f32 ; 8usize] , group_mlx : 0_u8 , } ; } impl Default for ACTUATOR_CONTROL_TARGET_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ACTUATOR_CONTROL_TARGET_DATA { type Message = MavMessage ; const ID : u32 = 140u32 ; const NAME : & 'static str = "ACTUATOR_CONTROL_TARGET" ; const EXTRA_CRC : u8 = 181u8 ; const ENCODED_LEN : usize = 41usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; for v in & mut __struct . controls { let val = buf . get_f32_le () ; * v = val ; } __struct . group_mlx = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; for val in & self . controls { __tmp . put_f32_le (* val) ; } __tmp . put_u8 (self . group_mlx) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GLOBAL_POSITION_INT_DATA { pub time_boot_ms : u32 , pub lat : i32 , pub lon : i32 , pub alt : i32 , pub relative_alt : i32 , pub vx : i16 , pub vy : i16 , pub vz : i16 , pub hdg : u16 , } impl GLOBAL_POSITION_INT_DATA { pub const ENCODED_LEN : usize = 28usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , lat : 0_i32 , lon : 0_i32 , alt : 0_i32 , relative_alt : 0_i32 , vx : 0_i16 , vy : 0_i16 , vz : 0_i16 , hdg : 0_u16 , } ; } impl Default for GLOBAL_POSITION_INT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GLOBAL_POSITION_INT_DATA { type Message = MavMessage ; const ID : u32 = 33u32 ; const NAME : & 'static str = "GLOBAL_POSITION_INT" ; const EXTRA_CRC : u8 = 104u8 ; const ENCODED_LEN : usize = 28usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . alt = buf . get_i32_le () ; __struct . relative_alt = buf . get_i32_le () ; __struct . vx = buf . get_i16_le () ; __struct . vy = buf . get_i16_le () ; __struct . vz = buf . get_i16_le () ; __struct . hdg = buf . get_u16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_i32_le (self . alt) ; __tmp . put_i32_le (self . relative_alt) ; __tmp . put_i16_le (self . vx) ; __tmp . put_i16_le (self . vy) ; __tmp . put_i16_le (self . vz) ; __tmp . put_u16_le (self . hdg) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GPS_INPUT_DATA { pub time_usec : u64 , pub time_week_ms : u32 , pub lat : i32 , pub lon : i32 , pub alt : f32 , pub hdop : f32 , pub vdop : f32 , pub vn : f32 , pub ve : f32 , pub vd : f32 , pub speed_accuracy : f32 , pub horiz_accuracy : f32 , pub vert_accuracy : f32 , pub ignore_flags : GpsInputIgnoreFlags , pub time_week : u16 , pub gps_id : u8 , pub fix_type : u8 , pub satellites_visible : u8 , } impl GPS_INPUT_DATA { pub const ENCODED_LEN : usize = 63usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , time_week_ms : 0_u32 , lat : 0_i32 , lon : 0_i32 , alt : 0.0_f32 , hdop : 0.0_f32 , vdop : 0.0_f32 , vn : 0.0_f32 , ve : 0.0_f32 , vd : 0.0_f32 , speed_accuracy : 0.0_f32 , horiz_accuracy : 0.0_f32 , vert_accuracy : 0.0_f32 , ignore_flags : GpsInputIgnoreFlags :: DEFAULT , time_week : 0_u16 , gps_id : 0_u8 , fix_type : 0_u8 , satellites_visible : 0_u8 , } ; } impl Default for GPS_INPUT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GPS_INPUT_DATA { type Message = MavMessage ; const ID : u32 = 232u32 ; const NAME : & 'static str = "GPS_INPUT" ; const EXTRA_CRC : u8 = 151u8 ; const ENCODED_LEN : usize = 63usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . time_week_ms = buf . get_u32_le () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . alt = buf . get_f32_le () ; __struct . hdop = buf . get_f32_le () ; __struct . vdop = buf . get_f32_le () ; __struct . vn = buf . get_f32_le () ; __struct . ve = buf . get_f32_le () ; __struct . vd = buf . get_f32_le () ; __struct . speed_accuracy = buf . get_f32_le () ; __struct . horiz_accuracy = buf . get_f32_le () ; __struct . vert_accuracy = buf . get_f32_le () ; let tmp = buf . get_u16_le () ; __struct . ignore_flags = GpsInputIgnoreFlags :: from_bits (tmp & GpsInputIgnoreFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "GpsInputIgnoreFlags" , value : tmp as u32 }) ? ; __struct . time_week = buf . get_u16_le () ; __struct . gps_id = buf . get_u8 () ; __struct . fix_type = buf . get_u8 () ; __struct . satellites_visible = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_u32_le (self . time_week_ms) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_f32_le (self . alt) ; __tmp . put_f32_le (self . hdop) ; __tmp . put_f32_le (self . vdop) ; __tmp . put_f32_le (self . vn) ; __tmp . put_f32_le (self . ve) ; __tmp . put_f32_le (self . vd) ; __tmp . put_f32_le (self . speed_accuracy) ; __tmp . put_f32_le (self . horiz_accuracy) ; __tmp . put_f32_le (self . vert_accuracy) ; __tmp . put_u16_le (self . ignore_flags . bits ()) ; __tmp . put_u16_le (self . time_week) ; __tmp . put_u8 (self . gps_id) ; __tmp . put_u8 (self . fix_type) ; __tmp . put_u8 (self . satellites_visible) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct VIBRATION_DATA { pub time_usec : u64 , pub vibration_x : f32 , pub vibration_y : f32 , pub vibration_z : f32 , pub clipping_0 : u32 , pub clipping_1 : u32 , pub clipping_2 : u32 , } impl VIBRATION_DATA { pub const ENCODED_LEN : usize = 32usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , vibration_x : 0.0_f32 , vibration_y : 0.0_f32 , vibration_z : 0.0_f32 , clipping_0 : 0_u32 , clipping_1 : 0_u32 , clipping_2 : 0_u32 , } ; } impl Default for VIBRATION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for VIBRATION_DATA { type Message = MavMessage ; const ID : u32 = 241u32 ; const NAME : & 'static str = "VIBRATION" ; const EXTRA_CRC : u8 = 90u8 ; const ENCODED_LEN : usize = 32usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . vibration_x = buf . get_f32_le () ; __struct . vibration_y = buf . get_f32_le () ; __struct . vibration_z = buf . get_f32_le () ; __struct . clipping_0 = buf . get_u32_le () ; __struct . clipping_1 = buf . get_u32_le () ; __struct . clipping_2 = buf . get_u32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . vibration_x) ; __tmp . put_f32_le (self . vibration_y) ; __tmp . put_f32_le (self . vibration_z) ; __tmp . put_u32_le (self . clipping_0) ; __tmp . put_u32_le (self . clipping_1) ; __tmp . put_u32_le (self . clipping_2) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PARAM_REQUEST_LIST_DATA { pub target_system : u8 , pub target_component : u8 , } impl PARAM_REQUEST_LIST_DATA { pub const ENCODED_LEN : usize = 2usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for PARAM_REQUEST_LIST_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for PARAM_REQUEST_LIST_DATA { type Message = MavMessage ; const ID : u32 = 21u32 ; const NAME : & 'static str = "PARAM_REQUEST_LIST" ; const EXTRA_CRC : u8 = 159u8 ; const ENCODED_LEN : usize = 2usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct EXTENDED_SYS_STATE_DATA { pub vtol_state : MavVtolState , pub landed_state : MavLandedState , } impl EXTENDED_SYS_STATE_DATA { pub const ENCODED_LEN : usize = 2usize ; pub const DEFAULT : Self = Self { vtol_state : MavVtolState :: DEFAULT , landed_state : MavLandedState :: DEFAULT , } ; } impl Default for EXTENDED_SYS_STATE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for EXTENDED_SYS_STATE_DATA { type Message = MavMessage ; const ID : u32 = 245u32 ; const NAME : & 'static str = "EXTENDED_SYS_STATE" ; const EXTRA_CRC : u8 = 130u8 ; const ENCODED_LEN : usize = 2usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u8 () ; __struct . vtol_state = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavVtolState" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . landed_state = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavLandedState" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . vtol_state as u8) ; __tmp . put_u8 (self . landed_state as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PLAY_TUNE_DATA { pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub tune : [u8 ; 30] , } impl PLAY_TUNE_DATA { pub const ENCODED_LEN : usize = 32usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , tune : [0_u8 ; 30usize] , } ; } impl Default for PLAY_TUNE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for PLAY_TUNE_DATA { type Message = MavMessage ; const ID : u32 = 258u32 ; const NAME : & 'static str = "PLAY_TUNE" ; const EXTRA_CRC : u8 = 187u8 ; const ENCODED_LEN : usize = 32usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . tune { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . tune { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct VFR_HUD_DATA { pub airspeed : f32 , pub groundspeed : f32 , pub alt : f32 , pub climb : f32 , pub heading : i16 , pub throttle : u16 , } impl VFR_HUD_DATA { pub const ENCODED_LEN : usize = 20usize ; pub const DEFAULT : Self = Self { airspeed : 0.0_f32 , groundspeed : 0.0_f32 , alt : 0.0_f32 , climb : 0.0_f32 , heading : 0_i16 , throttle : 0_u16 , } ; } impl Default for VFR_HUD_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for VFR_HUD_DATA { type Message = MavMessage ; const ID : u32 = 74u32 ; const NAME : & 'static str = "VFR_HUD" ; const EXTRA_CRC : u8 = 20u8 ; const ENCODED_LEN : usize = 20usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . airspeed = buf . get_f32_le () ; __struct . groundspeed = buf . get_f32_le () ; __struct . alt = buf . get_f32_le () ; __struct . climb = buf . get_f32_le () ; __struct . heading = buf . get_i16_le () ; __struct . throttle = buf . get_u16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . airspeed) ; __tmp . put_f32_le (self . groundspeed) ; __tmp . put_f32_le (self . alt) ; __tmp . put_f32_le (self . climb) ; __tmp . put_i16_le (self . heading) ; __tmp . put_u16_le (self . throttle) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LOG_REQUEST_END_DATA { pub target_system : u8 , pub target_component : u8 , } impl LOG_REQUEST_END_DATA { pub const ENCODED_LEN : usize = 2usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for LOG_REQUEST_END_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for LOG_REQUEST_END_DATA { type Message = MavMessage ; const ID : u32 = 122u32 ; const NAME : & 'static str = "LOG_REQUEST_END" ; const EXTRA_CRC : u8 = 203u8 ; const ENCODED_LEN : usize = 2usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HIGHRES_IMU_DATA { pub time_usec : u64 , pub xacc : f32 , pub yacc : f32 , pub zacc : f32 , pub xgyro : f32 , pub ygyro : f32 , pub zgyro : f32 , pub xmag : f32 , pub ymag : f32 , pub zmag : f32 , pub abs_pressure : f32 , pub diff_pressure : f32 , pub pressure_alt : f32 , pub temperature : f32 , pub fields_updated : HighresImuUpdatedFlags , } impl HIGHRES_IMU_DATA { pub const ENCODED_LEN : usize = 62usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , xacc : 0.0_f32 , yacc : 0.0_f32 , zacc : 0.0_f32 , xgyro : 0.0_f32 , ygyro : 0.0_f32 , zgyro : 0.0_f32 , xmag : 0.0_f32 , ymag : 0.0_f32 , zmag : 0.0_f32 , abs_pressure : 0.0_f32 , diff_pressure : 0.0_f32 , pressure_alt : 0.0_f32 , temperature : 0.0_f32 , fields_updated : HighresImuUpdatedFlags :: DEFAULT , } ; } impl Default for HIGHRES_IMU_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for HIGHRES_IMU_DATA { type Message = MavMessage ; const ID : u32 = 105u32 ; const NAME : & 'static str = "HIGHRES_IMU" ; const EXTRA_CRC : u8 = 93u8 ; const ENCODED_LEN : usize = 62usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . xacc = buf . get_f32_le () ; __struct . yacc = buf . get_f32_le () ; __struct . zacc = buf . get_f32_le () ; __struct . xgyro = buf . get_f32_le () ; __struct . ygyro = buf . get_f32_le () ; __struct . zgyro = buf . get_f32_le () ; __struct . xmag = buf . get_f32_le () ; __struct . ymag = buf . get_f32_le () ; __struct . zmag = buf . get_f32_le () ; __struct . abs_pressure = buf . get_f32_le () ; __struct . diff_pressure = buf . get_f32_le () ; __struct . pressure_alt = buf . get_f32_le () ; __struct . temperature = buf . get_f32_le () ; let tmp = buf . get_u16_le () ; __struct . fields_updated = HighresImuUpdatedFlags :: from_bits (tmp & HighresImuUpdatedFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "HighresImuUpdatedFlags" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . xacc) ; __tmp . put_f32_le (self . yacc) ; __tmp . put_f32_le (self . zacc) ; __tmp . put_f32_le (self . xgyro) ; __tmp . put_f32_le (self . ygyro) ; __tmp . put_f32_le (self . zgyro) ; __tmp . put_f32_le (self . xmag) ; __tmp . put_f32_le (self . ymag) ; __tmp . put_f32_le (self . zmag) ; __tmp . put_f32_le (self . abs_pressure) ; __tmp . put_f32_le (self . diff_pressure) ; __tmp . put_f32_le (self . pressure_alt) ; __tmp . put_f32_le (self . temperature) ; __tmp . put_u16_le (self . fields_updated . bits ()) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GLOBAL_POSITION_INT_COV_DATA { pub time_usec : u64 , pub lat : i32 , pub lon : i32 , pub alt : i32 , pub relative_alt : i32 , pub vx : f32 , pub vy : f32 , pub vz : f32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub covariance : [f32 ; 36] , pub estimator_type : MavEstimatorType , } impl GLOBAL_POSITION_INT_COV_DATA { pub const ENCODED_LEN : usize = 181usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , lat : 0_i32 , lon : 0_i32 , alt : 0_i32 , relative_alt : 0_i32 , vx : 0.0_f32 , vy : 0.0_f32 , vz : 0.0_f32 , covariance : [0.0_f32 ; 36usize] , estimator_type : MavEstimatorType :: DEFAULT , } ; } impl Default for GLOBAL_POSITION_INT_COV_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GLOBAL_POSITION_INT_COV_DATA { type Message = MavMessage ; const ID : u32 = 63u32 ; const NAME : & 'static str = "GLOBAL_POSITION_INT_COV" ; const EXTRA_CRC : u8 = 119u8 ; const ENCODED_LEN : usize = 181usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . alt = buf . get_i32_le () ; __struct . relative_alt = buf . get_i32_le () ; __struct . vx = buf . get_f32_le () ; __struct . vy = buf . get_f32_le () ; __struct . vz = buf . get_f32_le () ; for v in & mut __struct . covariance { let val = buf . get_f32_le () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . estimator_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavEstimatorType" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_i32_le (self . alt) ; __tmp . put_i32_le (self . relative_alt) ; __tmp . put_f32_le (self . vx) ; __tmp . put_f32_le (self . vy) ; __tmp . put_f32_le (self . vz) ; for val in & self . covariance { __tmp . put_f32_le (* val) ; } __tmp . put_u8 (self . estimator_type as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct AIS_VESSEL_DATA { pub MMSI : u32 , pub lat : i32 , pub lon : i32 , pub COG : u16 , pub heading : u16 , pub velocity : u16 , pub dimension_bow : u16 , pub dimension_stern : u16 , pub tslc : u16 , pub flags : AisFlags , pub turn_rate : i8 , pub navigational_status : AisNavStatus , pub mavtype : AisType , pub dimension_port : u8 , pub dimension_starboard : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub callsign : [u8 ; 7] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub name : [u8 ; 20] , } impl AIS_VESSEL_DATA { pub const ENCODED_LEN : usize = 58usize ; pub const DEFAULT : Self = Self { MMSI : 0_u32 , lat : 0_i32 , lon : 0_i32 , COG : 0_u16 , heading : 0_u16 , velocity : 0_u16 , dimension_bow : 0_u16 , dimension_stern : 0_u16 , tslc : 0_u16 , flags : AisFlags :: DEFAULT , turn_rate : 0_i8 , navigational_status : AisNavStatus :: DEFAULT , mavtype : AisType :: DEFAULT , dimension_port : 0_u8 , dimension_starboard : 0_u8 , callsign : [0_u8 ; 7usize] , name : [0_u8 ; 20usize] , } ; } impl Default for AIS_VESSEL_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for AIS_VESSEL_DATA { type Message = MavMessage ; const ID : u32 = 301u32 ; const NAME : & 'static str = "AIS_VESSEL" ; const EXTRA_CRC : u8 = 243u8 ; const ENCODED_LEN : usize = 58usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . MMSI = buf . get_u32_le () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . COG = buf . get_u16_le () ; __struct . heading = buf . get_u16_le () ; __struct . velocity = buf . get_u16_le () ; __struct . dimension_bow = buf . get_u16_le () ; __struct . dimension_stern = buf . get_u16_le () ; __struct . tslc = buf . get_u16_le () ; let tmp = buf . get_u16_le () ; __struct . flags = AisFlags :: from_bits (tmp & AisFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "AisFlags" , value : tmp as u32 }) ? ; __struct . turn_rate = buf . get_i8 () ; let tmp = buf . get_u8 () ; __struct . navigational_status = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "AisNavStatus" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . mavtype = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "AisType" , value : tmp as u32 }) ? ; __struct . dimension_port = buf . get_u8 () ; __struct . dimension_starboard = buf . get_u8 () ; for v in & mut __struct . callsign { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . name { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . MMSI) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_u16_le (self . COG) ; __tmp . put_u16_le (self . heading) ; __tmp . put_u16_le (self . velocity) ; __tmp . put_u16_le (self . dimension_bow) ; __tmp . put_u16_le (self . dimension_stern) ; __tmp . put_u16_le (self . tslc) ; __tmp . put_u16_le (self . flags . bits ()) ; __tmp . put_i8 (self . turn_rate) ; __tmp . put_u8 (self . navigational_status as u8) ; __tmp . put_u8 (self . mavtype as u8) ; __tmp . put_u8 (self . dimension_port) ; __tmp . put_u8 (self . dimension_starboard) ; for val in & self . callsign { __tmp . put_u8 (* val) ; } for val in & self . name { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GPS_RTCM_DATA_DATA { pub flags : u8 , pub len : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub data : [u8 ; 180] , } impl GPS_RTCM_DATA_DATA { pub const ENCODED_LEN : usize = 182usize ; pub const DEFAULT : Self = Self { flags : 0_u8 , len : 0_u8 , data : [0_u8 ; 180usize] , } ; } impl Default for GPS_RTCM_DATA_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GPS_RTCM_DATA_DATA { type Message = MavMessage ; const ID : u32 = 233u32 ; const NAME : & 'static str = "GPS_RTCM_DATA" ; const EXTRA_CRC : u8 = 35u8 ; const ENCODED_LEN : usize = 182usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . flags = buf . get_u8 () ; __struct . len = buf . get_u8 () ; for v in & mut __struct . data { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . flags) ; __tmp . put_u8 (self . len) ; for val in & self . data { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct COMMAND_ACK_DATA { pub command : MavCmd , pub result : MavResult , } impl COMMAND_ACK_DATA { pub const ENCODED_LEN : usize = 3usize ; pub const DEFAULT : Self = Self { command : MavCmd :: DEFAULT , result : MavResult :: DEFAULT , } ; } impl Default for COMMAND_ACK_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for COMMAND_ACK_DATA { type Message = MavMessage ; const ID : u32 = 77u32 ; const NAME : & 'static str = "COMMAND_ACK" ; const EXTRA_CRC : u8 = 143u8 ; const ENCODED_LEN : usize = 3usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u16_le () ; __struct . command = FromPrimitive :: from_u16 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavCmd" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . result = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavResult" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . command as u16) ; __tmp . put_u8 (self . result as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CHANGE_OPERATOR_CONTROL_ACK_DATA { pub gcs_system_id : u8 , pub control_request : u8 , pub ack : u8 , } impl CHANGE_OPERATOR_CONTROL_ACK_DATA { pub const ENCODED_LEN : usize = 3usize ; pub const DEFAULT : Self = Self { gcs_system_id : 0_u8 , control_request : 0_u8 , ack : 0_u8 , } ; } impl Default for CHANGE_OPERATOR_CONTROL_ACK_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CHANGE_OPERATOR_CONTROL_ACK_DATA { type Message = MavMessage ; const ID : u32 = 6u32 ; const NAME : & 'static str = "CHANGE_OPERATOR_CONTROL_ACK" ; const EXTRA_CRC : u8 = 104u8 ; const ENCODED_LEN : usize = 3usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . gcs_system_id = buf . get_u8 () ; __struct . control_request = buf . get_u8 () ; __struct . ack = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . gcs_system_id) ; __tmp . put_u8 (self . control_request) ; __tmp . put_u8 (self . ack) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SCALED_IMU2_DATA { pub time_boot_ms : u32 , pub xacc : i16 , pub yacc : i16 , pub zacc : i16 , pub xgyro : i16 , pub ygyro : i16 , pub zgyro : i16 , pub xmag : i16 , pub ymag : i16 , pub zmag : i16 , } impl SCALED_IMU2_DATA { pub const ENCODED_LEN : usize = 22usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , xacc : 0_i16 , yacc : 0_i16 , zacc : 0_i16 , xgyro : 0_i16 , ygyro : 0_i16 , zgyro : 0_i16 , xmag : 0_i16 , ymag : 0_i16 , zmag : 0_i16 , } ; } impl Default for SCALED_IMU2_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SCALED_IMU2_DATA { type Message = MavMessage ; const ID : u32 = 116u32 ; const NAME : & 'static str = "SCALED_IMU2" ; const EXTRA_CRC : u8 = 76u8 ; const ENCODED_LEN : usize = 22usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . xacc = buf . get_i16_le () ; __struct . yacc = buf . get_i16_le () ; __struct . zacc = buf . get_i16_le () ; __struct . xgyro = buf . get_i16_le () ; __struct . ygyro = buf . get_i16_le () ; __struct . zgyro = buf . get_i16_le () ; __struct . xmag = buf . get_i16_le () ; __struct . ymag = buf . get_i16_le () ; __struct . zmag = buf . get_i16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_i16_le (self . xacc) ; __tmp . put_i16_le (self . yacc) ; __tmp . put_i16_le (self . zacc) ; __tmp . put_i16_le (self . xgyro) ; __tmp . put_i16_le (self . ygyro) ; __tmp . put_i16_le (self . zgyro) ; __tmp . put_i16_le (self . xmag) ; __tmp . put_i16_le (self . ymag) ; __tmp . put_i16_le (self . zmag) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GIMBAL_MANAGER_STATUS_DATA { pub time_boot_ms : u32 , pub flags : GimbalManagerFlags , pub gimbal_device_id : u8 , pub primary_control_sysid : u8 , pub primary_control_compid : u8 , pub secondary_control_sysid : u8 , pub secondary_control_compid : u8 , } impl GIMBAL_MANAGER_STATUS_DATA { pub const ENCODED_LEN : usize = 13usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , flags : GimbalManagerFlags :: DEFAULT , gimbal_device_id : 0_u8 , primary_control_sysid : 0_u8 , primary_control_compid : 0_u8 , secondary_control_sysid : 0_u8 , secondary_control_compid : 0_u8 , } ; } impl Default for GIMBAL_MANAGER_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GIMBAL_MANAGER_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 281u32 ; const NAME : & 'static str = "GIMBAL_MANAGER_STATUS" ; const EXTRA_CRC : u8 = 48u8 ; const ENCODED_LEN : usize = 13usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; let tmp = buf . get_u32_le () ; __struct . flags = FromPrimitive :: from_u32 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "GimbalManagerFlags" , value : tmp as u32 }) ? ; __struct . gimbal_device_id = buf . get_u8 () ; __struct . primary_control_sysid = buf . get_u8 () ; __struct . primary_control_compid = buf . get_u8 () ; __struct . secondary_control_sysid = buf . get_u8 () ; __struct . secondary_control_compid = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_u32_le (self . flags as u32) ; __tmp . put_u8 (self . gimbal_device_id) ; __tmp . put_u8 (self . primary_control_sysid) ; __tmp . put_u8 (self . primary_control_compid) ; __tmp . put_u8 (self . secondary_control_sysid) ; __tmp . put_u8 (self . secondary_control_compid) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PARAM_EXT_REQUEST_LIST_DATA { pub target_system : u8 , pub target_component : u8 , } impl PARAM_EXT_REQUEST_LIST_DATA { pub const ENCODED_LEN : usize = 2usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for PARAM_EXT_REQUEST_LIST_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for PARAM_EXT_REQUEST_LIST_DATA { type Message = MavMessage ; const ID : u32 = 321u32 ; const NAME : & 'static str = "PARAM_EXT_REQUEST_LIST" ; const EXTRA_CRC : u8 = 88u8 ; const ENCODED_LEN : usize = 2usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ODOMETRY_DATA { pub time_usec : u64 , pub x : f32 , pub y : f32 , pub z : f32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub q : [f32 ; 4] , pub vx : f32 , pub vy : f32 , pub vz : f32 , pub rollspeed : f32 , pub pitchspeed : f32 , pub yawspeed : f32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub pose_covariance : [f32 ; 21] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub velocity_covariance : [f32 ; 21] , pub frame_id : MavFrame , pub child_frame_id : MavFrame , } impl ODOMETRY_DATA { pub const ENCODED_LEN : usize = 230usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , x : 0.0_f32 , y : 0.0_f32 , z : 0.0_f32 , q : [0.0_f32 ; 4usize] , vx : 0.0_f32 , vy : 0.0_f32 , vz : 0.0_f32 , rollspeed : 0.0_f32 , pitchspeed : 0.0_f32 , yawspeed : 0.0_f32 , pose_covariance : [0.0_f32 ; 21usize] , velocity_covariance : [0.0_f32 ; 21usize] , frame_id : MavFrame :: DEFAULT , child_frame_id : MavFrame :: DEFAULT , } ; } impl Default for ODOMETRY_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ODOMETRY_DATA { type Message = MavMessage ; const ID : u32 = 331u32 ; const NAME : & 'static str = "ODOMETRY" ; const EXTRA_CRC : u8 = 91u8 ; const ENCODED_LEN : usize = 230usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . x = buf . get_f32_le () ; __struct . y = buf . get_f32_le () ; __struct . z = buf . get_f32_le () ; for v in & mut __struct . q { let val = buf . get_f32_le () ; * v = val ; } __struct . vx = buf . get_f32_le () ; __struct . vy = buf . get_f32_le () ; __struct . vz = buf . get_f32_le () ; __struct . rollspeed = buf . get_f32_le () ; __struct . pitchspeed = buf . get_f32_le () ; __struct . yawspeed = buf . get_f32_le () ; for v in & mut __struct . pose_covariance { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . velocity_covariance { let val = buf . get_f32_le () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . frame_id = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavFrame" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . child_frame_id = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavFrame" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; for val in & self . q { __tmp . put_f32_le (* val) ; } __tmp . put_f32_le (self . vx) ; __tmp . put_f32_le (self . vy) ; __tmp . put_f32_le (self . vz) ; __tmp . put_f32_le (self . rollspeed) ; __tmp . put_f32_le (self . pitchspeed) ; __tmp . put_f32_le (self . yawspeed) ; for val in & self . pose_covariance { __tmp . put_f32_le (* val) ; } for val in & self . velocity_covariance { __tmp . put_f32_le (* val) ; } __tmp . put_u8 (self . frame_id as u8) ; __tmp . put_u8 (self . child_frame_id as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct DEBUG_VECT_DATA { pub time_usec : u64 , pub x : f32 , pub y : f32 , pub z : f32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub name : [u8 ; 10] , } impl DEBUG_VECT_DATA { pub const ENCODED_LEN : usize = 30usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , x : 0.0_f32 , y : 0.0_f32 , z : 0.0_f32 , name : [0_u8 ; 10usize] , } ; } impl Default for DEBUG_VECT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for DEBUG_VECT_DATA { type Message = MavMessage ; const ID : u32 = 250u32 ; const NAME : & 'static str = "DEBUG_VECT" ; const EXTRA_CRC : u8 = 49u8 ; const ENCODED_LEN : usize = 30usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . x = buf . get_f32_le () ; __struct . y = buf . get_f32_le () ; __struct . z = buf . get_f32_le () ; for v in & mut __struct . name { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; for val in & self . name { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct DEBUG_DATA { pub time_boot_ms : u32 , pub value : f32 , pub ind : u8 , } impl DEBUG_DATA { pub const ENCODED_LEN : usize = 9usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , value : 0.0_f32 , ind : 0_u8 , } ; } impl Default for DEBUG_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for DEBUG_DATA { type Message = MavMessage ; const ID : u32 = 254u32 ; const NAME : & 'static str = "DEBUG" ; const EXTRA_CRC : u8 = 46u8 ; const ENCODED_LEN : usize = 9usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . value = buf . get_f32_le () ; __struct . ind = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . value) ; __tmp . put_u8 (self . ind) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct TRAJECTORY_REPRESENTATION_BEZIER_DATA { pub time_usec : u64 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub pos_x : [f32 ; 5] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub pos_y : [f32 ; 5] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub pos_z : [f32 ; 5] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub delta : [f32 ; 5] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub pos_yaw : [f32 ; 5] , pub valid_points : u8 , } impl TRAJECTORY_REPRESENTATION_BEZIER_DATA { pub const ENCODED_LEN : usize = 109usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , pos_x : [0.0_f32 ; 5usize] , pos_y : [0.0_f32 ; 5usize] , pos_z : [0.0_f32 ; 5usize] , delta : [0.0_f32 ; 5usize] , pos_yaw : [0.0_f32 ; 5usize] , valid_points : 0_u8 , } ; } impl Default for TRAJECTORY_REPRESENTATION_BEZIER_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for TRAJECTORY_REPRESENTATION_BEZIER_DATA { type Message = MavMessage ; const ID : u32 = 333u32 ; const NAME : & 'static str = "TRAJECTORY_REPRESENTATION_BEZIER" ; const EXTRA_CRC : u8 = 231u8 ; const ENCODED_LEN : usize = 109usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; for v in & mut __struct . pos_x { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . pos_y { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . pos_z { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . delta { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . pos_yaw { let val = buf . get_f32_le () ; * v = val ; } __struct . valid_points = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; for val in & self . pos_x { __tmp . put_f32_le (* val) ; } for val in & self . pos_y { __tmp . put_f32_le (* val) ; } for val in & self . pos_z { __tmp . put_f32_le (* val) ; } for val in & self . delta { __tmp . put_f32_le (* val) ; } for val in & self . pos_yaw { __tmp . put_f32_le (* val) ; } __tmp . put_u8 (self . valid_points) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct REQUEST_EVENT_DATA { pub first_sequence : u16 , pub last_sequence : u16 , pub target_system : u8 , pub target_component : u8 , } impl REQUEST_EVENT_DATA { pub const ENCODED_LEN : usize = 6usize ; pub const DEFAULT : Self = Self { first_sequence : 0_u16 , last_sequence : 0_u16 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for REQUEST_EVENT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for REQUEST_EVENT_DATA { type Message = MavMessage ; const ID : u32 = 412u32 ; const NAME : & 'static str = "REQUEST_EVENT" ; const EXTRA_CRC : u8 = 33u8 ; const ENCODED_LEN : usize = 6usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . first_sequence = buf . get_u16_le () ; __struct . last_sequence = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . first_sequence) ; __tmp . put_u16_le (self . last_sequence) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CAN_FILTER_MODIFY_DATA { # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub ids : [u16 ; 16] , pub target_system : u8 , pub target_component : u8 , pub bus : u8 , pub operation : CanFilterOp , pub num_ids : u8 , } impl CAN_FILTER_MODIFY_DATA { pub const ENCODED_LEN : usize = 37usize ; pub const DEFAULT : Self = Self { ids : [0_u16 ; 16usize] , target_system : 0_u8 , target_component : 0_u8 , bus : 0_u8 , operation : CanFilterOp :: DEFAULT , num_ids : 0_u8 , } ; } impl Default for CAN_FILTER_MODIFY_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CAN_FILTER_MODIFY_DATA { type Message = MavMessage ; const ID : u32 = 388u32 ; const NAME : & 'static str = "CAN_FILTER_MODIFY" ; const EXTRA_CRC : u8 = 8u8 ; const ENCODED_LEN : usize = 37usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; for v in & mut __struct . ids { let val = buf . get_u16_le () ; * v = val ; } __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . bus = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . operation = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "CanFilterOp" , value : tmp as u32 }) ? ; __struct . num_ids = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; for val in & self . ids { __tmp . put_u16_le (* val) ; } __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . bus) ; __tmp . put_u8 (self . operation as u8) ; __tmp . put_u8 (self . num_ids) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HYGROMETER_SENSOR_DATA { pub temperature : i16 , pub humidity : u16 , pub id : u8 , } impl HYGROMETER_SENSOR_DATA { pub const ENCODED_LEN : usize = 5usize ; pub const DEFAULT : Self = Self { temperature : 0_i16 , humidity : 0_u16 , id : 0_u8 , } ; } impl Default for HYGROMETER_SENSOR_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for HYGROMETER_SENSOR_DATA { type Message = MavMessage ; const ID : u32 = 12920u32 ; const NAME : & 'static str = "HYGROMETER_SENSOR" ; const EXTRA_CRC : u8 = 20u8 ; const ENCODED_LEN : usize = 5usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . temperature = buf . get_i16_le () ; __struct . humidity = buf . get_u16_le () ; __struct . id = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i16_le (self . temperature) ; __tmp . put_u16_le (self . humidity) ; __tmp . put_u8 (self . id) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct NAMED_VALUE_INT_DATA { pub time_boot_ms : u32 , pub value : i32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub name : [u8 ; 10] , } impl NAMED_VALUE_INT_DATA { pub const ENCODED_LEN : usize = 18usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , value : 0_i32 , name : [0_u8 ; 10usize] , } ; } impl Default for NAMED_VALUE_INT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for NAMED_VALUE_INT_DATA { type Message = MavMessage ; const ID : u32 = 252u32 ; const NAME : & 'static str = "NAMED_VALUE_INT" ; const EXTRA_CRC : u8 = 44u8 ; const ENCODED_LEN : usize = 18usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . value = buf . get_i32_le () ; for v in & mut __struct . name { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_i32_le (self . value) ; for val in & self . name { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct OPEN_DRONE_ID_MESSAGE_PACK_DATA { pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub id_or_mac : [u8 ; 20] , pub single_message_size : u8 , pub msg_pack_size : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub messages : [u8 ; 225] , } impl OPEN_DRONE_ID_MESSAGE_PACK_DATA { pub const ENCODED_LEN : usize = 249usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , id_or_mac : [0_u8 ; 20usize] , single_message_size : 0_u8 , msg_pack_size : 0_u8 , messages : [0_u8 ; 225usize] , } ; } impl Default for OPEN_DRONE_ID_MESSAGE_PACK_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for OPEN_DRONE_ID_MESSAGE_PACK_DATA { type Message = MavMessage ; const ID : u32 = 12915u32 ; const NAME : & 'static str = "OPEN_DRONE_ID_MESSAGE_PACK" ; const EXTRA_CRC : u8 = 94u8 ; const ENCODED_LEN : usize = 249usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . id_or_mac { let val = buf . get_u8 () ; * v = val ; } __struct . single_message_size = buf . get_u8 () ; __struct . msg_pack_size = buf . get_u8 () ; for v in & mut __struct . messages { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . id_or_mac { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . single_message_size) ; __tmp . put_u8 (self . msg_pack_size) ; for val in & self . messages { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CAMERA_TRIGGER_DATA { pub time_usec : u64 , pub seq : u32 , } impl CAMERA_TRIGGER_DATA { pub const ENCODED_LEN : usize = 12usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , seq : 0_u32 , } ; } impl Default for CAMERA_TRIGGER_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CAMERA_TRIGGER_DATA { type Message = MavMessage ; const ID : u32 = 112u32 ; const NAME : & 'static str = "CAMERA_TRIGGER" ; const EXTRA_CRC : u8 = 174u8 ; const ENCODED_LEN : usize = 12usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . seq = buf . get_u32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_u32_le (self . seq) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LOG_DATA_DATA { pub ofs : u32 , pub id : u16 , pub count : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub data : [u8 ; 90] , } impl LOG_DATA_DATA { pub const ENCODED_LEN : usize = 97usize ; pub const DEFAULT : Self = Self { ofs : 0_u32 , id : 0_u16 , count : 0_u8 , data : [0_u8 ; 90usize] , } ; } impl Default for LOG_DATA_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for LOG_DATA_DATA { type Message = MavMessage ; const ID : u32 = 120u32 ; const NAME : & 'static str = "LOG_DATA" ; const EXTRA_CRC : u8 = 134u8 ; const ENCODED_LEN : usize = 97usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . ofs = buf . get_u32_le () ; __struct . id = buf . get_u16_le () ; __struct . count = buf . get_u8 () ; for v in & mut __struct . data { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . ofs) ; __tmp . put_u16_le (self . id) ; __tmp . put_u8 (self . count) ; for val in & self . data { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SCALED_PRESSURE3_DATA { pub time_boot_ms : u32 , pub press_abs : f32 , pub press_diff : f32 , pub temperature : i16 , } impl SCALED_PRESSURE3_DATA { pub const ENCODED_LEN : usize = 14usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , press_abs : 0.0_f32 , press_diff : 0.0_f32 , temperature : 0_i16 , } ; } impl Default for SCALED_PRESSURE3_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SCALED_PRESSURE3_DATA { type Message = MavMessage ; const ID : u32 = 143u32 ; const NAME : & 'static str = "SCALED_PRESSURE3" ; const EXTRA_CRC : u8 = 131u8 ; const ENCODED_LEN : usize = 14usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . press_abs = buf . get_f32_le () ; __struct . press_diff = buf . get_f32_le () ; __struct . temperature = buf . get_i16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . press_abs) ; __tmp . put_f32_le (self . press_diff) ; __tmp . put_i16_le (self . temperature) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct OPEN_DRONE_ID_ARM_STATUS_DATA { pub status : MavOdidArmStatus , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub error : [u8 ; 50] , } impl OPEN_DRONE_ID_ARM_STATUS_DATA { pub const ENCODED_LEN : usize = 51usize ; pub const DEFAULT : Self = Self { status : MavOdidArmStatus :: DEFAULT , error : [0_u8 ; 50usize] , } ; } impl Default for OPEN_DRONE_ID_ARM_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for OPEN_DRONE_ID_ARM_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 12918u32 ; const NAME : & 'static str = "OPEN_DRONE_ID_ARM_STATUS" ; const EXTRA_CRC : u8 = 139u8 ; const ENCODED_LEN : usize = 51usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u8 () ; __struct . status = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidArmStatus" , value : tmp as u32 }) ? ; for v in & mut __struct . error { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . status as u8) ; for val in & self . error { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ATTITUDE_QUATERNION_DATA { pub time_boot_ms : u32 , pub q1 : f32 , pub q2 : f32 , pub q3 : f32 , pub q4 : f32 , pub rollspeed : f32 , pub pitchspeed : f32 , pub yawspeed : f32 , } impl ATTITUDE_QUATERNION_DATA { pub const ENCODED_LEN : usize = 32usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , q1 : 0.0_f32 , q2 : 0.0_f32 , q3 : 0.0_f32 , q4 : 0.0_f32 , rollspeed : 0.0_f32 , pitchspeed : 0.0_f32 , yawspeed : 0.0_f32 , } ; } impl Default for ATTITUDE_QUATERNION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ATTITUDE_QUATERNION_DATA { type Message = MavMessage ; const ID : u32 = 31u32 ; const NAME : & 'static str = "ATTITUDE_QUATERNION" ; const EXTRA_CRC : u8 = 246u8 ; const ENCODED_LEN : usize = 32usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . q1 = buf . get_f32_le () ; __struct . q2 = buf . get_f32_le () ; __struct . q3 = buf . get_f32_le () ; __struct . q4 = buf . get_f32_le () ; __struct . rollspeed = buf . get_f32_le () ; __struct . pitchspeed = buf . get_f32_le () ; __struct . yawspeed = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . q1) ; __tmp . put_f32_le (self . q2) ; __tmp . put_f32_le (self . q3) ; __tmp . put_f32_le (self . q4) ; __tmp . put_f32_le (self . rollspeed) ; __tmp . put_f32_le (self . pitchspeed) ; __tmp . put_f32_le (self . yawspeed) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CHANGE_OPERATOR_CONTROL_DATA { pub target_system : u8 , pub control_request : u8 , pub version : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub passkey : [u8 ; 25] , } impl CHANGE_OPERATOR_CONTROL_DATA { pub const ENCODED_LEN : usize = 28usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , control_request : 0_u8 , version : 0_u8 , passkey : [0_u8 ; 25usize] , } ; } impl Default for CHANGE_OPERATOR_CONTROL_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CHANGE_OPERATOR_CONTROL_DATA { type Message = MavMessage ; const ID : u32 = 5u32 ; const NAME : & 'static str = "CHANGE_OPERATOR_CONTROL" ; const EXTRA_CRC : u8 = 217u8 ; const ENCODED_LEN : usize = 28usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . control_request = buf . get_u8 () ; __struct . version = buf . get_u8 () ; for v in & mut __struct . passkey { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . control_request) ; __tmp . put_u8 (self . version) ; for val in & self . passkey { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SETUP_SIGNING_DATA { pub initial_timestamp : u64 , pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub secret_key : [u8 ; 32] , } impl SETUP_SIGNING_DATA { pub const ENCODED_LEN : usize = 42usize ; pub const DEFAULT : Self = Self { initial_timestamp : 0_u64 , target_system : 0_u8 , target_component : 0_u8 , secret_key : [0_u8 ; 32usize] , } ; } impl Default for SETUP_SIGNING_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SETUP_SIGNING_DATA { type Message = MavMessage ; const ID : u32 = 256u32 ; const NAME : & 'static str = "SETUP_SIGNING" ; const EXTRA_CRC : u8 = 71u8 ; const ENCODED_LEN : usize = 42usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . initial_timestamp = buf . get_u64_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . secret_key { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . initial_timestamp) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . secret_key { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GIMBAL_DEVICE_INFORMATION_DATA { pub uid : u64 , pub time_boot_ms : u32 , pub firmware_version : u32 , pub hardware_version : u32 , pub roll_min : f32 , pub roll_max : f32 , pub pitch_min : f32 , pub pitch_max : f32 , pub yaw_min : f32 , pub yaw_max : f32 , pub cap_flags : GimbalDeviceCapFlags , pub custom_cap_flags : u16 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub vendor_name : [u8 ; 32] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub model_name : [u8 ; 32] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub custom_name : [u8 ; 32] , } impl GIMBAL_DEVICE_INFORMATION_DATA { pub const ENCODED_LEN : usize = 144usize ; pub const DEFAULT : Self = Self { uid : 0_u64 , time_boot_ms : 0_u32 , firmware_version : 0_u32 , hardware_version : 0_u32 , roll_min : 0.0_f32 , roll_max : 0.0_f32 , pitch_min : 0.0_f32 , pitch_max : 0.0_f32 , yaw_min : 0.0_f32 , yaw_max : 0.0_f32 , cap_flags : GimbalDeviceCapFlags :: DEFAULT , custom_cap_flags : 0_u16 , vendor_name : [0_u8 ; 32usize] , model_name : [0_u8 ; 32usize] , custom_name : [0_u8 ; 32usize] , } ; } impl Default for GIMBAL_DEVICE_INFORMATION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GIMBAL_DEVICE_INFORMATION_DATA { type Message = MavMessage ; const ID : u32 = 283u32 ; const NAME : & 'static str = "GIMBAL_DEVICE_INFORMATION" ; const EXTRA_CRC : u8 = 74u8 ; const ENCODED_LEN : usize = 144usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . uid = buf . get_u64_le () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . firmware_version = buf . get_u32_le () ; __struct . hardware_version = buf . get_u32_le () ; __struct . roll_min = buf . get_f32_le () ; __struct . roll_max = buf . get_f32_le () ; __struct . pitch_min = buf . get_f32_le () ; __struct . pitch_max = buf . get_f32_le () ; __struct . yaw_min = buf . get_f32_le () ; __struct . yaw_max = buf . get_f32_le () ; let tmp = buf . get_u16_le () ; __struct . cap_flags = GimbalDeviceCapFlags :: from_bits (tmp & GimbalDeviceCapFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "GimbalDeviceCapFlags" , value : tmp as u32 }) ? ; __struct . custom_cap_flags = buf . get_u16_le () ; for v in & mut __struct . vendor_name { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . model_name { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . custom_name { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . uid) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_u32_le (self . firmware_version) ; __tmp . put_u32_le (self . hardware_version) ; __tmp . put_f32_le (self . roll_min) ; __tmp . put_f32_le (self . roll_max) ; __tmp . put_f32_le (self . pitch_min) ; __tmp . put_f32_le (self . pitch_max) ; __tmp . put_f32_le (self . yaw_min) ; __tmp . put_f32_le (self . yaw_max) ; __tmp . put_u16_le (self . cap_flags . bits ()) ; __tmp . put_u16_le (self . custom_cap_flags) ; for val in & self . vendor_name { __tmp . put_u8 (* val) ; } for val in & self . model_name { __tmp . put_u8 (* val) ; } for val in & self . custom_name { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct WINCH_STATUS_DATA { pub time_usec : u64 , pub line_length : f32 , pub speed : f32 , pub tension : f32 , pub voltage : f32 , pub current : f32 , pub status : MavWinchStatusFlag , pub temperature : i16 , } impl WINCH_STATUS_DATA { pub const ENCODED_LEN : usize = 34usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , line_length : 0.0_f32 , speed : 0.0_f32 , tension : 0.0_f32 , voltage : 0.0_f32 , current : 0.0_f32 , status : MavWinchStatusFlag :: DEFAULT , temperature : 0_i16 , } ; } impl Default for WINCH_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for WINCH_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 9005u32 ; const NAME : & 'static str = "WINCH_STATUS" ; const EXTRA_CRC : u8 = 117u8 ; const ENCODED_LEN : usize = 34usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . line_length = buf . get_f32_le () ; __struct . speed = buf . get_f32_le () ; __struct . tension = buf . get_f32_le () ; __struct . voltage = buf . get_f32_le () ; __struct . current = buf . get_f32_le () ; let tmp = buf . get_u32_le () ; __struct . status = MavWinchStatusFlag :: from_bits (tmp & MavWinchStatusFlag :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "MavWinchStatusFlag" , value : tmp as u32 }) ? ; __struct . temperature = buf . get_i16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . line_length) ; __tmp . put_f32_le (self . speed) ; __tmp . put_f32_le (self . tension) ; __tmp . put_f32_le (self . voltage) ; __tmp . put_f32_le (self . current) ; __tmp . put_u32_le (self . status . bits ()) ; __tmp . put_i16_le (self . temperature) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SIM_STATE_DATA { pub q1 : f32 , pub q2 : f32 , pub q3 : f32 , pub q4 : f32 , pub roll : f32 , pub pitch : f32 , pub yaw : f32 , pub xacc : f32 , pub yacc : f32 , pub zacc : f32 , pub xgyro : f32 , pub ygyro : f32 , pub zgyro : f32 , pub lat : f32 , pub lon : f32 , pub alt : f32 , pub std_dev_horz : f32 , pub std_dev_vert : f32 , pub vn : f32 , pub ve : f32 , pub vd : f32 , } impl SIM_STATE_DATA { pub const ENCODED_LEN : usize = 84usize ; pub const DEFAULT : Self = Self { q1 : 0.0_f32 , q2 : 0.0_f32 , q3 : 0.0_f32 , q4 : 0.0_f32 , roll : 0.0_f32 , pitch : 0.0_f32 , yaw : 0.0_f32 , xacc : 0.0_f32 , yacc : 0.0_f32 , zacc : 0.0_f32 , xgyro : 0.0_f32 , ygyro : 0.0_f32 , zgyro : 0.0_f32 , lat : 0.0_f32 , lon : 0.0_f32 , alt : 0.0_f32 , std_dev_horz : 0.0_f32 , std_dev_vert : 0.0_f32 , vn : 0.0_f32 , ve : 0.0_f32 , vd : 0.0_f32 , } ; } impl Default for SIM_STATE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SIM_STATE_DATA { type Message = MavMessage ; const ID : u32 = 108u32 ; const NAME : & 'static str = "SIM_STATE" ; const EXTRA_CRC : u8 = 32u8 ; const ENCODED_LEN : usize = 84usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . q1 = buf . get_f32_le () ; __struct . q2 = buf . get_f32_le () ; __struct . q3 = buf . get_f32_le () ; __struct . q4 = buf . get_f32_le () ; __struct . roll = buf . get_f32_le () ; __struct . pitch = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; __struct . xacc = buf . get_f32_le () ; __struct . yacc = buf . get_f32_le () ; __struct . zacc = buf . get_f32_le () ; __struct . xgyro = buf . get_f32_le () ; __struct . ygyro = buf . get_f32_le () ; __struct . zgyro = buf . get_f32_le () ; __struct . lat = buf . get_f32_le () ; __struct . lon = buf . get_f32_le () ; __struct . alt = buf . get_f32_le () ; __struct . std_dev_horz = buf . get_f32_le () ; __struct . std_dev_vert = buf . get_f32_le () ; __struct . vn = buf . get_f32_le () ; __struct . ve = buf . get_f32_le () ; __struct . vd = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . q1) ; __tmp . put_f32_le (self . q2) ; __tmp . put_f32_le (self . q3) ; __tmp . put_f32_le (self . q4) ; __tmp . put_f32_le (self . roll) ; __tmp . put_f32_le (self . pitch) ; __tmp . put_f32_le (self . yaw) ; __tmp . put_f32_le (self . xacc) ; __tmp . put_f32_le (self . yacc) ; __tmp . put_f32_le (self . zacc) ; __tmp . put_f32_le (self . xgyro) ; __tmp . put_f32_le (self . ygyro) ; __tmp . put_f32_le (self . zgyro) ; __tmp . put_f32_le (self . lat) ; __tmp . put_f32_le (self . lon) ; __tmp . put_f32_le (self . alt) ; __tmp . put_f32_le (self . std_dev_horz) ; __tmp . put_f32_le (self . std_dev_vert) ; __tmp . put_f32_le (self . vn) ; __tmp . put_f32_le (self . ve) ; __tmp . put_f32_le (self . vd) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GPS_RTK_DATA { pub time_last_baseline_ms : u32 , pub tow : u32 , pub baseline_a_mm : i32 , pub baseline_b_mm : i32 , pub baseline_c_mm : i32 , pub accuracy : u32 , pub iar_num_hypotheses : i32 , pub wn : u16 , pub rtk_receiver_id : u8 , pub rtk_health : u8 , pub rtk_rate : u8 , pub nsats : u8 , pub baseline_coords_type : RtkBaselineCoordinateSystem , } impl GPS_RTK_DATA { pub const ENCODED_LEN : usize = 35usize ; pub const DEFAULT : Self = Self { time_last_baseline_ms : 0_u32 , tow : 0_u32 , baseline_a_mm : 0_i32 , baseline_b_mm : 0_i32 , baseline_c_mm : 0_i32 , accuracy : 0_u32 , iar_num_hypotheses : 0_i32 , wn : 0_u16 , rtk_receiver_id : 0_u8 , rtk_health : 0_u8 , rtk_rate : 0_u8 , nsats : 0_u8 , baseline_coords_type : RtkBaselineCoordinateSystem :: DEFAULT , } ; } impl Default for GPS_RTK_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GPS_RTK_DATA { type Message = MavMessage ; const ID : u32 = 127u32 ; const NAME : & 'static str = "GPS_RTK" ; const EXTRA_CRC : u8 = 25u8 ; const ENCODED_LEN : usize = 35usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_last_baseline_ms = buf . get_u32_le () ; __struct . tow = buf . get_u32_le () ; __struct . baseline_a_mm = buf . get_i32_le () ; __struct . baseline_b_mm = buf . get_i32_le () ; __struct . baseline_c_mm = buf . get_i32_le () ; __struct . accuracy = buf . get_u32_le () ; __struct . iar_num_hypotheses = buf . get_i32_le () ; __struct . wn = buf . get_u16_le () ; __struct . rtk_receiver_id = buf . get_u8 () ; __struct . rtk_health = buf . get_u8 () ; __struct . rtk_rate = buf . get_u8 () ; __struct . nsats = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . baseline_coords_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "RtkBaselineCoordinateSystem" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_last_baseline_ms) ; __tmp . put_u32_le (self . tow) ; __tmp . put_i32_le (self . baseline_a_mm) ; __tmp . put_i32_le (self . baseline_b_mm) ; __tmp . put_i32_le (self . baseline_c_mm) ; __tmp . put_u32_le (self . accuracy) ; __tmp . put_i32_le (self . iar_num_hypotheses) ; __tmp . put_u16_le (self . wn) ; __tmp . put_u8 (self . rtk_receiver_id) ; __tmp . put_u8 (self . rtk_health) ; __tmp . put_u8 (self . rtk_rate) ; __tmp . put_u8 (self . nsats) ; __tmp . put_u8 (self . baseline_coords_type as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GPS2_RTK_DATA { pub time_last_baseline_ms : u32 , pub tow : u32 , pub baseline_a_mm : i32 , pub baseline_b_mm : i32 , pub baseline_c_mm : i32 , pub accuracy : u32 , pub iar_num_hypotheses : i32 , pub wn : u16 , pub rtk_receiver_id : u8 , pub rtk_health : u8 , pub rtk_rate : u8 , pub nsats : u8 , pub baseline_coords_type : RtkBaselineCoordinateSystem , } impl GPS2_RTK_DATA { pub const ENCODED_LEN : usize = 35usize ; pub const DEFAULT : Self = Self { time_last_baseline_ms : 0_u32 , tow : 0_u32 , baseline_a_mm : 0_i32 , baseline_b_mm : 0_i32 , baseline_c_mm : 0_i32 , accuracy : 0_u32 , iar_num_hypotheses : 0_i32 , wn : 0_u16 , rtk_receiver_id : 0_u8 , rtk_health : 0_u8 , rtk_rate : 0_u8 , nsats : 0_u8 , baseline_coords_type : RtkBaselineCoordinateSystem :: DEFAULT , } ; } impl Default for GPS2_RTK_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GPS2_RTK_DATA { type Message = MavMessage ; const ID : u32 = 128u32 ; const NAME : & 'static str = "GPS2_RTK" ; const EXTRA_CRC : u8 = 226u8 ; const ENCODED_LEN : usize = 35usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_last_baseline_ms = buf . get_u32_le () ; __struct . tow = buf . get_u32_le () ; __struct . baseline_a_mm = buf . get_i32_le () ; __struct . baseline_b_mm = buf . get_i32_le () ; __struct . baseline_c_mm = buf . get_i32_le () ; __struct . accuracy = buf . get_u32_le () ; __struct . iar_num_hypotheses = buf . get_i32_le () ; __struct . wn = buf . get_u16_le () ; __struct . rtk_receiver_id = buf . get_u8 () ; __struct . rtk_health = buf . get_u8 () ; __struct . rtk_rate = buf . get_u8 () ; __struct . nsats = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . baseline_coords_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "RtkBaselineCoordinateSystem" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_last_baseline_ms) ; __tmp . put_u32_le (self . tow) ; __tmp . put_i32_le (self . baseline_a_mm) ; __tmp . put_i32_le (self . baseline_b_mm) ; __tmp . put_i32_le (self . baseline_c_mm) ; __tmp . put_u32_le (self . accuracy) ; __tmp . put_i32_le (self . iar_num_hypotheses) ; __tmp . put_u16_le (self . wn) ; __tmp . put_u8 (self . rtk_receiver_id) ; __tmp . put_u8 (self . rtk_health) ; __tmp . put_u8 (self . rtk_rate) ; __tmp . put_u8 (self . nsats) ; __tmp . put_u8 (self . baseline_coords_type as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HIGH_LATENCY_DATA { pub custom_mode : u32 , pub latitude : i32 , pub longitude : i32 , pub roll : i16 , pub pitch : i16 , pub heading : u16 , pub heading_sp : i16 , pub altitude_amsl : i16 , pub altitude_sp : i16 , pub wp_distance : u16 , pub base_mode : MavModeFlag , pub landed_state : MavLandedState , pub throttle : i8 , pub airspeed : u8 , pub airspeed_sp : u8 , pub groundspeed : u8 , pub climb_rate : i8 , pub gps_nsat : u8 , pub gps_fix_type : GpsFixType , pub battery_remaining : u8 , pub temperature : i8 , pub temperature_air : i8 , pub failsafe : u8 , pub wp_num : u8 , } impl HIGH_LATENCY_DATA { pub const ENCODED_LEN : usize = 40usize ; pub const DEFAULT : Self = Self { custom_mode : 0_u32 , latitude : 0_i32 , longitude : 0_i32 , roll : 0_i16 , pitch : 0_i16 , heading : 0_u16 , heading_sp : 0_i16 , altitude_amsl : 0_i16 , altitude_sp : 0_i16 , wp_distance : 0_u16 , base_mode : MavModeFlag :: DEFAULT , landed_state : MavLandedState :: DEFAULT , throttle : 0_i8 , airspeed : 0_u8 , airspeed_sp : 0_u8 , groundspeed : 0_u8 , climb_rate : 0_i8 , gps_nsat : 0_u8 , gps_fix_type : GpsFixType :: DEFAULT , battery_remaining : 0_u8 , temperature : 0_i8 , temperature_air : 0_i8 , failsafe : 0_u8 , wp_num : 0_u8 , } ; } impl Default for HIGH_LATENCY_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for HIGH_LATENCY_DATA { type Message = MavMessage ; const ID : u32 = 234u32 ; const NAME : & 'static str = "HIGH_LATENCY" ; const EXTRA_CRC : u8 = 150u8 ; const ENCODED_LEN : usize = 40usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . custom_mode = buf . get_u32_le () ; __struct . latitude = buf . get_i32_le () ; __struct . longitude = buf . get_i32_le () ; __struct . roll = buf . get_i16_le () ; __struct . pitch = buf . get_i16_le () ; __struct . heading = buf . get_u16_le () ; __struct . heading_sp = buf . get_i16_le () ; __struct . altitude_amsl = buf . get_i16_le () ; __struct . altitude_sp = buf . get_i16_le () ; __struct . wp_distance = buf . get_u16_le () ; let tmp = buf . get_u8 () ; __struct . base_mode = MavModeFlag :: from_bits (tmp & MavModeFlag :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "MavModeFlag" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . landed_state = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavLandedState" , value : tmp as u32 }) ? ; __struct . throttle = buf . get_i8 () ; __struct . airspeed = buf . get_u8 () ; __struct . airspeed_sp = buf . get_u8 () ; __struct . groundspeed = buf . get_u8 () ; __struct . climb_rate = buf . get_i8 () ; __struct . gps_nsat = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . gps_fix_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "GpsFixType" , value : tmp as u32 }) ? ; __struct . battery_remaining = buf . get_u8 () ; __struct . temperature = buf . get_i8 () ; __struct . temperature_air = buf . get_i8 () ; __struct . failsafe = buf . get_u8 () ; __struct . wp_num = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . custom_mode) ; __tmp . put_i32_le (self . latitude) ; __tmp . put_i32_le (self . longitude) ; __tmp . put_i16_le (self . roll) ; __tmp . put_i16_le (self . pitch) ; __tmp . put_u16_le (self . heading) ; __tmp . put_i16_le (self . heading_sp) ; __tmp . put_i16_le (self . altitude_amsl) ; __tmp . put_i16_le (self . altitude_sp) ; __tmp . put_u16_le (self . wp_distance) ; __tmp . put_u8 (self . base_mode . bits ()) ; __tmp . put_u8 (self . landed_state as u8) ; __tmp . put_i8 (self . throttle) ; __tmp . put_u8 (self . airspeed) ; __tmp . put_u8 (self . airspeed_sp) ; __tmp . put_u8 (self . groundspeed) ; __tmp . put_i8 (self . climb_rate) ; __tmp . put_u8 (self . gps_nsat) ; __tmp . put_u8 (self . gps_fix_type as u8) ; __tmp . put_u8 (self . battery_remaining) ; __tmp . put_i8 (self . temperature) ; __tmp . put_i8 (self . temperature_air) ; __tmp . put_u8 (self . failsafe) ; __tmp . put_u8 (self . wp_num) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct TERRAIN_REPORT_DATA { pub lat : i32 , pub lon : i32 , pub terrain_height : f32 , pub current_height : f32 , pub spacing : u16 , pub pending : u16 , pub loaded : u16 , } impl TERRAIN_REPORT_DATA { pub const ENCODED_LEN : usize = 22usize ; pub const DEFAULT : Self = Self { lat : 0_i32 , lon : 0_i32 , terrain_height : 0.0_f32 , current_height : 0.0_f32 , spacing : 0_u16 , pending : 0_u16 , loaded : 0_u16 , } ; } impl Default for TERRAIN_REPORT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for TERRAIN_REPORT_DATA { type Message = MavMessage ; const ID : u32 = 136u32 ; const NAME : & 'static str = "TERRAIN_REPORT" ; const EXTRA_CRC : u8 = 1u8 ; const ENCODED_LEN : usize = 22usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . terrain_height = buf . get_f32_le () ; __struct . current_height = buf . get_f32_le () ; __struct . spacing = buf . get_u16_le () ; __struct . pending = buf . get_u16_le () ; __struct . loaded = buf . get_u16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_f32_le (self . terrain_height) ; __tmp . put_f32_le (self . current_height) ; __tmp . put_u16_le (self . spacing) ; __tmp . put_u16_le (self . pending) ; __tmp . put_u16_le (self . loaded) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HIL_STATE_DATA { pub time_usec : u64 , pub roll : f32 , pub pitch : f32 , pub yaw : f32 , pub rollspeed : f32 , pub pitchspeed : f32 , pub yawspeed : f32 , pub lat : i32 , pub lon : i32 , pub alt : i32 , pub vx : i16 , pub vy : i16 , pub vz : i16 , pub xacc : i16 , pub yacc : i16 , pub zacc : i16 , } impl HIL_STATE_DATA { pub const ENCODED_LEN : usize = 56usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , roll : 0.0_f32 , pitch : 0.0_f32 , yaw : 0.0_f32 , rollspeed : 0.0_f32 , pitchspeed : 0.0_f32 , yawspeed : 0.0_f32 , lat : 0_i32 , lon : 0_i32 , alt : 0_i32 , vx : 0_i16 , vy : 0_i16 , vz : 0_i16 , xacc : 0_i16 , yacc : 0_i16 , zacc : 0_i16 , } ; } impl Default for HIL_STATE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for HIL_STATE_DATA { type Message = MavMessage ; const ID : u32 = 90u32 ; const NAME : & 'static str = "HIL_STATE" ; const EXTRA_CRC : u8 = 183u8 ; const ENCODED_LEN : usize = 56usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . roll = buf . get_f32_le () ; __struct . pitch = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; __struct . rollspeed = buf . get_f32_le () ; __struct . pitchspeed = buf . get_f32_le () ; __struct . yawspeed = buf . get_f32_le () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . alt = buf . get_i32_le () ; __struct . vx = buf . get_i16_le () ; __struct . vy = buf . get_i16_le () ; __struct . vz = buf . get_i16_le () ; __struct . xacc = buf . get_i16_le () ; __struct . yacc = buf . get_i16_le () ; __struct . zacc = buf . get_i16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . roll) ; __tmp . put_f32_le (self . pitch) ; __tmp . put_f32_le (self . yaw) ; __tmp . put_f32_le (self . rollspeed) ; __tmp . put_f32_le (self . pitchspeed) ; __tmp . put_f32_le (self . yawspeed) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_i32_le (self . alt) ; __tmp . put_i16_le (self . vx) ; __tmp . put_i16_le (self . vy) ; __tmp . put_i16_le (self . vz) ; __tmp . put_i16_le (self . xacc) ; __tmp . put_i16_le (self . yacc) ; __tmp . put_i16_le (self . zacc) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MEMORY_VECT_DATA { pub address : u16 , pub ver : u8 , pub mavtype : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub value : [i8 ; 32] , } impl MEMORY_VECT_DATA { pub const ENCODED_LEN : usize = 36usize ; pub const DEFAULT : Self = Self { address : 0_u16 , ver : 0_u8 , mavtype : 0_u8 , value : [0_i8 ; 32usize] , } ; } impl Default for MEMORY_VECT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MEMORY_VECT_DATA { type Message = MavMessage ; const ID : u32 = 249u32 ; const NAME : & 'static str = "MEMORY_VECT" ; const EXTRA_CRC : u8 = 204u8 ; const ENCODED_LEN : usize = 36usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . address = buf . get_u16_le () ; __struct . ver = buf . get_u8 () ; __struct . mavtype = buf . get_u8 () ; for v in & mut __struct . value { let val = buf . get_i8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . address) ; __tmp . put_u8 (self . ver) ; __tmp . put_u8 (self . mavtype) ; for val in & self . value { __tmp . put_i8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MOUNT_ORIENTATION_DATA { pub time_boot_ms : u32 , pub roll : f32 , pub pitch : f32 , pub yaw : f32 , } impl MOUNT_ORIENTATION_DATA { pub const ENCODED_LEN : usize = 16usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , roll : 0.0_f32 , pitch : 0.0_f32 , yaw : 0.0_f32 , } ; } impl Default for MOUNT_ORIENTATION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MOUNT_ORIENTATION_DATA { type Message = MavMessage ; const ID : u32 = 265u32 ; const NAME : & 'static str = "MOUNT_ORIENTATION" ; const EXTRA_CRC : u8 = 26u8 ; const ENCODED_LEN : usize = 16usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . roll = buf . get_f32_le () ; __struct . pitch = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . roll) ; __tmp . put_f32_le (self . pitch) ; __tmp . put_f32_le (self . yaw) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CAMERA_TRACKING_GEO_STATUS_DATA { pub lat : i32 , pub lon : i32 , pub alt : f32 , pub h_acc : f32 , pub v_acc : f32 , pub vel_n : f32 , pub vel_e : f32 , pub vel_d : f32 , pub vel_acc : f32 , pub dist : f32 , pub hdg : f32 , pub hdg_acc : f32 , pub tracking_status : CameraTrackingStatusFlags , } impl CAMERA_TRACKING_GEO_STATUS_DATA { pub const ENCODED_LEN : usize = 49usize ; pub const DEFAULT : Self = Self { lat : 0_i32 , lon : 0_i32 , alt : 0.0_f32 , h_acc : 0.0_f32 , v_acc : 0.0_f32 , vel_n : 0.0_f32 , vel_e : 0.0_f32 , vel_d : 0.0_f32 , vel_acc : 0.0_f32 , dist : 0.0_f32 , hdg : 0.0_f32 , hdg_acc : 0.0_f32 , tracking_status : CameraTrackingStatusFlags :: DEFAULT , } ; } impl Default for CAMERA_TRACKING_GEO_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CAMERA_TRACKING_GEO_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 276u32 ; const NAME : & 'static str = "CAMERA_TRACKING_GEO_STATUS" ; const EXTRA_CRC : u8 = 18u8 ; const ENCODED_LEN : usize = 49usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . alt = buf . get_f32_le () ; __struct . h_acc = buf . get_f32_le () ; __struct . v_acc = buf . get_f32_le () ; __struct . vel_n = buf . get_f32_le () ; __struct . vel_e = buf . get_f32_le () ; __struct . vel_d = buf . get_f32_le () ; __struct . vel_acc = buf . get_f32_le () ; __struct . dist = buf . get_f32_le () ; __struct . hdg = buf . get_f32_le () ; __struct . hdg_acc = buf . get_f32_le () ; let tmp = buf . get_u8 () ; __struct . tracking_status = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "CameraTrackingStatusFlags" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_f32_le (self . alt) ; __tmp . put_f32_le (self . h_acc) ; __tmp . put_f32_le (self . v_acc) ; __tmp . put_f32_le (self . vel_n) ; __tmp . put_f32_le (self . vel_e) ; __tmp . put_f32_le (self . vel_d) ; __tmp . put_f32_le (self . vel_acc) ; __tmp . put_f32_le (self . dist) ; __tmp . put_f32_le (self . hdg) ; __tmp . put_f32_le (self . hdg_acc) ; __tmp . put_u8 (self . tracking_status as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LOGGING_ACK_DATA { pub sequence : u16 , pub target_system : u8 , pub target_component : u8 , } impl LOGGING_ACK_DATA { pub const ENCODED_LEN : usize = 4usize ; pub const DEFAULT : Self = Self { sequence : 0_u16 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for LOGGING_ACK_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for LOGGING_ACK_DATA { type Message = MavMessage ; const ID : u32 = 268u32 ; const NAME : & 'static str = "LOGGING_ACK" ; const EXTRA_CRC : u8 = 14u8 ; const ENCODED_LEN : usize = 4usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . sequence = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . sequence) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct UAVCAN_NODE_STATUS_DATA { pub time_usec : u64 , pub uptime_sec : u32 , pub vendor_specific_status_code : u16 , pub health : UavcanNodeHealth , pub mode : UavcanNodeMode , pub sub_mode : u8 , } impl UAVCAN_NODE_STATUS_DATA { pub const ENCODED_LEN : usize = 17usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , uptime_sec : 0_u32 , vendor_specific_status_code : 0_u16 , health : UavcanNodeHealth :: DEFAULT , mode : UavcanNodeMode :: DEFAULT , sub_mode : 0_u8 , } ; } impl Default for UAVCAN_NODE_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for UAVCAN_NODE_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 310u32 ; const NAME : & 'static str = "UAVCAN_NODE_STATUS" ; const EXTRA_CRC : u8 = 28u8 ; const ENCODED_LEN : usize = 17usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . uptime_sec = buf . get_u32_le () ; __struct . vendor_specific_status_code = buf . get_u16_le () ; let tmp = buf . get_u8 () ; __struct . health = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "UavcanNodeHealth" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . mode = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "UavcanNodeMode" , value : tmp as u32 }) ? ; __struct . sub_mode = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_u32_le (self . uptime_sec) ; __tmp . put_u16_le (self . vendor_specific_status_code) ; __tmp . put_u8 (self . health as u8) ; __tmp . put_u8 (self . mode as u8) ; __tmp . put_u8 (self . sub_mode) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SCALED_PRESSURE2_DATA { pub time_boot_ms : u32 , pub press_abs : f32 , pub press_diff : f32 , pub temperature : i16 , } impl SCALED_PRESSURE2_DATA { pub const ENCODED_LEN : usize = 14usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , press_abs : 0.0_f32 , press_diff : 0.0_f32 , temperature : 0_i16 , } ; } impl Default for SCALED_PRESSURE2_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SCALED_PRESSURE2_DATA { type Message = MavMessage ; const ID : u32 = 137u32 ; const NAME : & 'static str = "SCALED_PRESSURE2" ; const EXTRA_CRC : u8 = 195u8 ; const ENCODED_LEN : usize = 14usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . press_abs = buf . get_f32_le () ; __struct . press_diff = buf . get_f32_le () ; __struct . temperature = buf . get_i16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . press_abs) ; __tmp . put_f32_le (self . press_diff) ; __tmp . put_i16_le (self . temperature) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct VIDEO_STREAM_INFORMATION_DATA { pub framerate : f32 , pub bitrate : u32 , pub flags : VideoStreamStatusFlags , pub resolution_h : u16 , pub resolution_v : u16 , pub rotation : u16 , pub hfov : u16 , pub stream_id : u8 , pub count : u8 , pub mavtype : VideoStreamType , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub name : [u8 ; 32] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub uri : [u8 ; 160] , } impl VIDEO_STREAM_INFORMATION_DATA { pub const ENCODED_LEN : usize = 213usize ; pub const DEFAULT : Self = Self { framerate : 0.0_f32 , bitrate : 0_u32 , flags : VideoStreamStatusFlags :: DEFAULT , resolution_h : 0_u16 , resolution_v : 0_u16 , rotation : 0_u16 , hfov : 0_u16 , stream_id : 0_u8 , count : 0_u8 , mavtype : VideoStreamType :: DEFAULT , name : [0_u8 ; 32usize] , uri : [0_u8 ; 160usize] , } ; } impl Default for VIDEO_STREAM_INFORMATION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for VIDEO_STREAM_INFORMATION_DATA { type Message = MavMessage ; const ID : u32 = 269u32 ; const NAME : & 'static str = "VIDEO_STREAM_INFORMATION" ; const EXTRA_CRC : u8 = 109u8 ; const ENCODED_LEN : usize = 213usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . framerate = buf . get_f32_le () ; __struct . bitrate = buf . get_u32_le () ; let tmp = buf . get_u16_le () ; __struct . flags = FromPrimitive :: from_u16 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "VideoStreamStatusFlags" , value : tmp as u32 }) ? ; __struct . resolution_h = buf . get_u16_le () ; __struct . resolution_v = buf . get_u16_le () ; __struct . rotation = buf . get_u16_le () ; __struct . hfov = buf . get_u16_le () ; __struct . stream_id = buf . get_u8 () ; __struct . count = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . mavtype = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "VideoStreamType" , value : tmp as u32 }) ? ; for v in & mut __struct . name { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . uri { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . framerate) ; __tmp . put_u32_le (self . bitrate) ; __tmp . put_u16_le (self . flags as u16) ; __tmp . put_u16_le (self . resolution_h) ; __tmp . put_u16_le (self . resolution_v) ; __tmp . put_u16_le (self . rotation) ; __tmp . put_u16_le (self . hfov) ; __tmp . put_u8 (self . stream_id) ; __tmp . put_u8 (self . count) ; __tmp . put_u8 (self . mavtype as u8) ; for val in & self . name { __tmp . put_u8 (* val) ; } for val in & self . uri { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct BATTERY_STATUS_DATA { pub current_consumed : i32 , pub energy_consumed : i32 , pub temperature : i16 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub voltages : [u16 ; 10] , pub current_battery : i16 , pub id : u8 , pub battery_function : MavBatteryFunction , pub mavtype : MavBatteryType , pub battery_remaining : i8 , } impl BATTERY_STATUS_DATA { pub const ENCODED_LEN : usize = 36usize ; pub const DEFAULT : Self = Self { current_consumed : 0_i32 , energy_consumed : 0_i32 , temperature : 0_i16 , voltages : [0_u16 ; 10usize] , current_battery : 0_i16 , id : 0_u8 , battery_function : MavBatteryFunction :: DEFAULT , mavtype : MavBatteryType :: DEFAULT , battery_remaining : 0_i8 , } ; } impl Default for BATTERY_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for BATTERY_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 147u32 ; const NAME : & 'static str = "BATTERY_STATUS" ; const EXTRA_CRC : u8 = 154u8 ; const ENCODED_LEN : usize = 36usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . current_consumed = buf . get_i32_le () ; __struct . energy_consumed = buf . get_i32_le () ; __struct . temperature = buf . get_i16_le () ; for v in & mut __struct . voltages { let val = buf . get_u16_le () ; * v = val ; } __struct . current_battery = buf . get_i16_le () ; __struct . id = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . battery_function = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavBatteryFunction" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . mavtype = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavBatteryType" , value : tmp as u32 }) ? ; __struct . battery_remaining = buf . get_i8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . current_consumed) ; __tmp . put_i32_le (self . energy_consumed) ; __tmp . put_i16_le (self . temperature) ; for val in & self . voltages { __tmp . put_u16_le (* val) ; } __tmp . put_i16_le (self . current_battery) ; __tmp . put_u8 (self . id) ; __tmp . put_u8 (self . battery_function as u8) ; __tmp . put_u8 (self . mavtype as u8) ; __tmp . put_i8 (self . battery_remaining) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SCALED_IMU_DATA { pub time_boot_ms : u32 , pub xacc : i16 , pub yacc : i16 , pub zacc : i16 , pub xgyro : i16 , pub ygyro : i16 , pub zgyro : i16 , pub xmag : i16 , pub ymag : i16 , pub zmag : i16 , } impl SCALED_IMU_DATA { pub const ENCODED_LEN : usize = 22usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , xacc : 0_i16 , yacc : 0_i16 , zacc : 0_i16 , xgyro : 0_i16 , ygyro : 0_i16 , zgyro : 0_i16 , xmag : 0_i16 , ymag : 0_i16 , zmag : 0_i16 , } ; } impl Default for SCALED_IMU_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SCALED_IMU_DATA { type Message = MavMessage ; const ID : u32 = 26u32 ; const NAME : & 'static str = "SCALED_IMU" ; const EXTRA_CRC : u8 = 170u8 ; const ENCODED_LEN : usize = 22usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . xacc = buf . get_i16_le () ; __struct . yacc = buf . get_i16_le () ; __struct . zacc = buf . get_i16_le () ; __struct . xgyro = buf . get_i16_le () ; __struct . ygyro = buf . get_i16_le () ; __struct . zgyro = buf . get_i16_le () ; __struct . xmag = buf . get_i16_le () ; __struct . ymag = buf . get_i16_le () ; __struct . zmag = buf . get_i16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_i16_le (self . xacc) ; __tmp . put_i16_le (self . yacc) ; __tmp . put_i16_le (self . zacc) ; __tmp . put_i16_le (self . xgyro) ; __tmp . put_i16_le (self . ygyro) ; __tmp . put_i16_le (self . zgyro) ; __tmp . put_i16_le (self . xmag) ; __tmp . put_i16_le (self . ymag) ; __tmp . put_i16_le (self . zmag) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LOCAL_POSITION_NED_COV_DATA { pub time_usec : u64 , pub x : f32 , pub y : f32 , pub z : f32 , pub vx : f32 , pub vy : f32 , pub vz : f32 , pub ax : f32 , pub ay : f32 , pub az : f32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub covariance : [f32 ; 45] , pub estimator_type : MavEstimatorType , } impl LOCAL_POSITION_NED_COV_DATA { pub const ENCODED_LEN : usize = 225usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , x : 0.0_f32 , y : 0.0_f32 , z : 0.0_f32 , vx : 0.0_f32 , vy : 0.0_f32 , vz : 0.0_f32 , ax : 0.0_f32 , ay : 0.0_f32 , az : 0.0_f32 , covariance : [0.0_f32 ; 45usize] , estimator_type : MavEstimatorType :: DEFAULT , } ; } impl Default for LOCAL_POSITION_NED_COV_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for LOCAL_POSITION_NED_COV_DATA { type Message = MavMessage ; const ID : u32 = 64u32 ; const NAME : & 'static str = "LOCAL_POSITION_NED_COV" ; const EXTRA_CRC : u8 = 191u8 ; const ENCODED_LEN : usize = 225usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . x = buf . get_f32_le () ; __struct . y = buf . get_f32_le () ; __struct . z = buf . get_f32_le () ; __struct . vx = buf . get_f32_le () ; __struct . vy = buf . get_f32_le () ; __struct . vz = buf . get_f32_le () ; __struct . ax = buf . get_f32_le () ; __struct . ay = buf . get_f32_le () ; __struct . az = buf . get_f32_le () ; for v in & mut __struct . covariance { let val = buf . get_f32_le () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . estimator_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavEstimatorType" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; __tmp . put_f32_le (self . vx) ; __tmp . put_f32_le (self . vy) ; __tmp . put_f32_le (self . vz) ; __tmp . put_f32_le (self . ax) ; __tmp . put_f32_le (self . ay) ; __tmp . put_f32_le (self . az) ; for val in & self . covariance { __tmp . put_f32_le (* val) ; } __tmp . put_u8 (self . estimator_type as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GENERATOR_STATUS_DATA { pub status : MavGeneratorStatusFlag , pub battery_current : f32 , pub load_current : f32 , pub power_generated : f32 , pub bus_voltage : f32 , pub bat_current_setpoint : f32 , pub runtime : u32 , pub time_until_maintenance : i32 , pub generator_speed : u16 , pub rectifier_temperature : i16 , pub generator_temperature : i16 , } impl GENERATOR_STATUS_DATA { pub const ENCODED_LEN : usize = 42usize ; pub const DEFAULT : Self = Self { status : MavGeneratorStatusFlag :: DEFAULT , battery_current : 0.0_f32 , load_current : 0.0_f32 , power_generated : 0.0_f32 , bus_voltage : 0.0_f32 , bat_current_setpoint : 0.0_f32 , runtime : 0_u32 , time_until_maintenance : 0_i32 , generator_speed : 0_u16 , rectifier_temperature : 0_i16 , generator_temperature : 0_i16 , } ; } impl Default for GENERATOR_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GENERATOR_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 373u32 ; const NAME : & 'static str = "GENERATOR_STATUS" ; const EXTRA_CRC : u8 = 117u8 ; const ENCODED_LEN : usize = 42usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u64_le () ; __struct . status = MavGeneratorStatusFlag :: from_bits (tmp & MavGeneratorStatusFlag :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "MavGeneratorStatusFlag" , value : tmp as u32 }) ? ; __struct . battery_current = buf . get_f32_le () ; __struct . load_current = buf . get_f32_le () ; __struct . power_generated = buf . get_f32_le () ; __struct . bus_voltage = buf . get_f32_le () ; __struct . bat_current_setpoint = buf . get_f32_le () ; __struct . runtime = buf . get_u32_le () ; __struct . time_until_maintenance = buf . get_i32_le () ; __struct . generator_speed = buf . get_u16_le () ; __struct . rectifier_temperature = buf . get_i16_le () ; __struct . generator_temperature = buf . get_i16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . status . bits ()) ; __tmp . put_f32_le (self . battery_current) ; __tmp . put_f32_le (self . load_current) ; __tmp . put_f32_le (self . power_generated) ; __tmp . put_f32_le (self . bus_voltage) ; __tmp . put_f32_le (self . bat_current_setpoint) ; __tmp . put_u32_le (self . runtime) ; __tmp . put_i32_le (self . time_until_maintenance) ; __tmp . put_u16_le (self . generator_speed) ; __tmp . put_i16_le (self . rectifier_temperature) ; __tmp . put_i16_le (self . generator_temperature) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CAN_FRAME_DATA { pub id : u32 , pub target_system : u8 , pub target_component : u8 , pub bus : u8 , pub len : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub data : [u8 ; 8] , } impl CAN_FRAME_DATA { pub const ENCODED_LEN : usize = 16usize ; pub const DEFAULT : Self = Self { id : 0_u32 , target_system : 0_u8 , target_component : 0_u8 , bus : 0_u8 , len : 0_u8 , data : [0_u8 ; 8usize] , } ; } impl Default for CAN_FRAME_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CAN_FRAME_DATA { type Message = MavMessage ; const ID : u32 = 386u32 ; const NAME : & 'static str = "CAN_FRAME" ; const EXTRA_CRC : u8 = 132u8 ; const ENCODED_LEN : usize = 16usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . id = buf . get_u32_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . bus = buf . get_u8 () ; __struct . len = buf . get_u8 () ; for v in & mut __struct . data { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . id) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . bus) ; __tmp . put_u8 (self . len) ; for val in & self . data { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct TERRAIN_CHECK_DATA { pub lat : i32 , pub lon : i32 , } impl TERRAIN_CHECK_DATA { pub const ENCODED_LEN : usize = 8usize ; pub const DEFAULT : Self = Self { lat : 0_i32 , lon : 0_i32 , } ; } impl Default for TERRAIN_CHECK_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for TERRAIN_CHECK_DATA { type Message = MavMessage ; const ID : u32 = 135u32 ; const NAME : & 'static str = "TERRAIN_CHECK" ; const EXTRA_CRC : u8 = 203u8 ; const ENCODED_LEN : usize = 8usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CAMERA_CAPTURE_STATUS_DATA { pub time_boot_ms : u32 , pub image_interval : f32 , pub recording_time_ms : u32 , pub available_capacity : f32 , pub image_status : u8 , pub video_status : u8 , } impl CAMERA_CAPTURE_STATUS_DATA { pub const ENCODED_LEN : usize = 18usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , image_interval : 0.0_f32 , recording_time_ms : 0_u32 , available_capacity : 0.0_f32 , image_status : 0_u8 , video_status : 0_u8 , } ; } impl Default for CAMERA_CAPTURE_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CAMERA_CAPTURE_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 262u32 ; const NAME : & 'static str = "CAMERA_CAPTURE_STATUS" ; const EXTRA_CRC : u8 = 12u8 ; const ENCODED_LEN : usize = 18usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . image_interval = buf . get_f32_le () ; __struct . recording_time_ms = buf . get_u32_le () ; __struct . available_capacity = buf . get_f32_le () ; __struct . image_status = buf . get_u8 () ; __struct . video_status = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . image_interval) ; __tmp . put_u32_le (self . recording_time_ms) ; __tmp . put_f32_le (self . available_capacity) ; __tmp . put_u8 (self . image_status) ; __tmp . put_u8 (self . video_status) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct UAVCAN_NODE_INFO_DATA { pub time_usec : u64 , pub uptime_sec : u32 , pub sw_vcs_commit : u32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub name : [u8 ; 80] , pub hw_version_major : u8 , pub hw_version_minor : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub hw_unique_id : [u8 ; 16] , pub sw_version_major : u8 , pub sw_version_minor : u8 , } impl UAVCAN_NODE_INFO_DATA { pub const ENCODED_LEN : usize = 116usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , uptime_sec : 0_u32 , sw_vcs_commit : 0_u32 , name : [0_u8 ; 80usize] , hw_version_major : 0_u8 , hw_version_minor : 0_u8 , hw_unique_id : [0_u8 ; 16usize] , sw_version_major : 0_u8 , sw_version_minor : 0_u8 , } ; } impl Default for UAVCAN_NODE_INFO_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for UAVCAN_NODE_INFO_DATA { type Message = MavMessage ; const ID : u32 = 311u32 ; const NAME : & 'static str = "UAVCAN_NODE_INFO" ; const EXTRA_CRC : u8 = 95u8 ; const ENCODED_LEN : usize = 116usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . uptime_sec = buf . get_u32_le () ; __struct . sw_vcs_commit = buf . get_u32_le () ; for v in & mut __struct . name { let val = buf . get_u8 () ; * v = val ; } __struct . hw_version_major = buf . get_u8 () ; __struct . hw_version_minor = buf . get_u8 () ; for v in & mut __struct . hw_unique_id { let val = buf . get_u8 () ; * v = val ; } __struct . sw_version_major = buf . get_u8 () ; __struct . sw_version_minor = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_u32_le (self . uptime_sec) ; __tmp . put_u32_le (self . sw_vcs_commit) ; for val in & self . name { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . hw_version_major) ; __tmp . put_u8 (self . hw_version_minor) ; for val in & self . hw_unique_id { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . sw_version_major) ; __tmp . put_u8 (self . sw_version_minor) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct RAW_PRESSURE_DATA { pub time_usec : u64 , pub press_abs : i16 , pub press_diff1 : i16 , pub press_diff2 : i16 , pub temperature : i16 , } impl RAW_PRESSURE_DATA { pub const ENCODED_LEN : usize = 16usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , press_abs : 0_i16 , press_diff1 : 0_i16 , press_diff2 : 0_i16 , temperature : 0_i16 , } ; } impl Default for RAW_PRESSURE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for RAW_PRESSURE_DATA { type Message = MavMessage ; const ID : u32 = 28u32 ; const NAME : & 'static str = "RAW_PRESSURE" ; const EXTRA_CRC : u8 = 67u8 ; const ENCODED_LEN : usize = 16usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . press_abs = buf . get_i16_le () ; __struct . press_diff1 = buf . get_i16_le () ; __struct . press_diff2 = buf . get_i16_le () ; __struct . temperature = buf . get_i16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_i16_le (self . press_abs) ; __tmp . put_i16_le (self . press_diff1) ; __tmp . put_i16_le (self . press_diff2) ; __tmp . put_i16_le (self . temperature) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct POSITION_TARGET_GLOBAL_INT_DATA { pub time_boot_ms : u32 , pub lat_int : i32 , pub lon_int : i32 , pub alt : f32 , pub vx : f32 , pub vy : f32 , pub vz : f32 , pub afx : f32 , pub afy : f32 , pub afz : f32 , pub yaw : f32 , pub yaw_rate : f32 , pub type_mask : PositionTargetTypemask , pub coordinate_frame : MavFrame , } impl POSITION_TARGET_GLOBAL_INT_DATA { pub const ENCODED_LEN : usize = 51usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , lat_int : 0_i32 , lon_int : 0_i32 , alt : 0.0_f32 , vx : 0.0_f32 , vy : 0.0_f32 , vz : 0.0_f32 , afx : 0.0_f32 , afy : 0.0_f32 , afz : 0.0_f32 , yaw : 0.0_f32 , yaw_rate : 0.0_f32 , type_mask : PositionTargetTypemask :: DEFAULT , coordinate_frame : MavFrame :: DEFAULT , } ; } impl Default for POSITION_TARGET_GLOBAL_INT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for POSITION_TARGET_GLOBAL_INT_DATA { type Message = MavMessage ; const ID : u32 = 87u32 ; const NAME : & 'static str = "POSITION_TARGET_GLOBAL_INT" ; const EXTRA_CRC : u8 = 150u8 ; const ENCODED_LEN : usize = 51usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . lat_int = buf . get_i32_le () ; __struct . lon_int = buf . get_i32_le () ; __struct . alt = buf . get_f32_le () ; __struct . vx = buf . get_f32_le () ; __struct . vy = buf . get_f32_le () ; __struct . vz = buf . get_f32_le () ; __struct . afx = buf . get_f32_le () ; __struct . afy = buf . get_f32_le () ; __struct . afz = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; __struct . yaw_rate = buf . get_f32_le () ; let tmp = buf . get_u16_le () ; __struct . type_mask = PositionTargetTypemask :: from_bits (tmp & PositionTargetTypemask :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "PositionTargetTypemask" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . coordinate_frame = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavFrame" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_i32_le (self . lat_int) ; __tmp . put_i32_le (self . lon_int) ; __tmp . put_f32_le (self . alt) ; __tmp . put_f32_le (self . vx) ; __tmp . put_f32_le (self . vy) ; __tmp . put_f32_le (self . vz) ; __tmp . put_f32_le (self . afx) ; __tmp . put_f32_le (self . afy) ; __tmp . put_f32_le (self . afz) ; __tmp . put_f32_le (self . yaw) ; __tmp . put_f32_le (self . yaw_rate) ; __tmp . put_u16_le (self . type_mask . bits ()) ; __tmp . put_u8 (self . coordinate_frame as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HEARTBEAT_DATA { pub custom_mode : u32 , pub mavtype : MavType , pub autopilot : MavAutopilot , pub base_mode : MavModeFlag , pub system_status : MavState , pub mavlink_version : u8 , } impl HEARTBEAT_DATA { pub const ENCODED_LEN : usize = 9usize ; pub const DEFAULT : Self = Self { custom_mode : 0_u32 , mavtype : MavType :: DEFAULT , autopilot : MavAutopilot :: DEFAULT , base_mode : MavModeFlag :: DEFAULT , system_status : MavState :: DEFAULT , mavlink_version : 0_u8 , } ; } impl Default for HEARTBEAT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for HEARTBEAT_DATA { type Message = MavMessage ; const ID : u32 = 0u32 ; const NAME : & 'static str = "HEARTBEAT" ; const EXTRA_CRC : u8 = 50u8 ; const ENCODED_LEN : usize = 9usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . custom_mode = buf . get_u32_le () ; let tmp = buf . get_u8 () ; __struct . mavtype = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavType" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . autopilot = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavAutopilot" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . base_mode = MavModeFlag :: from_bits (tmp & MavModeFlag :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "MavModeFlag" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . system_status = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavState" , value : tmp as u32 }) ? ; __struct . mavlink_version = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . custom_mode) ; __tmp . put_u8 (self . mavtype as u8) ; __tmp . put_u8 (self . autopilot as u8) ; __tmp . put_u8 (self . base_mode . bits ()) ; __tmp . put_u8 (self . system_status as u8) ; __tmp . put_u8 (self . mavlink_version) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct RADIO_STATUS_DATA { pub rxerrors : u16 , pub fixed : u16 , pub rssi : u8 , pub remrssi : u8 , pub txbuf : u8 , pub noise : u8 , pub remnoise : u8 , } impl RADIO_STATUS_DATA { pub const ENCODED_LEN : usize = 9usize ; pub const DEFAULT : Self = Self { rxerrors : 0_u16 , fixed : 0_u16 , rssi : 0_u8 , remrssi : 0_u8 , txbuf : 0_u8 , noise : 0_u8 , remnoise : 0_u8 , } ; } impl Default for RADIO_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for RADIO_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 109u32 ; const NAME : & 'static str = "RADIO_STATUS" ; const EXTRA_CRC : u8 = 185u8 ; const ENCODED_LEN : usize = 9usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . rxerrors = buf . get_u16_le () ; __struct . fixed = buf . get_u16_le () ; __struct . rssi = buf . get_u8 () ; __struct . remrssi = buf . get_u8 () ; __struct . txbuf = buf . get_u8 () ; __struct . noise = buf . get_u8 () ; __struct . remnoise = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . rxerrors) ; __tmp . put_u16_le (self . fixed) ; __tmp . put_u8 (self . rssi) ; __tmp . put_u8 (self . remrssi) ; __tmp . put_u8 (self . txbuf) ; __tmp . put_u8 (self . noise) ; __tmp . put_u8 (self . remnoise) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PARAM_EXT_VALUE_DATA { pub param_count : u16 , pub param_index : u16 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub param_id : [u8 ; 16] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub param_value : [u8 ; 128] , pub param_type : MavParamExtType , } impl PARAM_EXT_VALUE_DATA { pub const ENCODED_LEN : usize = 149usize ; pub const DEFAULT : Self = Self { param_count : 0_u16 , param_index : 0_u16 , param_id : [0_u8 ; 16usize] , param_value : [0_u8 ; 128usize] , param_type : MavParamExtType :: DEFAULT , } ; } impl Default for PARAM_EXT_VALUE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for PARAM_EXT_VALUE_DATA { type Message = MavMessage ; const ID : u32 = 322u32 ; const NAME : & 'static str = "PARAM_EXT_VALUE" ; const EXTRA_CRC : u8 = 243u8 ; const ENCODED_LEN : usize = 149usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . param_count = buf . get_u16_le () ; __struct . param_index = buf . get_u16_le () ; for v in & mut __struct . param_id { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . param_value { let val = buf . get_u8 () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . param_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavParamExtType" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . param_count) ; __tmp . put_u16_le (self . param_index) ; for val in & self . param_id { __tmp . put_u8 (* val) ; } for val in & self . param_value { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . param_type as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct RC_CHANNELS_RAW_DATA { pub time_boot_ms : u32 , pub chan1_raw : u16 , pub chan2_raw : u16 , pub chan3_raw : u16 , pub chan4_raw : u16 , pub chan5_raw : u16 , pub chan6_raw : u16 , pub chan7_raw : u16 , pub chan8_raw : u16 , pub port : u8 , pub rssi : u8 , } impl RC_CHANNELS_RAW_DATA { pub const ENCODED_LEN : usize = 22usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , chan1_raw : 0_u16 , chan2_raw : 0_u16 , chan3_raw : 0_u16 , chan4_raw : 0_u16 , chan5_raw : 0_u16 , chan6_raw : 0_u16 , chan7_raw : 0_u16 , chan8_raw : 0_u16 , port : 0_u8 , rssi : 0_u8 , } ; } impl Default for RC_CHANNELS_RAW_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for RC_CHANNELS_RAW_DATA { type Message = MavMessage ; const ID : u32 = 35u32 ; const NAME : & 'static str = "RC_CHANNELS_RAW" ; const EXTRA_CRC : u8 = 244u8 ; const ENCODED_LEN : usize = 22usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . chan1_raw = buf . get_u16_le () ; __struct . chan2_raw = buf . get_u16_le () ; __struct . chan3_raw = buf . get_u16_le () ; __struct . chan4_raw = buf . get_u16_le () ; __struct . chan5_raw = buf . get_u16_le () ; __struct . chan6_raw = buf . get_u16_le () ; __struct . chan7_raw = buf . get_u16_le () ; __struct . chan8_raw = buf . get_u16_le () ; __struct . port = buf . get_u8 () ; __struct . rssi = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_u16_le (self . chan1_raw) ; __tmp . put_u16_le (self . chan2_raw) ; __tmp . put_u16_le (self . chan3_raw) ; __tmp . put_u16_le (self . chan4_raw) ; __tmp . put_u16_le (self . chan5_raw) ; __tmp . put_u16_le (self . chan6_raw) ; __tmp . put_u16_le (self . chan7_raw) ; __tmp . put_u16_le (self . chan8_raw) ; __tmp . put_u8 (self . port) ; __tmp . put_u8 (self . rssi) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ISBD_LINK_STATUS_DATA { pub timestamp : u64 , pub last_heartbeat : u64 , pub failed_sessions : u16 , pub successful_sessions : u16 , pub signal_quality : u8 , pub ring_pending : u8 , pub tx_session_pending : u8 , pub rx_session_pending : u8 , } impl ISBD_LINK_STATUS_DATA { pub const ENCODED_LEN : usize = 24usize ; pub const DEFAULT : Self = Self { timestamp : 0_u64 , last_heartbeat : 0_u64 , failed_sessions : 0_u16 , successful_sessions : 0_u16 , signal_quality : 0_u8 , ring_pending : 0_u8 , tx_session_pending : 0_u8 , rx_session_pending : 0_u8 , } ; } impl Default for ISBD_LINK_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ISBD_LINK_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 335u32 ; const NAME : & 'static str = "ISBD_LINK_STATUS" ; const EXTRA_CRC : u8 = 225u8 ; const ENCODED_LEN : usize = 24usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . timestamp = buf . get_u64_le () ; __struct . last_heartbeat = buf . get_u64_le () ; __struct . failed_sessions = buf . get_u16_le () ; __struct . successful_sessions = buf . get_u16_le () ; __struct . signal_quality = buf . get_u8 () ; __struct . ring_pending = buf . get_u8 () ; __struct . tx_session_pending = buf . get_u8 () ; __struct . rx_session_pending = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . timestamp) ; __tmp . put_u64_le (self . last_heartbeat) ; __tmp . put_u16_le (self . failed_sessions) ; __tmp . put_u16_le (self . successful_sessions) ; __tmp . put_u8 (self . signal_quality) ; __tmp . put_u8 (self . ring_pending) ; __tmp . put_u8 (self . tx_session_pending) ; __tmp . put_u8 (self . rx_session_pending) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct OPTICAL_FLOW_RAD_DATA { pub time_usec : u64 , pub integration_time_us : u32 , pub integrated_x : f32 , pub integrated_y : f32 , pub integrated_xgyro : f32 , pub integrated_ygyro : f32 , pub integrated_zgyro : f32 , pub time_delta_distance_us : u32 , pub distance : f32 , pub temperature : i16 , pub sensor_id : u8 , pub quality : u8 , } impl OPTICAL_FLOW_RAD_DATA { pub const ENCODED_LEN : usize = 44usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , integration_time_us : 0_u32 , integrated_x : 0.0_f32 , integrated_y : 0.0_f32 , integrated_xgyro : 0.0_f32 , integrated_ygyro : 0.0_f32 , integrated_zgyro : 0.0_f32 , time_delta_distance_us : 0_u32 , distance : 0.0_f32 , temperature : 0_i16 , sensor_id : 0_u8 , quality : 0_u8 , } ; } impl Default for OPTICAL_FLOW_RAD_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for OPTICAL_FLOW_RAD_DATA { type Message = MavMessage ; const ID : u32 = 106u32 ; const NAME : & 'static str = "OPTICAL_FLOW_RAD" ; const EXTRA_CRC : u8 = 138u8 ; const ENCODED_LEN : usize = 44usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . integration_time_us = buf . get_u32_le () ; __struct . integrated_x = buf . get_f32_le () ; __struct . integrated_y = buf . get_f32_le () ; __struct . integrated_xgyro = buf . get_f32_le () ; __struct . integrated_ygyro = buf . get_f32_le () ; __struct . integrated_zgyro = buf . get_f32_le () ; __struct . time_delta_distance_us = buf . get_u32_le () ; __struct . distance = buf . get_f32_le () ; __struct . temperature = buf . get_i16_le () ; __struct . sensor_id = buf . get_u8 () ; __struct . quality = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_u32_le (self . integration_time_us) ; __tmp . put_f32_le (self . integrated_x) ; __tmp . put_f32_le (self . integrated_y) ; __tmp . put_f32_le (self . integrated_xgyro) ; __tmp . put_f32_le (self . integrated_ygyro) ; __tmp . put_f32_le (self . integrated_zgyro) ; __tmp . put_u32_le (self . time_delta_distance_us) ; __tmp . put_f32_le (self . distance) ; __tmp . put_i16_le (self . temperature) ; __tmp . put_u8 (self . sensor_id) ; __tmp . put_u8 (self . quality) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PARAM_MAP_RC_DATA { pub param_value0 : f32 , pub scale : f32 , pub param_value_min : f32 , pub param_value_max : f32 , pub param_index : i16 , pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub param_id : [u8 ; 16] , pub parameter_rc_channel_index : u8 , } impl PARAM_MAP_RC_DATA { pub const ENCODED_LEN : usize = 37usize ; pub const DEFAULT : Self = Self { param_value0 : 0.0_f32 , scale : 0.0_f32 , param_value_min : 0.0_f32 , param_value_max : 0.0_f32 , param_index : 0_i16 , target_system : 0_u8 , target_component : 0_u8 , param_id : [0_u8 ; 16usize] , parameter_rc_channel_index : 0_u8 , } ; } impl Default for PARAM_MAP_RC_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for PARAM_MAP_RC_DATA { type Message = MavMessage ; const ID : u32 = 50u32 ; const NAME : & 'static str = "PARAM_MAP_RC" ; const EXTRA_CRC : u8 = 78u8 ; const ENCODED_LEN : usize = 37usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . param_value0 = buf . get_f32_le () ; __struct . scale = buf . get_f32_le () ; __struct . param_value_min = buf . get_f32_le () ; __struct . param_value_max = buf . get_f32_le () ; __struct . param_index = buf . get_i16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . param_id { let val = buf . get_u8 () ; * v = val ; } __struct . parameter_rc_channel_index = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . param_value0) ; __tmp . put_f32_le (self . scale) ; __tmp . put_f32_le (self . param_value_min) ; __tmp . put_f32_le (self . param_value_max) ; __tmp . put_i16_le (self . param_index) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . param_id { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . parameter_rc_channel_index) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PARAM_REQUEST_READ_DATA { pub param_index : i16 , pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub param_id : [u8 ; 16] , } impl PARAM_REQUEST_READ_DATA { pub const ENCODED_LEN : usize = 20usize ; pub const DEFAULT : Self = Self { param_index : 0_i16 , target_system : 0_u8 , target_component : 0_u8 , param_id : [0_u8 ; 16usize] , } ; } impl Default for PARAM_REQUEST_READ_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for PARAM_REQUEST_READ_DATA { type Message = MavMessage ; const ID : u32 = 20u32 ; const NAME : & 'static str = "PARAM_REQUEST_READ" ; const EXTRA_CRC : u8 = 214u8 ; const ENCODED_LEN : usize = 20usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . param_index = buf . get_i16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . param_id { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i16_le (self . param_index) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . param_id { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct RESPONSE_EVENT_ERROR_DATA { pub sequence : u16 , pub sequence_oldest_available : u16 , pub target_system : u8 , pub target_component : u8 , pub reason : MavEventErrorReason , } impl RESPONSE_EVENT_ERROR_DATA { pub const ENCODED_LEN : usize = 7usize ; pub const DEFAULT : Self = Self { sequence : 0_u16 , sequence_oldest_available : 0_u16 , target_system : 0_u8 , target_component : 0_u8 , reason : MavEventErrorReason :: DEFAULT , } ; } impl Default for RESPONSE_EVENT_ERROR_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for RESPONSE_EVENT_ERROR_DATA { type Message = MavMessage ; const ID : u32 = 413u32 ; const NAME : & 'static str = "RESPONSE_EVENT_ERROR" ; const EXTRA_CRC : u8 = 77u8 ; const ENCODED_LEN : usize = 7usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . sequence = buf . get_u16_le () ; __struct . sequence_oldest_available = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . reason = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavEventErrorReason" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . sequence) ; __tmp . put_u16_le (self . sequence_oldest_available) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . reason as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA { pub time_boot_ms : u32 , pub x : f32 , pub y : f32 , pub z : f32 , pub roll : f32 , pub pitch : f32 , pub yaw : f32 , } impl LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA { pub const ENCODED_LEN : usize = 28usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , x : 0.0_f32 , y : 0.0_f32 , z : 0.0_f32 , roll : 0.0_f32 , pitch : 0.0_f32 , yaw : 0.0_f32 , } ; } impl Default for LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA { type Message = MavMessage ; const ID : u32 = 89u32 ; const NAME : & 'static str = "LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET" ; const EXTRA_CRC : u8 = 231u8 ; const ENCODED_LEN : usize = 28usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . x = buf . get_f32_le () ; __struct . y = buf . get_f32_le () ; __struct . z = buf . get_f32_le () ; __struct . roll = buf . get_f32_le () ; __struct . pitch = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; __tmp . put_f32_le (self . roll) ; __tmp . put_f32_le (self . pitch) ; __tmp . put_f32_le (self . yaw) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GLOBAL_VISION_POSITION_ESTIMATE_DATA { pub usec : u64 , pub x : f32 , pub y : f32 , pub z : f32 , pub roll : f32 , pub pitch : f32 , pub yaw : f32 , } impl GLOBAL_VISION_POSITION_ESTIMATE_DATA { pub const ENCODED_LEN : usize = 32usize ; pub const DEFAULT : Self = Self { usec : 0_u64 , x : 0.0_f32 , y : 0.0_f32 , z : 0.0_f32 , roll : 0.0_f32 , pitch : 0.0_f32 , yaw : 0.0_f32 , } ; } impl Default for GLOBAL_VISION_POSITION_ESTIMATE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GLOBAL_VISION_POSITION_ESTIMATE_DATA { type Message = MavMessage ; const ID : u32 = 101u32 ; const NAME : & 'static str = "GLOBAL_VISION_POSITION_ESTIMATE" ; const EXTRA_CRC : u8 = 102u8 ; const ENCODED_LEN : usize = 32usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . usec = buf . get_u64_le () ; __struct . x = buf . get_f32_le () ; __struct . y = buf . get_f32_le () ; __struct . z = buf . get_f32_le () ; __struct . roll = buf . get_f32_le () ; __struct . pitch = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . usec) ; __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; __tmp . put_f32_le (self . roll) ; __tmp . put_f32_le (self . pitch) ; __tmp . put_f32_le (self . yaw) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct FENCE_STATUS_DATA { pub breach_time : u32 , pub breach_count : u16 , pub breach_status : u8 , pub breach_type : FenceBreach , } impl FENCE_STATUS_DATA { pub const ENCODED_LEN : usize = 8usize ; pub const DEFAULT : Self = Self { breach_time : 0_u32 , breach_count : 0_u16 , breach_status : 0_u8 , breach_type : FenceBreach :: DEFAULT , } ; } impl Default for FENCE_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for FENCE_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 162u32 ; const NAME : & 'static str = "FENCE_STATUS" ; const EXTRA_CRC : u8 = 189u8 ; const ENCODED_LEN : usize = 8usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . breach_time = buf . get_u32_le () ; __struct . breach_count = buf . get_u16_le () ; __struct . breach_status = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . breach_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "FenceBreach" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . breach_time) ; __tmp . put_u16_le (self . breach_count) ; __tmp . put_u8 (self . breach_status) ; __tmp . put_u8 (self . breach_type as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ONBOARD_COMPUTER_STATUS_DATA { pub time_usec : u64 , pub uptime : u32 , pub ram_usage : u32 , pub ram_total : u32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub storage_type : [u32 ; 4] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub storage_usage : [u32 ; 4] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub storage_total : [u32 ; 4] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub link_type : [u32 ; 6] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub link_tx_rate : [u32 ; 6] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub link_rx_rate : [u32 ; 6] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub link_tx_max : [u32 ; 6] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub link_rx_max : [u32 ; 6] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub fan_speed : [i16 ; 4] , pub mavtype : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub cpu_cores : [u8 ; 8] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub cpu_combined : [u8 ; 10] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub gpu_cores : [u8 ; 4] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub gpu_combined : [u8 ; 10] , pub temperature_board : i8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub temperature_core : [i8 ; 8] , } impl ONBOARD_COMPUTER_STATUS_DATA { pub const ENCODED_LEN : usize = 238usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , uptime : 0_u32 , ram_usage : 0_u32 , ram_total : 0_u32 , storage_type : [0_u32 ; 4usize] , storage_usage : [0_u32 ; 4usize] , storage_total : [0_u32 ; 4usize] , link_type : [0_u32 ; 6usize] , link_tx_rate : [0_u32 ; 6usize] , link_rx_rate : [0_u32 ; 6usize] , link_tx_max : [0_u32 ; 6usize] , link_rx_max : [0_u32 ; 6usize] , fan_speed : [0_i16 ; 4usize] , mavtype : 0_u8 , cpu_cores : [0_u8 ; 8usize] , cpu_combined : [0_u8 ; 10usize] , gpu_cores : [0_u8 ; 4usize] , gpu_combined : [0_u8 ; 10usize] , temperature_board : 0_i8 , temperature_core : [0_i8 ; 8usize] , } ; } impl Default for ONBOARD_COMPUTER_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ONBOARD_COMPUTER_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 390u32 ; const NAME : & 'static str = "ONBOARD_COMPUTER_STATUS" ; const EXTRA_CRC : u8 = 156u8 ; const ENCODED_LEN : usize = 238usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . uptime = buf . get_u32_le () ; __struct . ram_usage = buf . get_u32_le () ; __struct . ram_total = buf . get_u32_le () ; for v in & mut __struct . storage_type { let val = buf . get_u32_le () ; * v = val ; } for v in & mut __struct . storage_usage { let val = buf . get_u32_le () ; * v = val ; } for v in & mut __struct . storage_total { let val = buf . get_u32_le () ; * v = val ; } for v in & mut __struct . link_type { let val = buf . get_u32_le () ; * v = val ; } for v in & mut __struct . link_tx_rate { let val = buf . get_u32_le () ; * v = val ; } for v in & mut __struct . link_rx_rate { let val = buf . get_u32_le () ; * v = val ; } for v in & mut __struct . link_tx_max { let val = buf . get_u32_le () ; * v = val ; } for v in & mut __struct . link_rx_max { let val = buf . get_u32_le () ; * v = val ; } for v in & mut __struct . fan_speed { let val = buf . get_i16_le () ; * v = val ; } __struct . mavtype = buf . get_u8 () ; for v in & mut __struct . cpu_cores { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . cpu_combined { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . gpu_cores { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . gpu_combined { let val = buf . get_u8 () ; * v = val ; } __struct . temperature_board = buf . get_i8 () ; for v in & mut __struct . temperature_core { let val = buf . get_i8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_u32_le (self . uptime) ; __tmp . put_u32_le (self . ram_usage) ; __tmp . put_u32_le (self . ram_total) ; for val in & self . storage_type { __tmp . put_u32_le (* val) ; } for val in & self . storage_usage { __tmp . put_u32_le (* val) ; } for val in & self . storage_total { __tmp . put_u32_le (* val) ; } for val in & self . link_type { __tmp . put_u32_le (* val) ; } for val in & self . link_tx_rate { __tmp . put_u32_le (* val) ; } for val in & self . link_rx_rate { __tmp . put_u32_le (* val) ; } for val in & self . link_tx_max { __tmp . put_u32_le (* val) ; } for val in & self . link_rx_max { __tmp . put_u32_le (* val) ; } for val in & self . fan_speed { __tmp . put_i16_le (* val) ; } __tmp . put_u8 (self . mavtype) ; for val in & self . cpu_cores { __tmp . put_u8 (* val) ; } for val in & self . cpu_combined { __tmp . put_u8 (* val) ; } for val in & self . gpu_cores { __tmp . put_u8 (* val) ; } for val in & self . gpu_combined { __tmp . put_u8 (* val) ; } __tmp . put_i8 (self . temperature_board) ; for val in & self . temperature_core { __tmp . put_i8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CURRENT_EVENT_SEQUENCE_DATA { pub sequence : u16 , pub flags : MavEventCurrentSequenceFlags , } impl CURRENT_EVENT_SEQUENCE_DATA { pub const ENCODED_LEN : usize = 3usize ; pub const DEFAULT : Self = Self { sequence : 0_u16 , flags : MavEventCurrentSequenceFlags :: DEFAULT , } ; } impl Default for CURRENT_EVENT_SEQUENCE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CURRENT_EVENT_SEQUENCE_DATA { type Message = MavMessage ; const ID : u32 = 411u32 ; const NAME : & 'static str = "CURRENT_EVENT_SEQUENCE" ; const EXTRA_CRC : u8 = 106u8 ; const ENCODED_LEN : usize = 3usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . sequence = buf . get_u16_le () ; let tmp = buf . get_u8 () ; __struct . flags = MavEventCurrentSequenceFlags :: from_bits (tmp & MavEventCurrentSequenceFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "MavEventCurrentSequenceFlags" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . sequence) ; __tmp . put_u8 (self . flags . bits ()) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MISSION_REQUEST_INT_DATA { pub seq : u16 , pub target_system : u8 , pub target_component : u8 , } impl MISSION_REQUEST_INT_DATA { pub const ENCODED_LEN : usize = 4usize ; pub const DEFAULT : Self = Self { seq : 0_u16 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for MISSION_REQUEST_INT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MISSION_REQUEST_INT_DATA { type Message = MavMessage ; const ID : u32 = 51u32 ; const NAME : & 'static str = "MISSION_REQUEST_INT" ; const EXTRA_CRC : u8 = 196u8 ; const ENCODED_LEN : usize = 4usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . seq = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . seq) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MISSION_ITEM_INT_DATA { pub param1 : f32 , pub param2 : f32 , pub param3 : f32 , pub param4 : f32 , pub x : i32 , pub y : i32 , pub z : f32 , pub seq : u16 , pub command : MavCmd , pub target_system : u8 , pub target_component : u8 , pub frame : MavFrame , pub current : u8 , pub autocontinue : u8 , } impl MISSION_ITEM_INT_DATA { pub const ENCODED_LEN : usize = 37usize ; pub const DEFAULT : Self = Self { param1 : 0.0_f32 , param2 : 0.0_f32 , param3 : 0.0_f32 , param4 : 0.0_f32 , x : 0_i32 , y : 0_i32 , z : 0.0_f32 , seq : 0_u16 , command : MavCmd :: DEFAULT , target_system : 0_u8 , target_component : 0_u8 , frame : MavFrame :: DEFAULT , current : 0_u8 , autocontinue : 0_u8 , } ; } impl Default for MISSION_ITEM_INT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MISSION_ITEM_INT_DATA { type Message = MavMessage ; const ID : u32 = 73u32 ; const NAME : & 'static str = "MISSION_ITEM_INT" ; const EXTRA_CRC : u8 = 38u8 ; const ENCODED_LEN : usize = 37usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . param1 = buf . get_f32_le () ; __struct . param2 = buf . get_f32_le () ; __struct . param3 = buf . get_f32_le () ; __struct . param4 = buf . get_f32_le () ; __struct . x = buf . get_i32_le () ; __struct . y = buf . get_i32_le () ; __struct . z = buf . get_f32_le () ; __struct . seq = buf . get_u16_le () ; let tmp = buf . get_u16_le () ; __struct . command = FromPrimitive :: from_u16 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavCmd" , value : tmp as u32 }) ? ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . frame = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavFrame" , value : tmp as u32 }) ? ; __struct . current = buf . get_u8 () ; __struct . autocontinue = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . param1) ; __tmp . put_f32_le (self . param2) ; __tmp . put_f32_le (self . param3) ; __tmp . put_f32_le (self . param4) ; __tmp . put_i32_le (self . x) ; __tmp . put_i32_le (self . y) ; __tmp . put_f32_le (self . z) ; __tmp . put_u16_le (self . seq) ; __tmp . put_u16_le (self . command as u16) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . frame as u8) ; __tmp . put_u8 (self . current) ; __tmp . put_u8 (self . autocontinue) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct VISION_POSITION_ESTIMATE_DATA { pub usec : u64 , pub x : f32 , pub y : f32 , pub z : f32 , pub roll : f32 , pub pitch : f32 , pub yaw : f32 , } impl VISION_POSITION_ESTIMATE_DATA { pub const ENCODED_LEN : usize = 32usize ; pub const DEFAULT : Self = Self { usec : 0_u64 , x : 0.0_f32 , y : 0.0_f32 , z : 0.0_f32 , roll : 0.0_f32 , pitch : 0.0_f32 , yaw : 0.0_f32 , } ; } impl Default for VISION_POSITION_ESTIMATE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for VISION_POSITION_ESTIMATE_DATA { type Message = MavMessage ; const ID : u32 = 102u32 ; const NAME : & 'static str = "VISION_POSITION_ESTIMATE" ; const EXTRA_CRC : u8 = 158u8 ; const ENCODED_LEN : usize = 32usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . usec = buf . get_u64_le () ; __struct . x = buf . get_f32_le () ; __struct . y = buf . get_f32_le () ; __struct . z = buf . get_f32_le () ; __struct . roll = buf . get_f32_le () ; __struct . pitch = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . usec) ; __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; __tmp . put_f32_le (self . roll) ; __tmp . put_f32_le (self . pitch) ; __tmp . put_f32_le (self . yaw) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PARAM_EXT_ACK_DATA { # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub param_id : [u8 ; 16] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub param_value : [u8 ; 128] , pub param_type : MavParamExtType , pub param_result : ParamAck , } impl PARAM_EXT_ACK_DATA { pub const ENCODED_LEN : usize = 146usize ; pub const DEFAULT : Self = Self { param_id : [0_u8 ; 16usize] , param_value : [0_u8 ; 128usize] , param_type : MavParamExtType :: DEFAULT , param_result : ParamAck :: DEFAULT , } ; } impl Default for PARAM_EXT_ACK_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for PARAM_EXT_ACK_DATA { type Message = MavMessage ; const ID : u32 = 324u32 ; const NAME : & 'static str = "PARAM_EXT_ACK" ; const EXTRA_CRC : u8 = 132u8 ; const ENCODED_LEN : usize = 146usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; for v in & mut __struct . param_id { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . param_value { let val = buf . get_u8 () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . param_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavParamExtType" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . param_result = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "ParamAck" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; for val in & self . param_id { __tmp . put_u8 (* val) ; } for val in & self . param_value { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . param_type as u8) ; __tmp . put_u8 (self . param_result as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SYSTEM_TIME_DATA { pub time_unix_usec : u64 , pub time_boot_ms : u32 , } impl SYSTEM_TIME_DATA { pub const ENCODED_LEN : usize = 12usize ; pub const DEFAULT : Self = Self { time_unix_usec : 0_u64 , time_boot_ms : 0_u32 , } ; } impl Default for SYSTEM_TIME_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SYSTEM_TIME_DATA { type Message = MavMessage ; const ID : u32 = 2u32 ; const NAME : & 'static str = "SYSTEM_TIME" ; const EXTRA_CRC : u8 = 137u8 ; const ENCODED_LEN : usize = 12usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_unix_usec = buf . get_u64_le () ; __struct . time_boot_ms = buf . get_u32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_unix_usec) ; __tmp . put_u32_le (self . time_boot_ms) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LINK_NODE_STATUS_DATA { pub timestamp : u64 , pub tx_rate : u32 , pub rx_rate : u32 , pub messages_sent : u32 , pub messages_received : u32 , pub messages_lost : u32 , pub rx_parse_err : u16 , pub tx_overflows : u16 , pub rx_overflows : u16 , pub tx_buf : u8 , pub rx_buf : u8 , } impl LINK_NODE_STATUS_DATA { pub const ENCODED_LEN : usize = 36usize ; pub const DEFAULT : Self = Self { timestamp : 0_u64 , tx_rate : 0_u32 , rx_rate : 0_u32 , messages_sent : 0_u32 , messages_received : 0_u32 , messages_lost : 0_u32 , rx_parse_err : 0_u16 , tx_overflows : 0_u16 , rx_overflows : 0_u16 , tx_buf : 0_u8 , rx_buf : 0_u8 , } ; } impl Default for LINK_NODE_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for LINK_NODE_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 8u32 ; const NAME : & 'static str = "LINK_NODE_STATUS" ; const EXTRA_CRC : u8 = 117u8 ; const ENCODED_LEN : usize = 36usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . timestamp = buf . get_u64_le () ; __struct . tx_rate = buf . get_u32_le () ; __struct . rx_rate = buf . get_u32_le () ; __struct . messages_sent = buf . get_u32_le () ; __struct . messages_received = buf . get_u32_le () ; __struct . messages_lost = buf . get_u32_le () ; __struct . rx_parse_err = buf . get_u16_le () ; __struct . tx_overflows = buf . get_u16_le () ; __struct . rx_overflows = buf . get_u16_le () ; __struct . tx_buf = buf . get_u8 () ; __struct . rx_buf = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . timestamp) ; __tmp . put_u32_le (self . tx_rate) ; __tmp . put_u32_le (self . rx_rate) ; __tmp . put_u32_le (self . messages_sent) ; __tmp . put_u32_le (self . messages_received) ; __tmp . put_u32_le (self . messages_lost) ; __tmp . put_u16_le (self . rx_parse_err) ; __tmp . put_u16_le (self . tx_overflows) ; __tmp . put_u16_le (self . rx_overflows) ; __tmp . put_u8 (self . tx_buf) ; __tmp . put_u8 (self . rx_buf) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct COMMAND_CANCEL_DATA { pub command : MavCmd , pub target_system : u8 , pub target_component : u8 , } impl COMMAND_CANCEL_DATA { pub const ENCODED_LEN : usize = 4usize ; pub const DEFAULT : Self = Self { command : MavCmd :: DEFAULT , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for COMMAND_CANCEL_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for COMMAND_CANCEL_DATA { type Message = MavMessage ; const ID : u32 = 80u32 ; const NAME : & 'static str = "COMMAND_CANCEL" ; const EXTRA_CRC : u8 = 14u8 ; const ENCODED_LEN : usize = 4usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u16_le () ; __struct . command = FromPrimitive :: from_u16 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavCmd" , value : tmp as u32 }) ? ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . command as u16) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct VICON_POSITION_ESTIMATE_DATA { pub usec : u64 , pub x : f32 , pub y : f32 , pub z : f32 , pub roll : f32 , pub pitch : f32 , pub yaw : f32 , } impl VICON_POSITION_ESTIMATE_DATA { pub const ENCODED_LEN : usize = 32usize ; pub const DEFAULT : Self = Self { usec : 0_u64 , x : 0.0_f32 , y : 0.0_f32 , z : 0.0_f32 , roll : 0.0_f32 , pitch : 0.0_f32 , yaw : 0.0_f32 , } ; } impl Default for VICON_POSITION_ESTIMATE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for VICON_POSITION_ESTIMATE_DATA { type Message = MavMessage ; const ID : u32 = 104u32 ; const NAME : & 'static str = "VICON_POSITION_ESTIMATE" ; const EXTRA_CRC : u8 = 56u8 ; const ENCODED_LEN : usize = 32usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . usec = buf . get_u64_le () ; __struct . x = buf . get_f32_le () ; __struct . y = buf . get_f32_le () ; __struct . z = buf . get_f32_le () ; __struct . roll = buf . get_f32_le () ; __struct . pitch = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . usec) ; __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; __tmp . put_f32_le (self . roll) ; __tmp . put_f32_le (self . pitch) ; __tmp . put_f32_le (self . yaw) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SERVO_OUTPUT_RAW_DATA { pub time_usec : u32 , pub servo1_raw : u16 , pub servo2_raw : u16 , pub servo3_raw : u16 , pub servo4_raw : u16 , pub servo5_raw : u16 , pub servo6_raw : u16 , pub servo7_raw : u16 , pub servo8_raw : u16 , pub port : u8 , } impl SERVO_OUTPUT_RAW_DATA { pub const ENCODED_LEN : usize = 21usize ; pub const DEFAULT : Self = Self { time_usec : 0_u32 , servo1_raw : 0_u16 , servo2_raw : 0_u16 , servo3_raw : 0_u16 , servo4_raw : 0_u16 , servo5_raw : 0_u16 , servo6_raw : 0_u16 , servo7_raw : 0_u16 , servo8_raw : 0_u16 , port : 0_u8 , } ; } impl Default for SERVO_OUTPUT_RAW_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SERVO_OUTPUT_RAW_DATA { type Message = MavMessage ; const ID : u32 = 36u32 ; const NAME : & 'static str = "SERVO_OUTPUT_RAW" ; const EXTRA_CRC : u8 = 222u8 ; const ENCODED_LEN : usize = 21usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u32_le () ; __struct . servo1_raw = buf . get_u16_le () ; __struct . servo2_raw = buf . get_u16_le () ; __struct . servo3_raw = buf . get_u16_le () ; __struct . servo4_raw = buf . get_u16_le () ; __struct . servo5_raw = buf . get_u16_le () ; __struct . servo6_raw = buf . get_u16_le () ; __struct . servo7_raw = buf . get_u16_le () ; __struct . servo8_raw = buf . get_u16_le () ; __struct . port = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_usec) ; __tmp . put_u16_le (self . servo1_raw) ; __tmp . put_u16_le (self . servo2_raw) ; __tmp . put_u16_le (self . servo3_raw) ; __tmp . put_u16_le (self . servo4_raw) ; __tmp . put_u16_le (self . servo5_raw) ; __tmp . put_u16_le (self . servo6_raw) ; __tmp . put_u16_le (self . servo7_raw) ; __tmp . put_u16_le (self . servo8_raw) ; __tmp . put_u8 (self . port) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct TIMESYNC_DATA { pub tc1 : i64 , pub ts1 : i64 , } impl TIMESYNC_DATA { pub const ENCODED_LEN : usize = 16usize ; pub const DEFAULT : Self = Self { tc1 : 0_i64 , ts1 : 0_i64 , } ; } impl Default for TIMESYNC_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for TIMESYNC_DATA { type Message = MavMessage ; const ID : u32 = 111u32 ; const NAME : & 'static str = "TIMESYNC" ; const EXTRA_CRC : u8 = 34u8 ; const ENCODED_LEN : usize = 16usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . tc1 = buf . get_i64_le () ; __struct . ts1 = buf . get_i64_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i64_le (self . tc1) ; __tmp . put_i64_le (self . ts1) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct POWER_STATUS_DATA { pub Vcc : u16 , pub Vservo : u16 , pub flags : MavPowerStatus , } impl POWER_STATUS_DATA { pub const ENCODED_LEN : usize = 6usize ; pub const DEFAULT : Self = Self { Vcc : 0_u16 , Vservo : 0_u16 , flags : MavPowerStatus :: DEFAULT , } ; } impl Default for POWER_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for POWER_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 125u32 ; const NAME : & 'static str = "POWER_STATUS" ; const EXTRA_CRC : u8 = 203u8 ; const ENCODED_LEN : usize = 6usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . Vcc = buf . get_u16_le () ; __struct . Vservo = buf . get_u16_le () ; let tmp = buf . get_u16_le () ; __struct . flags = MavPowerStatus :: from_bits (tmp & MavPowerStatus :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "MavPowerStatus" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . Vcc) ; __tmp . put_u16_le (self . Vservo) ; __tmp . put_u16_le (self . flags . bits ()) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct OPEN_DRONE_ID_SYSTEM_UPDATE_DATA { pub operator_latitude : i32 , pub operator_longitude : i32 , pub operator_altitude_geo : f32 , pub timestamp : u32 , pub target_system : u8 , pub target_component : u8 , } impl OPEN_DRONE_ID_SYSTEM_UPDATE_DATA { pub const ENCODED_LEN : usize = 18usize ; pub const DEFAULT : Self = Self { operator_latitude : 0_i32 , operator_longitude : 0_i32 , operator_altitude_geo : 0.0_f32 , timestamp : 0_u32 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for OPEN_DRONE_ID_SYSTEM_UPDATE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for OPEN_DRONE_ID_SYSTEM_UPDATE_DATA { type Message = MavMessage ; const ID : u32 = 12919u32 ; const NAME : & 'static str = "OPEN_DRONE_ID_SYSTEM_UPDATE" ; const EXTRA_CRC : u8 = 7u8 ; const ENCODED_LEN : usize = 18usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . operator_latitude = buf . get_i32_le () ; __struct . operator_longitude = buf . get_i32_le () ; __struct . operator_altitude_geo = buf . get_f32_le () ; __struct . timestamp = buf . get_u32_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . operator_latitude) ; __tmp . put_i32_le (self . operator_longitude) ; __tmp . put_f32_le (self . operator_altitude_geo) ; __tmp . put_u32_le (self . timestamp) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct RAW_RPM_DATA { pub frequency : f32 , pub index : u8 , } impl RAW_RPM_DATA { pub const ENCODED_LEN : usize = 5usize ; pub const DEFAULT : Self = Self { frequency : 0.0_f32 , index : 0_u8 , } ; } impl Default for RAW_RPM_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for RAW_RPM_DATA { type Message = MavMessage ; const ID : u32 = 339u32 ; const NAME : & 'static str = "RAW_RPM" ; const EXTRA_CRC : u8 = 199u8 ; const ENCODED_LEN : usize = 5usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . frequency = buf . get_f32_le () ; __struct . index = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . frequency) ; __tmp . put_u8 (self . index) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct OPEN_DRONE_ID_LOCATION_DATA { pub latitude : i32 , pub longitude : i32 , pub altitude_barometric : f32 , pub altitude_geodetic : f32 , pub height : f32 , pub timestamp : f32 , pub direction : u16 , pub speed_horizontal : u16 , pub speed_vertical : i16 , pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub id_or_mac : [u8 ; 20] , pub status : MavOdidStatus , pub height_reference : MavOdidHeightRef , pub horizontal_accuracy : MavOdidHorAcc , pub vertical_accuracy : MavOdidVerAcc , pub barometer_accuracy : MavOdidVerAcc , pub speed_accuracy : MavOdidSpeedAcc , pub timestamp_accuracy : MavOdidTimeAcc , } impl OPEN_DRONE_ID_LOCATION_DATA { pub const ENCODED_LEN : usize = 59usize ; pub const DEFAULT : Self = Self { latitude : 0_i32 , longitude : 0_i32 , altitude_barometric : 0.0_f32 , altitude_geodetic : 0.0_f32 , height : 0.0_f32 , timestamp : 0.0_f32 , direction : 0_u16 , speed_horizontal : 0_u16 , speed_vertical : 0_i16 , target_system : 0_u8 , target_component : 0_u8 , id_or_mac : [0_u8 ; 20usize] , status : MavOdidStatus :: DEFAULT , height_reference : MavOdidHeightRef :: DEFAULT , horizontal_accuracy : MavOdidHorAcc :: DEFAULT , vertical_accuracy : MavOdidVerAcc :: DEFAULT , barometer_accuracy : MavOdidVerAcc :: DEFAULT , speed_accuracy : MavOdidSpeedAcc :: DEFAULT , timestamp_accuracy : MavOdidTimeAcc :: DEFAULT , } ; } impl Default for OPEN_DRONE_ID_LOCATION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for OPEN_DRONE_ID_LOCATION_DATA { type Message = MavMessage ; const ID : u32 = 12901u32 ; const NAME : & 'static str = "OPEN_DRONE_ID_LOCATION" ; const EXTRA_CRC : u8 = 254u8 ; const ENCODED_LEN : usize = 59usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . latitude = buf . get_i32_le () ; __struct . longitude = buf . get_i32_le () ; __struct . altitude_barometric = buf . get_f32_le () ; __struct . altitude_geodetic = buf . get_f32_le () ; __struct . height = buf . get_f32_le () ; __struct . timestamp = buf . get_f32_le () ; __struct . direction = buf . get_u16_le () ; __struct . speed_horizontal = buf . get_u16_le () ; __struct . speed_vertical = buf . get_i16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . id_or_mac { let val = buf . get_u8 () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . status = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidStatus" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . height_reference = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidHeightRef" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . horizontal_accuracy = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidHorAcc" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . vertical_accuracy = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidVerAcc" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . barometer_accuracy = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidVerAcc" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . speed_accuracy = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidSpeedAcc" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . timestamp_accuracy = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidTimeAcc" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . latitude) ; __tmp . put_i32_le (self . longitude) ; __tmp . put_f32_le (self . altitude_barometric) ; __tmp . put_f32_le (self . altitude_geodetic) ; __tmp . put_f32_le (self . height) ; __tmp . put_f32_le (self . timestamp) ; __tmp . put_u16_le (self . direction) ; __tmp . put_u16_le (self . speed_horizontal) ; __tmp . put_i16_le (self . speed_vertical) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . id_or_mac { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . status as u8) ; __tmp . put_u8 (self . height_reference as u8) ; __tmp . put_u8 (self . horizontal_accuracy as u8) ; __tmp . put_u8 (self . vertical_accuracy as u8) ; __tmp . put_u8 (self . barometer_accuracy as u8) ; __tmp . put_u8 (self . speed_accuracy as u8) ; __tmp . put_u8 (self . timestamp_accuracy as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LANDING_TARGET_DATA { pub time_usec : u64 , pub angle_x : f32 , pub angle_y : f32 , pub distance : f32 , pub size_x : f32 , pub size_y : f32 , pub target_num : u8 , pub frame : MavFrame , } impl LANDING_TARGET_DATA { pub const ENCODED_LEN : usize = 30usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , angle_x : 0.0_f32 , angle_y : 0.0_f32 , distance : 0.0_f32 , size_x : 0.0_f32 , size_y : 0.0_f32 , target_num : 0_u8 , frame : MavFrame :: DEFAULT , } ; } impl Default for LANDING_TARGET_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for LANDING_TARGET_DATA { type Message = MavMessage ; const ID : u32 = 149u32 ; const NAME : & 'static str = "LANDING_TARGET" ; const EXTRA_CRC : u8 = 200u8 ; const ENCODED_LEN : usize = 30usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . angle_x = buf . get_f32_le () ; __struct . angle_y = buf . get_f32_le () ; __struct . distance = buf . get_f32_le () ; __struct . size_x = buf . get_f32_le () ; __struct . size_y = buf . get_f32_le () ; __struct . target_num = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . frame = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavFrame" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . angle_x) ; __tmp . put_f32_le (self . angle_y) ; __tmp . put_f32_le (self . distance) ; __tmp . put_f32_le (self . size_x) ; __tmp . put_f32_le (self . size_y) ; __tmp . put_u8 (self . target_num) ; __tmp . put_u8 (self . frame as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GIMBAL_MANAGER_SET_ATTITUDE_DATA { pub flags : GimbalManagerFlags , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub q : [f32 ; 4] , pub angular_velocity_x : f32 , pub angular_velocity_y : f32 , pub angular_velocity_z : f32 , pub target_system : u8 , pub target_component : u8 , pub gimbal_device_id : u8 , } impl GIMBAL_MANAGER_SET_ATTITUDE_DATA { pub const ENCODED_LEN : usize = 35usize ; pub const DEFAULT : Self = Self { flags : GimbalManagerFlags :: DEFAULT , q : [0.0_f32 ; 4usize] , angular_velocity_x : 0.0_f32 , angular_velocity_y : 0.0_f32 , angular_velocity_z : 0.0_f32 , target_system : 0_u8 , target_component : 0_u8 , gimbal_device_id : 0_u8 , } ; } impl Default for GIMBAL_MANAGER_SET_ATTITUDE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GIMBAL_MANAGER_SET_ATTITUDE_DATA { type Message = MavMessage ; const ID : u32 = 282u32 ; const NAME : & 'static str = "GIMBAL_MANAGER_SET_ATTITUDE" ; const EXTRA_CRC : u8 = 123u8 ; const ENCODED_LEN : usize = 35usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u32_le () ; __struct . flags = FromPrimitive :: from_u32 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "GimbalManagerFlags" , value : tmp as u32 }) ? ; for v in & mut __struct . q { let val = buf . get_f32_le () ; * v = val ; } __struct . angular_velocity_x = buf . get_f32_le () ; __struct . angular_velocity_y = buf . get_f32_le () ; __struct . angular_velocity_z = buf . get_f32_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . gimbal_device_id = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . flags as u32) ; for val in & self . q { __tmp . put_f32_le (* val) ; } __tmp . put_f32_le (self . angular_velocity_x) ; __tmp . put_f32_le (self . angular_velocity_y) ; __tmp . put_f32_le (self . angular_velocity_z) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . gimbal_device_id) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ESC_STATUS_DATA { pub time_usec : u64 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub rpm : [i32 ; 4] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub voltage : [f32 ; 4] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub current : [f32 ; 4] , pub index : u8 , } impl ESC_STATUS_DATA { pub const ENCODED_LEN : usize = 57usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , rpm : [0_i32 ; 4usize] , voltage : [0.0_f32 ; 4usize] , current : [0.0_f32 ; 4usize] , index : 0_u8 , } ; } impl Default for ESC_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ESC_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 291u32 ; const NAME : & 'static str = "ESC_STATUS" ; const EXTRA_CRC : u8 = 10u8 ; const ENCODED_LEN : usize = 57usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; for v in & mut __struct . rpm { let val = buf . get_i32_le () ; * v = val ; } for v in & mut __struct . voltage { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . current { let val = buf . get_f32_le () ; * v = val ; } __struct . index = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; for val in & self . rpm { __tmp . put_i32_le (* val) ; } for val in & self . voltage { __tmp . put_f32_le (* val) ; } for val in & self . current { __tmp . put_f32_le (* val) ; } __tmp . put_u8 (self . index) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ORBIT_EXECUTION_STATUS_DATA { pub time_usec : u64 , pub radius : f32 , pub x : i32 , pub y : i32 , pub z : f32 , pub frame : MavFrame , } impl ORBIT_EXECUTION_STATUS_DATA { pub const ENCODED_LEN : usize = 25usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , radius : 0.0_f32 , x : 0_i32 , y : 0_i32 , z : 0.0_f32 , frame : MavFrame :: DEFAULT , } ; } impl Default for ORBIT_EXECUTION_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ORBIT_EXECUTION_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 360u32 ; const NAME : & 'static str = "ORBIT_EXECUTION_STATUS" ; const EXTRA_CRC : u8 = 11u8 ; const ENCODED_LEN : usize = 25usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . radius = buf . get_f32_le () ; __struct . x = buf . get_i32_le () ; __struct . y = buf . get_i32_le () ; __struct . z = buf . get_f32_le () ; let tmp = buf . get_u8 () ; __struct . frame = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavFrame" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . radius) ; __tmp . put_i32_le (self . x) ; __tmp . put_i32_le (self . y) ; __tmp . put_f32_le (self . z) ; __tmp . put_u8 (self . frame as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SYS_STATUS_DATA { pub onboard_control_sensors_present : MavSysStatusSensor , pub onboard_control_sensors_enabled : MavSysStatusSensor , pub onboard_control_sensors_health : MavSysStatusSensor , pub load : u16 , pub voltage_battery : u16 , pub current_battery : i16 , pub drop_rate_comm : u16 , pub errors_comm : u16 , pub errors_count1 : u16 , pub errors_count2 : u16 , pub errors_count3 : u16 , pub errors_count4 : u16 , pub battery_remaining : i8 , } impl SYS_STATUS_DATA { pub const ENCODED_LEN : usize = 31usize ; pub const DEFAULT : Self = Self { onboard_control_sensors_present : MavSysStatusSensor :: DEFAULT , onboard_control_sensors_enabled : MavSysStatusSensor :: DEFAULT , onboard_control_sensors_health : MavSysStatusSensor :: DEFAULT , load : 0_u16 , voltage_battery : 0_u16 , current_battery : 0_i16 , drop_rate_comm : 0_u16 , errors_comm : 0_u16 , errors_count1 : 0_u16 , errors_count2 : 0_u16 , errors_count3 : 0_u16 , errors_count4 : 0_u16 , battery_remaining : 0_i8 , } ; } impl Default for SYS_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SYS_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 1u32 ; const NAME : & 'static str = "SYS_STATUS" ; const EXTRA_CRC : u8 = 124u8 ; const ENCODED_LEN : usize = 31usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u32_le () ; __struct . onboard_control_sensors_present = MavSysStatusSensor :: from_bits (tmp & MavSysStatusSensor :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "MavSysStatusSensor" , value : tmp as u32 }) ? ; let tmp = buf . get_u32_le () ; __struct . onboard_control_sensors_enabled = MavSysStatusSensor :: from_bits (tmp & MavSysStatusSensor :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "MavSysStatusSensor" , value : tmp as u32 }) ? ; let tmp = buf . get_u32_le () ; __struct . onboard_control_sensors_health = MavSysStatusSensor :: from_bits (tmp & MavSysStatusSensor :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "MavSysStatusSensor" , value : tmp as u32 }) ? ; __struct . load = buf . get_u16_le () ; __struct . voltage_battery = buf . get_u16_le () ; __struct . current_battery = buf . get_i16_le () ; __struct . drop_rate_comm = buf . get_u16_le () ; __struct . errors_comm = buf . get_u16_le () ; __struct . errors_count1 = buf . get_u16_le () ; __struct . errors_count2 = buf . get_u16_le () ; __struct . errors_count3 = buf . get_u16_le () ; __struct . errors_count4 = buf . get_u16_le () ; __struct . battery_remaining = buf . get_i8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . onboard_control_sensors_present . bits ()) ; __tmp . put_u32_le (self . onboard_control_sensors_enabled . bits ()) ; __tmp . put_u32_le (self . onboard_control_sensors_health . bits ()) ; __tmp . put_u16_le (self . load) ; __tmp . put_u16_le (self . voltage_battery) ; __tmp . put_i16_le (self . current_battery) ; __tmp . put_u16_le (self . drop_rate_comm) ; __tmp . put_u16_le (self . errors_comm) ; __tmp . put_u16_le (self . errors_count1) ; __tmp . put_u16_le (self . errors_count2) ; __tmp . put_u16_le (self . errors_count3) ; __tmp . put_u16_le (self . errors_count4) ; __tmp . put_i8 (self . battery_remaining) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LOG_REQUEST_DATA_DATA { pub ofs : u32 , pub count : u32 , pub id : u16 , pub target_system : u8 , pub target_component : u8 , } impl LOG_REQUEST_DATA_DATA { pub const ENCODED_LEN : usize = 12usize ; pub const DEFAULT : Self = Self { ofs : 0_u32 , count : 0_u32 , id : 0_u16 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for LOG_REQUEST_DATA_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for LOG_REQUEST_DATA_DATA { type Message = MavMessage ; const ID : u32 = 119u32 ; const NAME : & 'static str = "LOG_REQUEST_DATA" ; const EXTRA_CRC : u8 = 116u8 ; const ENCODED_LEN : usize = 12usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . ofs = buf . get_u32_le () ; __struct . count = buf . get_u32_le () ; __struct . id = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . ofs) ; __tmp . put_u32_le (self . count) ; __tmp . put_u16_le (self . id) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct AUTH_KEY_DATA { # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub key : [u8 ; 32] , } impl AUTH_KEY_DATA { pub const ENCODED_LEN : usize = 32usize ; pub const DEFAULT : Self = Self { key : [0_u8 ; 32usize] , } ; } impl Default for AUTH_KEY_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for AUTH_KEY_DATA { type Message = MavMessage ; const ID : u32 = 7u32 ; const NAME : & 'static str = "AUTH_KEY" ; const EXTRA_CRC : u8 = 119u8 ; const ENCODED_LEN : usize = 32usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; for v in & mut __struct . key { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; for val in & self . key { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LOG_REQUEST_LIST_DATA { pub start : u16 , pub end : u16 , pub target_system : u8 , pub target_component : u8 , } impl LOG_REQUEST_LIST_DATA { pub const ENCODED_LEN : usize = 6usize ; pub const DEFAULT : Self = Self { start : 0_u16 , end : 0_u16 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for LOG_REQUEST_LIST_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for LOG_REQUEST_LIST_DATA { type Message = MavMessage ; const ID : u32 = 117u32 ; const NAME : & 'static str = "LOG_REQUEST_LIST" ; const EXTRA_CRC : u8 = 128u8 ; const ENCODED_LEN : usize = 6usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . start = buf . get_u16_le () ; __struct . end = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . start) ; __tmp . put_u16_le (self . end) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GPS_INJECT_DATA_DATA { pub target_system : u8 , pub target_component : u8 , pub len : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub data : [u8 ; 110] , } impl GPS_INJECT_DATA_DATA { pub const ENCODED_LEN : usize = 113usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , len : 0_u8 , data : [0_u8 ; 110usize] , } ; } impl Default for GPS_INJECT_DATA_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GPS_INJECT_DATA_DATA { type Message = MavMessage ; const ID : u32 = 123u32 ; const NAME : & 'static str = "GPS_INJECT_DATA" ; const EXTRA_CRC : u8 = 250u8 ; const ENCODED_LEN : usize = 113usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . len = buf . get_u8 () ; for v in & mut __struct . data { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . len) ; for val in & self . data { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MISSION_SET_CURRENT_DATA { pub seq : u16 , pub target_system : u8 , pub target_component : u8 , } impl MISSION_SET_CURRENT_DATA { pub const ENCODED_LEN : usize = 4usize ; pub const DEFAULT : Self = Self { seq : 0_u16 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for MISSION_SET_CURRENT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MISSION_SET_CURRENT_DATA { type Message = MavMessage ; const ID : u32 = 41u32 ; const NAME : & 'static str = "MISSION_SET_CURRENT" ; const EXTRA_CRC : u8 = 28u8 ; const ENCODED_LEN : usize = 4usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . seq = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . seq) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct COMMAND_INT_DATA { pub param1 : f32 , pub param2 : f32 , pub param3 : f32 , pub param4 : f32 , pub x : i32 , pub y : i32 , pub z : f32 , pub command : MavCmd , pub target_system : u8 , pub target_component : u8 , pub frame : MavFrame , pub current : u8 , pub autocontinue : u8 , } impl COMMAND_INT_DATA { pub const ENCODED_LEN : usize = 35usize ; pub const DEFAULT : Self = Self { param1 : 0.0_f32 , param2 : 0.0_f32 , param3 : 0.0_f32 , param4 : 0.0_f32 , x : 0_i32 , y : 0_i32 , z : 0.0_f32 , command : MavCmd :: DEFAULT , target_system : 0_u8 , target_component : 0_u8 , frame : MavFrame :: DEFAULT , current : 0_u8 , autocontinue : 0_u8 , } ; } impl Default for COMMAND_INT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for COMMAND_INT_DATA { type Message = MavMessage ; const ID : u32 = 75u32 ; const NAME : & 'static str = "COMMAND_INT" ; const EXTRA_CRC : u8 = 158u8 ; const ENCODED_LEN : usize = 35usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . param1 = buf . get_f32_le () ; __struct . param2 = buf . get_f32_le () ; __struct . param3 = buf . get_f32_le () ; __struct . param4 = buf . get_f32_le () ; __struct . x = buf . get_i32_le () ; __struct . y = buf . get_i32_le () ; __struct . z = buf . get_f32_le () ; let tmp = buf . get_u16_le () ; __struct . command = FromPrimitive :: from_u16 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavCmd" , value : tmp as u32 }) ? ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . frame = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavFrame" , value : tmp as u32 }) ? ; __struct . current = buf . get_u8 () ; __struct . autocontinue = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . param1) ; __tmp . put_f32_le (self . param2) ; __tmp . put_f32_le (self . param3) ; __tmp . put_f32_le (self . param4) ; __tmp . put_i32_le (self . x) ; __tmp . put_i32_le (self . y) ; __tmp . put_f32_le (self . z) ; __tmp . put_u16_le (self . command as u16) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . frame as u8) ; __tmp . put_u8 (self . current) ; __tmp . put_u8 (self . autocontinue) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HIGH_LATENCY2_DATA { pub timestamp : u32 , pub latitude : i32 , pub longitude : i32 , pub custom_mode : u16 , pub altitude : i16 , pub target_altitude : i16 , pub target_distance : u16 , pub wp_num : u16 , pub failure_flags : HlFailureFlag , pub mavtype : MavType , pub autopilot : MavAutopilot , pub heading : u8 , pub target_heading : u8 , pub throttle : u8 , pub airspeed : u8 , pub airspeed_sp : u8 , pub groundspeed : u8 , pub windspeed : u8 , pub wind_heading : u8 , pub eph : u8 , pub epv : u8 , pub temperature_air : i8 , pub climb_rate : i8 , pub battery : i8 , pub custom0 : i8 , pub custom1 : i8 , pub custom2 : i8 , } impl HIGH_LATENCY2_DATA { pub const ENCODED_LEN : usize = 42usize ; pub const DEFAULT : Self = Self { timestamp : 0_u32 , latitude : 0_i32 , longitude : 0_i32 , custom_mode : 0_u16 , altitude : 0_i16 , target_altitude : 0_i16 , target_distance : 0_u16 , wp_num : 0_u16 , failure_flags : HlFailureFlag :: DEFAULT , mavtype : MavType :: DEFAULT , autopilot : MavAutopilot :: DEFAULT , heading : 0_u8 , target_heading : 0_u8 , throttle : 0_u8 , airspeed : 0_u8 , airspeed_sp : 0_u8 , groundspeed : 0_u8 , windspeed : 0_u8 , wind_heading : 0_u8 , eph : 0_u8 , epv : 0_u8 , temperature_air : 0_i8 , climb_rate : 0_i8 , battery : 0_i8 , custom0 : 0_i8 , custom1 : 0_i8 , custom2 : 0_i8 , } ; } impl Default for HIGH_LATENCY2_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for HIGH_LATENCY2_DATA { type Message = MavMessage ; const ID : u32 = 235u32 ; const NAME : & 'static str = "HIGH_LATENCY2" ; const EXTRA_CRC : u8 = 179u8 ; const ENCODED_LEN : usize = 42usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . timestamp = buf . get_u32_le () ; __struct . latitude = buf . get_i32_le () ; __struct . longitude = buf . get_i32_le () ; __struct . custom_mode = buf . get_u16_le () ; __struct . altitude = buf . get_i16_le () ; __struct . target_altitude = buf . get_i16_le () ; __struct . target_distance = buf . get_u16_le () ; __struct . wp_num = buf . get_u16_le () ; let tmp = buf . get_u16_le () ; __struct . failure_flags = HlFailureFlag :: from_bits (tmp & HlFailureFlag :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "HlFailureFlag" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . mavtype = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavType" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . autopilot = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavAutopilot" , value : tmp as u32 }) ? ; __struct . heading = buf . get_u8 () ; __struct . target_heading = buf . get_u8 () ; __struct . throttle = buf . get_u8 () ; __struct . airspeed = buf . get_u8 () ; __struct . airspeed_sp = buf . get_u8 () ; __struct . groundspeed = buf . get_u8 () ; __struct . windspeed = buf . get_u8 () ; __struct . wind_heading = buf . get_u8 () ; __struct . eph = buf . get_u8 () ; __struct . epv = buf . get_u8 () ; __struct . temperature_air = buf . get_i8 () ; __struct . climb_rate = buf . get_i8 () ; __struct . battery = buf . get_i8 () ; __struct . custom0 = buf . get_i8 () ; __struct . custom1 = buf . get_i8 () ; __struct . custom2 = buf . get_i8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . timestamp) ; __tmp . put_i32_le (self . latitude) ; __tmp . put_i32_le (self . longitude) ; __tmp . put_u16_le (self . custom_mode) ; __tmp . put_i16_le (self . altitude) ; __tmp . put_i16_le (self . target_altitude) ; __tmp . put_u16_le (self . target_distance) ; __tmp . put_u16_le (self . wp_num) ; __tmp . put_u16_le (self . failure_flags . bits ()) ; __tmp . put_u8 (self . mavtype as u8) ; __tmp . put_u8 (self . autopilot as u8) ; __tmp . put_u8 (self . heading) ; __tmp . put_u8 (self . target_heading) ; __tmp . put_u8 (self . throttle) ; __tmp . put_u8 (self . airspeed) ; __tmp . put_u8 (self . airspeed_sp) ; __tmp . put_u8 (self . groundspeed) ; __tmp . put_u8 (self . windspeed) ; __tmp . put_u8 (self . wind_heading) ; __tmp . put_u8 (self . eph) ; __tmp . put_u8 (self . epv) ; __tmp . put_i8 (self . temperature_air) ; __tmp . put_i8 (self . climb_rate) ; __tmp . put_i8 (self . battery) ; __tmp . put_i8 (self . custom0) ; __tmp . put_i8 (self . custom1) ; __tmp . put_i8 (self . custom2) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct BUTTON_CHANGE_DATA { pub time_boot_ms : u32 , pub last_change_ms : u32 , pub state : u8 , } impl BUTTON_CHANGE_DATA { pub const ENCODED_LEN : usize = 9usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , last_change_ms : 0_u32 , state : 0_u8 , } ; } impl Default for BUTTON_CHANGE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for BUTTON_CHANGE_DATA { type Message = MavMessage ; const ID : u32 = 257u32 ; const NAME : & 'static str = "BUTTON_CHANGE" ; const EXTRA_CRC : u8 = 131u8 ; const ENCODED_LEN : usize = 9usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . last_change_ms = buf . get_u32_le () ; __struct . state = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_u32_le (self . last_change_ms) ; __tmp . put_u8 (self . state) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CAMERA_SETTINGS_DATA { pub time_boot_ms : u32 , pub mode_id : CameraMode , } impl CAMERA_SETTINGS_DATA { pub const ENCODED_LEN : usize = 5usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , mode_id : CameraMode :: DEFAULT , } ; } impl Default for CAMERA_SETTINGS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CAMERA_SETTINGS_DATA { type Message = MavMessage ; const ID : u32 = 260u32 ; const NAME : & 'static str = "CAMERA_SETTINGS" ; const EXTRA_CRC : u8 = 146u8 ; const ENCODED_LEN : usize = 5usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; let tmp = buf . get_u8 () ; __struct . mode_id = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "CameraMode" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_u8 (self . mode_id as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct DEBUG_FLOAT_ARRAY_DATA { pub time_usec : u64 , pub array_id : u16 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub name : [u8 ; 10] , } impl DEBUG_FLOAT_ARRAY_DATA { pub const ENCODED_LEN : usize = 20usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , array_id : 0_u16 , name : [0_u8 ; 10usize] , } ; } impl Default for DEBUG_FLOAT_ARRAY_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for DEBUG_FLOAT_ARRAY_DATA { type Message = MavMessage ; const ID : u32 = 350u32 ; const NAME : & 'static str = "DEBUG_FLOAT_ARRAY" ; const EXTRA_CRC : u8 = 232u8 ; const ENCODED_LEN : usize = 20usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . array_id = buf . get_u16_le () ; for v in & mut __struct . name { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_u16_le (self . array_id) ; for val in & self . name { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct COMPONENT_METADATA_DATA { pub time_boot_ms : u32 , pub file_crc : u32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub uri : [u8 ; 100] , } impl COMPONENT_METADATA_DATA { pub const ENCODED_LEN : usize = 108usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , file_crc : 0_u32 , uri : [0_u8 ; 100usize] , } ; } impl Default for COMPONENT_METADATA_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for COMPONENT_METADATA_DATA { type Message = MavMessage ; const ID : u32 = 397u32 ; const NAME : & 'static str = "COMPONENT_METADATA" ; const EXTRA_CRC : u8 = 182u8 ; const ENCODED_LEN : usize = 108usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . file_crc = buf . get_u32_le () ; for v in & mut __struct . uri { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_u32_le (self . file_crc) ; for val in & self . uri { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MISSION_CLEAR_ALL_DATA { pub target_system : u8 , pub target_component : u8 , } impl MISSION_CLEAR_ALL_DATA { pub const ENCODED_LEN : usize = 2usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for MISSION_CLEAR_ALL_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MISSION_CLEAR_ALL_DATA { type Message = MavMessage ; const ID : u32 = 45u32 ; const NAME : & 'static str = "MISSION_CLEAR_ALL" ; const EXTRA_CRC : u8 = 232u8 ; const ENCODED_LEN : usize = 2usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct COLLISION_DATA { pub id : u32 , pub time_to_minimum_delta : f32 , pub altitude_minimum_delta : f32 , pub horizontal_minimum_delta : f32 , pub src : MavCollisionSrc , pub action : MavCollisionAction , pub threat_level : MavCollisionThreatLevel , } impl COLLISION_DATA { pub const ENCODED_LEN : usize = 19usize ; pub const DEFAULT : Self = Self { id : 0_u32 , time_to_minimum_delta : 0.0_f32 , altitude_minimum_delta : 0.0_f32 , horizontal_minimum_delta : 0.0_f32 , src : MavCollisionSrc :: DEFAULT , action : MavCollisionAction :: DEFAULT , threat_level : MavCollisionThreatLevel :: DEFAULT , } ; } impl Default for COLLISION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for COLLISION_DATA { type Message = MavMessage ; const ID : u32 = 247u32 ; const NAME : & 'static str = "COLLISION" ; const EXTRA_CRC : u8 = 81u8 ; const ENCODED_LEN : usize = 19usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . id = buf . get_u32_le () ; __struct . time_to_minimum_delta = buf . get_f32_le () ; __struct . altitude_minimum_delta = buf . get_f32_le () ; __struct . horizontal_minimum_delta = buf . get_f32_le () ; let tmp = buf . get_u8 () ; __struct . src = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavCollisionSrc" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . action = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavCollisionAction" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . threat_level = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavCollisionThreatLevel" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . id) ; __tmp . put_f32_le (self . time_to_minimum_delta) ; __tmp . put_f32_le (self . altitude_minimum_delta) ; __tmp . put_f32_le (self . horizontal_minimum_delta) ; __tmp . put_u8 (self . src as u8) ; __tmp . put_u8 (self . action as u8) ; __tmp . put_u8 (self . threat_level as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SUPPORTED_TUNES_DATA { pub format : TuneFormat , pub target_system : u8 , pub target_component : u8 , } impl SUPPORTED_TUNES_DATA { pub const ENCODED_LEN : usize = 6usize ; pub const DEFAULT : Self = Self { format : TuneFormat :: DEFAULT , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for SUPPORTED_TUNES_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SUPPORTED_TUNES_DATA { type Message = MavMessage ; const ID : u32 = 401u32 ; const NAME : & 'static str = "SUPPORTED_TUNES" ; const EXTRA_CRC : u8 = 183u8 ; const ENCODED_LEN : usize = 6usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u32_le () ; __struct . format = TuneFormat :: from_bits (tmp & TuneFormat :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "TuneFormat" , value : tmp as u32 }) ? ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . format . bits ()) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct EVENT_DATA { pub id : u32 , pub event_time_boot_ms : u32 , pub sequence : u16 , pub destination_component : u8 , pub destination_system : u8 , pub log_levels : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub arguments : [u8 ; 40] , } impl EVENT_DATA { pub const ENCODED_LEN : usize = 53usize ; pub const DEFAULT : Self = Self { id : 0_u32 , event_time_boot_ms : 0_u32 , sequence : 0_u16 , destination_component : 0_u8 , destination_system : 0_u8 , log_levels : 0_u8 , arguments : [0_u8 ; 40usize] , } ; } impl Default for EVENT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for EVENT_DATA { type Message = MavMessage ; const ID : u32 = 410u32 ; const NAME : & 'static str = "EVENT" ; const EXTRA_CRC : u8 = 160u8 ; const ENCODED_LEN : usize = 53usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . id = buf . get_u32_le () ; __struct . event_time_boot_ms = buf . get_u32_le () ; __struct . sequence = buf . get_u16_le () ; __struct . destination_component = buf . get_u8 () ; __struct . destination_system = buf . get_u8 () ; __struct . log_levels = buf . get_u8 () ; for v in & mut __struct . arguments { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . id) ; __tmp . put_u32_le (self . event_time_boot_ms) ; __tmp . put_u16_le (self . sequence) ; __tmp . put_u8 (self . destination_component) ; __tmp . put_u8 (self . destination_system) ; __tmp . put_u8 (self . log_levels) ; for val in & self . arguments { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CANFD_FRAME_DATA { pub id : u32 , pub target_system : u8 , pub target_component : u8 , pub bus : u8 , pub len : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub data : [u8 ; 64] , } impl CANFD_FRAME_DATA { pub const ENCODED_LEN : usize = 72usize ; pub const DEFAULT : Self = Self { id : 0_u32 , target_system : 0_u8 , target_component : 0_u8 , bus : 0_u8 , len : 0_u8 , data : [0_u8 ; 64usize] , } ; } impl Default for CANFD_FRAME_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CANFD_FRAME_DATA { type Message = MavMessage ; const ID : u32 = 387u32 ; const NAME : & 'static str = "CANFD_FRAME" ; const EXTRA_CRC : u8 = 4u8 ; const ENCODED_LEN : usize = 72usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . id = buf . get_u32_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . bus = buf . get_u8 () ; __struct . len = buf . get_u8 () ; for v in & mut __struct . data { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . id) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . bus) ; __tmp . put_u8 (self . len) ; for val in & self . data { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GIMBAL_DEVICE_ATTITUDE_STATUS_DATA { pub time_boot_ms : u32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub q : [f32 ; 4] , pub angular_velocity_x : f32 , pub angular_velocity_y : f32 , pub angular_velocity_z : f32 , pub failure_flags : GimbalDeviceErrorFlags , pub flags : GimbalDeviceFlags , pub target_system : u8 , pub target_component : u8 , } impl GIMBAL_DEVICE_ATTITUDE_STATUS_DATA { pub const ENCODED_LEN : usize = 40usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , q : [0.0_f32 ; 4usize] , angular_velocity_x : 0.0_f32 , angular_velocity_y : 0.0_f32 , angular_velocity_z : 0.0_f32 , failure_flags : GimbalDeviceErrorFlags :: DEFAULT , flags : GimbalDeviceFlags :: DEFAULT , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for GIMBAL_DEVICE_ATTITUDE_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GIMBAL_DEVICE_ATTITUDE_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 285u32 ; const NAME : & 'static str = "GIMBAL_DEVICE_ATTITUDE_STATUS" ; const EXTRA_CRC : u8 = 137u8 ; const ENCODED_LEN : usize = 40usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; for v in & mut __struct . q { let val = buf . get_f32_le () ; * v = val ; } __struct . angular_velocity_x = buf . get_f32_le () ; __struct . angular_velocity_y = buf . get_f32_le () ; __struct . angular_velocity_z = buf . get_f32_le () ; let tmp = buf . get_u32_le () ; __struct . failure_flags = GimbalDeviceErrorFlags :: from_bits (tmp & GimbalDeviceErrorFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "GimbalDeviceErrorFlags" , value : tmp as u32 }) ? ; let tmp = buf . get_u16_le () ; __struct . flags = GimbalDeviceFlags :: from_bits (tmp & GimbalDeviceFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "GimbalDeviceFlags" , value : tmp as u32 }) ? ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; for val in & self . q { __tmp . put_f32_le (* val) ; } __tmp . put_f32_le (self . angular_velocity_x) ; __tmp . put_f32_le (self . angular_velocity_y) ; __tmp . put_f32_le (self . angular_velocity_z) ; __tmp . put_u32_le (self . failure_flags . bits ()) ; __tmp . put_u16_le (self . flags . bits ()) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HOME_POSITION_DATA { pub latitude : i32 , pub longitude : i32 , pub altitude : i32 , pub x : f32 , pub y : f32 , pub z : f32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub q : [f32 ; 4] , pub approach_x : f32 , pub approach_y : f32 , pub approach_z : f32 , } impl HOME_POSITION_DATA { pub const ENCODED_LEN : usize = 52usize ; pub const DEFAULT : Self = Self { latitude : 0_i32 , longitude : 0_i32 , altitude : 0_i32 , x : 0.0_f32 , y : 0.0_f32 , z : 0.0_f32 , q : [0.0_f32 ; 4usize] , approach_x : 0.0_f32 , approach_y : 0.0_f32 , approach_z : 0.0_f32 , } ; } impl Default for HOME_POSITION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for HOME_POSITION_DATA { type Message = MavMessage ; const ID : u32 = 242u32 ; const NAME : & 'static str = "HOME_POSITION" ; const EXTRA_CRC : u8 = 104u8 ; const ENCODED_LEN : usize = 52usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . latitude = buf . get_i32_le () ; __struct . longitude = buf . get_i32_le () ; __struct . altitude = buf . get_i32_le () ; __struct . x = buf . get_f32_le () ; __struct . y = buf . get_f32_le () ; __struct . z = buf . get_f32_le () ; for v in & mut __struct . q { let val = buf . get_f32_le () ; * v = val ; } __struct . approach_x = buf . get_f32_le () ; __struct . approach_y = buf . get_f32_le () ; __struct . approach_z = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . latitude) ; __tmp . put_i32_le (self . longitude) ; __tmp . put_i32_le (self . altitude) ; __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; for val in & self . q { __tmp . put_f32_le (* val) ; } __tmp . put_f32_le (self . approach_x) ; __tmp . put_f32_le (self . approach_y) ; __tmp . put_f32_le (self . approach_z) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct OPEN_DRONE_ID_SYSTEM_DATA { pub operator_latitude : i32 , pub operator_longitude : i32 , pub area_ceiling : f32 , pub area_floor : f32 , pub operator_altitude_geo : f32 , pub timestamp : u32 , pub area_count : u16 , pub area_radius : u16 , pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub id_or_mac : [u8 ; 20] , pub operator_location_type : MavOdidOperatorLocationType , pub classification_type : MavOdidClassificationType , pub category_eu : MavOdidCategoryEu , pub class_eu : MavOdidClassEu , } impl OPEN_DRONE_ID_SYSTEM_DATA { pub const ENCODED_LEN : usize = 54usize ; pub const DEFAULT : Self = Self { operator_latitude : 0_i32 , operator_longitude : 0_i32 , area_ceiling : 0.0_f32 , area_floor : 0.0_f32 , operator_altitude_geo : 0.0_f32 , timestamp : 0_u32 , area_count : 0_u16 , area_radius : 0_u16 , target_system : 0_u8 , target_component : 0_u8 , id_or_mac : [0_u8 ; 20usize] , operator_location_type : MavOdidOperatorLocationType :: DEFAULT , classification_type : MavOdidClassificationType :: DEFAULT , category_eu : MavOdidCategoryEu :: DEFAULT , class_eu : MavOdidClassEu :: DEFAULT , } ; } impl Default for OPEN_DRONE_ID_SYSTEM_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for OPEN_DRONE_ID_SYSTEM_DATA { type Message = MavMessage ; const ID : u32 = 12904u32 ; const NAME : & 'static str = "OPEN_DRONE_ID_SYSTEM" ; const EXTRA_CRC : u8 = 77u8 ; const ENCODED_LEN : usize = 54usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . operator_latitude = buf . get_i32_le () ; __struct . operator_longitude = buf . get_i32_le () ; __struct . area_ceiling = buf . get_f32_le () ; __struct . area_floor = buf . get_f32_le () ; __struct . operator_altitude_geo = buf . get_f32_le () ; __struct . timestamp = buf . get_u32_le () ; __struct . area_count = buf . get_u16_le () ; __struct . area_radius = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . id_or_mac { let val = buf . get_u8 () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . operator_location_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidOperatorLocationType" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . classification_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidClassificationType" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . category_eu = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidCategoryEu" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . class_eu = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidClassEu" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . operator_latitude) ; __tmp . put_i32_le (self . operator_longitude) ; __tmp . put_f32_le (self . area_ceiling) ; __tmp . put_f32_le (self . area_floor) ; __tmp . put_f32_le (self . operator_altitude_geo) ; __tmp . put_u32_le (self . timestamp) ; __tmp . put_u16_le (self . area_count) ; __tmp . put_u16_le (self . area_radius) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . id_or_mac { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . operator_location_type as u8) ; __tmp . put_u8 (self . classification_type as u8) ; __tmp . put_u8 (self . category_eu as u8) ; __tmp . put_u8 (self . class_eu as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GPS_RAW_INT_DATA { pub time_usec : u64 , pub lat : i32 , pub lon : i32 , pub alt : i32 , pub eph : u16 , pub epv : u16 , pub vel : u16 , pub cog : u16 , pub fix_type : GpsFixType , pub satellites_visible : u8 , } impl GPS_RAW_INT_DATA { pub const ENCODED_LEN : usize = 30usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , lat : 0_i32 , lon : 0_i32 , alt : 0_i32 , eph : 0_u16 , epv : 0_u16 , vel : 0_u16 , cog : 0_u16 , fix_type : GpsFixType :: DEFAULT , satellites_visible : 0_u8 , } ; } impl Default for GPS_RAW_INT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GPS_RAW_INT_DATA { type Message = MavMessage ; const ID : u32 = 24u32 ; const NAME : & 'static str = "GPS_RAW_INT" ; const EXTRA_CRC : u8 = 24u8 ; const ENCODED_LEN : usize = 30usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . alt = buf . get_i32_le () ; __struct . eph = buf . get_u16_le () ; __struct . epv = buf . get_u16_le () ; __struct . vel = buf . get_u16_le () ; __struct . cog = buf . get_u16_le () ; let tmp = buf . get_u8 () ; __struct . fix_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "GpsFixType" , value : tmp as u32 }) ? ; __struct . satellites_visible = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_i32_le (self . alt) ; __tmp . put_u16_le (self . eph) ; __tmp . put_u16_le (self . epv) ; __tmp . put_u16_le (self . vel) ; __tmp . put_u16_le (self . cog) ; __tmp . put_u8 (self . fix_type as u8) ; __tmp . put_u8 (self . satellites_visible) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PING_DATA { pub time_usec : u64 , pub seq : u32 , pub target_system : u8 , pub target_component : u8 , } impl PING_DATA { pub const ENCODED_LEN : usize = 14usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , seq : 0_u32 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for PING_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for PING_DATA { type Message = MavMessage ; const ID : u32 = 4u32 ; const NAME : & 'static str = "PING" ; const EXTRA_CRC : u8 = 237u8 ; const ENCODED_LEN : usize = 14usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . seq = buf . get_u32_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_u32_le (self . seq) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HIL_CONTROLS_DATA { pub time_usec : u64 , pub roll_ailerons : f32 , pub pitch_elevator : f32 , pub yaw_rudder : f32 , pub throttle : f32 , pub aux1 : f32 , pub aux2 : f32 , pub aux3 : f32 , pub aux4 : f32 , pub mode : MavMode , pub nav_mode : u8 , } impl HIL_CONTROLS_DATA { pub const ENCODED_LEN : usize = 42usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , roll_ailerons : 0.0_f32 , pitch_elevator : 0.0_f32 , yaw_rudder : 0.0_f32 , throttle : 0.0_f32 , aux1 : 0.0_f32 , aux2 : 0.0_f32 , aux3 : 0.0_f32 , aux4 : 0.0_f32 , mode : MavMode :: DEFAULT , nav_mode : 0_u8 , } ; } impl Default for HIL_CONTROLS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for HIL_CONTROLS_DATA { type Message = MavMessage ; const ID : u32 = 91u32 ; const NAME : & 'static str = "HIL_CONTROLS" ; const EXTRA_CRC : u8 = 63u8 ; const ENCODED_LEN : usize = 42usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . roll_ailerons = buf . get_f32_le () ; __struct . pitch_elevator = buf . get_f32_le () ; __struct . yaw_rudder = buf . get_f32_le () ; __struct . throttle = buf . get_f32_le () ; __struct . aux1 = buf . get_f32_le () ; __struct . aux2 = buf . get_f32_le () ; __struct . aux3 = buf . get_f32_le () ; __struct . aux4 = buf . get_f32_le () ; let tmp = buf . get_u8 () ; __struct . mode = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavMode" , value : tmp as u32 }) ? ; __struct . nav_mode = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . roll_ailerons) ; __tmp . put_f32_le (self . pitch_elevator) ; __tmp . put_f32_le (self . yaw_rudder) ; __tmp . put_f32_le (self . throttle) ; __tmp . put_f32_le (self . aux1) ; __tmp . put_f32_le (self . aux2) ; __tmp . put_f32_le (self . aux3) ; __tmp . put_f32_le (self . aux4) ; __tmp . put_u8 (self . mode as u8) ; __tmp . put_u8 (self . nav_mode) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HIL_RC_INPUTS_RAW_DATA { pub time_usec : u64 , pub chan1_raw : u16 , pub chan2_raw : u16 , pub chan3_raw : u16 , pub chan4_raw : u16 , pub chan5_raw : u16 , pub chan6_raw : u16 , pub chan7_raw : u16 , pub chan8_raw : u16 , pub chan9_raw : u16 , pub chan10_raw : u16 , pub chan11_raw : u16 , pub chan12_raw : u16 , pub rssi : u8 , } impl HIL_RC_INPUTS_RAW_DATA { pub const ENCODED_LEN : usize = 33usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , chan1_raw : 0_u16 , chan2_raw : 0_u16 , chan3_raw : 0_u16 , chan4_raw : 0_u16 , chan5_raw : 0_u16 , chan6_raw : 0_u16 , chan7_raw : 0_u16 , chan8_raw : 0_u16 , chan9_raw : 0_u16 , chan10_raw : 0_u16 , chan11_raw : 0_u16 , chan12_raw : 0_u16 , rssi : 0_u8 , } ; } impl Default for HIL_RC_INPUTS_RAW_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for HIL_RC_INPUTS_RAW_DATA { type Message = MavMessage ; const ID : u32 = 92u32 ; const NAME : & 'static str = "HIL_RC_INPUTS_RAW" ; const EXTRA_CRC : u8 = 54u8 ; const ENCODED_LEN : usize = 33usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . chan1_raw = buf . get_u16_le () ; __struct . chan2_raw = buf . get_u16_le () ; __struct . chan3_raw = buf . get_u16_le () ; __struct . chan4_raw = buf . get_u16_le () ; __struct . chan5_raw = buf . get_u16_le () ; __struct . chan6_raw = buf . get_u16_le () ; __struct . chan7_raw = buf . get_u16_le () ; __struct . chan8_raw = buf . get_u16_le () ; __struct . chan9_raw = buf . get_u16_le () ; __struct . chan10_raw = buf . get_u16_le () ; __struct . chan11_raw = buf . get_u16_le () ; __struct . chan12_raw = buf . get_u16_le () ; __struct . rssi = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_u16_le (self . chan1_raw) ; __tmp . put_u16_le (self . chan2_raw) ; __tmp . put_u16_le (self . chan3_raw) ; __tmp . put_u16_le (self . chan4_raw) ; __tmp . put_u16_le (self . chan5_raw) ; __tmp . put_u16_le (self . chan6_raw) ; __tmp . put_u16_le (self . chan7_raw) ; __tmp . put_u16_le (self . chan8_raw) ; __tmp . put_u16_le (self . chan9_raw) ; __tmp . put_u16_le (self . chan10_raw) ; __tmp . put_u16_le (self . chan11_raw) ; __tmp . put_u16_le (self . chan12_raw) ; __tmp . put_u8 (self . rssi) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct STATUSTEXT_DATA { pub severity : MavSeverity , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub text : [u8 ; 50] , } impl STATUSTEXT_DATA { pub const ENCODED_LEN : usize = 51usize ; pub const DEFAULT : Self = Self { severity : MavSeverity :: DEFAULT , text : [0_u8 ; 50usize] , } ; } impl Default for STATUSTEXT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for STATUSTEXT_DATA { type Message = MavMessage ; const ID : u32 = 253u32 ; const NAME : & 'static str = "STATUSTEXT" ; const EXTRA_CRC : u8 = 83u8 ; const ENCODED_LEN : usize = 51usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u8 () ; __struct . severity = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavSeverity" , value : tmp as u32 }) ? ; for v in & mut __struct . text { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . severity as u8) ; for val in & self . text { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PARAM_VALUE_DATA { pub param_value : f32 , pub param_count : u16 , pub param_index : u16 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub param_id : [u8 ; 16] , pub param_type : MavParamType , } impl PARAM_VALUE_DATA { pub const ENCODED_LEN : usize = 25usize ; pub const DEFAULT : Self = Self { param_value : 0.0_f32 , param_count : 0_u16 , param_index : 0_u16 , param_id : [0_u8 ; 16usize] , param_type : MavParamType :: DEFAULT , } ; } impl Default for PARAM_VALUE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for PARAM_VALUE_DATA { type Message = MavMessage ; const ID : u32 = 22u32 ; const NAME : & 'static str = "PARAM_VALUE" ; const EXTRA_CRC : u8 = 220u8 ; const ENCODED_LEN : usize = 25usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . param_value = buf . get_f32_le () ; __struct . param_count = buf . get_u16_le () ; __struct . param_index = buf . get_u16_le () ; for v in & mut __struct . param_id { let val = buf . get_u8 () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . param_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavParamType" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . param_value) ; __tmp . put_u16_le (self . param_count) ; __tmp . put_u16_le (self . param_index) ; for val in & self . param_id { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . param_type as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SET_POSITION_TARGET_LOCAL_NED_DATA { pub time_boot_ms : u32 , pub x : f32 , pub y : f32 , pub z : f32 , pub vx : f32 , pub vy : f32 , pub vz : f32 , pub afx : f32 , pub afy : f32 , pub afz : f32 , pub yaw : f32 , pub yaw_rate : f32 , pub type_mask : PositionTargetTypemask , pub target_system : u8 , pub target_component : u8 , pub coordinate_frame : MavFrame , } impl SET_POSITION_TARGET_LOCAL_NED_DATA { pub const ENCODED_LEN : usize = 53usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , x : 0.0_f32 , y : 0.0_f32 , z : 0.0_f32 , vx : 0.0_f32 , vy : 0.0_f32 , vz : 0.0_f32 , afx : 0.0_f32 , afy : 0.0_f32 , afz : 0.0_f32 , yaw : 0.0_f32 , yaw_rate : 0.0_f32 , type_mask : PositionTargetTypemask :: DEFAULT , target_system : 0_u8 , target_component : 0_u8 , coordinate_frame : MavFrame :: DEFAULT , } ; } impl Default for SET_POSITION_TARGET_LOCAL_NED_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SET_POSITION_TARGET_LOCAL_NED_DATA { type Message = MavMessage ; const ID : u32 = 84u32 ; const NAME : & 'static str = "SET_POSITION_TARGET_LOCAL_NED" ; const EXTRA_CRC : u8 = 143u8 ; const ENCODED_LEN : usize = 53usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . x = buf . get_f32_le () ; __struct . y = buf . get_f32_le () ; __struct . z = buf . get_f32_le () ; __struct . vx = buf . get_f32_le () ; __struct . vy = buf . get_f32_le () ; __struct . vz = buf . get_f32_le () ; __struct . afx = buf . get_f32_le () ; __struct . afy = buf . get_f32_le () ; __struct . afz = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; __struct . yaw_rate = buf . get_f32_le () ; let tmp = buf . get_u16_le () ; __struct . type_mask = PositionTargetTypemask :: from_bits (tmp & PositionTargetTypemask :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "PositionTargetTypemask" , value : tmp as u32 }) ? ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . coordinate_frame = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavFrame" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; __tmp . put_f32_le (self . vx) ; __tmp . put_f32_le (self . vy) ; __tmp . put_f32_le (self . vz) ; __tmp . put_f32_le (self . afx) ; __tmp . put_f32_le (self . afy) ; __tmp . put_f32_le (self . afz) ; __tmp . put_f32_le (self . yaw) ; __tmp . put_f32_le (self . yaw_rate) ; __tmp . put_u16_le (self . type_mask . bits ()) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . coordinate_frame as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MISSION_REQUEST_DATA { pub seq : u16 , pub target_system : u8 , pub target_component : u8 , } impl MISSION_REQUEST_DATA { pub const ENCODED_LEN : usize = 4usize ; pub const DEFAULT : Self = Self { seq : 0_u16 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for MISSION_REQUEST_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MISSION_REQUEST_DATA { type Message = MavMessage ; const ID : u32 = 40u32 ; const NAME : & 'static str = "MISSION_REQUEST" ; const EXTRA_CRC : u8 = 230u8 ; const ENCODED_LEN : usize = 4usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . seq = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . seq) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct TIME_ESTIMATE_TO_TARGET_DATA { pub safe_return : i32 , pub land : i32 , pub mission_next_item : i32 , pub mission_end : i32 , pub commanded_action : i32 , } impl TIME_ESTIMATE_TO_TARGET_DATA { pub const ENCODED_LEN : usize = 20usize ; pub const DEFAULT : Self = Self { safe_return : 0_i32 , land : 0_i32 , mission_next_item : 0_i32 , mission_end : 0_i32 , commanded_action : 0_i32 , } ; } impl Default for TIME_ESTIMATE_TO_TARGET_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for TIME_ESTIMATE_TO_TARGET_DATA { type Message = MavMessage ; const ID : u32 = 380u32 ; const NAME : & 'static str = "TIME_ESTIMATE_TO_TARGET" ; const EXTRA_CRC : u8 = 232u8 ; const ENCODED_LEN : usize = 20usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . safe_return = buf . get_i32_le () ; __struct . land = buf . get_i32_le () ; __struct . mission_next_item = buf . get_i32_le () ; __struct . mission_end = buf . get_i32_le () ; __struct . commanded_action = buf . get_i32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . safe_return) ; __tmp . put_i32_le (self . land) ; __tmp . put_i32_le (self . mission_next_item) ; __tmp . put_i32_le (self . mission_end) ; __tmp . put_i32_le (self . commanded_action) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct RAW_IMU_DATA { pub time_usec : u64 , pub xacc : i16 , pub yacc : i16 , pub zacc : i16 , pub xgyro : i16 , pub ygyro : i16 , pub zgyro : i16 , pub xmag : i16 , pub ymag : i16 , pub zmag : i16 , } impl RAW_IMU_DATA { pub const ENCODED_LEN : usize = 26usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , xacc : 0_i16 , yacc : 0_i16 , zacc : 0_i16 , xgyro : 0_i16 , ygyro : 0_i16 , zgyro : 0_i16 , xmag : 0_i16 , ymag : 0_i16 , zmag : 0_i16 , } ; } impl Default for RAW_IMU_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for RAW_IMU_DATA { type Message = MavMessage ; const ID : u32 = 27u32 ; const NAME : & 'static str = "RAW_IMU" ; const EXTRA_CRC : u8 = 144u8 ; const ENCODED_LEN : usize = 26usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . xacc = buf . get_i16_le () ; __struct . yacc = buf . get_i16_le () ; __struct . zacc = buf . get_i16_le () ; __struct . xgyro = buf . get_i16_le () ; __struct . ygyro = buf . get_i16_le () ; __struct . zgyro = buf . get_i16_le () ; __struct . xmag = buf . get_i16_le () ; __struct . ymag = buf . get_i16_le () ; __struct . zmag = buf . get_i16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_i16_le (self . xacc) ; __tmp . put_i16_le (self . yacc) ; __tmp . put_i16_le (self . zacc) ; __tmp . put_i16_le (self . xgyro) ; __tmp . put_i16_le (self . ygyro) ; __tmp . put_i16_le (self . zgyro) ; __tmp . put_i16_le (self . xmag) ; __tmp . put_i16_le (self . ymag) ; __tmp . put_i16_le (self . zmag) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct DATA_TRANSMISSION_HANDSHAKE_DATA { pub size : u32 , pub width : u16 , pub height : u16 , pub packets : u16 , pub mavtype : MavlinkDataStreamType , pub payload : u8 , pub jpg_quality : u8 , } impl DATA_TRANSMISSION_HANDSHAKE_DATA { pub const ENCODED_LEN : usize = 13usize ; pub const DEFAULT : Self = Self { size : 0_u32 , width : 0_u16 , height : 0_u16 , packets : 0_u16 , mavtype : MavlinkDataStreamType :: DEFAULT , payload : 0_u8 , jpg_quality : 0_u8 , } ; } impl Default for DATA_TRANSMISSION_HANDSHAKE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for DATA_TRANSMISSION_HANDSHAKE_DATA { type Message = MavMessage ; const ID : u32 = 130u32 ; const NAME : & 'static str = "DATA_TRANSMISSION_HANDSHAKE" ; const EXTRA_CRC : u8 = 29u8 ; const ENCODED_LEN : usize = 13usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . size = buf . get_u32_le () ; __struct . width = buf . get_u16_le () ; __struct . height = buf . get_u16_le () ; __struct . packets = buf . get_u16_le () ; let tmp = buf . get_u8 () ; __struct . mavtype = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavlinkDataStreamType" , value : tmp as u32 }) ? ; __struct . payload = buf . get_u8 () ; __struct . jpg_quality = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . size) ; __tmp . put_u16_le (self . width) ; __tmp . put_u16_le (self . height) ; __tmp . put_u16_le (self . packets) ; __tmp . put_u8 (self . mavtype as u8) ; __tmp . put_u8 (self . payload) ; __tmp . put_u8 (self . jpg_quality) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct OPEN_DRONE_ID_OPERATOR_ID_DATA { pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub id_or_mac : [u8 ; 20] , pub operator_id_type : MavOdidOperatorIdType , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub operator_id : [u8 ; 20] , } impl OPEN_DRONE_ID_OPERATOR_ID_DATA { pub const ENCODED_LEN : usize = 43usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , id_or_mac : [0_u8 ; 20usize] , operator_id_type : MavOdidOperatorIdType :: DEFAULT , operator_id : [0_u8 ; 20usize] , } ; } impl Default for OPEN_DRONE_ID_OPERATOR_ID_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for OPEN_DRONE_ID_OPERATOR_ID_DATA { type Message = MavMessage ; const ID : u32 = 12905u32 ; const NAME : & 'static str = "OPEN_DRONE_ID_OPERATOR_ID" ; const EXTRA_CRC : u8 = 49u8 ; const ENCODED_LEN : usize = 43usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . id_or_mac { let val = buf . get_u8 () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . operator_id_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidOperatorIdType" , value : tmp as u32 }) ? ; for v in & mut __struct . operator_id { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . id_or_mac { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . operator_id_type as u8) ; for val in & self . operator_id { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MISSION_WRITE_PARTIAL_LIST_DATA { pub start_index : i16 , pub end_index : i16 , pub target_system : u8 , pub target_component : u8 , } impl MISSION_WRITE_PARTIAL_LIST_DATA { pub const ENCODED_LEN : usize = 6usize ; pub const DEFAULT : Self = Self { start_index : 0_i16 , end_index : 0_i16 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for MISSION_WRITE_PARTIAL_LIST_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MISSION_WRITE_PARTIAL_LIST_DATA { type Message = MavMessage ; const ID : u32 = 38u32 ; const NAME : & 'static str = "MISSION_WRITE_PARTIAL_LIST" ; const EXTRA_CRC : u8 = 9u8 ; const ENCODED_LEN : usize = 6usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . start_index = buf . get_i16_le () ; __struct . end_index = buf . get_i16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i16_le (self . start_index) ; __tmp . put_i16_le (self . end_index) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct V2_EXTENSION_DATA { pub message_type : u16 , pub target_network : u8 , pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub payload : [u8 ; 249] , } impl V2_EXTENSION_DATA { pub const ENCODED_LEN : usize = 254usize ; pub const DEFAULT : Self = Self { message_type : 0_u16 , target_network : 0_u8 , target_system : 0_u8 , target_component : 0_u8 , payload : [0_u8 ; 249usize] , } ; } impl Default for V2_EXTENSION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for V2_EXTENSION_DATA { type Message = MavMessage ; const ID : u32 = 248u32 ; const NAME : & 'static str = "V2_EXTENSION" ; const EXTRA_CRC : u8 = 8u8 ; const ENCODED_LEN : usize = 254usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . message_type = buf . get_u16_le () ; __struct . target_network = buf . get_u8 () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . payload { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . message_type) ; __tmp . put_u8 (self . target_network) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . payload { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CAMERA_FOV_STATUS_DATA { pub time_boot_ms : u32 , pub lat_camera : i32 , pub lon_camera : i32 , pub alt_camera : i32 , pub lat_image : i32 , pub lon_image : i32 , pub alt_image : i32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub q : [f32 ; 4] , pub hfov : f32 , pub vfov : f32 , } impl CAMERA_FOV_STATUS_DATA { pub const ENCODED_LEN : usize = 52usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , lat_camera : 0_i32 , lon_camera : 0_i32 , alt_camera : 0_i32 , lat_image : 0_i32 , lon_image : 0_i32 , alt_image : 0_i32 , q : [0.0_f32 ; 4usize] , hfov : 0.0_f32 , vfov : 0.0_f32 , } ; } impl Default for CAMERA_FOV_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CAMERA_FOV_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 271u32 ; const NAME : & 'static str = "CAMERA_FOV_STATUS" ; const EXTRA_CRC : u8 = 22u8 ; const ENCODED_LEN : usize = 52usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . lat_camera = buf . get_i32_le () ; __struct . lon_camera = buf . get_i32_le () ; __struct . alt_camera = buf . get_i32_le () ; __struct . lat_image = buf . get_i32_le () ; __struct . lon_image = buf . get_i32_le () ; __struct . alt_image = buf . get_i32_le () ; for v in & mut __struct . q { let val = buf . get_f32_le () ; * v = val ; } __struct . hfov = buf . get_f32_le () ; __struct . vfov = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_i32_le (self . lat_camera) ; __tmp . put_i32_le (self . lon_camera) ; __tmp . put_i32_le (self . alt_camera) ; __tmp . put_i32_le (self . lat_image) ; __tmp . put_i32_le (self . lon_image) ; __tmp . put_i32_le (self . alt_image) ; for val in & self . q { __tmp . put_f32_le (* val) ; } __tmp . put_f32_le (self . hfov) ; __tmp . put_f32_le (self . vfov) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MAG_CAL_REPORT_DATA { pub fitness : f32 , pub ofs_x : f32 , pub ofs_y : f32 , pub ofs_z : f32 , pub diag_x : f32 , pub diag_y : f32 , pub diag_z : f32 , pub offdiag_x : f32 , pub offdiag_y : f32 , pub offdiag_z : f32 , pub compass_id : u8 , pub cal_mask : u8 , pub cal_status : MagCalStatus , pub autosaved : u8 , } impl MAG_CAL_REPORT_DATA { pub const ENCODED_LEN : usize = 44usize ; pub const DEFAULT : Self = Self { fitness : 0.0_f32 , ofs_x : 0.0_f32 , ofs_y : 0.0_f32 , ofs_z : 0.0_f32 , diag_x : 0.0_f32 , diag_y : 0.0_f32 , diag_z : 0.0_f32 , offdiag_x : 0.0_f32 , offdiag_y : 0.0_f32 , offdiag_z : 0.0_f32 , compass_id : 0_u8 , cal_mask : 0_u8 , cal_status : MagCalStatus :: DEFAULT , autosaved : 0_u8 , } ; } impl Default for MAG_CAL_REPORT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MAG_CAL_REPORT_DATA { type Message = MavMessage ; const ID : u32 = 192u32 ; const NAME : & 'static str = "MAG_CAL_REPORT" ; const EXTRA_CRC : u8 = 36u8 ; const ENCODED_LEN : usize = 44usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . fitness = buf . get_f32_le () ; __struct . ofs_x = buf . get_f32_le () ; __struct . ofs_y = buf . get_f32_le () ; __struct . ofs_z = buf . get_f32_le () ; __struct . diag_x = buf . get_f32_le () ; __struct . diag_y = buf . get_f32_le () ; __struct . diag_z = buf . get_f32_le () ; __struct . offdiag_x = buf . get_f32_le () ; __struct . offdiag_y = buf . get_f32_le () ; __struct . offdiag_z = buf . get_f32_le () ; __struct . compass_id = buf . get_u8 () ; __struct . cal_mask = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . cal_status = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MagCalStatus" , value : tmp as u32 }) ? ; __struct . autosaved = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . fitness) ; __tmp . put_f32_le (self . ofs_x) ; __tmp . put_f32_le (self . ofs_y) ; __tmp . put_f32_le (self . ofs_z) ; __tmp . put_f32_le (self . diag_x) ; __tmp . put_f32_le (self . diag_y) ; __tmp . put_f32_le (self . diag_z) ; __tmp . put_f32_le (self . offdiag_x) ; __tmp . put_f32_le (self . offdiag_y) ; __tmp . put_f32_le (self . offdiag_z) ; __tmp . put_u8 (self . compass_id) ; __tmp . put_u8 (self . cal_mask) ; __tmp . put_u8 (self . cal_status as u8) ; __tmp . put_u8 (self . autosaved) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SCALED_PRESSURE_DATA { pub time_boot_ms : u32 , pub press_abs : f32 , pub press_diff : f32 , pub temperature : i16 , } impl SCALED_PRESSURE_DATA { pub const ENCODED_LEN : usize = 14usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , press_abs : 0.0_f32 , press_diff : 0.0_f32 , temperature : 0_i16 , } ; } impl Default for SCALED_PRESSURE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SCALED_PRESSURE_DATA { type Message = MavMessage ; const ID : u32 = 29u32 ; const NAME : & 'static str = "SCALED_PRESSURE" ; const EXTRA_CRC : u8 = 115u8 ; const ENCODED_LEN : usize = 14usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . press_abs = buf . get_f32_le () ; __struct . press_diff = buf . get_f32_le () ; __struct . temperature = buf . get_i16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . press_abs) ; __tmp . put_f32_le (self . press_diff) ; __tmp . put_i16_le (self . temperature) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LOGGING_DATA_DATA { pub sequence : u16 , pub target_system : u8 , pub target_component : u8 , pub length : u8 , pub first_message_offset : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub data : [u8 ; 249] , } impl LOGGING_DATA_DATA { pub const ENCODED_LEN : usize = 255usize ; pub const DEFAULT : Self = Self { sequence : 0_u16 , target_system : 0_u8 , target_component : 0_u8 , length : 0_u8 , first_message_offset : 0_u8 , data : [0_u8 ; 249usize] , } ; } impl Default for LOGGING_DATA_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for LOGGING_DATA_DATA { type Message = MavMessage ; const ID : u32 = 266u32 ; const NAME : & 'static str = "LOGGING_DATA" ; const EXTRA_CRC : u8 = 193u8 ; const ENCODED_LEN : usize = 255usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . sequence = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . length = buf . get_u8 () ; __struct . first_message_offset = buf . get_u8 () ; for v in & mut __struct . data { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . sequence) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . length) ; __tmp . put_u8 (self . first_message_offset) ; for val in & self . data { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ESC_INFO_DATA { pub time_usec : u64 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub error_count : [u32 ; 4] , pub counter : u16 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub failure_flags : [u16 ; 4] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub temperature : [i16 ; 4] , pub index : u8 , pub count : u8 , pub connection_type : EscConnectionType , pub info : u8 , } impl ESC_INFO_DATA { pub const ENCODED_LEN : usize = 46usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , error_count : [0_u32 ; 4usize] , counter : 0_u16 , failure_flags : [0_u16 ; 4usize] , temperature : [0_i16 ; 4usize] , index : 0_u8 , count : 0_u8 , connection_type : EscConnectionType :: DEFAULT , info : 0_u8 , } ; } impl Default for ESC_INFO_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ESC_INFO_DATA { type Message = MavMessage ; const ID : u32 = 290u32 ; const NAME : & 'static str = "ESC_INFO" ; const EXTRA_CRC : u8 = 251u8 ; const ENCODED_LEN : usize = 46usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; for v in & mut __struct . error_count { let val = buf . get_u32_le () ; * v = val ; } __struct . counter = buf . get_u16_le () ; for v in & mut __struct . failure_flags { let val = buf . get_u16_le () ; * v = val ; } for v in & mut __struct . temperature { let val = buf . get_i16_le () ; * v = val ; } __struct . index = buf . get_u8 () ; __struct . count = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . connection_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "EscConnectionType" , value : tmp as u32 }) ? ; __struct . info = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; for val in & self . error_count { __tmp . put_u32_le (* val) ; } __tmp . put_u16_le (self . counter) ; for val in & self . failure_flags { __tmp . put_u16_le (* val) ; } for val in & self . temperature { __tmp . put_i16_le (* val) ; } __tmp . put_u8 (self . index) ; __tmp . put_u8 (self . count) ; __tmp . put_u8 (self . connection_type as u8) ; __tmp . put_u8 (self . info) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CELLULAR_STATUS_DATA { pub mcc : u16 , pub mnc : u16 , pub lac : u16 , pub status : CellularStatusFlag , pub failure_reason : CellularNetworkFailedReason , pub mavtype : CellularNetworkRadioType , pub quality : u8 , } impl CELLULAR_STATUS_DATA { pub const ENCODED_LEN : usize = 10usize ; pub const DEFAULT : Self = Self { mcc : 0_u16 , mnc : 0_u16 , lac : 0_u16 , status : CellularStatusFlag :: DEFAULT , failure_reason : CellularNetworkFailedReason :: DEFAULT , mavtype : CellularNetworkRadioType :: DEFAULT , quality : 0_u8 , } ; } impl Default for CELLULAR_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CELLULAR_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 334u32 ; const NAME : & 'static str = "CELLULAR_STATUS" ; const EXTRA_CRC : u8 = 72u8 ; const ENCODED_LEN : usize = 10usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . mcc = buf . get_u16_le () ; __struct . mnc = buf . get_u16_le () ; __struct . lac = buf . get_u16_le () ; let tmp = buf . get_u8 () ; __struct . status = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "CellularStatusFlag" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . failure_reason = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "CellularNetworkFailedReason" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . mavtype = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "CellularNetworkRadioType" , value : tmp as u32 }) ? ; __struct . quality = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . mcc) ; __tmp . put_u16_le (self . mnc) ; __tmp . put_u16_le (self . lac) ; __tmp . put_u8 (self . status as u8) ; __tmp . put_u8 (self . failure_reason as u8) ; __tmp . put_u8 (self . mavtype as u8) ; __tmp . put_u8 (self . quality) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct RC_CHANNELS_SCALED_DATA { pub time_boot_ms : u32 , pub chan1_scaled : i16 , pub chan2_scaled : i16 , pub chan3_scaled : i16 , pub chan4_scaled : i16 , pub chan5_scaled : i16 , pub chan6_scaled : i16 , pub chan7_scaled : i16 , pub chan8_scaled : i16 , pub port : u8 , pub rssi : u8 , } impl RC_CHANNELS_SCALED_DATA { pub const ENCODED_LEN : usize = 22usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , chan1_scaled : 0_i16 , chan2_scaled : 0_i16 , chan3_scaled : 0_i16 , chan4_scaled : 0_i16 , chan5_scaled : 0_i16 , chan6_scaled : 0_i16 , chan7_scaled : 0_i16 , chan8_scaled : 0_i16 , port : 0_u8 , rssi : 0_u8 , } ; } impl Default for RC_CHANNELS_SCALED_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for RC_CHANNELS_SCALED_DATA { type Message = MavMessage ; const ID : u32 = 34u32 ; const NAME : & 'static str = "RC_CHANNELS_SCALED" ; const EXTRA_CRC : u8 = 237u8 ; const ENCODED_LEN : usize = 22usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . chan1_scaled = buf . get_i16_le () ; __struct . chan2_scaled = buf . get_i16_le () ; __struct . chan3_scaled = buf . get_i16_le () ; __struct . chan4_scaled = buf . get_i16_le () ; __struct . chan5_scaled = buf . get_i16_le () ; __struct . chan6_scaled = buf . get_i16_le () ; __struct . chan7_scaled = buf . get_i16_le () ; __struct . chan8_scaled = buf . get_i16_le () ; __struct . port = buf . get_u8 () ; __struct . rssi = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_i16_le (self . chan1_scaled) ; __tmp . put_i16_le (self . chan2_scaled) ; __tmp . put_i16_le (self . chan3_scaled) ; __tmp . put_i16_le (self . chan4_scaled) ; __tmp . put_i16_le (self . chan5_scaled) ; __tmp . put_i16_le (self . chan6_scaled) ; __tmp . put_i16_le (self . chan7_scaled) ; __tmp . put_i16_le (self . chan8_scaled) ; __tmp . put_u8 (self . port) ; __tmp . put_u8 (self . rssi) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MANUAL_CONTROL_DATA { pub x : i16 , pub y : i16 , pub z : i16 , pub r : i16 , pub buttons : u16 , pub target : u8 , } impl MANUAL_CONTROL_DATA { pub const ENCODED_LEN : usize = 11usize ; pub const DEFAULT : Self = Self { x : 0_i16 , y : 0_i16 , z : 0_i16 , r : 0_i16 , buttons : 0_u16 , target : 0_u8 , } ; } impl Default for MANUAL_CONTROL_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MANUAL_CONTROL_DATA { type Message = MavMessage ; const ID : u32 = 69u32 ; const NAME : & 'static str = "MANUAL_CONTROL" ; const EXTRA_CRC : u8 = 243u8 ; const ENCODED_LEN : usize = 11usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . x = buf . get_i16_le () ; __struct . y = buf . get_i16_le () ; __struct . z = buf . get_i16_le () ; __struct . r = buf . get_i16_le () ; __struct . buttons = buf . get_u16_le () ; __struct . target = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i16_le (self . x) ; __tmp . put_i16_le (self . y) ; __tmp . put_i16_le (self . z) ; __tmp . put_i16_le (self . r) ; __tmp . put_u16_le (self . buttons) ; __tmp . put_u8 (self . target) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct DATA_STREAM_DATA { pub message_rate : u16 , pub stream_id : u8 , pub on_off : u8 , } impl DATA_STREAM_DATA { pub const ENCODED_LEN : usize = 4usize ; pub const DEFAULT : Self = Self { message_rate : 0_u16 , stream_id : 0_u8 , on_off : 0_u8 , } ; } impl Default for DATA_STREAM_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for DATA_STREAM_DATA { type Message = MavMessage ; const ID : u32 = 67u32 ; const NAME : & 'static str = "DATA_STREAM" ; const EXTRA_CRC : u8 = 21u8 ; const ENCODED_LEN : usize = 4usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . message_rate = buf . get_u16_le () ; __struct . stream_id = buf . get_u8 () ; __struct . on_off = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . message_rate) ; __tmp . put_u8 (self . stream_id) ; __tmp . put_u8 (self . on_off) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SET_HOME_POSITION_DATA { pub latitude : i32 , pub longitude : i32 , pub altitude : i32 , pub x : f32 , pub y : f32 , pub z : f32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub q : [f32 ; 4] , pub approach_x : f32 , pub approach_y : f32 , pub approach_z : f32 , pub target_system : u8 , } impl SET_HOME_POSITION_DATA { pub const ENCODED_LEN : usize = 53usize ; pub const DEFAULT : Self = Self { latitude : 0_i32 , longitude : 0_i32 , altitude : 0_i32 , x : 0.0_f32 , y : 0.0_f32 , z : 0.0_f32 , q : [0.0_f32 ; 4usize] , approach_x : 0.0_f32 , approach_y : 0.0_f32 , approach_z : 0.0_f32 , target_system : 0_u8 , } ; } impl Default for SET_HOME_POSITION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SET_HOME_POSITION_DATA { type Message = MavMessage ; const ID : u32 = 243u32 ; const NAME : & 'static str = "SET_HOME_POSITION" ; const EXTRA_CRC : u8 = 85u8 ; const ENCODED_LEN : usize = 53usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . latitude = buf . get_i32_le () ; __struct . longitude = buf . get_i32_le () ; __struct . altitude = buf . get_i32_le () ; __struct . x = buf . get_f32_le () ; __struct . y = buf . get_f32_le () ; __struct . z = buf . get_f32_le () ; for v in & mut __struct . q { let val = buf . get_f32_le () ; * v = val ; } __struct . approach_x = buf . get_f32_le () ; __struct . approach_y = buf . get_f32_le () ; __struct . approach_z = buf . get_f32_le () ; __struct . target_system = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . latitude) ; __tmp . put_i32_le (self . longitude) ; __tmp . put_i32_le (self . altitude) ; __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; for val in & self . q { __tmp . put_f32_le (* val) ; } __tmp . put_f32_le (self . approach_x) ; __tmp . put_f32_le (self . approach_y) ; __tmp . put_f32_le (self . approach_z) ; __tmp . put_u8 (self . target_system) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GIMBAL_DEVICE_SET_ATTITUDE_DATA { # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub q : [f32 ; 4] , pub angular_velocity_x : f32 , pub angular_velocity_y : f32 , pub angular_velocity_z : f32 , pub flags : GimbalDeviceFlags , pub target_system : u8 , pub target_component : u8 , } impl GIMBAL_DEVICE_SET_ATTITUDE_DATA { pub const ENCODED_LEN : usize = 32usize ; pub const DEFAULT : Self = Self { q : [0.0_f32 ; 4usize] , angular_velocity_x : 0.0_f32 , angular_velocity_y : 0.0_f32 , angular_velocity_z : 0.0_f32 , flags : GimbalDeviceFlags :: DEFAULT , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for GIMBAL_DEVICE_SET_ATTITUDE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GIMBAL_DEVICE_SET_ATTITUDE_DATA { type Message = MavMessage ; const ID : u32 = 284u32 ; const NAME : & 'static str = "GIMBAL_DEVICE_SET_ATTITUDE" ; const EXTRA_CRC : u8 = 99u8 ; const ENCODED_LEN : usize = 32usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; for v in & mut __struct . q { let val = buf . get_f32_le () ; * v = val ; } __struct . angular_velocity_x = buf . get_f32_le () ; __struct . angular_velocity_y = buf . get_f32_le () ; __struct . angular_velocity_z = buf . get_f32_le () ; let tmp = buf . get_u16_le () ; __struct . flags = GimbalDeviceFlags :: from_bits (tmp & GimbalDeviceFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "GimbalDeviceFlags" , value : tmp as u32 }) ? ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; for val in & self . q { __tmp . put_f32_le (* val) ; } __tmp . put_f32_le (self . angular_velocity_x) ; __tmp . put_f32_le (self . angular_velocity_y) ; __tmp . put_f32_le (self . angular_velocity_z) ; __tmp . put_u16_le (self . flags . bits ()) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct TUNNEL_DATA { pub payload_type : MavTunnelPayloadType , pub target_system : u8 , pub target_component : u8 , pub payload_length : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub payload : [u8 ; 128] , } impl TUNNEL_DATA { pub const ENCODED_LEN : usize = 133usize ; pub const DEFAULT : Self = Self { payload_type : MavTunnelPayloadType :: DEFAULT , target_system : 0_u8 , target_component : 0_u8 , payload_length : 0_u8 , payload : [0_u8 ; 128usize] , } ; } impl Default for TUNNEL_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for TUNNEL_DATA { type Message = MavMessage ; const ID : u32 = 385u32 ; const NAME : & 'static str = "TUNNEL" ; const EXTRA_CRC : u8 = 147u8 ; const ENCODED_LEN : usize = 133usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u16_le () ; __struct . payload_type = FromPrimitive :: from_u16 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavTunnelPayloadType" , value : tmp as u32 }) ? ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . payload_length = buf . get_u8 () ; for v in & mut __struct . payload { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . payload_type as u16) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . payload_length) ; for val in & self . payload { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct COMPONENT_INFORMATION_DATA { pub time_boot_ms : u32 , pub general_metadata_file_crc : u32 , pub peripherals_metadata_file_crc : u32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub general_metadata_uri : [u8 ; 100] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub peripherals_metadata_uri : [u8 ; 100] , } impl COMPONENT_INFORMATION_DATA { pub const ENCODED_LEN : usize = 212usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , general_metadata_file_crc : 0_u32 , peripherals_metadata_file_crc : 0_u32 , general_metadata_uri : [0_u8 ; 100usize] , peripherals_metadata_uri : [0_u8 ; 100usize] , } ; } impl Default for COMPONENT_INFORMATION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for COMPONENT_INFORMATION_DATA { type Message = MavMessage ; const ID : u32 = 395u32 ; const NAME : & 'static str = "COMPONENT_INFORMATION" ; const EXTRA_CRC : u8 = 0u8 ; const ENCODED_LEN : usize = 212usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . general_metadata_file_crc = buf . get_u32_le () ; __struct . peripherals_metadata_file_crc = buf . get_u32_le () ; for v in & mut __struct . general_metadata_uri { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . peripherals_metadata_uri { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_u32_le (self . general_metadata_file_crc) ; __tmp . put_u32_le (self . peripherals_metadata_file_crc) ; for val in & self . general_metadata_uri { __tmp . put_u8 (* val) ; } for val in & self . peripherals_metadata_uri { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SET_ACTUATOR_CONTROL_TARGET_DATA { pub time_usec : u64 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub controls : [f32 ; 8] , pub group_mlx : u8 , pub target_system : u8 , pub target_component : u8 , } impl SET_ACTUATOR_CONTROL_TARGET_DATA { pub const ENCODED_LEN : usize = 43usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , controls : [0.0_f32 ; 8usize] , group_mlx : 0_u8 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for SET_ACTUATOR_CONTROL_TARGET_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SET_ACTUATOR_CONTROL_TARGET_DATA { type Message = MavMessage ; const ID : u32 = 139u32 ; const NAME : & 'static str = "SET_ACTUATOR_CONTROL_TARGET" ; const EXTRA_CRC : u8 = 168u8 ; const ENCODED_LEN : usize = 43usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; for v in & mut __struct . controls { let val = buf . get_f32_le () ; * v = val ; } __struct . group_mlx = buf . get_u8 () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; for val in & self . controls { __tmp . put_f32_le (* val) ; } __tmp . put_u8 (self . group_mlx) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HIL_ACTUATOR_CONTROLS_DATA { pub time_usec : u64 , pub flags : u64 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub controls : [f32 ; 16] , pub mode : MavModeFlag , } impl HIL_ACTUATOR_CONTROLS_DATA { pub const ENCODED_LEN : usize = 81usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , flags : 0_u64 , controls : [0.0_f32 ; 16usize] , mode : MavModeFlag :: DEFAULT , } ; } impl Default for HIL_ACTUATOR_CONTROLS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for HIL_ACTUATOR_CONTROLS_DATA { type Message = MavMessage ; const ID : u32 = 93u32 ; const NAME : & 'static str = "HIL_ACTUATOR_CONTROLS" ; const EXTRA_CRC : u8 = 47u8 ; const ENCODED_LEN : usize = 81usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . flags = buf . get_u64_le () ; for v in & mut __struct . controls { let val = buf . get_f32_le () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . mode = MavModeFlag :: from_bits (tmp & MavModeFlag :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "MavModeFlag" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_u64_le (self . flags) ; for val in & self . controls { __tmp . put_f32_le (* val) ; } __tmp . put_u8 (self . mode . bits ()) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct RESOURCE_REQUEST_DATA { pub request_id : u8 , pub uri_type : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub uri : [u8 ; 120] , pub transfer_type : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub storage : [u8 ; 120] , } impl RESOURCE_REQUEST_DATA { pub const ENCODED_LEN : usize = 243usize ; pub const DEFAULT : Self = Self { request_id : 0_u8 , uri_type : 0_u8 , uri : [0_u8 ; 120usize] , transfer_type : 0_u8 , storage : [0_u8 ; 120usize] , } ; } impl Default for RESOURCE_REQUEST_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for RESOURCE_REQUEST_DATA { type Message = MavMessage ; const ID : u32 = 142u32 ; const NAME : & 'static str = "RESOURCE_REQUEST" ; const EXTRA_CRC : u8 = 72u8 ; const ENCODED_LEN : usize = 243usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . request_id = buf . get_u8 () ; __struct . uri_type = buf . get_u8 () ; for v in & mut __struct . uri { let val = buf . get_u8 () ; * v = val ; } __struct . transfer_type = buf . get_u8 () ; for v in & mut __struct . storage { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . request_id) ; __tmp . put_u8 (self . uri_type) ; for val in & self . uri { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . transfer_type) ; for val in & self . storage { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PARAM_SET_DATA { pub param_value : f32 , pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub param_id : [u8 ; 16] , pub param_type : MavParamType , } impl PARAM_SET_DATA { pub const ENCODED_LEN : usize = 23usize ; pub const DEFAULT : Self = Self { param_value : 0.0_f32 , target_system : 0_u8 , target_component : 0_u8 , param_id : [0_u8 ; 16usize] , param_type : MavParamType :: DEFAULT , } ; } impl Default for PARAM_SET_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for PARAM_SET_DATA { type Message = MavMessage ; const ID : u32 = 23u32 ; const NAME : & 'static str = "PARAM_SET" ; const EXTRA_CRC : u8 = 168u8 ; const ENCODED_LEN : usize = 23usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . param_value = buf . get_f32_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . param_id { let val = buf . get_u8 () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . param_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavParamType" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . param_value) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . param_id { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . param_type as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CELLULAR_CONFIG_DATA { pub enable_lte : u8 , pub enable_pin : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub pin : [u8 ; 16] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub new_pin : [u8 ; 16] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub apn : [u8 ; 32] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub puk : [u8 ; 16] , pub roaming : u8 , pub response : CellularConfigResponse , } impl CELLULAR_CONFIG_DATA { pub const ENCODED_LEN : usize = 84usize ; pub const DEFAULT : Self = Self { enable_lte : 0_u8 , enable_pin : 0_u8 , pin : [0_u8 ; 16usize] , new_pin : [0_u8 ; 16usize] , apn : [0_u8 ; 32usize] , puk : [0_u8 ; 16usize] , roaming : 0_u8 , response : CellularConfigResponse :: DEFAULT , } ; } impl Default for CELLULAR_CONFIG_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CELLULAR_CONFIG_DATA { type Message = MavMessage ; const ID : u32 = 336u32 ; const NAME : & 'static str = "CELLULAR_CONFIG" ; const EXTRA_CRC : u8 = 245u8 ; const ENCODED_LEN : usize = 84usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . enable_lte = buf . get_u8 () ; __struct . enable_pin = buf . get_u8 () ; for v in & mut __struct . pin { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . new_pin { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . apn { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . puk { let val = buf . get_u8 () ; * v = val ; } __struct . roaming = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . response = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "CellularConfigResponse" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . enable_lte) ; __tmp . put_u8 (self . enable_pin) ; for val in & self . pin { __tmp . put_u8 (* val) ; } for val in & self . new_pin { __tmp . put_u8 (* val) ; } for val in & self . apn { __tmp . put_u8 (* val) ; } for val in & self . puk { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . roaming) ; __tmp . put_u8 (self . response as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ALTITUDE_DATA { pub time_usec : u64 , pub altitude_monotonic : f32 , pub altitude_amsl : f32 , pub altitude_local : f32 , pub altitude_relative : f32 , pub altitude_terrain : f32 , pub bottom_clearance : f32 , } impl ALTITUDE_DATA { pub const ENCODED_LEN : usize = 32usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , altitude_monotonic : 0.0_f32 , altitude_amsl : 0.0_f32 , altitude_local : 0.0_f32 , altitude_relative : 0.0_f32 , altitude_terrain : 0.0_f32 , bottom_clearance : 0.0_f32 , } ; } impl Default for ALTITUDE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ALTITUDE_DATA { type Message = MavMessage ; const ID : u32 = 141u32 ; const NAME : & 'static str = "ALTITUDE" ; const EXTRA_CRC : u8 = 47u8 ; const ENCODED_LEN : usize = 32usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . altitude_monotonic = buf . get_f32_le () ; __struct . altitude_amsl = buf . get_f32_le () ; __struct . altitude_local = buf . get_f32_le () ; __struct . altitude_relative = buf . get_f32_le () ; __struct . altitude_terrain = buf . get_f32_le () ; __struct . bottom_clearance = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . altitude_monotonic) ; __tmp . put_f32_le (self . altitude_amsl) ; __tmp . put_f32_le (self . altitude_local) ; __tmp . put_f32_le (self . altitude_relative) ; __tmp . put_f32_le (self . altitude_terrain) ; __tmp . put_f32_le (self . bottom_clearance) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LOG_ENTRY_DATA { pub time_utc : u32 , pub size : u32 , pub id : u16 , pub num_logs : u16 , pub last_log_num : u16 , } impl LOG_ENTRY_DATA { pub const ENCODED_LEN : usize = 14usize ; pub const DEFAULT : Self = Self { time_utc : 0_u32 , size : 0_u32 , id : 0_u16 , num_logs : 0_u16 , last_log_num : 0_u16 , } ; } impl Default for LOG_ENTRY_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for LOG_ENTRY_DATA { type Message = MavMessage ; const ID : u32 = 118u32 ; const NAME : & 'static str = "LOG_ENTRY" ; const EXTRA_CRC : u8 = 56u8 ; const ENCODED_LEN : usize = 14usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_utc = buf . get_u32_le () ; __struct . size = buf . get_u32_le () ; __struct . id = buf . get_u16_le () ; __struct . num_logs = buf . get_u16_le () ; __struct . last_log_num = buf . get_u16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_utc) ; __tmp . put_u32_le (self . size) ; __tmp . put_u16_le (self . id) ; __tmp . put_u16_le (self . num_logs) ; __tmp . put_u16_le (self . last_log_num) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SMART_BATTERY_INFO_DATA { pub capacity_full_specification : i32 , pub capacity_full : i32 , pub cycle_count : u16 , pub weight : u16 , pub discharge_minimum_voltage : u16 , pub charging_minimum_voltage : u16 , pub resting_minimum_voltage : u16 , pub id : u8 , pub battery_function : MavBatteryFunction , pub mavtype : MavBatteryType , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub serial_number : [u8 ; 16] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub device_name : [u8 ; 50] , } impl SMART_BATTERY_INFO_DATA { pub const ENCODED_LEN : usize = 87usize ; pub const DEFAULT : Self = Self { capacity_full_specification : 0_i32 , capacity_full : 0_i32 , cycle_count : 0_u16 , weight : 0_u16 , discharge_minimum_voltage : 0_u16 , charging_minimum_voltage : 0_u16 , resting_minimum_voltage : 0_u16 , id : 0_u8 , battery_function : MavBatteryFunction :: DEFAULT , mavtype : MavBatteryType :: DEFAULT , serial_number : [0_u8 ; 16usize] , device_name : [0_u8 ; 50usize] , } ; } impl Default for SMART_BATTERY_INFO_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SMART_BATTERY_INFO_DATA { type Message = MavMessage ; const ID : u32 = 370u32 ; const NAME : & 'static str = "SMART_BATTERY_INFO" ; const EXTRA_CRC : u8 = 75u8 ; const ENCODED_LEN : usize = 87usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . capacity_full_specification = buf . get_i32_le () ; __struct . capacity_full = buf . get_i32_le () ; __struct . cycle_count = buf . get_u16_le () ; __struct . weight = buf . get_u16_le () ; __struct . discharge_minimum_voltage = buf . get_u16_le () ; __struct . charging_minimum_voltage = buf . get_u16_le () ; __struct . resting_minimum_voltage = buf . get_u16_le () ; __struct . id = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . battery_function = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavBatteryFunction" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . mavtype = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavBatteryType" , value : tmp as u32 }) ? ; for v in & mut __struct . serial_number { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . device_name { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . capacity_full_specification) ; __tmp . put_i32_le (self . capacity_full) ; __tmp . put_u16_le (self . cycle_count) ; __tmp . put_u16_le (self . weight) ; __tmp . put_u16_le (self . discharge_minimum_voltage) ; __tmp . put_u16_le (self . charging_minimum_voltage) ; __tmp . put_u16_le (self . resting_minimum_voltage) ; __tmp . put_u8 (self . id) ; __tmp . put_u8 (self . battery_function as u8) ; __tmp . put_u8 (self . mavtype as u8) ; for val in & self . serial_number { __tmp . put_u8 (* val) ; } for val in & self . device_name { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct UTM_GLOBAL_POSITION_DATA { pub time : u64 , pub lat : i32 , pub lon : i32 , pub alt : i32 , pub relative_alt : i32 , pub next_lat : i32 , pub next_lon : i32 , pub next_alt : i32 , pub vx : i16 , pub vy : i16 , pub vz : i16 , pub h_acc : u16 , pub v_acc : u16 , pub vel_acc : u16 , pub update_rate : u16 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub uas_id : [u8 ; 18] , pub flight_state : UtmFlightState , pub flags : UtmDataAvailFlags , } impl UTM_GLOBAL_POSITION_DATA { pub const ENCODED_LEN : usize = 70usize ; pub const DEFAULT : Self = Self { time : 0_u64 , lat : 0_i32 , lon : 0_i32 , alt : 0_i32 , relative_alt : 0_i32 , next_lat : 0_i32 , next_lon : 0_i32 , next_alt : 0_i32 , vx : 0_i16 , vy : 0_i16 , vz : 0_i16 , h_acc : 0_u16 , v_acc : 0_u16 , vel_acc : 0_u16 , update_rate : 0_u16 , uas_id : [0_u8 ; 18usize] , flight_state : UtmFlightState :: DEFAULT , flags : UtmDataAvailFlags :: DEFAULT , } ; } impl Default for UTM_GLOBAL_POSITION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for UTM_GLOBAL_POSITION_DATA { type Message = MavMessage ; const ID : u32 = 340u32 ; const NAME : & 'static str = "UTM_GLOBAL_POSITION" ; const EXTRA_CRC : u8 = 99u8 ; const ENCODED_LEN : usize = 70usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time = buf . get_u64_le () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . alt = buf . get_i32_le () ; __struct . relative_alt = buf . get_i32_le () ; __struct . next_lat = buf . get_i32_le () ; __struct . next_lon = buf . get_i32_le () ; __struct . next_alt = buf . get_i32_le () ; __struct . vx = buf . get_i16_le () ; __struct . vy = buf . get_i16_le () ; __struct . vz = buf . get_i16_le () ; __struct . h_acc = buf . get_u16_le () ; __struct . v_acc = buf . get_u16_le () ; __struct . vel_acc = buf . get_u16_le () ; __struct . update_rate = buf . get_u16_le () ; for v in & mut __struct . uas_id { let val = buf . get_u8 () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . flight_state = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "UtmFlightState" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . flags = UtmDataAvailFlags :: from_bits (tmp & UtmDataAvailFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "UtmDataAvailFlags" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_i32_le (self . alt) ; __tmp . put_i32_le (self . relative_alt) ; __tmp . put_i32_le (self . next_lat) ; __tmp . put_i32_le (self . next_lon) ; __tmp . put_i32_le (self . next_alt) ; __tmp . put_i16_le (self . vx) ; __tmp . put_i16_le (self . vy) ; __tmp . put_i16_le (self . vz) ; __tmp . put_u16_le (self . h_acc) ; __tmp . put_u16_le (self . v_acc) ; __tmp . put_u16_le (self . vel_acc) ; __tmp . put_u16_le (self . update_rate) ; for val in & self . uas_id { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . flight_state as u8) ; __tmp . put_u8 (self . flags . bits ()) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PLAY_TUNE_V2_DATA { pub format : TuneFormat , pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub tune : [u8 ; 248] , } impl PLAY_TUNE_V2_DATA { pub const ENCODED_LEN : usize = 254usize ; pub const DEFAULT : Self = Self { format : TuneFormat :: DEFAULT , target_system : 0_u8 , target_component : 0_u8 , tune : [0_u8 ; 248usize] , } ; } impl Default for PLAY_TUNE_V2_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for PLAY_TUNE_V2_DATA { type Message = MavMessage ; const ID : u32 = 400u32 ; const NAME : & 'static str = "PLAY_TUNE_V2" ; const EXTRA_CRC : u8 = 110u8 ; const ENCODED_LEN : usize = 254usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u32_le () ; __struct . format = TuneFormat :: from_bits (tmp & TuneFormat :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "TuneFormat" , value : tmp as u32 }) ? ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . tune { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . format . bits ()) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . tune { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HIL_OPTICAL_FLOW_DATA { pub time_usec : u64 , pub integration_time_us : u32 , pub integrated_x : f32 , pub integrated_y : f32 , pub integrated_xgyro : f32 , pub integrated_ygyro : f32 , pub integrated_zgyro : f32 , pub time_delta_distance_us : u32 , pub distance : f32 , pub temperature : i16 , pub sensor_id : u8 , pub quality : u8 , } impl HIL_OPTICAL_FLOW_DATA { pub const ENCODED_LEN : usize = 44usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , integration_time_us : 0_u32 , integrated_x : 0.0_f32 , integrated_y : 0.0_f32 , integrated_xgyro : 0.0_f32 , integrated_ygyro : 0.0_f32 , integrated_zgyro : 0.0_f32 , time_delta_distance_us : 0_u32 , distance : 0.0_f32 , temperature : 0_i16 , sensor_id : 0_u8 , quality : 0_u8 , } ; } impl Default for HIL_OPTICAL_FLOW_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for HIL_OPTICAL_FLOW_DATA { type Message = MavMessage ; const ID : u32 = 114u32 ; const NAME : & 'static str = "HIL_OPTICAL_FLOW" ; const EXTRA_CRC : u8 = 237u8 ; const ENCODED_LEN : usize = 44usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . integration_time_us = buf . get_u32_le () ; __struct . integrated_x = buf . get_f32_le () ; __struct . integrated_y = buf . get_f32_le () ; __struct . integrated_xgyro = buf . get_f32_le () ; __struct . integrated_ygyro = buf . get_f32_le () ; __struct . integrated_zgyro = buf . get_f32_le () ; __struct . time_delta_distance_us = buf . get_u32_le () ; __struct . distance = buf . get_f32_le () ; __struct . temperature = buf . get_i16_le () ; __struct . sensor_id = buf . get_u8 () ; __struct . quality = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_u32_le (self . integration_time_us) ; __tmp . put_f32_le (self . integrated_x) ; __tmp . put_f32_le (self . integrated_y) ; __tmp . put_f32_le (self . integrated_xgyro) ; __tmp . put_f32_le (self . integrated_ygyro) ; __tmp . put_f32_le (self . integrated_zgyro) ; __tmp . put_u32_le (self . time_delta_distance_us) ; __tmp . put_f32_le (self . distance) ; __tmp . put_i16_le (self . temperature) ; __tmp . put_u8 (self . sensor_id) ; __tmp . put_u8 (self . quality) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct REQUEST_DATA_STREAM_DATA { pub req_message_rate : u16 , pub target_system : u8 , pub target_component : u8 , pub req_stream_id : u8 , pub start_stop : u8 , } impl REQUEST_DATA_STREAM_DATA { pub const ENCODED_LEN : usize = 6usize ; pub const DEFAULT : Self = Self { req_message_rate : 0_u16 , target_system : 0_u8 , target_component : 0_u8 , req_stream_id : 0_u8 , start_stop : 0_u8 , } ; } impl Default for REQUEST_DATA_STREAM_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for REQUEST_DATA_STREAM_DATA { type Message = MavMessage ; const ID : u32 = 66u32 ; const NAME : & 'static str = "REQUEST_DATA_STREAM" ; const EXTRA_CRC : u8 = 148u8 ; const ENCODED_LEN : usize = 6usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . req_message_rate = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . req_stream_id = buf . get_u8 () ; __struct . start_stop = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . req_message_rate) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . req_stream_id) ; __tmp . put_u8 (self . start_stop) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Clone , PartialEq , Debug)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavMessage { LOCAL_POSITION_NED (LOCAL_POSITION_NED_DATA) , FOLLOW_TARGET (FOLLOW_TARGET_DATA) , OPTICAL_FLOW (OPTICAL_FLOW_DATA) , STORAGE_INFORMATION (STORAGE_INFORMATION_DATA) , SAFETY_ALLOWED_AREA (SAFETY_ALLOWED_AREA_DATA) , MANUAL_SETPOINT (MANUAL_SETPOINT_DATA) , AUTOPILOT_VERSION (AUTOPILOT_VERSION_DATA) , RC_CHANNELS (RC_CHANNELS_DATA) , ESTIMATOR_STATUS (ESTIMATOR_STATUS_DATA) , ADSB_VEHICLE (ADSB_VEHICLE_DATA) , TRAJECTORY_REPRESENTATION_WAYPOINTS (TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA) , WHEEL_DISTANCE (WHEEL_DISTANCE_DATA) , NAMED_VALUE_FLOAT (NAMED_VALUE_FLOAT_DATA) , ACTUATOR_OUTPUT_STATUS (ACTUATOR_OUTPUT_STATUS_DATA) , OPEN_DRONE_ID_BASIC_ID (OPEN_DRONE_ID_BASIC_ID_DATA) , PARAM_EXT_REQUEST_READ (PARAM_EXT_REQUEST_READ_DATA) , OPEN_DRONE_ID_SELF_ID (OPEN_DRONE_ID_SELF_ID_DATA) , DISTANCE_SENSOR (DISTANCE_SENSOR_DATA) , PARAM_EXT_SET (PARAM_EXT_SET_DATA) , OPEN_DRONE_ID_AUTHENTICATION (OPEN_DRONE_ID_AUTHENTICATION_DATA) , MISSION_CURRENT (MISSION_CURRENT_DATA) , ATTITUDE_TARGET (ATTITUDE_TARGET_DATA) , GPS2_RAW (GPS2_RAW_DATA) , FLIGHT_INFORMATION (FLIGHT_INFORMATION_DATA) , MISSION_COUNT (MISSION_COUNT_DATA) , SAFETY_SET_ALLOWED_AREA (SAFETY_SET_ALLOWED_AREA_DATA) , CAMERA_TRACKING_IMAGE_STATUS (CAMERA_TRACKING_IMAGE_STATUS_DATA) , GIMBAL_MANAGER_SET_PITCHYAW (GIMBAL_MANAGER_SET_PITCHYAW_DATA) , ATTITUDE (ATTITUDE_DATA) , MISSION_REQUEST_PARTIAL_LIST (MISSION_REQUEST_PARTIAL_LIST_DATA) , POSITION_TARGET_LOCAL_NED (POSITION_TARGET_LOCAL_NED_DATA) , GPS_STATUS (GPS_STATUS_DATA) , SET_ATTITUDE_TARGET (SET_ATTITUDE_TARGET_DATA) , HIL_GPS (HIL_GPS_DATA) , LOG_ERASE (LOG_ERASE_DATA) , VISION_SPEED_ESTIMATE (VISION_SPEED_ESTIMATE_DATA) , HIL_STATE_QUATERNION (HIL_STATE_QUATERNION_DATA) , NAV_CONTROLLER_OUTPUT (NAV_CONTROLLER_OUTPUT_DATA) , RC_CHANNELS_OVERRIDE (RC_CHANNELS_OVERRIDE_DATA) , FILE_TRANSFER_PROTOCOL (FILE_TRANSFER_PROTOCOL_DATA) , EFI_STATUS (EFI_STATUS_DATA) , CAMERA_IMAGE_CAPTURED (CAMERA_IMAGE_CAPTURED_DATA) , ENCAPSULATED_DATA (ENCAPSULATED_DATA_DATA) , COMMAND_LONG (COMMAND_LONG_DATA) , MESSAGE_INTERVAL (MESSAGE_INTERVAL_DATA) , LOGGING_DATA_ACKED (LOGGING_DATA_ACKED_DATA) , VIDEO_STREAM_STATUS (VIDEO_STREAM_STATUS_DATA) , GIMBAL_MANAGER_INFORMATION (GIMBAL_MANAGER_INFORMATION_DATA) , WIFI_CONFIG_AP (WIFI_CONFIG_AP_DATA) , AUTOPILOT_STATE_FOR_GIMBAL_DEVICE (AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA) , SET_MODE (SET_MODE_DATA) , MISSION_ITEM (MISSION_ITEM_DATA) , PROTOCOL_VERSION (PROTOCOL_VERSION_DATA) , MISSION_ITEM_REACHED (MISSION_ITEM_REACHED_DATA) , MISSION_ACK (MISSION_ACK_DATA) , SET_GPS_GLOBAL_ORIGIN (SET_GPS_GLOBAL_ORIGIN_DATA) , GPS_GLOBAL_ORIGIN (GPS_GLOBAL_ORIGIN_DATA) , MISSION_REQUEST_LIST (MISSION_REQUEST_LIST_DATA) , HIL_SENSOR (HIL_SENSOR_DATA) , ATTITUDE_QUATERNION_COV (ATTITUDE_QUATERNION_COV_DATA) , SET_POSITION_TARGET_GLOBAL_INT (SET_POSITION_TARGET_GLOBAL_INT_DATA) , TERRAIN_REQUEST (TERRAIN_REQUEST_DATA) , TERRAIN_DATA (TERRAIN_DATA_DATA) , ATT_POS_MOCAP (ATT_POS_MOCAP_DATA) , CONTROL_SYSTEM_STATE (CONTROL_SYSTEM_STATE_DATA) , SCALED_IMU3 (SCALED_IMU3_DATA) , WIND_COV (WIND_COV_DATA) , CAMERA_INFORMATION (CAMERA_INFORMATION_DATA) , GIMBAL_MANAGER_SET_MANUAL_CONTROL (GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA) , OBSTACLE_DISTANCE (OBSTACLE_DISTANCE_DATA) , SERIAL_CONTROL (SERIAL_CONTROL_DATA) , ACTUATOR_CONTROL_TARGET (ACTUATOR_CONTROL_TARGET_DATA) , GLOBAL_POSITION_INT (GLOBAL_POSITION_INT_DATA) , GPS_INPUT (GPS_INPUT_DATA) , VIBRATION (VIBRATION_DATA) , PARAM_REQUEST_LIST (PARAM_REQUEST_LIST_DATA) , EXTENDED_SYS_STATE (EXTENDED_SYS_STATE_DATA) , PLAY_TUNE (PLAY_TUNE_DATA) , VFR_HUD (VFR_HUD_DATA) , LOG_REQUEST_END (LOG_REQUEST_END_DATA) , HIGHRES_IMU (HIGHRES_IMU_DATA) , GLOBAL_POSITION_INT_COV (GLOBAL_POSITION_INT_COV_DATA) , AIS_VESSEL (AIS_VESSEL_DATA) , GPS_RTCM_DATA (GPS_RTCM_DATA_DATA) , COMMAND_ACK (COMMAND_ACK_DATA) , CHANGE_OPERATOR_CONTROL_ACK (CHANGE_OPERATOR_CONTROL_ACK_DATA) , SCALED_IMU2 (SCALED_IMU2_DATA) , GIMBAL_MANAGER_STATUS (GIMBAL_MANAGER_STATUS_DATA) , PARAM_EXT_REQUEST_LIST (PARAM_EXT_REQUEST_LIST_DATA) , ODOMETRY (ODOMETRY_DATA) , DEBUG_VECT (DEBUG_VECT_DATA) , DEBUG (DEBUG_DATA) , TRAJECTORY_REPRESENTATION_BEZIER (TRAJECTORY_REPRESENTATION_BEZIER_DATA) , REQUEST_EVENT (REQUEST_EVENT_DATA) , CAN_FILTER_MODIFY (CAN_FILTER_MODIFY_DATA) , HYGROMETER_SENSOR (HYGROMETER_SENSOR_DATA) , NAMED_VALUE_INT (NAMED_VALUE_INT_DATA) , OPEN_DRONE_ID_MESSAGE_PACK (OPEN_DRONE_ID_MESSAGE_PACK_DATA) , CAMERA_TRIGGER (CAMERA_TRIGGER_DATA) , LOG_DATA (LOG_DATA_DATA) , SCALED_PRESSURE3 (SCALED_PRESSURE3_DATA) , OPEN_DRONE_ID_ARM_STATUS (OPEN_DRONE_ID_ARM_STATUS_DATA) , ATTITUDE_QUATERNION (ATTITUDE_QUATERNION_DATA) , CHANGE_OPERATOR_CONTROL (CHANGE_OPERATOR_CONTROL_DATA) , SETUP_SIGNING (SETUP_SIGNING_DATA) , GIMBAL_DEVICE_INFORMATION (GIMBAL_DEVICE_INFORMATION_DATA) , WINCH_STATUS (WINCH_STATUS_DATA) , SIM_STATE (SIM_STATE_DATA) , GPS_RTK (GPS_RTK_DATA) , GPS2_RTK (GPS2_RTK_DATA) , HIGH_LATENCY (HIGH_LATENCY_DATA) , TERRAIN_REPORT (TERRAIN_REPORT_DATA) , HIL_STATE (HIL_STATE_DATA) , MEMORY_VECT (MEMORY_VECT_DATA) , MOUNT_ORIENTATION (MOUNT_ORIENTATION_DATA) , CAMERA_TRACKING_GEO_STATUS (CAMERA_TRACKING_GEO_STATUS_DATA) , LOGGING_ACK (LOGGING_ACK_DATA) , UAVCAN_NODE_STATUS (UAVCAN_NODE_STATUS_DATA) , SCALED_PRESSURE2 (SCALED_PRESSURE2_DATA) , VIDEO_STREAM_INFORMATION (VIDEO_STREAM_INFORMATION_DATA) , BATTERY_STATUS (BATTERY_STATUS_DATA) , SCALED_IMU (SCALED_IMU_DATA) , LOCAL_POSITION_NED_COV (LOCAL_POSITION_NED_COV_DATA) , GENERATOR_STATUS (GENERATOR_STATUS_DATA) , CAN_FRAME (CAN_FRAME_DATA) , TERRAIN_CHECK (TERRAIN_CHECK_DATA) , CAMERA_CAPTURE_STATUS (CAMERA_CAPTURE_STATUS_DATA) , UAVCAN_NODE_INFO (UAVCAN_NODE_INFO_DATA) , RAW_PRESSURE (RAW_PRESSURE_DATA) , POSITION_TARGET_GLOBAL_INT (POSITION_TARGET_GLOBAL_INT_DATA) , HEARTBEAT (HEARTBEAT_DATA) , RADIO_STATUS (RADIO_STATUS_DATA) , PARAM_EXT_VALUE (PARAM_EXT_VALUE_DATA) , RC_CHANNELS_RAW (RC_CHANNELS_RAW_DATA) , ISBD_LINK_STATUS (ISBD_LINK_STATUS_DATA) , OPTICAL_FLOW_RAD (OPTICAL_FLOW_RAD_DATA) , PARAM_MAP_RC (PARAM_MAP_RC_DATA) , PARAM_REQUEST_READ (PARAM_REQUEST_READ_DATA) , RESPONSE_EVENT_ERROR (RESPONSE_EVENT_ERROR_DATA) , LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET (LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA) , GLOBAL_VISION_POSITION_ESTIMATE (GLOBAL_VISION_POSITION_ESTIMATE_DATA) , FENCE_STATUS (FENCE_STATUS_DATA) , ONBOARD_COMPUTER_STATUS (ONBOARD_COMPUTER_STATUS_DATA) , CURRENT_EVENT_SEQUENCE (CURRENT_EVENT_SEQUENCE_DATA) , MISSION_REQUEST_INT (MISSION_REQUEST_INT_DATA) , MISSION_ITEM_INT (MISSION_ITEM_INT_DATA) , VISION_POSITION_ESTIMATE (VISION_POSITION_ESTIMATE_DATA) , PARAM_EXT_ACK (PARAM_EXT_ACK_DATA) , SYSTEM_TIME (SYSTEM_TIME_DATA) , LINK_NODE_STATUS (LINK_NODE_STATUS_DATA) , COMMAND_CANCEL (COMMAND_CANCEL_DATA) , VICON_POSITION_ESTIMATE (VICON_POSITION_ESTIMATE_DATA) , SERVO_OUTPUT_RAW (SERVO_OUTPUT_RAW_DATA) , TIMESYNC (TIMESYNC_DATA) , POWER_STATUS (POWER_STATUS_DATA) , OPEN_DRONE_ID_SYSTEM_UPDATE (OPEN_DRONE_ID_SYSTEM_UPDATE_DATA) , RAW_RPM (RAW_RPM_DATA) , OPEN_DRONE_ID_LOCATION (OPEN_DRONE_ID_LOCATION_DATA) , LANDING_TARGET (LANDING_TARGET_DATA) , GIMBAL_MANAGER_SET_ATTITUDE (GIMBAL_MANAGER_SET_ATTITUDE_DATA) , ESC_STATUS (ESC_STATUS_DATA) , ORBIT_EXECUTION_STATUS (ORBIT_EXECUTION_STATUS_DATA) , SYS_STATUS (SYS_STATUS_DATA) , LOG_REQUEST_DATA (LOG_REQUEST_DATA_DATA) , AUTH_KEY (AUTH_KEY_DATA) , LOG_REQUEST_LIST (LOG_REQUEST_LIST_DATA) , GPS_INJECT_DATA (GPS_INJECT_DATA_DATA) , MISSION_SET_CURRENT (MISSION_SET_CURRENT_DATA) , COMMAND_INT (COMMAND_INT_DATA) , HIGH_LATENCY2 (HIGH_LATENCY2_DATA) , BUTTON_CHANGE (BUTTON_CHANGE_DATA) , CAMERA_SETTINGS (CAMERA_SETTINGS_DATA) , DEBUG_FLOAT_ARRAY (DEBUG_FLOAT_ARRAY_DATA) , COMPONENT_METADATA (COMPONENT_METADATA_DATA) , MISSION_CLEAR_ALL (MISSION_CLEAR_ALL_DATA) , COLLISION (COLLISION_DATA) , SUPPORTED_TUNES (SUPPORTED_TUNES_DATA) , EVENT (EVENT_DATA) , CANFD_FRAME (CANFD_FRAME_DATA) , GIMBAL_DEVICE_ATTITUDE_STATUS (GIMBAL_DEVICE_ATTITUDE_STATUS_DATA) , HOME_POSITION (HOME_POSITION_DATA) , OPEN_DRONE_ID_SYSTEM (OPEN_DRONE_ID_SYSTEM_DATA) , GPS_RAW_INT (GPS_RAW_INT_DATA) , PING (PING_DATA) , HIL_CONTROLS (HIL_CONTROLS_DATA) , HIL_RC_INPUTS_RAW (HIL_RC_INPUTS_RAW_DATA) , STATUSTEXT (STATUSTEXT_DATA) , PARAM_VALUE (PARAM_VALUE_DATA) , SET_POSITION_TARGET_LOCAL_NED (SET_POSITION_TARGET_LOCAL_NED_DATA) , MISSION_REQUEST (MISSION_REQUEST_DATA) , TIME_ESTIMATE_TO_TARGET (TIME_ESTIMATE_TO_TARGET_DATA) , RAW_IMU (RAW_IMU_DATA) , DATA_TRANSMISSION_HANDSHAKE (DATA_TRANSMISSION_HANDSHAKE_DATA) , OPEN_DRONE_ID_OPERATOR_ID (OPEN_DRONE_ID_OPERATOR_ID_DATA) , MISSION_WRITE_PARTIAL_LIST (MISSION_WRITE_PARTIAL_LIST_DATA) , V2_EXTENSION (V2_EXTENSION_DATA) , CAMERA_FOV_STATUS (CAMERA_FOV_STATUS_DATA) , MAG_CAL_REPORT (MAG_CAL_REPORT_DATA) , SCALED_PRESSURE (SCALED_PRESSURE_DATA) , LOGGING_DATA (LOGGING_DATA_DATA) , ESC_INFO (ESC_INFO_DATA) , CELLULAR_STATUS (CELLULAR_STATUS_DATA) , RC_CHANNELS_SCALED (RC_CHANNELS_SCALED_DATA) , MANUAL_CONTROL (MANUAL_CONTROL_DATA) , DATA_STREAM (DATA_STREAM_DATA) , SET_HOME_POSITION (SET_HOME_POSITION_DATA) , GIMBAL_DEVICE_SET_ATTITUDE (GIMBAL_DEVICE_SET_ATTITUDE_DATA) , TUNNEL (TUNNEL_DATA) , COMPONENT_INFORMATION (COMPONENT_INFORMATION_DATA) , SET_ACTUATOR_CONTROL_TARGET (SET_ACTUATOR_CONTROL_TARGET_DATA) , HIL_ACTUATOR_CONTROLS (HIL_ACTUATOR_CONTROLS_DATA) , RESOURCE_REQUEST (RESOURCE_REQUEST_DATA) , PARAM_SET (PARAM_SET_DATA) , CELLULAR_CONFIG (CELLULAR_CONFIG_DATA) , ALTITUDE (ALTITUDE_DATA) , LOG_ENTRY (LOG_ENTRY_DATA) , SMART_BATTERY_INFO (SMART_BATTERY_INFO_DATA) , UTM_GLOBAL_POSITION (UTM_GLOBAL_POSITION_DATA) , PLAY_TUNE_V2 (PLAY_TUNE_V2_DATA) , HIL_OPTICAL_FLOW (HIL_OPTICAL_FLOW_DATA) , REQUEST_DATA_STREAM (REQUEST_DATA_STREAM_DATA) , } impl Message for MavMessage { fn parse (version : MavlinkVersion , id : u32 , payload : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { match id { LOCAL_POSITION_NED_DATA :: ID => LOCAL_POSITION_NED_DATA :: deser (version , payload) . map (Self :: LOCAL_POSITION_NED) , FOLLOW_TARGET_DATA :: ID => FOLLOW_TARGET_DATA :: deser (version , payload) . map (Self :: FOLLOW_TARGET) , OPTICAL_FLOW_DATA :: ID => OPTICAL_FLOW_DATA :: deser (version , payload) . map (Self :: OPTICAL_FLOW) , STORAGE_INFORMATION_DATA :: ID => STORAGE_INFORMATION_DATA :: deser (version , payload) . map (Self :: STORAGE_INFORMATION) , SAFETY_ALLOWED_AREA_DATA :: ID => SAFETY_ALLOWED_AREA_DATA :: deser (version , payload) . map (Self :: SAFETY_ALLOWED_AREA) , MANUAL_SETPOINT_DATA :: ID => MANUAL_SETPOINT_DATA :: deser (version , payload) . map (Self :: MANUAL_SETPOINT) , AUTOPILOT_VERSION_DATA :: ID => AUTOPILOT_VERSION_DATA :: deser (version , payload) . map (Self :: AUTOPILOT_VERSION) , RC_CHANNELS_DATA :: ID => RC_CHANNELS_DATA :: deser (version , payload) . map (Self :: RC_CHANNELS) , ESTIMATOR_STATUS_DATA :: ID => ESTIMATOR_STATUS_DATA :: deser (version , payload) . map (Self :: ESTIMATOR_STATUS) , ADSB_VEHICLE_DATA :: ID => ADSB_VEHICLE_DATA :: deser (version , payload) . map (Self :: ADSB_VEHICLE) , TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: ID => TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: deser (version , payload) . map (Self :: TRAJECTORY_REPRESENTATION_WAYPOINTS) , WHEEL_DISTANCE_DATA :: ID => WHEEL_DISTANCE_DATA :: deser (version , payload) . map (Self :: WHEEL_DISTANCE) , NAMED_VALUE_FLOAT_DATA :: ID => NAMED_VALUE_FLOAT_DATA :: deser (version , payload) . map (Self :: NAMED_VALUE_FLOAT) , ACTUATOR_OUTPUT_STATUS_DATA :: ID => ACTUATOR_OUTPUT_STATUS_DATA :: deser (version , payload) . map (Self :: ACTUATOR_OUTPUT_STATUS) , OPEN_DRONE_ID_BASIC_ID_DATA :: ID => OPEN_DRONE_ID_BASIC_ID_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_BASIC_ID) , PARAM_EXT_REQUEST_READ_DATA :: ID => PARAM_EXT_REQUEST_READ_DATA :: deser (version , payload) . map (Self :: PARAM_EXT_REQUEST_READ) , OPEN_DRONE_ID_SELF_ID_DATA :: ID => OPEN_DRONE_ID_SELF_ID_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_SELF_ID) , DISTANCE_SENSOR_DATA :: ID => DISTANCE_SENSOR_DATA :: deser (version , payload) . map (Self :: DISTANCE_SENSOR) , PARAM_EXT_SET_DATA :: ID => PARAM_EXT_SET_DATA :: deser (version , payload) . map (Self :: PARAM_EXT_SET) , OPEN_DRONE_ID_AUTHENTICATION_DATA :: ID => OPEN_DRONE_ID_AUTHENTICATION_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_AUTHENTICATION) , MISSION_CURRENT_DATA :: ID => MISSION_CURRENT_DATA :: deser (version , payload) . map (Self :: MISSION_CURRENT) , ATTITUDE_TARGET_DATA :: ID => ATTITUDE_TARGET_DATA :: deser (version , payload) . map (Self :: ATTITUDE_TARGET) , GPS2_RAW_DATA :: ID => GPS2_RAW_DATA :: deser (version , payload) . map (Self :: GPS2_RAW) , FLIGHT_INFORMATION_DATA :: ID => FLIGHT_INFORMATION_DATA :: deser (version , payload) . map (Self :: FLIGHT_INFORMATION) , MISSION_COUNT_DATA :: ID => MISSION_COUNT_DATA :: deser (version , payload) . map (Self :: MISSION_COUNT) , SAFETY_SET_ALLOWED_AREA_DATA :: ID => SAFETY_SET_ALLOWED_AREA_DATA :: deser (version , payload) . map (Self :: SAFETY_SET_ALLOWED_AREA) , CAMERA_TRACKING_IMAGE_STATUS_DATA :: ID => CAMERA_TRACKING_IMAGE_STATUS_DATA :: deser (version , payload) . map (Self :: CAMERA_TRACKING_IMAGE_STATUS) , GIMBAL_MANAGER_SET_PITCHYAW_DATA :: ID => GIMBAL_MANAGER_SET_PITCHYAW_DATA :: deser (version , payload) . map (Self :: GIMBAL_MANAGER_SET_PITCHYAW) , ATTITUDE_DATA :: ID => ATTITUDE_DATA :: deser (version , payload) . map (Self :: ATTITUDE) , MISSION_REQUEST_PARTIAL_LIST_DATA :: ID => MISSION_REQUEST_PARTIAL_LIST_DATA :: deser (version , payload) . map (Self :: MISSION_REQUEST_PARTIAL_LIST) , POSITION_TARGET_LOCAL_NED_DATA :: ID => POSITION_TARGET_LOCAL_NED_DATA :: deser (version , payload) . map (Self :: POSITION_TARGET_LOCAL_NED) , GPS_STATUS_DATA :: ID => GPS_STATUS_DATA :: deser (version , payload) . map (Self :: GPS_STATUS) , SET_ATTITUDE_TARGET_DATA :: ID => SET_ATTITUDE_TARGET_DATA :: deser (version , payload) . map (Self :: SET_ATTITUDE_TARGET) , HIL_GPS_DATA :: ID => HIL_GPS_DATA :: deser (version , payload) . map (Self :: HIL_GPS) , LOG_ERASE_DATA :: ID => LOG_ERASE_DATA :: deser (version , payload) . map (Self :: LOG_ERASE) , VISION_SPEED_ESTIMATE_DATA :: ID => VISION_SPEED_ESTIMATE_DATA :: deser (version , payload) . map (Self :: VISION_SPEED_ESTIMATE) , HIL_STATE_QUATERNION_DATA :: ID => HIL_STATE_QUATERNION_DATA :: deser (version , payload) . map (Self :: HIL_STATE_QUATERNION) , NAV_CONTROLLER_OUTPUT_DATA :: ID => NAV_CONTROLLER_OUTPUT_DATA :: deser (version , payload) . map (Self :: NAV_CONTROLLER_OUTPUT) , RC_CHANNELS_OVERRIDE_DATA :: ID => RC_CHANNELS_OVERRIDE_DATA :: deser (version , payload) . map (Self :: RC_CHANNELS_OVERRIDE) , FILE_TRANSFER_PROTOCOL_DATA :: ID => FILE_TRANSFER_PROTOCOL_DATA :: deser (version , payload) . map (Self :: FILE_TRANSFER_PROTOCOL) , EFI_STATUS_DATA :: ID => EFI_STATUS_DATA :: deser (version , payload) . map (Self :: EFI_STATUS) , CAMERA_IMAGE_CAPTURED_DATA :: ID => CAMERA_IMAGE_CAPTURED_DATA :: deser (version , payload) . map (Self :: CAMERA_IMAGE_CAPTURED) , ENCAPSULATED_DATA_DATA :: ID => ENCAPSULATED_DATA_DATA :: deser (version , payload) . map (Self :: ENCAPSULATED_DATA) , COMMAND_LONG_DATA :: ID => COMMAND_LONG_DATA :: deser (version , payload) . map (Self :: COMMAND_LONG) , MESSAGE_INTERVAL_DATA :: ID => MESSAGE_INTERVAL_DATA :: deser (version , payload) . map (Self :: MESSAGE_INTERVAL) , LOGGING_DATA_ACKED_DATA :: ID => LOGGING_DATA_ACKED_DATA :: deser (version , payload) . map (Self :: LOGGING_DATA_ACKED) , VIDEO_STREAM_STATUS_DATA :: ID => VIDEO_STREAM_STATUS_DATA :: deser (version , payload) . map (Self :: VIDEO_STREAM_STATUS) , GIMBAL_MANAGER_INFORMATION_DATA :: ID => GIMBAL_MANAGER_INFORMATION_DATA :: deser (version , payload) . map (Self :: GIMBAL_MANAGER_INFORMATION) , WIFI_CONFIG_AP_DATA :: ID => WIFI_CONFIG_AP_DATA :: deser (version , payload) . map (Self :: WIFI_CONFIG_AP) , AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: ID => AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: deser (version , payload) . map (Self :: AUTOPILOT_STATE_FOR_GIMBAL_DEVICE) , SET_MODE_DATA :: ID => SET_MODE_DATA :: deser (version , payload) . map (Self :: SET_MODE) , MISSION_ITEM_DATA :: ID => MISSION_ITEM_DATA :: deser (version , payload) . map (Self :: MISSION_ITEM) , PROTOCOL_VERSION_DATA :: ID => PROTOCOL_VERSION_DATA :: deser (version , payload) . map (Self :: PROTOCOL_VERSION) , MISSION_ITEM_REACHED_DATA :: ID => MISSION_ITEM_REACHED_DATA :: deser (version , payload) . map (Self :: MISSION_ITEM_REACHED) , MISSION_ACK_DATA :: ID => MISSION_ACK_DATA :: deser (version , payload) . map (Self :: MISSION_ACK) , SET_GPS_GLOBAL_ORIGIN_DATA :: ID => SET_GPS_GLOBAL_ORIGIN_DATA :: deser (version , payload) . map (Self :: SET_GPS_GLOBAL_ORIGIN) , GPS_GLOBAL_ORIGIN_DATA :: ID => GPS_GLOBAL_ORIGIN_DATA :: deser (version , payload) . map (Self :: GPS_GLOBAL_ORIGIN) , MISSION_REQUEST_LIST_DATA :: ID => MISSION_REQUEST_LIST_DATA :: deser (version , payload) . map (Self :: MISSION_REQUEST_LIST) , HIL_SENSOR_DATA :: ID => HIL_SENSOR_DATA :: deser (version , payload) . map (Self :: HIL_SENSOR) , ATTITUDE_QUATERNION_COV_DATA :: ID => ATTITUDE_QUATERNION_COV_DATA :: deser (version , payload) . map (Self :: ATTITUDE_QUATERNION_COV) , SET_POSITION_TARGET_GLOBAL_INT_DATA :: ID => SET_POSITION_TARGET_GLOBAL_INT_DATA :: deser (version , payload) . map (Self :: SET_POSITION_TARGET_GLOBAL_INT) , TERRAIN_REQUEST_DATA :: ID => TERRAIN_REQUEST_DATA :: deser (version , payload) . map (Self :: TERRAIN_REQUEST) , TERRAIN_DATA_DATA :: ID => TERRAIN_DATA_DATA :: deser (version , payload) . map (Self :: TERRAIN_DATA) , ATT_POS_MOCAP_DATA :: ID => ATT_POS_MOCAP_DATA :: deser (version , payload) . map (Self :: ATT_POS_MOCAP) , CONTROL_SYSTEM_STATE_DATA :: ID => CONTROL_SYSTEM_STATE_DATA :: deser (version , payload) . map (Self :: CONTROL_SYSTEM_STATE) , SCALED_IMU3_DATA :: ID => SCALED_IMU3_DATA :: deser (version , payload) . map (Self :: SCALED_IMU3) , WIND_COV_DATA :: ID => WIND_COV_DATA :: deser (version , payload) . map (Self :: WIND_COV) , CAMERA_INFORMATION_DATA :: ID => CAMERA_INFORMATION_DATA :: deser (version , payload) . map (Self :: CAMERA_INFORMATION) , GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: ID => GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: deser (version , payload) . map (Self :: GIMBAL_MANAGER_SET_MANUAL_CONTROL) , OBSTACLE_DISTANCE_DATA :: ID => OBSTACLE_DISTANCE_DATA :: deser (version , payload) . map (Self :: OBSTACLE_DISTANCE) , SERIAL_CONTROL_DATA :: ID => SERIAL_CONTROL_DATA :: deser (version , payload) . map (Self :: SERIAL_CONTROL) , ACTUATOR_CONTROL_TARGET_DATA :: ID => ACTUATOR_CONTROL_TARGET_DATA :: deser (version , payload) . map (Self :: ACTUATOR_CONTROL_TARGET) , GLOBAL_POSITION_INT_DATA :: ID => GLOBAL_POSITION_INT_DATA :: deser (version , payload) . map (Self :: GLOBAL_POSITION_INT) , GPS_INPUT_DATA :: ID => GPS_INPUT_DATA :: deser (version , payload) . map (Self :: GPS_INPUT) , VIBRATION_DATA :: ID => VIBRATION_DATA :: deser (version , payload) . map (Self :: VIBRATION) , PARAM_REQUEST_LIST_DATA :: ID => PARAM_REQUEST_LIST_DATA :: deser (version , payload) . map (Self :: PARAM_REQUEST_LIST) , EXTENDED_SYS_STATE_DATA :: ID => EXTENDED_SYS_STATE_DATA :: deser (version , payload) . map (Self :: EXTENDED_SYS_STATE) , PLAY_TUNE_DATA :: ID => PLAY_TUNE_DATA :: deser (version , payload) . map (Self :: PLAY_TUNE) , VFR_HUD_DATA :: ID => VFR_HUD_DATA :: deser (version , payload) . map (Self :: VFR_HUD) , LOG_REQUEST_END_DATA :: ID => LOG_REQUEST_END_DATA :: deser (version , payload) . map (Self :: LOG_REQUEST_END) , HIGHRES_IMU_DATA :: ID => HIGHRES_IMU_DATA :: deser (version , payload) . map (Self :: HIGHRES_IMU) , GLOBAL_POSITION_INT_COV_DATA :: ID => GLOBAL_POSITION_INT_COV_DATA :: deser (version , payload) . map (Self :: GLOBAL_POSITION_INT_COV) , AIS_VESSEL_DATA :: ID => AIS_VESSEL_DATA :: deser (version , payload) . map (Self :: AIS_VESSEL) , GPS_RTCM_DATA_DATA :: ID => GPS_RTCM_DATA_DATA :: deser (version , payload) . map (Self :: GPS_RTCM_DATA) , COMMAND_ACK_DATA :: ID => COMMAND_ACK_DATA :: deser (version , payload) . map (Self :: COMMAND_ACK) , CHANGE_OPERATOR_CONTROL_ACK_DATA :: ID => CHANGE_OPERATOR_CONTROL_ACK_DATA :: deser (version , payload) . map (Self :: CHANGE_OPERATOR_CONTROL_ACK) , SCALED_IMU2_DATA :: ID => SCALED_IMU2_DATA :: deser (version , payload) . map (Self :: SCALED_IMU2) , GIMBAL_MANAGER_STATUS_DATA :: ID => GIMBAL_MANAGER_STATUS_DATA :: deser (version , payload) . map (Self :: GIMBAL_MANAGER_STATUS) , PARAM_EXT_REQUEST_LIST_DATA :: ID => PARAM_EXT_REQUEST_LIST_DATA :: deser (version , payload) . map (Self :: PARAM_EXT_REQUEST_LIST) , ODOMETRY_DATA :: ID => ODOMETRY_DATA :: deser (version , payload) . map (Self :: ODOMETRY) , DEBUG_VECT_DATA :: ID => DEBUG_VECT_DATA :: deser (version , payload) . map (Self :: DEBUG_VECT) , DEBUG_DATA :: ID => DEBUG_DATA :: deser (version , payload) . map (Self :: DEBUG) , TRAJECTORY_REPRESENTATION_BEZIER_DATA :: ID => TRAJECTORY_REPRESENTATION_BEZIER_DATA :: deser (version , payload) . map (Self :: TRAJECTORY_REPRESENTATION_BEZIER) , REQUEST_EVENT_DATA :: ID => REQUEST_EVENT_DATA :: deser (version , payload) . map (Self :: REQUEST_EVENT) , CAN_FILTER_MODIFY_DATA :: ID => CAN_FILTER_MODIFY_DATA :: deser (version , payload) . map (Self :: CAN_FILTER_MODIFY) , HYGROMETER_SENSOR_DATA :: ID => HYGROMETER_SENSOR_DATA :: deser (version , payload) . map (Self :: HYGROMETER_SENSOR) , NAMED_VALUE_INT_DATA :: ID => NAMED_VALUE_INT_DATA :: deser (version , payload) . map (Self :: NAMED_VALUE_INT) , OPEN_DRONE_ID_MESSAGE_PACK_DATA :: ID => OPEN_DRONE_ID_MESSAGE_PACK_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_MESSAGE_PACK) , CAMERA_TRIGGER_DATA :: ID => CAMERA_TRIGGER_DATA :: deser (version , payload) . map (Self :: CAMERA_TRIGGER) , LOG_DATA_DATA :: ID => LOG_DATA_DATA :: deser (version , payload) . map (Self :: LOG_DATA) , SCALED_PRESSURE3_DATA :: ID => SCALED_PRESSURE3_DATA :: deser (version , payload) . map (Self :: SCALED_PRESSURE3) , OPEN_DRONE_ID_ARM_STATUS_DATA :: ID => OPEN_DRONE_ID_ARM_STATUS_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_ARM_STATUS) , ATTITUDE_QUATERNION_DATA :: ID => ATTITUDE_QUATERNION_DATA :: deser (version , payload) . map (Self :: ATTITUDE_QUATERNION) , CHANGE_OPERATOR_CONTROL_DATA :: ID => CHANGE_OPERATOR_CONTROL_DATA :: deser (version , payload) . map (Self :: CHANGE_OPERATOR_CONTROL) , SETUP_SIGNING_DATA :: ID => SETUP_SIGNING_DATA :: deser (version , payload) . map (Self :: SETUP_SIGNING) , GIMBAL_DEVICE_INFORMATION_DATA :: ID => GIMBAL_DEVICE_INFORMATION_DATA :: deser (version , payload) . map (Self :: GIMBAL_DEVICE_INFORMATION) , WINCH_STATUS_DATA :: ID => WINCH_STATUS_DATA :: deser (version , payload) . map (Self :: WINCH_STATUS) , SIM_STATE_DATA :: ID => SIM_STATE_DATA :: deser (version , payload) . map (Self :: SIM_STATE) , GPS_RTK_DATA :: ID => GPS_RTK_DATA :: deser (version , payload) . map (Self :: GPS_RTK) , GPS2_RTK_DATA :: ID => GPS2_RTK_DATA :: deser (version , payload) . map (Self :: GPS2_RTK) , HIGH_LATENCY_DATA :: ID => HIGH_LATENCY_DATA :: deser (version , payload) . map (Self :: HIGH_LATENCY) , TERRAIN_REPORT_DATA :: ID => TERRAIN_REPORT_DATA :: deser (version , payload) . map (Self :: TERRAIN_REPORT) , HIL_STATE_DATA :: ID => HIL_STATE_DATA :: deser (version , payload) . map (Self :: HIL_STATE) , MEMORY_VECT_DATA :: ID => MEMORY_VECT_DATA :: deser (version , payload) . map (Self :: MEMORY_VECT) , MOUNT_ORIENTATION_DATA :: ID => MOUNT_ORIENTATION_DATA :: deser (version , payload) . map (Self :: MOUNT_ORIENTATION) , CAMERA_TRACKING_GEO_STATUS_DATA :: ID => CAMERA_TRACKING_GEO_STATUS_DATA :: deser (version , payload) . map (Self :: CAMERA_TRACKING_GEO_STATUS) , LOGGING_ACK_DATA :: ID => LOGGING_ACK_DATA :: deser (version , payload) . map (Self :: LOGGING_ACK) , UAVCAN_NODE_STATUS_DATA :: ID => UAVCAN_NODE_STATUS_DATA :: deser (version , payload) . map (Self :: UAVCAN_NODE_STATUS) , SCALED_PRESSURE2_DATA :: ID => SCALED_PRESSURE2_DATA :: deser (version , payload) . map (Self :: SCALED_PRESSURE2) , VIDEO_STREAM_INFORMATION_DATA :: ID => VIDEO_STREAM_INFORMATION_DATA :: deser (version , payload) . map (Self :: VIDEO_STREAM_INFORMATION) , BATTERY_STATUS_DATA :: ID => BATTERY_STATUS_DATA :: deser (version , payload) . map (Self :: BATTERY_STATUS) , SCALED_IMU_DATA :: ID => SCALED_IMU_DATA :: deser (version , payload) . map (Self :: SCALED_IMU) , LOCAL_POSITION_NED_COV_DATA :: ID => LOCAL_POSITION_NED_COV_DATA :: deser (version , payload) . map (Self :: LOCAL_POSITION_NED_COV) , GENERATOR_STATUS_DATA :: ID => GENERATOR_STATUS_DATA :: deser (version , payload) . map (Self :: GENERATOR_STATUS) , CAN_FRAME_DATA :: ID => CAN_FRAME_DATA :: deser (version , payload) . map (Self :: CAN_FRAME) , TERRAIN_CHECK_DATA :: ID => TERRAIN_CHECK_DATA :: deser (version , payload) . map (Self :: TERRAIN_CHECK) , CAMERA_CAPTURE_STATUS_DATA :: ID => CAMERA_CAPTURE_STATUS_DATA :: deser (version , payload) . map (Self :: CAMERA_CAPTURE_STATUS) , UAVCAN_NODE_INFO_DATA :: ID => UAVCAN_NODE_INFO_DATA :: deser (version , payload) . map (Self :: UAVCAN_NODE_INFO) , RAW_PRESSURE_DATA :: ID => RAW_PRESSURE_DATA :: deser (version , payload) . map (Self :: RAW_PRESSURE) , POSITION_TARGET_GLOBAL_INT_DATA :: ID => POSITION_TARGET_GLOBAL_INT_DATA :: deser (version , payload) . map (Self :: POSITION_TARGET_GLOBAL_INT) , HEARTBEAT_DATA :: ID => HEARTBEAT_DATA :: deser (version , payload) . map (Self :: HEARTBEAT) , RADIO_STATUS_DATA :: ID => RADIO_STATUS_DATA :: deser (version , payload) . map (Self :: RADIO_STATUS) , PARAM_EXT_VALUE_DATA :: ID => PARAM_EXT_VALUE_DATA :: deser (version , payload) . map (Self :: PARAM_EXT_VALUE) , RC_CHANNELS_RAW_DATA :: ID => RC_CHANNELS_RAW_DATA :: deser (version , payload) . map (Self :: RC_CHANNELS_RAW) , ISBD_LINK_STATUS_DATA :: ID => ISBD_LINK_STATUS_DATA :: deser (version , payload) . map (Self :: ISBD_LINK_STATUS) , OPTICAL_FLOW_RAD_DATA :: ID => OPTICAL_FLOW_RAD_DATA :: deser (version , payload) . map (Self :: OPTICAL_FLOW_RAD) , PARAM_MAP_RC_DATA :: ID => PARAM_MAP_RC_DATA :: deser (version , payload) . map (Self :: PARAM_MAP_RC) , PARAM_REQUEST_READ_DATA :: ID => PARAM_REQUEST_READ_DATA :: deser (version , payload) . map (Self :: PARAM_REQUEST_READ) , RESPONSE_EVENT_ERROR_DATA :: ID => RESPONSE_EVENT_ERROR_DATA :: deser (version , payload) . map (Self :: RESPONSE_EVENT_ERROR) , LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: ID => LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: deser (version , payload) . map (Self :: LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET) , GLOBAL_VISION_POSITION_ESTIMATE_DATA :: ID => GLOBAL_VISION_POSITION_ESTIMATE_DATA :: deser (version , payload) . map (Self :: GLOBAL_VISION_POSITION_ESTIMATE) , FENCE_STATUS_DATA :: ID => FENCE_STATUS_DATA :: deser (version , payload) . map (Self :: FENCE_STATUS) , ONBOARD_COMPUTER_STATUS_DATA :: ID => ONBOARD_COMPUTER_STATUS_DATA :: deser (version , payload) . map (Self :: ONBOARD_COMPUTER_STATUS) , CURRENT_EVENT_SEQUENCE_DATA :: ID => CURRENT_EVENT_SEQUENCE_DATA :: deser (version , payload) . map (Self :: CURRENT_EVENT_SEQUENCE) , MISSION_REQUEST_INT_DATA :: ID => MISSION_REQUEST_INT_DATA :: deser (version , payload) . map (Self :: MISSION_REQUEST_INT) , MISSION_ITEM_INT_DATA :: ID => MISSION_ITEM_INT_DATA :: deser (version , payload) . map (Self :: MISSION_ITEM_INT) , VISION_POSITION_ESTIMATE_DATA :: ID => VISION_POSITION_ESTIMATE_DATA :: deser (version , payload) . map (Self :: VISION_POSITION_ESTIMATE) , PARAM_EXT_ACK_DATA :: ID => PARAM_EXT_ACK_DATA :: deser (version , payload) . map (Self :: PARAM_EXT_ACK) , SYSTEM_TIME_DATA :: ID => SYSTEM_TIME_DATA :: deser (version , payload) . map (Self :: SYSTEM_TIME) , LINK_NODE_STATUS_DATA :: ID => LINK_NODE_STATUS_DATA :: deser (version , payload) . map (Self :: LINK_NODE_STATUS) , COMMAND_CANCEL_DATA :: ID => COMMAND_CANCEL_DATA :: deser (version , payload) . map (Self :: COMMAND_CANCEL) , VICON_POSITION_ESTIMATE_DATA :: ID => VICON_POSITION_ESTIMATE_DATA :: deser (version , payload) . map (Self :: VICON_POSITION_ESTIMATE) , SERVO_OUTPUT_RAW_DATA :: ID => SERVO_OUTPUT_RAW_DATA :: deser (version , payload) . map (Self :: SERVO_OUTPUT_RAW) , TIMESYNC_DATA :: ID => TIMESYNC_DATA :: deser (version , payload) . map (Self :: TIMESYNC) , POWER_STATUS_DATA :: ID => POWER_STATUS_DATA :: deser (version , payload) . map (Self :: POWER_STATUS) , OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: ID => OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_SYSTEM_UPDATE) , RAW_RPM_DATA :: ID => RAW_RPM_DATA :: deser (version , payload) . map (Self :: RAW_RPM) , OPEN_DRONE_ID_LOCATION_DATA :: ID => OPEN_DRONE_ID_LOCATION_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_LOCATION) , LANDING_TARGET_DATA :: ID => LANDING_TARGET_DATA :: deser (version , payload) . map (Self :: LANDING_TARGET) , GIMBAL_MANAGER_SET_ATTITUDE_DATA :: ID => GIMBAL_MANAGER_SET_ATTITUDE_DATA :: deser (version , payload) . map (Self :: GIMBAL_MANAGER_SET_ATTITUDE) , ESC_STATUS_DATA :: ID => ESC_STATUS_DATA :: deser (version , payload) . map (Self :: ESC_STATUS) , ORBIT_EXECUTION_STATUS_DATA :: ID => ORBIT_EXECUTION_STATUS_DATA :: deser (version , payload) . map (Self :: ORBIT_EXECUTION_STATUS) , SYS_STATUS_DATA :: ID => SYS_STATUS_DATA :: deser (version , payload) . map (Self :: SYS_STATUS) , LOG_REQUEST_DATA_DATA :: ID => LOG_REQUEST_DATA_DATA :: deser (version , payload) . map (Self :: LOG_REQUEST_DATA) , AUTH_KEY_DATA :: ID => AUTH_KEY_DATA :: deser (version , payload) . map (Self :: AUTH_KEY) , LOG_REQUEST_LIST_DATA :: ID => LOG_REQUEST_LIST_DATA :: deser (version , payload) . map (Self :: LOG_REQUEST_LIST) , GPS_INJECT_DATA_DATA :: ID => GPS_INJECT_DATA_DATA :: deser (version , payload) . map (Self :: GPS_INJECT_DATA) , MISSION_SET_CURRENT_DATA :: ID => MISSION_SET_CURRENT_DATA :: deser (version , payload) . map (Self :: MISSION_SET_CURRENT) , COMMAND_INT_DATA :: ID => COMMAND_INT_DATA :: deser (version , payload) . map (Self :: COMMAND_INT) , HIGH_LATENCY2_DATA :: ID => HIGH_LATENCY2_DATA :: deser (version , payload) . map (Self :: HIGH_LATENCY2) , BUTTON_CHANGE_DATA :: ID => BUTTON_CHANGE_DATA :: deser (version , payload) . map (Self :: BUTTON_CHANGE) , CAMERA_SETTINGS_DATA :: ID => CAMERA_SETTINGS_DATA :: deser (version , payload) . map (Self :: CAMERA_SETTINGS) , DEBUG_FLOAT_ARRAY_DATA :: ID => DEBUG_FLOAT_ARRAY_DATA :: deser (version , payload) . map (Self :: DEBUG_FLOAT_ARRAY) , COMPONENT_METADATA_DATA :: ID => COMPONENT_METADATA_DATA :: deser (version , payload) . map (Self :: COMPONENT_METADATA) , MISSION_CLEAR_ALL_DATA :: ID => MISSION_CLEAR_ALL_DATA :: deser (version , payload) . map (Self :: MISSION_CLEAR_ALL) , COLLISION_DATA :: ID => COLLISION_DATA :: deser (version , payload) . map (Self :: COLLISION) , SUPPORTED_TUNES_DATA :: ID => SUPPORTED_TUNES_DATA :: deser (version , payload) . map (Self :: SUPPORTED_TUNES) , EVENT_DATA :: ID => EVENT_DATA :: deser (version , payload) . map (Self :: EVENT) , CANFD_FRAME_DATA :: ID => CANFD_FRAME_DATA :: deser (version , payload) . map (Self :: CANFD_FRAME) , GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: ID => GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: deser (version , payload) . map (Self :: GIMBAL_DEVICE_ATTITUDE_STATUS) , HOME_POSITION_DATA :: ID => HOME_POSITION_DATA :: deser (version , payload) . map (Self :: HOME_POSITION) , OPEN_DRONE_ID_SYSTEM_DATA :: ID => OPEN_DRONE_ID_SYSTEM_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_SYSTEM) , GPS_RAW_INT_DATA :: ID => GPS_RAW_INT_DATA :: deser (version , payload) . map (Self :: GPS_RAW_INT) , PING_DATA :: ID => PING_DATA :: deser (version , payload) . map (Self :: PING) , HIL_CONTROLS_DATA :: ID => HIL_CONTROLS_DATA :: deser (version , payload) . map (Self :: HIL_CONTROLS) , HIL_RC_INPUTS_RAW_DATA :: ID => HIL_RC_INPUTS_RAW_DATA :: deser (version , payload) . map (Self :: HIL_RC_INPUTS_RAW) , STATUSTEXT_DATA :: ID => STATUSTEXT_DATA :: deser (version , payload) . map (Self :: STATUSTEXT) , PARAM_VALUE_DATA :: ID => PARAM_VALUE_DATA :: deser (version , payload) . map (Self :: PARAM_VALUE) , SET_POSITION_TARGET_LOCAL_NED_DATA :: ID => SET_POSITION_TARGET_LOCAL_NED_DATA :: deser (version , payload) . map (Self :: SET_POSITION_TARGET_LOCAL_NED) , MISSION_REQUEST_DATA :: ID => MISSION_REQUEST_DATA :: deser (version , payload) . map (Self :: MISSION_REQUEST) , TIME_ESTIMATE_TO_TARGET_DATA :: ID => TIME_ESTIMATE_TO_TARGET_DATA :: deser (version , payload) . map (Self :: TIME_ESTIMATE_TO_TARGET) , RAW_IMU_DATA :: ID => RAW_IMU_DATA :: deser (version , payload) . map (Self :: RAW_IMU) , DATA_TRANSMISSION_HANDSHAKE_DATA :: ID => DATA_TRANSMISSION_HANDSHAKE_DATA :: deser (version , payload) . map (Self :: DATA_TRANSMISSION_HANDSHAKE) , OPEN_DRONE_ID_OPERATOR_ID_DATA :: ID => OPEN_DRONE_ID_OPERATOR_ID_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_OPERATOR_ID) , MISSION_WRITE_PARTIAL_LIST_DATA :: ID => MISSION_WRITE_PARTIAL_LIST_DATA :: deser (version , payload) . map (Self :: MISSION_WRITE_PARTIAL_LIST) , V2_EXTENSION_DATA :: ID => V2_EXTENSION_DATA :: deser (version , payload) . map (Self :: V2_EXTENSION) , CAMERA_FOV_STATUS_DATA :: ID => CAMERA_FOV_STATUS_DATA :: deser (version , payload) . map (Self :: CAMERA_FOV_STATUS) , MAG_CAL_REPORT_DATA :: ID => MAG_CAL_REPORT_DATA :: deser (version , payload) . map (Self :: MAG_CAL_REPORT) , SCALED_PRESSURE_DATA :: ID => SCALED_PRESSURE_DATA :: deser (version , payload) . map (Self :: SCALED_PRESSURE) , LOGGING_DATA_DATA :: ID => LOGGING_DATA_DATA :: deser (version , payload) . map (Self :: LOGGING_DATA) , ESC_INFO_DATA :: ID => ESC_INFO_DATA :: deser (version , payload) . map (Self :: ESC_INFO) , CELLULAR_STATUS_DATA :: ID => CELLULAR_STATUS_DATA :: deser (version , payload) . map (Self :: CELLULAR_STATUS) , RC_CHANNELS_SCALED_DATA :: ID => RC_CHANNELS_SCALED_DATA :: deser (version , payload) . map (Self :: RC_CHANNELS_SCALED) , MANUAL_CONTROL_DATA :: ID => MANUAL_CONTROL_DATA :: deser (version , payload) . map (Self :: MANUAL_CONTROL) , DATA_STREAM_DATA :: ID => DATA_STREAM_DATA :: deser (version , payload) . map (Self :: DATA_STREAM) , SET_HOME_POSITION_DATA :: ID => SET_HOME_POSITION_DATA :: deser (version , payload) . map (Self :: SET_HOME_POSITION) , GIMBAL_DEVICE_SET_ATTITUDE_DATA :: ID => GIMBAL_DEVICE_SET_ATTITUDE_DATA :: deser (version , payload) . map (Self :: GIMBAL_DEVICE_SET_ATTITUDE) , TUNNEL_DATA :: ID => TUNNEL_DATA :: deser (version , payload) . map (Self :: TUNNEL) , COMPONENT_INFORMATION_DATA :: ID => COMPONENT_INFORMATION_DATA :: deser (version , payload) . map (Self :: COMPONENT_INFORMATION) , SET_ACTUATOR_CONTROL_TARGET_DATA :: ID => SET_ACTUATOR_CONTROL_TARGET_DATA :: deser (version , payload) . map (Self :: SET_ACTUATOR_CONTROL_TARGET) , HIL_ACTUATOR_CONTROLS_DATA :: ID => HIL_ACTUATOR_CONTROLS_DATA :: deser (version , payload) . map (Self :: HIL_ACTUATOR_CONTROLS) , RESOURCE_REQUEST_DATA :: ID => RESOURCE_REQUEST_DATA :: deser (version , payload) . map (Self :: RESOURCE_REQUEST) , PARAM_SET_DATA :: ID => PARAM_SET_DATA :: deser (version , payload) . map (Self :: PARAM_SET) , CELLULAR_CONFIG_DATA :: ID => CELLULAR_CONFIG_DATA :: deser (version , payload) . map (Self :: CELLULAR_CONFIG) , ALTITUDE_DATA :: ID => ALTITUDE_DATA :: deser (version , payload) . map (Self :: ALTITUDE) , LOG_ENTRY_DATA :: ID => LOG_ENTRY_DATA :: deser (version , payload) . map (Self :: LOG_ENTRY) , SMART_BATTERY_INFO_DATA :: ID => SMART_BATTERY_INFO_DATA :: deser (version , payload) . map (Self :: SMART_BATTERY_INFO) , UTM_GLOBAL_POSITION_DATA :: ID => UTM_GLOBAL_POSITION_DATA :: deser (version , payload) . map (Self :: UTM_GLOBAL_POSITION) , PLAY_TUNE_V2_DATA :: ID => PLAY_TUNE_V2_DATA :: deser (version , payload) . map (Self :: PLAY_TUNE_V2) , HIL_OPTICAL_FLOW_DATA :: ID => HIL_OPTICAL_FLOW_DATA :: deser (version , payload) . map (Self :: HIL_OPTICAL_FLOW) , REQUEST_DATA_STREAM_DATA :: ID => REQUEST_DATA_STREAM_DATA :: deser (version , payload) . map (Self :: REQUEST_DATA_STREAM) , _ => { Err (:: mavlink_core :: error :: ParserError :: UnknownMessage { id }) } , } } fn message_name (& self) -> & 'static str { match self { Self :: LOCAL_POSITION_NED (..) => LOCAL_POSITION_NED_DATA :: NAME , Self :: FOLLOW_TARGET (..) => FOLLOW_TARGET_DATA :: NAME , Self :: OPTICAL_FLOW (..) => OPTICAL_FLOW_DATA :: NAME , Self :: STORAGE_INFORMATION (..) => STORAGE_INFORMATION_DATA :: NAME , Self :: SAFETY_ALLOWED_AREA (..) => SAFETY_ALLOWED_AREA_DATA :: NAME , Self :: MANUAL_SETPOINT (..) => MANUAL_SETPOINT_DATA :: NAME , Self :: AUTOPILOT_VERSION (..) => AUTOPILOT_VERSION_DATA :: NAME , Self :: RC_CHANNELS (..) => RC_CHANNELS_DATA :: NAME , Self :: ESTIMATOR_STATUS (..) => ESTIMATOR_STATUS_DATA :: NAME , Self :: ADSB_VEHICLE (..) => ADSB_VEHICLE_DATA :: NAME , Self :: TRAJECTORY_REPRESENTATION_WAYPOINTS (..) => TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: NAME , Self :: WHEEL_DISTANCE (..) => WHEEL_DISTANCE_DATA :: NAME , Self :: NAMED_VALUE_FLOAT (..) => NAMED_VALUE_FLOAT_DATA :: NAME , Self :: ACTUATOR_OUTPUT_STATUS (..) => ACTUATOR_OUTPUT_STATUS_DATA :: NAME , Self :: OPEN_DRONE_ID_BASIC_ID (..) => OPEN_DRONE_ID_BASIC_ID_DATA :: NAME , Self :: PARAM_EXT_REQUEST_READ (..) => PARAM_EXT_REQUEST_READ_DATA :: NAME , Self :: OPEN_DRONE_ID_SELF_ID (..) => OPEN_DRONE_ID_SELF_ID_DATA :: NAME , Self :: DISTANCE_SENSOR (..) => DISTANCE_SENSOR_DATA :: NAME , Self :: PARAM_EXT_SET (..) => PARAM_EXT_SET_DATA :: NAME , Self :: OPEN_DRONE_ID_AUTHENTICATION (..) => OPEN_DRONE_ID_AUTHENTICATION_DATA :: NAME , Self :: MISSION_CURRENT (..) => MISSION_CURRENT_DATA :: NAME , Self :: ATTITUDE_TARGET (..) => ATTITUDE_TARGET_DATA :: NAME , Self :: GPS2_RAW (..) => GPS2_RAW_DATA :: NAME , Self :: FLIGHT_INFORMATION (..) => FLIGHT_INFORMATION_DATA :: NAME , Self :: MISSION_COUNT (..) => MISSION_COUNT_DATA :: NAME , Self :: SAFETY_SET_ALLOWED_AREA (..) => SAFETY_SET_ALLOWED_AREA_DATA :: NAME , Self :: CAMERA_TRACKING_IMAGE_STATUS (..) => CAMERA_TRACKING_IMAGE_STATUS_DATA :: NAME , Self :: GIMBAL_MANAGER_SET_PITCHYAW (..) => GIMBAL_MANAGER_SET_PITCHYAW_DATA :: NAME , Self :: ATTITUDE (..) => ATTITUDE_DATA :: NAME , Self :: MISSION_REQUEST_PARTIAL_LIST (..) => MISSION_REQUEST_PARTIAL_LIST_DATA :: NAME , Self :: POSITION_TARGET_LOCAL_NED (..) => POSITION_TARGET_LOCAL_NED_DATA :: NAME , Self :: GPS_STATUS (..) => GPS_STATUS_DATA :: NAME , Self :: SET_ATTITUDE_TARGET (..) => SET_ATTITUDE_TARGET_DATA :: NAME , Self :: HIL_GPS (..) => HIL_GPS_DATA :: NAME , Self :: LOG_ERASE (..) => LOG_ERASE_DATA :: NAME , Self :: VISION_SPEED_ESTIMATE (..) => VISION_SPEED_ESTIMATE_DATA :: NAME , Self :: HIL_STATE_QUATERNION (..) => HIL_STATE_QUATERNION_DATA :: NAME , Self :: NAV_CONTROLLER_OUTPUT (..) => NAV_CONTROLLER_OUTPUT_DATA :: NAME , Self :: RC_CHANNELS_OVERRIDE (..) => RC_CHANNELS_OVERRIDE_DATA :: NAME , Self :: FILE_TRANSFER_PROTOCOL (..) => FILE_TRANSFER_PROTOCOL_DATA :: NAME , Self :: EFI_STATUS (..) => EFI_STATUS_DATA :: NAME , Self :: CAMERA_IMAGE_CAPTURED (..) => CAMERA_IMAGE_CAPTURED_DATA :: NAME , Self :: ENCAPSULATED_DATA (..) => ENCAPSULATED_DATA_DATA :: NAME , Self :: COMMAND_LONG (..) => COMMAND_LONG_DATA :: NAME , Self :: MESSAGE_INTERVAL (..) => MESSAGE_INTERVAL_DATA :: NAME , Self :: LOGGING_DATA_ACKED (..) => LOGGING_DATA_ACKED_DATA :: NAME , Self :: VIDEO_STREAM_STATUS (..) => VIDEO_STREAM_STATUS_DATA :: NAME , Self :: GIMBAL_MANAGER_INFORMATION (..) => GIMBAL_MANAGER_INFORMATION_DATA :: NAME , Self :: WIFI_CONFIG_AP (..) => WIFI_CONFIG_AP_DATA :: NAME , Self :: AUTOPILOT_STATE_FOR_GIMBAL_DEVICE (..) => AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: NAME , Self :: SET_MODE (..) => SET_MODE_DATA :: NAME , Self :: MISSION_ITEM (..) => MISSION_ITEM_DATA :: NAME , Self :: PROTOCOL_VERSION (..) => PROTOCOL_VERSION_DATA :: NAME , Self :: MISSION_ITEM_REACHED (..) => MISSION_ITEM_REACHED_DATA :: NAME , Self :: MISSION_ACK (..) => MISSION_ACK_DATA :: NAME , Self :: SET_GPS_GLOBAL_ORIGIN (..) => SET_GPS_GLOBAL_ORIGIN_DATA :: NAME , Self :: GPS_GLOBAL_ORIGIN (..) => GPS_GLOBAL_ORIGIN_DATA :: NAME , Self :: MISSION_REQUEST_LIST (..) => MISSION_REQUEST_LIST_DATA :: NAME , Self :: HIL_SENSOR (..) => HIL_SENSOR_DATA :: NAME , Self :: ATTITUDE_QUATERNION_COV (..) => ATTITUDE_QUATERNION_COV_DATA :: NAME , Self :: SET_POSITION_TARGET_GLOBAL_INT (..) => SET_POSITION_TARGET_GLOBAL_INT_DATA :: NAME , Self :: TERRAIN_REQUEST (..) => TERRAIN_REQUEST_DATA :: NAME , Self :: TERRAIN_DATA (..) => TERRAIN_DATA_DATA :: NAME , Self :: ATT_POS_MOCAP (..) => ATT_POS_MOCAP_DATA :: NAME , Self :: CONTROL_SYSTEM_STATE (..) => CONTROL_SYSTEM_STATE_DATA :: NAME , Self :: SCALED_IMU3 (..) => SCALED_IMU3_DATA :: NAME , Self :: WIND_COV (..) => WIND_COV_DATA :: NAME , Self :: CAMERA_INFORMATION (..) => CAMERA_INFORMATION_DATA :: NAME , Self :: GIMBAL_MANAGER_SET_MANUAL_CONTROL (..) => GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: NAME , Self :: OBSTACLE_DISTANCE (..) => OBSTACLE_DISTANCE_DATA :: NAME , Self :: SERIAL_CONTROL (..) => SERIAL_CONTROL_DATA :: NAME , Self :: ACTUATOR_CONTROL_TARGET (..) => ACTUATOR_CONTROL_TARGET_DATA :: NAME , Self :: GLOBAL_POSITION_INT (..) => GLOBAL_POSITION_INT_DATA :: NAME , Self :: GPS_INPUT (..) => GPS_INPUT_DATA :: NAME , Self :: VIBRATION (..) => VIBRATION_DATA :: NAME , Self :: PARAM_REQUEST_LIST (..) => PARAM_REQUEST_LIST_DATA :: NAME , Self :: EXTENDED_SYS_STATE (..) => EXTENDED_SYS_STATE_DATA :: NAME , Self :: PLAY_TUNE (..) => PLAY_TUNE_DATA :: NAME , Self :: VFR_HUD (..) => VFR_HUD_DATA :: NAME , Self :: LOG_REQUEST_END (..) => LOG_REQUEST_END_DATA :: NAME , Self :: HIGHRES_IMU (..) => HIGHRES_IMU_DATA :: NAME , Self :: GLOBAL_POSITION_INT_COV (..) => GLOBAL_POSITION_INT_COV_DATA :: NAME , Self :: AIS_VESSEL (..) => AIS_VESSEL_DATA :: NAME , Self :: GPS_RTCM_DATA (..) => GPS_RTCM_DATA_DATA :: NAME , Self :: COMMAND_ACK (..) => COMMAND_ACK_DATA :: NAME , Self :: CHANGE_OPERATOR_CONTROL_ACK (..) => CHANGE_OPERATOR_CONTROL_ACK_DATA :: NAME , Self :: SCALED_IMU2 (..) => SCALED_IMU2_DATA :: NAME , Self :: GIMBAL_MANAGER_STATUS (..) => GIMBAL_MANAGER_STATUS_DATA :: NAME , Self :: PARAM_EXT_REQUEST_LIST (..) => PARAM_EXT_REQUEST_LIST_DATA :: NAME , Self :: ODOMETRY (..) => ODOMETRY_DATA :: NAME , Self :: DEBUG_VECT (..) => DEBUG_VECT_DATA :: NAME , Self :: DEBUG (..) => DEBUG_DATA :: NAME , Self :: TRAJECTORY_REPRESENTATION_BEZIER (..) => TRAJECTORY_REPRESENTATION_BEZIER_DATA :: NAME , Self :: REQUEST_EVENT (..) => REQUEST_EVENT_DATA :: NAME , Self :: CAN_FILTER_MODIFY (..) => CAN_FILTER_MODIFY_DATA :: NAME , Self :: HYGROMETER_SENSOR (..) => HYGROMETER_SENSOR_DATA :: NAME , Self :: NAMED_VALUE_INT (..) => NAMED_VALUE_INT_DATA :: NAME , Self :: OPEN_DRONE_ID_MESSAGE_PACK (..) => OPEN_DRONE_ID_MESSAGE_PACK_DATA :: NAME , Self :: CAMERA_TRIGGER (..) => CAMERA_TRIGGER_DATA :: NAME , Self :: LOG_DATA (..) => LOG_DATA_DATA :: NAME , Self :: SCALED_PRESSURE3 (..) => SCALED_PRESSURE3_DATA :: NAME , Self :: OPEN_DRONE_ID_ARM_STATUS (..) => OPEN_DRONE_ID_ARM_STATUS_DATA :: NAME , Self :: ATTITUDE_QUATERNION (..) => ATTITUDE_QUATERNION_DATA :: NAME , Self :: CHANGE_OPERATOR_CONTROL (..) => CHANGE_OPERATOR_CONTROL_DATA :: NAME , Self :: SETUP_SIGNING (..) => SETUP_SIGNING_DATA :: NAME , Self :: GIMBAL_DEVICE_INFORMATION (..) => GIMBAL_DEVICE_INFORMATION_DATA :: NAME , Self :: WINCH_STATUS (..) => WINCH_STATUS_DATA :: NAME , Self :: SIM_STATE (..) => SIM_STATE_DATA :: NAME , Self :: GPS_RTK (..) => GPS_RTK_DATA :: NAME , Self :: GPS2_RTK (..) => GPS2_RTK_DATA :: NAME , Self :: HIGH_LATENCY (..) => HIGH_LATENCY_DATA :: NAME , Self :: TERRAIN_REPORT (..) => TERRAIN_REPORT_DATA :: NAME , Self :: HIL_STATE (..) => HIL_STATE_DATA :: NAME , Self :: MEMORY_VECT (..) => MEMORY_VECT_DATA :: NAME , Self :: MOUNT_ORIENTATION (..) => MOUNT_ORIENTATION_DATA :: NAME , Self :: CAMERA_TRACKING_GEO_STATUS (..) => CAMERA_TRACKING_GEO_STATUS_DATA :: NAME , Self :: LOGGING_ACK (..) => LOGGING_ACK_DATA :: NAME , Self :: UAVCAN_NODE_STATUS (..) => UAVCAN_NODE_STATUS_DATA :: NAME , Self :: SCALED_PRESSURE2 (..) => SCALED_PRESSURE2_DATA :: NAME , Self :: VIDEO_STREAM_INFORMATION (..) => VIDEO_STREAM_INFORMATION_DATA :: NAME , Self :: BATTERY_STATUS (..) => BATTERY_STATUS_DATA :: NAME , Self :: SCALED_IMU (..) => SCALED_IMU_DATA :: NAME , Self :: LOCAL_POSITION_NED_COV (..) => LOCAL_POSITION_NED_COV_DATA :: NAME , Self :: GENERATOR_STATUS (..) => GENERATOR_STATUS_DATA :: NAME , Self :: CAN_FRAME (..) => CAN_FRAME_DATA :: NAME , Self :: TERRAIN_CHECK (..) => TERRAIN_CHECK_DATA :: NAME , Self :: CAMERA_CAPTURE_STATUS (..) => CAMERA_CAPTURE_STATUS_DATA :: NAME , Self :: UAVCAN_NODE_INFO (..) => UAVCAN_NODE_INFO_DATA :: NAME , Self :: RAW_PRESSURE (..) => RAW_PRESSURE_DATA :: NAME , Self :: POSITION_TARGET_GLOBAL_INT (..) => POSITION_TARGET_GLOBAL_INT_DATA :: NAME , Self :: HEARTBEAT (..) => HEARTBEAT_DATA :: NAME , Self :: RADIO_STATUS (..) => RADIO_STATUS_DATA :: NAME , Self :: PARAM_EXT_VALUE (..) => PARAM_EXT_VALUE_DATA :: NAME , Self :: RC_CHANNELS_RAW (..) => RC_CHANNELS_RAW_DATA :: NAME , Self :: ISBD_LINK_STATUS (..) => ISBD_LINK_STATUS_DATA :: NAME , Self :: OPTICAL_FLOW_RAD (..) => OPTICAL_FLOW_RAD_DATA :: NAME , Self :: PARAM_MAP_RC (..) => PARAM_MAP_RC_DATA :: NAME , Self :: PARAM_REQUEST_READ (..) => PARAM_REQUEST_READ_DATA :: NAME , Self :: RESPONSE_EVENT_ERROR (..) => RESPONSE_EVENT_ERROR_DATA :: NAME , Self :: LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET (..) => LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: NAME , Self :: GLOBAL_VISION_POSITION_ESTIMATE (..) => GLOBAL_VISION_POSITION_ESTIMATE_DATA :: NAME , Self :: FENCE_STATUS (..) => FENCE_STATUS_DATA :: NAME , Self :: ONBOARD_COMPUTER_STATUS (..) => ONBOARD_COMPUTER_STATUS_DATA :: NAME , Self :: CURRENT_EVENT_SEQUENCE (..) => CURRENT_EVENT_SEQUENCE_DATA :: NAME , Self :: MISSION_REQUEST_INT (..) => MISSION_REQUEST_INT_DATA :: NAME , Self :: MISSION_ITEM_INT (..) => MISSION_ITEM_INT_DATA :: NAME , Self :: VISION_POSITION_ESTIMATE (..) => VISION_POSITION_ESTIMATE_DATA :: NAME , Self :: PARAM_EXT_ACK (..) => PARAM_EXT_ACK_DATA :: NAME , Self :: SYSTEM_TIME (..) => SYSTEM_TIME_DATA :: NAME , Self :: LINK_NODE_STATUS (..) => LINK_NODE_STATUS_DATA :: NAME , Self :: COMMAND_CANCEL (..) => COMMAND_CANCEL_DATA :: NAME , Self :: VICON_POSITION_ESTIMATE (..) => VICON_POSITION_ESTIMATE_DATA :: NAME , Self :: SERVO_OUTPUT_RAW (..) => SERVO_OUTPUT_RAW_DATA :: NAME , Self :: TIMESYNC (..) => TIMESYNC_DATA :: NAME , Self :: POWER_STATUS (..) => POWER_STATUS_DATA :: NAME , Self :: OPEN_DRONE_ID_SYSTEM_UPDATE (..) => OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: NAME , Self :: RAW_RPM (..) => RAW_RPM_DATA :: NAME , Self :: OPEN_DRONE_ID_LOCATION (..) => OPEN_DRONE_ID_LOCATION_DATA :: NAME , Self :: LANDING_TARGET (..) => LANDING_TARGET_DATA :: NAME , Self :: GIMBAL_MANAGER_SET_ATTITUDE (..) => GIMBAL_MANAGER_SET_ATTITUDE_DATA :: NAME , Self :: ESC_STATUS (..) => ESC_STATUS_DATA :: NAME , Self :: ORBIT_EXECUTION_STATUS (..) => ORBIT_EXECUTION_STATUS_DATA :: NAME , Self :: SYS_STATUS (..) => SYS_STATUS_DATA :: NAME , Self :: LOG_REQUEST_DATA (..) => LOG_REQUEST_DATA_DATA :: NAME , Self :: AUTH_KEY (..) => AUTH_KEY_DATA :: NAME , Self :: LOG_REQUEST_LIST (..) => LOG_REQUEST_LIST_DATA :: NAME , Self :: GPS_INJECT_DATA (..) => GPS_INJECT_DATA_DATA :: NAME , Self :: MISSION_SET_CURRENT (..) => MISSION_SET_CURRENT_DATA :: NAME , Self :: COMMAND_INT (..) => COMMAND_INT_DATA :: NAME , Self :: HIGH_LATENCY2 (..) => HIGH_LATENCY2_DATA :: NAME , Self :: BUTTON_CHANGE (..) => BUTTON_CHANGE_DATA :: NAME , Self :: CAMERA_SETTINGS (..) => CAMERA_SETTINGS_DATA :: NAME , Self :: DEBUG_FLOAT_ARRAY (..) => DEBUG_FLOAT_ARRAY_DATA :: NAME , Self :: COMPONENT_METADATA (..) => COMPONENT_METADATA_DATA :: NAME , Self :: MISSION_CLEAR_ALL (..) => MISSION_CLEAR_ALL_DATA :: NAME , Self :: COLLISION (..) => COLLISION_DATA :: NAME , Self :: SUPPORTED_TUNES (..) => SUPPORTED_TUNES_DATA :: NAME , Self :: EVENT (..) => EVENT_DATA :: NAME , Self :: CANFD_FRAME (..) => CANFD_FRAME_DATA :: NAME , Self :: GIMBAL_DEVICE_ATTITUDE_STATUS (..) => GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: NAME , Self :: HOME_POSITION (..) => HOME_POSITION_DATA :: NAME , Self :: OPEN_DRONE_ID_SYSTEM (..) => OPEN_DRONE_ID_SYSTEM_DATA :: NAME , Self :: GPS_RAW_INT (..) => GPS_RAW_INT_DATA :: NAME , Self :: PING (..) => PING_DATA :: NAME , Self :: HIL_CONTROLS (..) => HIL_CONTROLS_DATA :: NAME , Self :: HIL_RC_INPUTS_RAW (..) => HIL_RC_INPUTS_RAW_DATA :: NAME , Self :: STATUSTEXT (..) => STATUSTEXT_DATA :: NAME , Self :: PARAM_VALUE (..) => PARAM_VALUE_DATA :: NAME , Self :: SET_POSITION_TARGET_LOCAL_NED (..) => SET_POSITION_TARGET_LOCAL_NED_DATA :: NAME , Self :: MISSION_REQUEST (..) => MISSION_REQUEST_DATA :: NAME , Self :: TIME_ESTIMATE_TO_TARGET (..) => TIME_ESTIMATE_TO_TARGET_DATA :: NAME , Self :: RAW_IMU (..) => RAW_IMU_DATA :: NAME , Self :: DATA_TRANSMISSION_HANDSHAKE (..) => DATA_TRANSMISSION_HANDSHAKE_DATA :: NAME , Self :: OPEN_DRONE_ID_OPERATOR_ID (..) => OPEN_DRONE_ID_OPERATOR_ID_DATA :: NAME , Self :: MISSION_WRITE_PARTIAL_LIST (..) => MISSION_WRITE_PARTIAL_LIST_DATA :: NAME , Self :: V2_EXTENSION (..) => V2_EXTENSION_DATA :: NAME , Self :: CAMERA_FOV_STATUS (..) => CAMERA_FOV_STATUS_DATA :: NAME , Self :: MAG_CAL_REPORT (..) => MAG_CAL_REPORT_DATA :: NAME , Self :: SCALED_PRESSURE (..) => SCALED_PRESSURE_DATA :: NAME , Self :: LOGGING_DATA (..) => LOGGING_DATA_DATA :: NAME , Self :: ESC_INFO (..) => ESC_INFO_DATA :: NAME , Self :: CELLULAR_STATUS (..) => CELLULAR_STATUS_DATA :: NAME , Self :: RC_CHANNELS_SCALED (..) => RC_CHANNELS_SCALED_DATA :: NAME , Self :: MANUAL_CONTROL (..) => MANUAL_CONTROL_DATA :: NAME , Self :: DATA_STREAM (..) => DATA_STREAM_DATA :: NAME , Self :: SET_HOME_POSITION (..) => SET_HOME_POSITION_DATA :: NAME , Self :: GIMBAL_DEVICE_SET_ATTITUDE (..) => GIMBAL_DEVICE_SET_ATTITUDE_DATA :: NAME , Self :: TUNNEL (..) => TUNNEL_DATA :: NAME , Self :: COMPONENT_INFORMATION (..) => COMPONENT_INFORMATION_DATA :: NAME , Self :: SET_ACTUATOR_CONTROL_TARGET (..) => SET_ACTUATOR_CONTROL_TARGET_DATA :: NAME , Self :: HIL_ACTUATOR_CONTROLS (..) => HIL_ACTUATOR_CONTROLS_DATA :: NAME , Self :: RESOURCE_REQUEST (..) => RESOURCE_REQUEST_DATA :: NAME , Self :: PARAM_SET (..) => PARAM_SET_DATA :: NAME , Self :: CELLULAR_CONFIG (..) => CELLULAR_CONFIG_DATA :: NAME , Self :: ALTITUDE (..) => ALTITUDE_DATA :: NAME , Self :: LOG_ENTRY (..) => LOG_ENTRY_DATA :: NAME , Self :: SMART_BATTERY_INFO (..) => SMART_BATTERY_INFO_DATA :: NAME , Self :: UTM_GLOBAL_POSITION (..) => UTM_GLOBAL_POSITION_DATA :: NAME , Self :: PLAY_TUNE_V2 (..) => PLAY_TUNE_V2_DATA :: NAME , Self :: HIL_OPTICAL_FLOW (..) => HIL_OPTICAL_FLOW_DATA :: NAME , Self :: REQUEST_DATA_STREAM (..) => REQUEST_DATA_STREAM_DATA :: NAME , } } fn message_id (& self) -> u32 { match self { Self :: LOCAL_POSITION_NED (..) => LOCAL_POSITION_NED_DATA :: ID , Self :: FOLLOW_TARGET (..) => FOLLOW_TARGET_DATA :: ID , Self :: OPTICAL_FLOW (..) => OPTICAL_FLOW_DATA :: ID , Self :: STORAGE_INFORMATION (..) => STORAGE_INFORMATION_DATA :: ID , Self :: SAFETY_ALLOWED_AREA (..) => SAFETY_ALLOWED_AREA_DATA :: ID , Self :: MANUAL_SETPOINT (..) => MANUAL_SETPOINT_DATA :: ID , Self :: AUTOPILOT_VERSION (..) => AUTOPILOT_VERSION_DATA :: ID , Self :: RC_CHANNELS (..) => RC_CHANNELS_DATA :: ID , Self :: ESTIMATOR_STATUS (..) => ESTIMATOR_STATUS_DATA :: ID , Self :: ADSB_VEHICLE (..) => ADSB_VEHICLE_DATA :: ID , Self :: TRAJECTORY_REPRESENTATION_WAYPOINTS (..) => TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: ID , Self :: WHEEL_DISTANCE (..) => WHEEL_DISTANCE_DATA :: ID , Self :: NAMED_VALUE_FLOAT (..) => NAMED_VALUE_FLOAT_DATA :: ID , Self :: ACTUATOR_OUTPUT_STATUS (..) => ACTUATOR_OUTPUT_STATUS_DATA :: ID , Self :: OPEN_DRONE_ID_BASIC_ID (..) => OPEN_DRONE_ID_BASIC_ID_DATA :: ID , Self :: PARAM_EXT_REQUEST_READ (..) => PARAM_EXT_REQUEST_READ_DATA :: ID , Self :: OPEN_DRONE_ID_SELF_ID (..) => OPEN_DRONE_ID_SELF_ID_DATA :: ID , Self :: DISTANCE_SENSOR (..) => DISTANCE_SENSOR_DATA :: ID , Self :: PARAM_EXT_SET (..) => PARAM_EXT_SET_DATA :: ID , Self :: OPEN_DRONE_ID_AUTHENTICATION (..) => OPEN_DRONE_ID_AUTHENTICATION_DATA :: ID , Self :: MISSION_CURRENT (..) => MISSION_CURRENT_DATA :: ID , Self :: ATTITUDE_TARGET (..) => ATTITUDE_TARGET_DATA :: ID , Self :: GPS2_RAW (..) => GPS2_RAW_DATA :: ID , Self :: FLIGHT_INFORMATION (..) => FLIGHT_INFORMATION_DATA :: ID , Self :: MISSION_COUNT (..) => MISSION_COUNT_DATA :: ID , Self :: SAFETY_SET_ALLOWED_AREA (..) => SAFETY_SET_ALLOWED_AREA_DATA :: ID , Self :: CAMERA_TRACKING_IMAGE_STATUS (..) => CAMERA_TRACKING_IMAGE_STATUS_DATA :: ID , Self :: GIMBAL_MANAGER_SET_PITCHYAW (..) => GIMBAL_MANAGER_SET_PITCHYAW_DATA :: ID , Self :: ATTITUDE (..) => ATTITUDE_DATA :: ID , Self :: MISSION_REQUEST_PARTIAL_LIST (..) => MISSION_REQUEST_PARTIAL_LIST_DATA :: ID , Self :: POSITION_TARGET_LOCAL_NED (..) => POSITION_TARGET_LOCAL_NED_DATA :: ID , Self :: GPS_STATUS (..) => GPS_STATUS_DATA :: ID , Self :: SET_ATTITUDE_TARGET (..) => SET_ATTITUDE_TARGET_DATA :: ID , Self :: HIL_GPS (..) => HIL_GPS_DATA :: ID , Self :: LOG_ERASE (..) => LOG_ERASE_DATA :: ID , Self :: VISION_SPEED_ESTIMATE (..) => VISION_SPEED_ESTIMATE_DATA :: ID , Self :: HIL_STATE_QUATERNION (..) => HIL_STATE_QUATERNION_DATA :: ID , Self :: NAV_CONTROLLER_OUTPUT (..) => NAV_CONTROLLER_OUTPUT_DATA :: ID , Self :: RC_CHANNELS_OVERRIDE (..) => RC_CHANNELS_OVERRIDE_DATA :: ID , Self :: FILE_TRANSFER_PROTOCOL (..) => FILE_TRANSFER_PROTOCOL_DATA :: ID , Self :: EFI_STATUS (..) => EFI_STATUS_DATA :: ID , Self :: CAMERA_IMAGE_CAPTURED (..) => CAMERA_IMAGE_CAPTURED_DATA :: ID , Self :: ENCAPSULATED_DATA (..) => ENCAPSULATED_DATA_DATA :: ID , Self :: COMMAND_LONG (..) => COMMAND_LONG_DATA :: ID , Self :: MESSAGE_INTERVAL (..) => MESSAGE_INTERVAL_DATA :: ID , Self :: LOGGING_DATA_ACKED (..) => LOGGING_DATA_ACKED_DATA :: ID , Self :: VIDEO_STREAM_STATUS (..) => VIDEO_STREAM_STATUS_DATA :: ID , Self :: GIMBAL_MANAGER_INFORMATION (..) => GIMBAL_MANAGER_INFORMATION_DATA :: ID , Self :: WIFI_CONFIG_AP (..) => WIFI_CONFIG_AP_DATA :: ID , Self :: AUTOPILOT_STATE_FOR_GIMBAL_DEVICE (..) => AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: ID , Self :: SET_MODE (..) => SET_MODE_DATA :: ID , Self :: MISSION_ITEM (..) => MISSION_ITEM_DATA :: ID , Self :: PROTOCOL_VERSION (..) => PROTOCOL_VERSION_DATA :: ID , Self :: MISSION_ITEM_REACHED (..) => MISSION_ITEM_REACHED_DATA :: ID , Self :: MISSION_ACK (..) => MISSION_ACK_DATA :: ID , Self :: SET_GPS_GLOBAL_ORIGIN (..) => SET_GPS_GLOBAL_ORIGIN_DATA :: ID , Self :: GPS_GLOBAL_ORIGIN (..) => GPS_GLOBAL_ORIGIN_DATA :: ID , Self :: MISSION_REQUEST_LIST (..) => MISSION_REQUEST_LIST_DATA :: ID , Self :: HIL_SENSOR (..) => HIL_SENSOR_DATA :: ID , Self :: ATTITUDE_QUATERNION_COV (..) => ATTITUDE_QUATERNION_COV_DATA :: ID , Self :: SET_POSITION_TARGET_GLOBAL_INT (..) => SET_POSITION_TARGET_GLOBAL_INT_DATA :: ID , Self :: TERRAIN_REQUEST (..) => TERRAIN_REQUEST_DATA :: ID , Self :: TERRAIN_DATA (..) => TERRAIN_DATA_DATA :: ID , Self :: ATT_POS_MOCAP (..) => ATT_POS_MOCAP_DATA :: ID , Self :: CONTROL_SYSTEM_STATE (..) => CONTROL_SYSTEM_STATE_DATA :: ID , Self :: SCALED_IMU3 (..) => SCALED_IMU3_DATA :: ID , Self :: WIND_COV (..) => WIND_COV_DATA :: ID , Self :: CAMERA_INFORMATION (..) => CAMERA_INFORMATION_DATA :: ID , Self :: GIMBAL_MANAGER_SET_MANUAL_CONTROL (..) => GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: ID , Self :: OBSTACLE_DISTANCE (..) => OBSTACLE_DISTANCE_DATA :: ID , Self :: SERIAL_CONTROL (..) => SERIAL_CONTROL_DATA :: ID , Self :: ACTUATOR_CONTROL_TARGET (..) => ACTUATOR_CONTROL_TARGET_DATA :: ID , Self :: GLOBAL_POSITION_INT (..) => GLOBAL_POSITION_INT_DATA :: ID , Self :: GPS_INPUT (..) => GPS_INPUT_DATA :: ID , Self :: VIBRATION (..) => VIBRATION_DATA :: ID , Self :: PARAM_REQUEST_LIST (..) => PARAM_REQUEST_LIST_DATA :: ID , Self :: EXTENDED_SYS_STATE (..) => EXTENDED_SYS_STATE_DATA :: ID , Self :: PLAY_TUNE (..) => PLAY_TUNE_DATA :: ID , Self :: VFR_HUD (..) => VFR_HUD_DATA :: ID , Self :: LOG_REQUEST_END (..) => LOG_REQUEST_END_DATA :: ID , Self :: HIGHRES_IMU (..) => HIGHRES_IMU_DATA :: ID , Self :: GLOBAL_POSITION_INT_COV (..) => GLOBAL_POSITION_INT_COV_DATA :: ID , Self :: AIS_VESSEL (..) => AIS_VESSEL_DATA :: ID , Self :: GPS_RTCM_DATA (..) => GPS_RTCM_DATA_DATA :: ID , Self :: COMMAND_ACK (..) => COMMAND_ACK_DATA :: ID , Self :: CHANGE_OPERATOR_CONTROL_ACK (..) => CHANGE_OPERATOR_CONTROL_ACK_DATA :: ID , Self :: SCALED_IMU2 (..) => SCALED_IMU2_DATA :: ID , Self :: GIMBAL_MANAGER_STATUS (..) => GIMBAL_MANAGER_STATUS_DATA :: ID , Self :: PARAM_EXT_REQUEST_LIST (..) => PARAM_EXT_REQUEST_LIST_DATA :: ID , Self :: ODOMETRY (..) => ODOMETRY_DATA :: ID , Self :: DEBUG_VECT (..) => DEBUG_VECT_DATA :: ID , Self :: DEBUG (..) => DEBUG_DATA :: ID , Self :: TRAJECTORY_REPRESENTATION_BEZIER (..) => TRAJECTORY_REPRESENTATION_BEZIER_DATA :: ID , Self :: REQUEST_EVENT (..) => REQUEST_EVENT_DATA :: ID , Self :: CAN_FILTER_MODIFY (..) => CAN_FILTER_MODIFY_DATA :: ID , Self :: HYGROMETER_SENSOR (..) => HYGROMETER_SENSOR_DATA :: ID , Self :: NAMED_VALUE_INT (..) => NAMED_VALUE_INT_DATA :: ID , Self :: OPEN_DRONE_ID_MESSAGE_PACK (..) => OPEN_DRONE_ID_MESSAGE_PACK_DATA :: ID , Self :: CAMERA_TRIGGER (..) => CAMERA_TRIGGER_DATA :: ID , Self :: LOG_DATA (..) => LOG_DATA_DATA :: ID , Self :: SCALED_PRESSURE3 (..) => SCALED_PRESSURE3_DATA :: ID , Self :: OPEN_DRONE_ID_ARM_STATUS (..) => OPEN_DRONE_ID_ARM_STATUS_DATA :: ID , Self :: ATTITUDE_QUATERNION (..) => ATTITUDE_QUATERNION_DATA :: ID , Self :: CHANGE_OPERATOR_CONTROL (..) => CHANGE_OPERATOR_CONTROL_DATA :: ID , Self :: SETUP_SIGNING (..) => SETUP_SIGNING_DATA :: ID , Self :: GIMBAL_DEVICE_INFORMATION (..) => GIMBAL_DEVICE_INFORMATION_DATA :: ID , Self :: WINCH_STATUS (..) => WINCH_STATUS_DATA :: ID , Self :: SIM_STATE (..) => SIM_STATE_DATA :: ID , Self :: GPS_RTK (..) => GPS_RTK_DATA :: ID , Self :: GPS2_RTK (..) => GPS2_RTK_DATA :: ID , Self :: HIGH_LATENCY (..) => HIGH_LATENCY_DATA :: ID , Self :: TERRAIN_REPORT (..) => TERRAIN_REPORT_DATA :: ID , Self :: HIL_STATE (..) => HIL_STATE_DATA :: ID , Self :: MEMORY_VECT (..) => MEMORY_VECT_DATA :: ID , Self :: MOUNT_ORIENTATION (..) => MOUNT_ORIENTATION_DATA :: ID , Self :: CAMERA_TRACKING_GEO_STATUS (..) => CAMERA_TRACKING_GEO_STATUS_DATA :: ID , Self :: LOGGING_ACK (..) => LOGGING_ACK_DATA :: ID , Self :: UAVCAN_NODE_STATUS (..) => UAVCAN_NODE_STATUS_DATA :: ID , Self :: SCALED_PRESSURE2 (..) => SCALED_PRESSURE2_DATA :: ID , Self :: VIDEO_STREAM_INFORMATION (..) => VIDEO_STREAM_INFORMATION_DATA :: ID , Self :: BATTERY_STATUS (..) => BATTERY_STATUS_DATA :: ID , Self :: SCALED_IMU (..) => SCALED_IMU_DATA :: ID , Self :: LOCAL_POSITION_NED_COV (..) => LOCAL_POSITION_NED_COV_DATA :: ID , Self :: GENERATOR_STATUS (..) => GENERATOR_STATUS_DATA :: ID , Self :: CAN_FRAME (..) => CAN_FRAME_DATA :: ID , Self :: TERRAIN_CHECK (..) => TERRAIN_CHECK_DATA :: ID , Self :: CAMERA_CAPTURE_STATUS (..) => CAMERA_CAPTURE_STATUS_DATA :: ID , Self :: UAVCAN_NODE_INFO (..) => UAVCAN_NODE_INFO_DATA :: ID , Self :: RAW_PRESSURE (..) => RAW_PRESSURE_DATA :: ID , Self :: POSITION_TARGET_GLOBAL_INT (..) => POSITION_TARGET_GLOBAL_INT_DATA :: ID , Self :: HEARTBEAT (..) => HEARTBEAT_DATA :: ID , Self :: RADIO_STATUS (..) => RADIO_STATUS_DATA :: ID , Self :: PARAM_EXT_VALUE (..) => PARAM_EXT_VALUE_DATA :: ID , Self :: RC_CHANNELS_RAW (..) => RC_CHANNELS_RAW_DATA :: ID , Self :: ISBD_LINK_STATUS (..) => ISBD_LINK_STATUS_DATA :: ID , Self :: OPTICAL_FLOW_RAD (..) => OPTICAL_FLOW_RAD_DATA :: ID , Self :: PARAM_MAP_RC (..) => PARAM_MAP_RC_DATA :: ID , Self :: PARAM_REQUEST_READ (..) => PARAM_REQUEST_READ_DATA :: ID , Self :: RESPONSE_EVENT_ERROR (..) => RESPONSE_EVENT_ERROR_DATA :: ID , Self :: LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET (..) => LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: ID , Self :: GLOBAL_VISION_POSITION_ESTIMATE (..) => GLOBAL_VISION_POSITION_ESTIMATE_DATA :: ID , Self :: FENCE_STATUS (..) => FENCE_STATUS_DATA :: ID , Self :: ONBOARD_COMPUTER_STATUS (..) => ONBOARD_COMPUTER_STATUS_DATA :: ID , Self :: CURRENT_EVENT_SEQUENCE (..) => CURRENT_EVENT_SEQUENCE_DATA :: ID , Self :: MISSION_REQUEST_INT (..) => MISSION_REQUEST_INT_DATA :: ID , Self :: MISSION_ITEM_INT (..) => MISSION_ITEM_INT_DATA :: ID , Self :: VISION_POSITION_ESTIMATE (..) => VISION_POSITION_ESTIMATE_DATA :: ID , Self :: PARAM_EXT_ACK (..) => PARAM_EXT_ACK_DATA :: ID , Self :: SYSTEM_TIME (..) => SYSTEM_TIME_DATA :: ID , Self :: LINK_NODE_STATUS (..) => LINK_NODE_STATUS_DATA :: ID , Self :: COMMAND_CANCEL (..) => COMMAND_CANCEL_DATA :: ID , Self :: VICON_POSITION_ESTIMATE (..) => VICON_POSITION_ESTIMATE_DATA :: ID , Self :: SERVO_OUTPUT_RAW (..) => SERVO_OUTPUT_RAW_DATA :: ID , Self :: TIMESYNC (..) => TIMESYNC_DATA :: ID , Self :: POWER_STATUS (..) => POWER_STATUS_DATA :: ID , Self :: OPEN_DRONE_ID_SYSTEM_UPDATE (..) => OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: ID , Self :: RAW_RPM (..) => RAW_RPM_DATA :: ID , Self :: OPEN_DRONE_ID_LOCATION (..) => OPEN_DRONE_ID_LOCATION_DATA :: ID , Self :: LANDING_TARGET (..) => LANDING_TARGET_DATA :: ID , Self :: GIMBAL_MANAGER_SET_ATTITUDE (..) => GIMBAL_MANAGER_SET_ATTITUDE_DATA :: ID , Self :: ESC_STATUS (..) => ESC_STATUS_DATA :: ID , Self :: ORBIT_EXECUTION_STATUS (..) => ORBIT_EXECUTION_STATUS_DATA :: ID , Self :: SYS_STATUS (..) => SYS_STATUS_DATA :: ID , Self :: LOG_REQUEST_DATA (..) => LOG_REQUEST_DATA_DATA :: ID , Self :: AUTH_KEY (..) => AUTH_KEY_DATA :: ID , Self :: LOG_REQUEST_LIST (..) => LOG_REQUEST_LIST_DATA :: ID , Self :: GPS_INJECT_DATA (..) => GPS_INJECT_DATA_DATA :: ID , Self :: MISSION_SET_CURRENT (..) => MISSION_SET_CURRENT_DATA :: ID , Self :: COMMAND_INT (..) => COMMAND_INT_DATA :: ID , Self :: HIGH_LATENCY2 (..) => HIGH_LATENCY2_DATA :: ID , Self :: BUTTON_CHANGE (..) => BUTTON_CHANGE_DATA :: ID , Self :: CAMERA_SETTINGS (..) => CAMERA_SETTINGS_DATA :: ID , Self :: DEBUG_FLOAT_ARRAY (..) => DEBUG_FLOAT_ARRAY_DATA :: ID , Self :: COMPONENT_METADATA (..) => COMPONENT_METADATA_DATA :: ID , Self :: MISSION_CLEAR_ALL (..) => MISSION_CLEAR_ALL_DATA :: ID , Self :: COLLISION (..) => COLLISION_DATA :: ID , Self :: SUPPORTED_TUNES (..) => SUPPORTED_TUNES_DATA :: ID , Self :: EVENT (..) => EVENT_DATA :: ID , Self :: CANFD_FRAME (..) => CANFD_FRAME_DATA :: ID , Self :: GIMBAL_DEVICE_ATTITUDE_STATUS (..) => GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: ID , Self :: HOME_POSITION (..) => HOME_POSITION_DATA :: ID , Self :: OPEN_DRONE_ID_SYSTEM (..) => OPEN_DRONE_ID_SYSTEM_DATA :: ID , Self :: GPS_RAW_INT (..) => GPS_RAW_INT_DATA :: ID , Self :: PING (..) => PING_DATA :: ID , Self :: HIL_CONTROLS (..) => HIL_CONTROLS_DATA :: ID , Self :: HIL_RC_INPUTS_RAW (..) => HIL_RC_INPUTS_RAW_DATA :: ID , Self :: STATUSTEXT (..) => STATUSTEXT_DATA :: ID , Self :: PARAM_VALUE (..) => PARAM_VALUE_DATA :: ID , Self :: SET_POSITION_TARGET_LOCAL_NED (..) => SET_POSITION_TARGET_LOCAL_NED_DATA :: ID , Self :: MISSION_REQUEST (..) => MISSION_REQUEST_DATA :: ID , Self :: TIME_ESTIMATE_TO_TARGET (..) => TIME_ESTIMATE_TO_TARGET_DATA :: ID , Self :: RAW_IMU (..) => RAW_IMU_DATA :: ID , Self :: DATA_TRANSMISSION_HANDSHAKE (..) => DATA_TRANSMISSION_HANDSHAKE_DATA :: ID , Self :: OPEN_DRONE_ID_OPERATOR_ID (..) => OPEN_DRONE_ID_OPERATOR_ID_DATA :: ID , Self :: MISSION_WRITE_PARTIAL_LIST (..) => MISSION_WRITE_PARTIAL_LIST_DATA :: ID , Self :: V2_EXTENSION (..) => V2_EXTENSION_DATA :: ID , Self :: CAMERA_FOV_STATUS (..) => CAMERA_FOV_STATUS_DATA :: ID , Self :: MAG_CAL_REPORT (..) => MAG_CAL_REPORT_DATA :: ID , Self :: SCALED_PRESSURE (..) => SCALED_PRESSURE_DATA :: ID , Self :: LOGGING_DATA (..) => LOGGING_DATA_DATA :: ID , Self :: ESC_INFO (..) => ESC_INFO_DATA :: ID , Self :: CELLULAR_STATUS (..) => CELLULAR_STATUS_DATA :: ID , Self :: RC_CHANNELS_SCALED (..) => RC_CHANNELS_SCALED_DATA :: ID , Self :: MANUAL_CONTROL (..) => MANUAL_CONTROL_DATA :: ID , Self :: DATA_STREAM (..) => DATA_STREAM_DATA :: ID , Self :: SET_HOME_POSITION (..) => SET_HOME_POSITION_DATA :: ID , Self :: GIMBAL_DEVICE_SET_ATTITUDE (..) => GIMBAL_DEVICE_SET_ATTITUDE_DATA :: ID , Self :: TUNNEL (..) => TUNNEL_DATA :: ID , Self :: COMPONENT_INFORMATION (..) => COMPONENT_INFORMATION_DATA :: ID , Self :: SET_ACTUATOR_CONTROL_TARGET (..) => SET_ACTUATOR_CONTROL_TARGET_DATA :: ID , Self :: HIL_ACTUATOR_CONTROLS (..) => HIL_ACTUATOR_CONTROLS_DATA :: ID , Self :: RESOURCE_REQUEST (..) => RESOURCE_REQUEST_DATA :: ID , Self :: PARAM_SET (..) => PARAM_SET_DATA :: ID , Self :: CELLULAR_CONFIG (..) => CELLULAR_CONFIG_DATA :: ID , Self :: ALTITUDE (..) => ALTITUDE_DATA :: ID , Self :: LOG_ENTRY (..) => LOG_ENTRY_DATA :: ID , Self :: SMART_BATTERY_INFO (..) => SMART_BATTERY_INFO_DATA :: ID , Self :: UTM_GLOBAL_POSITION (..) => UTM_GLOBAL_POSITION_DATA :: ID , Self :: PLAY_TUNE_V2 (..) => PLAY_TUNE_V2_DATA :: ID , Self :: HIL_OPTICAL_FLOW (..) => HIL_OPTICAL_FLOW_DATA :: ID , Self :: REQUEST_DATA_STREAM (..) => REQUEST_DATA_STREAM_DATA :: ID , } } fn message_id_from_name (name : & str) -> Result < u32 , & 'static str > { match name { LOCAL_POSITION_NED_DATA :: NAME => Ok (LOCAL_POSITION_NED_DATA :: ID) , FOLLOW_TARGET_DATA :: NAME => Ok (FOLLOW_TARGET_DATA :: ID) , OPTICAL_FLOW_DATA :: NAME => Ok (OPTICAL_FLOW_DATA :: ID) , STORAGE_INFORMATION_DATA :: NAME => Ok (STORAGE_INFORMATION_DATA :: ID) , SAFETY_ALLOWED_AREA_DATA :: NAME => Ok (SAFETY_ALLOWED_AREA_DATA :: ID) , MANUAL_SETPOINT_DATA :: NAME => Ok (MANUAL_SETPOINT_DATA :: ID) , AUTOPILOT_VERSION_DATA :: NAME => Ok (AUTOPILOT_VERSION_DATA :: ID) , RC_CHANNELS_DATA :: NAME => Ok (RC_CHANNELS_DATA :: ID) , ESTIMATOR_STATUS_DATA :: NAME => Ok (ESTIMATOR_STATUS_DATA :: ID) , ADSB_VEHICLE_DATA :: NAME => Ok (ADSB_VEHICLE_DATA :: ID) , TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: NAME => Ok (TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: ID) , WHEEL_DISTANCE_DATA :: NAME => Ok (WHEEL_DISTANCE_DATA :: ID) , NAMED_VALUE_FLOAT_DATA :: NAME => Ok (NAMED_VALUE_FLOAT_DATA :: ID) , ACTUATOR_OUTPUT_STATUS_DATA :: NAME => Ok (ACTUATOR_OUTPUT_STATUS_DATA :: ID) , OPEN_DRONE_ID_BASIC_ID_DATA :: NAME => Ok (OPEN_DRONE_ID_BASIC_ID_DATA :: ID) , PARAM_EXT_REQUEST_READ_DATA :: NAME => Ok (PARAM_EXT_REQUEST_READ_DATA :: ID) , OPEN_DRONE_ID_SELF_ID_DATA :: NAME => Ok (OPEN_DRONE_ID_SELF_ID_DATA :: ID) , DISTANCE_SENSOR_DATA :: NAME => Ok (DISTANCE_SENSOR_DATA :: ID) , PARAM_EXT_SET_DATA :: NAME => Ok (PARAM_EXT_SET_DATA :: ID) , OPEN_DRONE_ID_AUTHENTICATION_DATA :: NAME => Ok (OPEN_DRONE_ID_AUTHENTICATION_DATA :: ID) , MISSION_CURRENT_DATA :: NAME => Ok (MISSION_CURRENT_DATA :: ID) , ATTITUDE_TARGET_DATA :: NAME => Ok (ATTITUDE_TARGET_DATA :: ID) , GPS2_RAW_DATA :: NAME => Ok (GPS2_RAW_DATA :: ID) , FLIGHT_INFORMATION_DATA :: NAME => Ok (FLIGHT_INFORMATION_DATA :: ID) , MISSION_COUNT_DATA :: NAME => Ok (MISSION_COUNT_DATA :: ID) , SAFETY_SET_ALLOWED_AREA_DATA :: NAME => Ok (SAFETY_SET_ALLOWED_AREA_DATA :: ID) , CAMERA_TRACKING_IMAGE_STATUS_DATA :: NAME => Ok (CAMERA_TRACKING_IMAGE_STATUS_DATA :: ID) , GIMBAL_MANAGER_SET_PITCHYAW_DATA :: NAME => Ok (GIMBAL_MANAGER_SET_PITCHYAW_DATA :: ID) , ATTITUDE_DATA :: NAME => Ok (ATTITUDE_DATA :: ID) , MISSION_REQUEST_PARTIAL_LIST_DATA :: NAME => Ok (MISSION_REQUEST_PARTIAL_LIST_DATA :: ID) , POSITION_TARGET_LOCAL_NED_DATA :: NAME => Ok (POSITION_TARGET_LOCAL_NED_DATA :: ID) , GPS_STATUS_DATA :: NAME => Ok (GPS_STATUS_DATA :: ID) , SET_ATTITUDE_TARGET_DATA :: NAME => Ok (SET_ATTITUDE_TARGET_DATA :: ID) , HIL_GPS_DATA :: NAME => Ok (HIL_GPS_DATA :: ID) , LOG_ERASE_DATA :: NAME => Ok (LOG_ERASE_DATA :: ID) , VISION_SPEED_ESTIMATE_DATA :: NAME => Ok (VISION_SPEED_ESTIMATE_DATA :: ID) , HIL_STATE_QUATERNION_DATA :: NAME => Ok (HIL_STATE_QUATERNION_DATA :: ID) , NAV_CONTROLLER_OUTPUT_DATA :: NAME => Ok (NAV_CONTROLLER_OUTPUT_DATA :: ID) , RC_CHANNELS_OVERRIDE_DATA :: NAME => Ok (RC_CHANNELS_OVERRIDE_DATA :: ID) , FILE_TRANSFER_PROTOCOL_DATA :: NAME => Ok (FILE_TRANSFER_PROTOCOL_DATA :: ID) , EFI_STATUS_DATA :: NAME => Ok (EFI_STATUS_DATA :: ID) , CAMERA_IMAGE_CAPTURED_DATA :: NAME => Ok (CAMERA_IMAGE_CAPTURED_DATA :: ID) , ENCAPSULATED_DATA_DATA :: NAME => Ok (ENCAPSULATED_DATA_DATA :: ID) , COMMAND_LONG_DATA :: NAME => Ok (COMMAND_LONG_DATA :: ID) , MESSAGE_INTERVAL_DATA :: NAME => Ok (MESSAGE_INTERVAL_DATA :: ID) , LOGGING_DATA_ACKED_DATA :: NAME => Ok (LOGGING_DATA_ACKED_DATA :: ID) , VIDEO_STREAM_STATUS_DATA :: NAME => Ok (VIDEO_STREAM_STATUS_DATA :: ID) , GIMBAL_MANAGER_INFORMATION_DATA :: NAME => Ok (GIMBAL_MANAGER_INFORMATION_DATA :: ID) , WIFI_CONFIG_AP_DATA :: NAME => Ok (WIFI_CONFIG_AP_DATA :: ID) , AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: NAME => Ok (AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: ID) , SET_MODE_DATA :: NAME => Ok (SET_MODE_DATA :: ID) , MISSION_ITEM_DATA :: NAME => Ok (MISSION_ITEM_DATA :: ID) , PROTOCOL_VERSION_DATA :: NAME => Ok (PROTOCOL_VERSION_DATA :: ID) , MISSION_ITEM_REACHED_DATA :: NAME => Ok (MISSION_ITEM_REACHED_DATA :: ID) , MISSION_ACK_DATA :: NAME => Ok (MISSION_ACK_DATA :: ID) , SET_GPS_GLOBAL_ORIGIN_DATA :: NAME => Ok (SET_GPS_GLOBAL_ORIGIN_DATA :: ID) , GPS_GLOBAL_ORIGIN_DATA :: NAME => Ok (GPS_GLOBAL_ORIGIN_DATA :: ID) , MISSION_REQUEST_LIST_DATA :: NAME => Ok (MISSION_REQUEST_LIST_DATA :: ID) , HIL_SENSOR_DATA :: NAME => Ok (HIL_SENSOR_DATA :: ID) , ATTITUDE_QUATERNION_COV_DATA :: NAME => Ok (ATTITUDE_QUATERNION_COV_DATA :: ID) , SET_POSITION_TARGET_GLOBAL_INT_DATA :: NAME => Ok (SET_POSITION_TARGET_GLOBAL_INT_DATA :: ID) , TERRAIN_REQUEST_DATA :: NAME => Ok (TERRAIN_REQUEST_DATA :: ID) , TERRAIN_DATA_DATA :: NAME => Ok (TERRAIN_DATA_DATA :: ID) , ATT_POS_MOCAP_DATA :: NAME => Ok (ATT_POS_MOCAP_DATA :: ID) , CONTROL_SYSTEM_STATE_DATA :: NAME => Ok (CONTROL_SYSTEM_STATE_DATA :: ID) , SCALED_IMU3_DATA :: NAME => Ok (SCALED_IMU3_DATA :: ID) , WIND_COV_DATA :: NAME => Ok (WIND_COV_DATA :: ID) , CAMERA_INFORMATION_DATA :: NAME => Ok (CAMERA_INFORMATION_DATA :: ID) , GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: NAME => Ok (GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: ID) , OBSTACLE_DISTANCE_DATA :: NAME => Ok (OBSTACLE_DISTANCE_DATA :: ID) , SERIAL_CONTROL_DATA :: NAME => Ok (SERIAL_CONTROL_DATA :: ID) , ACTUATOR_CONTROL_TARGET_DATA :: NAME => Ok (ACTUATOR_CONTROL_TARGET_DATA :: ID) , GLOBAL_POSITION_INT_DATA :: NAME => Ok (GLOBAL_POSITION_INT_DATA :: ID) , GPS_INPUT_DATA :: NAME => Ok (GPS_INPUT_DATA :: ID) , VIBRATION_DATA :: NAME => Ok (VIBRATION_DATA :: ID) , PARAM_REQUEST_LIST_DATA :: NAME => Ok (PARAM_REQUEST_LIST_DATA :: ID) , EXTENDED_SYS_STATE_DATA :: NAME => Ok (EXTENDED_SYS_STATE_DATA :: ID) , PLAY_TUNE_DATA :: NAME => Ok (PLAY_TUNE_DATA :: ID) , VFR_HUD_DATA :: NAME => Ok (VFR_HUD_DATA :: ID) , LOG_REQUEST_END_DATA :: NAME => Ok (LOG_REQUEST_END_DATA :: ID) , HIGHRES_IMU_DATA :: NAME => Ok (HIGHRES_IMU_DATA :: ID) , GLOBAL_POSITION_INT_COV_DATA :: NAME => Ok (GLOBAL_POSITION_INT_COV_DATA :: ID) , AIS_VESSEL_DATA :: NAME => Ok (AIS_VESSEL_DATA :: ID) , GPS_RTCM_DATA_DATA :: NAME => Ok (GPS_RTCM_DATA_DATA :: ID) , COMMAND_ACK_DATA :: NAME => Ok (COMMAND_ACK_DATA :: ID) , CHANGE_OPERATOR_CONTROL_ACK_DATA :: NAME => Ok (CHANGE_OPERATOR_CONTROL_ACK_DATA :: ID) , SCALED_IMU2_DATA :: NAME => Ok (SCALED_IMU2_DATA :: ID) , GIMBAL_MANAGER_STATUS_DATA :: NAME => Ok (GIMBAL_MANAGER_STATUS_DATA :: ID) , PARAM_EXT_REQUEST_LIST_DATA :: NAME => Ok (PARAM_EXT_REQUEST_LIST_DATA :: ID) , ODOMETRY_DATA :: NAME => Ok (ODOMETRY_DATA :: ID) , DEBUG_VECT_DATA :: NAME => Ok (DEBUG_VECT_DATA :: ID) , DEBUG_DATA :: NAME => Ok (DEBUG_DATA :: ID) , TRAJECTORY_REPRESENTATION_BEZIER_DATA :: NAME => Ok (TRAJECTORY_REPRESENTATION_BEZIER_DATA :: ID) , REQUEST_EVENT_DATA :: NAME => Ok (REQUEST_EVENT_DATA :: ID) , CAN_FILTER_MODIFY_DATA :: NAME => Ok (CAN_FILTER_MODIFY_DATA :: ID) , HYGROMETER_SENSOR_DATA :: NAME => Ok (HYGROMETER_SENSOR_DATA :: ID) , NAMED_VALUE_INT_DATA :: NAME => Ok (NAMED_VALUE_INT_DATA :: ID) , OPEN_DRONE_ID_MESSAGE_PACK_DATA :: NAME => Ok (OPEN_DRONE_ID_MESSAGE_PACK_DATA :: ID) , CAMERA_TRIGGER_DATA :: NAME => Ok (CAMERA_TRIGGER_DATA :: ID) , LOG_DATA_DATA :: NAME => Ok (LOG_DATA_DATA :: ID) , SCALED_PRESSURE3_DATA :: NAME => Ok (SCALED_PRESSURE3_DATA :: ID) , OPEN_DRONE_ID_ARM_STATUS_DATA :: NAME => Ok (OPEN_DRONE_ID_ARM_STATUS_DATA :: ID) , ATTITUDE_QUATERNION_DATA :: NAME => Ok (ATTITUDE_QUATERNION_DATA :: ID) , CHANGE_OPERATOR_CONTROL_DATA :: NAME => Ok (CHANGE_OPERATOR_CONTROL_DATA :: ID) , SETUP_SIGNING_DATA :: NAME => Ok (SETUP_SIGNING_DATA :: ID) , GIMBAL_DEVICE_INFORMATION_DATA :: NAME => Ok (GIMBAL_DEVICE_INFORMATION_DATA :: ID) , WINCH_STATUS_DATA :: NAME => Ok (WINCH_STATUS_DATA :: ID) , SIM_STATE_DATA :: NAME => Ok (SIM_STATE_DATA :: ID) , GPS_RTK_DATA :: NAME => Ok (GPS_RTK_DATA :: ID) , GPS2_RTK_DATA :: NAME => Ok (GPS2_RTK_DATA :: ID) , HIGH_LATENCY_DATA :: NAME => Ok (HIGH_LATENCY_DATA :: ID) , TERRAIN_REPORT_DATA :: NAME => Ok (TERRAIN_REPORT_DATA :: ID) , HIL_STATE_DATA :: NAME => Ok (HIL_STATE_DATA :: ID) , MEMORY_VECT_DATA :: NAME => Ok (MEMORY_VECT_DATA :: ID) , MOUNT_ORIENTATION_DATA :: NAME => Ok (MOUNT_ORIENTATION_DATA :: ID) , CAMERA_TRACKING_GEO_STATUS_DATA :: NAME => Ok (CAMERA_TRACKING_GEO_STATUS_DATA :: ID) , LOGGING_ACK_DATA :: NAME => Ok (LOGGING_ACK_DATA :: ID) , UAVCAN_NODE_STATUS_DATA :: NAME => Ok (UAVCAN_NODE_STATUS_DATA :: ID) , SCALED_PRESSURE2_DATA :: NAME => Ok (SCALED_PRESSURE2_DATA :: ID) , VIDEO_STREAM_INFORMATION_DATA :: NAME => Ok (VIDEO_STREAM_INFORMATION_DATA :: ID) , BATTERY_STATUS_DATA :: NAME => Ok (BATTERY_STATUS_DATA :: ID) , SCALED_IMU_DATA :: NAME => Ok (SCALED_IMU_DATA :: ID) , LOCAL_POSITION_NED_COV_DATA :: NAME => Ok (LOCAL_POSITION_NED_COV_DATA :: ID) , GENERATOR_STATUS_DATA :: NAME => Ok (GENERATOR_STATUS_DATA :: ID) , CAN_FRAME_DATA :: NAME => Ok (CAN_FRAME_DATA :: ID) , TERRAIN_CHECK_DATA :: NAME => Ok (TERRAIN_CHECK_DATA :: ID) , CAMERA_CAPTURE_STATUS_DATA :: NAME => Ok (CAMERA_CAPTURE_STATUS_DATA :: ID) , UAVCAN_NODE_INFO_DATA :: NAME => Ok (UAVCAN_NODE_INFO_DATA :: ID) , RAW_PRESSURE_DATA :: NAME => Ok (RAW_PRESSURE_DATA :: ID) , POSITION_TARGET_GLOBAL_INT_DATA :: NAME => Ok (POSITION_TARGET_GLOBAL_INT_DATA :: ID) , HEARTBEAT_DATA :: NAME => Ok (HEARTBEAT_DATA :: ID) , RADIO_STATUS_DATA :: NAME => Ok (RADIO_STATUS_DATA :: ID) , PARAM_EXT_VALUE_DATA :: NAME => Ok (PARAM_EXT_VALUE_DATA :: ID) , RC_CHANNELS_RAW_DATA :: NAME => Ok (RC_CHANNELS_RAW_DATA :: ID) , ISBD_LINK_STATUS_DATA :: NAME => Ok (ISBD_LINK_STATUS_DATA :: ID) , OPTICAL_FLOW_RAD_DATA :: NAME => Ok (OPTICAL_FLOW_RAD_DATA :: ID) , PARAM_MAP_RC_DATA :: NAME => Ok (PARAM_MAP_RC_DATA :: ID) , PARAM_REQUEST_READ_DATA :: NAME => Ok (PARAM_REQUEST_READ_DATA :: ID) , RESPONSE_EVENT_ERROR_DATA :: NAME => Ok (RESPONSE_EVENT_ERROR_DATA :: ID) , LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: NAME => Ok (LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: ID) , GLOBAL_VISION_POSITION_ESTIMATE_DATA :: NAME => Ok (GLOBAL_VISION_POSITION_ESTIMATE_DATA :: ID) , FENCE_STATUS_DATA :: NAME => Ok (FENCE_STATUS_DATA :: ID) , ONBOARD_COMPUTER_STATUS_DATA :: NAME => Ok (ONBOARD_COMPUTER_STATUS_DATA :: ID) , CURRENT_EVENT_SEQUENCE_DATA :: NAME => Ok (CURRENT_EVENT_SEQUENCE_DATA :: ID) , MISSION_REQUEST_INT_DATA :: NAME => Ok (MISSION_REQUEST_INT_DATA :: ID) , MISSION_ITEM_INT_DATA :: NAME => Ok (MISSION_ITEM_INT_DATA :: ID) , VISION_POSITION_ESTIMATE_DATA :: NAME => Ok (VISION_POSITION_ESTIMATE_DATA :: ID) , PARAM_EXT_ACK_DATA :: NAME => Ok (PARAM_EXT_ACK_DATA :: ID) , SYSTEM_TIME_DATA :: NAME => Ok (SYSTEM_TIME_DATA :: ID) , LINK_NODE_STATUS_DATA :: NAME => Ok (LINK_NODE_STATUS_DATA :: ID) , COMMAND_CANCEL_DATA :: NAME => Ok (COMMAND_CANCEL_DATA :: ID) , VICON_POSITION_ESTIMATE_DATA :: NAME => Ok (VICON_POSITION_ESTIMATE_DATA :: ID) , SERVO_OUTPUT_RAW_DATA :: NAME => Ok (SERVO_OUTPUT_RAW_DATA :: ID) , TIMESYNC_DATA :: NAME => Ok (TIMESYNC_DATA :: ID) , POWER_STATUS_DATA :: NAME => Ok (POWER_STATUS_DATA :: ID) , OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: NAME => Ok (OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: ID) , RAW_RPM_DATA :: NAME => Ok (RAW_RPM_DATA :: ID) , OPEN_DRONE_ID_LOCATION_DATA :: NAME => Ok (OPEN_DRONE_ID_LOCATION_DATA :: ID) , LANDING_TARGET_DATA :: NAME => Ok (LANDING_TARGET_DATA :: ID) , GIMBAL_MANAGER_SET_ATTITUDE_DATA :: NAME => Ok (GIMBAL_MANAGER_SET_ATTITUDE_DATA :: ID) , ESC_STATUS_DATA :: NAME => Ok (ESC_STATUS_DATA :: ID) , ORBIT_EXECUTION_STATUS_DATA :: NAME => Ok (ORBIT_EXECUTION_STATUS_DATA :: ID) , SYS_STATUS_DATA :: NAME => Ok (SYS_STATUS_DATA :: ID) , LOG_REQUEST_DATA_DATA :: NAME => Ok (LOG_REQUEST_DATA_DATA :: ID) , AUTH_KEY_DATA :: NAME => Ok (AUTH_KEY_DATA :: ID) , LOG_REQUEST_LIST_DATA :: NAME => Ok (LOG_REQUEST_LIST_DATA :: ID) , GPS_INJECT_DATA_DATA :: NAME => Ok (GPS_INJECT_DATA_DATA :: ID) , MISSION_SET_CURRENT_DATA :: NAME => Ok (MISSION_SET_CURRENT_DATA :: ID) , COMMAND_INT_DATA :: NAME => Ok (COMMAND_INT_DATA :: ID) , HIGH_LATENCY2_DATA :: NAME => Ok (HIGH_LATENCY2_DATA :: ID) , BUTTON_CHANGE_DATA :: NAME => Ok (BUTTON_CHANGE_DATA :: ID) , CAMERA_SETTINGS_DATA :: NAME => Ok (CAMERA_SETTINGS_DATA :: ID) , DEBUG_FLOAT_ARRAY_DATA :: NAME => Ok (DEBUG_FLOAT_ARRAY_DATA :: ID) , COMPONENT_METADATA_DATA :: NAME => Ok (COMPONENT_METADATA_DATA :: ID) , MISSION_CLEAR_ALL_DATA :: NAME => Ok (MISSION_CLEAR_ALL_DATA :: ID) , COLLISION_DATA :: NAME => Ok (COLLISION_DATA :: ID) , SUPPORTED_TUNES_DATA :: NAME => Ok (SUPPORTED_TUNES_DATA :: ID) , EVENT_DATA :: NAME => Ok (EVENT_DATA :: ID) , CANFD_FRAME_DATA :: NAME => Ok (CANFD_FRAME_DATA :: ID) , GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: NAME => Ok (GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: ID) , HOME_POSITION_DATA :: NAME => Ok (HOME_POSITION_DATA :: ID) , OPEN_DRONE_ID_SYSTEM_DATA :: NAME => Ok (OPEN_DRONE_ID_SYSTEM_DATA :: ID) , GPS_RAW_INT_DATA :: NAME => Ok (GPS_RAW_INT_DATA :: ID) , PING_DATA :: NAME => Ok (PING_DATA :: ID) , HIL_CONTROLS_DATA :: NAME => Ok (HIL_CONTROLS_DATA :: ID) , HIL_RC_INPUTS_RAW_DATA :: NAME => Ok (HIL_RC_INPUTS_RAW_DATA :: ID) , STATUSTEXT_DATA :: NAME => Ok (STATUSTEXT_DATA :: ID) , PARAM_VALUE_DATA :: NAME => Ok (PARAM_VALUE_DATA :: ID) , SET_POSITION_TARGET_LOCAL_NED_DATA :: NAME => Ok (SET_POSITION_TARGET_LOCAL_NED_DATA :: ID) , MISSION_REQUEST_DATA :: NAME => Ok (MISSION_REQUEST_DATA :: ID) , TIME_ESTIMATE_TO_TARGET_DATA :: NAME => Ok (TIME_ESTIMATE_TO_TARGET_DATA :: ID) , RAW_IMU_DATA :: NAME => Ok (RAW_IMU_DATA :: ID) , DATA_TRANSMISSION_HANDSHAKE_DATA :: NAME => Ok (DATA_TRANSMISSION_HANDSHAKE_DATA :: ID) , OPEN_DRONE_ID_OPERATOR_ID_DATA :: NAME => Ok (OPEN_DRONE_ID_OPERATOR_ID_DATA :: ID) , MISSION_WRITE_PARTIAL_LIST_DATA :: NAME => Ok (MISSION_WRITE_PARTIAL_LIST_DATA :: ID) , V2_EXTENSION_DATA :: NAME => Ok (V2_EXTENSION_DATA :: ID) , CAMERA_FOV_STATUS_DATA :: NAME => Ok (CAMERA_FOV_STATUS_DATA :: ID) , MAG_CAL_REPORT_DATA :: NAME => Ok (MAG_CAL_REPORT_DATA :: ID) , SCALED_PRESSURE_DATA :: NAME => Ok (SCALED_PRESSURE_DATA :: ID) , LOGGING_DATA_DATA :: NAME => Ok (LOGGING_DATA_DATA :: ID) , ESC_INFO_DATA :: NAME => Ok (ESC_INFO_DATA :: ID) , CELLULAR_STATUS_DATA :: NAME => Ok (CELLULAR_STATUS_DATA :: ID) , RC_CHANNELS_SCALED_DATA :: NAME => Ok (RC_CHANNELS_SCALED_DATA :: ID) , MANUAL_CONTROL_DATA :: NAME => Ok (MANUAL_CONTROL_DATA :: ID) , DATA_STREAM_DATA :: NAME => Ok (DATA_STREAM_DATA :: ID) , SET_HOME_POSITION_DATA :: NAME => Ok (SET_HOME_POSITION_DATA :: ID) , GIMBAL_DEVICE_SET_ATTITUDE_DATA :: NAME => Ok (GIMBAL_DEVICE_SET_ATTITUDE_DATA :: ID) , TUNNEL_DATA :: NAME => Ok (TUNNEL_DATA :: ID) , COMPONENT_INFORMATION_DATA :: NAME => Ok (COMPONENT_INFORMATION_DATA :: ID) , SET_ACTUATOR_CONTROL_TARGET_DATA :: NAME => Ok (SET_ACTUATOR_CONTROL_TARGET_DATA :: ID) , HIL_ACTUATOR_CONTROLS_DATA :: NAME => Ok (HIL_ACTUATOR_CONTROLS_DATA :: ID) , RESOURCE_REQUEST_DATA :: NAME => Ok (RESOURCE_REQUEST_DATA :: ID) , PARAM_SET_DATA :: NAME => Ok (PARAM_SET_DATA :: ID) , CELLULAR_CONFIG_DATA :: NAME => Ok (CELLULAR_CONFIG_DATA :: ID) , ALTITUDE_DATA :: NAME => Ok (ALTITUDE_DATA :: ID) , LOG_ENTRY_DATA :: NAME => Ok (LOG_ENTRY_DATA :: ID) , SMART_BATTERY_INFO_DATA :: NAME => Ok (SMART_BATTERY_INFO_DATA :: ID) , UTM_GLOBAL_POSITION_DATA :: NAME => Ok (UTM_GLOBAL_POSITION_DATA :: ID) , PLAY_TUNE_V2_DATA :: NAME => Ok (PLAY_TUNE_V2_DATA :: ID) , HIL_OPTICAL_FLOW_DATA :: NAME => Ok (HIL_OPTICAL_FLOW_DATA :: ID) , REQUEST_DATA_STREAM_DATA :: NAME => Ok (REQUEST_DATA_STREAM_DATA :: ID) , _ => { Err ("Invalid message name.") } } } fn default_message_from_id (id : u32) -> Result < Self , & 'static str > { match id { LOCAL_POSITION_NED_DATA :: ID => Ok (Self :: LOCAL_POSITION_NED (LOCAL_POSITION_NED_DATA :: default ())) , FOLLOW_TARGET_DATA :: ID => Ok (Self :: FOLLOW_TARGET (FOLLOW_TARGET_DATA :: default ())) , OPTICAL_FLOW_DATA :: ID => Ok (Self :: OPTICAL_FLOW (OPTICAL_FLOW_DATA :: default ())) , STORAGE_INFORMATION_DATA :: ID => Ok (Self :: STORAGE_INFORMATION (STORAGE_INFORMATION_DATA :: default ())) , SAFETY_ALLOWED_AREA_DATA :: ID => Ok (Self :: SAFETY_ALLOWED_AREA (SAFETY_ALLOWED_AREA_DATA :: default ())) , MANUAL_SETPOINT_DATA :: ID => Ok (Self :: MANUAL_SETPOINT (MANUAL_SETPOINT_DATA :: default ())) , AUTOPILOT_VERSION_DATA :: ID => Ok (Self :: AUTOPILOT_VERSION (AUTOPILOT_VERSION_DATA :: default ())) , RC_CHANNELS_DATA :: ID => Ok (Self :: RC_CHANNELS (RC_CHANNELS_DATA :: default ())) , ESTIMATOR_STATUS_DATA :: ID => Ok (Self :: ESTIMATOR_STATUS (ESTIMATOR_STATUS_DATA :: default ())) , ADSB_VEHICLE_DATA :: ID => Ok (Self :: ADSB_VEHICLE (ADSB_VEHICLE_DATA :: default ())) , TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: ID => Ok (Self :: TRAJECTORY_REPRESENTATION_WAYPOINTS (TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: default ())) , WHEEL_DISTANCE_DATA :: ID => Ok (Self :: WHEEL_DISTANCE (WHEEL_DISTANCE_DATA :: default ())) , NAMED_VALUE_FLOAT_DATA :: ID => Ok (Self :: NAMED_VALUE_FLOAT (NAMED_VALUE_FLOAT_DATA :: default ())) , ACTUATOR_OUTPUT_STATUS_DATA :: ID => Ok (Self :: ACTUATOR_OUTPUT_STATUS (ACTUATOR_OUTPUT_STATUS_DATA :: default ())) , OPEN_DRONE_ID_BASIC_ID_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_BASIC_ID (OPEN_DRONE_ID_BASIC_ID_DATA :: default ())) , PARAM_EXT_REQUEST_READ_DATA :: ID => Ok (Self :: PARAM_EXT_REQUEST_READ (PARAM_EXT_REQUEST_READ_DATA :: default ())) , OPEN_DRONE_ID_SELF_ID_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_SELF_ID (OPEN_DRONE_ID_SELF_ID_DATA :: default ())) , DISTANCE_SENSOR_DATA :: ID => Ok (Self :: DISTANCE_SENSOR (DISTANCE_SENSOR_DATA :: default ())) , PARAM_EXT_SET_DATA :: ID => Ok (Self :: PARAM_EXT_SET (PARAM_EXT_SET_DATA :: default ())) , OPEN_DRONE_ID_AUTHENTICATION_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_AUTHENTICATION (OPEN_DRONE_ID_AUTHENTICATION_DATA :: default ())) , MISSION_CURRENT_DATA :: ID => Ok (Self :: MISSION_CURRENT (MISSION_CURRENT_DATA :: default ())) , ATTITUDE_TARGET_DATA :: ID => Ok (Self :: ATTITUDE_TARGET (ATTITUDE_TARGET_DATA :: default ())) , GPS2_RAW_DATA :: ID => Ok (Self :: GPS2_RAW (GPS2_RAW_DATA :: default ())) , FLIGHT_INFORMATION_DATA :: ID => Ok (Self :: FLIGHT_INFORMATION (FLIGHT_INFORMATION_DATA :: default ())) , MISSION_COUNT_DATA :: ID => Ok (Self :: MISSION_COUNT (MISSION_COUNT_DATA :: default ())) , SAFETY_SET_ALLOWED_AREA_DATA :: ID => Ok (Self :: SAFETY_SET_ALLOWED_AREA (SAFETY_SET_ALLOWED_AREA_DATA :: default ())) , CAMERA_TRACKING_IMAGE_STATUS_DATA :: ID => Ok (Self :: CAMERA_TRACKING_IMAGE_STATUS (CAMERA_TRACKING_IMAGE_STATUS_DATA :: default ())) , GIMBAL_MANAGER_SET_PITCHYAW_DATA :: ID => Ok (Self :: GIMBAL_MANAGER_SET_PITCHYAW (GIMBAL_MANAGER_SET_PITCHYAW_DATA :: default ())) , ATTITUDE_DATA :: ID => Ok (Self :: ATTITUDE (ATTITUDE_DATA :: default ())) , MISSION_REQUEST_PARTIAL_LIST_DATA :: ID => Ok (Self :: MISSION_REQUEST_PARTIAL_LIST (MISSION_REQUEST_PARTIAL_LIST_DATA :: default ())) , POSITION_TARGET_LOCAL_NED_DATA :: ID => Ok (Self :: POSITION_TARGET_LOCAL_NED (POSITION_TARGET_LOCAL_NED_DATA :: default ())) , GPS_STATUS_DATA :: ID => Ok (Self :: GPS_STATUS (GPS_STATUS_DATA :: default ())) , SET_ATTITUDE_TARGET_DATA :: ID => Ok (Self :: SET_ATTITUDE_TARGET (SET_ATTITUDE_TARGET_DATA :: default ())) , HIL_GPS_DATA :: ID => Ok (Self :: HIL_GPS (HIL_GPS_DATA :: default ())) , LOG_ERASE_DATA :: ID => Ok (Self :: LOG_ERASE (LOG_ERASE_DATA :: default ())) , VISION_SPEED_ESTIMATE_DATA :: ID => Ok (Self :: VISION_SPEED_ESTIMATE (VISION_SPEED_ESTIMATE_DATA :: default ())) , HIL_STATE_QUATERNION_DATA :: ID => Ok (Self :: HIL_STATE_QUATERNION (HIL_STATE_QUATERNION_DATA :: default ())) , NAV_CONTROLLER_OUTPUT_DATA :: ID => Ok (Self :: NAV_CONTROLLER_OUTPUT (NAV_CONTROLLER_OUTPUT_DATA :: default ())) , RC_CHANNELS_OVERRIDE_DATA :: ID => Ok (Self :: RC_CHANNELS_OVERRIDE (RC_CHANNELS_OVERRIDE_DATA :: default ())) , FILE_TRANSFER_PROTOCOL_DATA :: ID => Ok (Self :: FILE_TRANSFER_PROTOCOL (FILE_TRANSFER_PROTOCOL_DATA :: default ())) , EFI_STATUS_DATA :: ID => Ok (Self :: EFI_STATUS (EFI_STATUS_DATA :: default ())) , CAMERA_IMAGE_CAPTURED_DATA :: ID => Ok (Self :: CAMERA_IMAGE_CAPTURED (CAMERA_IMAGE_CAPTURED_DATA :: default ())) , ENCAPSULATED_DATA_DATA :: ID => Ok (Self :: ENCAPSULATED_DATA (ENCAPSULATED_DATA_DATA :: default ())) , COMMAND_LONG_DATA :: ID => Ok (Self :: COMMAND_LONG (COMMAND_LONG_DATA :: default ())) , MESSAGE_INTERVAL_DATA :: ID => Ok (Self :: MESSAGE_INTERVAL (MESSAGE_INTERVAL_DATA :: default ())) , LOGGING_DATA_ACKED_DATA :: ID => Ok (Self :: LOGGING_DATA_ACKED (LOGGING_DATA_ACKED_DATA :: default ())) , VIDEO_STREAM_STATUS_DATA :: ID => Ok (Self :: VIDEO_STREAM_STATUS (VIDEO_STREAM_STATUS_DATA :: default ())) , GIMBAL_MANAGER_INFORMATION_DATA :: ID => Ok (Self :: GIMBAL_MANAGER_INFORMATION (GIMBAL_MANAGER_INFORMATION_DATA :: default ())) , WIFI_CONFIG_AP_DATA :: ID => Ok (Self :: WIFI_CONFIG_AP (WIFI_CONFIG_AP_DATA :: default ())) , AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: ID => Ok (Self :: AUTOPILOT_STATE_FOR_GIMBAL_DEVICE (AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: default ())) , SET_MODE_DATA :: ID => Ok (Self :: SET_MODE (SET_MODE_DATA :: default ())) , MISSION_ITEM_DATA :: ID => Ok (Self :: MISSION_ITEM (MISSION_ITEM_DATA :: default ())) , PROTOCOL_VERSION_DATA :: ID => Ok (Self :: PROTOCOL_VERSION (PROTOCOL_VERSION_DATA :: default ())) , MISSION_ITEM_REACHED_DATA :: ID => Ok (Self :: MISSION_ITEM_REACHED (MISSION_ITEM_REACHED_DATA :: default ())) , MISSION_ACK_DATA :: ID => Ok (Self :: MISSION_ACK (MISSION_ACK_DATA :: default ())) , SET_GPS_GLOBAL_ORIGIN_DATA :: ID => Ok (Self :: SET_GPS_GLOBAL_ORIGIN (SET_GPS_GLOBAL_ORIGIN_DATA :: default ())) , GPS_GLOBAL_ORIGIN_DATA :: ID => Ok (Self :: GPS_GLOBAL_ORIGIN (GPS_GLOBAL_ORIGIN_DATA :: default ())) , MISSION_REQUEST_LIST_DATA :: ID => Ok (Self :: MISSION_REQUEST_LIST (MISSION_REQUEST_LIST_DATA :: default ())) , HIL_SENSOR_DATA :: ID => Ok (Self :: HIL_SENSOR (HIL_SENSOR_DATA :: default ())) , ATTITUDE_QUATERNION_COV_DATA :: ID => Ok (Self :: ATTITUDE_QUATERNION_COV (ATTITUDE_QUATERNION_COV_DATA :: default ())) , SET_POSITION_TARGET_GLOBAL_INT_DATA :: ID => Ok (Self :: SET_POSITION_TARGET_GLOBAL_INT (SET_POSITION_TARGET_GLOBAL_INT_DATA :: default ())) , TERRAIN_REQUEST_DATA :: ID => Ok (Self :: TERRAIN_REQUEST (TERRAIN_REQUEST_DATA :: default ())) , TERRAIN_DATA_DATA :: ID => Ok (Self :: TERRAIN_DATA (TERRAIN_DATA_DATA :: default ())) , ATT_POS_MOCAP_DATA :: ID => Ok (Self :: ATT_POS_MOCAP (ATT_POS_MOCAP_DATA :: default ())) , CONTROL_SYSTEM_STATE_DATA :: ID => Ok (Self :: CONTROL_SYSTEM_STATE (CONTROL_SYSTEM_STATE_DATA :: default ())) , SCALED_IMU3_DATA :: ID => Ok (Self :: SCALED_IMU3 (SCALED_IMU3_DATA :: default ())) , WIND_COV_DATA :: ID => Ok (Self :: WIND_COV (WIND_COV_DATA :: default ())) , CAMERA_INFORMATION_DATA :: ID => Ok (Self :: CAMERA_INFORMATION (CAMERA_INFORMATION_DATA :: default ())) , GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: ID => Ok (Self :: GIMBAL_MANAGER_SET_MANUAL_CONTROL (GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: default ())) , OBSTACLE_DISTANCE_DATA :: ID => Ok (Self :: OBSTACLE_DISTANCE (OBSTACLE_DISTANCE_DATA :: default ())) , SERIAL_CONTROL_DATA :: ID => Ok (Self :: SERIAL_CONTROL (SERIAL_CONTROL_DATA :: default ())) , ACTUATOR_CONTROL_TARGET_DATA :: ID => Ok (Self :: ACTUATOR_CONTROL_TARGET (ACTUATOR_CONTROL_TARGET_DATA :: default ())) , GLOBAL_POSITION_INT_DATA :: ID => Ok (Self :: GLOBAL_POSITION_INT (GLOBAL_POSITION_INT_DATA :: default ())) , GPS_INPUT_DATA :: ID => Ok (Self :: GPS_INPUT (GPS_INPUT_DATA :: default ())) , VIBRATION_DATA :: ID => Ok (Self :: VIBRATION (VIBRATION_DATA :: default ())) , PARAM_REQUEST_LIST_DATA :: ID => Ok (Self :: PARAM_REQUEST_LIST (PARAM_REQUEST_LIST_DATA :: default ())) , EXTENDED_SYS_STATE_DATA :: ID => Ok (Self :: EXTENDED_SYS_STATE (EXTENDED_SYS_STATE_DATA :: default ())) , PLAY_TUNE_DATA :: ID => Ok (Self :: PLAY_TUNE (PLAY_TUNE_DATA :: default ())) , VFR_HUD_DATA :: ID => Ok (Self :: VFR_HUD (VFR_HUD_DATA :: default ())) , LOG_REQUEST_END_DATA :: ID => Ok (Self :: LOG_REQUEST_END (LOG_REQUEST_END_DATA :: default ())) , HIGHRES_IMU_DATA :: ID => Ok (Self :: HIGHRES_IMU (HIGHRES_IMU_DATA :: default ())) , GLOBAL_POSITION_INT_COV_DATA :: ID => Ok (Self :: GLOBAL_POSITION_INT_COV (GLOBAL_POSITION_INT_COV_DATA :: default ())) , AIS_VESSEL_DATA :: ID => Ok (Self :: AIS_VESSEL (AIS_VESSEL_DATA :: default ())) , GPS_RTCM_DATA_DATA :: ID => Ok (Self :: GPS_RTCM_DATA (GPS_RTCM_DATA_DATA :: default ())) , COMMAND_ACK_DATA :: ID => Ok (Self :: COMMAND_ACK (COMMAND_ACK_DATA :: default ())) , CHANGE_OPERATOR_CONTROL_ACK_DATA :: ID => Ok (Self :: CHANGE_OPERATOR_CONTROL_ACK (CHANGE_OPERATOR_CONTROL_ACK_DATA :: default ())) , SCALED_IMU2_DATA :: ID => Ok (Self :: SCALED_IMU2 (SCALED_IMU2_DATA :: default ())) , GIMBAL_MANAGER_STATUS_DATA :: ID => Ok (Self :: GIMBAL_MANAGER_STATUS (GIMBAL_MANAGER_STATUS_DATA :: default ())) , PARAM_EXT_REQUEST_LIST_DATA :: ID => Ok (Self :: PARAM_EXT_REQUEST_LIST (PARAM_EXT_REQUEST_LIST_DATA :: default ())) , ODOMETRY_DATA :: ID => Ok (Self :: ODOMETRY (ODOMETRY_DATA :: default ())) , DEBUG_VECT_DATA :: ID => Ok (Self :: DEBUG_VECT (DEBUG_VECT_DATA :: default ())) , DEBUG_DATA :: ID => Ok (Self :: DEBUG (DEBUG_DATA :: default ())) , TRAJECTORY_REPRESENTATION_BEZIER_DATA :: ID => Ok (Self :: TRAJECTORY_REPRESENTATION_BEZIER (TRAJECTORY_REPRESENTATION_BEZIER_DATA :: default ())) , REQUEST_EVENT_DATA :: ID => Ok (Self :: REQUEST_EVENT (REQUEST_EVENT_DATA :: default ())) , CAN_FILTER_MODIFY_DATA :: ID => Ok (Self :: CAN_FILTER_MODIFY (CAN_FILTER_MODIFY_DATA :: default ())) , HYGROMETER_SENSOR_DATA :: ID => Ok (Self :: HYGROMETER_SENSOR (HYGROMETER_SENSOR_DATA :: default ())) , NAMED_VALUE_INT_DATA :: ID => Ok (Self :: NAMED_VALUE_INT (NAMED_VALUE_INT_DATA :: default ())) , OPEN_DRONE_ID_MESSAGE_PACK_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_MESSAGE_PACK (OPEN_DRONE_ID_MESSAGE_PACK_DATA :: default ())) , CAMERA_TRIGGER_DATA :: ID => Ok (Self :: CAMERA_TRIGGER (CAMERA_TRIGGER_DATA :: default ())) , LOG_DATA_DATA :: ID => Ok (Self :: LOG_DATA (LOG_DATA_DATA :: default ())) , SCALED_PRESSURE3_DATA :: ID => Ok (Self :: SCALED_PRESSURE3 (SCALED_PRESSURE3_DATA :: default ())) , OPEN_DRONE_ID_ARM_STATUS_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_ARM_STATUS (OPEN_DRONE_ID_ARM_STATUS_DATA :: default ())) , ATTITUDE_QUATERNION_DATA :: ID => Ok (Self :: ATTITUDE_QUATERNION (ATTITUDE_QUATERNION_DATA :: default ())) , CHANGE_OPERATOR_CONTROL_DATA :: ID => Ok (Self :: CHANGE_OPERATOR_CONTROL (CHANGE_OPERATOR_CONTROL_DATA :: default ())) , SETUP_SIGNING_DATA :: ID => Ok (Self :: SETUP_SIGNING (SETUP_SIGNING_DATA :: default ())) , GIMBAL_DEVICE_INFORMATION_DATA :: ID => Ok (Self :: GIMBAL_DEVICE_INFORMATION (GIMBAL_DEVICE_INFORMATION_DATA :: default ())) , WINCH_STATUS_DATA :: ID => Ok (Self :: WINCH_STATUS (WINCH_STATUS_DATA :: default ())) , SIM_STATE_DATA :: ID => Ok (Self :: SIM_STATE (SIM_STATE_DATA :: default ())) , GPS_RTK_DATA :: ID => Ok (Self :: GPS_RTK (GPS_RTK_DATA :: default ())) , GPS2_RTK_DATA :: ID => Ok (Self :: GPS2_RTK (GPS2_RTK_DATA :: default ())) , HIGH_LATENCY_DATA :: ID => Ok (Self :: HIGH_LATENCY (HIGH_LATENCY_DATA :: default ())) , TERRAIN_REPORT_DATA :: ID => Ok (Self :: TERRAIN_REPORT (TERRAIN_REPORT_DATA :: default ())) , HIL_STATE_DATA :: ID => Ok (Self :: HIL_STATE (HIL_STATE_DATA :: default ())) , MEMORY_VECT_DATA :: ID => Ok (Self :: MEMORY_VECT (MEMORY_VECT_DATA :: default ())) , MOUNT_ORIENTATION_DATA :: ID => Ok (Self :: MOUNT_ORIENTATION (MOUNT_ORIENTATION_DATA :: default ())) , CAMERA_TRACKING_GEO_STATUS_DATA :: ID => Ok (Self :: CAMERA_TRACKING_GEO_STATUS (CAMERA_TRACKING_GEO_STATUS_DATA :: default ())) , LOGGING_ACK_DATA :: ID => Ok (Self :: LOGGING_ACK (LOGGING_ACK_DATA :: default ())) , UAVCAN_NODE_STATUS_DATA :: ID => Ok (Self :: UAVCAN_NODE_STATUS (UAVCAN_NODE_STATUS_DATA :: default ())) , SCALED_PRESSURE2_DATA :: ID => Ok (Self :: SCALED_PRESSURE2 (SCALED_PRESSURE2_DATA :: default ())) , VIDEO_STREAM_INFORMATION_DATA :: ID => Ok (Self :: VIDEO_STREAM_INFORMATION (VIDEO_STREAM_INFORMATION_DATA :: default ())) , BATTERY_STATUS_DATA :: ID => Ok (Self :: BATTERY_STATUS (BATTERY_STATUS_DATA :: default ())) , SCALED_IMU_DATA :: ID => Ok (Self :: SCALED_IMU (SCALED_IMU_DATA :: default ())) , LOCAL_POSITION_NED_COV_DATA :: ID => Ok (Self :: LOCAL_POSITION_NED_COV (LOCAL_POSITION_NED_COV_DATA :: default ())) , GENERATOR_STATUS_DATA :: ID => Ok (Self :: GENERATOR_STATUS (GENERATOR_STATUS_DATA :: default ())) , CAN_FRAME_DATA :: ID => Ok (Self :: CAN_FRAME (CAN_FRAME_DATA :: default ())) , TERRAIN_CHECK_DATA :: ID => Ok (Self :: TERRAIN_CHECK (TERRAIN_CHECK_DATA :: default ())) , CAMERA_CAPTURE_STATUS_DATA :: ID => Ok (Self :: CAMERA_CAPTURE_STATUS (CAMERA_CAPTURE_STATUS_DATA :: default ())) , UAVCAN_NODE_INFO_DATA :: ID => Ok (Self :: UAVCAN_NODE_INFO (UAVCAN_NODE_INFO_DATA :: default ())) , RAW_PRESSURE_DATA :: ID => Ok (Self :: RAW_PRESSURE (RAW_PRESSURE_DATA :: default ())) , POSITION_TARGET_GLOBAL_INT_DATA :: ID => Ok (Self :: POSITION_TARGET_GLOBAL_INT (POSITION_TARGET_GLOBAL_INT_DATA :: default ())) , HEARTBEAT_DATA :: ID => Ok (Self :: HEARTBEAT (HEARTBEAT_DATA :: default ())) , RADIO_STATUS_DATA :: ID => Ok (Self :: RADIO_STATUS (RADIO_STATUS_DATA :: default ())) , PARAM_EXT_VALUE_DATA :: ID => Ok (Self :: PARAM_EXT_VALUE (PARAM_EXT_VALUE_DATA :: default ())) , RC_CHANNELS_RAW_DATA :: ID => Ok (Self :: RC_CHANNELS_RAW (RC_CHANNELS_RAW_DATA :: default ())) , ISBD_LINK_STATUS_DATA :: ID => Ok (Self :: ISBD_LINK_STATUS (ISBD_LINK_STATUS_DATA :: default ())) , OPTICAL_FLOW_RAD_DATA :: ID => Ok (Self :: OPTICAL_FLOW_RAD (OPTICAL_FLOW_RAD_DATA :: default ())) , PARAM_MAP_RC_DATA :: ID => Ok (Self :: PARAM_MAP_RC (PARAM_MAP_RC_DATA :: default ())) , PARAM_REQUEST_READ_DATA :: ID => Ok (Self :: PARAM_REQUEST_READ (PARAM_REQUEST_READ_DATA :: default ())) , RESPONSE_EVENT_ERROR_DATA :: ID => Ok (Self :: RESPONSE_EVENT_ERROR (RESPONSE_EVENT_ERROR_DATA :: default ())) , LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: ID => Ok (Self :: LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET (LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: default ())) , GLOBAL_VISION_POSITION_ESTIMATE_DATA :: ID => Ok (Self :: GLOBAL_VISION_POSITION_ESTIMATE (GLOBAL_VISION_POSITION_ESTIMATE_DATA :: default ())) , FENCE_STATUS_DATA :: ID => Ok (Self :: FENCE_STATUS (FENCE_STATUS_DATA :: default ())) , ONBOARD_COMPUTER_STATUS_DATA :: ID => Ok (Self :: ONBOARD_COMPUTER_STATUS (ONBOARD_COMPUTER_STATUS_DATA :: default ())) , CURRENT_EVENT_SEQUENCE_DATA :: ID => Ok (Self :: CURRENT_EVENT_SEQUENCE (CURRENT_EVENT_SEQUENCE_DATA :: default ())) , MISSION_REQUEST_INT_DATA :: ID => Ok (Self :: MISSION_REQUEST_INT (MISSION_REQUEST_INT_DATA :: default ())) , MISSION_ITEM_INT_DATA :: ID => Ok (Self :: MISSION_ITEM_INT (MISSION_ITEM_INT_DATA :: default ())) , VISION_POSITION_ESTIMATE_DATA :: ID => Ok (Self :: VISION_POSITION_ESTIMATE (VISION_POSITION_ESTIMATE_DATA :: default ())) , PARAM_EXT_ACK_DATA :: ID => Ok (Self :: PARAM_EXT_ACK (PARAM_EXT_ACK_DATA :: default ())) , SYSTEM_TIME_DATA :: ID => Ok (Self :: SYSTEM_TIME (SYSTEM_TIME_DATA :: default ())) , LINK_NODE_STATUS_DATA :: ID => Ok (Self :: LINK_NODE_STATUS (LINK_NODE_STATUS_DATA :: default ())) , COMMAND_CANCEL_DATA :: ID => Ok (Self :: COMMAND_CANCEL (COMMAND_CANCEL_DATA :: default ())) , VICON_POSITION_ESTIMATE_DATA :: ID => Ok (Self :: VICON_POSITION_ESTIMATE (VICON_POSITION_ESTIMATE_DATA :: default ())) , SERVO_OUTPUT_RAW_DATA :: ID => Ok (Self :: SERVO_OUTPUT_RAW (SERVO_OUTPUT_RAW_DATA :: default ())) , TIMESYNC_DATA :: ID => Ok (Self :: TIMESYNC (TIMESYNC_DATA :: default ())) , POWER_STATUS_DATA :: ID => Ok (Self :: POWER_STATUS (POWER_STATUS_DATA :: default ())) , OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_SYSTEM_UPDATE (OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: default ())) , RAW_RPM_DATA :: ID => Ok (Self :: RAW_RPM (RAW_RPM_DATA :: default ())) , OPEN_DRONE_ID_LOCATION_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_LOCATION (OPEN_DRONE_ID_LOCATION_DATA :: default ())) , LANDING_TARGET_DATA :: ID => Ok (Self :: LANDING_TARGET (LANDING_TARGET_DATA :: default ())) , GIMBAL_MANAGER_SET_ATTITUDE_DATA :: ID => Ok (Self :: GIMBAL_MANAGER_SET_ATTITUDE (GIMBAL_MANAGER_SET_ATTITUDE_DATA :: default ())) , ESC_STATUS_DATA :: ID => Ok (Self :: ESC_STATUS (ESC_STATUS_DATA :: default ())) , ORBIT_EXECUTION_STATUS_DATA :: ID => Ok (Self :: ORBIT_EXECUTION_STATUS (ORBIT_EXECUTION_STATUS_DATA :: default ())) , SYS_STATUS_DATA :: ID => Ok (Self :: SYS_STATUS (SYS_STATUS_DATA :: default ())) , LOG_REQUEST_DATA_DATA :: ID => Ok (Self :: LOG_REQUEST_DATA (LOG_REQUEST_DATA_DATA :: default ())) , AUTH_KEY_DATA :: ID => Ok (Self :: AUTH_KEY (AUTH_KEY_DATA :: default ())) , LOG_REQUEST_LIST_DATA :: ID => Ok (Self :: LOG_REQUEST_LIST (LOG_REQUEST_LIST_DATA :: default ())) , GPS_INJECT_DATA_DATA :: ID => Ok (Self :: GPS_INJECT_DATA (GPS_INJECT_DATA_DATA :: default ())) , MISSION_SET_CURRENT_DATA :: ID => Ok (Self :: MISSION_SET_CURRENT (MISSION_SET_CURRENT_DATA :: default ())) , COMMAND_INT_DATA :: ID => Ok (Self :: COMMAND_INT (COMMAND_INT_DATA :: default ())) , HIGH_LATENCY2_DATA :: ID => Ok (Self :: HIGH_LATENCY2 (HIGH_LATENCY2_DATA :: default ())) , BUTTON_CHANGE_DATA :: ID => Ok (Self :: BUTTON_CHANGE (BUTTON_CHANGE_DATA :: default ())) , CAMERA_SETTINGS_DATA :: ID => Ok (Self :: CAMERA_SETTINGS (CAMERA_SETTINGS_DATA :: default ())) , DEBUG_FLOAT_ARRAY_DATA :: ID => Ok (Self :: DEBUG_FLOAT_ARRAY (DEBUG_FLOAT_ARRAY_DATA :: default ())) , COMPONENT_METADATA_DATA :: ID => Ok (Self :: COMPONENT_METADATA (COMPONENT_METADATA_DATA :: default ())) , MISSION_CLEAR_ALL_DATA :: ID => Ok (Self :: MISSION_CLEAR_ALL (MISSION_CLEAR_ALL_DATA :: default ())) , COLLISION_DATA :: ID => Ok (Self :: COLLISION (COLLISION_DATA :: default ())) , SUPPORTED_TUNES_DATA :: ID => Ok (Self :: SUPPORTED_TUNES (SUPPORTED_TUNES_DATA :: default ())) , EVENT_DATA :: ID => Ok (Self :: EVENT (EVENT_DATA :: default ())) , CANFD_FRAME_DATA :: ID => Ok (Self :: CANFD_FRAME (CANFD_FRAME_DATA :: default ())) , GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: ID => Ok (Self :: GIMBAL_DEVICE_ATTITUDE_STATUS (GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: default ())) , HOME_POSITION_DATA :: ID => Ok (Self :: HOME_POSITION (HOME_POSITION_DATA :: default ())) , OPEN_DRONE_ID_SYSTEM_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_SYSTEM (OPEN_DRONE_ID_SYSTEM_DATA :: default ())) , GPS_RAW_INT_DATA :: ID => Ok (Self :: GPS_RAW_INT (GPS_RAW_INT_DATA :: default ())) , PING_DATA :: ID => Ok (Self :: PING (PING_DATA :: default ())) , HIL_CONTROLS_DATA :: ID => Ok (Self :: HIL_CONTROLS (HIL_CONTROLS_DATA :: default ())) , HIL_RC_INPUTS_RAW_DATA :: ID => Ok (Self :: HIL_RC_INPUTS_RAW (HIL_RC_INPUTS_RAW_DATA :: default ())) , STATUSTEXT_DATA :: ID => Ok (Self :: STATUSTEXT (STATUSTEXT_DATA :: default ())) , PARAM_VALUE_DATA :: ID => Ok (Self :: PARAM_VALUE (PARAM_VALUE_DATA :: default ())) , SET_POSITION_TARGET_LOCAL_NED_DATA :: ID => Ok (Self :: SET_POSITION_TARGET_LOCAL_NED (SET_POSITION_TARGET_LOCAL_NED_DATA :: default ())) , MISSION_REQUEST_DATA :: ID => Ok (Self :: MISSION_REQUEST (MISSION_REQUEST_DATA :: default ())) , TIME_ESTIMATE_TO_TARGET_DATA :: ID => Ok (Self :: TIME_ESTIMATE_TO_TARGET (TIME_ESTIMATE_TO_TARGET_DATA :: default ())) , RAW_IMU_DATA :: ID => Ok (Self :: RAW_IMU (RAW_IMU_DATA :: default ())) , DATA_TRANSMISSION_HANDSHAKE_DATA :: ID => Ok (Self :: DATA_TRANSMISSION_HANDSHAKE (DATA_TRANSMISSION_HANDSHAKE_DATA :: default ())) , OPEN_DRONE_ID_OPERATOR_ID_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_OPERATOR_ID (OPEN_DRONE_ID_OPERATOR_ID_DATA :: default ())) , MISSION_WRITE_PARTIAL_LIST_DATA :: ID => Ok (Self :: MISSION_WRITE_PARTIAL_LIST (MISSION_WRITE_PARTIAL_LIST_DATA :: default ())) , V2_EXTENSION_DATA :: ID => Ok (Self :: V2_EXTENSION (V2_EXTENSION_DATA :: default ())) , CAMERA_FOV_STATUS_DATA :: ID => Ok (Self :: CAMERA_FOV_STATUS (CAMERA_FOV_STATUS_DATA :: default ())) , MAG_CAL_REPORT_DATA :: ID => Ok (Self :: MAG_CAL_REPORT (MAG_CAL_REPORT_DATA :: default ())) , SCALED_PRESSURE_DATA :: ID => Ok (Self :: SCALED_PRESSURE (SCALED_PRESSURE_DATA :: default ())) , LOGGING_DATA_DATA :: ID => Ok (Self :: LOGGING_DATA (LOGGING_DATA_DATA :: default ())) , ESC_INFO_DATA :: ID => Ok (Self :: ESC_INFO (ESC_INFO_DATA :: default ())) , CELLULAR_STATUS_DATA :: ID => Ok (Self :: CELLULAR_STATUS (CELLULAR_STATUS_DATA :: default ())) , RC_CHANNELS_SCALED_DATA :: ID => Ok (Self :: RC_CHANNELS_SCALED (RC_CHANNELS_SCALED_DATA :: default ())) , MANUAL_CONTROL_DATA :: ID => Ok (Self :: MANUAL_CONTROL (MANUAL_CONTROL_DATA :: default ())) , DATA_STREAM_DATA :: ID => Ok (Self :: DATA_STREAM (DATA_STREAM_DATA :: default ())) , SET_HOME_POSITION_DATA :: ID => Ok (Self :: SET_HOME_POSITION (SET_HOME_POSITION_DATA :: default ())) , GIMBAL_DEVICE_SET_ATTITUDE_DATA :: ID => Ok (Self :: GIMBAL_DEVICE_SET_ATTITUDE (GIMBAL_DEVICE_SET_ATTITUDE_DATA :: default ())) , TUNNEL_DATA :: ID => Ok (Self :: TUNNEL (TUNNEL_DATA :: default ())) , COMPONENT_INFORMATION_DATA :: ID => Ok (Self :: COMPONENT_INFORMATION (COMPONENT_INFORMATION_DATA :: default ())) , SET_ACTUATOR_CONTROL_TARGET_DATA :: ID => Ok (Self :: SET_ACTUATOR_CONTROL_TARGET (SET_ACTUATOR_CONTROL_TARGET_DATA :: default ())) , HIL_ACTUATOR_CONTROLS_DATA :: ID => Ok (Self :: HIL_ACTUATOR_CONTROLS (HIL_ACTUATOR_CONTROLS_DATA :: default ())) , RESOURCE_REQUEST_DATA :: ID => Ok (Self :: RESOURCE_REQUEST (RESOURCE_REQUEST_DATA :: default ())) , PARAM_SET_DATA :: ID => Ok (Self :: PARAM_SET (PARAM_SET_DATA :: default ())) , CELLULAR_CONFIG_DATA :: ID => Ok (Self :: CELLULAR_CONFIG (CELLULAR_CONFIG_DATA :: default ())) , ALTITUDE_DATA :: ID => Ok (Self :: ALTITUDE (ALTITUDE_DATA :: default ())) , LOG_ENTRY_DATA :: ID => Ok (Self :: LOG_ENTRY (LOG_ENTRY_DATA :: default ())) , SMART_BATTERY_INFO_DATA :: ID => Ok (Self :: SMART_BATTERY_INFO (SMART_BATTERY_INFO_DATA :: default ())) , UTM_GLOBAL_POSITION_DATA :: ID => Ok (Self :: UTM_GLOBAL_POSITION (UTM_GLOBAL_POSITION_DATA :: default ())) , PLAY_TUNE_V2_DATA :: ID => Ok (Self :: PLAY_TUNE_V2 (PLAY_TUNE_V2_DATA :: default ())) , HIL_OPTICAL_FLOW_DATA :: ID => Ok (Self :: HIL_OPTICAL_FLOW (HIL_OPTICAL_FLOW_DATA :: default ())) , REQUEST_DATA_STREAM_DATA :: ID => Ok (Self :: REQUEST_DATA_STREAM (REQUEST_DATA_STREAM_DATA :: default ())) , _ => { Err ("Invalid message id.") } } } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { match self { Self :: LOCAL_POSITION_NED (body) => body . ser (version , bytes) , Self :: FOLLOW_TARGET (body) => body . ser (version , bytes) , Self :: OPTICAL_FLOW (body) => body . ser (version , bytes) , Self :: STORAGE_INFORMATION (body) => body . ser (version , bytes) , Self :: SAFETY_ALLOWED_AREA (body) => body . ser (version , bytes) , Self :: MANUAL_SETPOINT (body) => body . ser (version , bytes) , Self :: AUTOPILOT_VERSION (body) => body . ser (version , bytes) , Self :: RC_CHANNELS (body) => body . ser (version , bytes) , Self :: ESTIMATOR_STATUS (body) => body . ser (version , bytes) , Self :: ADSB_VEHICLE (body) => body . ser (version , bytes) , Self :: TRAJECTORY_REPRESENTATION_WAYPOINTS (body) => body . ser (version , bytes) , Self :: WHEEL_DISTANCE (body) => body . ser (version , bytes) , Self :: NAMED_VALUE_FLOAT (body) => body . ser (version , bytes) , Self :: ACTUATOR_OUTPUT_STATUS (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_BASIC_ID (body) => body . ser (version , bytes) , Self :: PARAM_EXT_REQUEST_READ (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_SELF_ID (body) => body . ser (version , bytes) , Self :: DISTANCE_SENSOR (body) => body . ser (version , bytes) , Self :: PARAM_EXT_SET (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_AUTHENTICATION (body) => body . ser (version , bytes) , Self :: MISSION_CURRENT (body) => body . ser (version , bytes) , Self :: ATTITUDE_TARGET (body) => body . ser (version , bytes) , Self :: GPS2_RAW (body) => body . ser (version , bytes) , Self :: FLIGHT_INFORMATION (body) => body . ser (version , bytes) , Self :: MISSION_COUNT (body) => body . ser (version , bytes) , Self :: SAFETY_SET_ALLOWED_AREA (body) => body . ser (version , bytes) , Self :: CAMERA_TRACKING_IMAGE_STATUS (body) => body . ser (version , bytes) , Self :: GIMBAL_MANAGER_SET_PITCHYAW (body) => body . ser (version , bytes) , Self :: ATTITUDE (body) => body . ser (version , bytes) , Self :: MISSION_REQUEST_PARTIAL_LIST (body) => body . ser (version , bytes) , Self :: POSITION_TARGET_LOCAL_NED (body) => body . ser (version , bytes) , Self :: GPS_STATUS (body) => body . ser (version , bytes) , Self :: SET_ATTITUDE_TARGET (body) => body . ser (version , bytes) , Self :: HIL_GPS (body) => body . ser (version , bytes) , Self :: LOG_ERASE (body) => body . ser (version , bytes) , Self :: VISION_SPEED_ESTIMATE (body) => body . ser (version , bytes) , Self :: HIL_STATE_QUATERNION (body) => body . ser (version , bytes) , Self :: NAV_CONTROLLER_OUTPUT (body) => body . ser (version , bytes) , Self :: RC_CHANNELS_OVERRIDE (body) => body . ser (version , bytes) , Self :: FILE_TRANSFER_PROTOCOL (body) => body . ser (version , bytes) , Self :: EFI_STATUS (body) => body . ser (version , bytes) , Self :: CAMERA_IMAGE_CAPTURED (body) => body . ser (version , bytes) , Self :: ENCAPSULATED_DATA (body) => body . ser (version , bytes) , Self :: COMMAND_LONG (body) => body . ser (version , bytes) , Self :: MESSAGE_INTERVAL (body) => body . ser (version , bytes) , Self :: LOGGING_DATA_ACKED (body) => body . ser (version , bytes) , Self :: VIDEO_STREAM_STATUS (body) => body . ser (version , bytes) , Self :: GIMBAL_MANAGER_INFORMATION (body) => body . ser (version , bytes) , Self :: WIFI_CONFIG_AP (body) => body . ser (version , bytes) , Self :: AUTOPILOT_STATE_FOR_GIMBAL_DEVICE (body) => body . ser (version , bytes) , Self :: SET_MODE (body) => body . ser (version , bytes) , Self :: MISSION_ITEM (body) => body . ser (version , bytes) , Self :: PROTOCOL_VERSION (body) => body . ser (version , bytes) , Self :: MISSION_ITEM_REACHED (body) => body . ser (version , bytes) , Self :: MISSION_ACK (body) => body . ser (version , bytes) , Self :: SET_GPS_GLOBAL_ORIGIN (body) => body . ser (version , bytes) , Self :: GPS_GLOBAL_ORIGIN (body) => body . ser (version , bytes) , Self :: MISSION_REQUEST_LIST (body) => body . ser (version , bytes) , Self :: HIL_SENSOR (body) => body . ser (version , bytes) , Self :: ATTITUDE_QUATERNION_COV (body) => body . ser (version , bytes) , Self :: SET_POSITION_TARGET_GLOBAL_INT (body) => body . ser (version , bytes) , Self :: TERRAIN_REQUEST (body) => body . ser (version , bytes) , Self :: TERRAIN_DATA (body) => body . ser (version , bytes) , Self :: ATT_POS_MOCAP (body) => body . ser (version , bytes) , Self :: CONTROL_SYSTEM_STATE (body) => body . ser (version , bytes) , Self :: SCALED_IMU3 (body) => body . ser (version , bytes) , Self :: WIND_COV (body) => body . ser (version , bytes) , Self :: CAMERA_INFORMATION (body) => body . ser (version , bytes) , Self :: GIMBAL_MANAGER_SET_MANUAL_CONTROL (body) => body . ser (version , bytes) , Self :: OBSTACLE_DISTANCE (body) => body . ser (version , bytes) , Self :: SERIAL_CONTROL (body) => body . ser (version , bytes) , Self :: ACTUATOR_CONTROL_TARGET (body) => body . ser (version , bytes) , Self :: GLOBAL_POSITION_INT (body) => body . ser (version , bytes) , Self :: GPS_INPUT (body) => body . ser (version , bytes) , Self :: VIBRATION (body) => body . ser (version , bytes) , Self :: PARAM_REQUEST_LIST (body) => body . ser (version , bytes) , Self :: EXTENDED_SYS_STATE (body) => body . ser (version , bytes) , Self :: PLAY_TUNE (body) => body . ser (version , bytes) , Self :: VFR_HUD (body) => body . ser (version , bytes) , Self :: LOG_REQUEST_END (body) => body . ser (version , bytes) , Self :: HIGHRES_IMU (body) => body . ser (version , bytes) , Self :: GLOBAL_POSITION_INT_COV (body) => body . ser (version , bytes) , Self :: AIS_VESSEL (body) => body . ser (version , bytes) , Self :: GPS_RTCM_DATA (body) => body . ser (version , bytes) , Self :: COMMAND_ACK (body) => body . ser (version , bytes) , Self :: CHANGE_OPERATOR_CONTROL_ACK (body) => body . ser (version , bytes) , Self :: SCALED_IMU2 (body) => body . ser (version , bytes) , Self :: GIMBAL_MANAGER_STATUS (body) => body . ser (version , bytes) , Self :: PARAM_EXT_REQUEST_LIST (body) => body . ser (version , bytes) , Self :: ODOMETRY (body) => body . ser (version , bytes) , Self :: DEBUG_VECT (body) => body . ser (version , bytes) , Self :: DEBUG (body) => body . ser (version , bytes) , Self :: TRAJECTORY_REPRESENTATION_BEZIER (body) => body . ser (version , bytes) , Self :: REQUEST_EVENT (body) => body . ser (version , bytes) , Self :: CAN_FILTER_MODIFY (body) => body . ser (version , bytes) , Self :: HYGROMETER_SENSOR (body) => body . ser (version , bytes) , Self :: NAMED_VALUE_INT (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_MESSAGE_PACK (body) => body . ser (version , bytes) , Self :: CAMERA_TRIGGER (body) => body . ser (version , bytes) , Self :: LOG_DATA (body) => body . ser (version , bytes) , Self :: SCALED_PRESSURE3 (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_ARM_STATUS (body) => body . ser (version , bytes) , Self :: ATTITUDE_QUATERNION (body) => body . ser (version , bytes) , Self :: CHANGE_OPERATOR_CONTROL (body) => body . ser (version , bytes) , Self :: SETUP_SIGNING (body) => body . ser (version , bytes) , Self :: GIMBAL_DEVICE_INFORMATION (body) => body . ser (version , bytes) , Self :: WINCH_STATUS (body) => body . ser (version , bytes) , Self :: SIM_STATE (body) => body . ser (version , bytes) , Self :: GPS_RTK (body) => body . ser (version , bytes) , Self :: GPS2_RTK (body) => body . ser (version , bytes) , Self :: HIGH_LATENCY (body) => body . ser (version , bytes) , Self :: TERRAIN_REPORT (body) => body . ser (version , bytes) , Self :: HIL_STATE (body) => body . ser (version , bytes) , Self :: MEMORY_VECT (body) => body . ser (version , bytes) , Self :: MOUNT_ORIENTATION (body) => body . ser (version , bytes) , Self :: CAMERA_TRACKING_GEO_STATUS (body) => body . ser (version , bytes) , Self :: LOGGING_ACK (body) => body . ser (version , bytes) , Self :: UAVCAN_NODE_STATUS (body) => body . ser (version , bytes) , Self :: SCALED_PRESSURE2 (body) => body . ser (version , bytes) , Self :: VIDEO_STREAM_INFORMATION (body) => body . ser (version , bytes) , Self :: BATTERY_STATUS (body) => body . ser (version , bytes) , Self :: SCALED_IMU (body) => body . ser (version , bytes) , Self :: LOCAL_POSITION_NED_COV (body) => body . ser (version , bytes) , Self :: GENERATOR_STATUS (body) => body . ser (version , bytes) , Self :: CAN_FRAME (body) => body . ser (version , bytes) , Self :: TERRAIN_CHECK (body) => body . ser (version , bytes) , Self :: CAMERA_CAPTURE_STATUS (body) => body . ser (version , bytes) , Self :: UAVCAN_NODE_INFO (body) => body . ser (version , bytes) , Self :: RAW_PRESSURE (body) => body . ser (version , bytes) , Self :: POSITION_TARGET_GLOBAL_INT (body) => body . ser (version , bytes) , Self :: HEARTBEAT (body) => body . ser (version , bytes) , Self :: RADIO_STATUS (body) => body . ser (version , bytes) , Self :: PARAM_EXT_VALUE (body) => body . ser (version , bytes) , Self :: RC_CHANNELS_RAW (body) => body . ser (version , bytes) , Self :: ISBD_LINK_STATUS (body) => body . ser (version , bytes) , Self :: OPTICAL_FLOW_RAD (body) => body . ser (version , bytes) , Self :: PARAM_MAP_RC (body) => body . ser (version , bytes) , Self :: PARAM_REQUEST_READ (body) => body . ser (version , bytes) , Self :: RESPONSE_EVENT_ERROR (body) => body . ser (version , bytes) , Self :: LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET (body) => body . ser (version , bytes) , Self :: GLOBAL_VISION_POSITION_ESTIMATE (body) => body . ser (version , bytes) , Self :: FENCE_STATUS (body) => body . ser (version , bytes) , Self :: ONBOARD_COMPUTER_STATUS (body) => body . ser (version , bytes) , Self :: CURRENT_EVENT_SEQUENCE (body) => body . ser (version , bytes) , Self :: MISSION_REQUEST_INT (body) => body . ser (version , bytes) , Self :: MISSION_ITEM_INT (body) => body . ser (version , bytes) , Self :: VISION_POSITION_ESTIMATE (body) => body . ser (version , bytes) , Self :: PARAM_EXT_ACK (body) => body . ser (version , bytes) , Self :: SYSTEM_TIME (body) => body . ser (version , bytes) , Self :: LINK_NODE_STATUS (body) => body . ser (version , bytes) , Self :: COMMAND_CANCEL (body) => body . ser (version , bytes) , Self :: VICON_POSITION_ESTIMATE (body) => body . ser (version , bytes) , Self :: SERVO_OUTPUT_RAW (body) => body . ser (version , bytes) , Self :: TIMESYNC (body) => body . ser (version , bytes) , Self :: POWER_STATUS (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_SYSTEM_UPDATE (body) => body . ser (version , bytes) , Self :: RAW_RPM (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_LOCATION (body) => body . ser (version , bytes) , Self :: LANDING_TARGET (body) => body . ser (version , bytes) , Self :: GIMBAL_MANAGER_SET_ATTITUDE (body) => body . ser (version , bytes) , Self :: ESC_STATUS (body) => body . ser (version , bytes) , Self :: ORBIT_EXECUTION_STATUS (body) => body . ser (version , bytes) , Self :: SYS_STATUS (body) => body . ser (version , bytes) , Self :: LOG_REQUEST_DATA (body) => body . ser (version , bytes) , Self :: AUTH_KEY (body) => body . ser (version , bytes) , Self :: LOG_REQUEST_LIST (body) => body . ser (version , bytes) , Self :: GPS_INJECT_DATA (body) => body . ser (version , bytes) , Self :: MISSION_SET_CURRENT (body) => body . ser (version , bytes) , Self :: COMMAND_INT (body) => body . ser (version , bytes) , Self :: HIGH_LATENCY2 (body) => body . ser (version , bytes) , Self :: BUTTON_CHANGE (body) => body . ser (version , bytes) , Self :: CAMERA_SETTINGS (body) => body . ser (version , bytes) , Self :: DEBUG_FLOAT_ARRAY (body) => body . ser (version , bytes) , Self :: COMPONENT_METADATA (body) => body . ser (version , bytes) , Self :: MISSION_CLEAR_ALL (body) => body . ser (version , bytes) , Self :: COLLISION (body) => body . ser (version , bytes) , Self :: SUPPORTED_TUNES (body) => body . ser (version , bytes) , Self :: EVENT (body) => body . ser (version , bytes) , Self :: CANFD_FRAME (body) => body . ser (version , bytes) , Self :: GIMBAL_DEVICE_ATTITUDE_STATUS (body) => body . ser (version , bytes) , Self :: HOME_POSITION (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_SYSTEM (body) => body . ser (version , bytes) , Self :: GPS_RAW_INT (body) => body . ser (version , bytes) , Self :: PING (body) => body . ser (version , bytes) , Self :: HIL_CONTROLS (body) => body . ser (version , bytes) , Self :: HIL_RC_INPUTS_RAW (body) => body . ser (version , bytes) , Self :: STATUSTEXT (body) => body . ser (version , bytes) , Self :: PARAM_VALUE (body) => body . ser (version , bytes) , Self :: SET_POSITION_TARGET_LOCAL_NED (body) => body . ser (version , bytes) , Self :: MISSION_REQUEST (body) => body . ser (version , bytes) , Self :: TIME_ESTIMATE_TO_TARGET (body) => body . ser (version , bytes) , Self :: RAW_IMU (body) => body . ser (version , bytes) , Self :: DATA_TRANSMISSION_HANDSHAKE (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_OPERATOR_ID (body) => body . ser (version , bytes) , Self :: MISSION_WRITE_PARTIAL_LIST (body) => body . ser (version , bytes) , Self :: V2_EXTENSION (body) => body . ser (version , bytes) , Self :: CAMERA_FOV_STATUS (body) => body . ser (version , bytes) , Self :: MAG_CAL_REPORT (body) => body . ser (version , bytes) , Self :: SCALED_PRESSURE (body) => body . ser (version , bytes) , Self :: LOGGING_DATA (body) => body . ser (version , bytes) , Self :: ESC_INFO (body) => body . ser (version , bytes) , Self :: CELLULAR_STATUS (body) => body . ser (version , bytes) , Self :: RC_CHANNELS_SCALED (body) => body . ser (version , bytes) , Self :: MANUAL_CONTROL (body) => body . ser (version , bytes) , Self :: DATA_STREAM (body) => body . ser (version , bytes) , Self :: SET_HOME_POSITION (body) => body . ser (version , bytes) , Self :: GIMBAL_DEVICE_SET_ATTITUDE (body) => body . ser (version , bytes) , Self :: TUNNEL (body) => body . ser (version , bytes) , Self :: COMPONENT_INFORMATION (body) => body . ser (version , bytes) , Self :: SET_ACTUATOR_CONTROL_TARGET (body) => body . ser (version , bytes) , Self :: HIL_ACTUATOR_CONTROLS (body) => body . ser (version , bytes) , Self :: RESOURCE_REQUEST (body) => body . ser (version , bytes) , Self :: PARAM_SET (body) => body . ser (version , bytes) , Self :: CELLULAR_CONFIG (body) => body . ser (version , bytes) , Self :: ALTITUDE (body) => body . ser (version , bytes) , Self :: LOG_ENTRY (body) => body . ser (version , bytes) , Self :: SMART_BATTERY_INFO (body) => body . ser (version , bytes) , Self :: UTM_GLOBAL_POSITION (body) => body . ser (version , bytes) , Self :: PLAY_TUNE_V2 (body) => body . ser (version , bytes) , Self :: HIL_OPTICAL_FLOW (body) => body . ser (version , bytes) , Self :: REQUEST_DATA_STREAM (body) => body . ser (version , bytes) , } } fn extra_crc (id : u32) -> u8 { match id { LOCAL_POSITION_NED_DATA :: ID => LOCAL_POSITION_NED_DATA :: EXTRA_CRC , FOLLOW_TARGET_DATA :: ID => FOLLOW_TARGET_DATA :: EXTRA_CRC , OPTICAL_FLOW_DATA :: ID => OPTICAL_FLOW_DATA :: EXTRA_CRC , STORAGE_INFORMATION_DATA :: ID => STORAGE_INFORMATION_DATA :: EXTRA_CRC , SAFETY_ALLOWED_AREA_DATA :: ID => SAFETY_ALLOWED_AREA_DATA :: EXTRA_CRC , MANUAL_SETPOINT_DATA :: ID => MANUAL_SETPOINT_DATA :: EXTRA_CRC , AUTOPILOT_VERSION_DATA :: ID => AUTOPILOT_VERSION_DATA :: EXTRA_CRC , RC_CHANNELS_DATA :: ID => RC_CHANNELS_DATA :: EXTRA_CRC , ESTIMATOR_STATUS_DATA :: ID => ESTIMATOR_STATUS_DATA :: EXTRA_CRC , ADSB_VEHICLE_DATA :: ID => ADSB_VEHICLE_DATA :: EXTRA_CRC , TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: ID => TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: EXTRA_CRC , WHEEL_DISTANCE_DATA :: ID => WHEEL_DISTANCE_DATA :: EXTRA_CRC , NAMED_VALUE_FLOAT_DATA :: ID => NAMED_VALUE_FLOAT_DATA :: EXTRA_CRC , ACTUATOR_OUTPUT_STATUS_DATA :: ID => ACTUATOR_OUTPUT_STATUS_DATA :: EXTRA_CRC , OPEN_DRONE_ID_BASIC_ID_DATA :: ID => OPEN_DRONE_ID_BASIC_ID_DATA :: EXTRA_CRC , PARAM_EXT_REQUEST_READ_DATA :: ID => PARAM_EXT_REQUEST_READ_DATA :: EXTRA_CRC , OPEN_DRONE_ID_SELF_ID_DATA :: ID => OPEN_DRONE_ID_SELF_ID_DATA :: EXTRA_CRC , DISTANCE_SENSOR_DATA :: ID => DISTANCE_SENSOR_DATA :: EXTRA_CRC , PARAM_EXT_SET_DATA :: ID => PARAM_EXT_SET_DATA :: EXTRA_CRC , OPEN_DRONE_ID_AUTHENTICATION_DATA :: ID => OPEN_DRONE_ID_AUTHENTICATION_DATA :: EXTRA_CRC , MISSION_CURRENT_DATA :: ID => MISSION_CURRENT_DATA :: EXTRA_CRC , ATTITUDE_TARGET_DATA :: ID => ATTITUDE_TARGET_DATA :: EXTRA_CRC , GPS2_RAW_DATA :: ID => GPS2_RAW_DATA :: EXTRA_CRC , FLIGHT_INFORMATION_DATA :: ID => FLIGHT_INFORMATION_DATA :: EXTRA_CRC , MISSION_COUNT_DATA :: ID => MISSION_COUNT_DATA :: EXTRA_CRC , SAFETY_SET_ALLOWED_AREA_DATA :: ID => SAFETY_SET_ALLOWED_AREA_DATA :: EXTRA_CRC , CAMERA_TRACKING_IMAGE_STATUS_DATA :: ID => CAMERA_TRACKING_IMAGE_STATUS_DATA :: EXTRA_CRC , GIMBAL_MANAGER_SET_PITCHYAW_DATA :: ID => GIMBAL_MANAGER_SET_PITCHYAW_DATA :: EXTRA_CRC , ATTITUDE_DATA :: ID => ATTITUDE_DATA :: EXTRA_CRC , MISSION_REQUEST_PARTIAL_LIST_DATA :: ID => MISSION_REQUEST_PARTIAL_LIST_DATA :: EXTRA_CRC , POSITION_TARGET_LOCAL_NED_DATA :: ID => POSITION_TARGET_LOCAL_NED_DATA :: EXTRA_CRC , GPS_STATUS_DATA :: ID => GPS_STATUS_DATA :: EXTRA_CRC , SET_ATTITUDE_TARGET_DATA :: ID => SET_ATTITUDE_TARGET_DATA :: EXTRA_CRC , HIL_GPS_DATA :: ID => HIL_GPS_DATA :: EXTRA_CRC , LOG_ERASE_DATA :: ID => LOG_ERASE_DATA :: EXTRA_CRC , VISION_SPEED_ESTIMATE_DATA :: ID => VISION_SPEED_ESTIMATE_DATA :: EXTRA_CRC , HIL_STATE_QUATERNION_DATA :: ID => HIL_STATE_QUATERNION_DATA :: EXTRA_CRC , NAV_CONTROLLER_OUTPUT_DATA :: ID => NAV_CONTROLLER_OUTPUT_DATA :: EXTRA_CRC , RC_CHANNELS_OVERRIDE_DATA :: ID => RC_CHANNELS_OVERRIDE_DATA :: EXTRA_CRC , FILE_TRANSFER_PROTOCOL_DATA :: ID => FILE_TRANSFER_PROTOCOL_DATA :: EXTRA_CRC , EFI_STATUS_DATA :: ID => EFI_STATUS_DATA :: EXTRA_CRC , CAMERA_IMAGE_CAPTURED_DATA :: ID => CAMERA_IMAGE_CAPTURED_DATA :: EXTRA_CRC , ENCAPSULATED_DATA_DATA :: ID => ENCAPSULATED_DATA_DATA :: EXTRA_CRC , COMMAND_LONG_DATA :: ID => COMMAND_LONG_DATA :: EXTRA_CRC , MESSAGE_INTERVAL_DATA :: ID => MESSAGE_INTERVAL_DATA :: EXTRA_CRC , LOGGING_DATA_ACKED_DATA :: ID => LOGGING_DATA_ACKED_DATA :: EXTRA_CRC , VIDEO_STREAM_STATUS_DATA :: ID => VIDEO_STREAM_STATUS_DATA :: EXTRA_CRC , GIMBAL_MANAGER_INFORMATION_DATA :: ID => GIMBAL_MANAGER_INFORMATION_DATA :: EXTRA_CRC , WIFI_CONFIG_AP_DATA :: ID => WIFI_CONFIG_AP_DATA :: EXTRA_CRC , AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: ID => AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: EXTRA_CRC , SET_MODE_DATA :: ID => SET_MODE_DATA :: EXTRA_CRC , MISSION_ITEM_DATA :: ID => MISSION_ITEM_DATA :: EXTRA_CRC , PROTOCOL_VERSION_DATA :: ID => PROTOCOL_VERSION_DATA :: EXTRA_CRC , MISSION_ITEM_REACHED_DATA :: ID => MISSION_ITEM_REACHED_DATA :: EXTRA_CRC , MISSION_ACK_DATA :: ID => MISSION_ACK_DATA :: EXTRA_CRC , SET_GPS_GLOBAL_ORIGIN_DATA :: ID => SET_GPS_GLOBAL_ORIGIN_DATA :: EXTRA_CRC , GPS_GLOBAL_ORIGIN_DATA :: ID => GPS_GLOBAL_ORIGIN_DATA :: EXTRA_CRC , MISSION_REQUEST_LIST_DATA :: ID => MISSION_REQUEST_LIST_DATA :: EXTRA_CRC , HIL_SENSOR_DATA :: ID => HIL_SENSOR_DATA :: EXTRA_CRC , ATTITUDE_QUATERNION_COV_DATA :: ID => ATTITUDE_QUATERNION_COV_DATA :: EXTRA_CRC , SET_POSITION_TARGET_GLOBAL_INT_DATA :: ID => SET_POSITION_TARGET_GLOBAL_INT_DATA :: EXTRA_CRC , TERRAIN_REQUEST_DATA :: ID => TERRAIN_REQUEST_DATA :: EXTRA_CRC , TERRAIN_DATA_DATA :: ID => TERRAIN_DATA_DATA :: EXTRA_CRC , ATT_POS_MOCAP_DATA :: ID => ATT_POS_MOCAP_DATA :: EXTRA_CRC , CONTROL_SYSTEM_STATE_DATA :: ID => CONTROL_SYSTEM_STATE_DATA :: EXTRA_CRC , SCALED_IMU3_DATA :: ID => SCALED_IMU3_DATA :: EXTRA_CRC , WIND_COV_DATA :: ID => WIND_COV_DATA :: EXTRA_CRC , CAMERA_INFORMATION_DATA :: ID => CAMERA_INFORMATION_DATA :: EXTRA_CRC , GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: ID => GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: EXTRA_CRC , OBSTACLE_DISTANCE_DATA :: ID => OBSTACLE_DISTANCE_DATA :: EXTRA_CRC , SERIAL_CONTROL_DATA :: ID => SERIAL_CONTROL_DATA :: EXTRA_CRC , ACTUATOR_CONTROL_TARGET_DATA :: ID => ACTUATOR_CONTROL_TARGET_DATA :: EXTRA_CRC , GLOBAL_POSITION_INT_DATA :: ID => GLOBAL_POSITION_INT_DATA :: EXTRA_CRC , GPS_INPUT_DATA :: ID => GPS_INPUT_DATA :: EXTRA_CRC , VIBRATION_DATA :: ID => VIBRATION_DATA :: EXTRA_CRC , PARAM_REQUEST_LIST_DATA :: ID => PARAM_REQUEST_LIST_DATA :: EXTRA_CRC , EXTENDED_SYS_STATE_DATA :: ID => EXTENDED_SYS_STATE_DATA :: EXTRA_CRC , PLAY_TUNE_DATA :: ID => PLAY_TUNE_DATA :: EXTRA_CRC , VFR_HUD_DATA :: ID => VFR_HUD_DATA :: EXTRA_CRC , LOG_REQUEST_END_DATA :: ID => LOG_REQUEST_END_DATA :: EXTRA_CRC , HIGHRES_IMU_DATA :: ID => HIGHRES_IMU_DATA :: EXTRA_CRC , GLOBAL_POSITION_INT_COV_DATA :: ID => GLOBAL_POSITION_INT_COV_DATA :: EXTRA_CRC , AIS_VESSEL_DATA :: ID => AIS_VESSEL_DATA :: EXTRA_CRC , GPS_RTCM_DATA_DATA :: ID => GPS_RTCM_DATA_DATA :: EXTRA_CRC , COMMAND_ACK_DATA :: ID => COMMAND_ACK_DATA :: EXTRA_CRC , CHANGE_OPERATOR_CONTROL_ACK_DATA :: ID => CHANGE_OPERATOR_CONTROL_ACK_DATA :: EXTRA_CRC , SCALED_IMU2_DATA :: ID => SCALED_IMU2_DATA :: EXTRA_CRC , GIMBAL_MANAGER_STATUS_DATA :: ID => GIMBAL_MANAGER_STATUS_DATA :: EXTRA_CRC , PARAM_EXT_REQUEST_LIST_DATA :: ID => PARAM_EXT_REQUEST_LIST_DATA :: EXTRA_CRC , ODOMETRY_DATA :: ID => ODOMETRY_DATA :: EXTRA_CRC , DEBUG_VECT_DATA :: ID => DEBUG_VECT_DATA :: EXTRA_CRC , DEBUG_DATA :: ID => DEBUG_DATA :: EXTRA_CRC , TRAJECTORY_REPRESENTATION_BEZIER_DATA :: ID => TRAJECTORY_REPRESENTATION_BEZIER_DATA :: EXTRA_CRC , REQUEST_EVENT_DATA :: ID => REQUEST_EVENT_DATA :: EXTRA_CRC , CAN_FILTER_MODIFY_DATA :: ID => CAN_FILTER_MODIFY_DATA :: EXTRA_CRC , HYGROMETER_SENSOR_DATA :: ID => HYGROMETER_SENSOR_DATA :: EXTRA_CRC , NAMED_VALUE_INT_DATA :: ID => NAMED_VALUE_INT_DATA :: EXTRA_CRC , OPEN_DRONE_ID_MESSAGE_PACK_DATA :: ID => OPEN_DRONE_ID_MESSAGE_PACK_DATA :: EXTRA_CRC , CAMERA_TRIGGER_DATA :: ID => CAMERA_TRIGGER_DATA :: EXTRA_CRC , LOG_DATA_DATA :: ID => LOG_DATA_DATA :: EXTRA_CRC , SCALED_PRESSURE3_DATA :: ID => SCALED_PRESSURE3_DATA :: EXTRA_CRC , OPEN_DRONE_ID_ARM_STATUS_DATA :: ID => OPEN_DRONE_ID_ARM_STATUS_DATA :: EXTRA_CRC , ATTITUDE_QUATERNION_DATA :: ID => ATTITUDE_QUATERNION_DATA :: EXTRA_CRC , CHANGE_OPERATOR_CONTROL_DATA :: ID => CHANGE_OPERATOR_CONTROL_DATA :: EXTRA_CRC , SETUP_SIGNING_DATA :: ID => SETUP_SIGNING_DATA :: EXTRA_CRC , GIMBAL_DEVICE_INFORMATION_DATA :: ID => GIMBAL_DEVICE_INFORMATION_DATA :: EXTRA_CRC , WINCH_STATUS_DATA :: ID => WINCH_STATUS_DATA :: EXTRA_CRC , SIM_STATE_DATA :: ID => SIM_STATE_DATA :: EXTRA_CRC , GPS_RTK_DATA :: ID => GPS_RTK_DATA :: EXTRA_CRC , GPS2_RTK_DATA :: ID => GPS2_RTK_DATA :: EXTRA_CRC , HIGH_LATENCY_DATA :: ID => HIGH_LATENCY_DATA :: EXTRA_CRC , TERRAIN_REPORT_DATA :: ID => TERRAIN_REPORT_DATA :: EXTRA_CRC , HIL_STATE_DATA :: ID => HIL_STATE_DATA :: EXTRA_CRC , MEMORY_VECT_DATA :: ID => MEMORY_VECT_DATA :: EXTRA_CRC , MOUNT_ORIENTATION_DATA :: ID => MOUNT_ORIENTATION_DATA :: EXTRA_CRC , CAMERA_TRACKING_GEO_STATUS_DATA :: ID => CAMERA_TRACKING_GEO_STATUS_DATA :: EXTRA_CRC , LOGGING_ACK_DATA :: ID => LOGGING_ACK_DATA :: EXTRA_CRC , UAVCAN_NODE_STATUS_DATA :: ID => UAVCAN_NODE_STATUS_DATA :: EXTRA_CRC , SCALED_PRESSURE2_DATA :: ID => SCALED_PRESSURE2_DATA :: EXTRA_CRC , VIDEO_STREAM_INFORMATION_DATA :: ID => VIDEO_STREAM_INFORMATION_DATA :: EXTRA_CRC , BATTERY_STATUS_DATA :: ID => BATTERY_STATUS_DATA :: EXTRA_CRC , SCALED_IMU_DATA :: ID => SCALED_IMU_DATA :: EXTRA_CRC , LOCAL_POSITION_NED_COV_DATA :: ID => LOCAL_POSITION_NED_COV_DATA :: EXTRA_CRC , GENERATOR_STATUS_DATA :: ID => GENERATOR_STATUS_DATA :: EXTRA_CRC , CAN_FRAME_DATA :: ID => CAN_FRAME_DATA :: EXTRA_CRC , TERRAIN_CHECK_DATA :: ID => TERRAIN_CHECK_DATA :: EXTRA_CRC , CAMERA_CAPTURE_STATUS_DATA :: ID => CAMERA_CAPTURE_STATUS_DATA :: EXTRA_CRC , UAVCAN_NODE_INFO_DATA :: ID => UAVCAN_NODE_INFO_DATA :: EXTRA_CRC , RAW_PRESSURE_DATA :: ID => RAW_PRESSURE_DATA :: EXTRA_CRC , POSITION_TARGET_GLOBAL_INT_DATA :: ID => POSITION_TARGET_GLOBAL_INT_DATA :: EXTRA_CRC , HEARTBEAT_DATA :: ID => HEARTBEAT_DATA :: EXTRA_CRC , RADIO_STATUS_DATA :: ID => RADIO_STATUS_DATA :: EXTRA_CRC , PARAM_EXT_VALUE_DATA :: ID => PARAM_EXT_VALUE_DATA :: EXTRA_CRC , RC_CHANNELS_RAW_DATA :: ID => RC_CHANNELS_RAW_DATA :: EXTRA_CRC , ISBD_LINK_STATUS_DATA :: ID => ISBD_LINK_STATUS_DATA :: EXTRA_CRC , OPTICAL_FLOW_RAD_DATA :: ID => OPTICAL_FLOW_RAD_DATA :: EXTRA_CRC , PARAM_MAP_RC_DATA :: ID => PARAM_MAP_RC_DATA :: EXTRA_CRC , PARAM_REQUEST_READ_DATA :: ID => PARAM_REQUEST_READ_DATA :: EXTRA_CRC , RESPONSE_EVENT_ERROR_DATA :: ID => RESPONSE_EVENT_ERROR_DATA :: EXTRA_CRC , LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: ID => LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: EXTRA_CRC , GLOBAL_VISION_POSITION_ESTIMATE_DATA :: ID => GLOBAL_VISION_POSITION_ESTIMATE_DATA :: EXTRA_CRC , FENCE_STATUS_DATA :: ID => FENCE_STATUS_DATA :: EXTRA_CRC , ONBOARD_COMPUTER_STATUS_DATA :: ID => ONBOARD_COMPUTER_STATUS_DATA :: EXTRA_CRC , CURRENT_EVENT_SEQUENCE_DATA :: ID => CURRENT_EVENT_SEQUENCE_DATA :: EXTRA_CRC , MISSION_REQUEST_INT_DATA :: ID => MISSION_REQUEST_INT_DATA :: EXTRA_CRC , MISSION_ITEM_INT_DATA :: ID => MISSION_ITEM_INT_DATA :: EXTRA_CRC , VISION_POSITION_ESTIMATE_DATA :: ID => VISION_POSITION_ESTIMATE_DATA :: EXTRA_CRC , PARAM_EXT_ACK_DATA :: ID => PARAM_EXT_ACK_DATA :: EXTRA_CRC , SYSTEM_TIME_DATA :: ID => SYSTEM_TIME_DATA :: EXTRA_CRC , LINK_NODE_STATUS_DATA :: ID => LINK_NODE_STATUS_DATA :: EXTRA_CRC , COMMAND_CANCEL_DATA :: ID => COMMAND_CANCEL_DATA :: EXTRA_CRC , VICON_POSITION_ESTIMATE_DATA :: ID => VICON_POSITION_ESTIMATE_DATA :: EXTRA_CRC , SERVO_OUTPUT_RAW_DATA :: ID => SERVO_OUTPUT_RAW_DATA :: EXTRA_CRC , TIMESYNC_DATA :: ID => TIMESYNC_DATA :: EXTRA_CRC , POWER_STATUS_DATA :: ID => POWER_STATUS_DATA :: EXTRA_CRC , OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: ID => OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: EXTRA_CRC , RAW_RPM_DATA :: ID => RAW_RPM_DATA :: EXTRA_CRC , OPEN_DRONE_ID_LOCATION_DATA :: ID => OPEN_DRONE_ID_LOCATION_DATA :: EXTRA_CRC , LANDING_TARGET_DATA :: ID => LANDING_TARGET_DATA :: EXTRA_CRC , GIMBAL_MANAGER_SET_ATTITUDE_DATA :: ID => GIMBAL_MANAGER_SET_ATTITUDE_DATA :: EXTRA_CRC , ESC_STATUS_DATA :: ID => ESC_STATUS_DATA :: EXTRA_CRC , ORBIT_EXECUTION_STATUS_DATA :: ID => ORBIT_EXECUTION_STATUS_DATA :: EXTRA_CRC , SYS_STATUS_DATA :: ID => SYS_STATUS_DATA :: EXTRA_CRC , LOG_REQUEST_DATA_DATA :: ID => LOG_REQUEST_DATA_DATA :: EXTRA_CRC , AUTH_KEY_DATA :: ID => AUTH_KEY_DATA :: EXTRA_CRC , LOG_REQUEST_LIST_DATA :: ID => LOG_REQUEST_LIST_DATA :: EXTRA_CRC , GPS_INJECT_DATA_DATA :: ID => GPS_INJECT_DATA_DATA :: EXTRA_CRC , MISSION_SET_CURRENT_DATA :: ID => MISSION_SET_CURRENT_DATA :: EXTRA_CRC , COMMAND_INT_DATA :: ID => COMMAND_INT_DATA :: EXTRA_CRC , HIGH_LATENCY2_DATA :: ID => HIGH_LATENCY2_DATA :: EXTRA_CRC , BUTTON_CHANGE_DATA :: ID => BUTTON_CHANGE_DATA :: EXTRA_CRC , CAMERA_SETTINGS_DATA :: ID => CAMERA_SETTINGS_DATA :: EXTRA_CRC , DEBUG_FLOAT_ARRAY_DATA :: ID => DEBUG_FLOAT_ARRAY_DATA :: EXTRA_CRC , COMPONENT_METADATA_DATA :: ID => COMPONENT_METADATA_DATA :: EXTRA_CRC , MISSION_CLEAR_ALL_DATA :: ID => MISSION_CLEAR_ALL_DATA :: EXTRA_CRC , COLLISION_DATA :: ID => COLLISION_DATA :: EXTRA_CRC , SUPPORTED_TUNES_DATA :: ID => SUPPORTED_TUNES_DATA :: EXTRA_CRC , EVENT_DATA :: ID => EVENT_DATA :: EXTRA_CRC , CANFD_FRAME_DATA :: ID => CANFD_FRAME_DATA :: EXTRA_CRC , GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: ID => GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: EXTRA_CRC , HOME_POSITION_DATA :: ID => HOME_POSITION_DATA :: EXTRA_CRC , OPEN_DRONE_ID_SYSTEM_DATA :: ID => OPEN_DRONE_ID_SYSTEM_DATA :: EXTRA_CRC , GPS_RAW_INT_DATA :: ID => GPS_RAW_INT_DATA :: EXTRA_CRC , PING_DATA :: ID => PING_DATA :: EXTRA_CRC , HIL_CONTROLS_DATA :: ID => HIL_CONTROLS_DATA :: EXTRA_CRC , HIL_RC_INPUTS_RAW_DATA :: ID => HIL_RC_INPUTS_RAW_DATA :: EXTRA_CRC , STATUSTEXT_DATA :: ID => STATUSTEXT_DATA :: EXTRA_CRC , PARAM_VALUE_DATA :: ID => PARAM_VALUE_DATA :: EXTRA_CRC , SET_POSITION_TARGET_LOCAL_NED_DATA :: ID => SET_POSITION_TARGET_LOCAL_NED_DATA :: EXTRA_CRC , MISSION_REQUEST_DATA :: ID => MISSION_REQUEST_DATA :: EXTRA_CRC , TIME_ESTIMATE_TO_TARGET_DATA :: ID => TIME_ESTIMATE_TO_TARGET_DATA :: EXTRA_CRC , RAW_IMU_DATA :: ID => RAW_IMU_DATA :: EXTRA_CRC , DATA_TRANSMISSION_HANDSHAKE_DATA :: ID => DATA_TRANSMISSION_HANDSHAKE_DATA :: EXTRA_CRC , OPEN_DRONE_ID_OPERATOR_ID_DATA :: ID => OPEN_DRONE_ID_OPERATOR_ID_DATA :: EXTRA_CRC , MISSION_WRITE_PARTIAL_LIST_DATA :: ID => MISSION_WRITE_PARTIAL_LIST_DATA :: EXTRA_CRC , V2_EXTENSION_DATA :: ID => V2_EXTENSION_DATA :: EXTRA_CRC , CAMERA_FOV_STATUS_DATA :: ID => CAMERA_FOV_STATUS_DATA :: EXTRA_CRC , MAG_CAL_REPORT_DATA :: ID => MAG_CAL_REPORT_DATA :: EXTRA_CRC , SCALED_PRESSURE_DATA :: ID => SCALED_PRESSURE_DATA :: EXTRA_CRC , LOGGING_DATA_DATA :: ID => LOGGING_DATA_DATA :: EXTRA_CRC , ESC_INFO_DATA :: ID => ESC_INFO_DATA :: EXTRA_CRC , CELLULAR_STATUS_DATA :: ID => CELLULAR_STATUS_DATA :: EXTRA_CRC , RC_CHANNELS_SCALED_DATA :: ID => RC_CHANNELS_SCALED_DATA :: EXTRA_CRC , MANUAL_CONTROL_DATA :: ID => MANUAL_CONTROL_DATA :: EXTRA_CRC , DATA_STREAM_DATA :: ID => DATA_STREAM_DATA :: EXTRA_CRC , SET_HOME_POSITION_DATA :: ID => SET_HOME_POSITION_DATA :: EXTRA_CRC , GIMBAL_DEVICE_SET_ATTITUDE_DATA :: ID => GIMBAL_DEVICE_SET_ATTITUDE_DATA :: EXTRA_CRC , TUNNEL_DATA :: ID => TUNNEL_DATA :: EXTRA_CRC , COMPONENT_INFORMATION_DATA :: ID => COMPONENT_INFORMATION_DATA :: EXTRA_CRC , SET_ACTUATOR_CONTROL_TARGET_DATA :: ID => SET_ACTUATOR_CONTROL_TARGET_DATA :: EXTRA_CRC , HIL_ACTUATOR_CONTROLS_DATA :: ID => HIL_ACTUATOR_CONTROLS_DATA :: EXTRA_CRC , RESOURCE_REQUEST_DATA :: ID => RESOURCE_REQUEST_DATA :: EXTRA_CRC , PARAM_SET_DATA :: ID => PARAM_SET_DATA :: EXTRA_CRC , CELLULAR_CONFIG_DATA :: ID => CELLULAR_CONFIG_DATA :: EXTRA_CRC , ALTITUDE_DATA :: ID => ALTITUDE_DATA :: EXTRA_CRC , LOG_ENTRY_DATA :: ID => LOG_ENTRY_DATA :: EXTRA_CRC , SMART_BATTERY_INFO_DATA :: ID => SMART_BATTERY_INFO_DATA :: EXTRA_CRC , UTM_GLOBAL_POSITION_DATA :: ID => UTM_GLOBAL_POSITION_DATA :: EXTRA_CRC , PLAY_TUNE_V2_DATA :: ID => PLAY_TUNE_V2_DATA :: EXTRA_CRC , HIL_OPTICAL_FLOW_DATA :: ID => HIL_OPTICAL_FLOW_DATA :: EXTRA_CRC , REQUEST_DATA_STREAM_DATA :: ID => REQUEST_DATA_STREAM_DATA :: EXTRA_CRC , _ => { 0 } , } } }
      +
      # ! [doc = "This file was automatically generated, do not edit"] # [allow (unused_imports)] use num_derive :: FromPrimitive ; # [allow (unused_imports)] use num_traits :: FromPrimitive ; # [allow (unused_imports)] use num_derive :: ToPrimitive ; # [allow (unused_imports)] use num_traits :: ToPrimitive ; # [allow (unused_imports)] use bitflags :: bitflags ; use mavlink_core :: { MavlinkVersion , Message , MessageData , bytes :: Bytes , bytes_mut :: BytesMut } ; # [cfg (feature = "serde")] use serde :: { Serialize , Deserialize } ; # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavCmd { MAV_CMD_NAV_WAYPOINT = 16 , MAV_CMD_NAV_LOITER_UNLIM = 17 , MAV_CMD_NAV_LOITER_TURNS = 18 , MAV_CMD_NAV_LOITER_TIME = 19 , MAV_CMD_NAV_RETURN_TO_LAUNCH = 20 , MAV_CMD_NAV_LAND = 21 , MAV_CMD_NAV_TAKEOFF = 22 , MAV_CMD_NAV_LAND_LOCAL = 23 , MAV_CMD_NAV_TAKEOFF_LOCAL = 24 , MAV_CMD_NAV_FOLLOW = 25 , MAV_CMD_NAV_CONTINUE_AND_CHANGE_ALT = 30 , MAV_CMD_NAV_LOITER_TO_ALT = 31 , MAV_CMD_DO_FOLLOW = 32 , MAV_CMD_DO_FOLLOW_REPOSITION = 33 , MAV_CMD_DO_ORBIT = 34 , MAV_CMD_NAV_ROI = 80 , MAV_CMD_NAV_PATHPLANNING = 81 , MAV_CMD_NAV_SPLINE_WAYPOINT = 82 , MAV_CMD_NAV_VTOL_TAKEOFF = 84 , MAV_CMD_NAV_VTOL_LAND = 85 , MAV_CMD_NAV_GUIDED_ENABLE = 92 , MAV_CMD_NAV_DELAY = 93 , MAV_CMD_NAV_PAYLOAD_PLACE = 94 , MAV_CMD_NAV_LAST = 95 , MAV_CMD_CONDITION_DELAY = 112 , MAV_CMD_CONDITION_CHANGE_ALT = 113 , MAV_CMD_CONDITION_DISTANCE = 114 , MAV_CMD_CONDITION_YAW = 115 , MAV_CMD_CONDITION_LAST = 159 , MAV_CMD_DO_SET_MODE = 176 , MAV_CMD_DO_JUMP = 177 , MAV_CMD_DO_CHANGE_SPEED = 178 , MAV_CMD_DO_SET_HOME = 179 , MAV_CMD_DO_SET_PARAMETER = 180 , MAV_CMD_DO_SET_RELAY = 181 , MAV_CMD_DO_REPEAT_RELAY = 182 , MAV_CMD_DO_SET_SERVO = 183 , MAV_CMD_DO_REPEAT_SERVO = 184 , MAV_CMD_DO_FLIGHTTERMINATION = 185 , MAV_CMD_DO_CHANGE_ALTITUDE = 186 , MAV_CMD_DO_SET_ACTUATOR = 187 , MAV_CMD_DO_LAND_START = 189 , MAV_CMD_DO_RALLY_LAND = 190 , MAV_CMD_DO_GO_AROUND = 191 , MAV_CMD_DO_REPOSITION = 192 , MAV_CMD_DO_PAUSE_CONTINUE = 193 , MAV_CMD_DO_SET_REVERSE = 194 , MAV_CMD_DO_SET_ROI_LOCATION = 195 , MAV_CMD_DO_SET_ROI_WPNEXT_OFFSET = 196 , MAV_CMD_DO_SET_ROI_NONE = 197 , MAV_CMD_DO_SET_ROI_SYSID = 198 , MAV_CMD_DO_CONTROL_VIDEO = 200 , MAV_CMD_DO_SET_ROI = 201 , MAV_CMD_DO_DIGICAM_CONFIGURE = 202 , MAV_CMD_DO_DIGICAM_CONTROL = 203 , MAV_CMD_DO_MOUNT_CONFIGURE = 204 , MAV_CMD_DO_MOUNT_CONTROL = 205 , MAV_CMD_DO_SET_CAM_TRIGG_DIST = 206 , MAV_CMD_DO_FENCE_ENABLE = 207 , MAV_CMD_DO_PARACHUTE = 208 , MAV_CMD_DO_MOTOR_TEST = 209 , MAV_CMD_DO_INVERTED_FLIGHT = 210 , MAV_CMD_DO_GRIPPER = 211 , MAV_CMD_DO_AUTOTUNE_ENABLE = 212 , MAV_CMD_NAV_SET_YAW_SPEED = 213 , MAV_CMD_DO_SET_CAM_TRIGG_INTERVAL = 214 , MAV_CMD_DO_MOUNT_CONTROL_QUAT = 220 , MAV_CMD_DO_GUIDED_MASTER = 221 , MAV_CMD_DO_GUIDED_LIMITS = 222 , MAV_CMD_DO_ENGINE_CONTROL = 223 , MAV_CMD_DO_SET_MISSION_CURRENT = 224 , MAV_CMD_DO_LAST = 240 , MAV_CMD_PREFLIGHT_CALIBRATION = 241 , MAV_CMD_PREFLIGHT_SET_SENSOR_OFFSETS = 242 , MAV_CMD_PREFLIGHT_UAVCAN = 243 , MAV_CMD_PREFLIGHT_STORAGE = 245 , MAV_CMD_PREFLIGHT_REBOOT_SHUTDOWN = 246 , MAV_CMD_OVERRIDE_GOTO = 252 , MAV_CMD_OBLIQUE_SURVEY = 260 , MAV_CMD_MISSION_START = 300 , MAV_CMD_ACTUATOR_TEST = 310 , MAV_CMD_CONFIGURE_ACTUATOR = 311 , MAV_CMD_COMPONENT_ARM_DISARM = 400 , MAV_CMD_RUN_PREARM_CHECKS = 401 , MAV_CMD_ILLUMINATOR_ON_OFF = 405 , MAV_CMD_GET_HOME_POSITION = 410 , MAV_CMD_INJECT_FAILURE = 420 , MAV_CMD_START_RX_PAIR = 500 , MAV_CMD_GET_MESSAGE_INTERVAL = 510 , MAV_CMD_SET_MESSAGE_INTERVAL = 511 , MAV_CMD_REQUEST_MESSAGE = 512 , MAV_CMD_REQUEST_PROTOCOL_VERSION = 519 , MAV_CMD_REQUEST_AUTOPILOT_CAPABILITIES = 520 , MAV_CMD_REQUEST_CAMERA_INFORMATION = 521 , MAV_CMD_REQUEST_CAMERA_SETTINGS = 522 , MAV_CMD_REQUEST_STORAGE_INFORMATION = 525 , MAV_CMD_STORAGE_FORMAT = 526 , MAV_CMD_REQUEST_CAMERA_CAPTURE_STATUS = 527 , MAV_CMD_REQUEST_FLIGHT_INFORMATION = 528 , MAV_CMD_RESET_CAMERA_SETTINGS = 529 , MAV_CMD_SET_CAMERA_MODE = 530 , MAV_CMD_SET_CAMERA_ZOOM = 531 , MAV_CMD_SET_CAMERA_FOCUS = 532 , MAV_CMD_SET_STORAGE_USAGE = 533 , MAV_CMD_JUMP_TAG = 600 , MAV_CMD_DO_JUMP_TAG = 601 , MAV_CMD_DO_GIMBAL_MANAGER_PITCHYAW = 1000 , MAV_CMD_DO_GIMBAL_MANAGER_CONFIGURE = 1001 , MAV_CMD_IMAGE_START_CAPTURE = 2000 , MAV_CMD_IMAGE_STOP_CAPTURE = 2001 , MAV_CMD_REQUEST_CAMERA_IMAGE_CAPTURE = 2002 , MAV_CMD_DO_TRIGGER_CONTROL = 2003 , MAV_CMD_CAMERA_TRACK_POINT = 2004 , MAV_CMD_CAMERA_TRACK_RECTANGLE = 2005 , MAV_CMD_CAMERA_STOP_TRACKING = 2010 , MAV_CMD_VIDEO_START_CAPTURE = 2500 , MAV_CMD_VIDEO_STOP_CAPTURE = 2501 , MAV_CMD_VIDEO_START_STREAMING = 2502 , MAV_CMD_VIDEO_STOP_STREAMING = 2503 , MAV_CMD_REQUEST_VIDEO_STREAM_INFORMATION = 2504 , MAV_CMD_REQUEST_VIDEO_STREAM_STATUS = 2505 , MAV_CMD_LOGGING_START = 2510 , MAV_CMD_LOGGING_STOP = 2511 , MAV_CMD_AIRFRAME_CONFIGURATION = 2520 , MAV_CMD_CONTROL_HIGH_LATENCY = 2600 , MAV_CMD_PANORAMA_CREATE = 2800 , MAV_CMD_DO_VTOL_TRANSITION = 3000 , MAV_CMD_ARM_AUTHORIZATION_REQUEST = 3001 , MAV_CMD_SET_GUIDED_SUBMODE_STANDARD = 4000 , MAV_CMD_SET_GUIDED_SUBMODE_CIRCLE = 4001 , MAV_CMD_CONDITION_GATE = 4501 , MAV_CMD_NAV_FENCE_RETURN_POINT = 5000 , MAV_CMD_NAV_FENCE_POLYGON_VERTEX_INCLUSION = 5001 , MAV_CMD_NAV_FENCE_POLYGON_VERTEX_EXCLUSION = 5002 , MAV_CMD_NAV_FENCE_CIRCLE_INCLUSION = 5003 , MAV_CMD_NAV_FENCE_CIRCLE_EXCLUSION = 5004 , MAV_CMD_NAV_RALLY_POINT = 5100 , MAV_CMD_UAVCAN_GET_NODE_INFO = 5200 , MAV_CMD_DO_ADSB_OUT_IDENT = 10001 , MAV_CMD_PAYLOAD_PREPARE_DEPLOY = 30001 , MAV_CMD_PAYLOAD_CONTROL_DEPLOY = 30002 , MAV_CMD_FIXED_MAG_CAL_YAW = 42006 , MAV_CMD_DO_WINCH = 42600 , MAV_CMD_WAYPOINT_USER_1 = 31000 , MAV_CMD_WAYPOINT_USER_2 = 31001 , MAV_CMD_WAYPOINT_USER_3 = 31002 , MAV_CMD_WAYPOINT_USER_4 = 31003 , MAV_CMD_WAYPOINT_USER_5 = 31004 , MAV_CMD_SPATIAL_USER_1 = 31005 , MAV_CMD_SPATIAL_USER_2 = 31006 , MAV_CMD_SPATIAL_USER_3 = 31007 , MAV_CMD_SPATIAL_USER_4 = 31008 , MAV_CMD_SPATIAL_USER_5 = 31009 , MAV_CMD_USER_1 = 31010 , MAV_CMD_USER_2 = 31011 , MAV_CMD_USER_3 = 31012 , MAV_CMD_USER_4 = 31013 , MAV_CMD_USER_5 = 31014 , MAV_CMD_CAN_FORWARD = 32000 , } impl MavCmd { pub const DEFAULT : Self = Self :: MAV_CMD_NAV_WAYPOINT ; } impl Default for MavCmd { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum PrecisionLandMode { PRECISION_LAND_MODE_DISABLED = 0 , PRECISION_LAND_MODE_OPPORTUNISTIC = 1 , PRECISION_LAND_MODE_REQUIRED = 2 , } impl PrecisionLandMode { pub const DEFAULT : Self = Self :: PRECISION_LAND_MODE_DISABLED ; } impl Default for PrecisionLandMode { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavDistanceSensor { MAV_DISTANCE_SENSOR_LASER = 0 , MAV_DISTANCE_SENSOR_ULTRASOUND = 1 , MAV_DISTANCE_SENSOR_INFRARED = 2 , MAV_DISTANCE_SENSOR_RADAR = 3 , MAV_DISTANCE_SENSOR_UNKNOWN = 4 , } impl MavDistanceSensor { pub const DEFAULT : Self = Self :: MAV_DISTANCE_SENSOR_LASER ; } impl Default for MavDistanceSensor { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavComponent { MAV_COMP_ID_ALL = 0 , MAV_COMP_ID_AUTOPILOT1 = 1 , MAV_COMP_ID_USER1 = 25 , MAV_COMP_ID_USER2 = 26 , MAV_COMP_ID_USER3 = 27 , MAV_COMP_ID_USER4 = 28 , MAV_COMP_ID_USER5 = 29 , MAV_COMP_ID_USER6 = 30 , MAV_COMP_ID_USER7 = 31 , MAV_COMP_ID_USER8 = 32 , MAV_COMP_ID_USER9 = 33 , MAV_COMP_ID_USER10 = 34 , MAV_COMP_ID_USER11 = 35 , MAV_COMP_ID_USER12 = 36 , MAV_COMP_ID_USER13 = 37 , MAV_COMP_ID_USER14 = 38 , MAV_COMP_ID_USER15 = 39 , MAV_COMP_ID_USER16 = 40 , MAV_COMP_ID_USER17 = 41 , MAV_COMP_ID_USER18 = 42 , MAV_COMP_ID_USER19 = 43 , MAV_COMP_ID_USER20 = 44 , MAV_COMP_ID_USER21 = 45 , MAV_COMP_ID_USER22 = 46 , MAV_COMP_ID_USER23 = 47 , MAV_COMP_ID_USER24 = 48 , MAV_COMP_ID_USER25 = 49 , MAV_COMP_ID_USER26 = 50 , MAV_COMP_ID_USER27 = 51 , MAV_COMP_ID_USER28 = 52 , MAV_COMP_ID_USER29 = 53 , MAV_COMP_ID_USER30 = 54 , MAV_COMP_ID_USER31 = 55 , MAV_COMP_ID_USER32 = 56 , MAV_COMP_ID_USER33 = 57 , MAV_COMP_ID_USER34 = 58 , MAV_COMP_ID_USER35 = 59 , MAV_COMP_ID_USER36 = 60 , MAV_COMP_ID_USER37 = 61 , MAV_COMP_ID_USER38 = 62 , MAV_COMP_ID_USER39 = 63 , MAV_COMP_ID_USER40 = 64 , MAV_COMP_ID_USER41 = 65 , MAV_COMP_ID_USER42 = 66 , MAV_COMP_ID_USER43 = 67 , MAV_COMP_ID_TELEMETRY_RADIO = 68 , MAV_COMP_ID_USER45 = 69 , MAV_COMP_ID_USER46 = 70 , MAV_COMP_ID_USER47 = 71 , MAV_COMP_ID_USER48 = 72 , MAV_COMP_ID_USER49 = 73 , MAV_COMP_ID_USER50 = 74 , MAV_COMP_ID_USER51 = 75 , MAV_COMP_ID_USER52 = 76 , MAV_COMP_ID_USER53 = 77 , MAV_COMP_ID_USER54 = 78 , MAV_COMP_ID_USER55 = 79 , MAV_COMP_ID_USER56 = 80 , MAV_COMP_ID_USER57 = 81 , MAV_COMP_ID_USER58 = 82 , MAV_COMP_ID_USER59 = 83 , MAV_COMP_ID_USER60 = 84 , MAV_COMP_ID_USER61 = 85 , MAV_COMP_ID_USER62 = 86 , MAV_COMP_ID_USER63 = 87 , MAV_COMP_ID_USER64 = 88 , MAV_COMP_ID_USER65 = 89 , MAV_COMP_ID_USER66 = 90 , MAV_COMP_ID_USER67 = 91 , MAV_COMP_ID_USER68 = 92 , MAV_COMP_ID_USER69 = 93 , MAV_COMP_ID_USER70 = 94 , MAV_COMP_ID_USER71 = 95 , MAV_COMP_ID_USER72 = 96 , MAV_COMP_ID_USER73 = 97 , MAV_COMP_ID_USER74 = 98 , MAV_COMP_ID_USER75 = 99 , MAV_COMP_ID_CAMERA = 100 , MAV_COMP_ID_CAMERA2 = 101 , MAV_COMP_ID_CAMERA3 = 102 , MAV_COMP_ID_CAMERA4 = 103 , MAV_COMP_ID_CAMERA5 = 104 , MAV_COMP_ID_CAMERA6 = 105 , MAV_COMP_ID_SERVO1 = 140 , MAV_COMP_ID_SERVO2 = 141 , MAV_COMP_ID_SERVO3 = 142 , MAV_COMP_ID_SERVO4 = 143 , MAV_COMP_ID_SERVO5 = 144 , MAV_COMP_ID_SERVO6 = 145 , MAV_COMP_ID_SERVO7 = 146 , MAV_COMP_ID_SERVO8 = 147 , MAV_COMP_ID_SERVO9 = 148 , MAV_COMP_ID_SERVO10 = 149 , MAV_COMP_ID_SERVO11 = 150 , MAV_COMP_ID_SERVO12 = 151 , MAV_COMP_ID_SERVO13 = 152 , MAV_COMP_ID_SERVO14 = 153 , MAV_COMP_ID_GIMBAL = 154 , MAV_COMP_ID_LOG = 155 , MAV_COMP_ID_ADSB = 156 , MAV_COMP_ID_OSD = 157 , MAV_COMP_ID_PERIPHERAL = 158 , MAV_COMP_ID_QX1_GIMBAL = 159 , MAV_COMP_ID_FLARM = 160 , MAV_COMP_ID_PARACHUTE = 161 , MAV_COMP_ID_WINCH = 169 , MAV_COMP_ID_GIMBAL2 = 171 , MAV_COMP_ID_GIMBAL3 = 172 , MAV_COMP_ID_GIMBAL4 = 173 , MAV_COMP_ID_GIMBAL5 = 174 , MAV_COMP_ID_GIMBAL6 = 175 , MAV_COMP_ID_BATTERY = 180 , MAV_COMP_ID_BATTERY2 = 181 , MAV_COMP_ID_MAVCAN = 189 , MAV_COMP_ID_MISSIONPLANNER = 190 , MAV_COMP_ID_ONBOARD_COMPUTER = 191 , MAV_COMP_ID_ONBOARD_COMPUTER2 = 192 , MAV_COMP_ID_ONBOARD_COMPUTER3 = 193 , MAV_COMP_ID_ONBOARD_COMPUTER4 = 194 , MAV_COMP_ID_PATHPLANNER = 195 , MAV_COMP_ID_OBSTACLE_AVOIDANCE = 196 , MAV_COMP_ID_VISUAL_INERTIAL_ODOMETRY = 197 , MAV_COMP_ID_PAIRING_MANAGER = 198 , MAV_COMP_ID_IMU = 200 , MAV_COMP_ID_IMU_2 = 201 , MAV_COMP_ID_IMU_3 = 202 , MAV_COMP_ID_GPS = 220 , MAV_COMP_ID_GPS2 = 221 , MAV_COMP_ID_ODID_TXRX_1 = 236 , MAV_COMP_ID_ODID_TXRX_2 = 237 , MAV_COMP_ID_ODID_TXRX_3 = 238 , MAV_COMP_ID_UDP_BRIDGE = 240 , MAV_COMP_ID_UART_BRIDGE = 241 , MAV_COMP_ID_TUNNEL_NODE = 242 , MAV_COMP_ID_SYSTEM_CONTROL = 250 , } impl MavComponent { pub const DEFAULT : Self = Self :: MAV_COMP_ID_ALL ; } impl Default for MavComponent { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum CompMetadataType { COMP_METADATA_TYPE_GENERAL = 0 , COMP_METADATA_TYPE_PARAMETER = 1 , COMP_METADATA_TYPE_COMMANDS = 2 , COMP_METADATA_TYPE_PERIPHERALS = 3 , COMP_METADATA_TYPE_EVENTS = 4 , COMP_METADATA_TYPE_ACTUATORS = 5 , } impl CompMetadataType { pub const DEFAULT : Self = Self :: COMP_METADATA_TYPE_GENERAL ; } impl Default for CompMetadataType { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct AttitudeTargetTypemask : u8 { const ATTITUDE_TARGET_TYPEMASK_BODY_ROLL_RATE_IGNORE = 1 ; const ATTITUDE_TARGET_TYPEMASK_BODY_PITCH_RATE_IGNORE = 2 ; const ATTITUDE_TARGET_TYPEMASK_BODY_YAW_RATE_IGNORE = 4 ; const ATTITUDE_TARGET_TYPEMASK_THRUST_BODY_SET = 32 ; const ATTITUDE_TARGET_TYPEMASK_THROTTLE_IGNORE = 64 ; const ATTITUDE_TARGET_TYPEMASK_ATTITUDE_IGNORE = 128 ; } } impl AttitudeTargetTypemask { pub const DEFAULT : Self = Self :: ATTITUDE_TARGET_TYPEMASK_BODY_ROLL_RATE_IGNORE ; } impl Default for AttitudeTargetTypemask { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum FirmwareVersionType { FIRMWARE_VERSION_TYPE_DEV = 0 , FIRMWARE_VERSION_TYPE_ALPHA = 64 , FIRMWARE_VERSION_TYPE_BETA = 128 , FIRMWARE_VERSION_TYPE_RC = 192 , FIRMWARE_VERSION_TYPE_OFFICIAL = 255 , } impl FirmwareVersionType { pub const DEFAULT : Self = Self :: FIRMWARE_VERSION_TYPE_DEV ; } impl Default for FirmwareVersionType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidCategoryEu { MAV_ODID_CATEGORY_EU_UNDECLARED = 0 , MAV_ODID_CATEGORY_EU_OPEN = 1 , MAV_ODID_CATEGORY_EU_SPECIFIC = 2 , MAV_ODID_CATEGORY_EU_CERTIFIED = 3 , } impl MavOdidCategoryEu { pub const DEFAULT : Self = Self :: MAV_ODID_CATEGORY_EU_UNDECLARED ; } impl Default for MavOdidCategoryEu { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum CellularConfigResponse { CELLULAR_CONFIG_RESPONSE_ACCEPTED = 0 , CELLULAR_CONFIG_RESPONSE_APN_ERROR = 1 , CELLULAR_CONFIG_RESPONSE_PIN_ERROR = 2 , CELLULAR_CONFIG_RESPONSE_REJECTED = 3 , CELLULAR_CONFIG_BLOCKED_PUK_REQUIRED = 4 , } impl CellularConfigResponse { pub const DEFAULT : Self = Self :: CELLULAR_CONFIG_RESPONSE_ACCEPTED ; } impl Default for CellularConfigResponse { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum ParamAck { PARAM_ACK_ACCEPTED = 0 , PARAM_ACK_VALUE_UNSUPPORTED = 1 , PARAM_ACK_FAILED = 2 , PARAM_ACK_IN_PROGRESS = 3 , } impl ParamAck { pub const DEFAULT : Self = Self :: PARAM_ACK_ACCEPTED ; } impl Default for ParamAck { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum WifiConfigApResponse { WIFI_CONFIG_AP_RESPONSE_UNDEFINED = 0 , WIFI_CONFIG_AP_RESPONSE_ACCEPTED = 1 , WIFI_CONFIG_AP_RESPONSE_REJECTED = 2 , WIFI_CONFIG_AP_RESPONSE_MODE_ERROR = 3 , WIFI_CONFIG_AP_RESPONSE_SSID_ERROR = 4 , WIFI_CONFIG_AP_RESPONSE_PASSWORD_ERROR = 5 , } impl WifiConfigApResponse { pub const DEFAULT : Self = Self :: WIFI_CONFIG_AP_RESPONSE_UNDEFINED ; } impl Default for WifiConfigApResponse { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum ParachuteAction { PARACHUTE_DISABLE = 0 , PARACHUTE_ENABLE = 1 , PARACHUTE_RELEASE = 2 , } impl ParachuteAction { pub const DEFAULT : Self = Self :: PARACHUTE_DISABLE ; } impl Default for ParachuteAction { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavFrame { MAV_FRAME_GLOBAL = 0 , MAV_FRAME_LOCAL_NED = 1 , MAV_FRAME_MISSION = 2 , MAV_FRAME_GLOBAL_RELATIVE_ALT = 3 , MAV_FRAME_LOCAL_ENU = 4 , MAV_FRAME_GLOBAL_INT = 5 , MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6 , MAV_FRAME_LOCAL_OFFSET_NED = 7 , MAV_FRAME_BODY_NED = 8 , MAV_FRAME_BODY_OFFSET_NED = 9 , MAV_FRAME_GLOBAL_TERRAIN_ALT = 10 , MAV_FRAME_GLOBAL_TERRAIN_ALT_INT = 11 , MAV_FRAME_BODY_FRD = 12 , MAV_FRAME_RESERVED_13 = 13 , MAV_FRAME_RESERVED_14 = 14 , MAV_FRAME_RESERVED_15 = 15 , MAV_FRAME_RESERVED_16 = 16 , MAV_FRAME_RESERVED_17 = 17 , MAV_FRAME_RESERVED_18 = 18 , MAV_FRAME_RESERVED_19 = 19 , MAV_FRAME_LOCAL_FRD = 20 , MAV_FRAME_LOCAL_FLU = 21 , } impl MavFrame { pub const DEFAULT : Self = Self :: MAV_FRAME_GLOBAL ; } impl Default for MavFrame { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum CanFilterOp { CAN_FILTER_REPLACE = 0 , CAN_FILTER_ADD = 1 , CAN_FILTER_REMOVE = 2 , } impl CanFilterOp { pub const DEFAULT : Self = Self :: CAN_FILTER_REPLACE ; } impl Default for CanFilterOp { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum FenceMitigate { FENCE_MITIGATE_UNKNOWN = 0 , FENCE_MITIGATE_NONE = 1 , FENCE_MITIGATE_VEL_LIMIT = 2 , } impl FenceMitigate { pub const DEFAULT : Self = Self :: FENCE_MITIGATE_UNKNOWN ; } impl Default for FenceMitigate { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum AdsbAltitudeType { ADSB_ALTITUDE_TYPE_PRESSURE_QNH = 0 , ADSB_ALTITUDE_TYPE_GEOMETRIC = 1 , } impl AdsbAltitudeType { pub const DEFAULT : Self = Self :: ADSB_ALTITUDE_TYPE_PRESSURE_QNH ; } impl Default for AdsbAltitudeType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum ActuatorConfiguration { ACTUATOR_CONFIGURATION_NONE = 0 , ACTUATOR_CONFIGURATION_BEEP = 1 , ACTUATOR_CONFIGURATION_3D_MODE_ON = 2 , ACTUATOR_CONFIGURATION_3D_MODE_OFF = 3 , ACTUATOR_CONFIGURATION_SPIN_DIRECTION1 = 4 , ACTUATOR_CONFIGURATION_SPIN_DIRECTION2 = 5 , } impl ActuatorConfiguration { pub const DEFAULT : Self = Self :: ACTUATOR_CONFIGURATION_NONE ; } impl Default for ActuatorConfiguration { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum CameraTrackingMode { CAMERA_TRACKING_MODE_NONE = 0 , CAMERA_TRACKING_MODE_POINT = 1 , CAMERA_TRACKING_MODE_RECTANGLE = 2 , } impl CameraTrackingMode { pub const DEFAULT : Self = Self :: CAMERA_TRACKING_MODE_NONE ; } impl Default for CameraTrackingMode { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidIdType { MAV_ODID_ID_TYPE_NONE = 0 , MAV_ODID_ID_TYPE_SERIAL_NUMBER = 1 , MAV_ODID_ID_TYPE_CAA_REGISTRATION_ID = 2 , MAV_ODID_ID_TYPE_UTM_ASSIGNED_UUID = 3 , MAV_ODID_ID_TYPE_SPECIFIC_SESSION_ID = 4 , } impl MavOdidIdType { pub const DEFAULT : Self = Self :: MAV_ODID_ID_TYPE_NONE ; } impl Default for MavOdidIdType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum CameraZoomType { ZOOM_TYPE_STEP = 0 , ZOOM_TYPE_CONTINUOUS = 1 , ZOOM_TYPE_RANGE = 2 , ZOOM_TYPE_FOCAL_LENGTH = 3 , } impl CameraZoomType { pub const DEFAULT : Self = Self :: ZOOM_TYPE_STEP ; } impl Default for CameraZoomType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidArmStatus { MAV_ODID_ARM_STATUS_GOOD_TO_ARM = 0 , MAV_ODID_ARM_STATUS_PRE_ARM_FAIL_GENERIC = 1 , } impl MavOdidArmStatus { pub const DEFAULT : Self = Self :: MAV_ODID_ARM_STATUS_GOOD_TO_ARM ; } impl Default for MavOdidArmStatus { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum PreflightStorageParameterAction { PARAM_READ_PERSISTENT = 0 , PARAM_WRITE_PERSISTENT = 1 , PARAM_RESET_CONFIG_DEFAULT = 2 , PARAM_RESET_SENSOR_DEFAULT = 3 , PARAM_RESET_ALL_DEFAULT = 4 , } impl PreflightStorageParameterAction { pub const DEFAULT : Self = Self :: PARAM_READ_PERSISTENT ; } impl Default for PreflightStorageParameterAction { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum EscConnectionType { ESC_CONNECTION_TYPE_PPM = 0 , ESC_CONNECTION_TYPE_SERIAL = 1 , ESC_CONNECTION_TYPE_ONESHOT = 2 , ESC_CONNECTION_TYPE_I2C = 3 , ESC_CONNECTION_TYPE_CAN = 4 , ESC_CONNECTION_TYPE_DSHOT = 5 , } impl EscConnectionType { pub const DEFAULT : Self = Self :: ESC_CONNECTION_TYPE_PPM ; } impl Default for EscConnectionType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidOperatorLocationType { MAV_ODID_OPERATOR_LOCATION_TYPE_TAKEOFF = 0 , MAV_ODID_OPERATOR_LOCATION_TYPE_LIVE_GNSS = 1 , MAV_ODID_OPERATOR_LOCATION_TYPE_FIXED = 2 , } impl MavOdidOperatorLocationType { pub const DEFAULT : Self = Self :: MAV_ODID_OPERATOR_LOCATION_TYPE_TAKEOFF ; } impl Default for MavOdidOperatorLocationType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum SerialControlDev { SERIAL_CONTROL_DEV_TELEM1 = 0 , SERIAL_CONTROL_DEV_TELEM2 = 1 , SERIAL_CONTROL_DEV_GPS1 = 2 , SERIAL_CONTROL_DEV_GPS2 = 3 , SERIAL_CONTROL_DEV_SHELL = 10 , SERIAL_CONTROL_SERIAL0 = 100 , SERIAL_CONTROL_SERIAL1 = 101 , SERIAL_CONTROL_SERIAL2 = 102 , SERIAL_CONTROL_SERIAL3 = 103 , SERIAL_CONTROL_SERIAL4 = 104 , SERIAL_CONTROL_SERIAL5 = 105 , SERIAL_CONTROL_SERIAL6 = 106 , SERIAL_CONTROL_SERIAL7 = 107 , SERIAL_CONTROL_SERIAL8 = 108 , SERIAL_CONTROL_SERIAL9 = 109 , } impl SerialControlDev { pub const DEFAULT : Self = Self :: SERIAL_CONTROL_DEV_TELEM1 ; } impl Default for SerialControlDev { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavBatteryMode { MAV_BATTERY_MODE_UNKNOWN = 0 , MAV_BATTERY_MODE_AUTO_DISCHARGING = 1 , MAV_BATTERY_MODE_HOT_SWAP = 2 , } impl MavBatteryMode { pub const DEFAULT : Self = Self :: MAV_BATTERY_MODE_UNKNOWN ; } impl Default for MavBatteryMode { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum RcType { RC_TYPE_SPEKTRUM_DSM2 = 0 , RC_TYPE_SPEKTRUM_DSMX = 1 , } impl RcType { pub const DEFAULT : Self = Self :: RC_TYPE_SPEKTRUM_DSM2 ; } impl Default for RcType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavCollisionSrc { MAV_COLLISION_SRC_ADSB = 0 , MAV_COLLISION_SRC_MAVLINK_GPS_GLOBAL_INT = 1 , } impl MavCollisionSrc { pub const DEFAULT : Self = Self :: MAV_COLLISION_SRC_ADSB ; } impl Default for MavCollisionSrc { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavParamExtType { MAV_PARAM_EXT_TYPE_UINT8 = 1 , MAV_PARAM_EXT_TYPE_INT8 = 2 , MAV_PARAM_EXT_TYPE_UINT16 = 3 , MAV_PARAM_EXT_TYPE_INT16 = 4 , MAV_PARAM_EXT_TYPE_UINT32 = 5 , MAV_PARAM_EXT_TYPE_INT32 = 6 , MAV_PARAM_EXT_TYPE_UINT64 = 7 , MAV_PARAM_EXT_TYPE_INT64 = 8 , MAV_PARAM_EXT_TYPE_REAL32 = 9 , MAV_PARAM_EXT_TYPE_REAL64 = 10 , MAV_PARAM_EXT_TYPE_CUSTOM = 11 , } impl MavParamExtType { pub const DEFAULT : Self = Self :: MAV_PARAM_EXT_TYPE_UINT8 ; } impl Default for MavParamExtType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavParamType { MAV_PARAM_TYPE_UINT8 = 1 , MAV_PARAM_TYPE_INT8 = 2 , MAV_PARAM_TYPE_UINT16 = 3 , MAV_PARAM_TYPE_INT16 = 4 , MAV_PARAM_TYPE_UINT32 = 5 , MAV_PARAM_TYPE_INT32 = 6 , MAV_PARAM_TYPE_UINT64 = 7 , MAV_PARAM_TYPE_INT64 = 8 , MAV_PARAM_TYPE_REAL32 = 9 , MAV_PARAM_TYPE_REAL64 = 10 , } impl MavParamType { pub const DEFAULT : Self = Self :: MAV_PARAM_TYPE_UINT8 ; } impl Default for MavParamType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum GimbalManagerFlags { GIMBAL_MANAGER_FLAGS_RETRACT = 1 , GIMBAL_MANAGER_FLAGS_NEUTRAL = 2 , GIMBAL_MANAGER_FLAGS_ROLL_LOCK = 4 , GIMBAL_MANAGER_FLAGS_PITCH_LOCK = 8 , GIMBAL_MANAGER_FLAGS_YAW_LOCK = 16 , GIMBAL_MANAGER_FLAGS_YAW_IN_VEHICLE_FRAME = 32 , GIMBAL_MANAGER_FLAGS_YAW_IN_EARTH_FRAME = 64 , GIMBAL_MANAGER_FLAGS_ACCEPTS_YAW_IN_EARTH_FRAME = 128 , GIMBAL_MANAGER_FLAGS_RC_EXCLUSIVE = 256 , GIMBAL_MANAGER_FLAGS_RC_MIXED = 512 , } impl GimbalManagerFlags { pub const DEFAULT : Self = Self :: GIMBAL_MANAGER_FLAGS_RETRACT ; } impl Default for GimbalManagerFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavLandedState { MAV_LANDED_STATE_UNDEFINED = 0 , MAV_LANDED_STATE_ON_GROUND = 1 , MAV_LANDED_STATE_IN_AIR = 2 , MAV_LANDED_STATE_TAKEOFF = 3 , MAV_LANDED_STATE_LANDING = 4 , } impl MavLandedState { pub const DEFAULT : Self = Self :: MAV_LANDED_STATE_UNDEFINED ; } impl Default for MavLandedState { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavBatteryFunction { MAV_BATTERY_FUNCTION_UNKNOWN = 0 , MAV_BATTERY_FUNCTION_ALL = 1 , MAV_BATTERY_FUNCTION_PROPULSION = 2 , MAV_BATTERY_FUNCTION_AVIONICS = 3 , MAV_BATTERY_FUNCTION_PAYLOAD = 4 , } impl MavBatteryFunction { pub const DEFAULT : Self = Self :: MAV_BATTERY_FUNCTION_UNKNOWN ; } impl Default for MavBatteryFunction { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavMode { MAV_MODE_PREFLIGHT = 0 , MAV_MODE_STABILIZE_DISARMED = 80 , MAV_MODE_STABILIZE_ARMED = 208 , MAV_MODE_MANUAL_DISARMED = 64 , MAV_MODE_MANUAL_ARMED = 192 , MAV_MODE_GUIDED_DISARMED = 88 , MAV_MODE_GUIDED_ARMED = 216 , MAV_MODE_AUTO_DISARMED = 92 , MAV_MODE_AUTO_ARMED = 220 , MAV_MODE_TEST_DISARMED = 66 , MAV_MODE_TEST_ARMED = 194 , } impl MavMode { pub const DEFAULT : Self = Self :: MAV_MODE_PREFLIGHT ; } impl Default for MavMode { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidTimeAcc { MAV_ODID_TIME_ACC_UNKNOWN = 0 , MAV_ODID_TIME_ACC_0_1_SECOND = 1 , MAV_ODID_TIME_ACC_0_2_SECOND = 2 , MAV_ODID_TIME_ACC_0_3_SECOND = 3 , MAV_ODID_TIME_ACC_0_4_SECOND = 4 , MAV_ODID_TIME_ACC_0_5_SECOND = 5 , MAV_ODID_TIME_ACC_0_6_SECOND = 6 , MAV_ODID_TIME_ACC_0_7_SECOND = 7 , MAV_ODID_TIME_ACC_0_8_SECOND = 8 , MAV_ODID_TIME_ACC_0_9_SECOND = 9 , MAV_ODID_TIME_ACC_1_0_SECOND = 10 , MAV_ODID_TIME_ACC_1_1_SECOND = 11 , MAV_ODID_TIME_ACC_1_2_SECOND = 12 , MAV_ODID_TIME_ACC_1_3_SECOND = 13 , MAV_ODID_TIME_ACC_1_4_SECOND = 14 , MAV_ODID_TIME_ACC_1_5_SECOND = 15 , } impl MavOdidTimeAcc { pub const DEFAULT : Self = Self :: MAV_ODID_TIME_ACC_UNKNOWN ; } impl Default for MavOdidTimeAcc { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MavEventCurrentSequenceFlags : u8 { const MAV_EVENT_CURRENT_SEQUENCE_FLAGS_RESET = 1 ; } } impl MavEventCurrentSequenceFlags { pub const DEFAULT : Self = Self :: MAV_EVENT_CURRENT_SEQUENCE_FLAGS_RESET ; } impl Default for MavEventCurrentSequenceFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidClassEu { MAV_ODID_CLASS_EU_UNDECLARED = 0 , MAV_ODID_CLASS_EU_CLASS_0 = 1 , MAV_ODID_CLASS_EU_CLASS_1 = 2 , MAV_ODID_CLASS_EU_CLASS_2 = 3 , MAV_ODID_CLASS_EU_CLASS_3 = 4 , MAV_ODID_CLASS_EU_CLASS_4 = 5 , MAV_ODID_CLASS_EU_CLASS_5 = 6 , MAV_ODID_CLASS_EU_CLASS_6 = 7 , } impl MavOdidClassEu { pub const DEFAULT : Self = Self :: MAV_ODID_CLASS_EU_UNDECLARED ; } impl Default for MavOdidClassEu { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavRoi { MAV_ROI_NONE = 0 , MAV_ROI_WPNEXT = 1 , MAV_ROI_WPINDEX = 2 , MAV_ROI_LOCATION = 3 , MAV_ROI_TARGET = 4 , } impl MavRoi { pub const DEFAULT : Self = Self :: MAV_ROI_NONE ; } impl Default for MavRoi { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidStatus { MAV_ODID_STATUS_UNDECLARED = 0 , MAV_ODID_STATUS_GROUND = 1 , MAV_ODID_STATUS_AIRBORNE = 2 , MAV_ODID_STATUS_EMERGENCY = 3 , MAV_ODID_STATUS_REMOTE_ID_SYSTEM_FAILURE = 4 , } impl MavOdidStatus { pub const DEFAULT : Self = Self :: MAV_ODID_STATUS_UNDECLARED ; } impl Default for MavOdidStatus { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum AisNavStatus { UNDER_WAY = 0 , AIS_NAV_ANCHORED = 1 , AIS_NAV_UN_COMMANDED = 2 , AIS_NAV_RESTRICTED_MANOEUVERABILITY = 3 , AIS_NAV_DRAUGHT_CONSTRAINED = 4 , AIS_NAV_MOORED = 5 , AIS_NAV_AGROUND = 6 , AIS_NAV_FISHING = 7 , AIS_NAV_SAILING = 8 , AIS_NAV_RESERVED_HSC = 9 , AIS_NAV_RESERVED_WIG = 10 , AIS_NAV_RESERVED_1 = 11 , AIS_NAV_RESERVED_2 = 12 , AIS_NAV_RESERVED_3 = 13 , AIS_NAV_AIS_SART = 14 , AIS_NAV_UNKNOWN = 15 , } impl AisNavStatus { pub const DEFAULT : Self = Self :: UNDER_WAY ; } impl Default for AisNavStatus { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum FailureType { FAILURE_TYPE_OK = 0 , FAILURE_TYPE_OFF = 1 , FAILURE_TYPE_STUCK = 2 , FAILURE_TYPE_GARBAGE = 3 , FAILURE_TYPE_WRONG = 4 , FAILURE_TYPE_SLOW = 5 , FAILURE_TYPE_DELAYED = 6 , FAILURE_TYPE_INTERMITTENT = 7 , } impl FailureType { pub const DEFAULT : Self = Self :: FAILURE_TYPE_OK ; } impl Default for FailureType { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PositionTargetTypemask : u16 { const POSITION_TARGET_TYPEMASK_X_IGNORE = 1 ; const POSITION_TARGET_TYPEMASK_Y_IGNORE = 2 ; const POSITION_TARGET_TYPEMASK_Z_IGNORE = 4 ; const POSITION_TARGET_TYPEMASK_VX_IGNORE = 8 ; const POSITION_TARGET_TYPEMASK_VY_IGNORE = 16 ; const POSITION_TARGET_TYPEMASK_VZ_IGNORE = 32 ; const POSITION_TARGET_TYPEMASK_AX_IGNORE = 64 ; const POSITION_TARGET_TYPEMASK_AY_IGNORE = 128 ; const POSITION_TARGET_TYPEMASK_AZ_IGNORE = 256 ; const POSITION_TARGET_TYPEMASK_FORCE_SET = 512 ; const POSITION_TARGET_TYPEMASK_YAW_IGNORE = 1024 ; const POSITION_TARGET_TYPEMASK_YAW_RATE_IGNORE = 2048 ; } } impl PositionTargetTypemask { pub const DEFAULT : Self = Self :: POSITION_TARGET_TYPEMASK_X_IGNORE ; } impl Default for PositionTargetTypemask { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MotorTestThrottleType { MOTOR_TEST_THROTTLE_PERCENT = 0 , MOTOR_TEST_THROTTLE_PWM = 1 , MOTOR_TEST_THROTTLE_PILOT = 2 , MOTOR_TEST_COMPASS_CAL = 3 , } impl MotorTestThrottleType { pub const DEFAULT : Self = Self :: MOTOR_TEST_THROTTLE_PERCENT ; } impl Default for MotorTestThrottleType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavCmdAck { MAV_CMD_ACK_OK = 0 , MAV_CMD_ACK_ERR_FAIL = 1 , MAV_CMD_ACK_ERR_ACCESS_DENIED = 2 , MAV_CMD_ACK_ERR_NOT_SUPPORTED = 3 , MAV_CMD_ACK_ERR_COORDINATE_FRAME_NOT_SUPPORTED = 4 , MAV_CMD_ACK_ERR_COORDINATES_OUT_OF_RANGE = 5 , MAV_CMD_ACK_ERR_X_LAT_OUT_OF_RANGE = 6 , MAV_CMD_ACK_ERR_Y_LON_OUT_OF_RANGE = 7 , MAV_CMD_ACK_ERR_Z_ALT_OUT_OF_RANGE = 8 , } impl MavCmdAck { pub const DEFAULT : Self = Self :: MAV_CMD_ACK_OK ; } impl Default for MavCmdAck { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HlFailureFlag : u16 { const HL_FAILURE_FLAG_GPS = 1 ; const HL_FAILURE_FLAG_DIFFERENTIAL_PRESSURE = 2 ; const HL_FAILURE_FLAG_ABSOLUTE_PRESSURE = 4 ; const HL_FAILURE_FLAG_3D_ACCEL = 8 ; const HL_FAILURE_FLAG_3D_GYRO = 16 ; const HL_FAILURE_FLAG_3D_MAG = 32 ; const HL_FAILURE_FLAG_TERRAIN = 64 ; const HL_FAILURE_FLAG_BATTERY = 128 ; const HL_FAILURE_FLAG_RC_RECEIVER = 256 ; const HL_FAILURE_FLAG_OFFBOARD_LINK = 512 ; const HL_FAILURE_FLAG_ENGINE = 1024 ; const HL_FAILURE_FLAG_GEOFENCE = 2048 ; const HL_FAILURE_FLAG_ESTIMATOR = 4096 ; const HL_FAILURE_FLAG_MISSION = 8192 ; } } impl HlFailureFlag { pub const DEFAULT : Self = Self :: HL_FAILURE_FLAG_GPS ; } impl Default for HlFailureFlag { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavCollisionThreatLevel { MAV_COLLISION_THREAT_LEVEL_NONE = 0 , MAV_COLLISION_THREAT_LEVEL_LOW = 1 , MAV_COLLISION_THREAT_LEVEL_HIGH = 2 , } impl MavCollisionThreatLevel { pub const DEFAULT : Self = Self :: MAV_COLLISION_THREAT_LEVEL_NONE ; } impl Default for MavCollisionThreatLevel { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidHorAcc { MAV_ODID_HOR_ACC_UNKNOWN = 0 , MAV_ODID_HOR_ACC_10NM = 1 , MAV_ODID_HOR_ACC_4NM = 2 , MAV_ODID_HOR_ACC_2NM = 3 , MAV_ODID_HOR_ACC_1NM = 4 , MAV_ODID_HOR_ACC_0_5NM = 5 , MAV_ODID_HOR_ACC_0_3NM = 6 , MAV_ODID_HOR_ACC_0_1NM = 7 , MAV_ODID_HOR_ACC_0_05NM = 8 , MAV_ODID_HOR_ACC_30_METER = 9 , MAV_ODID_HOR_ACC_10_METER = 10 , MAV_ODID_HOR_ACC_3_METER = 11 , MAV_ODID_HOR_ACC_1_METER = 12 , } impl MavOdidHorAcc { pub const DEFAULT : Self = Self :: MAV_ODID_HOR_ACC_UNKNOWN ; } impl Default for MavOdidHorAcc { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavGoto { MAV_GOTO_DO_HOLD = 0 , MAV_GOTO_DO_CONTINUE = 1 , MAV_GOTO_HOLD_AT_CURRENT_POSITION = 2 , MAV_GOTO_HOLD_AT_SPECIFIED_POSITION = 3 , } impl MavGoto { pub const DEFAULT : Self = Self :: MAV_GOTO_DO_HOLD ; } impl Default for MavGoto { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavType { MAV_TYPE_GENERIC = 0 , MAV_TYPE_FIXED_WING = 1 , MAV_TYPE_QUADROTOR = 2 , MAV_TYPE_COAXIAL = 3 , MAV_TYPE_HELICOPTER = 4 , MAV_TYPE_ANTENNA_TRACKER = 5 , MAV_TYPE_GCS = 6 , MAV_TYPE_AIRSHIP = 7 , MAV_TYPE_FREE_BALLOON = 8 , MAV_TYPE_ROCKET = 9 , MAV_TYPE_GROUND_ROVER = 10 , MAV_TYPE_SURFACE_BOAT = 11 , MAV_TYPE_SUBMARINE = 12 , MAV_TYPE_HEXAROTOR = 13 , MAV_TYPE_OCTOROTOR = 14 , MAV_TYPE_TRICOPTER = 15 , MAV_TYPE_FLAPPING_WING = 16 , MAV_TYPE_KITE = 17 , MAV_TYPE_ONBOARD_CONTROLLER = 18 , MAV_TYPE_VTOL_TAILSITTER_DUOROTOR = 19 , MAV_TYPE_VTOL_TAILSITTER_QUADROTOR = 20 , MAV_TYPE_VTOL_TILTROTOR = 21 , MAV_TYPE_VTOL_FIXEDROTOR = 22 , MAV_TYPE_VTOL_TAILSITTER = 23 , MAV_TYPE_VTOL_TILTWING = 24 , MAV_TYPE_VTOL_RESERVED5 = 25 , MAV_TYPE_GIMBAL = 26 , MAV_TYPE_ADSB = 27 , MAV_TYPE_PARAFOIL = 28 , MAV_TYPE_DODECAROTOR = 29 , MAV_TYPE_CAMERA = 30 , MAV_TYPE_CHARGING_STATION = 31 , MAV_TYPE_FLARM = 32 , MAV_TYPE_SERVO = 33 , MAV_TYPE_ODID = 34 , MAV_TYPE_DECAROTOR = 35 , MAV_TYPE_BATTERY = 36 , MAV_TYPE_PARACHUTE = 37 , MAV_TYPE_LOG = 38 , MAV_TYPE_OSD = 39 , MAV_TYPE_IMU = 40 , MAV_TYPE_GPS = 41 , MAV_TYPE_WINCH = 42 , } impl MavType { pub const DEFAULT : Self = Self :: MAV_TYPE_GENERIC ; } impl Default for MavType { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HighresImuUpdatedFlags : u16 { const HIGHRES_IMU_UPDATED_NONE = 0 ; const HIGHRES_IMU_UPDATED_XACC = 1 ; const HIGHRES_IMU_UPDATED_YACC = 2 ; const HIGHRES_IMU_UPDATED_ZACC = 4 ; const HIGHRES_IMU_UPDATED_XGYRO = 8 ; const HIGHRES_IMU_UPDATED_YGYRO = 16 ; const HIGHRES_IMU_UPDATED_ZGYRO = 32 ; const HIGHRES_IMU_UPDATED_XMAG = 64 ; const HIGHRES_IMU_UPDATED_YMAG = 128 ; const HIGHRES_IMU_UPDATED_ZMAG = 256 ; const HIGHRES_IMU_UPDATED_ABS_PRESSURE = 512 ; const HIGHRES_IMU_UPDATED_DIFF_PRESSURE = 1024 ; const HIGHRES_IMU_UPDATED_PRESSURE_ALT = 2048 ; const HIGHRES_IMU_UPDATED_TEMPERATURE = 4096 ; const HIGHRES_IMU_UPDATED_ALL = 65535 ; } } impl HighresImuUpdatedFlags { pub const DEFAULT : Self = Self :: HIGHRES_IMU_UPDATED_NONE ; } impl Default for HighresImuUpdatedFlags { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct AdsbFlags : u16 { const ADSB_FLAGS_VALID_COORDS = 1 ; const ADSB_FLAGS_VALID_ALTITUDE = 2 ; const ADSB_FLAGS_VALID_HEADING = 4 ; const ADSB_FLAGS_VALID_VELOCITY = 8 ; const ADSB_FLAGS_VALID_CALLSIGN = 16 ; const ADSB_FLAGS_VALID_SQUAWK = 32 ; const ADSB_FLAGS_SIMULATED = 64 ; const ADSB_FLAGS_VERTICAL_VELOCITY_VALID = 128 ; const ADSB_FLAGS_BARO_VALID = 256 ; const ADSB_FLAGS_SOURCE_UAT = 32768 ; } } impl AdsbFlags { pub const DEFAULT : Self = Self :: ADSB_FLAGS_VALID_COORDS ; } impl Default for AdsbFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum CellularStatusFlag { CELLULAR_STATUS_FLAG_UNKNOWN = 0 , CELLULAR_STATUS_FLAG_FAILED = 1 , CELLULAR_STATUS_FLAG_INITIALIZING = 2 , CELLULAR_STATUS_FLAG_LOCKED = 3 , CELLULAR_STATUS_FLAG_DISABLED = 4 , CELLULAR_STATUS_FLAG_DISABLING = 5 , CELLULAR_STATUS_FLAG_ENABLING = 6 , CELLULAR_STATUS_FLAG_ENABLED = 7 , CELLULAR_STATUS_FLAG_SEARCHING = 8 , CELLULAR_STATUS_FLAG_REGISTERED = 9 , CELLULAR_STATUS_FLAG_DISCONNECTING = 10 , CELLULAR_STATUS_FLAG_CONNECTING = 11 , CELLULAR_STATUS_FLAG_CONNECTED = 12 , } impl CellularStatusFlag { pub const DEFAULT : Self = Self :: CELLULAR_STATUS_FLAG_UNKNOWN ; } impl Default for CellularStatusFlag { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavSysStatusSensorExtended { MAV_SYS_STATUS_RECOVERY_SYSTEM = 1 , } impl MavSysStatusSensorExtended { pub const DEFAULT : Self = Self :: MAV_SYS_STATUS_RECOVERY_SYSTEM ; } impl Default for MavSysStatusSensorExtended { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum GripperActions { GRIPPER_ACTION_RELEASE = 0 , GRIPPER_ACTION_GRAB = 1 , } impl GripperActions { pub const DEFAULT : Self = Self :: GRIPPER_ACTION_RELEASE ; } impl Default for GripperActions { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavBatteryFault { MAV_BATTERY_FAULT_DEEP_DISCHARGE = 1 , MAV_BATTERY_FAULT_SPIKES = 2 , MAV_BATTERY_FAULT_CELL_FAIL = 4 , MAV_BATTERY_FAULT_OVER_CURRENT = 8 , MAV_BATTERY_FAULT_OVER_TEMPERATURE = 16 , MAV_BATTERY_FAULT_UNDER_TEMPERATURE = 32 , MAV_BATTERY_FAULT_INCOMPATIBLE_VOLTAGE = 64 , MAV_BATTERY_FAULT_INCOMPATIBLE_FIRMWARE = 128 , BATTERY_FAULT_INCOMPATIBLE_CELLS_CONFIGURATION = 256 , } impl MavBatteryFault { pub const DEFAULT : Self = Self :: MAV_BATTERY_FAULT_DEEP_DISCHARGE ; } impl Default for MavBatteryFault { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavSensorOrientation { MAV_SENSOR_ROTATION_NONE = 0 , MAV_SENSOR_ROTATION_YAW_45 = 1 , MAV_SENSOR_ROTATION_YAW_90 = 2 , MAV_SENSOR_ROTATION_YAW_135 = 3 , MAV_SENSOR_ROTATION_YAW_180 = 4 , MAV_SENSOR_ROTATION_YAW_225 = 5 , MAV_SENSOR_ROTATION_YAW_270 = 6 , MAV_SENSOR_ROTATION_YAW_315 = 7 , MAV_SENSOR_ROTATION_ROLL_180 = 8 , MAV_SENSOR_ROTATION_ROLL_180_YAW_45 = 9 , MAV_SENSOR_ROTATION_ROLL_180_YAW_90 = 10 , MAV_SENSOR_ROTATION_ROLL_180_YAW_135 = 11 , MAV_SENSOR_ROTATION_PITCH_180 = 12 , MAV_SENSOR_ROTATION_ROLL_180_YAW_225 = 13 , MAV_SENSOR_ROTATION_ROLL_180_YAW_270 = 14 , MAV_SENSOR_ROTATION_ROLL_180_YAW_315 = 15 , MAV_SENSOR_ROTATION_ROLL_90 = 16 , MAV_SENSOR_ROTATION_ROLL_90_YAW_45 = 17 , MAV_SENSOR_ROTATION_ROLL_90_YAW_90 = 18 , MAV_SENSOR_ROTATION_ROLL_90_YAW_135 = 19 , MAV_SENSOR_ROTATION_ROLL_270 = 20 , MAV_SENSOR_ROTATION_ROLL_270_YAW_45 = 21 , MAV_SENSOR_ROTATION_ROLL_270_YAW_90 = 22 , MAV_SENSOR_ROTATION_ROLL_270_YAW_135 = 23 , MAV_SENSOR_ROTATION_PITCH_90 = 24 , MAV_SENSOR_ROTATION_PITCH_270 = 25 , MAV_SENSOR_ROTATION_PITCH_180_YAW_90 = 26 , MAV_SENSOR_ROTATION_PITCH_180_YAW_270 = 27 , MAV_SENSOR_ROTATION_ROLL_90_PITCH_90 = 28 , MAV_SENSOR_ROTATION_ROLL_180_PITCH_90 = 29 , MAV_SENSOR_ROTATION_ROLL_270_PITCH_90 = 30 , MAV_SENSOR_ROTATION_ROLL_90_PITCH_180 = 31 , MAV_SENSOR_ROTATION_ROLL_270_PITCH_180 = 32 , MAV_SENSOR_ROTATION_ROLL_90_PITCH_270 = 33 , MAV_SENSOR_ROTATION_ROLL_180_PITCH_270 = 34 , MAV_SENSOR_ROTATION_ROLL_270_PITCH_270 = 35 , MAV_SENSOR_ROTATION_ROLL_90_PITCH_180_YAW_90 = 36 , MAV_SENSOR_ROTATION_ROLL_90_YAW_270 = 37 , MAV_SENSOR_ROTATION_ROLL_90_PITCH_68_YAW_293 = 38 , MAV_SENSOR_ROTATION_PITCH_315 = 39 , MAV_SENSOR_ROTATION_ROLL_90_PITCH_315 = 40 , MAV_SENSOR_ROTATION_CUSTOM = 100 , } impl MavSensorOrientation { pub const DEFAULT : Self = Self :: MAV_SENSOR_ROTATION_NONE ; } impl Default for MavSensorOrientation { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavEstimatorType { MAV_ESTIMATOR_TYPE_UNKNOWN = 0 , MAV_ESTIMATOR_TYPE_NAIVE = 1 , MAV_ESTIMATOR_TYPE_VISION = 2 , MAV_ESTIMATOR_TYPE_VIO = 3 , MAV_ESTIMATOR_TYPE_GPS = 4 , MAV_ESTIMATOR_TYPE_GPS_INS = 5 , MAV_ESTIMATOR_TYPE_MOCAP = 6 , MAV_ESTIMATOR_TYPE_LIDAR = 7 , MAV_ESTIMATOR_TYPE_AUTOPILOT = 8 , } impl MavEstimatorType { pub const DEFAULT : Self = Self :: MAV_ESTIMATOR_TYPE_UNKNOWN ; } impl Default for MavEstimatorType { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GimbalDeviceErrorFlags : u32 { const GIMBAL_DEVICE_ERROR_FLAGS_AT_ROLL_LIMIT = 1 ; const GIMBAL_DEVICE_ERROR_FLAGS_AT_PITCH_LIMIT = 2 ; const GIMBAL_DEVICE_ERROR_FLAGS_AT_YAW_LIMIT = 4 ; const GIMBAL_DEVICE_ERROR_FLAGS_ENCODER_ERROR = 8 ; const GIMBAL_DEVICE_ERROR_FLAGS_POWER_ERROR = 16 ; const GIMBAL_DEVICE_ERROR_FLAGS_MOTOR_ERROR = 32 ; const GIMBAL_DEVICE_ERROR_FLAGS_SOFTWARE_ERROR = 64 ; const GIMBAL_DEVICE_ERROR_FLAGS_COMMS_ERROR = 128 ; const GIMBAL_DEVICE_ERROR_FLAGS_CALIBRATION_RUNNING = 256 ; const GIMBAL_DEVICE_ERROR_FLAGS_NO_MANAGER = 512 ; } } impl GimbalDeviceErrorFlags { pub const DEFAULT : Self = Self :: GIMBAL_DEVICE_ERROR_FLAGS_AT_ROLL_LIMIT ; } impl Default for GimbalDeviceErrorFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavModeFlagDecodePosition { MAV_MODE_FLAG_DECODE_POSITION_SAFETY = 128 , MAV_MODE_FLAG_DECODE_POSITION_MANUAL = 64 , MAV_MODE_FLAG_DECODE_POSITION_HIL = 32 , MAV_MODE_FLAG_DECODE_POSITION_STABILIZE = 16 , MAV_MODE_FLAG_DECODE_POSITION_GUIDED = 8 , MAV_MODE_FLAG_DECODE_POSITION_AUTO = 4 , MAV_MODE_FLAG_DECODE_POSITION_TEST = 2 , MAV_MODE_FLAG_DECODE_POSITION_CUSTOM_MODE = 1 , } impl MavModeFlagDecodePosition { pub const DEFAULT : Self = Self :: MAV_MODE_FLAG_DECODE_POSITION_SAFETY ; } impl Default for MavModeFlagDecodePosition { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum StorageType { STORAGE_TYPE_UNKNOWN = 0 , STORAGE_TYPE_USB_STICK = 1 , STORAGE_TYPE_SD = 2 , STORAGE_TYPE_MICROSD = 3 , STORAGE_TYPE_CF = 4 , STORAGE_TYPE_CFE = 5 , STORAGE_TYPE_XQD = 6 , STORAGE_TYPE_HD = 7 , STORAGE_TYPE_OTHER = 254 , } impl StorageType { pub const DEFAULT : Self = Self :: STORAGE_TYPE_UNKNOWN ; } impl Default for StorageType { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct UtmDataAvailFlags : u8 { const UTM_DATA_AVAIL_FLAGS_TIME_VALID = 1 ; const UTM_DATA_AVAIL_FLAGS_UAS_ID_AVAILABLE = 2 ; const UTM_DATA_AVAIL_FLAGS_POSITION_AVAILABLE = 4 ; const UTM_DATA_AVAIL_FLAGS_ALTITUDE_AVAILABLE = 8 ; const UTM_DATA_AVAIL_FLAGS_RELATIVE_ALTITUDE_AVAILABLE = 16 ; const UTM_DATA_AVAIL_FLAGS_HORIZONTAL_VELO_AVAILABLE = 32 ; const UTM_DATA_AVAIL_FLAGS_VERTICAL_VELO_AVAILABLE = 64 ; const UTM_DATA_AVAIL_FLAGS_NEXT_WAYPOINT_AVAILABLE = 128 ; } } impl UtmDataAvailFlags { pub const DEFAULT : Self = Self :: UTM_DATA_AVAIL_FLAGS_TIME_VALID ; } impl Default for UtmDataAvailFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum CameraTrackingTargetData { CAMERA_TRACKING_TARGET_DATA_NONE = 0 , CAMERA_TRACKING_TARGET_DATA_EMBEDDED = 1 , CAMERA_TRACKING_TARGET_DATA_RENDERED = 2 , CAMERA_TRACKING_TARGET_DATA_IN_STATUS = 4 , } impl CameraTrackingTargetData { pub const DEFAULT : Self = Self :: CAMERA_TRACKING_TARGET_DATA_NONE ; } impl Default for CameraTrackingTargetData { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum OrbitYawBehaviour { ORBIT_YAW_BEHAVIOUR_HOLD_FRONT_TO_CIRCLE_CENTER = 0 , ORBIT_YAW_BEHAVIOUR_HOLD_INITIAL_HEADING = 1 , ORBIT_YAW_BEHAVIOUR_UNCONTROLLED = 2 , ORBIT_YAW_BEHAVIOUR_HOLD_FRONT_TANGENT_TO_CIRCLE = 3 , ORBIT_YAW_BEHAVIOUR_RC_CONTROLLED = 4 , } impl OrbitYawBehaviour { pub const DEFAULT : Self = Self :: ORBIT_YAW_BEHAVIOUR_HOLD_FRONT_TO_CIRCLE_CENTER ; } impl Default for OrbitYawBehaviour { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum FailureUnit { FAILURE_UNIT_SENSOR_GYRO = 0 , FAILURE_UNIT_SENSOR_ACCEL = 1 , FAILURE_UNIT_SENSOR_MAG = 2 , FAILURE_UNIT_SENSOR_BARO = 3 , FAILURE_UNIT_SENSOR_GPS = 4 , FAILURE_UNIT_SENSOR_OPTICAL_FLOW = 5 , FAILURE_UNIT_SENSOR_VIO = 6 , FAILURE_UNIT_SENSOR_DISTANCE_SENSOR = 7 , FAILURE_UNIT_SENSOR_AIRSPEED = 8 , FAILURE_UNIT_SYSTEM_BATTERY = 100 , FAILURE_UNIT_SYSTEM_MOTOR = 101 , FAILURE_UNIT_SYSTEM_SERVO = 102 , FAILURE_UNIT_SYSTEM_AVOIDANCE = 103 , FAILURE_UNIT_SYSTEM_RC_SIGNAL = 104 , FAILURE_UNIT_SYSTEM_MAVLINK_SIGNAL = 105 , } impl FailureUnit { pub const DEFAULT : Self = Self :: FAILURE_UNIT_SENSOR_GYRO ; } impl Default for FailureUnit { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavFtpErr { MAV_FTP_ERR_NONE = 0 , MAV_FTP_ERR_FAIL = 1 , MAV_FTP_ERR_FAILERRNO = 2 , MAV_FTP_ERR_INVALIDDATASIZE = 3 , MAV_FTP_ERR_INVALIDSESSION = 4 , MAV_FTP_ERR_NOSESSIONSAVAILABLE = 5 , MAV_FTP_ERR_EOF = 6 , MAV_FTP_ERR_UNKNOWNCOMMAND = 7 , MAV_FTP_ERR_FILEEXISTS = 8 , MAV_FTP_ERR_FILEPROTECTED = 9 , MAV_FTP_ERR_FILENOTFOUND = 10 , } impl MavFtpErr { pub const DEFAULT : Self = Self :: MAV_FTP_ERR_NONE ; } impl Default for MavFtpErr { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidUaType { MAV_ODID_UA_TYPE_NONE = 0 , MAV_ODID_UA_TYPE_AEROPLANE = 1 , MAV_ODID_UA_TYPE_HELICOPTER_OR_MULTIROTOR = 2 , MAV_ODID_UA_TYPE_GYROPLANE = 3 , MAV_ODID_UA_TYPE_HYBRID_LIFT = 4 , MAV_ODID_UA_TYPE_ORNITHOPTER = 5 , MAV_ODID_UA_TYPE_GLIDER = 6 , MAV_ODID_UA_TYPE_KITE = 7 , MAV_ODID_UA_TYPE_FREE_BALLOON = 8 , MAV_ODID_UA_TYPE_CAPTIVE_BALLOON = 9 , MAV_ODID_UA_TYPE_AIRSHIP = 10 , MAV_ODID_UA_TYPE_FREE_FALL_PARACHUTE = 11 , MAV_ODID_UA_TYPE_ROCKET = 12 , MAV_ODID_UA_TYPE_TETHERED_POWERED_AIRCRAFT = 13 , MAV_ODID_UA_TYPE_GROUND_OBSTACLE = 14 , MAV_ODID_UA_TYPE_OTHER = 15 , } impl MavOdidUaType { pub const DEFAULT : Self = Self :: MAV_ODID_UA_TYPE_NONE ; } impl Default for MavOdidUaType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavVtolState { MAV_VTOL_STATE_UNDEFINED = 0 , MAV_VTOL_STATE_TRANSITION_TO_FW = 1 , MAV_VTOL_STATE_TRANSITION_TO_MC = 2 , MAV_VTOL_STATE_MC = 3 , MAV_VTOL_STATE_FW = 4 , } impl MavVtolState { pub const DEFAULT : Self = Self :: MAV_VTOL_STATE_UNDEFINED ; } impl Default for MavVtolState { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MavProtocolCapability : u64 { const MAV_PROTOCOL_CAPABILITY_MISSION_FLOAT = 1 ; const MAV_PROTOCOL_CAPABILITY_PARAM_FLOAT = 2 ; const MAV_PROTOCOL_CAPABILITY_MISSION_INT = 4 ; const MAV_PROTOCOL_CAPABILITY_COMMAND_INT = 8 ; const MAV_PROTOCOL_CAPABILITY_PARAM_ENCODE_BYTEWISE = 16 ; const MAV_PROTOCOL_CAPABILITY_FTP = 32 ; const MAV_PROTOCOL_CAPABILITY_SET_ATTITUDE_TARGET = 64 ; const MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_LOCAL_NED = 128 ; const MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_GLOBAL_INT = 256 ; const MAV_PROTOCOL_CAPABILITY_TERRAIN = 512 ; const MAV_PROTOCOL_CAPABILITY_SET_ACTUATOR_TARGET = 1024 ; const MAV_PROTOCOL_CAPABILITY_FLIGHT_TERMINATION = 2048 ; const MAV_PROTOCOL_CAPABILITY_COMPASS_CALIBRATION = 4096 ; const MAV_PROTOCOL_CAPABILITY_MAVLINK2 = 8192 ; const MAV_PROTOCOL_CAPABILITY_MISSION_FENCE = 16384 ; const MAV_PROTOCOL_CAPABILITY_MISSION_RALLY = 32768 ; const MAV_PROTOCOL_CAPABILITY_RESERVED2 = 65536 ; const MAV_PROTOCOL_CAPABILITY_PARAM_ENCODE_C_CAST = 131072 ; } } impl MavProtocolCapability { pub const DEFAULT : Self = Self :: MAV_PROTOCOL_CAPABILITY_MISSION_FLOAT ; } impl Default for MavProtocolCapability { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MavPowerStatus : u16 { const MAV_POWER_STATUS_BRICK_VALID = 1 ; const MAV_POWER_STATUS_SERVO_VALID = 2 ; const MAV_POWER_STATUS_USB_CONNECTED = 4 ; const MAV_POWER_STATUS_PERIPH_OVERCURRENT = 8 ; const MAV_POWER_STATUS_PERIPH_HIPOWER_OVERCURRENT = 16 ; const MAV_POWER_STATUS_CHANGED = 32 ; } } impl MavPowerStatus { pub const DEFAULT : Self = Self :: MAV_POWER_STATUS_BRICK_VALID ; } impl Default for MavPowerStatus { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum GpsFixType { GPS_FIX_TYPE_NO_GPS = 0 , GPS_FIX_TYPE_NO_FIX = 1 , GPS_FIX_TYPE_2D_FIX = 2 , GPS_FIX_TYPE_3D_FIX = 3 , GPS_FIX_TYPE_DGPS = 4 , GPS_FIX_TYPE_RTK_FLOAT = 5 , GPS_FIX_TYPE_RTK_FIXED = 6 , GPS_FIX_TYPE_STATIC = 7 , GPS_FIX_TYPE_PPP = 8 , } impl GpsFixType { pub const DEFAULT : Self = Self :: GPS_FIX_TYPE_NO_GPS ; } impl Default for GpsFixType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavEventErrorReason { MAV_EVENT_ERROR_REASON_UNAVAILABLE = 0 , } impl MavEventErrorReason { pub const DEFAULT : Self = Self :: MAV_EVENT_ERROR_REASON_UNAVAILABLE ; } impl Default for MavEventErrorReason { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavResult { MAV_RESULT_ACCEPTED = 0 , MAV_RESULT_TEMPORARILY_REJECTED = 1 , MAV_RESULT_DENIED = 2 , MAV_RESULT_UNSUPPORTED = 3 , MAV_RESULT_FAILED = 4 , MAV_RESULT_IN_PROGRESS = 5 , MAV_RESULT_CANCELLED = 6 , } impl MavResult { pub const DEFAULT : Self = Self :: MAV_RESULT_ACCEPTED ; } impl Default for MavResult { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GpsInputIgnoreFlags : u16 { const GPS_INPUT_IGNORE_FLAG_ALT = 1 ; const GPS_INPUT_IGNORE_FLAG_HDOP = 2 ; const GPS_INPUT_IGNORE_FLAG_VDOP = 4 ; const GPS_INPUT_IGNORE_FLAG_VEL_HORIZ = 8 ; const GPS_INPUT_IGNORE_FLAG_VEL_VERT = 16 ; const GPS_INPUT_IGNORE_FLAG_SPEED_ACCURACY = 32 ; const GPS_INPUT_IGNORE_FLAG_HORIZONTAL_ACCURACY = 64 ; const GPS_INPUT_IGNORE_FLAG_VERTICAL_ACCURACY = 128 ; } } impl GpsInputIgnoreFlags { pub const DEFAULT : Self = Self :: GPS_INPUT_IGNORE_FLAG_ALT ; } impl Default for GpsInputIgnoreFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidDescType { MAV_ODID_DESC_TYPE_TEXT = 0 , MAV_ODID_DESC_TYPE_EMERGENCY = 1 , MAV_ODID_DESC_TYPE_EXTENDED_STATUS = 2 , } impl MavOdidDescType { pub const DEFAULT : Self = Self :: MAV_ODID_DESC_TYPE_TEXT ; } impl Default for MavOdidDescType { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MavSysStatusSensor : u32 { const MAV_SYS_STATUS_SENSOR_3D_GYRO = 1 ; const MAV_SYS_STATUS_SENSOR_3D_ACCEL = 2 ; const MAV_SYS_STATUS_SENSOR_3D_MAG = 4 ; const MAV_SYS_STATUS_SENSOR_ABSOLUTE_PRESSURE = 8 ; const MAV_SYS_STATUS_SENSOR_DIFFERENTIAL_PRESSURE = 16 ; const MAV_SYS_STATUS_SENSOR_GPS = 32 ; const MAV_SYS_STATUS_SENSOR_OPTICAL_FLOW = 64 ; const MAV_SYS_STATUS_SENSOR_VISION_POSITION = 128 ; const MAV_SYS_STATUS_SENSOR_LASER_POSITION = 256 ; const MAV_SYS_STATUS_SENSOR_EXTERNAL_GROUND_TRUTH = 512 ; const MAV_SYS_STATUS_SENSOR_ANGULAR_RATE_CONTROL = 1024 ; const MAV_SYS_STATUS_SENSOR_ATTITUDE_STABILIZATION = 2048 ; const MAV_SYS_STATUS_SENSOR_YAW_POSITION = 4096 ; const MAV_SYS_STATUS_SENSOR_Z_ALTITUDE_CONTROL = 8192 ; const MAV_SYS_STATUS_SENSOR_XY_POSITION_CONTROL = 16384 ; const MAV_SYS_STATUS_SENSOR_MOTOR_OUTPUTS = 32768 ; const MAV_SYS_STATUS_SENSOR_RC_RECEIVER = 65536 ; const MAV_SYS_STATUS_SENSOR_3D_GYRO2 = 131072 ; const MAV_SYS_STATUS_SENSOR_3D_ACCEL2 = 262144 ; const MAV_SYS_STATUS_SENSOR_3D_MAG2 = 524288 ; const MAV_SYS_STATUS_GEOFENCE = 1048576 ; const MAV_SYS_STATUS_AHRS = 2097152 ; const MAV_SYS_STATUS_TERRAIN = 4194304 ; const MAV_SYS_STATUS_REVERSE_MOTOR = 8388608 ; const MAV_SYS_STATUS_LOGGING = 16777216 ; const MAV_SYS_STATUS_SENSOR_BATTERY = 33554432 ; const MAV_SYS_STATUS_SENSOR_PROXIMITY = 67108864 ; const MAV_SYS_STATUS_SENSOR_SATCOM = 134217728 ; const MAV_SYS_STATUS_PREARM_CHECK = 268435456 ; const MAV_SYS_STATUS_OBSTACLE_AVOIDANCE = 536870912 ; const MAV_SYS_STATUS_SENSOR_PROPULSION = 1073741824 ; const MAV_SYS_STATUS_EXTENSION_USED = 2147483648 ; } } impl MavSysStatusSensor { pub const DEFAULT : Self = Self :: MAV_SYS_STATUS_SENSOR_3D_GYRO ; } impl Default for MavSysStatusSensor { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidOperatorIdType { MAV_ODID_OPERATOR_ID_TYPE_CAA = 0 , } impl MavOdidOperatorIdType { pub const DEFAULT : Self = Self :: MAV_ODID_OPERATOR_ID_TYPE_CAA ; } impl Default for MavOdidOperatorIdType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavCollisionAction { MAV_COLLISION_ACTION_NONE = 0 , MAV_COLLISION_ACTION_REPORT = 1 , MAV_COLLISION_ACTION_ASCEND_OR_DESCEND = 2 , MAV_COLLISION_ACTION_MOVE_HORIZONTALLY = 3 , MAV_COLLISION_ACTION_MOVE_PERPENDICULAR = 4 , MAV_COLLISION_ACTION_RTL = 5 , MAV_COLLISION_ACTION_HOVER = 6 , } impl MavCollisionAction { pub const DEFAULT : Self = Self :: MAV_COLLISION_ACTION_NONE ; } impl Default for MavCollisionAction { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MavWinchStatusFlag : u32 { const MAV_WINCH_STATUS_HEALTHY = 1 ; const MAV_WINCH_STATUS_FULLY_RETRACTED = 2 ; const MAV_WINCH_STATUS_MOVING = 4 ; const MAV_WINCH_STATUS_CLUTCH_ENGAGED = 8 ; const MAV_WINCH_STATUS_LOCKED = 16 ; const MAV_WINCH_STATUS_DROPPING = 32 ; const MAV_WINCH_STATUS_ARRESTING = 64 ; const MAV_WINCH_STATUS_GROUND_SENSE = 128 ; const MAV_WINCH_STATUS_RETRACTING = 256 ; const MAV_WINCH_STATUS_REDELIVER = 512 ; const MAV_WINCH_STATUS_ABANDON_LINE = 1024 ; const MAV_WINCH_STATUS_LOCKING = 2048 ; const MAV_WINCH_STATUS_LOAD_LINE = 4096 ; const MAV_WINCH_STATUS_LOAD_PAYLOAD = 8192 ; } } impl MavWinchStatusFlag { pub const DEFAULT : Self = Self :: MAV_WINCH_STATUS_HEALTHY ; } impl Default for MavWinchStatusFlag { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MavGeneratorStatusFlag : u64 { const MAV_GENERATOR_STATUS_FLAG_OFF = 1 ; const MAV_GENERATOR_STATUS_FLAG_READY = 2 ; const MAV_GENERATOR_STATUS_FLAG_GENERATING = 4 ; const MAV_GENERATOR_STATUS_FLAG_CHARGING = 8 ; const MAV_GENERATOR_STATUS_FLAG_REDUCED_POWER = 16 ; const MAV_GENERATOR_STATUS_FLAG_MAXPOWER = 32 ; const MAV_GENERATOR_STATUS_FLAG_OVERTEMP_WARNING = 64 ; const MAV_GENERATOR_STATUS_FLAG_OVERTEMP_FAULT = 128 ; const MAV_GENERATOR_STATUS_FLAG_ELECTRONICS_OVERTEMP_WARNING = 256 ; const MAV_GENERATOR_STATUS_FLAG_ELECTRONICS_OVERTEMP_FAULT = 512 ; const MAV_GENERATOR_STATUS_FLAG_ELECTRONICS_FAULT = 1024 ; const MAV_GENERATOR_STATUS_FLAG_POWERSOURCE_FAULT = 2048 ; const MAV_GENERATOR_STATUS_FLAG_COMMUNICATION_WARNING = 4096 ; const MAV_GENERATOR_STATUS_FLAG_COOLING_WARNING = 8192 ; const MAV_GENERATOR_STATUS_FLAG_POWER_RAIL_FAULT = 16384 ; const MAV_GENERATOR_STATUS_FLAG_OVERCURRENT_FAULT = 32768 ; const MAV_GENERATOR_STATUS_FLAG_BATTERY_OVERCHARGE_CURRENT_FAULT = 65536 ; const MAV_GENERATOR_STATUS_FLAG_OVERVOLTAGE_FAULT = 131072 ; const MAV_GENERATOR_STATUS_FLAG_BATTERY_UNDERVOLT_FAULT = 262144 ; const MAV_GENERATOR_STATUS_FLAG_START_INHIBITED = 524288 ; const MAV_GENERATOR_STATUS_FLAG_MAINTENANCE_REQUIRED = 1048576 ; const MAV_GENERATOR_STATUS_FLAG_WARMING_UP = 2097152 ; const MAV_GENERATOR_STATUS_FLAG_IDLE = 4194304 ; } } impl MavGeneratorStatusFlag { pub const DEFAULT : Self = Self :: MAV_GENERATOR_STATUS_FLAG_OFF ; } impl Default for MavGeneratorStatusFlag { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MagCalStatus { MAG_CAL_NOT_STARTED = 0 , MAG_CAL_WAITING_TO_START = 1 , MAG_CAL_RUNNING_STEP_ONE = 2 , MAG_CAL_RUNNING_STEP_TWO = 3 , MAG_CAL_SUCCESS = 4 , MAG_CAL_FAILED = 5 , MAG_CAL_BAD_ORIENTATION = 6 , MAG_CAL_BAD_RADIUS = 7 , } impl MagCalStatus { pub const DEFAULT : Self = Self :: MAG_CAL_NOT_STARTED ; } impl Default for MagCalStatus { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum WifiConfigApMode { WIFI_CONFIG_AP_MODE_UNDEFINED = 0 , WIFI_CONFIG_AP_MODE_AP = 1 , WIFI_CONFIG_AP_MODE_STATION = 2 , WIFI_CONFIG_AP_MODE_DISABLED = 3 , } impl WifiConfigApMode { pub const DEFAULT : Self = Self :: WIFI_CONFIG_AP_MODE_UNDEFINED ; } impl Default for WifiConfigApMode { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct EscFailureFlags : u16 { const ESC_FAILURE_NONE = 0 ; const ESC_FAILURE_OVER_CURRENT = 1 ; const ESC_FAILURE_OVER_VOLTAGE = 2 ; const ESC_FAILURE_OVER_TEMPERATURE = 4 ; const ESC_FAILURE_OVER_RPM = 8 ; const ESC_FAILURE_INCONSISTENT_CMD = 16 ; const ESC_FAILURE_MOTOR_STUCK = 32 ; const ESC_FAILURE_GENERIC = 64 ; } } impl EscFailureFlags { pub const DEFAULT : Self = Self :: ESC_FAILURE_NONE ; } impl Default for EscFailureFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum ActuatorOutputFunction { ACTUATOR_OUTPUT_FUNCTION_NONE = 0 , ACTUATOR_OUTPUT_FUNCTION_MOTOR1 = 1 , ACTUATOR_OUTPUT_FUNCTION_MOTOR2 = 2 , ACTUATOR_OUTPUT_FUNCTION_MOTOR3 = 3 , ACTUATOR_OUTPUT_FUNCTION_MOTOR4 = 4 , ACTUATOR_OUTPUT_FUNCTION_MOTOR5 = 5 , ACTUATOR_OUTPUT_FUNCTION_MOTOR6 = 6 , ACTUATOR_OUTPUT_FUNCTION_MOTOR7 = 7 , ACTUATOR_OUTPUT_FUNCTION_MOTOR8 = 8 , ACTUATOR_OUTPUT_FUNCTION_MOTOR9 = 9 , ACTUATOR_OUTPUT_FUNCTION_MOTOR10 = 10 , ACTUATOR_OUTPUT_FUNCTION_MOTOR11 = 11 , ACTUATOR_OUTPUT_FUNCTION_MOTOR12 = 12 , ACTUATOR_OUTPUT_FUNCTION_MOTOR13 = 13 , ACTUATOR_OUTPUT_FUNCTION_MOTOR14 = 14 , ACTUATOR_OUTPUT_FUNCTION_MOTOR15 = 15 , ACTUATOR_OUTPUT_FUNCTION_MOTOR16 = 16 , ACTUATOR_OUTPUT_FUNCTION_SERVO1 = 33 , ACTUATOR_OUTPUT_FUNCTION_SERVO2 = 34 , ACTUATOR_OUTPUT_FUNCTION_SERVO3 = 35 , ACTUATOR_OUTPUT_FUNCTION_SERVO4 = 36 , ACTUATOR_OUTPUT_FUNCTION_SERVO5 = 37 , ACTUATOR_OUTPUT_FUNCTION_SERVO6 = 38 , ACTUATOR_OUTPUT_FUNCTION_SERVO7 = 39 , ACTUATOR_OUTPUT_FUNCTION_SERVO8 = 40 , ACTUATOR_OUTPUT_FUNCTION_SERVO9 = 41 , ACTUATOR_OUTPUT_FUNCTION_SERVO10 = 42 , ACTUATOR_OUTPUT_FUNCTION_SERVO11 = 43 , ACTUATOR_OUTPUT_FUNCTION_SERVO12 = 44 , ACTUATOR_OUTPUT_FUNCTION_SERVO13 = 45 , ACTUATOR_OUTPUT_FUNCTION_SERVO14 = 46 , ACTUATOR_OUTPUT_FUNCTION_SERVO15 = 47 , ACTUATOR_OUTPUT_FUNCTION_SERVO16 = 48 , } impl ActuatorOutputFunction { pub const DEFAULT : Self = Self :: ACTUATOR_OUTPUT_FUNCTION_NONE ; } impl Default for ActuatorOutputFunction { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavFtpOpcode { MAV_FTP_OPCODE_NONE = 0 , MAV_FTP_OPCODE_TERMINATESESSION = 1 , MAV_FTP_OPCODE_RESETSESSION = 2 , MAV_FTP_OPCODE_LISTDIRECTORY = 3 , MAV_FTP_OPCODE_OPENFILERO = 4 , MAV_FTP_OPCODE_READFILE = 5 , MAV_FTP_OPCODE_CREATEFILE = 6 , MAV_FTP_OPCODE_WRITEFILE = 7 , MAV_FTP_OPCODE_REMOVEFILE = 8 , MAV_FTP_OPCODE_CREATEDIRECTORY = 9 , MAV_FTP_OPCODE_REMOVEDIRECTORY = 10 , MAV_FTP_OPCODE_OPENFILEWO = 11 , MAV_FTP_OPCODE_TRUNCATEFILE = 12 , MAV_FTP_OPCODE_RENAME = 13 , MAV_FTP_OPCODE_CALCFILECRC = 14 , MAV_FTP_OPCODE_BURSTREADFILE = 15 , MAV_FTP_OPCODE_ACK = 128 , MAV_FTP_OPCODE_NAK = 129 , } impl MavFtpOpcode { pub const DEFAULT : Self = Self :: MAV_FTP_OPCODE_NONE ; } impl Default for MavFtpOpcode { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum VideoStreamStatusFlags { VIDEO_STREAM_STATUS_FLAGS_RUNNING = 1 , VIDEO_STREAM_STATUS_FLAGS_THERMAL = 2 , } impl VideoStreamStatusFlags { pub const DEFAULT : Self = Self :: VIDEO_STREAM_STATUS_FLAGS_RUNNING ; } impl Default for VideoStreamStatusFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavTunnelPayloadType { MAV_TUNNEL_PAYLOAD_TYPE_UNKNOWN = 0 , MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED0 = 200 , MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED1 = 201 , MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED2 = 202 , MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED3 = 203 , MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED4 = 204 , MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED5 = 205 , MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED6 = 206 , MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED7 = 207 , MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED8 = 208 , MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED9 = 209 , } impl MavTunnelPayloadType { pub const DEFAULT : Self = Self :: MAV_TUNNEL_PAYLOAD_TYPE_UNKNOWN ; } impl Default for MavTunnelPayloadType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidAuthType { MAV_ODID_AUTH_TYPE_NONE = 0 , MAV_ODID_AUTH_TYPE_UAS_ID_SIGNATURE = 1 , MAV_ODID_AUTH_TYPE_OPERATOR_ID_SIGNATURE = 2 , MAV_ODID_AUTH_TYPE_MESSAGE_SET_SIGNATURE = 3 , MAV_ODID_AUTH_TYPE_NETWORK_REMOTE_ID = 4 , MAV_ODID_AUTH_TYPE_SPECIFIC_AUTHENTICATION = 5 , } impl MavOdidAuthType { pub const DEFAULT : Self = Self :: MAV_ODID_AUTH_TYPE_NONE ; } impl Default for MavOdidAuthType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum VtolTransitionHeading { VTOL_TRANSITION_HEADING_VEHICLE_DEFAULT = 0 , VTOL_TRANSITION_HEADING_NEXT_WAYPOINT = 1 , VTOL_TRANSITION_HEADING_TAKEOFF = 2 , VTOL_TRANSITION_HEADING_SPECIFIED = 3 , VTOL_TRANSITION_HEADING_ANY = 4 , } impl VtolTransitionHeading { pub const DEFAULT : Self = Self :: VTOL_TRANSITION_HEADING_VEHICLE_DEFAULT ; } impl Default for VtolTransitionHeading { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MissionState { MISSION_STATE_UNKNOWN = 0 , MISSION_STATE_NO_MISSION = 1 , MISSION_STATE_NOT_STARTED = 2 , MISSION_STATE_ACTIVE = 3 , MISSION_STATE_PAUSED = 4 , MISSION_STATE_COMPLETE = 5 , } impl MissionState { pub const DEFAULT : Self = Self :: MISSION_STATE_UNKNOWN ; } impl Default for MissionState { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct EstimatorStatusFlags : u16 { const ESTIMATOR_ATTITUDE = 1 ; const ESTIMATOR_VELOCITY_HORIZ = 2 ; const ESTIMATOR_VELOCITY_VERT = 4 ; const ESTIMATOR_POS_HORIZ_REL = 8 ; const ESTIMATOR_POS_HORIZ_ABS = 16 ; const ESTIMATOR_POS_VERT_ABS = 32 ; const ESTIMATOR_POS_VERT_AGL = 64 ; const ESTIMATOR_CONST_POS_MODE = 128 ; const ESTIMATOR_PRED_POS_HORIZ_REL = 256 ; const ESTIMATOR_PRED_POS_HORIZ_ABS = 512 ; const ESTIMATOR_GPS_GLITCH = 1024 ; const ESTIMATOR_ACCEL_ERROR = 2048 ; } } impl EstimatorStatusFlags { pub const DEFAULT : Self = Self :: ESTIMATOR_ATTITUDE ; } impl Default for EstimatorStatusFlags { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GimbalDeviceCapFlags : u16 { const GIMBAL_DEVICE_CAP_FLAGS_HAS_RETRACT = 1 ; const GIMBAL_DEVICE_CAP_FLAGS_HAS_NEUTRAL = 2 ; const GIMBAL_DEVICE_CAP_FLAGS_HAS_ROLL_AXIS = 4 ; const GIMBAL_DEVICE_CAP_FLAGS_HAS_ROLL_FOLLOW = 8 ; const GIMBAL_DEVICE_CAP_FLAGS_HAS_ROLL_LOCK = 16 ; const GIMBAL_DEVICE_CAP_FLAGS_HAS_PITCH_AXIS = 32 ; const GIMBAL_DEVICE_CAP_FLAGS_HAS_PITCH_FOLLOW = 64 ; const GIMBAL_DEVICE_CAP_FLAGS_HAS_PITCH_LOCK = 128 ; const GIMBAL_DEVICE_CAP_FLAGS_HAS_YAW_AXIS = 256 ; const GIMBAL_DEVICE_CAP_FLAGS_HAS_YAW_FOLLOW = 512 ; const GIMBAL_DEVICE_CAP_FLAGS_HAS_YAW_LOCK = 1024 ; const GIMBAL_DEVICE_CAP_FLAGS_SUPPORTS_INFINITE_YAW = 2048 ; const GIMBAL_DEVICE_CAP_FLAGS_SUPPORTS_YAW_IN_EARTH_FRAME = 4096 ; const GIMBAL_DEVICE_CAP_FLAGS_HAS_RC_INPUTS = 8192 ; } } impl GimbalDeviceCapFlags { pub const DEFAULT : Self = Self :: GIMBAL_DEVICE_CAP_FLAGS_HAS_RETRACT ; } impl Default for GimbalDeviceCapFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavBatteryChargeState { MAV_BATTERY_CHARGE_STATE_UNDEFINED = 0 , MAV_BATTERY_CHARGE_STATE_OK = 1 , MAV_BATTERY_CHARGE_STATE_LOW = 2 , MAV_BATTERY_CHARGE_STATE_CRITICAL = 3 , MAV_BATTERY_CHARGE_STATE_EMERGENCY = 4 , MAV_BATTERY_CHARGE_STATE_FAILED = 5 , MAV_BATTERY_CHARGE_STATE_UNHEALTHY = 6 , MAV_BATTERY_CHARGE_STATE_CHARGING = 7 , } impl MavBatteryChargeState { pub const DEFAULT : Self = Self :: MAV_BATTERY_CHARGE_STATE_UNDEFINED ; } impl Default for MavBatteryChargeState { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum FenceBreach { FENCE_BREACH_NONE = 0 , FENCE_BREACH_MINALT = 1 , FENCE_BREACH_MAXALT = 2 , FENCE_BREACH_BOUNDARY = 3 , } impl FenceBreach { pub const DEFAULT : Self = Self :: FENCE_BREACH_NONE ; } impl Default for FenceBreach { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum CellularNetworkFailedReason { CELLULAR_NETWORK_FAILED_REASON_NONE = 0 , CELLULAR_NETWORK_FAILED_REASON_UNKNOWN = 1 , CELLULAR_NETWORK_FAILED_REASON_SIM_MISSING = 2 , CELLULAR_NETWORK_FAILED_REASON_SIM_ERROR = 3 , } impl CellularNetworkFailedReason { pub const DEFAULT : Self = Self :: CELLULAR_NETWORK_FAILED_REASON_NONE ; } impl Default for CellularNetworkFailedReason { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavMountMode { MAV_MOUNT_MODE_RETRACT = 0 , MAV_MOUNT_MODE_NEUTRAL = 1 , MAV_MOUNT_MODE_MAVLINK_TARGETING = 2 , MAV_MOUNT_MODE_RC_TARGETING = 3 , MAV_MOUNT_MODE_GPS_POINT = 4 , MAV_MOUNT_MODE_SYSID_TARGET = 5 , MAV_MOUNT_MODE_HOME_LOCATION = 6 , } impl MavMountMode { pub const DEFAULT : Self = Self :: MAV_MOUNT_MODE_RETRACT ; } impl Default for MavMountMode { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum RtkBaselineCoordinateSystem { RTK_BASELINE_COORDINATE_SYSTEM_ECEF = 0 , RTK_BASELINE_COORDINATE_SYSTEM_NED = 1 , } impl RtkBaselineCoordinateSystem { pub const DEFAULT : Self = Self :: RTK_BASELINE_COORDINATE_SYSTEM_ECEF ; } impl Default for RtkBaselineCoordinateSystem { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct TuneFormat : u32 { const TUNE_FORMAT_QBASIC1_1 = 1 ; const TUNE_FORMAT_MML_MODERN = 2 ; } } impl TuneFormat { pub const DEFAULT : Self = Self :: TUNE_FORMAT_QBASIC1_1 ; } impl Default for TuneFormat { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum CameraMode { CAMERA_MODE_IMAGE = 0 , CAMERA_MODE_VIDEO = 1 , CAMERA_MODE_IMAGE_SURVEY = 2 , } impl CameraMode { pub const DEFAULT : Self = Self :: CAMERA_MODE_IMAGE ; } impl Default for CameraMode { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidHeightRef { MAV_ODID_HEIGHT_REF_OVER_TAKEOFF = 0 , MAV_ODID_HEIGHT_REF_OVER_GROUND = 1 , } impl MavOdidHeightRef { pub const DEFAULT : Self = Self :: MAV_ODID_HEIGHT_REF_OVER_TAKEOFF ; } impl Default for MavOdidHeightRef { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum CameraTrackingStatusFlags { CAMERA_TRACKING_STATUS_FLAGS_IDLE = 0 , CAMERA_TRACKING_STATUS_FLAGS_ACTIVE = 1 , CAMERA_TRACKING_STATUS_FLAGS_ERROR = 2 , } impl CameraTrackingStatusFlags { pub const DEFAULT : Self = Self :: CAMERA_TRACKING_STATUS_FLAGS_IDLE ; } impl Default for CameraTrackingStatusFlags { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MavModeFlag : u8 { const MAV_MODE_FLAG_SAFETY_ARMED = 128 ; const MAV_MODE_FLAG_MANUAL_INPUT_ENABLED = 64 ; const MAV_MODE_FLAG_HIL_ENABLED = 32 ; const MAV_MODE_FLAG_STABILIZE_ENABLED = 16 ; const MAV_MODE_FLAG_GUIDED_ENABLED = 8 ; const MAV_MODE_FLAG_AUTO_ENABLED = 4 ; const MAV_MODE_FLAG_TEST_ENABLED = 2 ; const MAV_MODE_FLAG_CUSTOM_MODE_ENABLED = 1 ; } } impl MavModeFlag { pub const DEFAULT : Self = Self :: MAV_MODE_FLAG_SAFETY_ARMED ; } impl Default for MavModeFlag { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavDataStream { MAV_DATA_STREAM_ALL = 0 , MAV_DATA_STREAM_RAW_SENSORS = 1 , MAV_DATA_STREAM_EXTENDED_STATUS = 2 , MAV_DATA_STREAM_RC_CHANNELS = 3 , MAV_DATA_STREAM_RAW_CONTROLLER = 4 , MAV_DATA_STREAM_POSITION = 6 , MAV_DATA_STREAM_EXTRA1 = 10 , MAV_DATA_STREAM_EXTRA2 = 11 , MAV_DATA_STREAM_EXTRA3 = 12 , } impl MavDataStream { pub const DEFAULT : Self = Self :: MAV_DATA_STREAM_ALL ; } impl Default for MavDataStream { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavMissionResult { MAV_MISSION_ACCEPTED = 0 , MAV_MISSION_ERROR = 1 , MAV_MISSION_UNSUPPORTED_FRAME = 2 , MAV_MISSION_UNSUPPORTED = 3 , MAV_MISSION_NO_SPACE = 4 , MAV_MISSION_INVALID = 5 , MAV_MISSION_INVALID_PARAM1 = 6 , MAV_MISSION_INVALID_PARAM2 = 7 , MAV_MISSION_INVALID_PARAM3 = 8 , MAV_MISSION_INVALID_PARAM4 = 9 , MAV_MISSION_INVALID_PARAM5_X = 10 , MAV_MISSION_INVALID_PARAM6_Y = 11 , MAV_MISSION_INVALID_PARAM7 = 12 , MAV_MISSION_INVALID_SEQUENCE = 13 , MAV_MISSION_DENIED = 14 , MAV_MISSION_OPERATION_CANCELLED = 15 , } impl MavMissionResult { pub const DEFAULT : Self = Self :: MAV_MISSION_ACCEPTED ; } impl Default for MavMissionResult { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum AdsbEmitterType { ADSB_EMITTER_TYPE_NO_INFO = 0 , ADSB_EMITTER_TYPE_LIGHT = 1 , ADSB_EMITTER_TYPE_SMALL = 2 , ADSB_EMITTER_TYPE_LARGE = 3 , ADSB_EMITTER_TYPE_HIGH_VORTEX_LARGE = 4 , ADSB_EMITTER_TYPE_HEAVY = 5 , ADSB_EMITTER_TYPE_HIGHLY_MANUV = 6 , ADSB_EMITTER_TYPE_ROTOCRAFT = 7 , ADSB_EMITTER_TYPE_UNASSIGNED = 8 , ADSB_EMITTER_TYPE_GLIDER = 9 , ADSB_EMITTER_TYPE_LIGHTER_AIR = 10 , ADSB_EMITTER_TYPE_PARACHUTE = 11 , ADSB_EMITTER_TYPE_ULTRA_LIGHT = 12 , ADSB_EMITTER_TYPE_UNASSIGNED2 = 13 , ADSB_EMITTER_TYPE_UAV = 14 , ADSB_EMITTER_TYPE_SPACE = 15 , ADSB_EMITTER_TYPE_UNASSGINED3 = 16 , ADSB_EMITTER_TYPE_EMERGENCY_SURFACE = 17 , ADSB_EMITTER_TYPE_SERVICE_SURFACE = 18 , ADSB_EMITTER_TYPE_POINT_OBSTACLE = 19 , } impl AdsbEmitterType { pub const DEFAULT : Self = Self :: ADSB_EMITTER_TYPE_NO_INFO ; } impl Default for AdsbEmitterType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum LandingTargetType { LANDING_TARGET_TYPE_LIGHT_BEACON = 0 , LANDING_TARGET_TYPE_RADIO_BEACON = 1 , LANDING_TARGET_TYPE_VISION_FIDUCIAL = 2 , LANDING_TARGET_TYPE_VISION_OTHER = 3 , } impl LandingTargetType { pub const DEFAULT : Self = Self :: LANDING_TARGET_TYPE_LIGHT_BEACON ; } impl Default for LandingTargetType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum UavcanNodeMode { UAVCAN_NODE_MODE_OPERATIONAL = 0 , UAVCAN_NODE_MODE_INITIALIZATION = 1 , UAVCAN_NODE_MODE_MAINTENANCE = 2 , UAVCAN_NODE_MODE_SOFTWARE_UPDATE = 3 , UAVCAN_NODE_MODE_OFFLINE = 7 , } impl UavcanNodeMode { pub const DEFAULT : Self = Self :: UAVCAN_NODE_MODE_OPERATIONAL ; } impl Default for UavcanNodeMode { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum CellularNetworkRadioType { CELLULAR_NETWORK_RADIO_TYPE_NONE = 0 , CELLULAR_NETWORK_RADIO_TYPE_GSM = 1 , CELLULAR_NETWORK_RADIO_TYPE_CDMA = 2 , CELLULAR_NETWORK_RADIO_TYPE_WCDMA = 3 , CELLULAR_NETWORK_RADIO_TYPE_LTE = 4 , } impl CellularNetworkRadioType { pub const DEFAULT : Self = Self :: CELLULAR_NETWORK_RADIO_TYPE_NONE ; } impl Default for CellularNetworkRadioType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MotorTestOrder { MOTOR_TEST_ORDER_DEFAULT = 0 , MOTOR_TEST_ORDER_SEQUENCE = 1 , MOTOR_TEST_ORDER_BOARD = 2 , } impl MotorTestOrder { pub const DEFAULT : Self = Self :: MOTOR_TEST_ORDER_DEFAULT ; } impl Default for MotorTestOrder { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavAutopilot { MAV_AUTOPILOT_GENERIC = 0 , MAV_AUTOPILOT_RESERVED = 1 , MAV_AUTOPILOT_SLUGS = 2 , MAV_AUTOPILOT_ARDUPILOTMEGA = 3 , MAV_AUTOPILOT_OPENPILOT = 4 , MAV_AUTOPILOT_GENERIC_WAYPOINTS_ONLY = 5 , MAV_AUTOPILOT_GENERIC_WAYPOINTS_AND_SIMPLE_NAVIGATION_ONLY = 6 , MAV_AUTOPILOT_GENERIC_MISSION_FULL = 7 , MAV_AUTOPILOT_INVALID = 8 , MAV_AUTOPILOT_PPZ = 9 , MAV_AUTOPILOT_UDB = 10 , MAV_AUTOPILOT_FP = 11 , MAV_AUTOPILOT_PX4 = 12 , MAV_AUTOPILOT_SMACCMPILOT = 13 , MAV_AUTOPILOT_AUTOQUAD = 14 , MAV_AUTOPILOT_ARMAZILA = 15 , MAV_AUTOPILOT_AEROB = 16 , MAV_AUTOPILOT_ASLUAV = 17 , MAV_AUTOPILOT_SMARTAP = 18 , MAV_AUTOPILOT_AIRRAILS = 19 , MAV_AUTOPILOT_REFLEX = 20 , } impl MavAutopilot { pub const DEFAULT : Self = Self :: MAV_AUTOPILOT_GENERIC ; } impl Default for MavAutopilot { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavState { MAV_STATE_UNINIT = 0 , MAV_STATE_BOOT = 1 , MAV_STATE_CALIBRATING = 2 , MAV_STATE_STANDBY = 3 , MAV_STATE_ACTIVE = 4 , MAV_STATE_CRITICAL = 5 , MAV_STATE_EMERGENCY = 6 , MAV_STATE_POWEROFF = 7 , MAV_STATE_FLIGHT_TERMINATION = 8 , } impl MavState { pub const DEFAULT : Self = Self :: MAV_STATE_UNINIT ; } impl Default for MavState { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CameraCapFlags : u32 { const CAMERA_CAP_FLAGS_CAPTURE_VIDEO = 1 ; const CAMERA_CAP_FLAGS_CAPTURE_IMAGE = 2 ; const CAMERA_CAP_FLAGS_HAS_MODES = 4 ; const CAMERA_CAP_FLAGS_CAN_CAPTURE_IMAGE_IN_VIDEO_MODE = 8 ; const CAMERA_CAP_FLAGS_CAN_CAPTURE_VIDEO_IN_IMAGE_MODE = 16 ; const CAMERA_CAP_FLAGS_HAS_IMAGE_SURVEY_MODE = 32 ; const CAMERA_CAP_FLAGS_HAS_BASIC_ZOOM = 64 ; const CAMERA_CAP_FLAGS_HAS_BASIC_FOCUS = 128 ; const CAMERA_CAP_FLAGS_HAS_VIDEO_STREAM = 256 ; const CAMERA_CAP_FLAGS_HAS_TRACKING_POINT = 512 ; const CAMERA_CAP_FLAGS_HAS_TRACKING_RECTANGLE = 1024 ; const CAMERA_CAP_FLAGS_HAS_TRACKING_GEO_STATUS = 2048 ; } } impl CameraCapFlags { pub const DEFAULT : Self = Self :: CAMERA_CAP_FLAGS_CAPTURE_VIDEO ; } impl Default for CameraCapFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavBatteryType { MAV_BATTERY_TYPE_UNKNOWN = 0 , MAV_BATTERY_TYPE_LIPO = 1 , MAV_BATTERY_TYPE_LIFE = 2 , MAV_BATTERY_TYPE_LION = 3 , MAV_BATTERY_TYPE_NIMH = 4 , } impl MavBatteryType { pub const DEFAULT : Self = Self :: MAV_BATTERY_TYPE_UNKNOWN ; } impl Default for MavBatteryType { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GimbalManagerCapFlags : u32 { const GIMBAL_MANAGER_CAP_FLAGS_HAS_RETRACT = 1 ; const GIMBAL_MANAGER_CAP_FLAGS_HAS_NEUTRAL = 2 ; const GIMBAL_MANAGER_CAP_FLAGS_HAS_ROLL_AXIS = 4 ; const GIMBAL_MANAGER_CAP_FLAGS_HAS_ROLL_FOLLOW = 8 ; const GIMBAL_MANAGER_CAP_FLAGS_HAS_ROLL_LOCK = 16 ; const GIMBAL_MANAGER_CAP_FLAGS_HAS_PITCH_AXIS = 32 ; const GIMBAL_MANAGER_CAP_FLAGS_HAS_PITCH_FOLLOW = 64 ; const GIMBAL_MANAGER_CAP_FLAGS_HAS_PITCH_LOCK = 128 ; const GIMBAL_MANAGER_CAP_FLAGS_HAS_YAW_AXIS = 256 ; const GIMBAL_MANAGER_CAP_FLAGS_HAS_YAW_FOLLOW = 512 ; const GIMBAL_MANAGER_CAP_FLAGS_HAS_YAW_LOCK = 1024 ; const GIMBAL_MANAGER_CAP_FLAGS_SUPPORTS_INFINITE_YAW = 2048 ; const GIMBAL_MANAGER_CAP_FLAGS_SUPPORTS_YAW_IN_EARTH_FRAME = 4096 ; const GIMBAL_MANAGER_CAP_FLAGS_HAS_RC_INPUTS = 8192 ; const GIMBAL_MANAGER_CAP_FLAGS_CAN_POINT_LOCATION_LOCAL = 65536 ; const GIMBAL_MANAGER_CAP_FLAGS_CAN_POINT_LOCATION_GLOBAL = 131072 ; } } impl GimbalManagerCapFlags { pub const DEFAULT : Self = Self :: GIMBAL_MANAGER_CAP_FLAGS_HAS_RETRACT ; } impl Default for GimbalManagerCapFlags { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HilSensorUpdatedFlags : u32 { const HIL_SENSOR_UPDATED_NONE = 0 ; const HIL_SENSOR_UPDATED_XACC = 1 ; const HIL_SENSOR_UPDATED_YACC = 2 ; const HIL_SENSOR_UPDATED_ZACC = 4 ; const HIL_SENSOR_UPDATED_XGYRO = 8 ; const HIL_SENSOR_UPDATED_YGYRO = 16 ; const HIL_SENSOR_UPDATED_ZGYRO = 32 ; const HIL_SENSOR_UPDATED_XMAG = 64 ; const HIL_SENSOR_UPDATED_YMAG = 128 ; const HIL_SENSOR_UPDATED_ZMAG = 256 ; const HIL_SENSOR_UPDATED_ABS_PRESSURE = 512 ; const HIL_SENSOR_UPDATED_DIFF_PRESSURE = 1024 ; const HIL_SENSOR_UPDATED_PRESSURE_ALT = 2048 ; const HIL_SENSOR_UPDATED_TEMPERATURE = 4096 ; const HIL_SENSOR_UPDATED_RESET = 2147483648 ; } } impl HilSensorUpdatedFlags { pub const DEFAULT : Self = Self :: HIL_SENSOR_UPDATED_NONE ; } impl Default for HilSensorUpdatedFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavlinkDataStreamType { MAVLINK_DATA_STREAM_IMG_JPEG = 0 , MAVLINK_DATA_STREAM_IMG_BMP = 1 , MAVLINK_DATA_STREAM_IMG_RAW8U = 2 , MAVLINK_DATA_STREAM_IMG_RAW32U = 3 , MAVLINK_DATA_STREAM_IMG_PGM = 4 , MAVLINK_DATA_STREAM_IMG_PNG = 5 , } impl MavlinkDataStreamType { pub const DEFAULT : Self = Self :: MAVLINK_DATA_STREAM_IMG_JPEG ; } impl Default for MavlinkDataStreamType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavDoRepositionFlags { MAV_DO_REPOSITION_FLAGS_CHANGE_MODE = 1 , } impl MavDoRepositionFlags { pub const DEFAULT : Self = Self :: MAV_DO_REPOSITION_FLAGS_CHANGE_MODE ; } impl Default for MavDoRepositionFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum StorageUsageFlag { STORAGE_USAGE_FLAG_SET = 1 , STORAGE_USAGE_FLAG_PHOTO = 2 , STORAGE_USAGE_FLAG_VIDEO = 4 , STORAGE_USAGE_FLAG_LOGS = 8 , } impl StorageUsageFlag { pub const DEFAULT : Self = Self :: STORAGE_USAGE_FLAG_SET ; } impl Default for StorageUsageFlag { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum UtmFlightState { UTM_FLIGHT_STATE_UNKNOWN = 1 , UTM_FLIGHT_STATE_GROUND = 2 , UTM_FLIGHT_STATE_AIRBORNE = 3 , UTM_FLIGHT_STATE_EMERGENCY = 16 , UTM_FLIGHT_STATE_NOCTRL = 32 , } impl UtmFlightState { pub const DEFAULT : Self = Self :: UTM_FLIGHT_STATE_UNKNOWN ; } impl Default for UtmFlightState { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidClassificationType { MAV_ODID_CLASSIFICATION_TYPE_UNDECLARED = 0 , MAV_ODID_CLASSIFICATION_TYPE_EU = 1 , } impl MavOdidClassificationType { pub const DEFAULT : Self = Self :: MAV_ODID_CLASSIFICATION_TYPE_UNDECLARED ; } impl Default for MavOdidClassificationType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum AisType { AIS_TYPE_UNKNOWN = 0 , AIS_TYPE_RESERVED_1 = 1 , AIS_TYPE_RESERVED_2 = 2 , AIS_TYPE_RESERVED_3 = 3 , AIS_TYPE_RESERVED_4 = 4 , AIS_TYPE_RESERVED_5 = 5 , AIS_TYPE_RESERVED_6 = 6 , AIS_TYPE_RESERVED_7 = 7 , AIS_TYPE_RESERVED_8 = 8 , AIS_TYPE_RESERVED_9 = 9 , AIS_TYPE_RESERVED_10 = 10 , AIS_TYPE_RESERVED_11 = 11 , AIS_TYPE_RESERVED_12 = 12 , AIS_TYPE_RESERVED_13 = 13 , AIS_TYPE_RESERVED_14 = 14 , AIS_TYPE_RESERVED_15 = 15 , AIS_TYPE_RESERVED_16 = 16 , AIS_TYPE_RESERVED_17 = 17 , AIS_TYPE_RESERVED_18 = 18 , AIS_TYPE_RESERVED_19 = 19 , AIS_TYPE_WIG = 20 , AIS_TYPE_WIG_HAZARDOUS_A = 21 , AIS_TYPE_WIG_HAZARDOUS_B = 22 , AIS_TYPE_WIG_HAZARDOUS_C = 23 , AIS_TYPE_WIG_HAZARDOUS_D = 24 , AIS_TYPE_WIG_RESERVED_1 = 25 , AIS_TYPE_WIG_RESERVED_2 = 26 , AIS_TYPE_WIG_RESERVED_3 = 27 , AIS_TYPE_WIG_RESERVED_4 = 28 , AIS_TYPE_WIG_RESERVED_5 = 29 , AIS_TYPE_FISHING = 30 , AIS_TYPE_TOWING = 31 , AIS_TYPE_TOWING_LARGE = 32 , AIS_TYPE_DREDGING = 33 , AIS_TYPE_DIVING = 34 , AIS_TYPE_MILITARY = 35 , AIS_TYPE_SAILING = 36 , AIS_TYPE_PLEASURE = 37 , AIS_TYPE_RESERVED_20 = 38 , AIS_TYPE_RESERVED_21 = 39 , AIS_TYPE_HSC = 40 , AIS_TYPE_HSC_HAZARDOUS_A = 41 , AIS_TYPE_HSC_HAZARDOUS_B = 42 , AIS_TYPE_HSC_HAZARDOUS_C = 43 , AIS_TYPE_HSC_HAZARDOUS_D = 44 , AIS_TYPE_HSC_RESERVED_1 = 45 , AIS_TYPE_HSC_RESERVED_2 = 46 , AIS_TYPE_HSC_RESERVED_3 = 47 , AIS_TYPE_HSC_RESERVED_4 = 48 , AIS_TYPE_HSC_UNKNOWN = 49 , AIS_TYPE_PILOT = 50 , AIS_TYPE_SAR = 51 , AIS_TYPE_TUG = 52 , AIS_TYPE_PORT_TENDER = 53 , AIS_TYPE_ANTI_POLLUTION = 54 , AIS_TYPE_LAW_ENFORCEMENT = 55 , AIS_TYPE_SPARE_LOCAL_1 = 56 , AIS_TYPE_SPARE_LOCAL_2 = 57 , AIS_TYPE_MEDICAL_TRANSPORT = 58 , AIS_TYPE_NONECOMBATANT = 59 , AIS_TYPE_PASSENGER = 60 , AIS_TYPE_PASSENGER_HAZARDOUS_A = 61 , AIS_TYPE_PASSENGER_HAZARDOUS_B = 62 , AIS_TYPE_PASSENGER_HAZARDOUS_C = 63 , AIS_TYPE_PASSENGER_HAZARDOUS_D = 64 , AIS_TYPE_PASSENGER_RESERVED_1 = 65 , AIS_TYPE_PASSENGER_RESERVED_2 = 66 , AIS_TYPE_PASSENGER_RESERVED_3 = 67 , AIS_TYPE_PASSENGER_RESERVED_4 = 68 , AIS_TYPE_PASSENGER_UNKNOWN = 69 , AIS_TYPE_CARGO = 70 , AIS_TYPE_CARGO_HAZARDOUS_A = 71 , AIS_TYPE_CARGO_HAZARDOUS_B = 72 , AIS_TYPE_CARGO_HAZARDOUS_C = 73 , AIS_TYPE_CARGO_HAZARDOUS_D = 74 , AIS_TYPE_CARGO_RESERVED_1 = 75 , AIS_TYPE_CARGO_RESERVED_2 = 76 , AIS_TYPE_CARGO_RESERVED_3 = 77 , AIS_TYPE_CARGO_RESERVED_4 = 78 , AIS_TYPE_CARGO_UNKNOWN = 79 , AIS_TYPE_TANKER = 80 , AIS_TYPE_TANKER_HAZARDOUS_A = 81 , AIS_TYPE_TANKER_HAZARDOUS_B = 82 , AIS_TYPE_TANKER_HAZARDOUS_C = 83 , AIS_TYPE_TANKER_HAZARDOUS_D = 84 , AIS_TYPE_TANKER_RESERVED_1 = 85 , AIS_TYPE_TANKER_RESERVED_2 = 86 , AIS_TYPE_TANKER_RESERVED_3 = 87 , AIS_TYPE_TANKER_RESERVED_4 = 88 , AIS_TYPE_TANKER_UNKNOWN = 89 , AIS_TYPE_OTHER = 90 , AIS_TYPE_OTHER_HAZARDOUS_A = 91 , AIS_TYPE_OTHER_HAZARDOUS_B = 92 , AIS_TYPE_OTHER_HAZARDOUS_C = 93 , AIS_TYPE_OTHER_HAZARDOUS_D = 94 , AIS_TYPE_OTHER_RESERVED_1 = 95 , AIS_TYPE_OTHER_RESERVED_2 = 96 , AIS_TYPE_OTHER_RESERVED_3 = 97 , AIS_TYPE_OTHER_RESERVED_4 = 98 , AIS_TYPE_OTHER_UNKNOWN = 99 , } impl AisType { pub const DEFAULT : Self = Self :: AIS_TYPE_UNKNOWN ; } impl Default for AisType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum StorageStatus { STORAGE_STATUS_EMPTY = 0 , STORAGE_STATUS_UNFORMATTED = 1 , STORAGE_STATUS_READY = 2 , STORAGE_STATUS_NOT_SUPPORTED = 3 , } impl StorageStatus { pub const DEFAULT : Self = Self :: STORAGE_STATUS_EMPTY ; } impl Default for StorageStatus { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum NavVtolLandOptions { NAV_VTOL_LAND_OPTIONS_DEFAULT = 0 , NAV_VTOL_LAND_OPTIONS_FW_DESCENT = 1 , NAV_VTOL_LAND_OPTIONS_HOVER_DESCENT = 2 , } impl NavVtolLandOptions { pub const DEFAULT : Self = Self :: NAV_VTOL_LAND_OPTIONS_DEFAULT ; } impl Default for NavVtolLandOptions { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum PreflightStorageMissionAction { MISSION_READ_PERSISTENT = 0 , MISSION_WRITE_PERSISTENT = 1 , MISSION_RESET_DEFAULT = 2 , } impl PreflightStorageMissionAction { pub const DEFAULT : Self = Self :: MISSION_READ_PERSISTENT ; } impl Default for PreflightStorageMissionAction { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum VideoStreamType { VIDEO_STREAM_TYPE_RTSP = 0 , VIDEO_STREAM_TYPE_RTPUDP = 1 , VIDEO_STREAM_TYPE_TCP_MPEG = 2 , VIDEO_STREAM_TYPE_MPEG_TS_H264 = 3 , } impl VideoStreamType { pub const DEFAULT : Self = Self :: VIDEO_STREAM_TYPE_RTSP ; } impl Default for VideoStreamType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum AutotuneAxis { AUTOTUNE_AXIS_DEFAULT = 0 , AUTOTUNE_AXIS_ROLL = 1 , AUTOTUNE_AXIS_PITCH = 2 , AUTOTUNE_AXIS_YAW = 4 , } impl AutotuneAxis { pub const DEFAULT : Self = Self :: AUTOTUNE_AXIS_DEFAULT ; } impl Default for AutotuneAxis { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GimbalDeviceFlags : u16 { const GIMBAL_DEVICE_FLAGS_RETRACT = 1 ; const GIMBAL_DEVICE_FLAGS_NEUTRAL = 2 ; const GIMBAL_DEVICE_FLAGS_ROLL_LOCK = 4 ; const GIMBAL_DEVICE_FLAGS_PITCH_LOCK = 8 ; const GIMBAL_DEVICE_FLAGS_YAW_LOCK = 16 ; const GIMBAL_DEVICE_FLAGS_YAW_IN_VEHICLE_FRAME = 32 ; const GIMBAL_DEVICE_FLAGS_YAW_IN_EARTH_FRAME = 64 ; const GIMBAL_DEVICE_FLAGS_ACCEPTS_YAW_IN_EARTH_FRAME = 128 ; const GIMBAL_DEVICE_FLAGS_RC_EXCLUSIVE = 256 ; const GIMBAL_DEVICE_FLAGS_RC_MIXED = 512 ; } } impl GimbalDeviceFlags { pub const DEFAULT : Self = Self :: GIMBAL_DEVICE_FLAGS_RETRACT ; } impl Default for GimbalDeviceFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum FenceAction { FENCE_ACTION_NONE = 0 , FENCE_ACTION_GUIDED = 1 , FENCE_ACTION_REPORT = 2 , FENCE_ACTION_GUIDED_THR_PASS = 3 , FENCE_ACTION_RTL = 4 , FENCE_ACTION_HOLD = 5 , FENCE_ACTION_TERMINATE = 6 , FENCE_ACTION_LAND = 7 , } impl FenceAction { pub const DEFAULT : Self = Self :: FENCE_ACTION_NONE ; } impl Default for FenceAction { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum WinchActions { WINCH_RELAXED = 0 , WINCH_RELATIVE_LENGTH_CONTROL = 1 , WINCH_RATE_CONTROL = 2 , WINCH_LOCK = 3 , WINCH_DELIVER = 4 , WINCH_HOLD = 5 , WINCH_RETRACT = 6 , WINCH_LOAD_LINE = 7 , WINCH_ABANDON_LINE = 8 , WINCH_LOAD_PAYLOAD = 9 , } impl WinchActions { pub const DEFAULT : Self = Self :: WINCH_RELAXED ; } impl Default for WinchActions { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavMissionType { MAV_MISSION_TYPE_MISSION = 0 , MAV_MISSION_TYPE_FENCE = 1 , MAV_MISSION_TYPE_RALLY = 2 , MAV_MISSION_TYPE_ALL = 255 , } impl MavMissionType { pub const DEFAULT : Self = Self :: MAV_MISSION_TYPE_MISSION ; } impl Default for MavMissionType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum UavcanNodeHealth { UAVCAN_NODE_HEALTH_OK = 0 , UAVCAN_NODE_HEALTH_WARNING = 1 , UAVCAN_NODE_HEALTH_ERROR = 2 , UAVCAN_NODE_HEALTH_CRITICAL = 3 , } impl UavcanNodeHealth { pub const DEFAULT : Self = Self :: UAVCAN_NODE_HEALTH_OK ; } impl Default for UavcanNodeHealth { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavSeverity { MAV_SEVERITY_EMERGENCY = 0 , MAV_SEVERITY_ALERT = 1 , MAV_SEVERITY_CRITICAL = 2 , MAV_SEVERITY_ERROR = 3 , MAV_SEVERITY_WARNING = 4 , MAV_SEVERITY_NOTICE = 5 , MAV_SEVERITY_INFO = 6 , MAV_SEVERITY_DEBUG = 7 , } impl MavSeverity { pub const DEFAULT : Self = Self :: MAV_SEVERITY_EMERGENCY ; } impl Default for MavSeverity { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SerialControlFlag : u8 { const SERIAL_CONTROL_FLAG_REPLY = 1 ; const SERIAL_CONTROL_FLAG_RESPOND = 2 ; const SERIAL_CONTROL_FLAG_EXCLUSIVE = 4 ; const SERIAL_CONTROL_FLAG_BLOCKING = 8 ; const SERIAL_CONTROL_FLAG_MULTI = 16 ; } } impl SerialControlFlag { pub const DEFAULT : Self = Self :: SERIAL_CONTROL_FLAG_REPLY ; } impl Default for SerialControlFlag { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidSpeedAcc { MAV_ODID_SPEED_ACC_UNKNOWN = 0 , MAV_ODID_SPEED_ACC_10_METERS_PER_SECOND = 1 , MAV_ODID_SPEED_ACC_3_METERS_PER_SECOND = 2 , MAV_ODID_SPEED_ACC_1_METERS_PER_SECOND = 3 , MAV_ODID_SPEED_ACC_0_3_METERS_PER_SECOND = 4 , } impl MavOdidSpeedAcc { pub const DEFAULT : Self = Self :: MAV_ODID_SPEED_ACC_UNKNOWN ; } impl Default for MavOdidSpeedAcc { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavArmAuthDeniedReason { MAV_ARM_AUTH_DENIED_REASON_GENERIC = 0 , MAV_ARM_AUTH_DENIED_REASON_NONE = 1 , MAV_ARM_AUTH_DENIED_REASON_INVALID_WAYPOINT = 2 , MAV_ARM_AUTH_DENIED_REASON_TIMEOUT = 3 , MAV_ARM_AUTH_DENIED_REASON_AIRSPACE_IN_USE = 4 , MAV_ARM_AUTH_DENIED_REASON_BAD_WEATHER = 5 , } impl MavArmAuthDeniedReason { pub const DEFAULT : Self = Self :: MAV_ARM_AUTH_DENIED_REASON_GENERIC ; } impl Default for MavArmAuthDeniedReason { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct AisFlags : u16 { const AIS_FLAGS_POSITION_ACCURACY = 1 ; const AIS_FLAGS_VALID_COG = 2 ; const AIS_FLAGS_VALID_VELOCITY = 4 ; const AIS_FLAGS_HIGH_VELOCITY = 8 ; const AIS_FLAGS_VALID_TURN_RATE = 16 ; const AIS_FLAGS_TURN_RATE_SIGN_ONLY = 32 ; const AIS_FLAGS_VALID_DIMENSIONS = 64 ; const AIS_FLAGS_LARGE_BOW_DIMENSION = 128 ; const AIS_FLAGS_LARGE_STERN_DIMENSION = 256 ; const AIS_FLAGS_LARGE_PORT_DIMENSION = 512 ; const AIS_FLAGS_LARGE_STARBOARD_DIMENSION = 1024 ; const AIS_FLAGS_VALID_CALLSIGN = 2048 ; const AIS_FLAGS_VALID_NAME = 4096 ; } } impl AisFlags { pub const DEFAULT : Self = Self :: AIS_FLAGS_POSITION_ACCURACY ; } impl Default for AisFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum SetFocusType { FOCUS_TYPE_STEP = 0 , FOCUS_TYPE_CONTINUOUS = 1 , FOCUS_TYPE_RANGE = 2 , FOCUS_TYPE_METERS = 3 , FOCUS_TYPE_AUTO = 4 , FOCUS_TYPE_AUTO_SINGLE = 5 , FOCUS_TYPE_AUTO_CONTINUOUS = 6 , } impl SetFocusType { pub const DEFAULT : Self = Self :: FOCUS_TYPE_STEP ; } impl Default for SetFocusType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidVerAcc { MAV_ODID_VER_ACC_UNKNOWN = 0 , MAV_ODID_VER_ACC_150_METER = 1 , MAV_ODID_VER_ACC_45_METER = 2 , MAV_ODID_VER_ACC_25_METER = 3 , MAV_ODID_VER_ACC_10_METER = 4 , MAV_ODID_VER_ACC_3_METER = 5 , MAV_ODID_VER_ACC_1_METER = 6 , } impl MavOdidVerAcc { pub const DEFAULT : Self = Self :: MAV_ODID_VER_ACC_UNKNOWN ; } impl Default for MavOdidVerAcc { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct RAW_PRESSURE_DATA { pub time_usec : u64 , pub press_abs : i16 , pub press_diff1 : i16 , pub press_diff2 : i16 , pub temperature : i16 , } impl RAW_PRESSURE_DATA { pub const ENCODED_LEN : usize = 16usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , press_abs : 0_i16 , press_diff1 : 0_i16 , press_diff2 : 0_i16 , temperature : 0_i16 , } ; } impl Default for RAW_PRESSURE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for RAW_PRESSURE_DATA { type Message = MavMessage ; const ID : u32 = 28u32 ; const NAME : & 'static str = "RAW_PRESSURE" ; const EXTRA_CRC : u8 = 67u8 ; const ENCODED_LEN : usize = 16usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . press_abs = buf . get_i16_le () ; __struct . press_diff1 = buf . get_i16_le () ; __struct . press_diff2 = buf . get_i16_le () ; __struct . temperature = buf . get_i16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_i16_le (self . press_abs) ; __tmp . put_i16_le (self . press_diff1) ; __tmp . put_i16_le (self . press_diff2) ; __tmp . put_i16_le (self . temperature) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA { pub time_boot_us : u64 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub q : [f32 ; 4] , pub q_estimated_delay_us : u32 , pub vx : f32 , pub vy : f32 , pub vz : f32 , pub v_estimated_delay_us : u32 , pub feed_forward_angular_velocity_z : f32 , pub estimator_status : EstimatorStatusFlags , pub target_system : u8 , pub target_component : u8 , pub landed_state : MavLandedState , } impl AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA { pub const ENCODED_LEN : usize = 53usize ; pub const DEFAULT : Self = Self { time_boot_us : 0_u64 , q : [0.0_f32 ; 4usize] , q_estimated_delay_us : 0_u32 , vx : 0.0_f32 , vy : 0.0_f32 , vz : 0.0_f32 , v_estimated_delay_us : 0_u32 , feed_forward_angular_velocity_z : 0.0_f32 , estimator_status : EstimatorStatusFlags :: DEFAULT , target_system : 0_u8 , target_component : 0_u8 , landed_state : MavLandedState :: DEFAULT , } ; } impl Default for AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA { type Message = MavMessage ; const ID : u32 = 286u32 ; const NAME : & 'static str = "AUTOPILOT_STATE_FOR_GIMBAL_DEVICE" ; const EXTRA_CRC : u8 = 210u8 ; const ENCODED_LEN : usize = 53usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_us = buf . get_u64_le () ; for v in & mut __struct . q { let val = buf . get_f32_le () ; * v = val ; } __struct . q_estimated_delay_us = buf . get_u32_le () ; __struct . vx = buf . get_f32_le () ; __struct . vy = buf . get_f32_le () ; __struct . vz = buf . get_f32_le () ; __struct . v_estimated_delay_us = buf . get_u32_le () ; __struct . feed_forward_angular_velocity_z = buf . get_f32_le () ; let tmp = buf . get_u16_le () ; __struct . estimator_status = EstimatorStatusFlags :: from_bits (tmp & EstimatorStatusFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "EstimatorStatusFlags" , value : tmp as u32 }) ? ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . landed_state = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavLandedState" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_boot_us) ; for val in & self . q { __tmp . put_f32_le (* val) ; } __tmp . put_u32_le (self . q_estimated_delay_us) ; __tmp . put_f32_le (self . vx) ; __tmp . put_f32_le (self . vy) ; __tmp . put_f32_le (self . vz) ; __tmp . put_u32_le (self . v_estimated_delay_us) ; __tmp . put_f32_le (self . feed_forward_angular_velocity_z) ; __tmp . put_u16_le (self . estimator_status . bits ()) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . landed_state as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LOG_ERASE_DATA { pub target_system : u8 , pub target_component : u8 , } impl LOG_ERASE_DATA { pub const ENCODED_LEN : usize = 2usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for LOG_ERASE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for LOG_ERASE_DATA { type Message = MavMessage ; const ID : u32 = 121u32 ; const NAME : & 'static str = "LOG_ERASE" ; const EXTRA_CRC : u8 = 237u8 ; const ENCODED_LEN : usize = 2usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CAMERA_INFORMATION_DATA { pub time_boot_ms : u32 , pub firmware_version : u32 , pub focal_length : f32 , pub sensor_size_h : f32 , pub sensor_size_v : f32 , pub flags : CameraCapFlags , pub resolution_h : u16 , pub resolution_v : u16 , pub cam_definition_version : u16 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub vendor_name : [u8 ; 32] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub model_name : [u8 ; 32] , pub lens_id : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub cam_definition_uri : [u8 ; 140] , } impl CAMERA_INFORMATION_DATA { pub const ENCODED_LEN : usize = 235usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , firmware_version : 0_u32 , focal_length : 0.0_f32 , sensor_size_h : 0.0_f32 , sensor_size_v : 0.0_f32 , flags : CameraCapFlags :: DEFAULT , resolution_h : 0_u16 , resolution_v : 0_u16 , cam_definition_version : 0_u16 , vendor_name : [0_u8 ; 32usize] , model_name : [0_u8 ; 32usize] , lens_id : 0_u8 , cam_definition_uri : [0_u8 ; 140usize] , } ; } impl Default for CAMERA_INFORMATION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CAMERA_INFORMATION_DATA { type Message = MavMessage ; const ID : u32 = 259u32 ; const NAME : & 'static str = "CAMERA_INFORMATION" ; const EXTRA_CRC : u8 = 92u8 ; const ENCODED_LEN : usize = 235usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . firmware_version = buf . get_u32_le () ; __struct . focal_length = buf . get_f32_le () ; __struct . sensor_size_h = buf . get_f32_le () ; __struct . sensor_size_v = buf . get_f32_le () ; let tmp = buf . get_u32_le () ; __struct . flags = CameraCapFlags :: from_bits (tmp & CameraCapFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "CameraCapFlags" , value : tmp as u32 }) ? ; __struct . resolution_h = buf . get_u16_le () ; __struct . resolution_v = buf . get_u16_le () ; __struct . cam_definition_version = buf . get_u16_le () ; for v in & mut __struct . vendor_name { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . model_name { let val = buf . get_u8 () ; * v = val ; } __struct . lens_id = buf . get_u8 () ; for v in & mut __struct . cam_definition_uri { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_u32_le (self . firmware_version) ; __tmp . put_f32_le (self . focal_length) ; __tmp . put_f32_le (self . sensor_size_h) ; __tmp . put_f32_le (self . sensor_size_v) ; __tmp . put_u32_le (self . flags . bits ()) ; __tmp . put_u16_le (self . resolution_h) ; __tmp . put_u16_le (self . resolution_v) ; __tmp . put_u16_le (self . cam_definition_version) ; for val in & self . vendor_name { __tmp . put_u8 (* val) ; } for val in & self . model_name { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . lens_id) ; for val in & self . cam_definition_uri { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct RESOURCE_REQUEST_DATA { pub request_id : u8 , pub uri_type : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub uri : [u8 ; 120] , pub transfer_type : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub storage : [u8 ; 120] , } impl RESOURCE_REQUEST_DATA { pub const ENCODED_LEN : usize = 243usize ; pub const DEFAULT : Self = Self { request_id : 0_u8 , uri_type : 0_u8 , uri : [0_u8 ; 120usize] , transfer_type : 0_u8 , storage : [0_u8 ; 120usize] , } ; } impl Default for RESOURCE_REQUEST_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for RESOURCE_REQUEST_DATA { type Message = MavMessage ; const ID : u32 = 142u32 ; const NAME : & 'static str = "RESOURCE_REQUEST" ; const EXTRA_CRC : u8 = 72u8 ; const ENCODED_LEN : usize = 243usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . request_id = buf . get_u8 () ; __struct . uri_type = buf . get_u8 () ; for v in & mut __struct . uri { let val = buf . get_u8 () ; * v = val ; } __struct . transfer_type = buf . get_u8 () ; for v in & mut __struct . storage { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . request_id) ; __tmp . put_u8 (self . uri_type) ; for val in & self . uri { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . transfer_type) ; for val in & self . storage { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PARAM_EXT_REQUEST_READ_DATA { pub param_index : i16 , pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub param_id : [u8 ; 16] , } impl PARAM_EXT_REQUEST_READ_DATA { pub const ENCODED_LEN : usize = 20usize ; pub const DEFAULT : Self = Self { param_index : 0_i16 , target_system : 0_u8 , target_component : 0_u8 , param_id : [0_u8 ; 16usize] , } ; } impl Default for PARAM_EXT_REQUEST_READ_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for PARAM_EXT_REQUEST_READ_DATA { type Message = MavMessage ; const ID : u32 = 320u32 ; const NAME : & 'static str = "PARAM_EXT_REQUEST_READ" ; const EXTRA_CRC : u8 = 243u8 ; const ENCODED_LEN : usize = 20usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . param_index = buf . get_i16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . param_id { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i16_le (self . param_index) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . param_id { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LOCAL_POSITION_NED_DATA { pub time_boot_ms : u32 , pub x : f32 , pub y : f32 , pub z : f32 , pub vx : f32 , pub vy : f32 , pub vz : f32 , } impl LOCAL_POSITION_NED_DATA { pub const ENCODED_LEN : usize = 28usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , x : 0.0_f32 , y : 0.0_f32 , z : 0.0_f32 , vx : 0.0_f32 , vy : 0.0_f32 , vz : 0.0_f32 , } ; } impl Default for LOCAL_POSITION_NED_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for LOCAL_POSITION_NED_DATA { type Message = MavMessage ; const ID : u32 = 32u32 ; const NAME : & 'static str = "LOCAL_POSITION_NED" ; const EXTRA_CRC : u8 = 185u8 ; const ENCODED_LEN : usize = 28usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . x = buf . get_f32_le () ; __struct . y = buf . get_f32_le () ; __struct . z = buf . get_f32_le () ; __struct . vx = buf . get_f32_le () ; __struct . vy = buf . get_f32_le () ; __struct . vz = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; __tmp . put_f32_le (self . vx) ; __tmp . put_f32_le (self . vy) ; __tmp . put_f32_le (self . vz) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MANUAL_SETPOINT_DATA { pub time_boot_ms : u32 , pub roll : f32 , pub pitch : f32 , pub yaw : f32 , pub thrust : f32 , pub mode_switch : u8 , pub manual_override_switch : u8 , } impl MANUAL_SETPOINT_DATA { pub const ENCODED_LEN : usize = 22usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , roll : 0.0_f32 , pitch : 0.0_f32 , yaw : 0.0_f32 , thrust : 0.0_f32 , mode_switch : 0_u8 , manual_override_switch : 0_u8 , } ; } impl Default for MANUAL_SETPOINT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MANUAL_SETPOINT_DATA { type Message = MavMessage ; const ID : u32 = 81u32 ; const NAME : & 'static str = "MANUAL_SETPOINT" ; const EXTRA_CRC : u8 = 106u8 ; const ENCODED_LEN : usize = 22usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . roll = buf . get_f32_le () ; __struct . pitch = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; __struct . thrust = buf . get_f32_le () ; __struct . mode_switch = buf . get_u8 () ; __struct . manual_override_switch = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . roll) ; __tmp . put_f32_le (self . pitch) ; __tmp . put_f32_le (self . yaw) ; __tmp . put_f32_le (self . thrust) ; __tmp . put_u8 (self . mode_switch) ; __tmp . put_u8 (self . manual_override_switch) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LOCAL_POSITION_NED_COV_DATA { pub time_usec : u64 , pub x : f32 , pub y : f32 , pub z : f32 , pub vx : f32 , pub vy : f32 , pub vz : f32 , pub ax : f32 , pub ay : f32 , pub az : f32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub covariance : [f32 ; 45] , pub estimator_type : MavEstimatorType , } impl LOCAL_POSITION_NED_COV_DATA { pub const ENCODED_LEN : usize = 225usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , x : 0.0_f32 , y : 0.0_f32 , z : 0.0_f32 , vx : 0.0_f32 , vy : 0.0_f32 , vz : 0.0_f32 , ax : 0.0_f32 , ay : 0.0_f32 , az : 0.0_f32 , covariance : [0.0_f32 ; 45usize] , estimator_type : MavEstimatorType :: DEFAULT , } ; } impl Default for LOCAL_POSITION_NED_COV_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for LOCAL_POSITION_NED_COV_DATA { type Message = MavMessage ; const ID : u32 = 64u32 ; const NAME : & 'static str = "LOCAL_POSITION_NED_COV" ; const EXTRA_CRC : u8 = 191u8 ; const ENCODED_LEN : usize = 225usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . x = buf . get_f32_le () ; __struct . y = buf . get_f32_le () ; __struct . z = buf . get_f32_le () ; __struct . vx = buf . get_f32_le () ; __struct . vy = buf . get_f32_le () ; __struct . vz = buf . get_f32_le () ; __struct . ax = buf . get_f32_le () ; __struct . ay = buf . get_f32_le () ; __struct . az = buf . get_f32_le () ; for v in & mut __struct . covariance { let val = buf . get_f32_le () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . estimator_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavEstimatorType" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; __tmp . put_f32_le (self . vx) ; __tmp . put_f32_le (self . vy) ; __tmp . put_f32_le (self . vz) ; __tmp . put_f32_le (self . ax) ; __tmp . put_f32_le (self . ay) ; __tmp . put_f32_le (self . az) ; for val in & self . covariance { __tmp . put_f32_le (* val) ; } __tmp . put_u8 (self . estimator_type as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HIL_RC_INPUTS_RAW_DATA { pub time_usec : u64 , pub chan1_raw : u16 , pub chan2_raw : u16 , pub chan3_raw : u16 , pub chan4_raw : u16 , pub chan5_raw : u16 , pub chan6_raw : u16 , pub chan7_raw : u16 , pub chan8_raw : u16 , pub chan9_raw : u16 , pub chan10_raw : u16 , pub chan11_raw : u16 , pub chan12_raw : u16 , pub rssi : u8 , } impl HIL_RC_INPUTS_RAW_DATA { pub const ENCODED_LEN : usize = 33usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , chan1_raw : 0_u16 , chan2_raw : 0_u16 , chan3_raw : 0_u16 , chan4_raw : 0_u16 , chan5_raw : 0_u16 , chan6_raw : 0_u16 , chan7_raw : 0_u16 , chan8_raw : 0_u16 , chan9_raw : 0_u16 , chan10_raw : 0_u16 , chan11_raw : 0_u16 , chan12_raw : 0_u16 , rssi : 0_u8 , } ; } impl Default for HIL_RC_INPUTS_RAW_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for HIL_RC_INPUTS_RAW_DATA { type Message = MavMessage ; const ID : u32 = 92u32 ; const NAME : & 'static str = "HIL_RC_INPUTS_RAW" ; const EXTRA_CRC : u8 = 54u8 ; const ENCODED_LEN : usize = 33usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . chan1_raw = buf . get_u16_le () ; __struct . chan2_raw = buf . get_u16_le () ; __struct . chan3_raw = buf . get_u16_le () ; __struct . chan4_raw = buf . get_u16_le () ; __struct . chan5_raw = buf . get_u16_le () ; __struct . chan6_raw = buf . get_u16_le () ; __struct . chan7_raw = buf . get_u16_le () ; __struct . chan8_raw = buf . get_u16_le () ; __struct . chan9_raw = buf . get_u16_le () ; __struct . chan10_raw = buf . get_u16_le () ; __struct . chan11_raw = buf . get_u16_le () ; __struct . chan12_raw = buf . get_u16_le () ; __struct . rssi = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_u16_le (self . chan1_raw) ; __tmp . put_u16_le (self . chan2_raw) ; __tmp . put_u16_le (self . chan3_raw) ; __tmp . put_u16_le (self . chan4_raw) ; __tmp . put_u16_le (self . chan5_raw) ; __tmp . put_u16_le (self . chan6_raw) ; __tmp . put_u16_le (self . chan7_raw) ; __tmp . put_u16_le (self . chan8_raw) ; __tmp . put_u16_le (self . chan9_raw) ; __tmp . put_u16_le (self . chan10_raw) ; __tmp . put_u16_le (self . chan11_raw) ; __tmp . put_u16_le (self . chan12_raw) ; __tmp . put_u8 (self . rssi) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ESTIMATOR_STATUS_DATA { pub time_usec : u64 , pub vel_ratio : f32 , pub pos_horiz_ratio : f32 , pub pos_vert_ratio : f32 , pub mag_ratio : f32 , pub hagl_ratio : f32 , pub tas_ratio : f32 , pub pos_horiz_accuracy : f32 , pub pos_vert_accuracy : f32 , pub flags : EstimatorStatusFlags , } impl ESTIMATOR_STATUS_DATA { pub const ENCODED_LEN : usize = 42usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , vel_ratio : 0.0_f32 , pos_horiz_ratio : 0.0_f32 , pos_vert_ratio : 0.0_f32 , mag_ratio : 0.0_f32 , hagl_ratio : 0.0_f32 , tas_ratio : 0.0_f32 , pos_horiz_accuracy : 0.0_f32 , pos_vert_accuracy : 0.0_f32 , flags : EstimatorStatusFlags :: DEFAULT , } ; } impl Default for ESTIMATOR_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ESTIMATOR_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 230u32 ; const NAME : & 'static str = "ESTIMATOR_STATUS" ; const EXTRA_CRC : u8 = 163u8 ; const ENCODED_LEN : usize = 42usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . vel_ratio = buf . get_f32_le () ; __struct . pos_horiz_ratio = buf . get_f32_le () ; __struct . pos_vert_ratio = buf . get_f32_le () ; __struct . mag_ratio = buf . get_f32_le () ; __struct . hagl_ratio = buf . get_f32_le () ; __struct . tas_ratio = buf . get_f32_le () ; __struct . pos_horiz_accuracy = buf . get_f32_le () ; __struct . pos_vert_accuracy = buf . get_f32_le () ; let tmp = buf . get_u16_le () ; __struct . flags = EstimatorStatusFlags :: from_bits (tmp & EstimatorStatusFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "EstimatorStatusFlags" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . vel_ratio) ; __tmp . put_f32_le (self . pos_horiz_ratio) ; __tmp . put_f32_le (self . pos_vert_ratio) ; __tmp . put_f32_le (self . mag_ratio) ; __tmp . put_f32_le (self . hagl_ratio) ; __tmp . put_f32_le (self . tas_ratio) ; __tmp . put_f32_le (self . pos_horiz_accuracy) ; __tmp . put_f32_le (self . pos_vert_accuracy) ; __tmp . put_u16_le (self . flags . bits ()) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SAFETY_ALLOWED_AREA_DATA { pub p1x : f32 , pub p1y : f32 , pub p1z : f32 , pub p2x : f32 , pub p2y : f32 , pub p2z : f32 , pub frame : MavFrame , } impl SAFETY_ALLOWED_AREA_DATA { pub const ENCODED_LEN : usize = 25usize ; pub const DEFAULT : Self = Self { p1x : 0.0_f32 , p1y : 0.0_f32 , p1z : 0.0_f32 , p2x : 0.0_f32 , p2y : 0.0_f32 , p2z : 0.0_f32 , frame : MavFrame :: DEFAULT , } ; } impl Default for SAFETY_ALLOWED_AREA_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SAFETY_ALLOWED_AREA_DATA { type Message = MavMessage ; const ID : u32 = 55u32 ; const NAME : & 'static str = "SAFETY_ALLOWED_AREA" ; const EXTRA_CRC : u8 = 3u8 ; const ENCODED_LEN : usize = 25usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . p1x = buf . get_f32_le () ; __struct . p1y = buf . get_f32_le () ; __struct . p1z = buf . get_f32_le () ; __struct . p2x = buf . get_f32_le () ; __struct . p2y = buf . get_f32_le () ; __struct . p2z = buf . get_f32_le () ; let tmp = buf . get_u8 () ; __struct . frame = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavFrame" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . p1x) ; __tmp . put_f32_le (self . p1y) ; __tmp . put_f32_le (self . p1z) ; __tmp . put_f32_le (self . p2x) ; __tmp . put_f32_le (self . p2y) ; __tmp . put_f32_le (self . p2z) ; __tmp . put_u8 (self . frame as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CAMERA_TRIGGER_DATA { pub time_usec : u64 , pub seq : u32 , } impl CAMERA_TRIGGER_DATA { pub const ENCODED_LEN : usize = 12usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , seq : 0_u32 , } ; } impl Default for CAMERA_TRIGGER_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CAMERA_TRIGGER_DATA { type Message = MavMessage ; const ID : u32 = 112u32 ; const NAME : & 'static str = "CAMERA_TRIGGER" ; const EXTRA_CRC : u8 = 174u8 ; const ENCODED_LEN : usize = 12usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . seq = buf . get_u32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_u32_le (self . seq) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SCALED_IMU2_DATA { pub time_boot_ms : u32 , pub xacc : i16 , pub yacc : i16 , pub zacc : i16 , pub xgyro : i16 , pub ygyro : i16 , pub zgyro : i16 , pub xmag : i16 , pub ymag : i16 , pub zmag : i16 , } impl SCALED_IMU2_DATA { pub const ENCODED_LEN : usize = 22usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , xacc : 0_i16 , yacc : 0_i16 , zacc : 0_i16 , xgyro : 0_i16 , ygyro : 0_i16 , zgyro : 0_i16 , xmag : 0_i16 , ymag : 0_i16 , zmag : 0_i16 , } ; } impl Default for SCALED_IMU2_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SCALED_IMU2_DATA { type Message = MavMessage ; const ID : u32 = 116u32 ; const NAME : & 'static str = "SCALED_IMU2" ; const EXTRA_CRC : u8 = 76u8 ; const ENCODED_LEN : usize = 22usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . xacc = buf . get_i16_le () ; __struct . yacc = buf . get_i16_le () ; __struct . zacc = buf . get_i16_le () ; __struct . xgyro = buf . get_i16_le () ; __struct . ygyro = buf . get_i16_le () ; __struct . zgyro = buf . get_i16_le () ; __struct . xmag = buf . get_i16_le () ; __struct . ymag = buf . get_i16_le () ; __struct . zmag = buf . get_i16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_i16_le (self . xacc) ; __tmp . put_i16_le (self . yacc) ; __tmp . put_i16_le (self . zacc) ; __tmp . put_i16_le (self . xgyro) ; __tmp . put_i16_le (self . ygyro) ; __tmp . put_i16_le (self . zgyro) ; __tmp . put_i16_le (self . xmag) ; __tmp . put_i16_le (self . ymag) ; __tmp . put_i16_le (self . zmag) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct FENCE_STATUS_DATA { pub breach_time : u32 , pub breach_count : u16 , pub breach_status : u8 , pub breach_type : FenceBreach , } impl FENCE_STATUS_DATA { pub const ENCODED_LEN : usize = 8usize ; pub const DEFAULT : Self = Self { breach_time : 0_u32 , breach_count : 0_u16 , breach_status : 0_u8 , breach_type : FenceBreach :: DEFAULT , } ; } impl Default for FENCE_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for FENCE_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 162u32 ; const NAME : & 'static str = "FENCE_STATUS" ; const EXTRA_CRC : u8 = 189u8 ; const ENCODED_LEN : usize = 8usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . breach_time = buf . get_u32_le () ; __struct . breach_count = buf . get_u16_le () ; __struct . breach_status = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . breach_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "FenceBreach" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . breach_time) ; __tmp . put_u16_le (self . breach_count) ; __tmp . put_u8 (self . breach_status) ; __tmp . put_u8 (self . breach_type as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct AUTOPILOT_VERSION_DATA { pub capabilities : MavProtocolCapability , pub uid : u64 , pub flight_sw_version : u32 , pub middleware_sw_version : u32 , pub os_sw_version : u32 , pub board_version : u32 , pub vendor_id : u16 , pub product_id : u16 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub flight_custom_version : [u8 ; 8] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub middleware_custom_version : [u8 ; 8] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub os_custom_version : [u8 ; 8] , } impl AUTOPILOT_VERSION_DATA { pub const ENCODED_LEN : usize = 60usize ; pub const DEFAULT : Self = Self { capabilities : MavProtocolCapability :: DEFAULT , uid : 0_u64 , flight_sw_version : 0_u32 , middleware_sw_version : 0_u32 , os_sw_version : 0_u32 , board_version : 0_u32 , vendor_id : 0_u16 , product_id : 0_u16 , flight_custom_version : [0_u8 ; 8usize] , middleware_custom_version : [0_u8 ; 8usize] , os_custom_version : [0_u8 ; 8usize] , } ; } impl Default for AUTOPILOT_VERSION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for AUTOPILOT_VERSION_DATA { type Message = MavMessage ; const ID : u32 = 148u32 ; const NAME : & 'static str = "AUTOPILOT_VERSION" ; const EXTRA_CRC : u8 = 178u8 ; const ENCODED_LEN : usize = 60usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u64_le () ; __struct . capabilities = MavProtocolCapability :: from_bits (tmp & MavProtocolCapability :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "MavProtocolCapability" , value : tmp as u32 }) ? ; __struct . uid = buf . get_u64_le () ; __struct . flight_sw_version = buf . get_u32_le () ; __struct . middleware_sw_version = buf . get_u32_le () ; __struct . os_sw_version = buf . get_u32_le () ; __struct . board_version = buf . get_u32_le () ; __struct . vendor_id = buf . get_u16_le () ; __struct . product_id = buf . get_u16_le () ; for v in & mut __struct . flight_custom_version { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . middleware_custom_version { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . os_custom_version { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . capabilities . bits ()) ; __tmp . put_u64_le (self . uid) ; __tmp . put_u32_le (self . flight_sw_version) ; __tmp . put_u32_le (self . middleware_sw_version) ; __tmp . put_u32_le (self . os_sw_version) ; __tmp . put_u32_le (self . board_version) ; __tmp . put_u16_le (self . vendor_id) ; __tmp . put_u16_le (self . product_id) ; for val in & self . flight_custom_version { __tmp . put_u8 (* val) ; } for val in & self . middleware_custom_version { __tmp . put_u8 (* val) ; } for val in & self . os_custom_version { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ESC_STATUS_DATA { pub time_usec : u64 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub rpm : [i32 ; 4] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub voltage : [f32 ; 4] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub current : [f32 ; 4] , pub index : u8 , } impl ESC_STATUS_DATA { pub const ENCODED_LEN : usize = 57usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , rpm : [0_i32 ; 4usize] , voltage : [0.0_f32 ; 4usize] , current : [0.0_f32 ; 4usize] , index : 0_u8 , } ; } impl Default for ESC_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ESC_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 291u32 ; const NAME : & 'static str = "ESC_STATUS" ; const EXTRA_CRC : u8 = 10u8 ; const ENCODED_LEN : usize = 57usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; for v in & mut __struct . rpm { let val = buf . get_i32_le () ; * v = val ; } for v in & mut __struct . voltage { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . current { let val = buf . get_f32_le () ; * v = val ; } __struct . index = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; for val in & self . rpm { __tmp . put_i32_le (* val) ; } for val in & self . voltage { __tmp . put_f32_le (* val) ; } for val in & self . current { __tmp . put_f32_le (* val) ; } __tmp . put_u8 (self . index) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct TRAJECTORY_REPRESENTATION_BEZIER_DATA { pub time_usec : u64 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub pos_x : [f32 ; 5] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub pos_y : [f32 ; 5] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub pos_z : [f32 ; 5] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub delta : [f32 ; 5] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub pos_yaw : [f32 ; 5] , pub valid_points : u8 , } impl TRAJECTORY_REPRESENTATION_BEZIER_DATA { pub const ENCODED_LEN : usize = 109usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , pos_x : [0.0_f32 ; 5usize] , pos_y : [0.0_f32 ; 5usize] , pos_z : [0.0_f32 ; 5usize] , delta : [0.0_f32 ; 5usize] , pos_yaw : [0.0_f32 ; 5usize] , valid_points : 0_u8 , } ; } impl Default for TRAJECTORY_REPRESENTATION_BEZIER_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for TRAJECTORY_REPRESENTATION_BEZIER_DATA { type Message = MavMessage ; const ID : u32 = 333u32 ; const NAME : & 'static str = "TRAJECTORY_REPRESENTATION_BEZIER" ; const EXTRA_CRC : u8 = 231u8 ; const ENCODED_LEN : usize = 109usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; for v in & mut __struct . pos_x { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . pos_y { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . pos_z { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . delta { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . pos_yaw { let val = buf . get_f32_le () ; * v = val ; } __struct . valid_points = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; for val in & self . pos_x { __tmp . put_f32_le (* val) ; } for val in & self . pos_y { __tmp . put_f32_le (* val) ; } for val in & self . pos_z { __tmp . put_f32_le (* val) ; } for val in & self . delta { __tmp . put_f32_le (* val) ; } for val in & self . pos_yaw { __tmp . put_f32_le (* val) ; } __tmp . put_u8 (self . valid_points) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ALTITUDE_DATA { pub time_usec : u64 , pub altitude_monotonic : f32 , pub altitude_amsl : f32 , pub altitude_local : f32 , pub altitude_relative : f32 , pub altitude_terrain : f32 , pub bottom_clearance : f32 , } impl ALTITUDE_DATA { pub const ENCODED_LEN : usize = 32usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , altitude_monotonic : 0.0_f32 , altitude_amsl : 0.0_f32 , altitude_local : 0.0_f32 , altitude_relative : 0.0_f32 , altitude_terrain : 0.0_f32 , bottom_clearance : 0.0_f32 , } ; } impl Default for ALTITUDE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ALTITUDE_DATA { type Message = MavMessage ; const ID : u32 = 141u32 ; const NAME : & 'static str = "ALTITUDE" ; const EXTRA_CRC : u8 = 47u8 ; const ENCODED_LEN : usize = 32usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . altitude_monotonic = buf . get_f32_le () ; __struct . altitude_amsl = buf . get_f32_le () ; __struct . altitude_local = buf . get_f32_le () ; __struct . altitude_relative = buf . get_f32_le () ; __struct . altitude_terrain = buf . get_f32_le () ; __struct . bottom_clearance = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . altitude_monotonic) ; __tmp . put_f32_le (self . altitude_amsl) ; __tmp . put_f32_le (self . altitude_local) ; __tmp . put_f32_le (self . altitude_relative) ; __tmp . put_f32_le (self . altitude_terrain) ; __tmp . put_f32_le (self . bottom_clearance) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HIGH_LATENCY_DATA { pub custom_mode : u32 , pub latitude : i32 , pub longitude : i32 , pub roll : i16 , pub pitch : i16 , pub heading : u16 , pub heading_sp : i16 , pub altitude_amsl : i16 , pub altitude_sp : i16 , pub wp_distance : u16 , pub base_mode : MavModeFlag , pub landed_state : MavLandedState , pub throttle : i8 , pub airspeed : u8 , pub airspeed_sp : u8 , pub groundspeed : u8 , pub climb_rate : i8 , pub gps_nsat : u8 , pub gps_fix_type : GpsFixType , pub battery_remaining : u8 , pub temperature : i8 , pub temperature_air : i8 , pub failsafe : u8 , pub wp_num : u8 , } impl HIGH_LATENCY_DATA { pub const ENCODED_LEN : usize = 40usize ; pub const DEFAULT : Self = Self { custom_mode : 0_u32 , latitude : 0_i32 , longitude : 0_i32 , roll : 0_i16 , pitch : 0_i16 , heading : 0_u16 , heading_sp : 0_i16 , altitude_amsl : 0_i16 , altitude_sp : 0_i16 , wp_distance : 0_u16 , base_mode : MavModeFlag :: DEFAULT , landed_state : MavLandedState :: DEFAULT , throttle : 0_i8 , airspeed : 0_u8 , airspeed_sp : 0_u8 , groundspeed : 0_u8 , climb_rate : 0_i8 , gps_nsat : 0_u8 , gps_fix_type : GpsFixType :: DEFAULT , battery_remaining : 0_u8 , temperature : 0_i8 , temperature_air : 0_i8 , failsafe : 0_u8 , wp_num : 0_u8 , } ; } impl Default for HIGH_LATENCY_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for HIGH_LATENCY_DATA { type Message = MavMessage ; const ID : u32 = 234u32 ; const NAME : & 'static str = "HIGH_LATENCY" ; const EXTRA_CRC : u8 = 150u8 ; const ENCODED_LEN : usize = 40usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . custom_mode = buf . get_u32_le () ; __struct . latitude = buf . get_i32_le () ; __struct . longitude = buf . get_i32_le () ; __struct . roll = buf . get_i16_le () ; __struct . pitch = buf . get_i16_le () ; __struct . heading = buf . get_u16_le () ; __struct . heading_sp = buf . get_i16_le () ; __struct . altitude_amsl = buf . get_i16_le () ; __struct . altitude_sp = buf . get_i16_le () ; __struct . wp_distance = buf . get_u16_le () ; let tmp = buf . get_u8 () ; __struct . base_mode = MavModeFlag :: from_bits (tmp & MavModeFlag :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "MavModeFlag" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . landed_state = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavLandedState" , value : tmp as u32 }) ? ; __struct . throttle = buf . get_i8 () ; __struct . airspeed = buf . get_u8 () ; __struct . airspeed_sp = buf . get_u8 () ; __struct . groundspeed = buf . get_u8 () ; __struct . climb_rate = buf . get_i8 () ; __struct . gps_nsat = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . gps_fix_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "GpsFixType" , value : tmp as u32 }) ? ; __struct . battery_remaining = buf . get_u8 () ; __struct . temperature = buf . get_i8 () ; __struct . temperature_air = buf . get_i8 () ; __struct . failsafe = buf . get_u8 () ; __struct . wp_num = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . custom_mode) ; __tmp . put_i32_le (self . latitude) ; __tmp . put_i32_le (self . longitude) ; __tmp . put_i16_le (self . roll) ; __tmp . put_i16_le (self . pitch) ; __tmp . put_u16_le (self . heading) ; __tmp . put_i16_le (self . heading_sp) ; __tmp . put_i16_le (self . altitude_amsl) ; __tmp . put_i16_le (self . altitude_sp) ; __tmp . put_u16_le (self . wp_distance) ; __tmp . put_u8 (self . base_mode . bits ()) ; __tmp . put_u8 (self . landed_state as u8) ; __tmp . put_i8 (self . throttle) ; __tmp . put_u8 (self . airspeed) ; __tmp . put_u8 (self . airspeed_sp) ; __tmp . put_u8 (self . groundspeed) ; __tmp . put_i8 (self . climb_rate) ; __tmp . put_u8 (self . gps_nsat) ; __tmp . put_u8 (self . gps_fix_type as u8) ; __tmp . put_u8 (self . battery_remaining) ; __tmp . put_i8 (self . temperature) ; __tmp . put_i8 (self . temperature_air) ; __tmp . put_u8 (self . failsafe) ; __tmp . put_u8 (self . wp_num) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SCALED_PRESSURE2_DATA { pub time_boot_ms : u32 , pub press_abs : f32 , pub press_diff : f32 , pub temperature : i16 , } impl SCALED_PRESSURE2_DATA { pub const ENCODED_LEN : usize = 14usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , press_abs : 0.0_f32 , press_diff : 0.0_f32 , temperature : 0_i16 , } ; } impl Default for SCALED_PRESSURE2_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SCALED_PRESSURE2_DATA { type Message = MavMessage ; const ID : u32 = 137u32 ; const NAME : & 'static str = "SCALED_PRESSURE2" ; const EXTRA_CRC : u8 = 195u8 ; const ENCODED_LEN : usize = 14usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . press_abs = buf . get_f32_le () ; __struct . press_diff = buf . get_f32_le () ; __struct . temperature = buf . get_i16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . press_abs) ; __tmp . put_f32_le (self . press_diff) ; __tmp . put_i16_le (self . temperature) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GIMBAL_DEVICE_SET_ATTITUDE_DATA { # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub q : [f32 ; 4] , pub angular_velocity_x : f32 , pub angular_velocity_y : f32 , pub angular_velocity_z : f32 , pub flags : GimbalDeviceFlags , pub target_system : u8 , pub target_component : u8 , } impl GIMBAL_DEVICE_SET_ATTITUDE_DATA { pub const ENCODED_LEN : usize = 32usize ; pub const DEFAULT : Self = Self { q : [0.0_f32 ; 4usize] , angular_velocity_x : 0.0_f32 , angular_velocity_y : 0.0_f32 , angular_velocity_z : 0.0_f32 , flags : GimbalDeviceFlags :: DEFAULT , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for GIMBAL_DEVICE_SET_ATTITUDE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GIMBAL_DEVICE_SET_ATTITUDE_DATA { type Message = MavMessage ; const ID : u32 = 284u32 ; const NAME : & 'static str = "GIMBAL_DEVICE_SET_ATTITUDE" ; const EXTRA_CRC : u8 = 99u8 ; const ENCODED_LEN : usize = 32usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; for v in & mut __struct . q { let val = buf . get_f32_le () ; * v = val ; } __struct . angular_velocity_x = buf . get_f32_le () ; __struct . angular_velocity_y = buf . get_f32_le () ; __struct . angular_velocity_z = buf . get_f32_le () ; let tmp = buf . get_u16_le () ; __struct . flags = GimbalDeviceFlags :: from_bits (tmp & GimbalDeviceFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "GimbalDeviceFlags" , value : tmp as u32 }) ? ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; for val in & self . q { __tmp . put_f32_le (* val) ; } __tmp . put_f32_le (self . angular_velocity_x) ; __tmp . put_f32_le (self . angular_velocity_y) ; __tmp . put_f32_le (self . angular_velocity_z) ; __tmp . put_u16_le (self . flags . bits ()) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct VISION_SPEED_ESTIMATE_DATA { pub usec : u64 , pub x : f32 , pub y : f32 , pub z : f32 , } impl VISION_SPEED_ESTIMATE_DATA { pub const ENCODED_LEN : usize = 20usize ; pub const DEFAULT : Self = Self { usec : 0_u64 , x : 0.0_f32 , y : 0.0_f32 , z : 0.0_f32 , } ; } impl Default for VISION_SPEED_ESTIMATE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for VISION_SPEED_ESTIMATE_DATA { type Message = MavMessage ; const ID : u32 = 103u32 ; const NAME : & 'static str = "VISION_SPEED_ESTIMATE" ; const EXTRA_CRC : u8 = 208u8 ; const ENCODED_LEN : usize = 20usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . usec = buf . get_u64_le () ; __struct . x = buf . get_f32_le () ; __struct . y = buf . get_f32_le () ; __struct . z = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . usec) ; __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct FILE_TRANSFER_PROTOCOL_DATA { pub target_network : u8 , pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub payload : [u8 ; 251] , } impl FILE_TRANSFER_PROTOCOL_DATA { pub const ENCODED_LEN : usize = 254usize ; pub const DEFAULT : Self = Self { target_network : 0_u8 , target_system : 0_u8 , target_component : 0_u8 , payload : [0_u8 ; 251usize] , } ; } impl Default for FILE_TRANSFER_PROTOCOL_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for FILE_TRANSFER_PROTOCOL_DATA { type Message = MavMessage ; const ID : u32 = 110u32 ; const NAME : & 'static str = "FILE_TRANSFER_PROTOCOL" ; const EXTRA_CRC : u8 = 84u8 ; const ENCODED_LEN : usize = 254usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_network = buf . get_u8 () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . payload { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_network) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . payload { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MISSION_REQUEST_DATA { pub seq : u16 , pub target_system : u8 , pub target_component : u8 , } impl MISSION_REQUEST_DATA { pub const ENCODED_LEN : usize = 4usize ; pub const DEFAULT : Self = Self { seq : 0_u16 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for MISSION_REQUEST_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MISSION_REQUEST_DATA { type Message = MavMessage ; const ID : u32 = 40u32 ; const NAME : & 'static str = "MISSION_REQUEST" ; const EXTRA_CRC : u8 = 230u8 ; const ENCODED_LEN : usize = 4usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . seq = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . seq) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct RESPONSE_EVENT_ERROR_DATA { pub sequence : u16 , pub sequence_oldest_available : u16 , pub target_system : u8 , pub target_component : u8 , pub reason : MavEventErrorReason , } impl RESPONSE_EVENT_ERROR_DATA { pub const ENCODED_LEN : usize = 7usize ; pub const DEFAULT : Self = Self { sequence : 0_u16 , sequence_oldest_available : 0_u16 , target_system : 0_u8 , target_component : 0_u8 , reason : MavEventErrorReason :: DEFAULT , } ; } impl Default for RESPONSE_EVENT_ERROR_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for RESPONSE_EVENT_ERROR_DATA { type Message = MavMessage ; const ID : u32 = 413u32 ; const NAME : & 'static str = "RESPONSE_EVENT_ERROR" ; const EXTRA_CRC : u8 = 77u8 ; const ENCODED_LEN : usize = 7usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . sequence = buf . get_u16_le () ; __struct . sequence_oldest_available = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . reason = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavEventErrorReason" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . sequence) ; __tmp . put_u16_le (self . sequence_oldest_available) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . reason as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct NAV_CONTROLLER_OUTPUT_DATA { pub nav_roll : f32 , pub nav_pitch : f32 , pub alt_error : f32 , pub aspd_error : f32 , pub xtrack_error : f32 , pub nav_bearing : i16 , pub target_bearing : i16 , pub wp_dist : u16 , } impl NAV_CONTROLLER_OUTPUT_DATA { pub const ENCODED_LEN : usize = 26usize ; pub const DEFAULT : Self = Self { nav_roll : 0.0_f32 , nav_pitch : 0.0_f32 , alt_error : 0.0_f32 , aspd_error : 0.0_f32 , xtrack_error : 0.0_f32 , nav_bearing : 0_i16 , target_bearing : 0_i16 , wp_dist : 0_u16 , } ; } impl Default for NAV_CONTROLLER_OUTPUT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for NAV_CONTROLLER_OUTPUT_DATA { type Message = MavMessage ; const ID : u32 = 62u32 ; const NAME : & 'static str = "NAV_CONTROLLER_OUTPUT" ; const EXTRA_CRC : u8 = 183u8 ; const ENCODED_LEN : usize = 26usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . nav_roll = buf . get_f32_le () ; __struct . nav_pitch = buf . get_f32_le () ; __struct . alt_error = buf . get_f32_le () ; __struct . aspd_error = buf . get_f32_le () ; __struct . xtrack_error = buf . get_f32_le () ; __struct . nav_bearing = buf . get_i16_le () ; __struct . target_bearing = buf . get_i16_le () ; __struct . wp_dist = buf . get_u16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . nav_roll) ; __tmp . put_f32_le (self . nav_pitch) ; __tmp . put_f32_le (self . alt_error) ; __tmp . put_f32_le (self . aspd_error) ; __tmp . put_f32_le (self . xtrack_error) ; __tmp . put_i16_le (self . nav_bearing) ; __tmp . put_i16_le (self . target_bearing) ; __tmp . put_u16_le (self . wp_dist) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SYS_STATUS_DATA { pub onboard_control_sensors_present : MavSysStatusSensor , pub onboard_control_sensors_enabled : MavSysStatusSensor , pub onboard_control_sensors_health : MavSysStatusSensor , pub load : u16 , pub voltage_battery : u16 , pub current_battery : i16 , pub drop_rate_comm : u16 , pub errors_comm : u16 , pub errors_count1 : u16 , pub errors_count2 : u16 , pub errors_count3 : u16 , pub errors_count4 : u16 , pub battery_remaining : i8 , } impl SYS_STATUS_DATA { pub const ENCODED_LEN : usize = 31usize ; pub const DEFAULT : Self = Self { onboard_control_sensors_present : MavSysStatusSensor :: DEFAULT , onboard_control_sensors_enabled : MavSysStatusSensor :: DEFAULT , onboard_control_sensors_health : MavSysStatusSensor :: DEFAULT , load : 0_u16 , voltage_battery : 0_u16 , current_battery : 0_i16 , drop_rate_comm : 0_u16 , errors_comm : 0_u16 , errors_count1 : 0_u16 , errors_count2 : 0_u16 , errors_count3 : 0_u16 , errors_count4 : 0_u16 , battery_remaining : 0_i8 , } ; } impl Default for SYS_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SYS_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 1u32 ; const NAME : & 'static str = "SYS_STATUS" ; const EXTRA_CRC : u8 = 124u8 ; const ENCODED_LEN : usize = 31usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u32_le () ; __struct . onboard_control_sensors_present = MavSysStatusSensor :: from_bits (tmp & MavSysStatusSensor :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "MavSysStatusSensor" , value : tmp as u32 }) ? ; let tmp = buf . get_u32_le () ; __struct . onboard_control_sensors_enabled = MavSysStatusSensor :: from_bits (tmp & MavSysStatusSensor :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "MavSysStatusSensor" , value : tmp as u32 }) ? ; let tmp = buf . get_u32_le () ; __struct . onboard_control_sensors_health = MavSysStatusSensor :: from_bits (tmp & MavSysStatusSensor :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "MavSysStatusSensor" , value : tmp as u32 }) ? ; __struct . load = buf . get_u16_le () ; __struct . voltage_battery = buf . get_u16_le () ; __struct . current_battery = buf . get_i16_le () ; __struct . drop_rate_comm = buf . get_u16_le () ; __struct . errors_comm = buf . get_u16_le () ; __struct . errors_count1 = buf . get_u16_le () ; __struct . errors_count2 = buf . get_u16_le () ; __struct . errors_count3 = buf . get_u16_le () ; __struct . errors_count4 = buf . get_u16_le () ; __struct . battery_remaining = buf . get_i8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . onboard_control_sensors_present . bits ()) ; __tmp . put_u32_le (self . onboard_control_sensors_enabled . bits ()) ; __tmp . put_u32_le (self . onboard_control_sensors_health . bits ()) ; __tmp . put_u16_le (self . load) ; __tmp . put_u16_le (self . voltage_battery) ; __tmp . put_i16_le (self . current_battery) ; __tmp . put_u16_le (self . drop_rate_comm) ; __tmp . put_u16_le (self . errors_comm) ; __tmp . put_u16_le (self . errors_count1) ; __tmp . put_u16_le (self . errors_count2) ; __tmp . put_u16_le (self . errors_count3) ; __tmp . put_u16_le (self . errors_count4) ; __tmp . put_i8 (self . battery_remaining) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LOG_DATA_DATA { pub ofs : u32 , pub id : u16 , pub count : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub data : [u8 ; 90] , } impl LOG_DATA_DATA { pub const ENCODED_LEN : usize = 97usize ; pub const DEFAULT : Self = Self { ofs : 0_u32 , id : 0_u16 , count : 0_u8 , data : [0_u8 ; 90usize] , } ; } impl Default for LOG_DATA_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for LOG_DATA_DATA { type Message = MavMessage ; const ID : u32 = 120u32 ; const NAME : & 'static str = "LOG_DATA" ; const EXTRA_CRC : u8 = 134u8 ; const ENCODED_LEN : usize = 97usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . ofs = buf . get_u32_le () ; __struct . id = buf . get_u16_le () ; __struct . count = buf . get_u8 () ; for v in & mut __struct . data { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . ofs) ; __tmp . put_u16_le (self . id) ; __tmp . put_u8 (self . count) ; for val in & self . data { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CHANGE_OPERATOR_CONTROL_DATA { pub target_system : u8 , pub control_request : u8 , pub version : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub passkey : [u8 ; 25] , } impl CHANGE_OPERATOR_CONTROL_DATA { pub const ENCODED_LEN : usize = 28usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , control_request : 0_u8 , version : 0_u8 , passkey : [0_u8 ; 25usize] , } ; } impl Default for CHANGE_OPERATOR_CONTROL_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CHANGE_OPERATOR_CONTROL_DATA { type Message = MavMessage ; const ID : u32 = 5u32 ; const NAME : & 'static str = "CHANGE_OPERATOR_CONTROL" ; const EXTRA_CRC : u8 = 217u8 ; const ENCODED_LEN : usize = 28usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . control_request = buf . get_u8 () ; __struct . version = buf . get_u8 () ; for v in & mut __struct . passkey { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . control_request) ; __tmp . put_u8 (self . version) ; for val in & self . passkey { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct COMMAND_ACK_DATA { pub command : MavCmd , pub result : MavResult , } impl COMMAND_ACK_DATA { pub const ENCODED_LEN : usize = 3usize ; pub const DEFAULT : Self = Self { command : MavCmd :: DEFAULT , result : MavResult :: DEFAULT , } ; } impl Default for COMMAND_ACK_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for COMMAND_ACK_DATA { type Message = MavMessage ; const ID : u32 = 77u32 ; const NAME : & 'static str = "COMMAND_ACK" ; const EXTRA_CRC : u8 = 143u8 ; const ENCODED_LEN : usize = 3usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u16_le () ; __struct . command = FromPrimitive :: from_u16 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavCmd" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . result = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavResult" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . command as u16) ; __tmp . put_u8 (self . result as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HIL_OPTICAL_FLOW_DATA { pub time_usec : u64 , pub integration_time_us : u32 , pub integrated_x : f32 , pub integrated_y : f32 , pub integrated_xgyro : f32 , pub integrated_ygyro : f32 , pub integrated_zgyro : f32 , pub time_delta_distance_us : u32 , pub distance : f32 , pub temperature : i16 , pub sensor_id : u8 , pub quality : u8 , } impl HIL_OPTICAL_FLOW_DATA { pub const ENCODED_LEN : usize = 44usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , integration_time_us : 0_u32 , integrated_x : 0.0_f32 , integrated_y : 0.0_f32 , integrated_xgyro : 0.0_f32 , integrated_ygyro : 0.0_f32 , integrated_zgyro : 0.0_f32 , time_delta_distance_us : 0_u32 , distance : 0.0_f32 , temperature : 0_i16 , sensor_id : 0_u8 , quality : 0_u8 , } ; } impl Default for HIL_OPTICAL_FLOW_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for HIL_OPTICAL_FLOW_DATA { type Message = MavMessage ; const ID : u32 = 114u32 ; const NAME : & 'static str = "HIL_OPTICAL_FLOW" ; const EXTRA_CRC : u8 = 237u8 ; const ENCODED_LEN : usize = 44usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . integration_time_us = buf . get_u32_le () ; __struct . integrated_x = buf . get_f32_le () ; __struct . integrated_y = buf . get_f32_le () ; __struct . integrated_xgyro = buf . get_f32_le () ; __struct . integrated_ygyro = buf . get_f32_le () ; __struct . integrated_zgyro = buf . get_f32_le () ; __struct . time_delta_distance_us = buf . get_u32_le () ; __struct . distance = buf . get_f32_le () ; __struct . temperature = buf . get_i16_le () ; __struct . sensor_id = buf . get_u8 () ; __struct . quality = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_u32_le (self . integration_time_us) ; __tmp . put_f32_le (self . integrated_x) ; __tmp . put_f32_le (self . integrated_y) ; __tmp . put_f32_le (self . integrated_xgyro) ; __tmp . put_f32_le (self . integrated_ygyro) ; __tmp . put_f32_le (self . integrated_zgyro) ; __tmp . put_u32_le (self . time_delta_distance_us) ; __tmp . put_f32_le (self . distance) ; __tmp . put_i16_le (self . temperature) ; __tmp . put_u8 (self . sensor_id) ; __tmp . put_u8 (self . quality) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ORBIT_EXECUTION_STATUS_DATA { pub time_usec : u64 , pub radius : f32 , pub x : i32 , pub y : i32 , pub z : f32 , pub frame : MavFrame , } impl ORBIT_EXECUTION_STATUS_DATA { pub const ENCODED_LEN : usize = 25usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , radius : 0.0_f32 , x : 0_i32 , y : 0_i32 , z : 0.0_f32 , frame : MavFrame :: DEFAULT , } ; } impl Default for ORBIT_EXECUTION_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ORBIT_EXECUTION_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 360u32 ; const NAME : & 'static str = "ORBIT_EXECUTION_STATUS" ; const EXTRA_CRC : u8 = 11u8 ; const ENCODED_LEN : usize = 25usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . radius = buf . get_f32_le () ; __struct . x = buf . get_i32_le () ; __struct . y = buf . get_i32_le () ; __struct . z = buf . get_f32_le () ; let tmp = buf . get_u8 () ; __struct . frame = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavFrame" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . radius) ; __tmp . put_i32_le (self . x) ; __tmp . put_i32_le (self . y) ; __tmp . put_f32_le (self . z) ; __tmp . put_u8 (self . frame as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct DEBUG_VECT_DATA { pub time_usec : u64 , pub x : f32 , pub y : f32 , pub z : f32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub name : [u8 ; 10] , } impl DEBUG_VECT_DATA { pub const ENCODED_LEN : usize = 30usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , x : 0.0_f32 , y : 0.0_f32 , z : 0.0_f32 , name : [0_u8 ; 10usize] , } ; } impl Default for DEBUG_VECT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for DEBUG_VECT_DATA { type Message = MavMessage ; const ID : u32 = 250u32 ; const NAME : & 'static str = "DEBUG_VECT" ; const EXTRA_CRC : u8 = 49u8 ; const ENCODED_LEN : usize = 30usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . x = buf . get_f32_le () ; __struct . y = buf . get_f32_le () ; __struct . z = buf . get_f32_le () ; for v in & mut __struct . name { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; for val in & self . name { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA { pub time_usec : u64 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub pos_x : [f32 ; 5] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub pos_y : [f32 ; 5] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub pos_z : [f32 ; 5] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub vel_x : [f32 ; 5] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub vel_y : [f32 ; 5] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub vel_z : [f32 ; 5] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub acc_x : [f32 ; 5] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub acc_y : [f32 ; 5] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub acc_z : [f32 ; 5] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub pos_yaw : [f32 ; 5] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub vel_yaw : [f32 ; 5] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub command : [u16 ; 5] , pub valid_points : u8 , } impl TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA { pub const ENCODED_LEN : usize = 239usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , pos_x : [0.0_f32 ; 5usize] , pos_y : [0.0_f32 ; 5usize] , pos_z : [0.0_f32 ; 5usize] , vel_x : [0.0_f32 ; 5usize] , vel_y : [0.0_f32 ; 5usize] , vel_z : [0.0_f32 ; 5usize] , acc_x : [0.0_f32 ; 5usize] , acc_y : [0.0_f32 ; 5usize] , acc_z : [0.0_f32 ; 5usize] , pos_yaw : [0.0_f32 ; 5usize] , vel_yaw : [0.0_f32 ; 5usize] , command : [0_u16 ; 5usize] , valid_points : 0_u8 , } ; } impl Default for TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA { type Message = MavMessage ; const ID : u32 = 332u32 ; const NAME : & 'static str = "TRAJECTORY_REPRESENTATION_WAYPOINTS" ; const EXTRA_CRC : u8 = 236u8 ; const ENCODED_LEN : usize = 239usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; for v in & mut __struct . pos_x { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . pos_y { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . pos_z { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . vel_x { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . vel_y { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . vel_z { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . acc_x { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . acc_y { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . acc_z { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . pos_yaw { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . vel_yaw { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . command { let val = buf . get_u16_le () ; * v = val ; } __struct . valid_points = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; for val in & self . pos_x { __tmp . put_f32_le (* val) ; } for val in & self . pos_y { __tmp . put_f32_le (* val) ; } for val in & self . pos_z { __tmp . put_f32_le (* val) ; } for val in & self . vel_x { __tmp . put_f32_le (* val) ; } for val in & self . vel_y { __tmp . put_f32_le (* val) ; } for val in & self . vel_z { __tmp . put_f32_le (* val) ; } for val in & self . acc_x { __tmp . put_f32_le (* val) ; } for val in & self . acc_y { __tmp . put_f32_le (* val) ; } for val in & self . acc_z { __tmp . put_f32_le (* val) ; } for val in & self . pos_yaw { __tmp . put_f32_le (* val) ; } for val in & self . vel_yaw { __tmp . put_f32_le (* val) ; } for val in & self . command { __tmp . put_u16_le (* val) ; } __tmp . put_u8 (self . valid_points) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SMART_BATTERY_INFO_DATA { pub capacity_full_specification : i32 , pub capacity_full : i32 , pub cycle_count : u16 , pub weight : u16 , pub discharge_minimum_voltage : u16 , pub charging_minimum_voltage : u16 , pub resting_minimum_voltage : u16 , pub id : u8 , pub battery_function : MavBatteryFunction , pub mavtype : MavBatteryType , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub serial_number : [u8 ; 16] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub device_name : [u8 ; 50] , } impl SMART_BATTERY_INFO_DATA { pub const ENCODED_LEN : usize = 87usize ; pub const DEFAULT : Self = Self { capacity_full_specification : 0_i32 , capacity_full : 0_i32 , cycle_count : 0_u16 , weight : 0_u16 , discharge_minimum_voltage : 0_u16 , charging_minimum_voltage : 0_u16 , resting_minimum_voltage : 0_u16 , id : 0_u8 , battery_function : MavBatteryFunction :: DEFAULT , mavtype : MavBatteryType :: DEFAULT , serial_number : [0_u8 ; 16usize] , device_name : [0_u8 ; 50usize] , } ; } impl Default for SMART_BATTERY_INFO_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SMART_BATTERY_INFO_DATA { type Message = MavMessage ; const ID : u32 = 370u32 ; const NAME : & 'static str = "SMART_BATTERY_INFO" ; const EXTRA_CRC : u8 = 75u8 ; const ENCODED_LEN : usize = 87usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . capacity_full_specification = buf . get_i32_le () ; __struct . capacity_full = buf . get_i32_le () ; __struct . cycle_count = buf . get_u16_le () ; __struct . weight = buf . get_u16_le () ; __struct . discharge_minimum_voltage = buf . get_u16_le () ; __struct . charging_minimum_voltage = buf . get_u16_le () ; __struct . resting_minimum_voltage = buf . get_u16_le () ; __struct . id = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . battery_function = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavBatteryFunction" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . mavtype = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavBatteryType" , value : tmp as u32 }) ? ; for v in & mut __struct . serial_number { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . device_name { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . capacity_full_specification) ; __tmp . put_i32_le (self . capacity_full) ; __tmp . put_u16_le (self . cycle_count) ; __tmp . put_u16_le (self . weight) ; __tmp . put_u16_le (self . discharge_minimum_voltage) ; __tmp . put_u16_le (self . charging_minimum_voltage) ; __tmp . put_u16_le (self . resting_minimum_voltage) ; __tmp . put_u8 (self . id) ; __tmp . put_u8 (self . battery_function as u8) ; __tmp . put_u8 (self . mavtype as u8) ; for val in & self . serial_number { __tmp . put_u8 (* val) ; } for val in & self . device_name { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PARAM_MAP_RC_DATA { pub param_value0 : f32 , pub scale : f32 , pub param_value_min : f32 , pub param_value_max : f32 , pub param_index : i16 , pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub param_id : [u8 ; 16] , pub parameter_rc_channel_index : u8 , } impl PARAM_MAP_RC_DATA { pub const ENCODED_LEN : usize = 37usize ; pub const DEFAULT : Self = Self { param_value0 : 0.0_f32 , scale : 0.0_f32 , param_value_min : 0.0_f32 , param_value_max : 0.0_f32 , param_index : 0_i16 , target_system : 0_u8 , target_component : 0_u8 , param_id : [0_u8 ; 16usize] , parameter_rc_channel_index : 0_u8 , } ; } impl Default for PARAM_MAP_RC_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for PARAM_MAP_RC_DATA { type Message = MavMessage ; const ID : u32 = 50u32 ; const NAME : & 'static str = "PARAM_MAP_RC" ; const EXTRA_CRC : u8 = 78u8 ; const ENCODED_LEN : usize = 37usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . param_value0 = buf . get_f32_le () ; __struct . scale = buf . get_f32_le () ; __struct . param_value_min = buf . get_f32_le () ; __struct . param_value_max = buf . get_f32_le () ; __struct . param_index = buf . get_i16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . param_id { let val = buf . get_u8 () ; * v = val ; } __struct . parameter_rc_channel_index = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . param_value0) ; __tmp . put_f32_le (self . scale) ; __tmp . put_f32_le (self . param_value_min) ; __tmp . put_f32_le (self . param_value_max) ; __tmp . put_i16_le (self . param_index) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . param_id { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . parameter_rc_channel_index) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MISSION_ITEM_INT_DATA { pub param1 : f32 , pub param2 : f32 , pub param3 : f32 , pub param4 : f32 , pub x : i32 , pub y : i32 , pub z : f32 , pub seq : u16 , pub command : MavCmd , pub target_system : u8 , pub target_component : u8 , pub frame : MavFrame , pub current : u8 , pub autocontinue : u8 , } impl MISSION_ITEM_INT_DATA { pub const ENCODED_LEN : usize = 37usize ; pub const DEFAULT : Self = Self { param1 : 0.0_f32 , param2 : 0.0_f32 , param3 : 0.0_f32 , param4 : 0.0_f32 , x : 0_i32 , y : 0_i32 , z : 0.0_f32 , seq : 0_u16 , command : MavCmd :: DEFAULT , target_system : 0_u8 , target_component : 0_u8 , frame : MavFrame :: DEFAULT , current : 0_u8 , autocontinue : 0_u8 , } ; } impl Default for MISSION_ITEM_INT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MISSION_ITEM_INT_DATA { type Message = MavMessage ; const ID : u32 = 73u32 ; const NAME : & 'static str = "MISSION_ITEM_INT" ; const EXTRA_CRC : u8 = 38u8 ; const ENCODED_LEN : usize = 37usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . param1 = buf . get_f32_le () ; __struct . param2 = buf . get_f32_le () ; __struct . param3 = buf . get_f32_le () ; __struct . param4 = buf . get_f32_le () ; __struct . x = buf . get_i32_le () ; __struct . y = buf . get_i32_le () ; __struct . z = buf . get_f32_le () ; __struct . seq = buf . get_u16_le () ; let tmp = buf . get_u16_le () ; __struct . command = FromPrimitive :: from_u16 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavCmd" , value : tmp as u32 }) ? ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . frame = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavFrame" , value : tmp as u32 }) ? ; __struct . current = buf . get_u8 () ; __struct . autocontinue = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . param1) ; __tmp . put_f32_le (self . param2) ; __tmp . put_f32_le (self . param3) ; __tmp . put_f32_le (self . param4) ; __tmp . put_i32_le (self . x) ; __tmp . put_i32_le (self . y) ; __tmp . put_f32_le (self . z) ; __tmp . put_u16_le (self . seq) ; __tmp . put_u16_le (self . command as u16) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . frame as u8) ; __tmp . put_u8 (self . current) ; __tmp . put_u8 (self . autocontinue) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct WIND_COV_DATA { pub time_usec : u64 , pub wind_x : f32 , pub wind_y : f32 , pub wind_z : f32 , pub var_horiz : f32 , pub var_vert : f32 , pub wind_alt : f32 , pub horiz_accuracy : f32 , pub vert_accuracy : f32 , } impl WIND_COV_DATA { pub const ENCODED_LEN : usize = 40usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , wind_x : 0.0_f32 , wind_y : 0.0_f32 , wind_z : 0.0_f32 , var_horiz : 0.0_f32 , var_vert : 0.0_f32 , wind_alt : 0.0_f32 , horiz_accuracy : 0.0_f32 , vert_accuracy : 0.0_f32 , } ; } impl Default for WIND_COV_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for WIND_COV_DATA { type Message = MavMessage ; const ID : u32 = 231u32 ; const NAME : & 'static str = "WIND_COV" ; const EXTRA_CRC : u8 = 105u8 ; const ENCODED_LEN : usize = 40usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . wind_x = buf . get_f32_le () ; __struct . wind_y = buf . get_f32_le () ; __struct . wind_z = buf . get_f32_le () ; __struct . var_horiz = buf . get_f32_le () ; __struct . var_vert = buf . get_f32_le () ; __struct . wind_alt = buf . get_f32_le () ; __struct . horiz_accuracy = buf . get_f32_le () ; __struct . vert_accuracy = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . wind_x) ; __tmp . put_f32_le (self . wind_y) ; __tmp . put_f32_le (self . wind_z) ; __tmp . put_f32_le (self . var_horiz) ; __tmp . put_f32_le (self . var_vert) ; __tmp . put_f32_le (self . wind_alt) ; __tmp . put_f32_le (self . horiz_accuracy) ; __tmp . put_f32_le (self . vert_accuracy) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MANUAL_CONTROL_DATA { pub x : i16 , pub y : i16 , pub z : i16 , pub r : i16 , pub buttons : u16 , pub target : u8 , } impl MANUAL_CONTROL_DATA { pub const ENCODED_LEN : usize = 11usize ; pub const DEFAULT : Self = Self { x : 0_i16 , y : 0_i16 , z : 0_i16 , r : 0_i16 , buttons : 0_u16 , target : 0_u8 , } ; } impl Default for MANUAL_CONTROL_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MANUAL_CONTROL_DATA { type Message = MavMessage ; const ID : u32 = 69u32 ; const NAME : & 'static str = "MANUAL_CONTROL" ; const EXTRA_CRC : u8 = 243u8 ; const ENCODED_LEN : usize = 11usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . x = buf . get_i16_le () ; __struct . y = buf . get_i16_le () ; __struct . z = buf . get_i16_le () ; __struct . r = buf . get_i16_le () ; __struct . buttons = buf . get_u16_le () ; __struct . target = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i16_le (self . x) ; __tmp . put_i16_le (self . y) ; __tmp . put_i16_le (self . z) ; __tmp . put_i16_le (self . r) ; __tmp . put_u16_le (self . buttons) ; __tmp . put_u8 (self . target) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LOG_REQUEST_LIST_DATA { pub start : u16 , pub end : u16 , pub target_system : u8 , pub target_component : u8 , } impl LOG_REQUEST_LIST_DATA { pub const ENCODED_LEN : usize = 6usize ; pub const DEFAULT : Self = Self { start : 0_u16 , end : 0_u16 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for LOG_REQUEST_LIST_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for LOG_REQUEST_LIST_DATA { type Message = MavMessage ; const ID : u32 = 117u32 ; const NAME : & 'static str = "LOG_REQUEST_LIST" ; const EXTRA_CRC : u8 = 128u8 ; const ENCODED_LEN : usize = 6usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . start = buf . get_u16_le () ; __struct . end = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . start) ; __tmp . put_u16_le (self . end) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GLOBAL_VISION_POSITION_ESTIMATE_DATA { pub usec : u64 , pub x : f32 , pub y : f32 , pub z : f32 , pub roll : f32 , pub pitch : f32 , pub yaw : f32 , } impl GLOBAL_VISION_POSITION_ESTIMATE_DATA { pub const ENCODED_LEN : usize = 32usize ; pub const DEFAULT : Self = Self { usec : 0_u64 , x : 0.0_f32 , y : 0.0_f32 , z : 0.0_f32 , roll : 0.0_f32 , pitch : 0.0_f32 , yaw : 0.0_f32 , } ; } impl Default for GLOBAL_VISION_POSITION_ESTIMATE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GLOBAL_VISION_POSITION_ESTIMATE_DATA { type Message = MavMessage ; const ID : u32 = 101u32 ; const NAME : & 'static str = "GLOBAL_VISION_POSITION_ESTIMATE" ; const EXTRA_CRC : u8 = 102u8 ; const ENCODED_LEN : usize = 32usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . usec = buf . get_u64_le () ; __struct . x = buf . get_f32_le () ; __struct . y = buf . get_f32_le () ; __struct . z = buf . get_f32_le () ; __struct . roll = buf . get_f32_le () ; __struct . pitch = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . usec) ; __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; __tmp . put_f32_le (self . roll) ; __tmp . put_f32_le (self . pitch) ; __tmp . put_f32_le (self . yaw) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct TIME_ESTIMATE_TO_TARGET_DATA { pub safe_return : i32 , pub land : i32 , pub mission_next_item : i32 , pub mission_end : i32 , pub commanded_action : i32 , } impl TIME_ESTIMATE_TO_TARGET_DATA { pub const ENCODED_LEN : usize = 20usize ; pub const DEFAULT : Self = Self { safe_return : 0_i32 , land : 0_i32 , mission_next_item : 0_i32 , mission_end : 0_i32 , commanded_action : 0_i32 , } ; } impl Default for TIME_ESTIMATE_TO_TARGET_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for TIME_ESTIMATE_TO_TARGET_DATA { type Message = MavMessage ; const ID : u32 = 380u32 ; const NAME : & 'static str = "TIME_ESTIMATE_TO_TARGET" ; const EXTRA_CRC : u8 = 232u8 ; const ENCODED_LEN : usize = 20usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . safe_return = buf . get_i32_le () ; __struct . land = buf . get_i32_le () ; __struct . mission_next_item = buf . get_i32_le () ; __struct . mission_end = buf . get_i32_le () ; __struct . commanded_action = buf . get_i32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . safe_return) ; __tmp . put_i32_le (self . land) ; __tmp . put_i32_le (self . mission_next_item) ; __tmp . put_i32_le (self . mission_end) ; __tmp . put_i32_le (self . commanded_action) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct COMMAND_LONG_DATA { pub param1 : f32 , pub param2 : f32 , pub param3 : f32 , pub param4 : f32 , pub param5 : f32 , pub param6 : f32 , pub param7 : f32 , pub command : MavCmd , pub target_system : u8 , pub target_component : u8 , pub confirmation : u8 , } impl COMMAND_LONG_DATA { pub const ENCODED_LEN : usize = 33usize ; pub const DEFAULT : Self = Self { param1 : 0.0_f32 , param2 : 0.0_f32 , param3 : 0.0_f32 , param4 : 0.0_f32 , param5 : 0.0_f32 , param6 : 0.0_f32 , param7 : 0.0_f32 , command : MavCmd :: DEFAULT , target_system : 0_u8 , target_component : 0_u8 , confirmation : 0_u8 , } ; } impl Default for COMMAND_LONG_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for COMMAND_LONG_DATA { type Message = MavMessage ; const ID : u32 = 76u32 ; const NAME : & 'static str = "COMMAND_LONG" ; const EXTRA_CRC : u8 = 152u8 ; const ENCODED_LEN : usize = 33usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . param1 = buf . get_f32_le () ; __struct . param2 = buf . get_f32_le () ; __struct . param3 = buf . get_f32_le () ; __struct . param4 = buf . get_f32_le () ; __struct . param5 = buf . get_f32_le () ; __struct . param6 = buf . get_f32_le () ; __struct . param7 = buf . get_f32_le () ; let tmp = buf . get_u16_le () ; __struct . command = FromPrimitive :: from_u16 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavCmd" , value : tmp as u32 }) ? ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . confirmation = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . param1) ; __tmp . put_f32_le (self . param2) ; __tmp . put_f32_le (self . param3) ; __tmp . put_f32_le (self . param4) ; __tmp . put_f32_le (self . param5) ; __tmp . put_f32_le (self . param6) ; __tmp . put_f32_le (self . param7) ; __tmp . put_u16_le (self . command as u16) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . confirmation) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GIMBAL_MANAGER_SET_ATTITUDE_DATA { pub flags : GimbalManagerFlags , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub q : [f32 ; 4] , pub angular_velocity_x : f32 , pub angular_velocity_y : f32 , pub angular_velocity_z : f32 , pub target_system : u8 , pub target_component : u8 , pub gimbal_device_id : u8 , } impl GIMBAL_MANAGER_SET_ATTITUDE_DATA { pub const ENCODED_LEN : usize = 35usize ; pub const DEFAULT : Self = Self { flags : GimbalManagerFlags :: DEFAULT , q : [0.0_f32 ; 4usize] , angular_velocity_x : 0.0_f32 , angular_velocity_y : 0.0_f32 , angular_velocity_z : 0.0_f32 , target_system : 0_u8 , target_component : 0_u8 , gimbal_device_id : 0_u8 , } ; } impl Default for GIMBAL_MANAGER_SET_ATTITUDE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GIMBAL_MANAGER_SET_ATTITUDE_DATA { type Message = MavMessage ; const ID : u32 = 282u32 ; const NAME : & 'static str = "GIMBAL_MANAGER_SET_ATTITUDE" ; const EXTRA_CRC : u8 = 123u8 ; const ENCODED_LEN : usize = 35usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u32_le () ; __struct . flags = FromPrimitive :: from_u32 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "GimbalManagerFlags" , value : tmp as u32 }) ? ; for v in & mut __struct . q { let val = buf . get_f32_le () ; * v = val ; } __struct . angular_velocity_x = buf . get_f32_le () ; __struct . angular_velocity_y = buf . get_f32_le () ; __struct . angular_velocity_z = buf . get_f32_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . gimbal_device_id = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . flags as u32) ; for val in & self . q { __tmp . put_f32_le (* val) ; } __tmp . put_f32_le (self . angular_velocity_x) ; __tmp . put_f32_le (self . angular_velocity_y) ; __tmp . put_f32_le (self . angular_velocity_z) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . gimbal_device_id) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA { pub flags : GimbalManagerFlags , pub pitch : f32 , pub yaw : f32 , pub pitch_rate : f32 , pub yaw_rate : f32 , pub target_system : u8 , pub target_component : u8 , pub gimbal_device_id : u8 , } impl GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA { pub const ENCODED_LEN : usize = 23usize ; pub const DEFAULT : Self = Self { flags : GimbalManagerFlags :: DEFAULT , pitch : 0.0_f32 , yaw : 0.0_f32 , pitch_rate : 0.0_f32 , yaw_rate : 0.0_f32 , target_system : 0_u8 , target_component : 0_u8 , gimbal_device_id : 0_u8 , } ; } impl Default for GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA { type Message = MavMessage ; const ID : u32 = 288u32 ; const NAME : & 'static str = "GIMBAL_MANAGER_SET_MANUAL_CONTROL" ; const EXTRA_CRC : u8 = 20u8 ; const ENCODED_LEN : usize = 23usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u32_le () ; __struct . flags = FromPrimitive :: from_u32 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "GimbalManagerFlags" , value : tmp as u32 }) ? ; __struct . pitch = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; __struct . pitch_rate = buf . get_f32_le () ; __struct . yaw_rate = buf . get_f32_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . gimbal_device_id = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . flags as u32) ; __tmp . put_f32_le (self . pitch) ; __tmp . put_f32_le (self . yaw) ; __tmp . put_f32_le (self . pitch_rate) ; __tmp . put_f32_le (self . yaw_rate) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . gimbal_device_id) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct OPEN_DRONE_ID_LOCATION_DATA { pub latitude : i32 , pub longitude : i32 , pub altitude_barometric : f32 , pub altitude_geodetic : f32 , pub height : f32 , pub timestamp : f32 , pub direction : u16 , pub speed_horizontal : u16 , pub speed_vertical : i16 , pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub id_or_mac : [u8 ; 20] , pub status : MavOdidStatus , pub height_reference : MavOdidHeightRef , pub horizontal_accuracy : MavOdidHorAcc , pub vertical_accuracy : MavOdidVerAcc , pub barometer_accuracy : MavOdidVerAcc , pub speed_accuracy : MavOdidSpeedAcc , pub timestamp_accuracy : MavOdidTimeAcc , } impl OPEN_DRONE_ID_LOCATION_DATA { pub const ENCODED_LEN : usize = 59usize ; pub const DEFAULT : Self = Self { latitude : 0_i32 , longitude : 0_i32 , altitude_barometric : 0.0_f32 , altitude_geodetic : 0.0_f32 , height : 0.0_f32 , timestamp : 0.0_f32 , direction : 0_u16 , speed_horizontal : 0_u16 , speed_vertical : 0_i16 , target_system : 0_u8 , target_component : 0_u8 , id_or_mac : [0_u8 ; 20usize] , status : MavOdidStatus :: DEFAULT , height_reference : MavOdidHeightRef :: DEFAULT , horizontal_accuracy : MavOdidHorAcc :: DEFAULT , vertical_accuracy : MavOdidVerAcc :: DEFAULT , barometer_accuracy : MavOdidVerAcc :: DEFAULT , speed_accuracy : MavOdidSpeedAcc :: DEFAULT , timestamp_accuracy : MavOdidTimeAcc :: DEFAULT , } ; } impl Default for OPEN_DRONE_ID_LOCATION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for OPEN_DRONE_ID_LOCATION_DATA { type Message = MavMessage ; const ID : u32 = 12901u32 ; const NAME : & 'static str = "OPEN_DRONE_ID_LOCATION" ; const EXTRA_CRC : u8 = 254u8 ; const ENCODED_LEN : usize = 59usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . latitude = buf . get_i32_le () ; __struct . longitude = buf . get_i32_le () ; __struct . altitude_barometric = buf . get_f32_le () ; __struct . altitude_geodetic = buf . get_f32_le () ; __struct . height = buf . get_f32_le () ; __struct . timestamp = buf . get_f32_le () ; __struct . direction = buf . get_u16_le () ; __struct . speed_horizontal = buf . get_u16_le () ; __struct . speed_vertical = buf . get_i16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . id_or_mac { let val = buf . get_u8 () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . status = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidStatus" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . height_reference = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidHeightRef" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . horizontal_accuracy = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidHorAcc" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . vertical_accuracy = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidVerAcc" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . barometer_accuracy = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidVerAcc" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . speed_accuracy = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidSpeedAcc" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . timestamp_accuracy = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidTimeAcc" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . latitude) ; __tmp . put_i32_le (self . longitude) ; __tmp . put_f32_le (self . altitude_barometric) ; __tmp . put_f32_le (self . altitude_geodetic) ; __tmp . put_f32_le (self . height) ; __tmp . put_f32_le (self . timestamp) ; __tmp . put_u16_le (self . direction) ; __tmp . put_u16_le (self . speed_horizontal) ; __tmp . put_i16_le (self . speed_vertical) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . id_or_mac { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . status as u8) ; __tmp . put_u8 (self . height_reference as u8) ; __tmp . put_u8 (self . horizontal_accuracy as u8) ; __tmp . put_u8 (self . vertical_accuracy as u8) ; __tmp . put_u8 (self . barometer_accuracy as u8) ; __tmp . put_u8 (self . speed_accuracy as u8) ; __tmp . put_u8 (self . timestamp_accuracy as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HIL_CONTROLS_DATA { pub time_usec : u64 , pub roll_ailerons : f32 , pub pitch_elevator : f32 , pub yaw_rudder : f32 , pub throttle : f32 , pub aux1 : f32 , pub aux2 : f32 , pub aux3 : f32 , pub aux4 : f32 , pub mode : MavMode , pub nav_mode : u8 , } impl HIL_CONTROLS_DATA { pub const ENCODED_LEN : usize = 42usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , roll_ailerons : 0.0_f32 , pitch_elevator : 0.0_f32 , yaw_rudder : 0.0_f32 , throttle : 0.0_f32 , aux1 : 0.0_f32 , aux2 : 0.0_f32 , aux3 : 0.0_f32 , aux4 : 0.0_f32 , mode : MavMode :: DEFAULT , nav_mode : 0_u8 , } ; } impl Default for HIL_CONTROLS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for HIL_CONTROLS_DATA { type Message = MavMessage ; const ID : u32 = 91u32 ; const NAME : & 'static str = "HIL_CONTROLS" ; const EXTRA_CRC : u8 = 63u8 ; const ENCODED_LEN : usize = 42usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . roll_ailerons = buf . get_f32_le () ; __struct . pitch_elevator = buf . get_f32_le () ; __struct . yaw_rudder = buf . get_f32_le () ; __struct . throttle = buf . get_f32_le () ; __struct . aux1 = buf . get_f32_le () ; __struct . aux2 = buf . get_f32_le () ; __struct . aux3 = buf . get_f32_le () ; __struct . aux4 = buf . get_f32_le () ; let tmp = buf . get_u8 () ; __struct . mode = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavMode" , value : tmp as u32 }) ? ; __struct . nav_mode = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . roll_ailerons) ; __tmp . put_f32_le (self . pitch_elevator) ; __tmp . put_f32_le (self . yaw_rudder) ; __tmp . put_f32_le (self . throttle) ; __tmp . put_f32_le (self . aux1) ; __tmp . put_f32_le (self . aux2) ; __tmp . put_f32_le (self . aux3) ; __tmp . put_f32_le (self . aux4) ; __tmp . put_u8 (self . mode as u8) ; __tmp . put_u8 (self . nav_mode) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MISSION_SET_CURRENT_DATA { pub seq : u16 , pub target_system : u8 , pub target_component : u8 , } impl MISSION_SET_CURRENT_DATA { pub const ENCODED_LEN : usize = 4usize ; pub const DEFAULT : Self = Self { seq : 0_u16 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for MISSION_SET_CURRENT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MISSION_SET_CURRENT_DATA { type Message = MavMessage ; const ID : u32 = 41u32 ; const NAME : & 'static str = "MISSION_SET_CURRENT" ; const EXTRA_CRC : u8 = 28u8 ; const ENCODED_LEN : usize = 4usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . seq = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . seq) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SET_POSITION_TARGET_LOCAL_NED_DATA { pub time_boot_ms : u32 , pub x : f32 , pub y : f32 , pub z : f32 , pub vx : f32 , pub vy : f32 , pub vz : f32 , pub afx : f32 , pub afy : f32 , pub afz : f32 , pub yaw : f32 , pub yaw_rate : f32 , pub type_mask : PositionTargetTypemask , pub target_system : u8 , pub target_component : u8 , pub coordinate_frame : MavFrame , } impl SET_POSITION_TARGET_LOCAL_NED_DATA { pub const ENCODED_LEN : usize = 53usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , x : 0.0_f32 , y : 0.0_f32 , z : 0.0_f32 , vx : 0.0_f32 , vy : 0.0_f32 , vz : 0.0_f32 , afx : 0.0_f32 , afy : 0.0_f32 , afz : 0.0_f32 , yaw : 0.0_f32 , yaw_rate : 0.0_f32 , type_mask : PositionTargetTypemask :: DEFAULT , target_system : 0_u8 , target_component : 0_u8 , coordinate_frame : MavFrame :: DEFAULT , } ; } impl Default for SET_POSITION_TARGET_LOCAL_NED_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SET_POSITION_TARGET_LOCAL_NED_DATA { type Message = MavMessage ; const ID : u32 = 84u32 ; const NAME : & 'static str = "SET_POSITION_TARGET_LOCAL_NED" ; const EXTRA_CRC : u8 = 143u8 ; const ENCODED_LEN : usize = 53usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . x = buf . get_f32_le () ; __struct . y = buf . get_f32_le () ; __struct . z = buf . get_f32_le () ; __struct . vx = buf . get_f32_le () ; __struct . vy = buf . get_f32_le () ; __struct . vz = buf . get_f32_le () ; __struct . afx = buf . get_f32_le () ; __struct . afy = buf . get_f32_le () ; __struct . afz = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; __struct . yaw_rate = buf . get_f32_le () ; let tmp = buf . get_u16_le () ; __struct . type_mask = PositionTargetTypemask :: from_bits (tmp & PositionTargetTypemask :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "PositionTargetTypemask" , value : tmp as u32 }) ? ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . coordinate_frame = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavFrame" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; __tmp . put_f32_le (self . vx) ; __tmp . put_f32_le (self . vy) ; __tmp . put_f32_le (self . vz) ; __tmp . put_f32_le (self . afx) ; __tmp . put_f32_le (self . afy) ; __tmp . put_f32_le (self . afz) ; __tmp . put_f32_le (self . yaw) ; __tmp . put_f32_le (self . yaw_rate) ; __tmp . put_u16_le (self . type_mask . bits ()) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . coordinate_frame as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HIL_STATE_QUATERNION_DATA { pub time_usec : u64 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub attitude_quaternion : [f32 ; 4] , pub rollspeed : f32 , pub pitchspeed : f32 , pub yawspeed : f32 , pub lat : i32 , pub lon : i32 , pub alt : i32 , pub vx : i16 , pub vy : i16 , pub vz : i16 , pub ind_airspeed : u16 , pub true_airspeed : u16 , pub xacc : i16 , pub yacc : i16 , pub zacc : i16 , } impl HIL_STATE_QUATERNION_DATA { pub const ENCODED_LEN : usize = 64usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , attitude_quaternion : [0.0_f32 ; 4usize] , rollspeed : 0.0_f32 , pitchspeed : 0.0_f32 , yawspeed : 0.0_f32 , lat : 0_i32 , lon : 0_i32 , alt : 0_i32 , vx : 0_i16 , vy : 0_i16 , vz : 0_i16 , ind_airspeed : 0_u16 , true_airspeed : 0_u16 , xacc : 0_i16 , yacc : 0_i16 , zacc : 0_i16 , } ; } impl Default for HIL_STATE_QUATERNION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for HIL_STATE_QUATERNION_DATA { type Message = MavMessage ; const ID : u32 = 115u32 ; const NAME : & 'static str = "HIL_STATE_QUATERNION" ; const EXTRA_CRC : u8 = 4u8 ; const ENCODED_LEN : usize = 64usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; for v in & mut __struct . attitude_quaternion { let val = buf . get_f32_le () ; * v = val ; } __struct . rollspeed = buf . get_f32_le () ; __struct . pitchspeed = buf . get_f32_le () ; __struct . yawspeed = buf . get_f32_le () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . alt = buf . get_i32_le () ; __struct . vx = buf . get_i16_le () ; __struct . vy = buf . get_i16_le () ; __struct . vz = buf . get_i16_le () ; __struct . ind_airspeed = buf . get_u16_le () ; __struct . true_airspeed = buf . get_u16_le () ; __struct . xacc = buf . get_i16_le () ; __struct . yacc = buf . get_i16_le () ; __struct . zacc = buf . get_i16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; for val in & self . attitude_quaternion { __tmp . put_f32_le (* val) ; } __tmp . put_f32_le (self . rollspeed) ; __tmp . put_f32_le (self . pitchspeed) ; __tmp . put_f32_le (self . yawspeed) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_i32_le (self . alt) ; __tmp . put_i16_le (self . vx) ; __tmp . put_i16_le (self . vy) ; __tmp . put_i16_le (self . vz) ; __tmp . put_u16_le (self . ind_airspeed) ; __tmp . put_u16_le (self . true_airspeed) ; __tmp . put_i16_le (self . xacc) ; __tmp . put_i16_le (self . yacc) ; __tmp . put_i16_le (self . zacc) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SETUP_SIGNING_DATA { pub initial_timestamp : u64 , pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub secret_key : [u8 ; 32] , } impl SETUP_SIGNING_DATA { pub const ENCODED_LEN : usize = 42usize ; pub const DEFAULT : Self = Self { initial_timestamp : 0_u64 , target_system : 0_u8 , target_component : 0_u8 , secret_key : [0_u8 ; 32usize] , } ; } impl Default for SETUP_SIGNING_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SETUP_SIGNING_DATA { type Message = MavMessage ; const ID : u32 = 256u32 ; const NAME : & 'static str = "SETUP_SIGNING" ; const EXTRA_CRC : u8 = 71u8 ; const ENCODED_LEN : usize = 42usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . initial_timestamp = buf . get_u64_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . secret_key { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . initial_timestamp) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . secret_key { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct DISTANCE_SENSOR_DATA { pub time_boot_ms : u32 , pub min_distance : u16 , pub max_distance : u16 , pub current_distance : u16 , pub mavtype : MavDistanceSensor , pub id : u8 , pub orientation : MavSensorOrientation , pub covariance : u8 , } impl DISTANCE_SENSOR_DATA { pub const ENCODED_LEN : usize = 14usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , min_distance : 0_u16 , max_distance : 0_u16 , current_distance : 0_u16 , mavtype : MavDistanceSensor :: DEFAULT , id : 0_u8 , orientation : MavSensorOrientation :: DEFAULT , covariance : 0_u8 , } ; } impl Default for DISTANCE_SENSOR_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for DISTANCE_SENSOR_DATA { type Message = MavMessage ; const ID : u32 = 132u32 ; const NAME : & 'static str = "DISTANCE_SENSOR" ; const EXTRA_CRC : u8 = 85u8 ; const ENCODED_LEN : usize = 14usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . min_distance = buf . get_u16_le () ; __struct . max_distance = buf . get_u16_le () ; __struct . current_distance = buf . get_u16_le () ; let tmp = buf . get_u8 () ; __struct . mavtype = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavDistanceSensor" , value : tmp as u32 }) ? ; __struct . id = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . orientation = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavSensorOrientation" , value : tmp as u32 }) ? ; __struct . covariance = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_u16_le (self . min_distance) ; __tmp . put_u16_le (self . max_distance) ; __tmp . put_u16_le (self . current_distance) ; __tmp . put_u8 (self . mavtype as u8) ; __tmp . put_u8 (self . id) ; __tmp . put_u8 (self . orientation as u8) ; __tmp . put_u8 (self . covariance) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MISSION_CURRENT_DATA { pub seq : u16 , } impl MISSION_CURRENT_DATA { pub const ENCODED_LEN : usize = 2usize ; pub const DEFAULT : Self = Self { seq : 0_u16 , } ; } impl Default for MISSION_CURRENT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MISSION_CURRENT_DATA { type Message = MavMessage ; const ID : u32 = 42u32 ; const NAME : & 'static str = "MISSION_CURRENT" ; const EXTRA_CRC : u8 = 28u8 ; const ENCODED_LEN : usize = 2usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . seq = buf . get_u16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . seq) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SET_HOME_POSITION_DATA { pub latitude : i32 , pub longitude : i32 , pub altitude : i32 , pub x : f32 , pub y : f32 , pub z : f32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub q : [f32 ; 4] , pub approach_x : f32 , pub approach_y : f32 , pub approach_z : f32 , pub target_system : u8 , } impl SET_HOME_POSITION_DATA { pub const ENCODED_LEN : usize = 53usize ; pub const DEFAULT : Self = Self { latitude : 0_i32 , longitude : 0_i32 , altitude : 0_i32 , x : 0.0_f32 , y : 0.0_f32 , z : 0.0_f32 , q : [0.0_f32 ; 4usize] , approach_x : 0.0_f32 , approach_y : 0.0_f32 , approach_z : 0.0_f32 , target_system : 0_u8 , } ; } impl Default for SET_HOME_POSITION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SET_HOME_POSITION_DATA { type Message = MavMessage ; const ID : u32 = 243u32 ; const NAME : & 'static str = "SET_HOME_POSITION" ; const EXTRA_CRC : u8 = 85u8 ; const ENCODED_LEN : usize = 53usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . latitude = buf . get_i32_le () ; __struct . longitude = buf . get_i32_le () ; __struct . altitude = buf . get_i32_le () ; __struct . x = buf . get_f32_le () ; __struct . y = buf . get_f32_le () ; __struct . z = buf . get_f32_le () ; for v in & mut __struct . q { let val = buf . get_f32_le () ; * v = val ; } __struct . approach_x = buf . get_f32_le () ; __struct . approach_y = buf . get_f32_le () ; __struct . approach_z = buf . get_f32_le () ; __struct . target_system = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . latitude) ; __tmp . put_i32_le (self . longitude) ; __tmp . put_i32_le (self . altitude) ; __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; for val in & self . q { __tmp . put_f32_le (* val) ; } __tmp . put_f32_le (self . approach_x) ; __tmp . put_f32_le (self . approach_y) ; __tmp . put_f32_le (self . approach_z) ; __tmp . put_u8 (self . target_system) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct COMMAND_CANCEL_DATA { pub command : MavCmd , pub target_system : u8 , pub target_component : u8 , } impl COMMAND_CANCEL_DATA { pub const ENCODED_LEN : usize = 4usize ; pub const DEFAULT : Self = Self { command : MavCmd :: DEFAULT , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for COMMAND_CANCEL_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for COMMAND_CANCEL_DATA { type Message = MavMessage ; const ID : u32 = 80u32 ; const NAME : & 'static str = "COMMAND_CANCEL" ; const EXTRA_CRC : u8 = 14u8 ; const ENCODED_LEN : usize = 4usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u16_le () ; __struct . command = FromPrimitive :: from_u16 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavCmd" , value : tmp as u32 }) ? ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . command as u16) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GPS_INJECT_DATA_DATA { pub target_system : u8 , pub target_component : u8 , pub len : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub data : [u8 ; 110] , } impl GPS_INJECT_DATA_DATA { pub const ENCODED_LEN : usize = 113usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , len : 0_u8 , data : [0_u8 ; 110usize] , } ; } impl Default for GPS_INJECT_DATA_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GPS_INJECT_DATA_DATA { type Message = MavMessage ; const ID : u32 = 123u32 ; const NAME : & 'static str = "GPS_INJECT_DATA" ; const EXTRA_CRC : u8 = 250u8 ; const ENCODED_LEN : usize = 113usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . len = buf . get_u8 () ; for v in & mut __struct . data { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . len) ; for val in & self . data { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GPS_INPUT_DATA { pub time_usec : u64 , pub time_week_ms : u32 , pub lat : i32 , pub lon : i32 , pub alt : f32 , pub hdop : f32 , pub vdop : f32 , pub vn : f32 , pub ve : f32 , pub vd : f32 , pub speed_accuracy : f32 , pub horiz_accuracy : f32 , pub vert_accuracy : f32 , pub ignore_flags : GpsInputIgnoreFlags , pub time_week : u16 , pub gps_id : u8 , pub fix_type : u8 , pub satellites_visible : u8 , } impl GPS_INPUT_DATA { pub const ENCODED_LEN : usize = 63usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , time_week_ms : 0_u32 , lat : 0_i32 , lon : 0_i32 , alt : 0.0_f32 , hdop : 0.0_f32 , vdop : 0.0_f32 , vn : 0.0_f32 , ve : 0.0_f32 , vd : 0.0_f32 , speed_accuracy : 0.0_f32 , horiz_accuracy : 0.0_f32 , vert_accuracy : 0.0_f32 , ignore_flags : GpsInputIgnoreFlags :: DEFAULT , time_week : 0_u16 , gps_id : 0_u8 , fix_type : 0_u8 , satellites_visible : 0_u8 , } ; } impl Default for GPS_INPUT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GPS_INPUT_DATA { type Message = MavMessage ; const ID : u32 = 232u32 ; const NAME : & 'static str = "GPS_INPUT" ; const EXTRA_CRC : u8 = 151u8 ; const ENCODED_LEN : usize = 63usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . time_week_ms = buf . get_u32_le () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . alt = buf . get_f32_le () ; __struct . hdop = buf . get_f32_le () ; __struct . vdop = buf . get_f32_le () ; __struct . vn = buf . get_f32_le () ; __struct . ve = buf . get_f32_le () ; __struct . vd = buf . get_f32_le () ; __struct . speed_accuracy = buf . get_f32_le () ; __struct . horiz_accuracy = buf . get_f32_le () ; __struct . vert_accuracy = buf . get_f32_le () ; let tmp = buf . get_u16_le () ; __struct . ignore_flags = GpsInputIgnoreFlags :: from_bits (tmp & GpsInputIgnoreFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "GpsInputIgnoreFlags" , value : tmp as u32 }) ? ; __struct . time_week = buf . get_u16_le () ; __struct . gps_id = buf . get_u8 () ; __struct . fix_type = buf . get_u8 () ; __struct . satellites_visible = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_u32_le (self . time_week_ms) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_f32_le (self . alt) ; __tmp . put_f32_le (self . hdop) ; __tmp . put_f32_le (self . vdop) ; __tmp . put_f32_le (self . vn) ; __tmp . put_f32_le (self . ve) ; __tmp . put_f32_le (self . vd) ; __tmp . put_f32_le (self . speed_accuracy) ; __tmp . put_f32_le (self . horiz_accuracy) ; __tmp . put_f32_le (self . vert_accuracy) ; __tmp . put_u16_le (self . ignore_flags . bits ()) ; __tmp . put_u16_le (self . time_week) ; __tmp . put_u8 (self . gps_id) ; __tmp . put_u8 (self . fix_type) ; __tmp . put_u8 (self . satellites_visible) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct UAVCAN_NODE_STATUS_DATA { pub time_usec : u64 , pub uptime_sec : u32 , pub vendor_specific_status_code : u16 , pub health : UavcanNodeHealth , pub mode : UavcanNodeMode , pub sub_mode : u8 , } impl UAVCAN_NODE_STATUS_DATA { pub const ENCODED_LEN : usize = 17usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , uptime_sec : 0_u32 , vendor_specific_status_code : 0_u16 , health : UavcanNodeHealth :: DEFAULT , mode : UavcanNodeMode :: DEFAULT , sub_mode : 0_u8 , } ; } impl Default for UAVCAN_NODE_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for UAVCAN_NODE_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 310u32 ; const NAME : & 'static str = "UAVCAN_NODE_STATUS" ; const EXTRA_CRC : u8 = 28u8 ; const ENCODED_LEN : usize = 17usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . uptime_sec = buf . get_u32_le () ; __struct . vendor_specific_status_code = buf . get_u16_le () ; let tmp = buf . get_u8 () ; __struct . health = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "UavcanNodeHealth" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . mode = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "UavcanNodeMode" , value : tmp as u32 }) ? ; __struct . sub_mode = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_u32_le (self . uptime_sec) ; __tmp . put_u16_le (self . vendor_specific_status_code) ; __tmp . put_u8 (self . health as u8) ; __tmp . put_u8 (self . mode as u8) ; __tmp . put_u8 (self . sub_mode) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CELLULAR_CONFIG_DATA { pub enable_lte : u8 , pub enable_pin : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub pin : [u8 ; 16] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub new_pin : [u8 ; 16] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub apn : [u8 ; 32] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub puk : [u8 ; 16] , pub roaming : u8 , pub response : CellularConfigResponse , } impl CELLULAR_CONFIG_DATA { pub const ENCODED_LEN : usize = 84usize ; pub const DEFAULT : Self = Self { enable_lte : 0_u8 , enable_pin : 0_u8 , pin : [0_u8 ; 16usize] , new_pin : [0_u8 ; 16usize] , apn : [0_u8 ; 32usize] , puk : [0_u8 ; 16usize] , roaming : 0_u8 , response : CellularConfigResponse :: DEFAULT , } ; } impl Default for CELLULAR_CONFIG_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CELLULAR_CONFIG_DATA { type Message = MavMessage ; const ID : u32 = 336u32 ; const NAME : & 'static str = "CELLULAR_CONFIG" ; const EXTRA_CRC : u8 = 245u8 ; const ENCODED_LEN : usize = 84usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . enable_lte = buf . get_u8 () ; __struct . enable_pin = buf . get_u8 () ; for v in & mut __struct . pin { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . new_pin { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . apn { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . puk { let val = buf . get_u8 () ; * v = val ; } __struct . roaming = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . response = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "CellularConfigResponse" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . enable_lte) ; __tmp . put_u8 (self . enable_pin) ; for val in & self . pin { __tmp . put_u8 (* val) ; } for val in & self . new_pin { __tmp . put_u8 (* val) ; } for val in & self . apn { __tmp . put_u8 (* val) ; } for val in & self . puk { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . roaming) ; __tmp . put_u8 (self . response as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GENERATOR_STATUS_DATA { pub status : MavGeneratorStatusFlag , pub battery_current : f32 , pub load_current : f32 , pub power_generated : f32 , pub bus_voltage : f32 , pub bat_current_setpoint : f32 , pub runtime : u32 , pub time_until_maintenance : i32 , pub generator_speed : u16 , pub rectifier_temperature : i16 , pub generator_temperature : i16 , } impl GENERATOR_STATUS_DATA { pub const ENCODED_LEN : usize = 42usize ; pub const DEFAULT : Self = Self { status : MavGeneratorStatusFlag :: DEFAULT , battery_current : 0.0_f32 , load_current : 0.0_f32 , power_generated : 0.0_f32 , bus_voltage : 0.0_f32 , bat_current_setpoint : 0.0_f32 , runtime : 0_u32 , time_until_maintenance : 0_i32 , generator_speed : 0_u16 , rectifier_temperature : 0_i16 , generator_temperature : 0_i16 , } ; } impl Default for GENERATOR_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GENERATOR_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 373u32 ; const NAME : & 'static str = "GENERATOR_STATUS" ; const EXTRA_CRC : u8 = 117u8 ; const ENCODED_LEN : usize = 42usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u64_le () ; __struct . status = MavGeneratorStatusFlag :: from_bits (tmp & MavGeneratorStatusFlag :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "MavGeneratorStatusFlag" , value : tmp as u32 }) ? ; __struct . battery_current = buf . get_f32_le () ; __struct . load_current = buf . get_f32_le () ; __struct . power_generated = buf . get_f32_le () ; __struct . bus_voltage = buf . get_f32_le () ; __struct . bat_current_setpoint = buf . get_f32_le () ; __struct . runtime = buf . get_u32_le () ; __struct . time_until_maintenance = buf . get_i32_le () ; __struct . generator_speed = buf . get_u16_le () ; __struct . rectifier_temperature = buf . get_i16_le () ; __struct . generator_temperature = buf . get_i16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . status . bits ()) ; __tmp . put_f32_le (self . battery_current) ; __tmp . put_f32_le (self . load_current) ; __tmp . put_f32_le (self . power_generated) ; __tmp . put_f32_le (self . bus_voltage) ; __tmp . put_f32_le (self . bat_current_setpoint) ; __tmp . put_u32_le (self . runtime) ; __tmp . put_i32_le (self . time_until_maintenance) ; __tmp . put_u16_le (self . generator_speed) ; __tmp . put_i16_le (self . rectifier_temperature) ; __tmp . put_i16_le (self . generator_temperature) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CAN_FRAME_DATA { pub id : u32 , pub target_system : u8 , pub target_component : u8 , pub bus : u8 , pub len : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub data : [u8 ; 8] , } impl CAN_FRAME_DATA { pub const ENCODED_LEN : usize = 16usize ; pub const DEFAULT : Self = Self { id : 0_u32 , target_system : 0_u8 , target_component : 0_u8 , bus : 0_u8 , len : 0_u8 , data : [0_u8 ; 8usize] , } ; } impl Default for CAN_FRAME_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CAN_FRAME_DATA { type Message = MavMessage ; const ID : u32 = 386u32 ; const NAME : & 'static str = "CAN_FRAME" ; const EXTRA_CRC : u8 = 132u8 ; const ENCODED_LEN : usize = 16usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . id = buf . get_u32_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . bus = buf . get_u8 () ; __struct . len = buf . get_u8 () ; for v in & mut __struct . data { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . id) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . bus) ; __tmp . put_u8 (self . len) ; for val in & self . data { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct OPEN_DRONE_ID_MESSAGE_PACK_DATA { pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub id_or_mac : [u8 ; 20] , pub single_message_size : u8 , pub msg_pack_size : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub messages : [u8 ; 225] , } impl OPEN_DRONE_ID_MESSAGE_PACK_DATA { pub const ENCODED_LEN : usize = 249usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , id_or_mac : [0_u8 ; 20usize] , single_message_size : 0_u8 , msg_pack_size : 0_u8 , messages : [0_u8 ; 225usize] , } ; } impl Default for OPEN_DRONE_ID_MESSAGE_PACK_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for OPEN_DRONE_ID_MESSAGE_PACK_DATA { type Message = MavMessage ; const ID : u32 = 12915u32 ; const NAME : & 'static str = "OPEN_DRONE_ID_MESSAGE_PACK" ; const EXTRA_CRC : u8 = 94u8 ; const ENCODED_LEN : usize = 249usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . id_or_mac { let val = buf . get_u8 () ; * v = val ; } __struct . single_message_size = buf . get_u8 () ; __struct . msg_pack_size = buf . get_u8 () ; for v in & mut __struct . messages { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . id_or_mac { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . single_message_size) ; __tmp . put_u8 (self . msg_pack_size) ; for val in & self . messages { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MISSION_ITEM_REACHED_DATA { pub seq : u16 , } impl MISSION_ITEM_REACHED_DATA { pub const ENCODED_LEN : usize = 2usize ; pub const DEFAULT : Self = Self { seq : 0_u16 , } ; } impl Default for MISSION_ITEM_REACHED_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MISSION_ITEM_REACHED_DATA { type Message = MavMessage ; const ID : u32 = 46u32 ; const NAME : & 'static str = "MISSION_ITEM_REACHED" ; const EXTRA_CRC : u8 = 11u8 ; const ENCODED_LEN : usize = 2usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . seq = buf . get_u16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . seq) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SET_ATTITUDE_TARGET_DATA { pub time_boot_ms : u32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub q : [f32 ; 4] , pub body_roll_rate : f32 , pub body_pitch_rate : f32 , pub body_yaw_rate : f32 , pub thrust : f32 , pub target_system : u8 , pub target_component : u8 , pub type_mask : AttitudeTargetTypemask , } impl SET_ATTITUDE_TARGET_DATA { pub const ENCODED_LEN : usize = 39usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , q : [0.0_f32 ; 4usize] , body_roll_rate : 0.0_f32 , body_pitch_rate : 0.0_f32 , body_yaw_rate : 0.0_f32 , thrust : 0.0_f32 , target_system : 0_u8 , target_component : 0_u8 , type_mask : AttitudeTargetTypemask :: DEFAULT , } ; } impl Default for SET_ATTITUDE_TARGET_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SET_ATTITUDE_TARGET_DATA { type Message = MavMessage ; const ID : u32 = 82u32 ; const NAME : & 'static str = "SET_ATTITUDE_TARGET" ; const EXTRA_CRC : u8 = 49u8 ; const ENCODED_LEN : usize = 39usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; for v in & mut __struct . q { let val = buf . get_f32_le () ; * v = val ; } __struct . body_roll_rate = buf . get_f32_le () ; __struct . body_pitch_rate = buf . get_f32_le () ; __struct . body_yaw_rate = buf . get_f32_le () ; __struct . thrust = buf . get_f32_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . type_mask = AttitudeTargetTypemask :: from_bits (tmp & AttitudeTargetTypemask :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "AttitudeTargetTypemask" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; for val in & self . q { __tmp . put_f32_le (* val) ; } __tmp . put_f32_le (self . body_roll_rate) ; __tmp . put_f32_le (self . body_pitch_rate) ; __tmp . put_f32_le (self . body_yaw_rate) ; __tmp . put_f32_le (self . thrust) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . type_mask . bits ()) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GPS_GLOBAL_ORIGIN_DATA { pub latitude : i32 , pub longitude : i32 , pub altitude : i32 , } impl GPS_GLOBAL_ORIGIN_DATA { pub const ENCODED_LEN : usize = 12usize ; pub const DEFAULT : Self = Self { latitude : 0_i32 , longitude : 0_i32 , altitude : 0_i32 , } ; } impl Default for GPS_GLOBAL_ORIGIN_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GPS_GLOBAL_ORIGIN_DATA { type Message = MavMessage ; const ID : u32 = 49u32 ; const NAME : & 'static str = "GPS_GLOBAL_ORIGIN" ; const EXTRA_CRC : u8 = 39u8 ; const ENCODED_LEN : usize = 12usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . latitude = buf . get_i32_le () ; __struct . longitude = buf . get_i32_le () ; __struct . altitude = buf . get_i32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . latitude) ; __tmp . put_i32_le (self . longitude) ; __tmp . put_i32_le (self . altitude) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SET_ACTUATOR_CONTROL_TARGET_DATA { pub time_usec : u64 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub controls : [f32 ; 8] , pub group_mlx : u8 , pub target_system : u8 , pub target_component : u8 , } impl SET_ACTUATOR_CONTROL_TARGET_DATA { pub const ENCODED_LEN : usize = 43usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , controls : [0.0_f32 ; 8usize] , group_mlx : 0_u8 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for SET_ACTUATOR_CONTROL_TARGET_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SET_ACTUATOR_CONTROL_TARGET_DATA { type Message = MavMessage ; const ID : u32 = 139u32 ; const NAME : & 'static str = "SET_ACTUATOR_CONTROL_TARGET" ; const EXTRA_CRC : u8 = 168u8 ; const ENCODED_LEN : usize = 43usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; for v in & mut __struct . controls { let val = buf . get_f32_le () ; * v = val ; } __struct . group_mlx = buf . get_u8 () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; for val in & self . controls { __tmp . put_f32_le (* val) ; } __tmp . put_u8 (self . group_mlx) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CAMERA_FOV_STATUS_DATA { pub time_boot_ms : u32 , pub lat_camera : i32 , pub lon_camera : i32 , pub alt_camera : i32 , pub lat_image : i32 , pub lon_image : i32 , pub alt_image : i32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub q : [f32 ; 4] , pub hfov : f32 , pub vfov : f32 , } impl CAMERA_FOV_STATUS_DATA { pub const ENCODED_LEN : usize = 52usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , lat_camera : 0_i32 , lon_camera : 0_i32 , alt_camera : 0_i32 , lat_image : 0_i32 , lon_image : 0_i32 , alt_image : 0_i32 , q : [0.0_f32 ; 4usize] , hfov : 0.0_f32 , vfov : 0.0_f32 , } ; } impl Default for CAMERA_FOV_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CAMERA_FOV_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 271u32 ; const NAME : & 'static str = "CAMERA_FOV_STATUS" ; const EXTRA_CRC : u8 = 22u8 ; const ENCODED_LEN : usize = 52usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . lat_camera = buf . get_i32_le () ; __struct . lon_camera = buf . get_i32_le () ; __struct . alt_camera = buf . get_i32_le () ; __struct . lat_image = buf . get_i32_le () ; __struct . lon_image = buf . get_i32_le () ; __struct . alt_image = buf . get_i32_le () ; for v in & mut __struct . q { let val = buf . get_f32_le () ; * v = val ; } __struct . hfov = buf . get_f32_le () ; __struct . vfov = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_i32_le (self . lat_camera) ; __tmp . put_i32_le (self . lon_camera) ; __tmp . put_i32_le (self . alt_camera) ; __tmp . put_i32_le (self . lat_image) ; __tmp . put_i32_le (self . lon_image) ; __tmp . put_i32_le (self . alt_image) ; for val in & self . q { __tmp . put_f32_le (* val) ; } __tmp . put_f32_le (self . hfov) ; __tmp . put_f32_le (self . vfov) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SET_POSITION_TARGET_GLOBAL_INT_DATA { pub time_boot_ms : u32 , pub lat_int : i32 , pub lon_int : i32 , pub alt : f32 , pub vx : f32 , pub vy : f32 , pub vz : f32 , pub afx : f32 , pub afy : f32 , pub afz : f32 , pub yaw : f32 , pub yaw_rate : f32 , pub type_mask : PositionTargetTypemask , pub target_system : u8 , pub target_component : u8 , pub coordinate_frame : MavFrame , } impl SET_POSITION_TARGET_GLOBAL_INT_DATA { pub const ENCODED_LEN : usize = 53usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , lat_int : 0_i32 , lon_int : 0_i32 , alt : 0.0_f32 , vx : 0.0_f32 , vy : 0.0_f32 , vz : 0.0_f32 , afx : 0.0_f32 , afy : 0.0_f32 , afz : 0.0_f32 , yaw : 0.0_f32 , yaw_rate : 0.0_f32 , type_mask : PositionTargetTypemask :: DEFAULT , target_system : 0_u8 , target_component : 0_u8 , coordinate_frame : MavFrame :: DEFAULT , } ; } impl Default for SET_POSITION_TARGET_GLOBAL_INT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SET_POSITION_TARGET_GLOBAL_INT_DATA { type Message = MavMessage ; const ID : u32 = 86u32 ; const NAME : & 'static str = "SET_POSITION_TARGET_GLOBAL_INT" ; const EXTRA_CRC : u8 = 5u8 ; const ENCODED_LEN : usize = 53usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . lat_int = buf . get_i32_le () ; __struct . lon_int = buf . get_i32_le () ; __struct . alt = buf . get_f32_le () ; __struct . vx = buf . get_f32_le () ; __struct . vy = buf . get_f32_le () ; __struct . vz = buf . get_f32_le () ; __struct . afx = buf . get_f32_le () ; __struct . afy = buf . get_f32_le () ; __struct . afz = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; __struct . yaw_rate = buf . get_f32_le () ; let tmp = buf . get_u16_le () ; __struct . type_mask = PositionTargetTypemask :: from_bits (tmp & PositionTargetTypemask :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "PositionTargetTypemask" , value : tmp as u32 }) ? ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . coordinate_frame = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavFrame" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_i32_le (self . lat_int) ; __tmp . put_i32_le (self . lon_int) ; __tmp . put_f32_le (self . alt) ; __tmp . put_f32_le (self . vx) ; __tmp . put_f32_le (self . vy) ; __tmp . put_f32_le (self . vz) ; __tmp . put_f32_le (self . afx) ; __tmp . put_f32_le (self . afy) ; __tmp . put_f32_le (self . afz) ; __tmp . put_f32_le (self . yaw) ; __tmp . put_f32_le (self . yaw_rate) ; __tmp . put_u16_le (self . type_mask . bits ()) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . coordinate_frame as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MISSION_ITEM_DATA { pub param1 : f32 , pub param2 : f32 , pub param3 : f32 , pub param4 : f32 , pub x : f32 , pub y : f32 , pub z : f32 , pub seq : u16 , pub command : MavCmd , pub target_system : u8 , pub target_component : u8 , pub frame : MavFrame , pub current : u8 , pub autocontinue : u8 , } impl MISSION_ITEM_DATA { pub const ENCODED_LEN : usize = 37usize ; pub const DEFAULT : Self = Self { param1 : 0.0_f32 , param2 : 0.0_f32 , param3 : 0.0_f32 , param4 : 0.0_f32 , x : 0.0_f32 , y : 0.0_f32 , z : 0.0_f32 , seq : 0_u16 , command : MavCmd :: DEFAULT , target_system : 0_u8 , target_component : 0_u8 , frame : MavFrame :: DEFAULT , current : 0_u8 , autocontinue : 0_u8 , } ; } impl Default for MISSION_ITEM_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MISSION_ITEM_DATA { type Message = MavMessage ; const ID : u32 = 39u32 ; const NAME : & 'static str = "MISSION_ITEM" ; const EXTRA_CRC : u8 = 254u8 ; const ENCODED_LEN : usize = 37usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . param1 = buf . get_f32_le () ; __struct . param2 = buf . get_f32_le () ; __struct . param3 = buf . get_f32_le () ; __struct . param4 = buf . get_f32_le () ; __struct . x = buf . get_f32_le () ; __struct . y = buf . get_f32_le () ; __struct . z = buf . get_f32_le () ; __struct . seq = buf . get_u16_le () ; let tmp = buf . get_u16_le () ; __struct . command = FromPrimitive :: from_u16 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavCmd" , value : tmp as u32 }) ? ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . frame = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavFrame" , value : tmp as u32 }) ? ; __struct . current = buf . get_u8 () ; __struct . autocontinue = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . param1) ; __tmp . put_f32_le (self . param2) ; __tmp . put_f32_le (self . param3) ; __tmp . put_f32_le (self . param4) ; __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; __tmp . put_u16_le (self . seq) ; __tmp . put_u16_le (self . command as u16) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . frame as u8) ; __tmp . put_u8 (self . current) ; __tmp . put_u8 (self . autocontinue) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CURRENT_EVENT_SEQUENCE_DATA { pub sequence : u16 , pub flags : MavEventCurrentSequenceFlags , } impl CURRENT_EVENT_SEQUENCE_DATA { pub const ENCODED_LEN : usize = 3usize ; pub const DEFAULT : Self = Self { sequence : 0_u16 , flags : MavEventCurrentSequenceFlags :: DEFAULT , } ; } impl Default for CURRENT_EVENT_SEQUENCE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CURRENT_EVENT_SEQUENCE_DATA { type Message = MavMessage ; const ID : u32 = 411u32 ; const NAME : & 'static str = "CURRENT_EVENT_SEQUENCE" ; const EXTRA_CRC : u8 = 106u8 ; const ENCODED_LEN : usize = 3usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . sequence = buf . get_u16_le () ; let tmp = buf . get_u8 () ; __struct . flags = MavEventCurrentSequenceFlags :: from_bits (tmp & MavEventCurrentSequenceFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "MavEventCurrentSequenceFlags" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . sequence) ; __tmp . put_u8 (self . flags . bits ()) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MISSION_ACK_DATA { pub target_system : u8 , pub target_component : u8 , pub mavtype : MavMissionResult , } impl MISSION_ACK_DATA { pub const ENCODED_LEN : usize = 3usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , mavtype : MavMissionResult :: DEFAULT , } ; } impl Default for MISSION_ACK_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MISSION_ACK_DATA { type Message = MavMessage ; const ID : u32 = 47u32 ; const NAME : & 'static str = "MISSION_ACK" ; const EXTRA_CRC : u8 = 153u8 ; const ENCODED_LEN : usize = 3usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . mavtype = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavMissionResult" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . mavtype as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PARAM_EXT_REQUEST_LIST_DATA { pub target_system : u8 , pub target_component : u8 , } impl PARAM_EXT_REQUEST_LIST_DATA { pub const ENCODED_LEN : usize = 2usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for PARAM_EXT_REQUEST_LIST_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for PARAM_EXT_REQUEST_LIST_DATA { type Message = MavMessage ; const ID : u32 = 321u32 ; const NAME : & 'static str = "PARAM_EXT_REQUEST_LIST" ; const EXTRA_CRC : u8 = 88u8 ; const ENCODED_LEN : usize = 2usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct RC_CHANNELS_OVERRIDE_DATA { pub chan1_raw : u16 , pub chan2_raw : u16 , pub chan3_raw : u16 , pub chan4_raw : u16 , pub chan5_raw : u16 , pub chan6_raw : u16 , pub chan7_raw : u16 , pub chan8_raw : u16 , pub target_system : u8 , pub target_component : u8 , } impl RC_CHANNELS_OVERRIDE_DATA { pub const ENCODED_LEN : usize = 18usize ; pub const DEFAULT : Self = Self { chan1_raw : 0_u16 , chan2_raw : 0_u16 , chan3_raw : 0_u16 , chan4_raw : 0_u16 , chan5_raw : 0_u16 , chan6_raw : 0_u16 , chan7_raw : 0_u16 , chan8_raw : 0_u16 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for RC_CHANNELS_OVERRIDE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for RC_CHANNELS_OVERRIDE_DATA { type Message = MavMessage ; const ID : u32 = 70u32 ; const NAME : & 'static str = "RC_CHANNELS_OVERRIDE" ; const EXTRA_CRC : u8 = 124u8 ; const ENCODED_LEN : usize = 18usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . chan1_raw = buf . get_u16_le () ; __struct . chan2_raw = buf . get_u16_le () ; __struct . chan3_raw = buf . get_u16_le () ; __struct . chan4_raw = buf . get_u16_le () ; __struct . chan5_raw = buf . get_u16_le () ; __struct . chan6_raw = buf . get_u16_le () ; __struct . chan7_raw = buf . get_u16_le () ; __struct . chan8_raw = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . chan1_raw) ; __tmp . put_u16_le (self . chan2_raw) ; __tmp . put_u16_le (self . chan3_raw) ; __tmp . put_u16_le (self . chan4_raw) ; __tmp . put_u16_le (self . chan5_raw) ; __tmp . put_u16_le (self . chan6_raw) ; __tmp . put_u16_le (self . chan7_raw) ; __tmp . put_u16_le (self . chan8_raw) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct AUTH_KEY_DATA { # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub key : [u8 ; 32] , } impl AUTH_KEY_DATA { pub const ENCODED_LEN : usize = 32usize ; pub const DEFAULT : Self = Self { key : [0_u8 ; 32usize] , } ; } impl Default for AUTH_KEY_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for AUTH_KEY_DATA { type Message = MavMessage ; const ID : u32 = 7u32 ; const NAME : & 'static str = "AUTH_KEY" ; const EXTRA_CRC : u8 = 119u8 ; const ENCODED_LEN : usize = 32usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; for v in & mut __struct . key { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; for val in & self . key { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ISBD_LINK_STATUS_DATA { pub timestamp : u64 , pub last_heartbeat : u64 , pub failed_sessions : u16 , pub successful_sessions : u16 , pub signal_quality : u8 , pub ring_pending : u8 , pub tx_session_pending : u8 , pub rx_session_pending : u8 , } impl ISBD_LINK_STATUS_DATA { pub const ENCODED_LEN : usize = 24usize ; pub const DEFAULT : Self = Self { timestamp : 0_u64 , last_heartbeat : 0_u64 , failed_sessions : 0_u16 , successful_sessions : 0_u16 , signal_quality : 0_u8 , ring_pending : 0_u8 , tx_session_pending : 0_u8 , rx_session_pending : 0_u8 , } ; } impl Default for ISBD_LINK_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ISBD_LINK_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 335u32 ; const NAME : & 'static str = "ISBD_LINK_STATUS" ; const EXTRA_CRC : u8 = 225u8 ; const ENCODED_LEN : usize = 24usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . timestamp = buf . get_u64_le () ; __struct . last_heartbeat = buf . get_u64_le () ; __struct . failed_sessions = buf . get_u16_le () ; __struct . successful_sessions = buf . get_u16_le () ; __struct . signal_quality = buf . get_u8 () ; __struct . ring_pending = buf . get_u8 () ; __struct . tx_session_pending = buf . get_u8 () ; __struct . rx_session_pending = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . timestamp) ; __tmp . put_u64_le (self . last_heartbeat) ; __tmp . put_u16_le (self . failed_sessions) ; __tmp . put_u16_le (self . successful_sessions) ; __tmp . put_u8 (self . signal_quality) ; __tmp . put_u8 (self . ring_pending) ; __tmp . put_u8 (self . tx_session_pending) ; __tmp . put_u8 (self . rx_session_pending) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct COMMAND_INT_DATA { pub param1 : f32 , pub param2 : f32 , pub param3 : f32 , pub param4 : f32 , pub x : i32 , pub y : i32 , pub z : f32 , pub command : MavCmd , pub target_system : u8 , pub target_component : u8 , pub frame : MavFrame , pub current : u8 , pub autocontinue : u8 , } impl COMMAND_INT_DATA { pub const ENCODED_LEN : usize = 35usize ; pub const DEFAULT : Self = Self { param1 : 0.0_f32 , param2 : 0.0_f32 , param3 : 0.0_f32 , param4 : 0.0_f32 , x : 0_i32 , y : 0_i32 , z : 0.0_f32 , command : MavCmd :: DEFAULT , target_system : 0_u8 , target_component : 0_u8 , frame : MavFrame :: DEFAULT , current : 0_u8 , autocontinue : 0_u8 , } ; } impl Default for COMMAND_INT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for COMMAND_INT_DATA { type Message = MavMessage ; const ID : u32 = 75u32 ; const NAME : & 'static str = "COMMAND_INT" ; const EXTRA_CRC : u8 = 158u8 ; const ENCODED_LEN : usize = 35usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . param1 = buf . get_f32_le () ; __struct . param2 = buf . get_f32_le () ; __struct . param3 = buf . get_f32_le () ; __struct . param4 = buf . get_f32_le () ; __struct . x = buf . get_i32_le () ; __struct . y = buf . get_i32_le () ; __struct . z = buf . get_f32_le () ; let tmp = buf . get_u16_le () ; __struct . command = FromPrimitive :: from_u16 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavCmd" , value : tmp as u32 }) ? ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . frame = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavFrame" , value : tmp as u32 }) ? ; __struct . current = buf . get_u8 () ; __struct . autocontinue = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . param1) ; __tmp . put_f32_le (self . param2) ; __tmp . put_f32_le (self . param3) ; __tmp . put_f32_le (self . param4) ; __tmp . put_i32_le (self . x) ; __tmp . put_i32_le (self . y) ; __tmp . put_f32_le (self . z) ; __tmp . put_u16_le (self . command as u16) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . frame as u8) ; __tmp . put_u8 (self . current) ; __tmp . put_u8 (self . autocontinue) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LOG_ENTRY_DATA { pub time_utc : u32 , pub size : u32 , pub id : u16 , pub num_logs : u16 , pub last_log_num : u16 , } impl LOG_ENTRY_DATA { pub const ENCODED_LEN : usize = 14usize ; pub const DEFAULT : Self = Self { time_utc : 0_u32 , size : 0_u32 , id : 0_u16 , num_logs : 0_u16 , last_log_num : 0_u16 , } ; } impl Default for LOG_ENTRY_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for LOG_ENTRY_DATA { type Message = MavMessage ; const ID : u32 = 118u32 ; const NAME : & 'static str = "LOG_ENTRY" ; const EXTRA_CRC : u8 = 56u8 ; const ENCODED_LEN : usize = 14usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_utc = buf . get_u32_le () ; __struct . size = buf . get_u32_le () ; __struct . id = buf . get_u16_le () ; __struct . num_logs = buf . get_u16_le () ; __struct . last_log_num = buf . get_u16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_utc) ; __tmp . put_u32_le (self . size) ; __tmp . put_u16_le (self . id) ; __tmp . put_u16_le (self . num_logs) ; __tmp . put_u16_le (self . last_log_num) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GPS2_RAW_DATA { pub time_usec : u64 , pub lat : i32 , pub lon : i32 , pub alt : i32 , pub dgps_age : u32 , pub eph : u16 , pub epv : u16 , pub vel : u16 , pub cog : u16 , pub fix_type : GpsFixType , pub satellites_visible : u8 , pub dgps_numch : u8 , } impl GPS2_RAW_DATA { pub const ENCODED_LEN : usize = 35usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , lat : 0_i32 , lon : 0_i32 , alt : 0_i32 , dgps_age : 0_u32 , eph : 0_u16 , epv : 0_u16 , vel : 0_u16 , cog : 0_u16 , fix_type : GpsFixType :: DEFAULT , satellites_visible : 0_u8 , dgps_numch : 0_u8 , } ; } impl Default for GPS2_RAW_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GPS2_RAW_DATA { type Message = MavMessage ; const ID : u32 = 124u32 ; const NAME : & 'static str = "GPS2_RAW" ; const EXTRA_CRC : u8 = 87u8 ; const ENCODED_LEN : usize = 35usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . alt = buf . get_i32_le () ; __struct . dgps_age = buf . get_u32_le () ; __struct . eph = buf . get_u16_le () ; __struct . epv = buf . get_u16_le () ; __struct . vel = buf . get_u16_le () ; __struct . cog = buf . get_u16_le () ; let tmp = buf . get_u8 () ; __struct . fix_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "GpsFixType" , value : tmp as u32 }) ? ; __struct . satellites_visible = buf . get_u8 () ; __struct . dgps_numch = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_i32_le (self . alt) ; __tmp . put_u32_le (self . dgps_age) ; __tmp . put_u16_le (self . eph) ; __tmp . put_u16_le (self . epv) ; __tmp . put_u16_le (self . vel) ; __tmp . put_u16_le (self . cog) ; __tmp . put_u8 (self . fix_type as u8) ; __tmp . put_u8 (self . satellites_visible) ; __tmp . put_u8 (self . dgps_numch) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GPS2_RTK_DATA { pub time_last_baseline_ms : u32 , pub tow : u32 , pub baseline_a_mm : i32 , pub baseline_b_mm : i32 , pub baseline_c_mm : i32 , pub accuracy : u32 , pub iar_num_hypotheses : i32 , pub wn : u16 , pub rtk_receiver_id : u8 , pub rtk_health : u8 , pub rtk_rate : u8 , pub nsats : u8 , pub baseline_coords_type : RtkBaselineCoordinateSystem , } impl GPS2_RTK_DATA { pub const ENCODED_LEN : usize = 35usize ; pub const DEFAULT : Self = Self { time_last_baseline_ms : 0_u32 , tow : 0_u32 , baseline_a_mm : 0_i32 , baseline_b_mm : 0_i32 , baseline_c_mm : 0_i32 , accuracy : 0_u32 , iar_num_hypotheses : 0_i32 , wn : 0_u16 , rtk_receiver_id : 0_u8 , rtk_health : 0_u8 , rtk_rate : 0_u8 , nsats : 0_u8 , baseline_coords_type : RtkBaselineCoordinateSystem :: DEFAULT , } ; } impl Default for GPS2_RTK_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GPS2_RTK_DATA { type Message = MavMessage ; const ID : u32 = 128u32 ; const NAME : & 'static str = "GPS2_RTK" ; const EXTRA_CRC : u8 = 226u8 ; const ENCODED_LEN : usize = 35usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_last_baseline_ms = buf . get_u32_le () ; __struct . tow = buf . get_u32_le () ; __struct . baseline_a_mm = buf . get_i32_le () ; __struct . baseline_b_mm = buf . get_i32_le () ; __struct . baseline_c_mm = buf . get_i32_le () ; __struct . accuracy = buf . get_u32_le () ; __struct . iar_num_hypotheses = buf . get_i32_le () ; __struct . wn = buf . get_u16_le () ; __struct . rtk_receiver_id = buf . get_u8 () ; __struct . rtk_health = buf . get_u8 () ; __struct . rtk_rate = buf . get_u8 () ; __struct . nsats = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . baseline_coords_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "RtkBaselineCoordinateSystem" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_last_baseline_ms) ; __tmp . put_u32_le (self . tow) ; __tmp . put_i32_le (self . baseline_a_mm) ; __tmp . put_i32_le (self . baseline_b_mm) ; __tmp . put_i32_le (self . baseline_c_mm) ; __tmp . put_u32_le (self . accuracy) ; __tmp . put_i32_le (self . iar_num_hypotheses) ; __tmp . put_u16_le (self . wn) ; __tmp . put_u8 (self . rtk_receiver_id) ; __tmp . put_u8 (self . rtk_health) ; __tmp . put_u8 (self . rtk_rate) ; __tmp . put_u8 (self . nsats) ; __tmp . put_u8 (self . baseline_coords_type as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct COLLISION_DATA { pub id : u32 , pub time_to_minimum_delta : f32 , pub altitude_minimum_delta : f32 , pub horizontal_minimum_delta : f32 , pub src : MavCollisionSrc , pub action : MavCollisionAction , pub threat_level : MavCollisionThreatLevel , } impl COLLISION_DATA { pub const ENCODED_LEN : usize = 19usize ; pub const DEFAULT : Self = Self { id : 0_u32 , time_to_minimum_delta : 0.0_f32 , altitude_minimum_delta : 0.0_f32 , horizontal_minimum_delta : 0.0_f32 , src : MavCollisionSrc :: DEFAULT , action : MavCollisionAction :: DEFAULT , threat_level : MavCollisionThreatLevel :: DEFAULT , } ; } impl Default for COLLISION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for COLLISION_DATA { type Message = MavMessage ; const ID : u32 = 247u32 ; const NAME : & 'static str = "COLLISION" ; const EXTRA_CRC : u8 = 81u8 ; const ENCODED_LEN : usize = 19usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . id = buf . get_u32_le () ; __struct . time_to_minimum_delta = buf . get_f32_le () ; __struct . altitude_minimum_delta = buf . get_f32_le () ; __struct . horizontal_minimum_delta = buf . get_f32_le () ; let tmp = buf . get_u8 () ; __struct . src = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavCollisionSrc" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . action = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavCollisionAction" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . threat_level = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavCollisionThreatLevel" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . id) ; __tmp . put_f32_le (self . time_to_minimum_delta) ; __tmp . put_f32_le (self . altitude_minimum_delta) ; __tmp . put_f32_le (self . horizontal_minimum_delta) ; __tmp . put_u8 (self . src as u8) ; __tmp . put_u8 (self . action as u8) ; __tmp . put_u8 (self . threat_level as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ONBOARD_COMPUTER_STATUS_DATA { pub time_usec : u64 , pub uptime : u32 , pub ram_usage : u32 , pub ram_total : u32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub storage_type : [u32 ; 4] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub storage_usage : [u32 ; 4] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub storage_total : [u32 ; 4] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub link_type : [u32 ; 6] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub link_tx_rate : [u32 ; 6] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub link_rx_rate : [u32 ; 6] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub link_tx_max : [u32 ; 6] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub link_rx_max : [u32 ; 6] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub fan_speed : [i16 ; 4] , pub mavtype : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub cpu_cores : [u8 ; 8] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub cpu_combined : [u8 ; 10] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub gpu_cores : [u8 ; 4] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub gpu_combined : [u8 ; 10] , pub temperature_board : i8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub temperature_core : [i8 ; 8] , } impl ONBOARD_COMPUTER_STATUS_DATA { pub const ENCODED_LEN : usize = 238usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , uptime : 0_u32 , ram_usage : 0_u32 , ram_total : 0_u32 , storage_type : [0_u32 ; 4usize] , storage_usage : [0_u32 ; 4usize] , storage_total : [0_u32 ; 4usize] , link_type : [0_u32 ; 6usize] , link_tx_rate : [0_u32 ; 6usize] , link_rx_rate : [0_u32 ; 6usize] , link_tx_max : [0_u32 ; 6usize] , link_rx_max : [0_u32 ; 6usize] , fan_speed : [0_i16 ; 4usize] , mavtype : 0_u8 , cpu_cores : [0_u8 ; 8usize] , cpu_combined : [0_u8 ; 10usize] , gpu_cores : [0_u8 ; 4usize] , gpu_combined : [0_u8 ; 10usize] , temperature_board : 0_i8 , temperature_core : [0_i8 ; 8usize] , } ; } impl Default for ONBOARD_COMPUTER_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ONBOARD_COMPUTER_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 390u32 ; const NAME : & 'static str = "ONBOARD_COMPUTER_STATUS" ; const EXTRA_CRC : u8 = 156u8 ; const ENCODED_LEN : usize = 238usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . uptime = buf . get_u32_le () ; __struct . ram_usage = buf . get_u32_le () ; __struct . ram_total = buf . get_u32_le () ; for v in & mut __struct . storage_type { let val = buf . get_u32_le () ; * v = val ; } for v in & mut __struct . storage_usage { let val = buf . get_u32_le () ; * v = val ; } for v in & mut __struct . storage_total { let val = buf . get_u32_le () ; * v = val ; } for v in & mut __struct . link_type { let val = buf . get_u32_le () ; * v = val ; } for v in & mut __struct . link_tx_rate { let val = buf . get_u32_le () ; * v = val ; } for v in & mut __struct . link_rx_rate { let val = buf . get_u32_le () ; * v = val ; } for v in & mut __struct . link_tx_max { let val = buf . get_u32_le () ; * v = val ; } for v in & mut __struct . link_rx_max { let val = buf . get_u32_le () ; * v = val ; } for v in & mut __struct . fan_speed { let val = buf . get_i16_le () ; * v = val ; } __struct . mavtype = buf . get_u8 () ; for v in & mut __struct . cpu_cores { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . cpu_combined { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . gpu_cores { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . gpu_combined { let val = buf . get_u8 () ; * v = val ; } __struct . temperature_board = buf . get_i8 () ; for v in & mut __struct . temperature_core { let val = buf . get_i8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_u32_le (self . uptime) ; __tmp . put_u32_le (self . ram_usage) ; __tmp . put_u32_le (self . ram_total) ; for val in & self . storage_type { __tmp . put_u32_le (* val) ; } for val in & self . storage_usage { __tmp . put_u32_le (* val) ; } for val in & self . storage_total { __tmp . put_u32_le (* val) ; } for val in & self . link_type { __tmp . put_u32_le (* val) ; } for val in & self . link_tx_rate { __tmp . put_u32_le (* val) ; } for val in & self . link_rx_rate { __tmp . put_u32_le (* val) ; } for val in & self . link_tx_max { __tmp . put_u32_le (* val) ; } for val in & self . link_rx_max { __tmp . put_u32_le (* val) ; } for val in & self . fan_speed { __tmp . put_i16_le (* val) ; } __tmp . put_u8 (self . mavtype) ; for val in & self . cpu_cores { __tmp . put_u8 (* val) ; } for val in & self . cpu_combined { __tmp . put_u8 (* val) ; } for val in & self . gpu_cores { __tmp . put_u8 (* val) ; } for val in & self . gpu_combined { __tmp . put_u8 (* val) ; } __tmp . put_i8 (self . temperature_board) ; for val in & self . temperature_core { __tmp . put_i8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct DEBUG_DATA { pub time_boot_ms : u32 , pub value : f32 , pub ind : u8 , } impl DEBUG_DATA { pub const ENCODED_LEN : usize = 9usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , value : 0.0_f32 , ind : 0_u8 , } ; } impl Default for DEBUG_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for DEBUG_DATA { type Message = MavMessage ; const ID : u32 = 254u32 ; const NAME : & 'static str = "DEBUG" ; const EXTRA_CRC : u8 = 46u8 ; const ENCODED_LEN : usize = 9usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . value = buf . get_f32_le () ; __struct . ind = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . value) ; __tmp . put_u8 (self . ind) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MEMORY_VECT_DATA { pub address : u16 , pub ver : u8 , pub mavtype : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub value : [i8 ; 32] , } impl MEMORY_VECT_DATA { pub const ENCODED_LEN : usize = 36usize ; pub const DEFAULT : Self = Self { address : 0_u16 , ver : 0_u8 , mavtype : 0_u8 , value : [0_i8 ; 32usize] , } ; } impl Default for MEMORY_VECT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MEMORY_VECT_DATA { type Message = MavMessage ; const ID : u32 = 249u32 ; const NAME : & 'static str = "MEMORY_VECT" ; const EXTRA_CRC : u8 = 204u8 ; const ENCODED_LEN : usize = 36usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . address = buf . get_u16_le () ; __struct . ver = buf . get_u8 () ; __struct . mavtype = buf . get_u8 () ; for v in & mut __struct . value { let val = buf . get_i8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . address) ; __tmp . put_u8 (self . ver) ; __tmp . put_u8 (self . mavtype) ; for val in & self . value { __tmp . put_i8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GIMBAL_DEVICE_INFORMATION_DATA { pub uid : u64 , pub time_boot_ms : u32 , pub firmware_version : u32 , pub hardware_version : u32 , pub roll_min : f32 , pub roll_max : f32 , pub pitch_min : f32 , pub pitch_max : f32 , pub yaw_min : f32 , pub yaw_max : f32 , pub cap_flags : GimbalDeviceCapFlags , pub custom_cap_flags : u16 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub vendor_name : [u8 ; 32] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub model_name : [u8 ; 32] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub custom_name : [u8 ; 32] , } impl GIMBAL_DEVICE_INFORMATION_DATA { pub const ENCODED_LEN : usize = 144usize ; pub const DEFAULT : Self = Self { uid : 0_u64 , time_boot_ms : 0_u32 , firmware_version : 0_u32 , hardware_version : 0_u32 , roll_min : 0.0_f32 , roll_max : 0.0_f32 , pitch_min : 0.0_f32 , pitch_max : 0.0_f32 , yaw_min : 0.0_f32 , yaw_max : 0.0_f32 , cap_flags : GimbalDeviceCapFlags :: DEFAULT , custom_cap_flags : 0_u16 , vendor_name : [0_u8 ; 32usize] , model_name : [0_u8 ; 32usize] , custom_name : [0_u8 ; 32usize] , } ; } impl Default for GIMBAL_DEVICE_INFORMATION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GIMBAL_DEVICE_INFORMATION_DATA { type Message = MavMessage ; const ID : u32 = 283u32 ; const NAME : & 'static str = "GIMBAL_DEVICE_INFORMATION" ; const EXTRA_CRC : u8 = 74u8 ; const ENCODED_LEN : usize = 144usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . uid = buf . get_u64_le () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . firmware_version = buf . get_u32_le () ; __struct . hardware_version = buf . get_u32_le () ; __struct . roll_min = buf . get_f32_le () ; __struct . roll_max = buf . get_f32_le () ; __struct . pitch_min = buf . get_f32_le () ; __struct . pitch_max = buf . get_f32_le () ; __struct . yaw_min = buf . get_f32_le () ; __struct . yaw_max = buf . get_f32_le () ; let tmp = buf . get_u16_le () ; __struct . cap_flags = GimbalDeviceCapFlags :: from_bits (tmp & GimbalDeviceCapFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "GimbalDeviceCapFlags" , value : tmp as u32 }) ? ; __struct . custom_cap_flags = buf . get_u16_le () ; for v in & mut __struct . vendor_name { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . model_name { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . custom_name { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . uid) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_u32_le (self . firmware_version) ; __tmp . put_u32_le (self . hardware_version) ; __tmp . put_f32_le (self . roll_min) ; __tmp . put_f32_le (self . roll_max) ; __tmp . put_f32_le (self . pitch_min) ; __tmp . put_f32_le (self . pitch_max) ; __tmp . put_f32_le (self . yaw_min) ; __tmp . put_f32_le (self . yaw_max) ; __tmp . put_u16_le (self . cap_flags . bits ()) ; __tmp . put_u16_le (self . custom_cap_flags) ; for val in & self . vendor_name { __tmp . put_u8 (* val) ; } for val in & self . model_name { __tmp . put_u8 (* val) ; } for val in & self . custom_name { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct EXTENDED_SYS_STATE_DATA { pub vtol_state : MavVtolState , pub landed_state : MavLandedState , } impl EXTENDED_SYS_STATE_DATA { pub const ENCODED_LEN : usize = 2usize ; pub const DEFAULT : Self = Self { vtol_state : MavVtolState :: DEFAULT , landed_state : MavLandedState :: DEFAULT , } ; } impl Default for EXTENDED_SYS_STATE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for EXTENDED_SYS_STATE_DATA { type Message = MavMessage ; const ID : u32 = 245u32 ; const NAME : & 'static str = "EXTENDED_SYS_STATE" ; const EXTRA_CRC : u8 = 130u8 ; const ENCODED_LEN : usize = 2usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u8 () ; __struct . vtol_state = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavVtolState" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . landed_state = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavLandedState" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . vtol_state as u8) ; __tmp . put_u8 (self . landed_state as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SUPPORTED_TUNES_DATA { pub format : TuneFormat , pub target_system : u8 , pub target_component : u8 , } impl SUPPORTED_TUNES_DATA { pub const ENCODED_LEN : usize = 6usize ; pub const DEFAULT : Self = Self { format : TuneFormat :: DEFAULT , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for SUPPORTED_TUNES_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SUPPORTED_TUNES_DATA { type Message = MavMessage ; const ID : u32 = 401u32 ; const NAME : & 'static str = "SUPPORTED_TUNES" ; const EXTRA_CRC : u8 = 183u8 ; const ENCODED_LEN : usize = 6usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u32_le () ; __struct . format = TuneFormat :: from_bits (tmp & TuneFormat :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "TuneFormat" , value : tmp as u32 }) ? ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . format . bits ()) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CAMERA_SETTINGS_DATA { pub time_boot_ms : u32 , pub mode_id : CameraMode , } impl CAMERA_SETTINGS_DATA { pub const ENCODED_LEN : usize = 5usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , mode_id : CameraMode :: DEFAULT , } ; } impl Default for CAMERA_SETTINGS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CAMERA_SETTINGS_DATA { type Message = MavMessage ; const ID : u32 = 260u32 ; const NAME : & 'static str = "CAMERA_SETTINGS" ; const EXTRA_CRC : u8 = 146u8 ; const ENCODED_LEN : usize = 5usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; let tmp = buf . get_u8 () ; __struct . mode_id = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "CameraMode" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_u8 (self . mode_id as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LOGGING_DATA_ACKED_DATA { pub sequence : u16 , pub target_system : u8 , pub target_component : u8 , pub length : u8 , pub first_message_offset : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub data : [u8 ; 249] , } impl LOGGING_DATA_ACKED_DATA { pub const ENCODED_LEN : usize = 255usize ; pub const DEFAULT : Self = Self { sequence : 0_u16 , target_system : 0_u8 , target_component : 0_u8 , length : 0_u8 , first_message_offset : 0_u8 , data : [0_u8 ; 249usize] , } ; } impl Default for LOGGING_DATA_ACKED_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for LOGGING_DATA_ACKED_DATA { type Message = MavMessage ; const ID : u32 = 267u32 ; const NAME : & 'static str = "LOGGING_DATA_ACKED" ; const EXTRA_CRC : u8 = 35u8 ; const ENCODED_LEN : usize = 255usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . sequence = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . length = buf . get_u8 () ; __struct . first_message_offset = buf . get_u8 () ; for v in & mut __struct . data { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . sequence) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . length) ; __tmp . put_u8 (self . first_message_offset) ; for val in & self . data { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LINK_NODE_STATUS_DATA { pub timestamp : u64 , pub tx_rate : u32 , pub rx_rate : u32 , pub messages_sent : u32 , pub messages_received : u32 , pub messages_lost : u32 , pub rx_parse_err : u16 , pub tx_overflows : u16 , pub rx_overflows : u16 , pub tx_buf : u8 , pub rx_buf : u8 , } impl LINK_NODE_STATUS_DATA { pub const ENCODED_LEN : usize = 36usize ; pub const DEFAULT : Self = Self { timestamp : 0_u64 , tx_rate : 0_u32 , rx_rate : 0_u32 , messages_sent : 0_u32 , messages_received : 0_u32 , messages_lost : 0_u32 , rx_parse_err : 0_u16 , tx_overflows : 0_u16 , rx_overflows : 0_u16 , tx_buf : 0_u8 , rx_buf : 0_u8 , } ; } impl Default for LINK_NODE_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for LINK_NODE_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 8u32 ; const NAME : & 'static str = "LINK_NODE_STATUS" ; const EXTRA_CRC : u8 = 117u8 ; const ENCODED_LEN : usize = 36usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . timestamp = buf . get_u64_le () ; __struct . tx_rate = buf . get_u32_le () ; __struct . rx_rate = buf . get_u32_le () ; __struct . messages_sent = buf . get_u32_le () ; __struct . messages_received = buf . get_u32_le () ; __struct . messages_lost = buf . get_u32_le () ; __struct . rx_parse_err = buf . get_u16_le () ; __struct . tx_overflows = buf . get_u16_le () ; __struct . rx_overflows = buf . get_u16_le () ; __struct . tx_buf = buf . get_u8 () ; __struct . rx_buf = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . timestamp) ; __tmp . put_u32_le (self . tx_rate) ; __tmp . put_u32_le (self . rx_rate) ; __tmp . put_u32_le (self . messages_sent) ; __tmp . put_u32_le (self . messages_received) ; __tmp . put_u32_le (self . messages_lost) ; __tmp . put_u16_le (self . rx_parse_err) ; __tmp . put_u16_le (self . tx_overflows) ; __tmp . put_u16_le (self . rx_overflows) ; __tmp . put_u8 (self . tx_buf) ; __tmp . put_u8 (self . rx_buf) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct AIS_VESSEL_DATA { pub MMSI : u32 , pub lat : i32 , pub lon : i32 , pub COG : u16 , pub heading : u16 , pub velocity : u16 , pub dimension_bow : u16 , pub dimension_stern : u16 , pub tslc : u16 , pub flags : AisFlags , pub turn_rate : i8 , pub navigational_status : AisNavStatus , pub mavtype : AisType , pub dimension_port : u8 , pub dimension_starboard : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub callsign : [u8 ; 7] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub name : [u8 ; 20] , } impl AIS_VESSEL_DATA { pub const ENCODED_LEN : usize = 58usize ; pub const DEFAULT : Self = Self { MMSI : 0_u32 , lat : 0_i32 , lon : 0_i32 , COG : 0_u16 , heading : 0_u16 , velocity : 0_u16 , dimension_bow : 0_u16 , dimension_stern : 0_u16 , tslc : 0_u16 , flags : AisFlags :: DEFAULT , turn_rate : 0_i8 , navigational_status : AisNavStatus :: DEFAULT , mavtype : AisType :: DEFAULT , dimension_port : 0_u8 , dimension_starboard : 0_u8 , callsign : [0_u8 ; 7usize] , name : [0_u8 ; 20usize] , } ; } impl Default for AIS_VESSEL_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for AIS_VESSEL_DATA { type Message = MavMessage ; const ID : u32 = 301u32 ; const NAME : & 'static str = "AIS_VESSEL" ; const EXTRA_CRC : u8 = 243u8 ; const ENCODED_LEN : usize = 58usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . MMSI = buf . get_u32_le () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . COG = buf . get_u16_le () ; __struct . heading = buf . get_u16_le () ; __struct . velocity = buf . get_u16_le () ; __struct . dimension_bow = buf . get_u16_le () ; __struct . dimension_stern = buf . get_u16_le () ; __struct . tslc = buf . get_u16_le () ; let tmp = buf . get_u16_le () ; __struct . flags = AisFlags :: from_bits (tmp & AisFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "AisFlags" , value : tmp as u32 }) ? ; __struct . turn_rate = buf . get_i8 () ; let tmp = buf . get_u8 () ; __struct . navigational_status = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "AisNavStatus" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . mavtype = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "AisType" , value : tmp as u32 }) ? ; __struct . dimension_port = buf . get_u8 () ; __struct . dimension_starboard = buf . get_u8 () ; for v in & mut __struct . callsign { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . name { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . MMSI) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_u16_le (self . COG) ; __tmp . put_u16_le (self . heading) ; __tmp . put_u16_le (self . velocity) ; __tmp . put_u16_le (self . dimension_bow) ; __tmp . put_u16_le (self . dimension_stern) ; __tmp . put_u16_le (self . tslc) ; __tmp . put_u16_le (self . flags . bits ()) ; __tmp . put_i8 (self . turn_rate) ; __tmp . put_u8 (self . navigational_status as u8) ; __tmp . put_u8 (self . mavtype as u8) ; __tmp . put_u8 (self . dimension_port) ; __tmp . put_u8 (self . dimension_starboard) ; for val in & self . callsign { __tmp . put_u8 (* val) ; } for val in & self . name { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct DEBUG_FLOAT_ARRAY_DATA { pub time_usec : u64 , pub array_id : u16 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub name : [u8 ; 10] , } impl DEBUG_FLOAT_ARRAY_DATA { pub const ENCODED_LEN : usize = 20usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , array_id : 0_u16 , name : [0_u8 ; 10usize] , } ; } impl Default for DEBUG_FLOAT_ARRAY_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for DEBUG_FLOAT_ARRAY_DATA { type Message = MavMessage ; const ID : u32 = 350u32 ; const NAME : & 'static str = "DEBUG_FLOAT_ARRAY" ; const EXTRA_CRC : u8 = 232u8 ; const ENCODED_LEN : usize = 20usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . array_id = buf . get_u16_le () ; for v in & mut __struct . name { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_u16_le (self . array_id) ; for val in & self . name { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PARAM_EXT_ACK_DATA { # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub param_id : [u8 ; 16] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub param_value : [u8 ; 128] , pub param_type : MavParamExtType , pub param_result : ParamAck , } impl PARAM_EXT_ACK_DATA { pub const ENCODED_LEN : usize = 146usize ; pub const DEFAULT : Self = Self { param_id : [0_u8 ; 16usize] , param_value : [0_u8 ; 128usize] , param_type : MavParamExtType :: DEFAULT , param_result : ParamAck :: DEFAULT , } ; } impl Default for PARAM_EXT_ACK_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for PARAM_EXT_ACK_DATA { type Message = MavMessage ; const ID : u32 = 324u32 ; const NAME : & 'static str = "PARAM_EXT_ACK" ; const EXTRA_CRC : u8 = 132u8 ; const ENCODED_LEN : usize = 146usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; for v in & mut __struct . param_id { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . param_value { let val = buf . get_u8 () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . param_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavParamExtType" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . param_result = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "ParamAck" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; for val in & self . param_id { __tmp . put_u8 (* val) ; } for val in & self . param_value { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . param_type as u8) ; __tmp . put_u8 (self . param_result as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MISSION_WRITE_PARTIAL_LIST_DATA { pub start_index : i16 , pub end_index : i16 , pub target_system : u8 , pub target_component : u8 , } impl MISSION_WRITE_PARTIAL_LIST_DATA { pub const ENCODED_LEN : usize = 6usize ; pub const DEFAULT : Self = Self { start_index : 0_i16 , end_index : 0_i16 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for MISSION_WRITE_PARTIAL_LIST_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MISSION_WRITE_PARTIAL_LIST_DATA { type Message = MavMessage ; const ID : u32 = 38u32 ; const NAME : & 'static str = "MISSION_WRITE_PARTIAL_LIST" ; const EXTRA_CRC : u8 = 9u8 ; const ENCODED_LEN : usize = 6usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . start_index = buf . get_i16_le () ; __struct . end_index = buf . get_i16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i16_le (self . start_index) ; __tmp . put_i16_le (self . end_index) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct BATTERY_STATUS_DATA { pub current_consumed : i32 , pub energy_consumed : i32 , pub temperature : i16 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub voltages : [u16 ; 10] , pub current_battery : i16 , pub id : u8 , pub battery_function : MavBatteryFunction , pub mavtype : MavBatteryType , pub battery_remaining : i8 , } impl BATTERY_STATUS_DATA { pub const ENCODED_LEN : usize = 36usize ; pub const DEFAULT : Self = Self { current_consumed : 0_i32 , energy_consumed : 0_i32 , temperature : 0_i16 , voltages : [0_u16 ; 10usize] , current_battery : 0_i16 , id : 0_u8 , battery_function : MavBatteryFunction :: DEFAULT , mavtype : MavBatteryType :: DEFAULT , battery_remaining : 0_i8 , } ; } impl Default for BATTERY_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for BATTERY_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 147u32 ; const NAME : & 'static str = "BATTERY_STATUS" ; const EXTRA_CRC : u8 = 154u8 ; const ENCODED_LEN : usize = 36usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . current_consumed = buf . get_i32_le () ; __struct . energy_consumed = buf . get_i32_le () ; __struct . temperature = buf . get_i16_le () ; for v in & mut __struct . voltages { let val = buf . get_u16_le () ; * v = val ; } __struct . current_battery = buf . get_i16_le () ; __struct . id = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . battery_function = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavBatteryFunction" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . mavtype = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavBatteryType" , value : tmp as u32 }) ? ; __struct . battery_remaining = buf . get_i8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . current_consumed) ; __tmp . put_i32_le (self . energy_consumed) ; __tmp . put_i16_le (self . temperature) ; for val in & self . voltages { __tmp . put_u16_le (* val) ; } __tmp . put_i16_le (self . current_battery) ; __tmp . put_u8 (self . id) ; __tmp . put_u8 (self . battery_function as u8) ; __tmp . put_u8 (self . mavtype as u8) ; __tmp . put_i8 (self . battery_remaining) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LANDING_TARGET_DATA { pub time_usec : u64 , pub angle_x : f32 , pub angle_y : f32 , pub distance : f32 , pub size_x : f32 , pub size_y : f32 , pub target_num : u8 , pub frame : MavFrame , } impl LANDING_TARGET_DATA { pub const ENCODED_LEN : usize = 30usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , angle_x : 0.0_f32 , angle_y : 0.0_f32 , distance : 0.0_f32 , size_x : 0.0_f32 , size_y : 0.0_f32 , target_num : 0_u8 , frame : MavFrame :: DEFAULT , } ; } impl Default for LANDING_TARGET_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for LANDING_TARGET_DATA { type Message = MavMessage ; const ID : u32 = 149u32 ; const NAME : & 'static str = "LANDING_TARGET" ; const EXTRA_CRC : u8 = 200u8 ; const ENCODED_LEN : usize = 30usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . angle_x = buf . get_f32_le () ; __struct . angle_y = buf . get_f32_le () ; __struct . distance = buf . get_f32_le () ; __struct . size_x = buf . get_f32_le () ; __struct . size_y = buf . get_f32_le () ; __struct . target_num = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . frame = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavFrame" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . angle_x) ; __tmp . put_f32_le (self . angle_y) ; __tmp . put_f32_le (self . distance) ; __tmp . put_f32_le (self . size_x) ; __tmp . put_f32_le (self . size_y) ; __tmp . put_u8 (self . target_num) ; __tmp . put_u8 (self . frame as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CAMERA_TRACKING_GEO_STATUS_DATA { pub lat : i32 , pub lon : i32 , pub alt : f32 , pub h_acc : f32 , pub v_acc : f32 , pub vel_n : f32 , pub vel_e : f32 , pub vel_d : f32 , pub vel_acc : f32 , pub dist : f32 , pub hdg : f32 , pub hdg_acc : f32 , pub tracking_status : CameraTrackingStatusFlags , } impl CAMERA_TRACKING_GEO_STATUS_DATA { pub const ENCODED_LEN : usize = 49usize ; pub const DEFAULT : Self = Self { lat : 0_i32 , lon : 0_i32 , alt : 0.0_f32 , h_acc : 0.0_f32 , v_acc : 0.0_f32 , vel_n : 0.0_f32 , vel_e : 0.0_f32 , vel_d : 0.0_f32 , vel_acc : 0.0_f32 , dist : 0.0_f32 , hdg : 0.0_f32 , hdg_acc : 0.0_f32 , tracking_status : CameraTrackingStatusFlags :: DEFAULT , } ; } impl Default for CAMERA_TRACKING_GEO_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CAMERA_TRACKING_GEO_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 276u32 ; const NAME : & 'static str = "CAMERA_TRACKING_GEO_STATUS" ; const EXTRA_CRC : u8 = 18u8 ; const ENCODED_LEN : usize = 49usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . alt = buf . get_f32_le () ; __struct . h_acc = buf . get_f32_le () ; __struct . v_acc = buf . get_f32_le () ; __struct . vel_n = buf . get_f32_le () ; __struct . vel_e = buf . get_f32_le () ; __struct . vel_d = buf . get_f32_le () ; __struct . vel_acc = buf . get_f32_le () ; __struct . dist = buf . get_f32_le () ; __struct . hdg = buf . get_f32_le () ; __struct . hdg_acc = buf . get_f32_le () ; let tmp = buf . get_u8 () ; __struct . tracking_status = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "CameraTrackingStatusFlags" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_f32_le (self . alt) ; __tmp . put_f32_le (self . h_acc) ; __tmp . put_f32_le (self . v_acc) ; __tmp . put_f32_le (self . vel_n) ; __tmp . put_f32_le (self . vel_e) ; __tmp . put_f32_le (self . vel_d) ; __tmp . put_f32_le (self . vel_acc) ; __tmp . put_f32_le (self . dist) ; __tmp . put_f32_le (self . hdg) ; __tmp . put_f32_le (self . hdg_acc) ; __tmp . put_u8 (self . tracking_status as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct REQUEST_EVENT_DATA { pub first_sequence : u16 , pub last_sequence : u16 , pub target_system : u8 , pub target_component : u8 , } impl REQUEST_EVENT_DATA { pub const ENCODED_LEN : usize = 6usize ; pub const DEFAULT : Self = Self { first_sequence : 0_u16 , last_sequence : 0_u16 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for REQUEST_EVENT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for REQUEST_EVENT_DATA { type Message = MavMessage ; const ID : u32 = 412u32 ; const NAME : & 'static str = "REQUEST_EVENT" ; const EXTRA_CRC : u8 = 33u8 ; const ENCODED_LEN : usize = 6usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . first_sequence = buf . get_u16_le () ; __struct . last_sequence = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . first_sequence) ; __tmp . put_u16_le (self . last_sequence) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SAFETY_SET_ALLOWED_AREA_DATA { pub p1x : f32 , pub p1y : f32 , pub p1z : f32 , pub p2x : f32 , pub p2y : f32 , pub p2z : f32 , pub target_system : u8 , pub target_component : u8 , pub frame : MavFrame , } impl SAFETY_SET_ALLOWED_AREA_DATA { pub const ENCODED_LEN : usize = 27usize ; pub const DEFAULT : Self = Self { p1x : 0.0_f32 , p1y : 0.0_f32 , p1z : 0.0_f32 , p2x : 0.0_f32 , p2y : 0.0_f32 , p2z : 0.0_f32 , target_system : 0_u8 , target_component : 0_u8 , frame : MavFrame :: DEFAULT , } ; } impl Default for SAFETY_SET_ALLOWED_AREA_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SAFETY_SET_ALLOWED_AREA_DATA { type Message = MavMessage ; const ID : u32 = 54u32 ; const NAME : & 'static str = "SAFETY_SET_ALLOWED_AREA" ; const EXTRA_CRC : u8 = 15u8 ; const ENCODED_LEN : usize = 27usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . p1x = buf . get_f32_le () ; __struct . p1y = buf . get_f32_le () ; __struct . p1z = buf . get_f32_le () ; __struct . p2x = buf . get_f32_le () ; __struct . p2y = buf . get_f32_le () ; __struct . p2z = buf . get_f32_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . frame = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavFrame" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . p1x) ; __tmp . put_f32_le (self . p1y) ; __tmp . put_f32_le (self . p1z) ; __tmp . put_f32_le (self . p2x) ; __tmp . put_f32_le (self . p2y) ; __tmp . put_f32_le (self . p2z) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . frame as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct EFI_STATUS_DATA { pub ecu_index : f32 , pub rpm : f32 , pub fuel_consumed : f32 , pub fuel_flow : f32 , pub engine_load : f32 , pub throttle_position : f32 , pub spark_dwell_time : f32 , pub barometric_pressure : f32 , pub intake_manifold_pressure : f32 , pub intake_manifold_temperature : f32 , pub cylinder_head_temperature : f32 , pub ignition_timing : f32 , pub injection_time : f32 , pub exhaust_gas_temperature : f32 , pub throttle_out : f32 , pub pt_compensation : f32 , pub health : u8 , } impl EFI_STATUS_DATA { pub const ENCODED_LEN : usize = 65usize ; pub const DEFAULT : Self = Self { ecu_index : 0.0_f32 , rpm : 0.0_f32 , fuel_consumed : 0.0_f32 , fuel_flow : 0.0_f32 , engine_load : 0.0_f32 , throttle_position : 0.0_f32 , spark_dwell_time : 0.0_f32 , barometric_pressure : 0.0_f32 , intake_manifold_pressure : 0.0_f32 , intake_manifold_temperature : 0.0_f32 , cylinder_head_temperature : 0.0_f32 , ignition_timing : 0.0_f32 , injection_time : 0.0_f32 , exhaust_gas_temperature : 0.0_f32 , throttle_out : 0.0_f32 , pt_compensation : 0.0_f32 , health : 0_u8 , } ; } impl Default for EFI_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for EFI_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 225u32 ; const NAME : & 'static str = "EFI_STATUS" ; const EXTRA_CRC : u8 = 208u8 ; const ENCODED_LEN : usize = 65usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . ecu_index = buf . get_f32_le () ; __struct . rpm = buf . get_f32_le () ; __struct . fuel_consumed = buf . get_f32_le () ; __struct . fuel_flow = buf . get_f32_le () ; __struct . engine_load = buf . get_f32_le () ; __struct . throttle_position = buf . get_f32_le () ; __struct . spark_dwell_time = buf . get_f32_le () ; __struct . barometric_pressure = buf . get_f32_le () ; __struct . intake_manifold_pressure = buf . get_f32_le () ; __struct . intake_manifold_temperature = buf . get_f32_le () ; __struct . cylinder_head_temperature = buf . get_f32_le () ; __struct . ignition_timing = buf . get_f32_le () ; __struct . injection_time = buf . get_f32_le () ; __struct . exhaust_gas_temperature = buf . get_f32_le () ; __struct . throttle_out = buf . get_f32_le () ; __struct . pt_compensation = buf . get_f32_le () ; __struct . health = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . ecu_index) ; __tmp . put_f32_le (self . rpm) ; __tmp . put_f32_le (self . fuel_consumed) ; __tmp . put_f32_le (self . fuel_flow) ; __tmp . put_f32_le (self . engine_load) ; __tmp . put_f32_le (self . throttle_position) ; __tmp . put_f32_le (self . spark_dwell_time) ; __tmp . put_f32_le (self . barometric_pressure) ; __tmp . put_f32_le (self . intake_manifold_pressure) ; __tmp . put_f32_le (self . intake_manifold_temperature) ; __tmp . put_f32_le (self . cylinder_head_temperature) ; __tmp . put_f32_le (self . ignition_timing) ; __tmp . put_f32_le (self . injection_time) ; __tmp . put_f32_le (self . exhaust_gas_temperature) ; __tmp . put_f32_le (self . throttle_out) ; __tmp . put_f32_le (self . pt_compensation) ; __tmp . put_u8 (self . health) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct STATUSTEXT_DATA { pub severity : MavSeverity , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub text : [u8 ; 50] , } impl STATUSTEXT_DATA { pub const ENCODED_LEN : usize = 51usize ; pub const DEFAULT : Self = Self { severity : MavSeverity :: DEFAULT , text : [0_u8 ; 50usize] , } ; } impl Default for STATUSTEXT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for STATUSTEXT_DATA { type Message = MavMessage ; const ID : u32 = 253u32 ; const NAME : & 'static str = "STATUSTEXT" ; const EXTRA_CRC : u8 = 83u8 ; const ENCODED_LEN : usize = 51usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u8 () ; __struct . severity = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavSeverity" , value : tmp as u32 }) ? ; for v in & mut __struct . text { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . severity as u8) ; for val in & self . text { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct OPEN_DRONE_ID_SELF_ID_DATA { pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub id_or_mac : [u8 ; 20] , pub description_type : MavOdidDescType , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub description : [u8 ; 23] , } impl OPEN_DRONE_ID_SELF_ID_DATA { pub const ENCODED_LEN : usize = 46usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , id_or_mac : [0_u8 ; 20usize] , description_type : MavOdidDescType :: DEFAULT , description : [0_u8 ; 23usize] , } ; } impl Default for OPEN_DRONE_ID_SELF_ID_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for OPEN_DRONE_ID_SELF_ID_DATA { type Message = MavMessage ; const ID : u32 = 12903u32 ; const NAME : & 'static str = "OPEN_DRONE_ID_SELF_ID" ; const EXTRA_CRC : u8 = 249u8 ; const ENCODED_LEN : usize = 46usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . id_or_mac { let val = buf . get_u8 () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . description_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidDescType" , value : tmp as u32 }) ? ; for v in & mut __struct . description { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . id_or_mac { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . description_type as u8) ; for val in & self . description { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA { pub time_boot_ms : u32 , pub x : f32 , pub y : f32 , pub z : f32 , pub roll : f32 , pub pitch : f32 , pub yaw : f32 , } impl LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA { pub const ENCODED_LEN : usize = 28usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , x : 0.0_f32 , y : 0.0_f32 , z : 0.0_f32 , roll : 0.0_f32 , pitch : 0.0_f32 , yaw : 0.0_f32 , } ; } impl Default for LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA { type Message = MavMessage ; const ID : u32 = 89u32 ; const NAME : & 'static str = "LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET" ; const EXTRA_CRC : u8 = 231u8 ; const ENCODED_LEN : usize = 28usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . x = buf . get_f32_le () ; __struct . y = buf . get_f32_le () ; __struct . z = buf . get_f32_le () ; __struct . roll = buf . get_f32_le () ; __struct . pitch = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; __tmp . put_f32_le (self . roll) ; __tmp . put_f32_le (self . pitch) ; __tmp . put_f32_le (self . yaw) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GPS_RTCM_DATA_DATA { pub flags : u8 , pub len : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub data : [u8 ; 180] , } impl GPS_RTCM_DATA_DATA { pub const ENCODED_LEN : usize = 182usize ; pub const DEFAULT : Self = Self { flags : 0_u8 , len : 0_u8 , data : [0_u8 ; 180usize] , } ; } impl Default for GPS_RTCM_DATA_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GPS_RTCM_DATA_DATA { type Message = MavMessage ; const ID : u32 = 233u32 ; const NAME : & 'static str = "GPS_RTCM_DATA" ; const EXTRA_CRC : u8 = 35u8 ; const ENCODED_LEN : usize = 182usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . flags = buf . get_u8 () ; __struct . len = buf . get_u8 () ; for v in & mut __struct . data { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . flags) ; __tmp . put_u8 (self . len) ; for val in & self . data { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SET_GPS_GLOBAL_ORIGIN_DATA { pub latitude : i32 , pub longitude : i32 , pub altitude : i32 , pub target_system : u8 , } impl SET_GPS_GLOBAL_ORIGIN_DATA { pub const ENCODED_LEN : usize = 13usize ; pub const DEFAULT : Self = Self { latitude : 0_i32 , longitude : 0_i32 , altitude : 0_i32 , target_system : 0_u8 , } ; } impl Default for SET_GPS_GLOBAL_ORIGIN_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SET_GPS_GLOBAL_ORIGIN_DATA { type Message = MavMessage ; const ID : u32 = 48u32 ; const NAME : & 'static str = "SET_GPS_GLOBAL_ORIGIN" ; const EXTRA_CRC : u8 = 41u8 ; const ENCODED_LEN : usize = 13usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . latitude = buf . get_i32_le () ; __struct . longitude = buf . get_i32_le () ; __struct . altitude = buf . get_i32_le () ; __struct . target_system = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . latitude) ; __tmp . put_i32_le (self . longitude) ; __tmp . put_i32_le (self . altitude) ; __tmp . put_u8 (self . target_system) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ACTUATOR_CONTROL_TARGET_DATA { pub time_usec : u64 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub controls : [f32 ; 8] , pub group_mlx : u8 , } impl ACTUATOR_CONTROL_TARGET_DATA { pub const ENCODED_LEN : usize = 41usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , controls : [0.0_f32 ; 8usize] , group_mlx : 0_u8 , } ; } impl Default for ACTUATOR_CONTROL_TARGET_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ACTUATOR_CONTROL_TARGET_DATA { type Message = MavMessage ; const ID : u32 = 140u32 ; const NAME : & 'static str = "ACTUATOR_CONTROL_TARGET" ; const EXTRA_CRC : u8 = 181u8 ; const ENCODED_LEN : usize = 41usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; for v in & mut __struct . controls { let val = buf . get_f32_le () ; * v = val ; } __struct . group_mlx = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; for val in & self . controls { __tmp . put_f32_le (* val) ; } __tmp . put_u8 (self . group_mlx) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct BUTTON_CHANGE_DATA { pub time_boot_ms : u32 , pub last_change_ms : u32 , pub state : u8 , } impl BUTTON_CHANGE_DATA { pub const ENCODED_LEN : usize = 9usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , last_change_ms : 0_u32 , state : 0_u8 , } ; } impl Default for BUTTON_CHANGE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for BUTTON_CHANGE_DATA { type Message = MavMessage ; const ID : u32 = 257u32 ; const NAME : & 'static str = "BUTTON_CHANGE" ; const EXTRA_CRC : u8 = 131u8 ; const ENCODED_LEN : usize = 9usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . last_change_ms = buf . get_u32_le () ; __struct . state = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_u32_le (self . last_change_ms) ; __tmp . put_u8 (self . state) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MISSION_REQUEST_PARTIAL_LIST_DATA { pub start_index : i16 , pub end_index : i16 , pub target_system : u8 , pub target_component : u8 , } impl MISSION_REQUEST_PARTIAL_LIST_DATA { pub const ENCODED_LEN : usize = 6usize ; pub const DEFAULT : Self = Self { start_index : 0_i16 , end_index : 0_i16 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for MISSION_REQUEST_PARTIAL_LIST_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MISSION_REQUEST_PARTIAL_LIST_DATA { type Message = MavMessage ; const ID : u32 = 37u32 ; const NAME : & 'static str = "MISSION_REQUEST_PARTIAL_LIST" ; const EXTRA_CRC : u8 = 212u8 ; const ENCODED_LEN : usize = 6usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . start_index = buf . get_i16_le () ; __struct . end_index = buf . get_i16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i16_le (self . start_index) ; __tmp . put_i16_le (self . end_index) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct UTM_GLOBAL_POSITION_DATA { pub time : u64 , pub lat : i32 , pub lon : i32 , pub alt : i32 , pub relative_alt : i32 , pub next_lat : i32 , pub next_lon : i32 , pub next_alt : i32 , pub vx : i16 , pub vy : i16 , pub vz : i16 , pub h_acc : u16 , pub v_acc : u16 , pub vel_acc : u16 , pub update_rate : u16 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub uas_id : [u8 ; 18] , pub flight_state : UtmFlightState , pub flags : UtmDataAvailFlags , } impl UTM_GLOBAL_POSITION_DATA { pub const ENCODED_LEN : usize = 70usize ; pub const DEFAULT : Self = Self { time : 0_u64 , lat : 0_i32 , lon : 0_i32 , alt : 0_i32 , relative_alt : 0_i32 , next_lat : 0_i32 , next_lon : 0_i32 , next_alt : 0_i32 , vx : 0_i16 , vy : 0_i16 , vz : 0_i16 , h_acc : 0_u16 , v_acc : 0_u16 , vel_acc : 0_u16 , update_rate : 0_u16 , uas_id : [0_u8 ; 18usize] , flight_state : UtmFlightState :: DEFAULT , flags : UtmDataAvailFlags :: DEFAULT , } ; } impl Default for UTM_GLOBAL_POSITION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for UTM_GLOBAL_POSITION_DATA { type Message = MavMessage ; const ID : u32 = 340u32 ; const NAME : & 'static str = "UTM_GLOBAL_POSITION" ; const EXTRA_CRC : u8 = 99u8 ; const ENCODED_LEN : usize = 70usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time = buf . get_u64_le () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . alt = buf . get_i32_le () ; __struct . relative_alt = buf . get_i32_le () ; __struct . next_lat = buf . get_i32_le () ; __struct . next_lon = buf . get_i32_le () ; __struct . next_alt = buf . get_i32_le () ; __struct . vx = buf . get_i16_le () ; __struct . vy = buf . get_i16_le () ; __struct . vz = buf . get_i16_le () ; __struct . h_acc = buf . get_u16_le () ; __struct . v_acc = buf . get_u16_le () ; __struct . vel_acc = buf . get_u16_le () ; __struct . update_rate = buf . get_u16_le () ; for v in & mut __struct . uas_id { let val = buf . get_u8 () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . flight_state = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "UtmFlightState" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . flags = UtmDataAvailFlags :: from_bits (tmp & UtmDataAvailFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "UtmDataAvailFlags" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_i32_le (self . alt) ; __tmp . put_i32_le (self . relative_alt) ; __tmp . put_i32_le (self . next_lat) ; __tmp . put_i32_le (self . next_lon) ; __tmp . put_i32_le (self . next_alt) ; __tmp . put_i16_le (self . vx) ; __tmp . put_i16_le (self . vy) ; __tmp . put_i16_le (self . vz) ; __tmp . put_u16_le (self . h_acc) ; __tmp . put_u16_le (self . v_acc) ; __tmp . put_u16_le (self . vel_acc) ; __tmp . put_u16_le (self . update_rate) ; for val in & self . uas_id { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . flight_state as u8) ; __tmp . put_u8 (self . flags . bits ()) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HOME_POSITION_DATA { pub latitude : i32 , pub longitude : i32 , pub altitude : i32 , pub x : f32 , pub y : f32 , pub z : f32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub q : [f32 ; 4] , pub approach_x : f32 , pub approach_y : f32 , pub approach_z : f32 , } impl HOME_POSITION_DATA { pub const ENCODED_LEN : usize = 52usize ; pub const DEFAULT : Self = Self { latitude : 0_i32 , longitude : 0_i32 , altitude : 0_i32 , x : 0.0_f32 , y : 0.0_f32 , z : 0.0_f32 , q : [0.0_f32 ; 4usize] , approach_x : 0.0_f32 , approach_y : 0.0_f32 , approach_z : 0.0_f32 , } ; } impl Default for HOME_POSITION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for HOME_POSITION_DATA { type Message = MavMessage ; const ID : u32 = 242u32 ; const NAME : & 'static str = "HOME_POSITION" ; const EXTRA_CRC : u8 = 104u8 ; const ENCODED_LEN : usize = 52usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . latitude = buf . get_i32_le () ; __struct . longitude = buf . get_i32_le () ; __struct . altitude = buf . get_i32_le () ; __struct . x = buf . get_f32_le () ; __struct . y = buf . get_f32_le () ; __struct . z = buf . get_f32_le () ; for v in & mut __struct . q { let val = buf . get_f32_le () ; * v = val ; } __struct . approach_x = buf . get_f32_le () ; __struct . approach_y = buf . get_f32_le () ; __struct . approach_z = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . latitude) ; __tmp . put_i32_le (self . longitude) ; __tmp . put_i32_le (self . altitude) ; __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; for val in & self . q { __tmp . put_f32_le (* val) ; } __tmp . put_f32_le (self . approach_x) ; __tmp . put_f32_le (self . approach_y) ; __tmp . put_f32_le (self . approach_z) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct UAVCAN_NODE_INFO_DATA { pub time_usec : u64 , pub uptime_sec : u32 , pub sw_vcs_commit : u32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub name : [u8 ; 80] , pub hw_version_major : u8 , pub hw_version_minor : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub hw_unique_id : [u8 ; 16] , pub sw_version_major : u8 , pub sw_version_minor : u8 , } impl UAVCAN_NODE_INFO_DATA { pub const ENCODED_LEN : usize = 116usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , uptime_sec : 0_u32 , sw_vcs_commit : 0_u32 , name : [0_u8 ; 80usize] , hw_version_major : 0_u8 , hw_version_minor : 0_u8 , hw_unique_id : [0_u8 ; 16usize] , sw_version_major : 0_u8 , sw_version_minor : 0_u8 , } ; } impl Default for UAVCAN_NODE_INFO_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for UAVCAN_NODE_INFO_DATA { type Message = MavMessage ; const ID : u32 = 311u32 ; const NAME : & 'static str = "UAVCAN_NODE_INFO" ; const EXTRA_CRC : u8 = 95u8 ; const ENCODED_LEN : usize = 116usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . uptime_sec = buf . get_u32_le () ; __struct . sw_vcs_commit = buf . get_u32_le () ; for v in & mut __struct . name { let val = buf . get_u8 () ; * v = val ; } __struct . hw_version_major = buf . get_u8 () ; __struct . hw_version_minor = buf . get_u8 () ; for v in & mut __struct . hw_unique_id { let val = buf . get_u8 () ; * v = val ; } __struct . sw_version_major = buf . get_u8 () ; __struct . sw_version_minor = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_u32_le (self . uptime_sec) ; __tmp . put_u32_le (self . sw_vcs_commit) ; for val in & self . name { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . hw_version_major) ; __tmp . put_u8 (self . hw_version_minor) ; for val in & self . hw_unique_id { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . sw_version_major) ; __tmp . put_u8 (self . sw_version_minor) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PLAY_TUNE_V2_DATA { pub format : TuneFormat , pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub tune : [u8 ; 248] , } impl PLAY_TUNE_V2_DATA { pub const ENCODED_LEN : usize = 254usize ; pub const DEFAULT : Self = Self { format : TuneFormat :: DEFAULT , target_system : 0_u8 , target_component : 0_u8 , tune : [0_u8 ; 248usize] , } ; } impl Default for PLAY_TUNE_V2_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for PLAY_TUNE_V2_DATA { type Message = MavMessage ; const ID : u32 = 400u32 ; const NAME : & 'static str = "PLAY_TUNE_V2" ; const EXTRA_CRC : u8 = 110u8 ; const ENCODED_LEN : usize = 254usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u32_le () ; __struct . format = TuneFormat :: from_bits (tmp & TuneFormat :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "TuneFormat" , value : tmp as u32 }) ? ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . tune { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . format . bits ()) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . tune { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MISSION_REQUEST_LIST_DATA { pub target_system : u8 , pub target_component : u8 , } impl MISSION_REQUEST_LIST_DATA { pub const ENCODED_LEN : usize = 2usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for MISSION_REQUEST_LIST_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MISSION_REQUEST_LIST_DATA { type Message = MavMessage ; const ID : u32 = 43u32 ; const NAME : & 'static str = "MISSION_REQUEST_LIST" ; const EXTRA_CRC : u8 = 132u8 ; const ENCODED_LEN : usize = 2usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MISSION_REQUEST_INT_DATA { pub seq : u16 , pub target_system : u8 , pub target_component : u8 , } impl MISSION_REQUEST_INT_DATA { pub const ENCODED_LEN : usize = 4usize ; pub const DEFAULT : Self = Self { seq : 0_u16 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for MISSION_REQUEST_INT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MISSION_REQUEST_INT_DATA { type Message = MavMessage ; const ID : u32 = 51u32 ; const NAME : & 'static str = "MISSION_REQUEST_INT" ; const EXTRA_CRC : u8 = 196u8 ; const ENCODED_LEN : usize = 4usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . seq = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . seq) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct DATA_STREAM_DATA { pub message_rate : u16 , pub stream_id : u8 , pub on_off : u8 , } impl DATA_STREAM_DATA { pub const ENCODED_LEN : usize = 4usize ; pub const DEFAULT : Self = Self { message_rate : 0_u16 , stream_id : 0_u8 , on_off : 0_u8 , } ; } impl Default for DATA_STREAM_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for DATA_STREAM_DATA { type Message = MavMessage ; const ID : u32 = 67u32 ; const NAME : & 'static str = "DATA_STREAM" ; const EXTRA_CRC : u8 = 21u8 ; const ENCODED_LEN : usize = 4usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . message_rate = buf . get_u16_le () ; __struct . stream_id = buf . get_u8 () ; __struct . on_off = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . message_rate) ; __tmp . put_u8 (self . stream_id) ; __tmp . put_u8 (self . on_off) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct VIDEO_STREAM_INFORMATION_DATA { pub framerate : f32 , pub bitrate : u32 , pub flags : VideoStreamStatusFlags , pub resolution_h : u16 , pub resolution_v : u16 , pub rotation : u16 , pub hfov : u16 , pub stream_id : u8 , pub count : u8 , pub mavtype : VideoStreamType , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub name : [u8 ; 32] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub uri : [u8 ; 160] , } impl VIDEO_STREAM_INFORMATION_DATA { pub const ENCODED_LEN : usize = 213usize ; pub const DEFAULT : Self = Self { framerate : 0.0_f32 , bitrate : 0_u32 , flags : VideoStreamStatusFlags :: DEFAULT , resolution_h : 0_u16 , resolution_v : 0_u16 , rotation : 0_u16 , hfov : 0_u16 , stream_id : 0_u8 , count : 0_u8 , mavtype : VideoStreamType :: DEFAULT , name : [0_u8 ; 32usize] , uri : [0_u8 ; 160usize] , } ; } impl Default for VIDEO_STREAM_INFORMATION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for VIDEO_STREAM_INFORMATION_DATA { type Message = MavMessage ; const ID : u32 = 269u32 ; const NAME : & 'static str = "VIDEO_STREAM_INFORMATION" ; const EXTRA_CRC : u8 = 109u8 ; const ENCODED_LEN : usize = 213usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . framerate = buf . get_f32_le () ; __struct . bitrate = buf . get_u32_le () ; let tmp = buf . get_u16_le () ; __struct . flags = FromPrimitive :: from_u16 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "VideoStreamStatusFlags" , value : tmp as u32 }) ? ; __struct . resolution_h = buf . get_u16_le () ; __struct . resolution_v = buf . get_u16_le () ; __struct . rotation = buf . get_u16_le () ; __struct . hfov = buf . get_u16_le () ; __struct . stream_id = buf . get_u8 () ; __struct . count = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . mavtype = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "VideoStreamType" , value : tmp as u32 }) ? ; for v in & mut __struct . name { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . uri { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . framerate) ; __tmp . put_u32_le (self . bitrate) ; __tmp . put_u16_le (self . flags as u16) ; __tmp . put_u16_le (self . resolution_h) ; __tmp . put_u16_le (self . resolution_v) ; __tmp . put_u16_le (self . rotation) ; __tmp . put_u16_le (self . hfov) ; __tmp . put_u8 (self . stream_id) ; __tmp . put_u8 (self . count) ; __tmp . put_u8 (self . mavtype as u8) ; for val in & self . name { __tmp . put_u8 (* val) ; } for val in & self . uri { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CANFD_FRAME_DATA { pub id : u32 , pub target_system : u8 , pub target_component : u8 , pub bus : u8 , pub len : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub data : [u8 ; 64] , } impl CANFD_FRAME_DATA { pub const ENCODED_LEN : usize = 72usize ; pub const DEFAULT : Self = Self { id : 0_u32 , target_system : 0_u8 , target_component : 0_u8 , bus : 0_u8 , len : 0_u8 , data : [0_u8 ; 64usize] , } ; } impl Default for CANFD_FRAME_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CANFD_FRAME_DATA { type Message = MavMessage ; const ID : u32 = 387u32 ; const NAME : & 'static str = "CANFD_FRAME" ; const EXTRA_CRC : u8 = 4u8 ; const ENCODED_LEN : usize = 72usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . id = buf . get_u32_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . bus = buf . get_u8 () ; __struct . len = buf . get_u8 () ; for v in & mut __struct . data { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . id) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . bus) ; __tmp . put_u8 (self . len) ; for val in & self . data { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HYGROMETER_SENSOR_DATA { pub temperature : i16 , pub humidity : u16 , pub id : u8 , } impl HYGROMETER_SENSOR_DATA { pub const ENCODED_LEN : usize = 5usize ; pub const DEFAULT : Self = Self { temperature : 0_i16 , humidity : 0_u16 , id : 0_u8 , } ; } impl Default for HYGROMETER_SENSOR_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for HYGROMETER_SENSOR_DATA { type Message = MavMessage ; const ID : u32 = 12920u32 ; const NAME : & 'static str = "HYGROMETER_SENSOR" ; const EXTRA_CRC : u8 = 20u8 ; const ENCODED_LEN : usize = 5usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . temperature = buf . get_i16_le () ; __struct . humidity = buf . get_u16_le () ; __struct . id = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i16_le (self . temperature) ; __tmp . put_u16_le (self . humidity) ; __tmp . put_u8 (self . id) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct POSITION_TARGET_GLOBAL_INT_DATA { pub time_boot_ms : u32 , pub lat_int : i32 , pub lon_int : i32 , pub alt : f32 , pub vx : f32 , pub vy : f32 , pub vz : f32 , pub afx : f32 , pub afy : f32 , pub afz : f32 , pub yaw : f32 , pub yaw_rate : f32 , pub type_mask : PositionTargetTypemask , pub coordinate_frame : MavFrame , } impl POSITION_TARGET_GLOBAL_INT_DATA { pub const ENCODED_LEN : usize = 51usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , lat_int : 0_i32 , lon_int : 0_i32 , alt : 0.0_f32 , vx : 0.0_f32 , vy : 0.0_f32 , vz : 0.0_f32 , afx : 0.0_f32 , afy : 0.0_f32 , afz : 0.0_f32 , yaw : 0.0_f32 , yaw_rate : 0.0_f32 , type_mask : PositionTargetTypemask :: DEFAULT , coordinate_frame : MavFrame :: DEFAULT , } ; } impl Default for POSITION_TARGET_GLOBAL_INT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for POSITION_TARGET_GLOBAL_INT_DATA { type Message = MavMessage ; const ID : u32 = 87u32 ; const NAME : & 'static str = "POSITION_TARGET_GLOBAL_INT" ; const EXTRA_CRC : u8 = 150u8 ; const ENCODED_LEN : usize = 51usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . lat_int = buf . get_i32_le () ; __struct . lon_int = buf . get_i32_le () ; __struct . alt = buf . get_f32_le () ; __struct . vx = buf . get_f32_le () ; __struct . vy = buf . get_f32_le () ; __struct . vz = buf . get_f32_le () ; __struct . afx = buf . get_f32_le () ; __struct . afy = buf . get_f32_le () ; __struct . afz = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; __struct . yaw_rate = buf . get_f32_le () ; let tmp = buf . get_u16_le () ; __struct . type_mask = PositionTargetTypemask :: from_bits (tmp & PositionTargetTypemask :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "PositionTargetTypemask" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . coordinate_frame = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavFrame" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_i32_le (self . lat_int) ; __tmp . put_i32_le (self . lon_int) ; __tmp . put_f32_le (self . alt) ; __tmp . put_f32_le (self . vx) ; __tmp . put_f32_le (self . vy) ; __tmp . put_f32_le (self . vz) ; __tmp . put_f32_le (self . afx) ; __tmp . put_f32_le (self . afy) ; __tmp . put_f32_le (self . afz) ; __tmp . put_f32_le (self . yaw) ; __tmp . put_f32_le (self . yaw_rate) ; __tmp . put_u16_le (self . type_mask . bits ()) ; __tmp . put_u8 (self . coordinate_frame as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HIGH_LATENCY2_DATA { pub timestamp : u32 , pub latitude : i32 , pub longitude : i32 , pub custom_mode : u16 , pub altitude : i16 , pub target_altitude : i16 , pub target_distance : u16 , pub wp_num : u16 , pub failure_flags : HlFailureFlag , pub mavtype : MavType , pub autopilot : MavAutopilot , pub heading : u8 , pub target_heading : u8 , pub throttle : u8 , pub airspeed : u8 , pub airspeed_sp : u8 , pub groundspeed : u8 , pub windspeed : u8 , pub wind_heading : u8 , pub eph : u8 , pub epv : u8 , pub temperature_air : i8 , pub climb_rate : i8 , pub battery : i8 , pub custom0 : i8 , pub custom1 : i8 , pub custom2 : i8 , } impl HIGH_LATENCY2_DATA { pub const ENCODED_LEN : usize = 42usize ; pub const DEFAULT : Self = Self { timestamp : 0_u32 , latitude : 0_i32 , longitude : 0_i32 , custom_mode : 0_u16 , altitude : 0_i16 , target_altitude : 0_i16 , target_distance : 0_u16 , wp_num : 0_u16 , failure_flags : HlFailureFlag :: DEFAULT , mavtype : MavType :: DEFAULT , autopilot : MavAutopilot :: DEFAULT , heading : 0_u8 , target_heading : 0_u8 , throttle : 0_u8 , airspeed : 0_u8 , airspeed_sp : 0_u8 , groundspeed : 0_u8 , windspeed : 0_u8 , wind_heading : 0_u8 , eph : 0_u8 , epv : 0_u8 , temperature_air : 0_i8 , climb_rate : 0_i8 , battery : 0_i8 , custom0 : 0_i8 , custom1 : 0_i8 , custom2 : 0_i8 , } ; } impl Default for HIGH_LATENCY2_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for HIGH_LATENCY2_DATA { type Message = MavMessage ; const ID : u32 = 235u32 ; const NAME : & 'static str = "HIGH_LATENCY2" ; const EXTRA_CRC : u8 = 179u8 ; const ENCODED_LEN : usize = 42usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . timestamp = buf . get_u32_le () ; __struct . latitude = buf . get_i32_le () ; __struct . longitude = buf . get_i32_le () ; __struct . custom_mode = buf . get_u16_le () ; __struct . altitude = buf . get_i16_le () ; __struct . target_altitude = buf . get_i16_le () ; __struct . target_distance = buf . get_u16_le () ; __struct . wp_num = buf . get_u16_le () ; let tmp = buf . get_u16_le () ; __struct . failure_flags = HlFailureFlag :: from_bits (tmp & HlFailureFlag :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "HlFailureFlag" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . mavtype = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavType" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . autopilot = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavAutopilot" , value : tmp as u32 }) ? ; __struct . heading = buf . get_u8 () ; __struct . target_heading = buf . get_u8 () ; __struct . throttle = buf . get_u8 () ; __struct . airspeed = buf . get_u8 () ; __struct . airspeed_sp = buf . get_u8 () ; __struct . groundspeed = buf . get_u8 () ; __struct . windspeed = buf . get_u8 () ; __struct . wind_heading = buf . get_u8 () ; __struct . eph = buf . get_u8 () ; __struct . epv = buf . get_u8 () ; __struct . temperature_air = buf . get_i8 () ; __struct . climb_rate = buf . get_i8 () ; __struct . battery = buf . get_i8 () ; __struct . custom0 = buf . get_i8 () ; __struct . custom1 = buf . get_i8 () ; __struct . custom2 = buf . get_i8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . timestamp) ; __tmp . put_i32_le (self . latitude) ; __tmp . put_i32_le (self . longitude) ; __tmp . put_u16_le (self . custom_mode) ; __tmp . put_i16_le (self . altitude) ; __tmp . put_i16_le (self . target_altitude) ; __tmp . put_u16_le (self . target_distance) ; __tmp . put_u16_le (self . wp_num) ; __tmp . put_u16_le (self . failure_flags . bits ()) ; __tmp . put_u8 (self . mavtype as u8) ; __tmp . put_u8 (self . autopilot as u8) ; __tmp . put_u8 (self . heading) ; __tmp . put_u8 (self . target_heading) ; __tmp . put_u8 (self . throttle) ; __tmp . put_u8 (self . airspeed) ; __tmp . put_u8 (self . airspeed_sp) ; __tmp . put_u8 (self . groundspeed) ; __tmp . put_u8 (self . windspeed) ; __tmp . put_u8 (self . wind_heading) ; __tmp . put_u8 (self . eph) ; __tmp . put_u8 (self . epv) ; __tmp . put_i8 (self . temperature_air) ; __tmp . put_i8 (self . climb_rate) ; __tmp . put_i8 (self . battery) ; __tmp . put_i8 (self . custom0) ; __tmp . put_i8 (self . custom1) ; __tmp . put_i8 (self . custom2) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GLOBAL_POSITION_INT_COV_DATA { pub time_usec : u64 , pub lat : i32 , pub lon : i32 , pub alt : i32 , pub relative_alt : i32 , pub vx : f32 , pub vy : f32 , pub vz : f32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub covariance : [f32 ; 36] , pub estimator_type : MavEstimatorType , } impl GLOBAL_POSITION_INT_COV_DATA { pub const ENCODED_LEN : usize = 181usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , lat : 0_i32 , lon : 0_i32 , alt : 0_i32 , relative_alt : 0_i32 , vx : 0.0_f32 , vy : 0.0_f32 , vz : 0.0_f32 , covariance : [0.0_f32 ; 36usize] , estimator_type : MavEstimatorType :: DEFAULT , } ; } impl Default for GLOBAL_POSITION_INT_COV_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GLOBAL_POSITION_INT_COV_DATA { type Message = MavMessage ; const ID : u32 = 63u32 ; const NAME : & 'static str = "GLOBAL_POSITION_INT_COV" ; const EXTRA_CRC : u8 = 119u8 ; const ENCODED_LEN : usize = 181usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . alt = buf . get_i32_le () ; __struct . relative_alt = buf . get_i32_le () ; __struct . vx = buf . get_f32_le () ; __struct . vy = buf . get_f32_le () ; __struct . vz = buf . get_f32_le () ; for v in & mut __struct . covariance { let val = buf . get_f32_le () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . estimator_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavEstimatorType" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_i32_le (self . alt) ; __tmp . put_i32_le (self . relative_alt) ; __tmp . put_f32_le (self . vx) ; __tmp . put_f32_le (self . vy) ; __tmp . put_f32_le (self . vz) ; for val in & self . covariance { __tmp . put_f32_le (* val) ; } __tmp . put_u8 (self . estimator_type as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct NAMED_VALUE_INT_DATA { pub time_boot_ms : u32 , pub value : i32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub name : [u8 ; 10] , } impl NAMED_VALUE_INT_DATA { pub const ENCODED_LEN : usize = 18usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , value : 0_i32 , name : [0_u8 ; 10usize] , } ; } impl Default for NAMED_VALUE_INT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for NAMED_VALUE_INT_DATA { type Message = MavMessage ; const ID : u32 = 252u32 ; const NAME : & 'static str = "NAMED_VALUE_INT" ; const EXTRA_CRC : u8 = 44u8 ; const ENCODED_LEN : usize = 18usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . value = buf . get_i32_le () ; for v in & mut __struct . name { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_i32_le (self . value) ; for val in & self . name { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CHANGE_OPERATOR_CONTROL_ACK_DATA { pub gcs_system_id : u8 , pub control_request : u8 , pub ack : u8 , } impl CHANGE_OPERATOR_CONTROL_ACK_DATA { pub const ENCODED_LEN : usize = 3usize ; pub const DEFAULT : Self = Self { gcs_system_id : 0_u8 , control_request : 0_u8 , ack : 0_u8 , } ; } impl Default for CHANGE_OPERATOR_CONTROL_ACK_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CHANGE_OPERATOR_CONTROL_ACK_DATA { type Message = MavMessage ; const ID : u32 = 6u32 ; const NAME : & 'static str = "CHANGE_OPERATOR_CONTROL_ACK" ; const EXTRA_CRC : u8 = 104u8 ; const ENCODED_LEN : usize = 3usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . gcs_system_id = buf . get_u8 () ; __struct . control_request = buf . get_u8 () ; __struct . ack = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . gcs_system_id) ; __tmp . put_u8 (self . control_request) ; __tmp . put_u8 (self . ack) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GIMBAL_MANAGER_INFORMATION_DATA { pub time_boot_ms : u32 , pub cap_flags : GimbalManagerCapFlags , pub roll_min : f32 , pub roll_max : f32 , pub pitch_min : f32 , pub pitch_max : f32 , pub yaw_min : f32 , pub yaw_max : f32 , pub gimbal_device_id : u8 , } impl GIMBAL_MANAGER_INFORMATION_DATA { pub const ENCODED_LEN : usize = 33usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , cap_flags : GimbalManagerCapFlags :: DEFAULT , roll_min : 0.0_f32 , roll_max : 0.0_f32 , pitch_min : 0.0_f32 , pitch_max : 0.0_f32 , yaw_min : 0.0_f32 , yaw_max : 0.0_f32 , gimbal_device_id : 0_u8 , } ; } impl Default for GIMBAL_MANAGER_INFORMATION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GIMBAL_MANAGER_INFORMATION_DATA { type Message = MavMessage ; const ID : u32 = 280u32 ; const NAME : & 'static str = "GIMBAL_MANAGER_INFORMATION" ; const EXTRA_CRC : u8 = 70u8 ; const ENCODED_LEN : usize = 33usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; let tmp = buf . get_u32_le () ; __struct . cap_flags = GimbalManagerCapFlags :: from_bits (tmp & GimbalManagerCapFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "GimbalManagerCapFlags" , value : tmp as u32 }) ? ; __struct . roll_min = buf . get_f32_le () ; __struct . roll_max = buf . get_f32_le () ; __struct . pitch_min = buf . get_f32_le () ; __struct . pitch_max = buf . get_f32_le () ; __struct . yaw_min = buf . get_f32_le () ; __struct . yaw_max = buf . get_f32_le () ; __struct . gimbal_device_id = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_u32_le (self . cap_flags . bits ()) ; __tmp . put_f32_le (self . roll_min) ; __tmp . put_f32_le (self . roll_max) ; __tmp . put_f32_le (self . pitch_min) ; __tmp . put_f32_le (self . pitch_max) ; __tmp . put_f32_le (self . yaw_min) ; __tmp . put_f32_le (self . yaw_max) ; __tmp . put_u8 (self . gimbal_device_id) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct COMPONENT_METADATA_DATA { pub time_boot_ms : u32 , pub file_crc : u32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub uri : [u8 ; 100] , } impl COMPONENT_METADATA_DATA { pub const ENCODED_LEN : usize = 108usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , file_crc : 0_u32 , uri : [0_u8 ; 100usize] , } ; } impl Default for COMPONENT_METADATA_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for COMPONENT_METADATA_DATA { type Message = MavMessage ; const ID : u32 = 397u32 ; const NAME : & 'static str = "COMPONENT_METADATA" ; const EXTRA_CRC : u8 = 182u8 ; const ENCODED_LEN : usize = 108usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . file_crc = buf . get_u32_le () ; for v in & mut __struct . uri { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_u32_le (self . file_crc) ; for val in & self . uri { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LOGGING_ACK_DATA { pub sequence : u16 , pub target_system : u8 , pub target_component : u8 , } impl LOGGING_ACK_DATA { pub const ENCODED_LEN : usize = 4usize ; pub const DEFAULT : Self = Self { sequence : 0_u16 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for LOGGING_ACK_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for LOGGING_ACK_DATA { type Message = MavMessage ; const ID : u32 = 268u32 ; const NAME : & 'static str = "LOGGING_ACK" ; const EXTRA_CRC : u8 = 14u8 ; const ENCODED_LEN : usize = 4usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . sequence = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . sequence) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct RC_CHANNELS_RAW_DATA { pub time_boot_ms : u32 , pub chan1_raw : u16 , pub chan2_raw : u16 , pub chan3_raw : u16 , pub chan4_raw : u16 , pub chan5_raw : u16 , pub chan6_raw : u16 , pub chan7_raw : u16 , pub chan8_raw : u16 , pub port : u8 , pub rssi : u8 , } impl RC_CHANNELS_RAW_DATA { pub const ENCODED_LEN : usize = 22usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , chan1_raw : 0_u16 , chan2_raw : 0_u16 , chan3_raw : 0_u16 , chan4_raw : 0_u16 , chan5_raw : 0_u16 , chan6_raw : 0_u16 , chan7_raw : 0_u16 , chan8_raw : 0_u16 , port : 0_u8 , rssi : 0_u8 , } ; } impl Default for RC_CHANNELS_RAW_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for RC_CHANNELS_RAW_DATA { type Message = MavMessage ; const ID : u32 = 35u32 ; const NAME : & 'static str = "RC_CHANNELS_RAW" ; const EXTRA_CRC : u8 = 244u8 ; const ENCODED_LEN : usize = 22usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . chan1_raw = buf . get_u16_le () ; __struct . chan2_raw = buf . get_u16_le () ; __struct . chan3_raw = buf . get_u16_le () ; __struct . chan4_raw = buf . get_u16_le () ; __struct . chan5_raw = buf . get_u16_le () ; __struct . chan6_raw = buf . get_u16_le () ; __struct . chan7_raw = buf . get_u16_le () ; __struct . chan8_raw = buf . get_u16_le () ; __struct . port = buf . get_u8 () ; __struct . rssi = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_u16_le (self . chan1_raw) ; __tmp . put_u16_le (self . chan2_raw) ; __tmp . put_u16_le (self . chan3_raw) ; __tmp . put_u16_le (self . chan4_raw) ; __tmp . put_u16_le (self . chan5_raw) ; __tmp . put_u16_le (self . chan6_raw) ; __tmp . put_u16_le (self . chan7_raw) ; __tmp . put_u16_le (self . chan8_raw) ; __tmp . put_u8 (self . port) ; __tmp . put_u8 (self . rssi) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct POSITION_TARGET_LOCAL_NED_DATA { pub time_boot_ms : u32 , pub x : f32 , pub y : f32 , pub z : f32 , pub vx : f32 , pub vy : f32 , pub vz : f32 , pub afx : f32 , pub afy : f32 , pub afz : f32 , pub yaw : f32 , pub yaw_rate : f32 , pub type_mask : PositionTargetTypemask , pub coordinate_frame : MavFrame , } impl POSITION_TARGET_LOCAL_NED_DATA { pub const ENCODED_LEN : usize = 51usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , x : 0.0_f32 , y : 0.0_f32 , z : 0.0_f32 , vx : 0.0_f32 , vy : 0.0_f32 , vz : 0.0_f32 , afx : 0.0_f32 , afy : 0.0_f32 , afz : 0.0_f32 , yaw : 0.0_f32 , yaw_rate : 0.0_f32 , type_mask : PositionTargetTypemask :: DEFAULT , coordinate_frame : MavFrame :: DEFAULT , } ; } impl Default for POSITION_TARGET_LOCAL_NED_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for POSITION_TARGET_LOCAL_NED_DATA { type Message = MavMessage ; const ID : u32 = 85u32 ; const NAME : & 'static str = "POSITION_TARGET_LOCAL_NED" ; const EXTRA_CRC : u8 = 140u8 ; const ENCODED_LEN : usize = 51usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . x = buf . get_f32_le () ; __struct . y = buf . get_f32_le () ; __struct . z = buf . get_f32_le () ; __struct . vx = buf . get_f32_le () ; __struct . vy = buf . get_f32_le () ; __struct . vz = buf . get_f32_le () ; __struct . afx = buf . get_f32_le () ; __struct . afy = buf . get_f32_le () ; __struct . afz = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; __struct . yaw_rate = buf . get_f32_le () ; let tmp = buf . get_u16_le () ; __struct . type_mask = PositionTargetTypemask :: from_bits (tmp & PositionTargetTypemask :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "PositionTargetTypemask" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . coordinate_frame = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavFrame" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; __tmp . put_f32_le (self . vx) ; __tmp . put_f32_le (self . vy) ; __tmp . put_f32_le (self . vz) ; __tmp . put_f32_le (self . afx) ; __tmp . put_f32_le (self . afy) ; __tmp . put_f32_le (self . afz) ; __tmp . put_f32_le (self . yaw) ; __tmp . put_f32_le (self . yaw_rate) ; __tmp . put_u16_le (self . type_mask . bits ()) ; __tmp . put_u8 (self . coordinate_frame as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PARAM_EXT_SET_DATA { pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub param_id : [u8 ; 16] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub param_value : [u8 ; 128] , pub param_type : MavParamExtType , } impl PARAM_EXT_SET_DATA { pub const ENCODED_LEN : usize = 147usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , param_id : [0_u8 ; 16usize] , param_value : [0_u8 ; 128usize] , param_type : MavParamExtType :: DEFAULT , } ; } impl Default for PARAM_EXT_SET_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for PARAM_EXT_SET_DATA { type Message = MavMessage ; const ID : u32 = 323u32 ; const NAME : & 'static str = "PARAM_EXT_SET" ; const EXTRA_CRC : u8 = 78u8 ; const ENCODED_LEN : usize = 147usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . param_id { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . param_value { let val = buf . get_u8 () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . param_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavParamExtType" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . param_id { __tmp . put_u8 (* val) ; } for val in & self . param_value { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . param_type as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HEARTBEAT_DATA { pub custom_mode : u32 , pub mavtype : MavType , pub autopilot : MavAutopilot , pub base_mode : MavModeFlag , pub system_status : MavState , pub mavlink_version : u8 , } impl HEARTBEAT_DATA { pub const ENCODED_LEN : usize = 9usize ; pub const DEFAULT : Self = Self { custom_mode : 0_u32 , mavtype : MavType :: DEFAULT , autopilot : MavAutopilot :: DEFAULT , base_mode : MavModeFlag :: DEFAULT , system_status : MavState :: DEFAULT , mavlink_version : 0_u8 , } ; } impl Default for HEARTBEAT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for HEARTBEAT_DATA { type Message = MavMessage ; const ID : u32 = 0u32 ; const NAME : & 'static str = "HEARTBEAT" ; const EXTRA_CRC : u8 = 50u8 ; const ENCODED_LEN : usize = 9usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . custom_mode = buf . get_u32_le () ; let tmp = buf . get_u8 () ; __struct . mavtype = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavType" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . autopilot = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavAutopilot" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . base_mode = MavModeFlag :: from_bits (tmp & MavModeFlag :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "MavModeFlag" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . system_status = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavState" , value : tmp as u32 }) ? ; __struct . mavlink_version = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . custom_mode) ; __tmp . put_u8 (self . mavtype as u8) ; __tmp . put_u8 (self . autopilot as u8) ; __tmp . put_u8 (self . base_mode . bits ()) ; __tmp . put_u8 (self . system_status as u8) ; __tmp . put_u8 (self . mavlink_version) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct WIFI_CONFIG_AP_DATA { # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub ssid : [u8 ; 32] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub password : [u8 ; 64] , } impl WIFI_CONFIG_AP_DATA { pub const ENCODED_LEN : usize = 96usize ; pub const DEFAULT : Self = Self { ssid : [0_u8 ; 32usize] , password : [0_u8 ; 64usize] , } ; } impl Default for WIFI_CONFIG_AP_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for WIFI_CONFIG_AP_DATA { type Message = MavMessage ; const ID : u32 = 299u32 ; const NAME : & 'static str = "WIFI_CONFIG_AP" ; const EXTRA_CRC : u8 = 19u8 ; const ENCODED_LEN : usize = 96usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; for v in & mut __struct . ssid { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . password { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; for val in & self . ssid { __tmp . put_u8 (* val) ; } for val in & self . password { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SCALED_IMU3_DATA { pub time_boot_ms : u32 , pub xacc : i16 , pub yacc : i16 , pub zacc : i16 , pub xgyro : i16 , pub ygyro : i16 , pub zgyro : i16 , pub xmag : i16 , pub ymag : i16 , pub zmag : i16 , } impl SCALED_IMU3_DATA { pub const ENCODED_LEN : usize = 22usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , xacc : 0_i16 , yacc : 0_i16 , zacc : 0_i16 , xgyro : 0_i16 , ygyro : 0_i16 , zgyro : 0_i16 , xmag : 0_i16 , ymag : 0_i16 , zmag : 0_i16 , } ; } impl Default for SCALED_IMU3_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SCALED_IMU3_DATA { type Message = MavMessage ; const ID : u32 = 129u32 ; const NAME : & 'static str = "SCALED_IMU3" ; const EXTRA_CRC : u8 = 46u8 ; const ENCODED_LEN : usize = 22usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . xacc = buf . get_i16_le () ; __struct . yacc = buf . get_i16_le () ; __struct . zacc = buf . get_i16_le () ; __struct . xgyro = buf . get_i16_le () ; __struct . ygyro = buf . get_i16_le () ; __struct . zgyro = buf . get_i16_le () ; __struct . xmag = buf . get_i16_le () ; __struct . ymag = buf . get_i16_le () ; __struct . zmag = buf . get_i16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_i16_le (self . xacc) ; __tmp . put_i16_le (self . yacc) ; __tmp . put_i16_le (self . zacc) ; __tmp . put_i16_le (self . xgyro) ; __tmp . put_i16_le (self . ygyro) ; __tmp . put_i16_le (self . zgyro) ; __tmp . put_i16_le (self . xmag) ; __tmp . put_i16_le (self . ymag) ; __tmp . put_i16_le (self . zmag) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PARAM_EXT_VALUE_DATA { pub param_count : u16 , pub param_index : u16 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub param_id : [u8 ; 16] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub param_value : [u8 ; 128] , pub param_type : MavParamExtType , } impl PARAM_EXT_VALUE_DATA { pub const ENCODED_LEN : usize = 149usize ; pub const DEFAULT : Self = Self { param_count : 0_u16 , param_index : 0_u16 , param_id : [0_u8 ; 16usize] , param_value : [0_u8 ; 128usize] , param_type : MavParamExtType :: DEFAULT , } ; } impl Default for PARAM_EXT_VALUE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for PARAM_EXT_VALUE_DATA { type Message = MavMessage ; const ID : u32 = 322u32 ; const NAME : & 'static str = "PARAM_EXT_VALUE" ; const EXTRA_CRC : u8 = 243u8 ; const ENCODED_LEN : usize = 149usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . param_count = buf . get_u16_le () ; __struct . param_index = buf . get_u16_le () ; for v in & mut __struct . param_id { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . param_value { let val = buf . get_u8 () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . param_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavParamExtType" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . param_count) ; __tmp . put_u16_le (self . param_index) ; for val in & self . param_id { __tmp . put_u8 (* val) ; } for val in & self . param_value { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . param_type as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct WINCH_STATUS_DATA { pub time_usec : u64 , pub line_length : f32 , pub speed : f32 , pub tension : f32 , pub voltage : f32 , pub current : f32 , pub status : MavWinchStatusFlag , pub temperature : i16 , } impl WINCH_STATUS_DATA { pub const ENCODED_LEN : usize = 34usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , line_length : 0.0_f32 , speed : 0.0_f32 , tension : 0.0_f32 , voltage : 0.0_f32 , current : 0.0_f32 , status : MavWinchStatusFlag :: DEFAULT , temperature : 0_i16 , } ; } impl Default for WINCH_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for WINCH_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 9005u32 ; const NAME : & 'static str = "WINCH_STATUS" ; const EXTRA_CRC : u8 = 117u8 ; const ENCODED_LEN : usize = 34usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . line_length = buf . get_f32_le () ; __struct . speed = buf . get_f32_le () ; __struct . tension = buf . get_f32_le () ; __struct . voltage = buf . get_f32_le () ; __struct . current = buf . get_f32_le () ; let tmp = buf . get_u32_le () ; __struct . status = MavWinchStatusFlag :: from_bits (tmp & MavWinchStatusFlag :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "MavWinchStatusFlag" , value : tmp as u32 }) ? ; __struct . temperature = buf . get_i16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . line_length) ; __tmp . put_f32_le (self . speed) ; __tmp . put_f32_le (self . tension) ; __tmp . put_f32_le (self . voltage) ; __tmp . put_f32_le (self . current) ; __tmp . put_u32_le (self . status . bits ()) ; __tmp . put_i16_le (self . temperature) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PARAM_REQUEST_READ_DATA { pub param_index : i16 , pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub param_id : [u8 ; 16] , } impl PARAM_REQUEST_READ_DATA { pub const ENCODED_LEN : usize = 20usize ; pub const DEFAULT : Self = Self { param_index : 0_i16 , target_system : 0_u8 , target_component : 0_u8 , param_id : [0_u8 ; 16usize] , } ; } impl Default for PARAM_REQUEST_READ_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for PARAM_REQUEST_READ_DATA { type Message = MavMessage ; const ID : u32 = 20u32 ; const NAME : & 'static str = "PARAM_REQUEST_READ" ; const EXTRA_CRC : u8 = 214u8 ; const ENCODED_LEN : usize = 20usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . param_index = buf . get_i16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . param_id { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i16_le (self . param_index) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . param_id { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HIGHRES_IMU_DATA { pub time_usec : u64 , pub xacc : f32 , pub yacc : f32 , pub zacc : f32 , pub xgyro : f32 , pub ygyro : f32 , pub zgyro : f32 , pub xmag : f32 , pub ymag : f32 , pub zmag : f32 , pub abs_pressure : f32 , pub diff_pressure : f32 , pub pressure_alt : f32 , pub temperature : f32 , pub fields_updated : HighresImuUpdatedFlags , } impl HIGHRES_IMU_DATA { pub const ENCODED_LEN : usize = 62usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , xacc : 0.0_f32 , yacc : 0.0_f32 , zacc : 0.0_f32 , xgyro : 0.0_f32 , ygyro : 0.0_f32 , zgyro : 0.0_f32 , xmag : 0.0_f32 , ymag : 0.0_f32 , zmag : 0.0_f32 , abs_pressure : 0.0_f32 , diff_pressure : 0.0_f32 , pressure_alt : 0.0_f32 , temperature : 0.0_f32 , fields_updated : HighresImuUpdatedFlags :: DEFAULT , } ; } impl Default for HIGHRES_IMU_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for HIGHRES_IMU_DATA { type Message = MavMessage ; const ID : u32 = 105u32 ; const NAME : & 'static str = "HIGHRES_IMU" ; const EXTRA_CRC : u8 = 93u8 ; const ENCODED_LEN : usize = 62usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . xacc = buf . get_f32_le () ; __struct . yacc = buf . get_f32_le () ; __struct . zacc = buf . get_f32_le () ; __struct . xgyro = buf . get_f32_le () ; __struct . ygyro = buf . get_f32_le () ; __struct . zgyro = buf . get_f32_le () ; __struct . xmag = buf . get_f32_le () ; __struct . ymag = buf . get_f32_le () ; __struct . zmag = buf . get_f32_le () ; __struct . abs_pressure = buf . get_f32_le () ; __struct . diff_pressure = buf . get_f32_le () ; __struct . pressure_alt = buf . get_f32_le () ; __struct . temperature = buf . get_f32_le () ; let tmp = buf . get_u16_le () ; __struct . fields_updated = HighresImuUpdatedFlags :: from_bits (tmp & HighresImuUpdatedFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "HighresImuUpdatedFlags" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . xacc) ; __tmp . put_f32_le (self . yacc) ; __tmp . put_f32_le (self . zacc) ; __tmp . put_f32_le (self . xgyro) ; __tmp . put_f32_le (self . ygyro) ; __tmp . put_f32_le (self . zgyro) ; __tmp . put_f32_le (self . xmag) ; __tmp . put_f32_le (self . ymag) ; __tmp . put_f32_le (self . zmag) ; __tmp . put_f32_le (self . abs_pressure) ; __tmp . put_f32_le (self . diff_pressure) ; __tmp . put_f32_le (self . pressure_alt) ; __tmp . put_f32_le (self . temperature) ; __tmp . put_u16_le (self . fields_updated . bits ()) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HIL_GPS_DATA { pub time_usec : u64 , pub lat : i32 , pub lon : i32 , pub alt : i32 , pub eph : u16 , pub epv : u16 , pub vel : u16 , pub vn : i16 , pub ve : i16 , pub vd : i16 , pub cog : u16 , pub fix_type : u8 , pub satellites_visible : u8 , } impl HIL_GPS_DATA { pub const ENCODED_LEN : usize = 36usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , lat : 0_i32 , lon : 0_i32 , alt : 0_i32 , eph : 0_u16 , epv : 0_u16 , vel : 0_u16 , vn : 0_i16 , ve : 0_i16 , vd : 0_i16 , cog : 0_u16 , fix_type : 0_u8 , satellites_visible : 0_u8 , } ; } impl Default for HIL_GPS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for HIL_GPS_DATA { type Message = MavMessage ; const ID : u32 = 113u32 ; const NAME : & 'static str = "HIL_GPS" ; const EXTRA_CRC : u8 = 124u8 ; const ENCODED_LEN : usize = 36usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . alt = buf . get_i32_le () ; __struct . eph = buf . get_u16_le () ; __struct . epv = buf . get_u16_le () ; __struct . vel = buf . get_u16_le () ; __struct . vn = buf . get_i16_le () ; __struct . ve = buf . get_i16_le () ; __struct . vd = buf . get_i16_le () ; __struct . cog = buf . get_u16_le () ; __struct . fix_type = buf . get_u8 () ; __struct . satellites_visible = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_i32_le (self . alt) ; __tmp . put_u16_le (self . eph) ; __tmp . put_u16_le (self . epv) ; __tmp . put_u16_le (self . vel) ; __tmp . put_i16_le (self . vn) ; __tmp . put_i16_le (self . ve) ; __tmp . put_i16_le (self . vd) ; __tmp . put_u16_le (self . cog) ; __tmp . put_u8 (self . fix_type) ; __tmp . put_u8 (self . satellites_visible) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct TERRAIN_REQUEST_DATA { pub mask : u64 , pub lat : i32 , pub lon : i32 , pub grid_spacing : u16 , } impl TERRAIN_REQUEST_DATA { pub const ENCODED_LEN : usize = 18usize ; pub const DEFAULT : Self = Self { mask : 0_u64 , lat : 0_i32 , lon : 0_i32 , grid_spacing : 0_u16 , } ; } impl Default for TERRAIN_REQUEST_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for TERRAIN_REQUEST_DATA { type Message = MavMessage ; const ID : u32 = 133u32 ; const NAME : & 'static str = "TERRAIN_REQUEST" ; const EXTRA_CRC : u8 = 6u8 ; const ENCODED_LEN : usize = 18usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . mask = buf . get_u64_le () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . grid_spacing = buf . get_u16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . mask) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_u16_le (self . grid_spacing) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ATTITUDE_DATA { pub time_boot_ms : u32 , pub roll : f32 , pub pitch : f32 , pub yaw : f32 , pub rollspeed : f32 , pub pitchspeed : f32 , pub yawspeed : f32 , } impl ATTITUDE_DATA { pub const ENCODED_LEN : usize = 28usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , roll : 0.0_f32 , pitch : 0.0_f32 , yaw : 0.0_f32 , rollspeed : 0.0_f32 , pitchspeed : 0.0_f32 , yawspeed : 0.0_f32 , } ; } impl Default for ATTITUDE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ATTITUDE_DATA { type Message = MavMessage ; const ID : u32 = 30u32 ; const NAME : & 'static str = "ATTITUDE" ; const EXTRA_CRC : u8 = 39u8 ; const ENCODED_LEN : usize = 28usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . roll = buf . get_f32_le () ; __struct . pitch = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; __struct . rollspeed = buf . get_f32_le () ; __struct . pitchspeed = buf . get_f32_le () ; __struct . yawspeed = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . roll) ; __tmp . put_f32_le (self . pitch) ; __tmp . put_f32_le (self . yaw) ; __tmp . put_f32_le (self . rollspeed) ; __tmp . put_f32_le (self . pitchspeed) ; __tmp . put_f32_le (self . yawspeed) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SYSTEM_TIME_DATA { pub time_unix_usec : u64 , pub time_boot_ms : u32 , } impl SYSTEM_TIME_DATA { pub const ENCODED_LEN : usize = 12usize ; pub const DEFAULT : Self = Self { time_unix_usec : 0_u64 , time_boot_ms : 0_u32 , } ; } impl Default for SYSTEM_TIME_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SYSTEM_TIME_DATA { type Message = MavMessage ; const ID : u32 = 2u32 ; const NAME : & 'static str = "SYSTEM_TIME" ; const EXTRA_CRC : u8 = 137u8 ; const ENCODED_LEN : usize = 12usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_unix_usec = buf . get_u64_le () ; __struct . time_boot_ms = buf . get_u32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_unix_usec) ; __tmp . put_u32_le (self . time_boot_ms) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ATTITUDE_TARGET_DATA { pub time_boot_ms : u32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub q : [f32 ; 4] , pub body_roll_rate : f32 , pub body_pitch_rate : f32 , pub body_yaw_rate : f32 , pub thrust : f32 , pub type_mask : AttitudeTargetTypemask , } impl ATTITUDE_TARGET_DATA { pub const ENCODED_LEN : usize = 37usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , q : [0.0_f32 ; 4usize] , body_roll_rate : 0.0_f32 , body_pitch_rate : 0.0_f32 , body_yaw_rate : 0.0_f32 , thrust : 0.0_f32 , type_mask : AttitudeTargetTypemask :: DEFAULT , } ; } impl Default for ATTITUDE_TARGET_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ATTITUDE_TARGET_DATA { type Message = MavMessage ; const ID : u32 = 83u32 ; const NAME : & 'static str = "ATTITUDE_TARGET" ; const EXTRA_CRC : u8 = 22u8 ; const ENCODED_LEN : usize = 37usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; for v in & mut __struct . q { let val = buf . get_f32_le () ; * v = val ; } __struct . body_roll_rate = buf . get_f32_le () ; __struct . body_pitch_rate = buf . get_f32_le () ; __struct . body_yaw_rate = buf . get_f32_le () ; __struct . thrust = buf . get_f32_le () ; let tmp = buf . get_u8 () ; __struct . type_mask = AttitudeTargetTypemask :: from_bits (tmp & AttitudeTargetTypemask :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "AttitudeTargetTypemask" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; for val in & self . q { __tmp . put_f32_le (* val) ; } __tmp . put_f32_le (self . body_roll_rate) ; __tmp . put_f32_le (self . body_pitch_rate) ; __tmp . put_f32_le (self . body_yaw_rate) ; __tmp . put_f32_le (self . thrust) ; __tmp . put_u8 (self . type_mask . bits ()) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct DATA_TRANSMISSION_HANDSHAKE_DATA { pub size : u32 , pub width : u16 , pub height : u16 , pub packets : u16 , pub mavtype : MavlinkDataStreamType , pub payload : u8 , pub jpg_quality : u8 , } impl DATA_TRANSMISSION_HANDSHAKE_DATA { pub const ENCODED_LEN : usize = 13usize ; pub const DEFAULT : Self = Self { size : 0_u32 , width : 0_u16 , height : 0_u16 , packets : 0_u16 , mavtype : MavlinkDataStreamType :: DEFAULT , payload : 0_u8 , jpg_quality : 0_u8 , } ; } impl Default for DATA_TRANSMISSION_HANDSHAKE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for DATA_TRANSMISSION_HANDSHAKE_DATA { type Message = MavMessage ; const ID : u32 = 130u32 ; const NAME : & 'static str = "DATA_TRANSMISSION_HANDSHAKE" ; const EXTRA_CRC : u8 = 29u8 ; const ENCODED_LEN : usize = 13usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . size = buf . get_u32_le () ; __struct . width = buf . get_u16_le () ; __struct . height = buf . get_u16_le () ; __struct . packets = buf . get_u16_le () ; let tmp = buf . get_u8 () ; __struct . mavtype = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavlinkDataStreamType" , value : tmp as u32 }) ? ; __struct . payload = buf . get_u8 () ; __struct . jpg_quality = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . size) ; __tmp . put_u16_le (self . width) ; __tmp . put_u16_le (self . height) ; __tmp . put_u16_le (self . packets) ; __tmp . put_u8 (self . mavtype as u8) ; __tmp . put_u8 (self . payload) ; __tmp . put_u8 (self . jpg_quality) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MESSAGE_INTERVAL_DATA { pub interval_us : i32 , pub message_id : u16 , } impl MESSAGE_INTERVAL_DATA { pub const ENCODED_LEN : usize = 6usize ; pub const DEFAULT : Self = Self { interval_us : 0_i32 , message_id : 0_u16 , } ; } impl Default for MESSAGE_INTERVAL_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MESSAGE_INTERVAL_DATA { type Message = MavMessage ; const ID : u32 = 244u32 ; const NAME : & 'static str = "MESSAGE_INTERVAL" ; const EXTRA_CRC : u8 = 95u8 ; const ENCODED_LEN : usize = 6usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . interval_us = buf . get_i32_le () ; __struct . message_id = buf . get_u16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . interval_us) ; __tmp . put_u16_le (self . message_id) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct TUNNEL_DATA { pub payload_type : MavTunnelPayloadType , pub target_system : u8 , pub target_component : u8 , pub payload_length : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub payload : [u8 ; 128] , } impl TUNNEL_DATA { pub const ENCODED_LEN : usize = 133usize ; pub const DEFAULT : Self = Self { payload_type : MavTunnelPayloadType :: DEFAULT , target_system : 0_u8 , target_component : 0_u8 , payload_length : 0_u8 , payload : [0_u8 ; 128usize] , } ; } impl Default for TUNNEL_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for TUNNEL_DATA { type Message = MavMessage ; const ID : u32 = 385u32 ; const NAME : & 'static str = "TUNNEL" ; const EXTRA_CRC : u8 = 147u8 ; const ENCODED_LEN : usize = 133usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u16_le () ; __struct . payload_type = FromPrimitive :: from_u16 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavTunnelPayloadType" , value : tmp as u32 }) ? ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . payload_length = buf . get_u8 () ; for v in & mut __struct . payload { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . payload_type as u16) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . payload_length) ; for val in & self . payload { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct RAW_IMU_DATA { pub time_usec : u64 , pub xacc : i16 , pub yacc : i16 , pub zacc : i16 , pub xgyro : i16 , pub ygyro : i16 , pub zgyro : i16 , pub xmag : i16 , pub ymag : i16 , pub zmag : i16 , } impl RAW_IMU_DATA { pub const ENCODED_LEN : usize = 26usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , xacc : 0_i16 , yacc : 0_i16 , zacc : 0_i16 , xgyro : 0_i16 , ygyro : 0_i16 , zgyro : 0_i16 , xmag : 0_i16 , ymag : 0_i16 , zmag : 0_i16 , } ; } impl Default for RAW_IMU_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for RAW_IMU_DATA { type Message = MavMessage ; const ID : u32 = 27u32 ; const NAME : & 'static str = "RAW_IMU" ; const EXTRA_CRC : u8 = 144u8 ; const ENCODED_LEN : usize = 26usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . xacc = buf . get_i16_le () ; __struct . yacc = buf . get_i16_le () ; __struct . zacc = buf . get_i16_le () ; __struct . xgyro = buf . get_i16_le () ; __struct . ygyro = buf . get_i16_le () ; __struct . zgyro = buf . get_i16_le () ; __struct . xmag = buf . get_i16_le () ; __struct . ymag = buf . get_i16_le () ; __struct . zmag = buf . get_i16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_i16_le (self . xacc) ; __tmp . put_i16_le (self . yacc) ; __tmp . put_i16_le (self . zacc) ; __tmp . put_i16_le (self . xgyro) ; __tmp . put_i16_le (self . ygyro) ; __tmp . put_i16_le (self . zgyro) ; __tmp . put_i16_le (self . xmag) ; __tmp . put_i16_le (self . ymag) ; __tmp . put_i16_le (self . zmag) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct OPEN_DRONE_ID_BASIC_ID_DATA { pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub id_or_mac : [u8 ; 20] , pub id_type : MavOdidIdType , pub ua_type : MavOdidUaType , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub uas_id : [u8 ; 20] , } impl OPEN_DRONE_ID_BASIC_ID_DATA { pub const ENCODED_LEN : usize = 44usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , id_or_mac : [0_u8 ; 20usize] , id_type : MavOdidIdType :: DEFAULT , ua_type : MavOdidUaType :: DEFAULT , uas_id : [0_u8 ; 20usize] , } ; } impl Default for OPEN_DRONE_ID_BASIC_ID_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for OPEN_DRONE_ID_BASIC_ID_DATA { type Message = MavMessage ; const ID : u32 = 12900u32 ; const NAME : & 'static str = "OPEN_DRONE_ID_BASIC_ID" ; const EXTRA_CRC : u8 = 114u8 ; const ENCODED_LEN : usize = 44usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . id_or_mac { let val = buf . get_u8 () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . id_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidIdType" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . ua_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidUaType" , value : tmp as u32 }) ? ; for v in & mut __struct . uas_id { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . id_or_mac { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . id_type as u8) ; __tmp . put_u8 (self . ua_type as u8) ; for val in & self . uas_id { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SCALED_PRESSURE_DATA { pub time_boot_ms : u32 , pub press_abs : f32 , pub press_diff : f32 , pub temperature : i16 , } impl SCALED_PRESSURE_DATA { pub const ENCODED_LEN : usize = 14usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , press_abs : 0.0_f32 , press_diff : 0.0_f32 , temperature : 0_i16 , } ; } impl Default for SCALED_PRESSURE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SCALED_PRESSURE_DATA { type Message = MavMessage ; const ID : u32 = 29u32 ; const NAME : & 'static str = "SCALED_PRESSURE" ; const EXTRA_CRC : u8 = 115u8 ; const ENCODED_LEN : usize = 14usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . press_abs = buf . get_f32_le () ; __struct . press_diff = buf . get_f32_le () ; __struct . temperature = buf . get_i16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . press_abs) ; __tmp . put_f32_le (self . press_diff) ; __tmp . put_i16_le (self . temperature) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GIMBAL_DEVICE_ATTITUDE_STATUS_DATA { pub time_boot_ms : u32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub q : [f32 ; 4] , pub angular_velocity_x : f32 , pub angular_velocity_y : f32 , pub angular_velocity_z : f32 , pub failure_flags : GimbalDeviceErrorFlags , pub flags : GimbalDeviceFlags , pub target_system : u8 , pub target_component : u8 , } impl GIMBAL_DEVICE_ATTITUDE_STATUS_DATA { pub const ENCODED_LEN : usize = 40usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , q : [0.0_f32 ; 4usize] , angular_velocity_x : 0.0_f32 , angular_velocity_y : 0.0_f32 , angular_velocity_z : 0.0_f32 , failure_flags : GimbalDeviceErrorFlags :: DEFAULT , flags : GimbalDeviceFlags :: DEFAULT , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for GIMBAL_DEVICE_ATTITUDE_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GIMBAL_DEVICE_ATTITUDE_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 285u32 ; const NAME : & 'static str = "GIMBAL_DEVICE_ATTITUDE_STATUS" ; const EXTRA_CRC : u8 = 137u8 ; const ENCODED_LEN : usize = 40usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; for v in & mut __struct . q { let val = buf . get_f32_le () ; * v = val ; } __struct . angular_velocity_x = buf . get_f32_le () ; __struct . angular_velocity_y = buf . get_f32_le () ; __struct . angular_velocity_z = buf . get_f32_le () ; let tmp = buf . get_u32_le () ; __struct . failure_flags = GimbalDeviceErrorFlags :: from_bits (tmp & GimbalDeviceErrorFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "GimbalDeviceErrorFlags" , value : tmp as u32 }) ? ; let tmp = buf . get_u16_le () ; __struct . flags = GimbalDeviceFlags :: from_bits (tmp & GimbalDeviceFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "GimbalDeviceFlags" , value : tmp as u32 }) ? ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; for val in & self . q { __tmp . put_f32_le (* val) ; } __tmp . put_f32_le (self . angular_velocity_x) ; __tmp . put_f32_le (self . angular_velocity_y) ; __tmp . put_f32_le (self . angular_velocity_z) ; __tmp . put_u32_le (self . failure_flags . bits ()) ; __tmp . put_u16_le (self . flags . bits ()) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CAN_FILTER_MODIFY_DATA { # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub ids : [u16 ; 16] , pub target_system : u8 , pub target_component : u8 , pub bus : u8 , pub operation : CanFilterOp , pub num_ids : u8 , } impl CAN_FILTER_MODIFY_DATA { pub const ENCODED_LEN : usize = 37usize ; pub const DEFAULT : Self = Self { ids : [0_u16 ; 16usize] , target_system : 0_u8 , target_component : 0_u8 , bus : 0_u8 , operation : CanFilterOp :: DEFAULT , num_ids : 0_u8 , } ; } impl Default for CAN_FILTER_MODIFY_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CAN_FILTER_MODIFY_DATA { type Message = MavMessage ; const ID : u32 = 388u32 ; const NAME : & 'static str = "CAN_FILTER_MODIFY" ; const EXTRA_CRC : u8 = 8u8 ; const ENCODED_LEN : usize = 37usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; for v in & mut __struct . ids { let val = buf . get_u16_le () ; * v = val ; } __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . bus = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . operation = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "CanFilterOp" , value : tmp as u32 }) ? ; __struct . num_ids = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; for val in & self . ids { __tmp . put_u16_le (* val) ; } __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . bus) ; __tmp . put_u8 (self . operation as u8) ; __tmp . put_u8 (self . num_ids) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HIL_ACTUATOR_CONTROLS_DATA { pub time_usec : u64 , pub flags : u64 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub controls : [f32 ; 16] , pub mode : MavModeFlag , } impl HIL_ACTUATOR_CONTROLS_DATA { pub const ENCODED_LEN : usize = 81usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , flags : 0_u64 , controls : [0.0_f32 ; 16usize] , mode : MavModeFlag :: DEFAULT , } ; } impl Default for HIL_ACTUATOR_CONTROLS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for HIL_ACTUATOR_CONTROLS_DATA { type Message = MavMessage ; const ID : u32 = 93u32 ; const NAME : & 'static str = "HIL_ACTUATOR_CONTROLS" ; const EXTRA_CRC : u8 = 47u8 ; const ENCODED_LEN : usize = 81usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . flags = buf . get_u64_le () ; for v in & mut __struct . controls { let val = buf . get_f32_le () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . mode = MavModeFlag :: from_bits (tmp & MavModeFlag :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "MavModeFlag" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_u64_le (self . flags) ; for val in & self . controls { __tmp . put_f32_le (* val) ; } __tmp . put_u8 (self . mode . bits ()) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct REQUEST_DATA_STREAM_DATA { pub req_message_rate : u16 , pub target_system : u8 , pub target_component : u8 , pub req_stream_id : u8 , pub start_stop : u8 , } impl REQUEST_DATA_STREAM_DATA { pub const ENCODED_LEN : usize = 6usize ; pub const DEFAULT : Self = Self { req_message_rate : 0_u16 , target_system : 0_u8 , target_component : 0_u8 , req_stream_id : 0_u8 , start_stop : 0_u8 , } ; } impl Default for REQUEST_DATA_STREAM_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for REQUEST_DATA_STREAM_DATA { type Message = MavMessage ; const ID : u32 = 66u32 ; const NAME : & 'static str = "REQUEST_DATA_STREAM" ; const EXTRA_CRC : u8 = 148u8 ; const ENCODED_LEN : usize = 6usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . req_message_rate = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . req_stream_id = buf . get_u8 () ; __struct . start_stop = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . req_message_rate) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . req_stream_id) ; __tmp . put_u8 (self . start_stop) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct NAMED_VALUE_FLOAT_DATA { pub time_boot_ms : u32 , pub value : f32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub name : [u8 ; 10] , } impl NAMED_VALUE_FLOAT_DATA { pub const ENCODED_LEN : usize = 18usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , value : 0.0_f32 , name : [0_u8 ; 10usize] , } ; } impl Default for NAMED_VALUE_FLOAT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for NAMED_VALUE_FLOAT_DATA { type Message = MavMessage ; const ID : u32 = 251u32 ; const NAME : & 'static str = "NAMED_VALUE_FLOAT" ; const EXTRA_CRC : u8 = 170u8 ; const ENCODED_LEN : usize = 18usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . value = buf . get_f32_le () ; for v in & mut __struct . name { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . value) ; for val in & self . name { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ATT_POS_MOCAP_DATA { pub time_usec : u64 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub q : [f32 ; 4] , pub x : f32 , pub y : f32 , pub z : f32 , } impl ATT_POS_MOCAP_DATA { pub const ENCODED_LEN : usize = 36usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , q : [0.0_f32 ; 4usize] , x : 0.0_f32 , y : 0.0_f32 , z : 0.0_f32 , } ; } impl Default for ATT_POS_MOCAP_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ATT_POS_MOCAP_DATA { type Message = MavMessage ; const ID : u32 = 138u32 ; const NAME : & 'static str = "ATT_POS_MOCAP" ; const EXTRA_CRC : u8 = 109u8 ; const ENCODED_LEN : usize = 36usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; for v in & mut __struct . q { let val = buf . get_f32_le () ; * v = val ; } __struct . x = buf . get_f32_le () ; __struct . y = buf . get_f32_le () ; __struct . z = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; for val in & self . q { __tmp . put_f32_le (* val) ; } __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PLAY_TUNE_DATA { pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub tune : [u8 ; 30] , } impl PLAY_TUNE_DATA { pub const ENCODED_LEN : usize = 32usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , tune : [0_u8 ; 30usize] , } ; } impl Default for PLAY_TUNE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for PLAY_TUNE_DATA { type Message = MavMessage ; const ID : u32 = 258u32 ; const NAME : & 'static str = "PLAY_TUNE" ; const EXTRA_CRC : u8 = 187u8 ; const ENCODED_LEN : usize = 32usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . tune { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . tune { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GPS_STATUS_DATA { pub satellites_visible : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub satellite_prn : [u8 ; 20] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub satellite_used : [u8 ; 20] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub satellite_elevation : [u8 ; 20] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub satellite_azimuth : [u8 ; 20] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub satellite_snr : [u8 ; 20] , } impl GPS_STATUS_DATA { pub const ENCODED_LEN : usize = 101usize ; pub const DEFAULT : Self = Self { satellites_visible : 0_u8 , satellite_prn : [0_u8 ; 20usize] , satellite_used : [0_u8 ; 20usize] , satellite_elevation : [0_u8 ; 20usize] , satellite_azimuth : [0_u8 ; 20usize] , satellite_snr : [0_u8 ; 20usize] , } ; } impl Default for GPS_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GPS_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 25u32 ; const NAME : & 'static str = "GPS_STATUS" ; const EXTRA_CRC : u8 = 23u8 ; const ENCODED_LEN : usize = 101usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . satellites_visible = buf . get_u8 () ; for v in & mut __struct . satellite_prn { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . satellite_used { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . satellite_elevation { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . satellite_azimuth { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . satellite_snr { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . satellites_visible) ; for val in & self . satellite_prn { __tmp . put_u8 (* val) ; } for val in & self . satellite_used { __tmp . put_u8 (* val) ; } for val in & self . satellite_elevation { __tmp . put_u8 (* val) ; } for val in & self . satellite_azimuth { __tmp . put_u8 (* val) ; } for val in & self . satellite_snr { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SIM_STATE_DATA { pub q1 : f32 , pub q2 : f32 , pub q3 : f32 , pub q4 : f32 , pub roll : f32 , pub pitch : f32 , pub yaw : f32 , pub xacc : f32 , pub yacc : f32 , pub zacc : f32 , pub xgyro : f32 , pub ygyro : f32 , pub zgyro : f32 , pub lat : f32 , pub lon : f32 , pub alt : f32 , pub std_dev_horz : f32 , pub std_dev_vert : f32 , pub vn : f32 , pub ve : f32 , pub vd : f32 , } impl SIM_STATE_DATA { pub const ENCODED_LEN : usize = 84usize ; pub const DEFAULT : Self = Self { q1 : 0.0_f32 , q2 : 0.0_f32 , q3 : 0.0_f32 , q4 : 0.0_f32 , roll : 0.0_f32 , pitch : 0.0_f32 , yaw : 0.0_f32 , xacc : 0.0_f32 , yacc : 0.0_f32 , zacc : 0.0_f32 , xgyro : 0.0_f32 , ygyro : 0.0_f32 , zgyro : 0.0_f32 , lat : 0.0_f32 , lon : 0.0_f32 , alt : 0.0_f32 , std_dev_horz : 0.0_f32 , std_dev_vert : 0.0_f32 , vn : 0.0_f32 , ve : 0.0_f32 , vd : 0.0_f32 , } ; } impl Default for SIM_STATE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SIM_STATE_DATA { type Message = MavMessage ; const ID : u32 = 108u32 ; const NAME : & 'static str = "SIM_STATE" ; const EXTRA_CRC : u8 = 32u8 ; const ENCODED_LEN : usize = 84usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . q1 = buf . get_f32_le () ; __struct . q2 = buf . get_f32_le () ; __struct . q3 = buf . get_f32_le () ; __struct . q4 = buf . get_f32_le () ; __struct . roll = buf . get_f32_le () ; __struct . pitch = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; __struct . xacc = buf . get_f32_le () ; __struct . yacc = buf . get_f32_le () ; __struct . zacc = buf . get_f32_le () ; __struct . xgyro = buf . get_f32_le () ; __struct . ygyro = buf . get_f32_le () ; __struct . zgyro = buf . get_f32_le () ; __struct . lat = buf . get_f32_le () ; __struct . lon = buf . get_f32_le () ; __struct . alt = buf . get_f32_le () ; __struct . std_dev_horz = buf . get_f32_le () ; __struct . std_dev_vert = buf . get_f32_le () ; __struct . vn = buf . get_f32_le () ; __struct . ve = buf . get_f32_le () ; __struct . vd = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . q1) ; __tmp . put_f32_le (self . q2) ; __tmp . put_f32_le (self . q3) ; __tmp . put_f32_le (self . q4) ; __tmp . put_f32_le (self . roll) ; __tmp . put_f32_le (self . pitch) ; __tmp . put_f32_le (self . yaw) ; __tmp . put_f32_le (self . xacc) ; __tmp . put_f32_le (self . yacc) ; __tmp . put_f32_le (self . zacc) ; __tmp . put_f32_le (self . xgyro) ; __tmp . put_f32_le (self . ygyro) ; __tmp . put_f32_le (self . zgyro) ; __tmp . put_f32_le (self . lat) ; __tmp . put_f32_le (self . lon) ; __tmp . put_f32_le (self . alt) ; __tmp . put_f32_le (self . std_dev_horz) ; __tmp . put_f32_le (self . std_dev_vert) ; __tmp . put_f32_le (self . vn) ; __tmp . put_f32_le (self . ve) ; __tmp . put_f32_le (self . vd) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct POWER_STATUS_DATA { pub Vcc : u16 , pub Vservo : u16 , pub flags : MavPowerStatus , } impl POWER_STATUS_DATA { pub const ENCODED_LEN : usize = 6usize ; pub const DEFAULT : Self = Self { Vcc : 0_u16 , Vservo : 0_u16 , flags : MavPowerStatus :: DEFAULT , } ; } impl Default for POWER_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for POWER_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 125u32 ; const NAME : & 'static str = "POWER_STATUS" ; const EXTRA_CRC : u8 = 203u8 ; const ENCODED_LEN : usize = 6usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . Vcc = buf . get_u16_le () ; __struct . Vservo = buf . get_u16_le () ; let tmp = buf . get_u16_le () ; __struct . flags = MavPowerStatus :: from_bits (tmp & MavPowerStatus :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "MavPowerStatus" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . Vcc) ; __tmp . put_u16_le (self . Vservo) ; __tmp . put_u16_le (self . flags . bits ()) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SCALED_PRESSURE3_DATA { pub time_boot_ms : u32 , pub press_abs : f32 , pub press_diff : f32 , pub temperature : i16 , } impl SCALED_PRESSURE3_DATA { pub const ENCODED_LEN : usize = 14usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , press_abs : 0.0_f32 , press_diff : 0.0_f32 , temperature : 0_i16 , } ; } impl Default for SCALED_PRESSURE3_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SCALED_PRESSURE3_DATA { type Message = MavMessage ; const ID : u32 = 143u32 ; const NAME : & 'static str = "SCALED_PRESSURE3" ; const EXTRA_CRC : u8 = 131u8 ; const ENCODED_LEN : usize = 14usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . press_abs = buf . get_f32_le () ; __struct . press_diff = buf . get_f32_le () ; __struct . temperature = buf . get_i16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . press_abs) ; __tmp . put_f32_le (self . press_diff) ; __tmp . put_i16_le (self . temperature) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct FOLLOW_TARGET_DATA { pub timestamp : u64 , pub custom_state : u64 , pub lat : i32 , pub lon : i32 , pub alt : f32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub vel : [f32 ; 3] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub acc : [f32 ; 3] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub attitude_q : [f32 ; 4] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub rates : [f32 ; 3] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub position_cov : [f32 ; 3] , pub est_capabilities : u8 , } impl FOLLOW_TARGET_DATA { pub const ENCODED_LEN : usize = 93usize ; pub const DEFAULT : Self = Self { timestamp : 0_u64 , custom_state : 0_u64 , lat : 0_i32 , lon : 0_i32 , alt : 0.0_f32 , vel : [0.0_f32 ; 3usize] , acc : [0.0_f32 ; 3usize] , attitude_q : [0.0_f32 ; 4usize] , rates : [0.0_f32 ; 3usize] , position_cov : [0.0_f32 ; 3usize] , est_capabilities : 0_u8 , } ; } impl Default for FOLLOW_TARGET_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for FOLLOW_TARGET_DATA { type Message = MavMessage ; const ID : u32 = 144u32 ; const NAME : & 'static str = "FOLLOW_TARGET" ; const EXTRA_CRC : u8 = 127u8 ; const ENCODED_LEN : usize = 93usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . timestamp = buf . get_u64_le () ; __struct . custom_state = buf . get_u64_le () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . alt = buf . get_f32_le () ; for v in & mut __struct . vel { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . acc { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . attitude_q { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . rates { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . position_cov { let val = buf . get_f32_le () ; * v = val ; } __struct . est_capabilities = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . timestamp) ; __tmp . put_u64_le (self . custom_state) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_f32_le (self . alt) ; for val in & self . vel { __tmp . put_f32_le (* val) ; } for val in & self . acc { __tmp . put_f32_le (* val) ; } for val in & self . attitude_q { __tmp . put_f32_le (* val) ; } for val in & self . rates { __tmp . put_f32_le (* val) ; } for val in & self . position_cov { __tmp . put_f32_le (* val) ; } __tmp . put_u8 (self . est_capabilities) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MAG_CAL_REPORT_DATA { pub fitness : f32 , pub ofs_x : f32 , pub ofs_y : f32 , pub ofs_z : f32 , pub diag_x : f32 , pub diag_y : f32 , pub diag_z : f32 , pub offdiag_x : f32 , pub offdiag_y : f32 , pub offdiag_z : f32 , pub compass_id : u8 , pub cal_mask : u8 , pub cal_status : MagCalStatus , pub autosaved : u8 , } impl MAG_CAL_REPORT_DATA { pub const ENCODED_LEN : usize = 44usize ; pub const DEFAULT : Self = Self { fitness : 0.0_f32 , ofs_x : 0.0_f32 , ofs_y : 0.0_f32 , ofs_z : 0.0_f32 , diag_x : 0.0_f32 , diag_y : 0.0_f32 , diag_z : 0.0_f32 , offdiag_x : 0.0_f32 , offdiag_y : 0.0_f32 , offdiag_z : 0.0_f32 , compass_id : 0_u8 , cal_mask : 0_u8 , cal_status : MagCalStatus :: DEFAULT , autosaved : 0_u8 , } ; } impl Default for MAG_CAL_REPORT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MAG_CAL_REPORT_DATA { type Message = MavMessage ; const ID : u32 = 192u32 ; const NAME : & 'static str = "MAG_CAL_REPORT" ; const EXTRA_CRC : u8 = 36u8 ; const ENCODED_LEN : usize = 44usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . fitness = buf . get_f32_le () ; __struct . ofs_x = buf . get_f32_le () ; __struct . ofs_y = buf . get_f32_le () ; __struct . ofs_z = buf . get_f32_le () ; __struct . diag_x = buf . get_f32_le () ; __struct . diag_y = buf . get_f32_le () ; __struct . diag_z = buf . get_f32_le () ; __struct . offdiag_x = buf . get_f32_le () ; __struct . offdiag_y = buf . get_f32_le () ; __struct . offdiag_z = buf . get_f32_le () ; __struct . compass_id = buf . get_u8 () ; __struct . cal_mask = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . cal_status = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MagCalStatus" , value : tmp as u32 }) ? ; __struct . autosaved = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . fitness) ; __tmp . put_f32_le (self . ofs_x) ; __tmp . put_f32_le (self . ofs_y) ; __tmp . put_f32_le (self . ofs_z) ; __tmp . put_f32_le (self . diag_x) ; __tmp . put_f32_le (self . diag_y) ; __tmp . put_f32_le (self . diag_z) ; __tmp . put_f32_le (self . offdiag_x) ; __tmp . put_f32_le (self . offdiag_y) ; __tmp . put_f32_le (self . offdiag_z) ; __tmp . put_u8 (self . compass_id) ; __tmp . put_u8 (self . cal_mask) ; __tmp . put_u8 (self . cal_status as u8) ; __tmp . put_u8 (self . autosaved) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct OPTICAL_FLOW_DATA { pub time_usec : u64 , pub flow_comp_m_x : f32 , pub flow_comp_m_y : f32 , pub ground_distance : f32 , pub flow_x : i16 , pub flow_y : i16 , pub sensor_id : u8 , pub quality : u8 , } impl OPTICAL_FLOW_DATA { pub const ENCODED_LEN : usize = 26usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , flow_comp_m_x : 0.0_f32 , flow_comp_m_y : 0.0_f32 , ground_distance : 0.0_f32 , flow_x : 0_i16 , flow_y : 0_i16 , sensor_id : 0_u8 , quality : 0_u8 , } ; } impl Default for OPTICAL_FLOW_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for OPTICAL_FLOW_DATA { type Message = MavMessage ; const ID : u32 = 100u32 ; const NAME : & 'static str = "OPTICAL_FLOW" ; const EXTRA_CRC : u8 = 175u8 ; const ENCODED_LEN : usize = 26usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . flow_comp_m_x = buf . get_f32_le () ; __struct . flow_comp_m_y = buf . get_f32_le () ; __struct . ground_distance = buf . get_f32_le () ; __struct . flow_x = buf . get_i16_le () ; __struct . flow_y = buf . get_i16_le () ; __struct . sensor_id = buf . get_u8 () ; __struct . quality = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . flow_comp_m_x) ; __tmp . put_f32_le (self . flow_comp_m_y) ; __tmp . put_f32_le (self . ground_distance) ; __tmp . put_i16_le (self . flow_x) ; __tmp . put_i16_le (self . flow_y) ; __tmp . put_u8 (self . sensor_id) ; __tmp . put_u8 (self . quality) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PROTOCOL_VERSION_DATA { pub version : u16 , pub min_version : u16 , pub max_version : u16 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub spec_version_hash : [u8 ; 8] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub library_version_hash : [u8 ; 8] , } impl PROTOCOL_VERSION_DATA { pub const ENCODED_LEN : usize = 22usize ; pub const DEFAULT : Self = Self { version : 0_u16 , min_version : 0_u16 , max_version : 0_u16 , spec_version_hash : [0_u8 ; 8usize] , library_version_hash : [0_u8 ; 8usize] , } ; } impl Default for PROTOCOL_VERSION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for PROTOCOL_VERSION_DATA { type Message = MavMessage ; const ID : u32 = 300u32 ; const NAME : & 'static str = "PROTOCOL_VERSION" ; const EXTRA_CRC : u8 = 217u8 ; const ENCODED_LEN : usize = 22usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . version = buf . get_u16_le () ; __struct . min_version = buf . get_u16_le () ; __struct . max_version = buf . get_u16_le () ; for v in & mut __struct . spec_version_hash { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . library_version_hash { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . version) ; __tmp . put_u16_le (self . min_version) ; __tmp . put_u16_le (self . max_version) ; for val in & self . spec_version_hash { __tmp . put_u8 (* val) ; } for val in & self . library_version_hash { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SERIAL_CONTROL_DATA { pub baudrate : u32 , pub timeout : u16 , pub device : SerialControlDev , pub flags : SerialControlFlag , pub count : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub data : [u8 ; 70] , } impl SERIAL_CONTROL_DATA { pub const ENCODED_LEN : usize = 79usize ; pub const DEFAULT : Self = Self { baudrate : 0_u32 , timeout : 0_u16 , device : SerialControlDev :: DEFAULT , flags : SerialControlFlag :: DEFAULT , count : 0_u8 , data : [0_u8 ; 70usize] , } ; } impl Default for SERIAL_CONTROL_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SERIAL_CONTROL_DATA { type Message = MavMessage ; const ID : u32 = 126u32 ; const NAME : & 'static str = "SERIAL_CONTROL" ; const EXTRA_CRC : u8 = 220u8 ; const ENCODED_LEN : usize = 79usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . baudrate = buf . get_u32_le () ; __struct . timeout = buf . get_u16_le () ; let tmp = buf . get_u8 () ; __struct . device = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "SerialControlDev" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . flags = SerialControlFlag :: from_bits (tmp & SerialControlFlag :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "SerialControlFlag" , value : tmp as u32 }) ? ; __struct . count = buf . get_u8 () ; for v in & mut __struct . data { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . baudrate) ; __tmp . put_u16_le (self . timeout) ; __tmp . put_u8 (self . device as u8) ; __tmp . put_u8 (self . flags . bits ()) ; __tmp . put_u8 (self . count) ; for val in & self . data { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct VIDEO_STREAM_STATUS_DATA { pub framerate : f32 , pub bitrate : u32 , pub flags : VideoStreamStatusFlags , pub resolution_h : u16 , pub resolution_v : u16 , pub rotation : u16 , pub hfov : u16 , pub stream_id : u8 , } impl VIDEO_STREAM_STATUS_DATA { pub const ENCODED_LEN : usize = 19usize ; pub const DEFAULT : Self = Self { framerate : 0.0_f32 , bitrate : 0_u32 , flags : VideoStreamStatusFlags :: DEFAULT , resolution_h : 0_u16 , resolution_v : 0_u16 , rotation : 0_u16 , hfov : 0_u16 , stream_id : 0_u8 , } ; } impl Default for VIDEO_STREAM_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for VIDEO_STREAM_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 270u32 ; const NAME : & 'static str = "VIDEO_STREAM_STATUS" ; const EXTRA_CRC : u8 = 59u8 ; const ENCODED_LEN : usize = 19usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . framerate = buf . get_f32_le () ; __struct . bitrate = buf . get_u32_le () ; let tmp = buf . get_u16_le () ; __struct . flags = FromPrimitive :: from_u16 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "VideoStreamStatusFlags" , value : tmp as u32 }) ? ; __struct . resolution_h = buf . get_u16_le () ; __struct . resolution_v = buf . get_u16_le () ; __struct . rotation = buf . get_u16_le () ; __struct . hfov = buf . get_u16_le () ; __struct . stream_id = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . framerate) ; __tmp . put_u32_le (self . bitrate) ; __tmp . put_u16_le (self . flags as u16) ; __tmp . put_u16_le (self . resolution_h) ; __tmp . put_u16_le (self . resolution_v) ; __tmp . put_u16_le (self . rotation) ; __tmp . put_u16_le (self . hfov) ; __tmp . put_u8 (self . stream_id) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ODOMETRY_DATA { pub time_usec : u64 , pub x : f32 , pub y : f32 , pub z : f32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub q : [f32 ; 4] , pub vx : f32 , pub vy : f32 , pub vz : f32 , pub rollspeed : f32 , pub pitchspeed : f32 , pub yawspeed : f32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub pose_covariance : [f32 ; 21] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub velocity_covariance : [f32 ; 21] , pub frame_id : MavFrame , pub child_frame_id : MavFrame , } impl ODOMETRY_DATA { pub const ENCODED_LEN : usize = 230usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , x : 0.0_f32 , y : 0.0_f32 , z : 0.0_f32 , q : [0.0_f32 ; 4usize] , vx : 0.0_f32 , vy : 0.0_f32 , vz : 0.0_f32 , rollspeed : 0.0_f32 , pitchspeed : 0.0_f32 , yawspeed : 0.0_f32 , pose_covariance : [0.0_f32 ; 21usize] , velocity_covariance : [0.0_f32 ; 21usize] , frame_id : MavFrame :: DEFAULT , child_frame_id : MavFrame :: DEFAULT , } ; } impl Default for ODOMETRY_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ODOMETRY_DATA { type Message = MavMessage ; const ID : u32 = 331u32 ; const NAME : & 'static str = "ODOMETRY" ; const EXTRA_CRC : u8 = 91u8 ; const ENCODED_LEN : usize = 230usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . x = buf . get_f32_le () ; __struct . y = buf . get_f32_le () ; __struct . z = buf . get_f32_le () ; for v in & mut __struct . q { let val = buf . get_f32_le () ; * v = val ; } __struct . vx = buf . get_f32_le () ; __struct . vy = buf . get_f32_le () ; __struct . vz = buf . get_f32_le () ; __struct . rollspeed = buf . get_f32_le () ; __struct . pitchspeed = buf . get_f32_le () ; __struct . yawspeed = buf . get_f32_le () ; for v in & mut __struct . pose_covariance { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . velocity_covariance { let val = buf . get_f32_le () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . frame_id = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavFrame" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . child_frame_id = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavFrame" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; for val in & self . q { __tmp . put_f32_le (* val) ; } __tmp . put_f32_le (self . vx) ; __tmp . put_f32_le (self . vy) ; __tmp . put_f32_le (self . vz) ; __tmp . put_f32_le (self . rollspeed) ; __tmp . put_f32_le (self . pitchspeed) ; __tmp . put_f32_le (self . yawspeed) ; for val in & self . pose_covariance { __tmp . put_f32_le (* val) ; } for val in & self . velocity_covariance { __tmp . put_f32_le (* val) ; } __tmp . put_u8 (self . frame_id as u8) ; __tmp . put_u8 (self . child_frame_id as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CELLULAR_STATUS_DATA { pub mcc : u16 , pub mnc : u16 , pub lac : u16 , pub status : CellularStatusFlag , pub failure_reason : CellularNetworkFailedReason , pub mavtype : CellularNetworkRadioType , pub quality : u8 , } impl CELLULAR_STATUS_DATA { pub const ENCODED_LEN : usize = 10usize ; pub const DEFAULT : Self = Self { mcc : 0_u16 , mnc : 0_u16 , lac : 0_u16 , status : CellularStatusFlag :: DEFAULT , failure_reason : CellularNetworkFailedReason :: DEFAULT , mavtype : CellularNetworkRadioType :: DEFAULT , quality : 0_u8 , } ; } impl Default for CELLULAR_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CELLULAR_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 334u32 ; const NAME : & 'static str = "CELLULAR_STATUS" ; const EXTRA_CRC : u8 = 72u8 ; const ENCODED_LEN : usize = 10usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . mcc = buf . get_u16_le () ; __struct . mnc = buf . get_u16_le () ; __struct . lac = buf . get_u16_le () ; let tmp = buf . get_u8 () ; __struct . status = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "CellularStatusFlag" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . failure_reason = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "CellularNetworkFailedReason" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . mavtype = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "CellularNetworkRadioType" , value : tmp as u32 }) ? ; __struct . quality = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . mcc) ; __tmp . put_u16_le (self . mnc) ; __tmp . put_u16_le (self . lac) ; __tmp . put_u8 (self . status as u8) ; __tmp . put_u8 (self . failure_reason as u8) ; __tmp . put_u8 (self . mavtype as u8) ; __tmp . put_u8 (self . quality) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct OPEN_DRONE_ID_SYSTEM_UPDATE_DATA { pub operator_latitude : i32 , pub operator_longitude : i32 , pub operator_altitude_geo : f32 , pub timestamp : u32 , pub target_system : u8 , pub target_component : u8 , } impl OPEN_DRONE_ID_SYSTEM_UPDATE_DATA { pub const ENCODED_LEN : usize = 18usize ; pub const DEFAULT : Self = Self { operator_latitude : 0_i32 , operator_longitude : 0_i32 , operator_altitude_geo : 0.0_f32 , timestamp : 0_u32 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for OPEN_DRONE_ID_SYSTEM_UPDATE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for OPEN_DRONE_ID_SYSTEM_UPDATE_DATA { type Message = MavMessage ; const ID : u32 = 12919u32 ; const NAME : & 'static str = "OPEN_DRONE_ID_SYSTEM_UPDATE" ; const EXTRA_CRC : u8 = 7u8 ; const ENCODED_LEN : usize = 18usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . operator_latitude = buf . get_i32_le () ; __struct . operator_longitude = buf . get_i32_le () ; __struct . operator_altitude_geo = buf . get_f32_le () ; __struct . timestamp = buf . get_u32_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . operator_latitude) ; __tmp . put_i32_le (self . operator_longitude) ; __tmp . put_f32_le (self . operator_altitude_geo) ; __tmp . put_u32_le (self . timestamp) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PARAM_REQUEST_LIST_DATA { pub target_system : u8 , pub target_component : u8 , } impl PARAM_REQUEST_LIST_DATA { pub const ENCODED_LEN : usize = 2usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for PARAM_REQUEST_LIST_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for PARAM_REQUEST_LIST_DATA { type Message = MavMessage ; const ID : u32 = 21u32 ; const NAME : & 'static str = "PARAM_REQUEST_LIST" ; const EXTRA_CRC : u8 = 159u8 ; const ENCODED_LEN : usize = 2usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GIMBAL_MANAGER_SET_PITCHYAW_DATA { pub flags : GimbalManagerFlags , pub pitch : f32 , pub yaw : f32 , pub pitch_rate : f32 , pub yaw_rate : f32 , pub target_system : u8 , pub target_component : u8 , pub gimbal_device_id : u8 , } impl GIMBAL_MANAGER_SET_PITCHYAW_DATA { pub const ENCODED_LEN : usize = 23usize ; pub const DEFAULT : Self = Self { flags : GimbalManagerFlags :: DEFAULT , pitch : 0.0_f32 , yaw : 0.0_f32 , pitch_rate : 0.0_f32 , yaw_rate : 0.0_f32 , target_system : 0_u8 , target_component : 0_u8 , gimbal_device_id : 0_u8 , } ; } impl Default for GIMBAL_MANAGER_SET_PITCHYAW_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GIMBAL_MANAGER_SET_PITCHYAW_DATA { type Message = MavMessage ; const ID : u32 = 287u32 ; const NAME : & 'static str = "GIMBAL_MANAGER_SET_PITCHYAW" ; const EXTRA_CRC : u8 = 1u8 ; const ENCODED_LEN : usize = 23usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u32_le () ; __struct . flags = FromPrimitive :: from_u32 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "GimbalManagerFlags" , value : tmp as u32 }) ? ; __struct . pitch = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; __struct . pitch_rate = buf . get_f32_le () ; __struct . yaw_rate = buf . get_f32_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . gimbal_device_id = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . flags as u32) ; __tmp . put_f32_le (self . pitch) ; __tmp . put_f32_le (self . yaw) ; __tmp . put_f32_le (self . pitch_rate) ; __tmp . put_f32_le (self . yaw_rate) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . gimbal_device_id) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SERVO_OUTPUT_RAW_DATA { pub time_usec : u32 , pub servo1_raw : u16 , pub servo2_raw : u16 , pub servo3_raw : u16 , pub servo4_raw : u16 , pub servo5_raw : u16 , pub servo6_raw : u16 , pub servo7_raw : u16 , pub servo8_raw : u16 , pub port : u8 , } impl SERVO_OUTPUT_RAW_DATA { pub const ENCODED_LEN : usize = 21usize ; pub const DEFAULT : Self = Self { time_usec : 0_u32 , servo1_raw : 0_u16 , servo2_raw : 0_u16 , servo3_raw : 0_u16 , servo4_raw : 0_u16 , servo5_raw : 0_u16 , servo6_raw : 0_u16 , servo7_raw : 0_u16 , servo8_raw : 0_u16 , port : 0_u8 , } ; } impl Default for SERVO_OUTPUT_RAW_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SERVO_OUTPUT_RAW_DATA { type Message = MavMessage ; const ID : u32 = 36u32 ; const NAME : & 'static str = "SERVO_OUTPUT_RAW" ; const EXTRA_CRC : u8 = 222u8 ; const ENCODED_LEN : usize = 21usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u32_le () ; __struct . servo1_raw = buf . get_u16_le () ; __struct . servo2_raw = buf . get_u16_le () ; __struct . servo3_raw = buf . get_u16_le () ; __struct . servo4_raw = buf . get_u16_le () ; __struct . servo5_raw = buf . get_u16_le () ; __struct . servo6_raw = buf . get_u16_le () ; __struct . servo7_raw = buf . get_u16_le () ; __struct . servo8_raw = buf . get_u16_le () ; __struct . port = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_usec) ; __tmp . put_u16_le (self . servo1_raw) ; __tmp . put_u16_le (self . servo2_raw) ; __tmp . put_u16_le (self . servo3_raw) ; __tmp . put_u16_le (self . servo4_raw) ; __tmp . put_u16_le (self . servo5_raw) ; __tmp . put_u16_le (self . servo6_raw) ; __tmp . put_u16_le (self . servo7_raw) ; __tmp . put_u16_le (self . servo8_raw) ; __tmp . put_u8 (self . port) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct TIMESYNC_DATA { pub tc1 : i64 , pub ts1 : i64 , } impl TIMESYNC_DATA { pub const ENCODED_LEN : usize = 16usize ; pub const DEFAULT : Self = Self { tc1 : 0_i64 , ts1 : 0_i64 , } ; } impl Default for TIMESYNC_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for TIMESYNC_DATA { type Message = MavMessage ; const ID : u32 = 111u32 ; const NAME : & 'static str = "TIMESYNC" ; const EXTRA_CRC : u8 = 34u8 ; const ENCODED_LEN : usize = 16usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . tc1 = buf . get_i64_le () ; __struct . ts1 = buf . get_i64_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i64_le (self . tc1) ; __tmp . put_i64_le (self . ts1) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct RC_CHANNELS_DATA { pub time_boot_ms : u32 , pub chan1_raw : u16 , pub chan2_raw : u16 , pub chan3_raw : u16 , pub chan4_raw : u16 , pub chan5_raw : u16 , pub chan6_raw : u16 , pub chan7_raw : u16 , pub chan8_raw : u16 , pub chan9_raw : u16 , pub chan10_raw : u16 , pub chan11_raw : u16 , pub chan12_raw : u16 , pub chan13_raw : u16 , pub chan14_raw : u16 , pub chan15_raw : u16 , pub chan16_raw : u16 , pub chan17_raw : u16 , pub chan18_raw : u16 , pub chancount : u8 , pub rssi : u8 , } impl RC_CHANNELS_DATA { pub const ENCODED_LEN : usize = 42usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , chan1_raw : 0_u16 , chan2_raw : 0_u16 , chan3_raw : 0_u16 , chan4_raw : 0_u16 , chan5_raw : 0_u16 , chan6_raw : 0_u16 , chan7_raw : 0_u16 , chan8_raw : 0_u16 , chan9_raw : 0_u16 , chan10_raw : 0_u16 , chan11_raw : 0_u16 , chan12_raw : 0_u16 , chan13_raw : 0_u16 , chan14_raw : 0_u16 , chan15_raw : 0_u16 , chan16_raw : 0_u16 , chan17_raw : 0_u16 , chan18_raw : 0_u16 , chancount : 0_u8 , rssi : 0_u8 , } ; } impl Default for RC_CHANNELS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for RC_CHANNELS_DATA { type Message = MavMessage ; const ID : u32 = 65u32 ; const NAME : & 'static str = "RC_CHANNELS" ; const EXTRA_CRC : u8 = 118u8 ; const ENCODED_LEN : usize = 42usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . chan1_raw = buf . get_u16_le () ; __struct . chan2_raw = buf . get_u16_le () ; __struct . chan3_raw = buf . get_u16_le () ; __struct . chan4_raw = buf . get_u16_le () ; __struct . chan5_raw = buf . get_u16_le () ; __struct . chan6_raw = buf . get_u16_le () ; __struct . chan7_raw = buf . get_u16_le () ; __struct . chan8_raw = buf . get_u16_le () ; __struct . chan9_raw = buf . get_u16_le () ; __struct . chan10_raw = buf . get_u16_le () ; __struct . chan11_raw = buf . get_u16_le () ; __struct . chan12_raw = buf . get_u16_le () ; __struct . chan13_raw = buf . get_u16_le () ; __struct . chan14_raw = buf . get_u16_le () ; __struct . chan15_raw = buf . get_u16_le () ; __struct . chan16_raw = buf . get_u16_le () ; __struct . chan17_raw = buf . get_u16_le () ; __struct . chan18_raw = buf . get_u16_le () ; __struct . chancount = buf . get_u8 () ; __struct . rssi = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_u16_le (self . chan1_raw) ; __tmp . put_u16_le (self . chan2_raw) ; __tmp . put_u16_le (self . chan3_raw) ; __tmp . put_u16_le (self . chan4_raw) ; __tmp . put_u16_le (self . chan5_raw) ; __tmp . put_u16_le (self . chan6_raw) ; __tmp . put_u16_le (self . chan7_raw) ; __tmp . put_u16_le (self . chan8_raw) ; __tmp . put_u16_le (self . chan9_raw) ; __tmp . put_u16_le (self . chan10_raw) ; __tmp . put_u16_le (self . chan11_raw) ; __tmp . put_u16_le (self . chan12_raw) ; __tmp . put_u16_le (self . chan13_raw) ; __tmp . put_u16_le (self . chan14_raw) ; __tmp . put_u16_le (self . chan15_raw) ; __tmp . put_u16_le (self . chan16_raw) ; __tmp . put_u16_le (self . chan17_raw) ; __tmp . put_u16_le (self . chan18_raw) ; __tmp . put_u8 (self . chancount) ; __tmp . put_u8 (self . rssi) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GLOBAL_POSITION_INT_DATA { pub time_boot_ms : u32 , pub lat : i32 , pub lon : i32 , pub alt : i32 , pub relative_alt : i32 , pub vx : i16 , pub vy : i16 , pub vz : i16 , pub hdg : u16 , } impl GLOBAL_POSITION_INT_DATA { pub const ENCODED_LEN : usize = 28usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , lat : 0_i32 , lon : 0_i32 , alt : 0_i32 , relative_alt : 0_i32 , vx : 0_i16 , vy : 0_i16 , vz : 0_i16 , hdg : 0_u16 , } ; } impl Default for GLOBAL_POSITION_INT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GLOBAL_POSITION_INT_DATA { type Message = MavMessage ; const ID : u32 = 33u32 ; const NAME : & 'static str = "GLOBAL_POSITION_INT" ; const EXTRA_CRC : u8 = 104u8 ; const ENCODED_LEN : usize = 28usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . alt = buf . get_i32_le () ; __struct . relative_alt = buf . get_i32_le () ; __struct . vx = buf . get_i16_le () ; __struct . vy = buf . get_i16_le () ; __struct . vz = buf . get_i16_le () ; __struct . hdg = buf . get_u16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_i32_le (self . alt) ; __tmp . put_i32_le (self . relative_alt) ; __tmp . put_i16_le (self . vx) ; __tmp . put_i16_le (self . vy) ; __tmp . put_i16_le (self . vz) ; __tmp . put_u16_le (self . hdg) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ATTITUDE_QUATERNION_COV_DATA { pub time_usec : u64 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub q : [f32 ; 4] , pub rollspeed : f32 , pub pitchspeed : f32 , pub yawspeed : f32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub covariance : [f32 ; 9] , } impl ATTITUDE_QUATERNION_COV_DATA { pub const ENCODED_LEN : usize = 72usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , q : [0.0_f32 ; 4usize] , rollspeed : 0.0_f32 , pitchspeed : 0.0_f32 , yawspeed : 0.0_f32 , covariance : [0.0_f32 ; 9usize] , } ; } impl Default for ATTITUDE_QUATERNION_COV_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ATTITUDE_QUATERNION_COV_DATA { type Message = MavMessage ; const ID : u32 = 61u32 ; const NAME : & 'static str = "ATTITUDE_QUATERNION_COV" ; const EXTRA_CRC : u8 = 167u8 ; const ENCODED_LEN : usize = 72usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; for v in & mut __struct . q { let val = buf . get_f32_le () ; * v = val ; } __struct . rollspeed = buf . get_f32_le () ; __struct . pitchspeed = buf . get_f32_le () ; __struct . yawspeed = buf . get_f32_le () ; for v in & mut __struct . covariance { let val = buf . get_f32_le () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; for val in & self . q { __tmp . put_f32_le (* val) ; } __tmp . put_f32_le (self . rollspeed) ; __tmp . put_f32_le (self . pitchspeed) ; __tmp . put_f32_le (self . yawspeed) ; for val in & self . covariance { __tmp . put_f32_le (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct RADIO_STATUS_DATA { pub rxerrors : u16 , pub fixed : u16 , pub rssi : u8 , pub remrssi : u8 , pub txbuf : u8 , pub noise : u8 , pub remnoise : u8 , } impl RADIO_STATUS_DATA { pub const ENCODED_LEN : usize = 9usize ; pub const DEFAULT : Self = Self { rxerrors : 0_u16 , fixed : 0_u16 , rssi : 0_u8 , remrssi : 0_u8 , txbuf : 0_u8 , noise : 0_u8 , remnoise : 0_u8 , } ; } impl Default for RADIO_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for RADIO_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 109u32 ; const NAME : & 'static str = "RADIO_STATUS" ; const EXTRA_CRC : u8 = 185u8 ; const ENCODED_LEN : usize = 9usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . rxerrors = buf . get_u16_le () ; __struct . fixed = buf . get_u16_le () ; __struct . rssi = buf . get_u8 () ; __struct . remrssi = buf . get_u8 () ; __struct . txbuf = buf . get_u8 () ; __struct . noise = buf . get_u8 () ; __struct . remnoise = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . rxerrors) ; __tmp . put_u16_le (self . fixed) ; __tmp . put_u8 (self . rssi) ; __tmp . put_u8 (self . remrssi) ; __tmp . put_u8 (self . txbuf) ; __tmp . put_u8 (self . noise) ; __tmp . put_u8 (self . remnoise) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ADSB_VEHICLE_DATA { pub ICAO_address : u32 , pub lat : i32 , pub lon : i32 , pub altitude : i32 , pub heading : u16 , pub hor_velocity : u16 , pub ver_velocity : i16 , pub flags : AdsbFlags , pub squawk : u16 , pub altitude_type : AdsbAltitudeType , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub callsign : [u8 ; 9] , pub emitter_type : AdsbEmitterType , pub tslc : u8 , } impl ADSB_VEHICLE_DATA { pub const ENCODED_LEN : usize = 38usize ; pub const DEFAULT : Self = Self { ICAO_address : 0_u32 , lat : 0_i32 , lon : 0_i32 , altitude : 0_i32 , heading : 0_u16 , hor_velocity : 0_u16 , ver_velocity : 0_i16 , flags : AdsbFlags :: DEFAULT , squawk : 0_u16 , altitude_type : AdsbAltitudeType :: DEFAULT , callsign : [0_u8 ; 9usize] , emitter_type : AdsbEmitterType :: DEFAULT , tslc : 0_u8 , } ; } impl Default for ADSB_VEHICLE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ADSB_VEHICLE_DATA { type Message = MavMessage ; const ID : u32 = 246u32 ; const NAME : & 'static str = "ADSB_VEHICLE" ; const EXTRA_CRC : u8 = 184u8 ; const ENCODED_LEN : usize = 38usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . ICAO_address = buf . get_u32_le () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . altitude = buf . get_i32_le () ; __struct . heading = buf . get_u16_le () ; __struct . hor_velocity = buf . get_u16_le () ; __struct . ver_velocity = buf . get_i16_le () ; let tmp = buf . get_u16_le () ; __struct . flags = AdsbFlags :: from_bits (tmp & AdsbFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "AdsbFlags" , value : tmp as u32 }) ? ; __struct . squawk = buf . get_u16_le () ; let tmp = buf . get_u8 () ; __struct . altitude_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "AdsbAltitudeType" , value : tmp as u32 }) ? ; for v in & mut __struct . callsign { let val = buf . get_u8 () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . emitter_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "AdsbEmitterType" , value : tmp as u32 }) ? ; __struct . tslc = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . ICAO_address) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_i32_le (self . altitude) ; __tmp . put_u16_le (self . heading) ; __tmp . put_u16_le (self . hor_velocity) ; __tmp . put_i16_le (self . ver_velocity) ; __tmp . put_u16_le (self . flags . bits ()) ; __tmp . put_u16_le (self . squawk) ; __tmp . put_u8 (self . altitude_type as u8) ; for val in & self . callsign { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . emitter_type as u8) ; __tmp . put_u8 (self . tslc) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CONTROL_SYSTEM_STATE_DATA { pub time_usec : u64 , pub x_acc : f32 , pub y_acc : f32 , pub z_acc : f32 , pub x_vel : f32 , pub y_vel : f32 , pub z_vel : f32 , pub x_pos : f32 , pub y_pos : f32 , pub z_pos : f32 , pub airspeed : f32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub vel_variance : [f32 ; 3] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub pos_variance : [f32 ; 3] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub q : [f32 ; 4] , pub roll_rate : f32 , pub pitch_rate : f32 , pub yaw_rate : f32 , } impl CONTROL_SYSTEM_STATE_DATA { pub const ENCODED_LEN : usize = 100usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , x_acc : 0.0_f32 , y_acc : 0.0_f32 , z_acc : 0.0_f32 , x_vel : 0.0_f32 , y_vel : 0.0_f32 , z_vel : 0.0_f32 , x_pos : 0.0_f32 , y_pos : 0.0_f32 , z_pos : 0.0_f32 , airspeed : 0.0_f32 , vel_variance : [0.0_f32 ; 3usize] , pos_variance : [0.0_f32 ; 3usize] , q : [0.0_f32 ; 4usize] , roll_rate : 0.0_f32 , pitch_rate : 0.0_f32 , yaw_rate : 0.0_f32 , } ; } impl Default for CONTROL_SYSTEM_STATE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CONTROL_SYSTEM_STATE_DATA { type Message = MavMessage ; const ID : u32 = 146u32 ; const NAME : & 'static str = "CONTROL_SYSTEM_STATE" ; const EXTRA_CRC : u8 = 103u8 ; const ENCODED_LEN : usize = 100usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . x_acc = buf . get_f32_le () ; __struct . y_acc = buf . get_f32_le () ; __struct . z_acc = buf . get_f32_le () ; __struct . x_vel = buf . get_f32_le () ; __struct . y_vel = buf . get_f32_le () ; __struct . z_vel = buf . get_f32_le () ; __struct . x_pos = buf . get_f32_le () ; __struct . y_pos = buf . get_f32_le () ; __struct . z_pos = buf . get_f32_le () ; __struct . airspeed = buf . get_f32_le () ; for v in & mut __struct . vel_variance { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . pos_variance { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . q { let val = buf . get_f32_le () ; * v = val ; } __struct . roll_rate = buf . get_f32_le () ; __struct . pitch_rate = buf . get_f32_le () ; __struct . yaw_rate = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . x_acc) ; __tmp . put_f32_le (self . y_acc) ; __tmp . put_f32_le (self . z_acc) ; __tmp . put_f32_le (self . x_vel) ; __tmp . put_f32_le (self . y_vel) ; __tmp . put_f32_le (self . z_vel) ; __tmp . put_f32_le (self . x_pos) ; __tmp . put_f32_le (self . y_pos) ; __tmp . put_f32_le (self . z_pos) ; __tmp . put_f32_le (self . airspeed) ; for val in & self . vel_variance { __tmp . put_f32_le (* val) ; } for val in & self . pos_variance { __tmp . put_f32_le (* val) ; } for val in & self . q { __tmp . put_f32_le (* val) ; } __tmp . put_f32_le (self . roll_rate) ; __tmp . put_f32_le (self . pitch_rate) ; __tmp . put_f32_le (self . yaw_rate) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SCALED_IMU_DATA { pub time_boot_ms : u32 , pub xacc : i16 , pub yacc : i16 , pub zacc : i16 , pub xgyro : i16 , pub ygyro : i16 , pub zgyro : i16 , pub xmag : i16 , pub ymag : i16 , pub zmag : i16 , } impl SCALED_IMU_DATA { pub const ENCODED_LEN : usize = 22usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , xacc : 0_i16 , yacc : 0_i16 , zacc : 0_i16 , xgyro : 0_i16 , ygyro : 0_i16 , zgyro : 0_i16 , xmag : 0_i16 , ymag : 0_i16 , zmag : 0_i16 , } ; } impl Default for SCALED_IMU_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SCALED_IMU_DATA { type Message = MavMessage ; const ID : u32 = 26u32 ; const NAME : & 'static str = "SCALED_IMU" ; const EXTRA_CRC : u8 = 170u8 ; const ENCODED_LEN : usize = 22usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . xacc = buf . get_i16_le () ; __struct . yacc = buf . get_i16_le () ; __struct . zacc = buf . get_i16_le () ; __struct . xgyro = buf . get_i16_le () ; __struct . ygyro = buf . get_i16_le () ; __struct . zgyro = buf . get_i16_le () ; __struct . xmag = buf . get_i16_le () ; __struct . ymag = buf . get_i16_le () ; __struct . zmag = buf . get_i16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_i16_le (self . xacc) ; __tmp . put_i16_le (self . yacc) ; __tmp . put_i16_le (self . zacc) ; __tmp . put_i16_le (self . xgyro) ; __tmp . put_i16_le (self . ygyro) ; __tmp . put_i16_le (self . zgyro) ; __tmp . put_i16_le (self . xmag) ; __tmp . put_i16_le (self . ymag) ; __tmp . put_i16_le (self . zmag) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MISSION_CLEAR_ALL_DATA { pub target_system : u8 , pub target_component : u8 , } impl MISSION_CLEAR_ALL_DATA { pub const ENCODED_LEN : usize = 2usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for MISSION_CLEAR_ALL_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MISSION_CLEAR_ALL_DATA { type Message = MavMessage ; const ID : u32 = 45u32 ; const NAME : & 'static str = "MISSION_CLEAR_ALL" ; const EXTRA_CRC : u8 = 232u8 ; const ENCODED_LEN : usize = 2usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct VICON_POSITION_ESTIMATE_DATA { pub usec : u64 , pub x : f32 , pub y : f32 , pub z : f32 , pub roll : f32 , pub pitch : f32 , pub yaw : f32 , } impl VICON_POSITION_ESTIMATE_DATA { pub const ENCODED_LEN : usize = 32usize ; pub const DEFAULT : Self = Self { usec : 0_u64 , x : 0.0_f32 , y : 0.0_f32 , z : 0.0_f32 , roll : 0.0_f32 , pitch : 0.0_f32 , yaw : 0.0_f32 , } ; } impl Default for VICON_POSITION_ESTIMATE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for VICON_POSITION_ESTIMATE_DATA { type Message = MavMessage ; const ID : u32 = 104u32 ; const NAME : & 'static str = "VICON_POSITION_ESTIMATE" ; const EXTRA_CRC : u8 = 56u8 ; const ENCODED_LEN : usize = 32usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . usec = buf . get_u64_le () ; __struct . x = buf . get_f32_le () ; __struct . y = buf . get_f32_le () ; __struct . z = buf . get_f32_le () ; __struct . roll = buf . get_f32_le () ; __struct . pitch = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . usec) ; __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; __tmp . put_f32_le (self . roll) ; __tmp . put_f32_le (self . pitch) ; __tmp . put_f32_le (self . yaw) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct TERRAIN_DATA_DATA { pub lat : i32 , pub lon : i32 , pub grid_spacing : u16 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub data : [i16 ; 16] , pub gridbit : u8 , } impl TERRAIN_DATA_DATA { pub const ENCODED_LEN : usize = 43usize ; pub const DEFAULT : Self = Self { lat : 0_i32 , lon : 0_i32 , grid_spacing : 0_u16 , data : [0_i16 ; 16usize] , gridbit : 0_u8 , } ; } impl Default for TERRAIN_DATA_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for TERRAIN_DATA_DATA { type Message = MavMessage ; const ID : u32 = 134u32 ; const NAME : & 'static str = "TERRAIN_DATA" ; const EXTRA_CRC : u8 = 229u8 ; const ENCODED_LEN : usize = 43usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . grid_spacing = buf . get_u16_le () ; for v in & mut __struct . data { let val = buf . get_i16_le () ; * v = val ; } __struct . gridbit = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_u16_le (self . grid_spacing) ; for val in & self . data { __tmp . put_i16_le (* val) ; } __tmp . put_u8 (self . gridbit) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ATTITUDE_QUATERNION_DATA { pub time_boot_ms : u32 , pub q1 : f32 , pub q2 : f32 , pub q3 : f32 , pub q4 : f32 , pub rollspeed : f32 , pub pitchspeed : f32 , pub yawspeed : f32 , } impl ATTITUDE_QUATERNION_DATA { pub const ENCODED_LEN : usize = 32usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , q1 : 0.0_f32 , q2 : 0.0_f32 , q3 : 0.0_f32 , q4 : 0.0_f32 , rollspeed : 0.0_f32 , pitchspeed : 0.0_f32 , yawspeed : 0.0_f32 , } ; } impl Default for ATTITUDE_QUATERNION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ATTITUDE_QUATERNION_DATA { type Message = MavMessage ; const ID : u32 = 31u32 ; const NAME : & 'static str = "ATTITUDE_QUATERNION" ; const EXTRA_CRC : u8 = 246u8 ; const ENCODED_LEN : usize = 32usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . q1 = buf . get_f32_le () ; __struct . q2 = buf . get_f32_le () ; __struct . q3 = buf . get_f32_le () ; __struct . q4 = buf . get_f32_le () ; __struct . rollspeed = buf . get_f32_le () ; __struct . pitchspeed = buf . get_f32_le () ; __struct . yawspeed = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . q1) ; __tmp . put_f32_le (self . q2) ; __tmp . put_f32_le (self . q3) ; __tmp . put_f32_le (self . q4) ; __tmp . put_f32_le (self . rollspeed) ; __tmp . put_f32_le (self . pitchspeed) ; __tmp . put_f32_le (self . yawspeed) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CAMERA_IMAGE_CAPTURED_DATA { pub time_utc : u64 , pub time_boot_ms : u32 , pub lat : i32 , pub lon : i32 , pub alt : i32 , pub relative_alt : i32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub q : [f32 ; 4] , pub image_index : i32 , pub camera_id : u8 , pub capture_result : i8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub file_url : [u8 ; 205] , } impl CAMERA_IMAGE_CAPTURED_DATA { pub const ENCODED_LEN : usize = 255usize ; pub const DEFAULT : Self = Self { time_utc : 0_u64 , time_boot_ms : 0_u32 , lat : 0_i32 , lon : 0_i32 , alt : 0_i32 , relative_alt : 0_i32 , q : [0.0_f32 ; 4usize] , image_index : 0_i32 , camera_id : 0_u8 , capture_result : 0_i8 , file_url : [0_u8 ; 205usize] , } ; } impl Default for CAMERA_IMAGE_CAPTURED_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CAMERA_IMAGE_CAPTURED_DATA { type Message = MavMessage ; const ID : u32 = 263u32 ; const NAME : & 'static str = "CAMERA_IMAGE_CAPTURED" ; const EXTRA_CRC : u8 = 133u8 ; const ENCODED_LEN : usize = 255usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_utc = buf . get_u64_le () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . alt = buf . get_i32_le () ; __struct . relative_alt = buf . get_i32_le () ; for v in & mut __struct . q { let val = buf . get_f32_le () ; * v = val ; } __struct . image_index = buf . get_i32_le () ; __struct . camera_id = buf . get_u8 () ; __struct . capture_result = buf . get_i8 () ; for v in & mut __struct . file_url { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_utc) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_i32_le (self . alt) ; __tmp . put_i32_le (self . relative_alt) ; for val in & self . q { __tmp . put_f32_le (* val) ; } __tmp . put_i32_le (self . image_index) ; __tmp . put_u8 (self . camera_id) ; __tmp . put_i8 (self . capture_result) ; for val in & self . file_url { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct VISION_POSITION_ESTIMATE_DATA { pub usec : u64 , pub x : f32 , pub y : f32 , pub z : f32 , pub roll : f32 , pub pitch : f32 , pub yaw : f32 , } impl VISION_POSITION_ESTIMATE_DATA { pub const ENCODED_LEN : usize = 32usize ; pub const DEFAULT : Self = Self { usec : 0_u64 , x : 0.0_f32 , y : 0.0_f32 , z : 0.0_f32 , roll : 0.0_f32 , pitch : 0.0_f32 , yaw : 0.0_f32 , } ; } impl Default for VISION_POSITION_ESTIMATE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for VISION_POSITION_ESTIMATE_DATA { type Message = MavMessage ; const ID : u32 = 102u32 ; const NAME : & 'static str = "VISION_POSITION_ESTIMATE" ; const EXTRA_CRC : u8 = 158u8 ; const ENCODED_LEN : usize = 32usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . usec = buf . get_u64_le () ; __struct . x = buf . get_f32_le () ; __struct . y = buf . get_f32_le () ; __struct . z = buf . get_f32_le () ; __struct . roll = buf . get_f32_le () ; __struct . pitch = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . usec) ; __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; __tmp . put_f32_le (self . roll) ; __tmp . put_f32_le (self . pitch) ; __tmp . put_f32_le (self . yaw) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LOG_REQUEST_DATA_DATA { pub ofs : u32 , pub count : u32 , pub id : u16 , pub target_system : u8 , pub target_component : u8 , } impl LOG_REQUEST_DATA_DATA { pub const ENCODED_LEN : usize = 12usize ; pub const DEFAULT : Self = Self { ofs : 0_u32 , count : 0_u32 , id : 0_u16 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for LOG_REQUEST_DATA_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for LOG_REQUEST_DATA_DATA { type Message = MavMessage ; const ID : u32 = 119u32 ; const NAME : & 'static str = "LOG_REQUEST_DATA" ; const EXTRA_CRC : u8 = 116u8 ; const ENCODED_LEN : usize = 12usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . ofs = buf . get_u32_le () ; __struct . count = buf . get_u32_le () ; __struct . id = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . ofs) ; __tmp . put_u32_le (self . count) ; __tmp . put_u16_le (self . id) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PING_DATA { pub time_usec : u64 , pub seq : u32 , pub target_system : u8 , pub target_component : u8 , } impl PING_DATA { pub const ENCODED_LEN : usize = 14usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , seq : 0_u32 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for PING_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for PING_DATA { type Message = MavMessage ; const ID : u32 = 4u32 ; const NAME : & 'static str = "PING" ; const EXTRA_CRC : u8 = 237u8 ; const ENCODED_LEN : usize = 14usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . seq = buf . get_u32_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_u32_le (self . seq) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct VIBRATION_DATA { pub time_usec : u64 , pub vibration_x : f32 , pub vibration_y : f32 , pub vibration_z : f32 , pub clipping_0 : u32 , pub clipping_1 : u32 , pub clipping_2 : u32 , } impl VIBRATION_DATA { pub const ENCODED_LEN : usize = 32usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , vibration_x : 0.0_f32 , vibration_y : 0.0_f32 , vibration_z : 0.0_f32 , clipping_0 : 0_u32 , clipping_1 : 0_u32 , clipping_2 : 0_u32 , } ; } impl Default for VIBRATION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for VIBRATION_DATA { type Message = MavMessage ; const ID : u32 = 241u32 ; const NAME : & 'static str = "VIBRATION" ; const EXTRA_CRC : u8 = 90u8 ; const ENCODED_LEN : usize = 32usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . vibration_x = buf . get_f32_le () ; __struct . vibration_y = buf . get_f32_le () ; __struct . vibration_z = buf . get_f32_le () ; __struct . clipping_0 = buf . get_u32_le () ; __struct . clipping_1 = buf . get_u32_le () ; __struct . clipping_2 = buf . get_u32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . vibration_x) ; __tmp . put_f32_le (self . vibration_y) ; __tmp . put_f32_le (self . vibration_z) ; __tmp . put_u32_le (self . clipping_0) ; __tmp . put_u32_le (self . clipping_1) ; __tmp . put_u32_le (self . clipping_2) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct FLIGHT_INFORMATION_DATA { pub arming_time_utc : u64 , pub takeoff_time_utc : u64 , pub flight_uuid : u64 , pub time_boot_ms : u32 , } impl FLIGHT_INFORMATION_DATA { pub const ENCODED_LEN : usize = 28usize ; pub const DEFAULT : Self = Self { arming_time_utc : 0_u64 , takeoff_time_utc : 0_u64 , flight_uuid : 0_u64 , time_boot_ms : 0_u32 , } ; } impl Default for FLIGHT_INFORMATION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for FLIGHT_INFORMATION_DATA { type Message = MavMessage ; const ID : u32 = 264u32 ; const NAME : & 'static str = "FLIGHT_INFORMATION" ; const EXTRA_CRC : u8 = 49u8 ; const ENCODED_LEN : usize = 28usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . arming_time_utc = buf . get_u64_le () ; __struct . takeoff_time_utc = buf . get_u64_le () ; __struct . flight_uuid = buf . get_u64_le () ; __struct . time_boot_ms = buf . get_u32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . arming_time_utc) ; __tmp . put_u64_le (self . takeoff_time_utc) ; __tmp . put_u64_le (self . flight_uuid) ; __tmp . put_u32_le (self . time_boot_ms) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GPS_RAW_INT_DATA { pub time_usec : u64 , pub lat : i32 , pub lon : i32 , pub alt : i32 , pub eph : u16 , pub epv : u16 , pub vel : u16 , pub cog : u16 , pub fix_type : GpsFixType , pub satellites_visible : u8 , } impl GPS_RAW_INT_DATA { pub const ENCODED_LEN : usize = 30usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , lat : 0_i32 , lon : 0_i32 , alt : 0_i32 , eph : 0_u16 , epv : 0_u16 , vel : 0_u16 , cog : 0_u16 , fix_type : GpsFixType :: DEFAULT , satellites_visible : 0_u8 , } ; } impl Default for GPS_RAW_INT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GPS_RAW_INT_DATA { type Message = MavMessage ; const ID : u32 = 24u32 ; const NAME : & 'static str = "GPS_RAW_INT" ; const EXTRA_CRC : u8 = 24u8 ; const ENCODED_LEN : usize = 30usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . alt = buf . get_i32_le () ; __struct . eph = buf . get_u16_le () ; __struct . epv = buf . get_u16_le () ; __struct . vel = buf . get_u16_le () ; __struct . cog = buf . get_u16_le () ; let tmp = buf . get_u8 () ; __struct . fix_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "GpsFixType" , value : tmp as u32 }) ? ; __struct . satellites_visible = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_i32_le (self . alt) ; __tmp . put_u16_le (self . eph) ; __tmp . put_u16_le (self . epv) ; __tmp . put_u16_le (self . vel) ; __tmp . put_u16_le (self . cog) ; __tmp . put_u8 (self . fix_type as u8) ; __tmp . put_u8 (self . satellites_visible) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MOUNT_ORIENTATION_DATA { pub time_boot_ms : u32 , pub roll : f32 , pub pitch : f32 , pub yaw : f32 , } impl MOUNT_ORIENTATION_DATA { pub const ENCODED_LEN : usize = 16usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , roll : 0.0_f32 , pitch : 0.0_f32 , yaw : 0.0_f32 , } ; } impl Default for MOUNT_ORIENTATION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MOUNT_ORIENTATION_DATA { type Message = MavMessage ; const ID : u32 = 265u32 ; const NAME : & 'static str = "MOUNT_ORIENTATION" ; const EXTRA_CRC : u8 = 26u8 ; const ENCODED_LEN : usize = 16usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . roll = buf . get_f32_le () ; __struct . pitch = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . roll) ; __tmp . put_f32_le (self . pitch) ; __tmp . put_f32_le (self . yaw) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LOGGING_DATA_DATA { pub sequence : u16 , pub target_system : u8 , pub target_component : u8 , pub length : u8 , pub first_message_offset : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub data : [u8 ; 249] , } impl LOGGING_DATA_DATA { pub const ENCODED_LEN : usize = 255usize ; pub const DEFAULT : Self = Self { sequence : 0_u16 , target_system : 0_u8 , target_component : 0_u8 , length : 0_u8 , first_message_offset : 0_u8 , data : [0_u8 ; 249usize] , } ; } impl Default for LOGGING_DATA_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for LOGGING_DATA_DATA { type Message = MavMessage ; const ID : u32 = 266u32 ; const NAME : & 'static str = "LOGGING_DATA" ; const EXTRA_CRC : u8 = 193u8 ; const ENCODED_LEN : usize = 255usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . sequence = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . length = buf . get_u8 () ; __struct . first_message_offset = buf . get_u8 () ; for v in & mut __struct . data { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . sequence) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . length) ; __tmp . put_u8 (self . first_message_offset) ; for val in & self . data { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PARAM_SET_DATA { pub param_value : f32 , pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub param_id : [u8 ; 16] , pub param_type : MavParamType , } impl PARAM_SET_DATA { pub const ENCODED_LEN : usize = 23usize ; pub const DEFAULT : Self = Self { param_value : 0.0_f32 , target_system : 0_u8 , target_component : 0_u8 , param_id : [0_u8 ; 16usize] , param_type : MavParamType :: DEFAULT , } ; } impl Default for PARAM_SET_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for PARAM_SET_DATA { type Message = MavMessage ; const ID : u32 = 23u32 ; const NAME : & 'static str = "PARAM_SET" ; const EXTRA_CRC : u8 = 168u8 ; const ENCODED_LEN : usize = 23usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . param_value = buf . get_f32_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . param_id { let val = buf . get_u8 () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . param_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavParamType" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . param_value) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . param_id { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . param_type as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GIMBAL_MANAGER_STATUS_DATA { pub time_boot_ms : u32 , pub flags : GimbalManagerFlags , pub gimbal_device_id : u8 , pub primary_control_sysid : u8 , pub primary_control_compid : u8 , pub secondary_control_sysid : u8 , pub secondary_control_compid : u8 , } impl GIMBAL_MANAGER_STATUS_DATA { pub const ENCODED_LEN : usize = 13usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , flags : GimbalManagerFlags :: DEFAULT , gimbal_device_id : 0_u8 , primary_control_sysid : 0_u8 , primary_control_compid : 0_u8 , secondary_control_sysid : 0_u8 , secondary_control_compid : 0_u8 , } ; } impl Default for GIMBAL_MANAGER_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GIMBAL_MANAGER_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 281u32 ; const NAME : & 'static str = "GIMBAL_MANAGER_STATUS" ; const EXTRA_CRC : u8 = 48u8 ; const ENCODED_LEN : usize = 13usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; let tmp = buf . get_u32_le () ; __struct . flags = FromPrimitive :: from_u32 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "GimbalManagerFlags" , value : tmp as u32 }) ? ; __struct . gimbal_device_id = buf . get_u8 () ; __struct . primary_control_sysid = buf . get_u8 () ; __struct . primary_control_compid = buf . get_u8 () ; __struct . secondary_control_sysid = buf . get_u8 () ; __struct . secondary_control_compid = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_u32_le (self . flags as u32) ; __tmp . put_u8 (self . gimbal_device_id) ; __tmp . put_u8 (self . primary_control_sysid) ; __tmp . put_u8 (self . primary_control_compid) ; __tmp . put_u8 (self . secondary_control_sysid) ; __tmp . put_u8 (self . secondary_control_compid) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct RAW_RPM_DATA { pub frequency : f32 , pub index : u8 , } impl RAW_RPM_DATA { pub const ENCODED_LEN : usize = 5usize ; pub const DEFAULT : Self = Self { frequency : 0.0_f32 , index : 0_u8 , } ; } impl Default for RAW_RPM_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for RAW_RPM_DATA { type Message = MavMessage ; const ID : u32 = 339u32 ; const NAME : & 'static str = "RAW_RPM" ; const EXTRA_CRC : u8 = 199u8 ; const ENCODED_LEN : usize = 5usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . frequency = buf . get_f32_le () ; __struct . index = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . frequency) ; __tmp . put_u8 (self . index) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct TERRAIN_CHECK_DATA { pub lat : i32 , pub lon : i32 , } impl TERRAIN_CHECK_DATA { pub const ENCODED_LEN : usize = 8usize ; pub const DEFAULT : Self = Self { lat : 0_i32 , lon : 0_i32 , } ; } impl Default for TERRAIN_CHECK_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for TERRAIN_CHECK_DATA { type Message = MavMessage ; const ID : u32 = 135u32 ; const NAME : & 'static str = "TERRAIN_CHECK" ; const EXTRA_CRC : u8 = 203u8 ; const ENCODED_LEN : usize = 8usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ACTUATOR_OUTPUT_STATUS_DATA { pub time_usec : u64 , pub active : u32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub actuator : [f32 ; 32] , } impl ACTUATOR_OUTPUT_STATUS_DATA { pub const ENCODED_LEN : usize = 140usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , active : 0_u32 , actuator : [0.0_f32 ; 32usize] , } ; } impl Default for ACTUATOR_OUTPUT_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ACTUATOR_OUTPUT_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 375u32 ; const NAME : & 'static str = "ACTUATOR_OUTPUT_STATUS" ; const EXTRA_CRC : u8 = 251u8 ; const ENCODED_LEN : usize = 140usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . active = buf . get_u32_le () ; for v in & mut __struct . actuator { let val = buf . get_f32_le () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_u32_le (self . active) ; for val in & self . actuator { __tmp . put_f32_le (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct V2_EXTENSION_DATA { pub message_type : u16 , pub target_network : u8 , pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub payload : [u8 ; 249] , } impl V2_EXTENSION_DATA { pub const ENCODED_LEN : usize = 254usize ; pub const DEFAULT : Self = Self { message_type : 0_u16 , target_network : 0_u8 , target_system : 0_u8 , target_component : 0_u8 , payload : [0_u8 ; 249usize] , } ; } impl Default for V2_EXTENSION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for V2_EXTENSION_DATA { type Message = MavMessage ; const ID : u32 = 248u32 ; const NAME : & 'static str = "V2_EXTENSION" ; const EXTRA_CRC : u8 = 8u8 ; const ENCODED_LEN : usize = 254usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . message_type = buf . get_u16_le () ; __struct . target_network = buf . get_u8 () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . payload { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . message_type) ; __tmp . put_u8 (self . target_network) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . payload { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct COMPONENT_INFORMATION_DATA { pub time_boot_ms : u32 , pub general_metadata_file_crc : u32 , pub peripherals_metadata_file_crc : u32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub general_metadata_uri : [u8 ; 100] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub peripherals_metadata_uri : [u8 ; 100] , } impl COMPONENT_INFORMATION_DATA { pub const ENCODED_LEN : usize = 212usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , general_metadata_file_crc : 0_u32 , peripherals_metadata_file_crc : 0_u32 , general_metadata_uri : [0_u8 ; 100usize] , peripherals_metadata_uri : [0_u8 ; 100usize] , } ; } impl Default for COMPONENT_INFORMATION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for COMPONENT_INFORMATION_DATA { type Message = MavMessage ; const ID : u32 = 395u32 ; const NAME : & 'static str = "COMPONENT_INFORMATION" ; const EXTRA_CRC : u8 = 0u8 ; const ENCODED_LEN : usize = 212usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . general_metadata_file_crc = buf . get_u32_le () ; __struct . peripherals_metadata_file_crc = buf . get_u32_le () ; for v in & mut __struct . general_metadata_uri { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . peripherals_metadata_uri { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_u32_le (self . general_metadata_file_crc) ; __tmp . put_u32_le (self . peripherals_metadata_file_crc) ; for val in & self . general_metadata_uri { __tmp . put_u8 (* val) ; } for val in & self . peripherals_metadata_uri { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HIL_STATE_DATA { pub time_usec : u64 , pub roll : f32 , pub pitch : f32 , pub yaw : f32 , pub rollspeed : f32 , pub pitchspeed : f32 , pub yawspeed : f32 , pub lat : i32 , pub lon : i32 , pub alt : i32 , pub vx : i16 , pub vy : i16 , pub vz : i16 , pub xacc : i16 , pub yacc : i16 , pub zacc : i16 , } impl HIL_STATE_DATA { pub const ENCODED_LEN : usize = 56usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , roll : 0.0_f32 , pitch : 0.0_f32 , yaw : 0.0_f32 , rollspeed : 0.0_f32 , pitchspeed : 0.0_f32 , yawspeed : 0.0_f32 , lat : 0_i32 , lon : 0_i32 , alt : 0_i32 , vx : 0_i16 , vy : 0_i16 , vz : 0_i16 , xacc : 0_i16 , yacc : 0_i16 , zacc : 0_i16 , } ; } impl Default for HIL_STATE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for HIL_STATE_DATA { type Message = MavMessage ; const ID : u32 = 90u32 ; const NAME : & 'static str = "HIL_STATE" ; const EXTRA_CRC : u8 = 183u8 ; const ENCODED_LEN : usize = 56usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . roll = buf . get_f32_le () ; __struct . pitch = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; __struct . rollspeed = buf . get_f32_le () ; __struct . pitchspeed = buf . get_f32_le () ; __struct . yawspeed = buf . get_f32_le () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . alt = buf . get_i32_le () ; __struct . vx = buf . get_i16_le () ; __struct . vy = buf . get_i16_le () ; __struct . vz = buf . get_i16_le () ; __struct . xacc = buf . get_i16_le () ; __struct . yacc = buf . get_i16_le () ; __struct . zacc = buf . get_i16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . roll) ; __tmp . put_f32_le (self . pitch) ; __tmp . put_f32_le (self . yaw) ; __tmp . put_f32_le (self . rollspeed) ; __tmp . put_f32_le (self . pitchspeed) ; __tmp . put_f32_le (self . yawspeed) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_i32_le (self . alt) ; __tmp . put_i16_le (self . vx) ; __tmp . put_i16_le (self . vy) ; __tmp . put_i16_le (self . vz) ; __tmp . put_i16_le (self . xacc) ; __tmp . put_i16_le (self . yacc) ; __tmp . put_i16_le (self . zacc) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CAMERA_TRACKING_IMAGE_STATUS_DATA { pub point_x : f32 , pub point_y : f32 , pub radius : f32 , pub rec_top_x : f32 , pub rec_top_y : f32 , pub rec_bottom_x : f32 , pub rec_bottom_y : f32 , pub tracking_status : CameraTrackingStatusFlags , pub tracking_mode : CameraTrackingMode , pub target_data : CameraTrackingTargetData , } impl CAMERA_TRACKING_IMAGE_STATUS_DATA { pub const ENCODED_LEN : usize = 31usize ; pub const DEFAULT : Self = Self { point_x : 0.0_f32 , point_y : 0.0_f32 , radius : 0.0_f32 , rec_top_x : 0.0_f32 , rec_top_y : 0.0_f32 , rec_bottom_x : 0.0_f32 , rec_bottom_y : 0.0_f32 , tracking_status : CameraTrackingStatusFlags :: DEFAULT , tracking_mode : CameraTrackingMode :: DEFAULT , target_data : CameraTrackingTargetData :: DEFAULT , } ; } impl Default for CAMERA_TRACKING_IMAGE_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CAMERA_TRACKING_IMAGE_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 275u32 ; const NAME : & 'static str = "CAMERA_TRACKING_IMAGE_STATUS" ; const EXTRA_CRC : u8 = 126u8 ; const ENCODED_LEN : usize = 31usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . point_x = buf . get_f32_le () ; __struct . point_y = buf . get_f32_le () ; __struct . radius = buf . get_f32_le () ; __struct . rec_top_x = buf . get_f32_le () ; __struct . rec_top_y = buf . get_f32_le () ; __struct . rec_bottom_x = buf . get_f32_le () ; __struct . rec_bottom_y = buf . get_f32_le () ; let tmp = buf . get_u8 () ; __struct . tracking_status = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "CameraTrackingStatusFlags" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . tracking_mode = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "CameraTrackingMode" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . target_data = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "CameraTrackingTargetData" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . point_x) ; __tmp . put_f32_le (self . point_y) ; __tmp . put_f32_le (self . radius) ; __tmp . put_f32_le (self . rec_top_x) ; __tmp . put_f32_le (self . rec_top_y) ; __tmp . put_f32_le (self . rec_bottom_x) ; __tmp . put_f32_le (self . rec_bottom_y) ; __tmp . put_u8 (self . tracking_status as u8) ; __tmp . put_u8 (self . tracking_mode as u8) ; __tmp . put_u8 (self . target_data as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct RC_CHANNELS_SCALED_DATA { pub time_boot_ms : u32 , pub chan1_scaled : i16 , pub chan2_scaled : i16 , pub chan3_scaled : i16 , pub chan4_scaled : i16 , pub chan5_scaled : i16 , pub chan6_scaled : i16 , pub chan7_scaled : i16 , pub chan8_scaled : i16 , pub port : u8 , pub rssi : u8 , } impl RC_CHANNELS_SCALED_DATA { pub const ENCODED_LEN : usize = 22usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , chan1_scaled : 0_i16 , chan2_scaled : 0_i16 , chan3_scaled : 0_i16 , chan4_scaled : 0_i16 , chan5_scaled : 0_i16 , chan6_scaled : 0_i16 , chan7_scaled : 0_i16 , chan8_scaled : 0_i16 , port : 0_u8 , rssi : 0_u8 , } ; } impl Default for RC_CHANNELS_SCALED_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for RC_CHANNELS_SCALED_DATA { type Message = MavMessage ; const ID : u32 = 34u32 ; const NAME : & 'static str = "RC_CHANNELS_SCALED" ; const EXTRA_CRC : u8 = 237u8 ; const ENCODED_LEN : usize = 22usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . chan1_scaled = buf . get_i16_le () ; __struct . chan2_scaled = buf . get_i16_le () ; __struct . chan3_scaled = buf . get_i16_le () ; __struct . chan4_scaled = buf . get_i16_le () ; __struct . chan5_scaled = buf . get_i16_le () ; __struct . chan6_scaled = buf . get_i16_le () ; __struct . chan7_scaled = buf . get_i16_le () ; __struct . chan8_scaled = buf . get_i16_le () ; __struct . port = buf . get_u8 () ; __struct . rssi = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_i16_le (self . chan1_scaled) ; __tmp . put_i16_le (self . chan2_scaled) ; __tmp . put_i16_le (self . chan3_scaled) ; __tmp . put_i16_le (self . chan4_scaled) ; __tmp . put_i16_le (self . chan5_scaled) ; __tmp . put_i16_le (self . chan6_scaled) ; __tmp . put_i16_le (self . chan7_scaled) ; __tmp . put_i16_le (self . chan8_scaled) ; __tmp . put_u8 (self . port) ; __tmp . put_u8 (self . rssi) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct EVENT_DATA { pub id : u32 , pub event_time_boot_ms : u32 , pub sequence : u16 , pub destination_component : u8 , pub destination_system : u8 , pub log_levels : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub arguments : [u8 ; 40] , } impl EVENT_DATA { pub const ENCODED_LEN : usize = 53usize ; pub const DEFAULT : Self = Self { id : 0_u32 , event_time_boot_ms : 0_u32 , sequence : 0_u16 , destination_component : 0_u8 , destination_system : 0_u8 , log_levels : 0_u8 , arguments : [0_u8 ; 40usize] , } ; } impl Default for EVENT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for EVENT_DATA { type Message = MavMessage ; const ID : u32 = 410u32 ; const NAME : & 'static str = "EVENT" ; const EXTRA_CRC : u8 = 160u8 ; const ENCODED_LEN : usize = 53usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . id = buf . get_u32_le () ; __struct . event_time_boot_ms = buf . get_u32_le () ; __struct . sequence = buf . get_u16_le () ; __struct . destination_component = buf . get_u8 () ; __struct . destination_system = buf . get_u8 () ; __struct . log_levels = buf . get_u8 () ; for v in & mut __struct . arguments { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . id) ; __tmp . put_u32_le (self . event_time_boot_ms) ; __tmp . put_u16_le (self . sequence) ; __tmp . put_u8 (self . destination_component) ; __tmp . put_u8 (self . destination_system) ; __tmp . put_u8 (self . log_levels) ; for val in & self . arguments { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct WHEEL_DISTANCE_DATA { pub time_usec : u64 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub distance : [f64 ; 16] , pub count : u8 , } impl WHEEL_DISTANCE_DATA { pub const ENCODED_LEN : usize = 137usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , distance : [0.0_f64 ; 16usize] , count : 0_u8 , } ; } impl Default for WHEEL_DISTANCE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for WHEEL_DISTANCE_DATA { type Message = MavMessage ; const ID : u32 = 9000u32 ; const NAME : & 'static str = "WHEEL_DISTANCE" ; const EXTRA_CRC : u8 = 113u8 ; const ENCODED_LEN : usize = 137usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; for v in & mut __struct . distance { let val = buf . get_f64_le () ; * v = val ; } __struct . count = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; for val in & self . distance { __tmp . put_f64_le (* val) ; } __tmp . put_u8 (self . count) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct OPEN_DRONE_ID_OPERATOR_ID_DATA { pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub id_or_mac : [u8 ; 20] , pub operator_id_type : MavOdidOperatorIdType , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub operator_id : [u8 ; 20] , } impl OPEN_DRONE_ID_OPERATOR_ID_DATA { pub const ENCODED_LEN : usize = 43usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , id_or_mac : [0_u8 ; 20usize] , operator_id_type : MavOdidOperatorIdType :: DEFAULT , operator_id : [0_u8 ; 20usize] , } ; } impl Default for OPEN_DRONE_ID_OPERATOR_ID_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for OPEN_DRONE_ID_OPERATOR_ID_DATA { type Message = MavMessage ; const ID : u32 = 12905u32 ; const NAME : & 'static str = "OPEN_DRONE_ID_OPERATOR_ID" ; const EXTRA_CRC : u8 = 49u8 ; const ENCODED_LEN : usize = 43usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . id_or_mac { let val = buf . get_u8 () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . operator_id_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidOperatorIdType" , value : tmp as u32 }) ? ; for v in & mut __struct . operator_id { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . id_or_mac { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . operator_id_type as u8) ; for val in & self . operator_id { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct OPEN_DRONE_ID_SYSTEM_DATA { pub operator_latitude : i32 , pub operator_longitude : i32 , pub area_ceiling : f32 , pub area_floor : f32 , pub operator_altitude_geo : f32 , pub timestamp : u32 , pub area_count : u16 , pub area_radius : u16 , pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub id_or_mac : [u8 ; 20] , pub operator_location_type : MavOdidOperatorLocationType , pub classification_type : MavOdidClassificationType , pub category_eu : MavOdidCategoryEu , pub class_eu : MavOdidClassEu , } impl OPEN_DRONE_ID_SYSTEM_DATA { pub const ENCODED_LEN : usize = 54usize ; pub const DEFAULT : Self = Self { operator_latitude : 0_i32 , operator_longitude : 0_i32 , area_ceiling : 0.0_f32 , area_floor : 0.0_f32 , operator_altitude_geo : 0.0_f32 , timestamp : 0_u32 , area_count : 0_u16 , area_radius : 0_u16 , target_system : 0_u8 , target_component : 0_u8 , id_or_mac : [0_u8 ; 20usize] , operator_location_type : MavOdidOperatorLocationType :: DEFAULT , classification_type : MavOdidClassificationType :: DEFAULT , category_eu : MavOdidCategoryEu :: DEFAULT , class_eu : MavOdidClassEu :: DEFAULT , } ; } impl Default for OPEN_DRONE_ID_SYSTEM_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for OPEN_DRONE_ID_SYSTEM_DATA { type Message = MavMessage ; const ID : u32 = 12904u32 ; const NAME : & 'static str = "OPEN_DRONE_ID_SYSTEM" ; const EXTRA_CRC : u8 = 77u8 ; const ENCODED_LEN : usize = 54usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . operator_latitude = buf . get_i32_le () ; __struct . operator_longitude = buf . get_i32_le () ; __struct . area_ceiling = buf . get_f32_le () ; __struct . area_floor = buf . get_f32_le () ; __struct . operator_altitude_geo = buf . get_f32_le () ; __struct . timestamp = buf . get_u32_le () ; __struct . area_count = buf . get_u16_le () ; __struct . area_radius = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . id_or_mac { let val = buf . get_u8 () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . operator_location_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidOperatorLocationType" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . classification_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidClassificationType" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . category_eu = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidCategoryEu" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . class_eu = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidClassEu" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . operator_latitude) ; __tmp . put_i32_le (self . operator_longitude) ; __tmp . put_f32_le (self . area_ceiling) ; __tmp . put_f32_le (self . area_floor) ; __tmp . put_f32_le (self . operator_altitude_geo) ; __tmp . put_u32_le (self . timestamp) ; __tmp . put_u16_le (self . area_count) ; __tmp . put_u16_le (self . area_radius) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . id_or_mac { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . operator_location_type as u8) ; __tmp . put_u8 (self . classification_type as u8) ; __tmp . put_u8 (self . category_eu as u8) ; __tmp . put_u8 (self . class_eu as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct STORAGE_INFORMATION_DATA { pub time_boot_ms : u32 , pub total_capacity : f32 , pub used_capacity : f32 , pub available_capacity : f32 , pub read_speed : f32 , pub write_speed : f32 , pub storage_id : u8 , pub storage_count : u8 , pub status : StorageStatus , } impl STORAGE_INFORMATION_DATA { pub const ENCODED_LEN : usize = 27usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , total_capacity : 0.0_f32 , used_capacity : 0.0_f32 , available_capacity : 0.0_f32 , read_speed : 0.0_f32 , write_speed : 0.0_f32 , storage_id : 0_u8 , storage_count : 0_u8 , status : StorageStatus :: DEFAULT , } ; } impl Default for STORAGE_INFORMATION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for STORAGE_INFORMATION_DATA { type Message = MavMessage ; const ID : u32 = 261u32 ; const NAME : & 'static str = "STORAGE_INFORMATION" ; const EXTRA_CRC : u8 = 179u8 ; const ENCODED_LEN : usize = 27usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . total_capacity = buf . get_f32_le () ; __struct . used_capacity = buf . get_f32_le () ; __struct . available_capacity = buf . get_f32_le () ; __struct . read_speed = buf . get_f32_le () ; __struct . write_speed = buf . get_f32_le () ; __struct . storage_id = buf . get_u8 () ; __struct . storage_count = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . status = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "StorageStatus" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . total_capacity) ; __tmp . put_f32_le (self . used_capacity) ; __tmp . put_f32_le (self . available_capacity) ; __tmp . put_f32_le (self . read_speed) ; __tmp . put_f32_le (self . write_speed) ; __tmp . put_u8 (self . storage_id) ; __tmp . put_u8 (self . storage_count) ; __tmp . put_u8 (self . status as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PARAM_VALUE_DATA { pub param_value : f32 , pub param_count : u16 , pub param_index : u16 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub param_id : [u8 ; 16] , pub param_type : MavParamType , } impl PARAM_VALUE_DATA { pub const ENCODED_LEN : usize = 25usize ; pub const DEFAULT : Self = Self { param_value : 0.0_f32 , param_count : 0_u16 , param_index : 0_u16 , param_id : [0_u8 ; 16usize] , param_type : MavParamType :: DEFAULT , } ; } impl Default for PARAM_VALUE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for PARAM_VALUE_DATA { type Message = MavMessage ; const ID : u32 = 22u32 ; const NAME : & 'static str = "PARAM_VALUE" ; const EXTRA_CRC : u8 = 220u8 ; const ENCODED_LEN : usize = 25usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . param_value = buf . get_f32_le () ; __struct . param_count = buf . get_u16_le () ; __struct . param_index = buf . get_u16_le () ; for v in & mut __struct . param_id { let val = buf . get_u8 () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . param_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavParamType" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . param_value) ; __tmp . put_u16_le (self . param_count) ; __tmp . put_u16_le (self . param_index) ; for val in & self . param_id { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . param_type as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GPS_RTK_DATA { pub time_last_baseline_ms : u32 , pub tow : u32 , pub baseline_a_mm : i32 , pub baseline_b_mm : i32 , pub baseline_c_mm : i32 , pub accuracy : u32 , pub iar_num_hypotheses : i32 , pub wn : u16 , pub rtk_receiver_id : u8 , pub rtk_health : u8 , pub rtk_rate : u8 , pub nsats : u8 , pub baseline_coords_type : RtkBaselineCoordinateSystem , } impl GPS_RTK_DATA { pub const ENCODED_LEN : usize = 35usize ; pub const DEFAULT : Self = Self { time_last_baseline_ms : 0_u32 , tow : 0_u32 , baseline_a_mm : 0_i32 , baseline_b_mm : 0_i32 , baseline_c_mm : 0_i32 , accuracy : 0_u32 , iar_num_hypotheses : 0_i32 , wn : 0_u16 , rtk_receiver_id : 0_u8 , rtk_health : 0_u8 , rtk_rate : 0_u8 , nsats : 0_u8 , baseline_coords_type : RtkBaselineCoordinateSystem :: DEFAULT , } ; } impl Default for GPS_RTK_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GPS_RTK_DATA { type Message = MavMessage ; const ID : u32 = 127u32 ; const NAME : & 'static str = "GPS_RTK" ; const EXTRA_CRC : u8 = 25u8 ; const ENCODED_LEN : usize = 35usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_last_baseline_ms = buf . get_u32_le () ; __struct . tow = buf . get_u32_le () ; __struct . baseline_a_mm = buf . get_i32_le () ; __struct . baseline_b_mm = buf . get_i32_le () ; __struct . baseline_c_mm = buf . get_i32_le () ; __struct . accuracy = buf . get_u32_le () ; __struct . iar_num_hypotheses = buf . get_i32_le () ; __struct . wn = buf . get_u16_le () ; __struct . rtk_receiver_id = buf . get_u8 () ; __struct . rtk_health = buf . get_u8 () ; __struct . rtk_rate = buf . get_u8 () ; __struct . nsats = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . baseline_coords_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "RtkBaselineCoordinateSystem" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_last_baseline_ms) ; __tmp . put_u32_le (self . tow) ; __tmp . put_i32_le (self . baseline_a_mm) ; __tmp . put_i32_le (self . baseline_b_mm) ; __tmp . put_i32_le (self . baseline_c_mm) ; __tmp . put_u32_le (self . accuracy) ; __tmp . put_i32_le (self . iar_num_hypotheses) ; __tmp . put_u16_le (self . wn) ; __tmp . put_u8 (self . rtk_receiver_id) ; __tmp . put_u8 (self . rtk_health) ; __tmp . put_u8 (self . rtk_rate) ; __tmp . put_u8 (self . nsats) ; __tmp . put_u8 (self . baseline_coords_type as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ESC_INFO_DATA { pub time_usec : u64 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub error_count : [u32 ; 4] , pub counter : u16 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub failure_flags : [u16 ; 4] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub temperature : [i16 ; 4] , pub index : u8 , pub count : u8 , pub connection_type : EscConnectionType , pub info : u8 , } impl ESC_INFO_DATA { pub const ENCODED_LEN : usize = 46usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , error_count : [0_u32 ; 4usize] , counter : 0_u16 , failure_flags : [0_u16 ; 4usize] , temperature : [0_i16 ; 4usize] , index : 0_u8 , count : 0_u8 , connection_type : EscConnectionType :: DEFAULT , info : 0_u8 , } ; } impl Default for ESC_INFO_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ESC_INFO_DATA { type Message = MavMessage ; const ID : u32 = 290u32 ; const NAME : & 'static str = "ESC_INFO" ; const EXTRA_CRC : u8 = 251u8 ; const ENCODED_LEN : usize = 46usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; for v in & mut __struct . error_count { let val = buf . get_u32_le () ; * v = val ; } __struct . counter = buf . get_u16_le () ; for v in & mut __struct . failure_flags { let val = buf . get_u16_le () ; * v = val ; } for v in & mut __struct . temperature { let val = buf . get_i16_le () ; * v = val ; } __struct . index = buf . get_u8 () ; __struct . count = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . connection_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "EscConnectionType" , value : tmp as u32 }) ? ; __struct . info = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; for val in & self . error_count { __tmp . put_u32_le (* val) ; } __tmp . put_u16_le (self . counter) ; for val in & self . failure_flags { __tmp . put_u16_le (* val) ; } for val in & self . temperature { __tmp . put_i16_le (* val) ; } __tmp . put_u8 (self . index) ; __tmp . put_u8 (self . count) ; __tmp . put_u8 (self . connection_type as u8) ; __tmp . put_u8 (self . info) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct TERRAIN_REPORT_DATA { pub lat : i32 , pub lon : i32 , pub terrain_height : f32 , pub current_height : f32 , pub spacing : u16 , pub pending : u16 , pub loaded : u16 , } impl TERRAIN_REPORT_DATA { pub const ENCODED_LEN : usize = 22usize ; pub const DEFAULT : Self = Self { lat : 0_i32 , lon : 0_i32 , terrain_height : 0.0_f32 , current_height : 0.0_f32 , spacing : 0_u16 , pending : 0_u16 , loaded : 0_u16 , } ; } impl Default for TERRAIN_REPORT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for TERRAIN_REPORT_DATA { type Message = MavMessage ; const ID : u32 = 136u32 ; const NAME : & 'static str = "TERRAIN_REPORT" ; const EXTRA_CRC : u8 = 1u8 ; const ENCODED_LEN : usize = 22usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . terrain_height = buf . get_f32_le () ; __struct . current_height = buf . get_f32_le () ; __struct . spacing = buf . get_u16_le () ; __struct . pending = buf . get_u16_le () ; __struct . loaded = buf . get_u16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_f32_le (self . terrain_height) ; __tmp . put_f32_le (self . current_height) ; __tmp . put_u16_le (self . spacing) ; __tmp . put_u16_le (self . pending) ; __tmp . put_u16_le (self . loaded) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CAMERA_CAPTURE_STATUS_DATA { pub time_boot_ms : u32 , pub image_interval : f32 , pub recording_time_ms : u32 , pub available_capacity : f32 , pub image_status : u8 , pub video_status : u8 , } impl CAMERA_CAPTURE_STATUS_DATA { pub const ENCODED_LEN : usize = 18usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , image_interval : 0.0_f32 , recording_time_ms : 0_u32 , available_capacity : 0.0_f32 , image_status : 0_u8 , video_status : 0_u8 , } ; } impl Default for CAMERA_CAPTURE_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CAMERA_CAPTURE_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 262u32 ; const NAME : & 'static str = "CAMERA_CAPTURE_STATUS" ; const EXTRA_CRC : u8 = 12u8 ; const ENCODED_LEN : usize = 18usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . image_interval = buf . get_f32_le () ; __struct . recording_time_ms = buf . get_u32_le () ; __struct . available_capacity = buf . get_f32_le () ; __struct . image_status = buf . get_u8 () ; __struct . video_status = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . image_interval) ; __tmp . put_u32_le (self . recording_time_ms) ; __tmp . put_f32_le (self . available_capacity) ; __tmp . put_u8 (self . image_status) ; __tmp . put_u8 (self . video_status) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ENCAPSULATED_DATA_DATA { pub seqnr : u16 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub data : [u8 ; 253] , } impl ENCAPSULATED_DATA_DATA { pub const ENCODED_LEN : usize = 255usize ; pub const DEFAULT : Self = Self { seqnr : 0_u16 , data : [0_u8 ; 253usize] , } ; } impl Default for ENCAPSULATED_DATA_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ENCAPSULATED_DATA_DATA { type Message = MavMessage ; const ID : u32 = 131u32 ; const NAME : & 'static str = "ENCAPSULATED_DATA" ; const EXTRA_CRC : u8 = 223u8 ; const ENCODED_LEN : usize = 255usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . seqnr = buf . get_u16_le () ; for v in & mut __struct . data { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . seqnr) ; for val in & self . data { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HIL_SENSOR_DATA { pub time_usec : u64 , pub xacc : f32 , pub yacc : f32 , pub zacc : f32 , pub xgyro : f32 , pub ygyro : f32 , pub zgyro : f32 , pub xmag : f32 , pub ymag : f32 , pub zmag : f32 , pub abs_pressure : f32 , pub diff_pressure : f32 , pub pressure_alt : f32 , pub temperature : f32 , pub fields_updated : HilSensorUpdatedFlags , } impl HIL_SENSOR_DATA { pub const ENCODED_LEN : usize = 64usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , xacc : 0.0_f32 , yacc : 0.0_f32 , zacc : 0.0_f32 , xgyro : 0.0_f32 , ygyro : 0.0_f32 , zgyro : 0.0_f32 , xmag : 0.0_f32 , ymag : 0.0_f32 , zmag : 0.0_f32 , abs_pressure : 0.0_f32 , diff_pressure : 0.0_f32 , pressure_alt : 0.0_f32 , temperature : 0.0_f32 , fields_updated : HilSensorUpdatedFlags :: DEFAULT , } ; } impl Default for HIL_SENSOR_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for HIL_SENSOR_DATA { type Message = MavMessage ; const ID : u32 = 107u32 ; const NAME : & 'static str = "HIL_SENSOR" ; const EXTRA_CRC : u8 = 108u8 ; const ENCODED_LEN : usize = 64usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . xacc = buf . get_f32_le () ; __struct . yacc = buf . get_f32_le () ; __struct . zacc = buf . get_f32_le () ; __struct . xgyro = buf . get_f32_le () ; __struct . ygyro = buf . get_f32_le () ; __struct . zgyro = buf . get_f32_le () ; __struct . xmag = buf . get_f32_le () ; __struct . ymag = buf . get_f32_le () ; __struct . zmag = buf . get_f32_le () ; __struct . abs_pressure = buf . get_f32_le () ; __struct . diff_pressure = buf . get_f32_le () ; __struct . pressure_alt = buf . get_f32_le () ; __struct . temperature = buf . get_f32_le () ; let tmp = buf . get_u32_le () ; __struct . fields_updated = HilSensorUpdatedFlags :: from_bits (tmp & HilSensorUpdatedFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "HilSensorUpdatedFlags" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . xacc) ; __tmp . put_f32_le (self . yacc) ; __tmp . put_f32_le (self . zacc) ; __tmp . put_f32_le (self . xgyro) ; __tmp . put_f32_le (self . ygyro) ; __tmp . put_f32_le (self . zgyro) ; __tmp . put_f32_le (self . xmag) ; __tmp . put_f32_le (self . ymag) ; __tmp . put_f32_le (self . zmag) ; __tmp . put_f32_le (self . abs_pressure) ; __tmp . put_f32_le (self . diff_pressure) ; __tmp . put_f32_le (self . pressure_alt) ; __tmp . put_f32_le (self . temperature) ; __tmp . put_u32_le (self . fields_updated . bits ()) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct OPEN_DRONE_ID_ARM_STATUS_DATA { pub status : MavOdidArmStatus , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub error : [u8 ; 50] , } impl OPEN_DRONE_ID_ARM_STATUS_DATA { pub const ENCODED_LEN : usize = 51usize ; pub const DEFAULT : Self = Self { status : MavOdidArmStatus :: DEFAULT , error : [0_u8 ; 50usize] , } ; } impl Default for OPEN_DRONE_ID_ARM_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for OPEN_DRONE_ID_ARM_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 12918u32 ; const NAME : & 'static str = "OPEN_DRONE_ID_ARM_STATUS" ; const EXTRA_CRC : u8 = 139u8 ; const ENCODED_LEN : usize = 51usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u8 () ; __struct . status = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidArmStatus" , value : tmp as u32 }) ? ; for v in & mut __struct . error { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . status as u8) ; for val in & self . error { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MISSION_COUNT_DATA { pub count : u16 , pub target_system : u8 , pub target_component : u8 , } impl MISSION_COUNT_DATA { pub const ENCODED_LEN : usize = 4usize ; pub const DEFAULT : Self = Self { count : 0_u16 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for MISSION_COUNT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MISSION_COUNT_DATA { type Message = MavMessage ; const ID : u32 = 44u32 ; const NAME : & 'static str = "MISSION_COUNT" ; const EXTRA_CRC : u8 = 221u8 ; const ENCODED_LEN : usize = 4usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . count = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . count) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LOG_REQUEST_END_DATA { pub target_system : u8 , pub target_component : u8 , } impl LOG_REQUEST_END_DATA { pub const ENCODED_LEN : usize = 2usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for LOG_REQUEST_END_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for LOG_REQUEST_END_DATA { type Message = MavMessage ; const ID : u32 = 122u32 ; const NAME : & 'static str = "LOG_REQUEST_END" ; const EXTRA_CRC : u8 = 203u8 ; const ENCODED_LEN : usize = 2usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct OPEN_DRONE_ID_AUTHENTICATION_DATA { pub timestamp : u32 , pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub id_or_mac : [u8 ; 20] , pub authentication_type : MavOdidAuthType , pub data_page : u8 , pub last_page_index : u8 , pub length : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub authentication_data : [u8 ; 23] , } impl OPEN_DRONE_ID_AUTHENTICATION_DATA { pub const ENCODED_LEN : usize = 53usize ; pub const DEFAULT : Self = Self { timestamp : 0_u32 , target_system : 0_u8 , target_component : 0_u8 , id_or_mac : [0_u8 ; 20usize] , authentication_type : MavOdidAuthType :: DEFAULT , data_page : 0_u8 , last_page_index : 0_u8 , length : 0_u8 , authentication_data : [0_u8 ; 23usize] , } ; } impl Default for OPEN_DRONE_ID_AUTHENTICATION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for OPEN_DRONE_ID_AUTHENTICATION_DATA { type Message = MavMessage ; const ID : u32 = 12902u32 ; const NAME : & 'static str = "OPEN_DRONE_ID_AUTHENTICATION" ; const EXTRA_CRC : u8 = 140u8 ; const ENCODED_LEN : usize = 53usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . timestamp = buf . get_u32_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . id_or_mac { let val = buf . get_u8 () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . authentication_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidAuthType" , value : tmp as u32 }) ? ; __struct . data_page = buf . get_u8 () ; __struct . last_page_index = buf . get_u8 () ; __struct . length = buf . get_u8 () ; for v in & mut __struct . authentication_data { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . timestamp) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . id_or_mac { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . authentication_type as u8) ; __tmp . put_u8 (self . data_page) ; __tmp . put_u8 (self . last_page_index) ; __tmp . put_u8 (self . length) ; for val in & self . authentication_data { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct OBSTACLE_DISTANCE_DATA { pub time_usec : u64 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub distances : [u16 ; 72] , pub min_distance : u16 , pub max_distance : u16 , pub sensor_type : MavDistanceSensor , pub increment : u8 , } impl OBSTACLE_DISTANCE_DATA { pub const ENCODED_LEN : usize = 158usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , distances : [0_u16 ; 72usize] , min_distance : 0_u16 , max_distance : 0_u16 , sensor_type : MavDistanceSensor :: DEFAULT , increment : 0_u8 , } ; } impl Default for OBSTACLE_DISTANCE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for OBSTACLE_DISTANCE_DATA { type Message = MavMessage ; const ID : u32 = 330u32 ; const NAME : & 'static str = "OBSTACLE_DISTANCE" ; const EXTRA_CRC : u8 = 23u8 ; const ENCODED_LEN : usize = 158usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; for v in & mut __struct . distances { let val = buf . get_u16_le () ; * v = val ; } __struct . min_distance = buf . get_u16_le () ; __struct . max_distance = buf . get_u16_le () ; let tmp = buf . get_u8 () ; __struct . sensor_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavDistanceSensor" , value : tmp as u32 }) ? ; __struct . increment = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; for val in & self . distances { __tmp . put_u16_le (* val) ; } __tmp . put_u16_le (self . min_distance) ; __tmp . put_u16_le (self . max_distance) ; __tmp . put_u8 (self . sensor_type as u8) ; __tmp . put_u8 (self . increment) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SET_MODE_DATA { pub custom_mode : u32 , pub target_system : u8 , pub base_mode : MavMode , } impl SET_MODE_DATA { pub const ENCODED_LEN : usize = 6usize ; pub const DEFAULT : Self = Self { custom_mode : 0_u32 , target_system : 0_u8 , base_mode : MavMode :: DEFAULT , } ; } impl Default for SET_MODE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SET_MODE_DATA { type Message = MavMessage ; const ID : u32 = 11u32 ; const NAME : & 'static str = "SET_MODE" ; const EXTRA_CRC : u8 = 89u8 ; const ENCODED_LEN : usize = 6usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . custom_mode = buf . get_u32_le () ; __struct . target_system = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . base_mode = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavMode" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . custom_mode) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . base_mode as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct VFR_HUD_DATA { pub airspeed : f32 , pub groundspeed : f32 , pub alt : f32 , pub climb : f32 , pub heading : i16 , pub throttle : u16 , } impl VFR_HUD_DATA { pub const ENCODED_LEN : usize = 20usize ; pub const DEFAULT : Self = Self { airspeed : 0.0_f32 , groundspeed : 0.0_f32 , alt : 0.0_f32 , climb : 0.0_f32 , heading : 0_i16 , throttle : 0_u16 , } ; } impl Default for VFR_HUD_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for VFR_HUD_DATA { type Message = MavMessage ; const ID : u32 = 74u32 ; const NAME : & 'static str = "VFR_HUD" ; const EXTRA_CRC : u8 = 20u8 ; const ENCODED_LEN : usize = 20usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . airspeed = buf . get_f32_le () ; __struct . groundspeed = buf . get_f32_le () ; __struct . alt = buf . get_f32_le () ; __struct . climb = buf . get_f32_le () ; __struct . heading = buf . get_i16_le () ; __struct . throttle = buf . get_u16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . airspeed) ; __tmp . put_f32_le (self . groundspeed) ; __tmp . put_f32_le (self . alt) ; __tmp . put_f32_le (self . climb) ; __tmp . put_i16_le (self . heading) ; __tmp . put_u16_le (self . throttle) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct OPTICAL_FLOW_RAD_DATA { pub time_usec : u64 , pub integration_time_us : u32 , pub integrated_x : f32 , pub integrated_y : f32 , pub integrated_xgyro : f32 , pub integrated_ygyro : f32 , pub integrated_zgyro : f32 , pub time_delta_distance_us : u32 , pub distance : f32 , pub temperature : i16 , pub sensor_id : u8 , pub quality : u8 , } impl OPTICAL_FLOW_RAD_DATA { pub const ENCODED_LEN : usize = 44usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , integration_time_us : 0_u32 , integrated_x : 0.0_f32 , integrated_y : 0.0_f32 , integrated_xgyro : 0.0_f32 , integrated_ygyro : 0.0_f32 , integrated_zgyro : 0.0_f32 , time_delta_distance_us : 0_u32 , distance : 0.0_f32 , temperature : 0_i16 , sensor_id : 0_u8 , quality : 0_u8 , } ; } impl Default for OPTICAL_FLOW_RAD_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for OPTICAL_FLOW_RAD_DATA { type Message = MavMessage ; const ID : u32 = 106u32 ; const NAME : & 'static str = "OPTICAL_FLOW_RAD" ; const EXTRA_CRC : u8 = 138u8 ; const ENCODED_LEN : usize = 44usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . integration_time_us = buf . get_u32_le () ; __struct . integrated_x = buf . get_f32_le () ; __struct . integrated_y = buf . get_f32_le () ; __struct . integrated_xgyro = buf . get_f32_le () ; __struct . integrated_ygyro = buf . get_f32_le () ; __struct . integrated_zgyro = buf . get_f32_le () ; __struct . time_delta_distance_us = buf . get_u32_le () ; __struct . distance = buf . get_f32_le () ; __struct . temperature = buf . get_i16_le () ; __struct . sensor_id = buf . get_u8 () ; __struct . quality = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_u32_le (self . integration_time_us) ; __tmp . put_f32_le (self . integrated_x) ; __tmp . put_f32_le (self . integrated_y) ; __tmp . put_f32_le (self . integrated_xgyro) ; __tmp . put_f32_le (self . integrated_ygyro) ; __tmp . put_f32_le (self . integrated_zgyro) ; __tmp . put_u32_le (self . time_delta_distance_us) ; __tmp . put_f32_le (self . distance) ; __tmp . put_i16_le (self . temperature) ; __tmp . put_u8 (self . sensor_id) ; __tmp . put_u8 (self . quality) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Clone , PartialEq , Debug)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavMessage { RAW_PRESSURE (RAW_PRESSURE_DATA) , AUTOPILOT_STATE_FOR_GIMBAL_DEVICE (AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA) , LOG_ERASE (LOG_ERASE_DATA) , CAMERA_INFORMATION (CAMERA_INFORMATION_DATA) , RESOURCE_REQUEST (RESOURCE_REQUEST_DATA) , PARAM_EXT_REQUEST_READ (PARAM_EXT_REQUEST_READ_DATA) , LOCAL_POSITION_NED (LOCAL_POSITION_NED_DATA) , MANUAL_SETPOINT (MANUAL_SETPOINT_DATA) , LOCAL_POSITION_NED_COV (LOCAL_POSITION_NED_COV_DATA) , HIL_RC_INPUTS_RAW (HIL_RC_INPUTS_RAW_DATA) , ESTIMATOR_STATUS (ESTIMATOR_STATUS_DATA) , SAFETY_ALLOWED_AREA (SAFETY_ALLOWED_AREA_DATA) , CAMERA_TRIGGER (CAMERA_TRIGGER_DATA) , SCALED_IMU2 (SCALED_IMU2_DATA) , FENCE_STATUS (FENCE_STATUS_DATA) , AUTOPILOT_VERSION (AUTOPILOT_VERSION_DATA) , ESC_STATUS (ESC_STATUS_DATA) , TRAJECTORY_REPRESENTATION_BEZIER (TRAJECTORY_REPRESENTATION_BEZIER_DATA) , ALTITUDE (ALTITUDE_DATA) , HIGH_LATENCY (HIGH_LATENCY_DATA) , SCALED_PRESSURE2 (SCALED_PRESSURE2_DATA) , GIMBAL_DEVICE_SET_ATTITUDE (GIMBAL_DEVICE_SET_ATTITUDE_DATA) , VISION_SPEED_ESTIMATE (VISION_SPEED_ESTIMATE_DATA) , FILE_TRANSFER_PROTOCOL (FILE_TRANSFER_PROTOCOL_DATA) , MISSION_REQUEST (MISSION_REQUEST_DATA) , RESPONSE_EVENT_ERROR (RESPONSE_EVENT_ERROR_DATA) , NAV_CONTROLLER_OUTPUT (NAV_CONTROLLER_OUTPUT_DATA) , SYS_STATUS (SYS_STATUS_DATA) , LOG_DATA (LOG_DATA_DATA) , CHANGE_OPERATOR_CONTROL (CHANGE_OPERATOR_CONTROL_DATA) , COMMAND_ACK (COMMAND_ACK_DATA) , HIL_OPTICAL_FLOW (HIL_OPTICAL_FLOW_DATA) , ORBIT_EXECUTION_STATUS (ORBIT_EXECUTION_STATUS_DATA) , DEBUG_VECT (DEBUG_VECT_DATA) , TRAJECTORY_REPRESENTATION_WAYPOINTS (TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA) , SMART_BATTERY_INFO (SMART_BATTERY_INFO_DATA) , PARAM_MAP_RC (PARAM_MAP_RC_DATA) , MISSION_ITEM_INT (MISSION_ITEM_INT_DATA) , WIND_COV (WIND_COV_DATA) , MANUAL_CONTROL (MANUAL_CONTROL_DATA) , LOG_REQUEST_LIST (LOG_REQUEST_LIST_DATA) , GLOBAL_VISION_POSITION_ESTIMATE (GLOBAL_VISION_POSITION_ESTIMATE_DATA) , TIME_ESTIMATE_TO_TARGET (TIME_ESTIMATE_TO_TARGET_DATA) , COMMAND_LONG (COMMAND_LONG_DATA) , GIMBAL_MANAGER_SET_ATTITUDE (GIMBAL_MANAGER_SET_ATTITUDE_DATA) , GIMBAL_MANAGER_SET_MANUAL_CONTROL (GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA) , OPEN_DRONE_ID_LOCATION (OPEN_DRONE_ID_LOCATION_DATA) , HIL_CONTROLS (HIL_CONTROLS_DATA) , MISSION_SET_CURRENT (MISSION_SET_CURRENT_DATA) , SET_POSITION_TARGET_LOCAL_NED (SET_POSITION_TARGET_LOCAL_NED_DATA) , HIL_STATE_QUATERNION (HIL_STATE_QUATERNION_DATA) , SETUP_SIGNING (SETUP_SIGNING_DATA) , DISTANCE_SENSOR (DISTANCE_SENSOR_DATA) , MISSION_CURRENT (MISSION_CURRENT_DATA) , SET_HOME_POSITION (SET_HOME_POSITION_DATA) , COMMAND_CANCEL (COMMAND_CANCEL_DATA) , GPS_INJECT_DATA (GPS_INJECT_DATA_DATA) , GPS_INPUT (GPS_INPUT_DATA) , UAVCAN_NODE_STATUS (UAVCAN_NODE_STATUS_DATA) , CELLULAR_CONFIG (CELLULAR_CONFIG_DATA) , GENERATOR_STATUS (GENERATOR_STATUS_DATA) , CAN_FRAME (CAN_FRAME_DATA) , OPEN_DRONE_ID_MESSAGE_PACK (OPEN_DRONE_ID_MESSAGE_PACK_DATA) , MISSION_ITEM_REACHED (MISSION_ITEM_REACHED_DATA) , SET_ATTITUDE_TARGET (SET_ATTITUDE_TARGET_DATA) , GPS_GLOBAL_ORIGIN (GPS_GLOBAL_ORIGIN_DATA) , SET_ACTUATOR_CONTROL_TARGET (SET_ACTUATOR_CONTROL_TARGET_DATA) , CAMERA_FOV_STATUS (CAMERA_FOV_STATUS_DATA) , SET_POSITION_TARGET_GLOBAL_INT (SET_POSITION_TARGET_GLOBAL_INT_DATA) , MISSION_ITEM (MISSION_ITEM_DATA) , CURRENT_EVENT_SEQUENCE (CURRENT_EVENT_SEQUENCE_DATA) , MISSION_ACK (MISSION_ACK_DATA) , PARAM_EXT_REQUEST_LIST (PARAM_EXT_REQUEST_LIST_DATA) , RC_CHANNELS_OVERRIDE (RC_CHANNELS_OVERRIDE_DATA) , AUTH_KEY (AUTH_KEY_DATA) , ISBD_LINK_STATUS (ISBD_LINK_STATUS_DATA) , COMMAND_INT (COMMAND_INT_DATA) , LOG_ENTRY (LOG_ENTRY_DATA) , GPS2_RAW (GPS2_RAW_DATA) , GPS2_RTK (GPS2_RTK_DATA) , COLLISION (COLLISION_DATA) , ONBOARD_COMPUTER_STATUS (ONBOARD_COMPUTER_STATUS_DATA) , DEBUG (DEBUG_DATA) , MEMORY_VECT (MEMORY_VECT_DATA) , GIMBAL_DEVICE_INFORMATION (GIMBAL_DEVICE_INFORMATION_DATA) , EXTENDED_SYS_STATE (EXTENDED_SYS_STATE_DATA) , SUPPORTED_TUNES (SUPPORTED_TUNES_DATA) , CAMERA_SETTINGS (CAMERA_SETTINGS_DATA) , LOGGING_DATA_ACKED (LOGGING_DATA_ACKED_DATA) , LINK_NODE_STATUS (LINK_NODE_STATUS_DATA) , AIS_VESSEL (AIS_VESSEL_DATA) , DEBUG_FLOAT_ARRAY (DEBUG_FLOAT_ARRAY_DATA) , PARAM_EXT_ACK (PARAM_EXT_ACK_DATA) , MISSION_WRITE_PARTIAL_LIST (MISSION_WRITE_PARTIAL_LIST_DATA) , BATTERY_STATUS (BATTERY_STATUS_DATA) , LANDING_TARGET (LANDING_TARGET_DATA) , CAMERA_TRACKING_GEO_STATUS (CAMERA_TRACKING_GEO_STATUS_DATA) , REQUEST_EVENT (REQUEST_EVENT_DATA) , SAFETY_SET_ALLOWED_AREA (SAFETY_SET_ALLOWED_AREA_DATA) , EFI_STATUS (EFI_STATUS_DATA) , STATUSTEXT (STATUSTEXT_DATA) , OPEN_DRONE_ID_SELF_ID (OPEN_DRONE_ID_SELF_ID_DATA) , LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET (LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA) , GPS_RTCM_DATA (GPS_RTCM_DATA_DATA) , SET_GPS_GLOBAL_ORIGIN (SET_GPS_GLOBAL_ORIGIN_DATA) , ACTUATOR_CONTROL_TARGET (ACTUATOR_CONTROL_TARGET_DATA) , BUTTON_CHANGE (BUTTON_CHANGE_DATA) , MISSION_REQUEST_PARTIAL_LIST (MISSION_REQUEST_PARTIAL_LIST_DATA) , UTM_GLOBAL_POSITION (UTM_GLOBAL_POSITION_DATA) , HOME_POSITION (HOME_POSITION_DATA) , UAVCAN_NODE_INFO (UAVCAN_NODE_INFO_DATA) , PLAY_TUNE_V2 (PLAY_TUNE_V2_DATA) , MISSION_REQUEST_LIST (MISSION_REQUEST_LIST_DATA) , MISSION_REQUEST_INT (MISSION_REQUEST_INT_DATA) , DATA_STREAM (DATA_STREAM_DATA) , VIDEO_STREAM_INFORMATION (VIDEO_STREAM_INFORMATION_DATA) , CANFD_FRAME (CANFD_FRAME_DATA) , HYGROMETER_SENSOR (HYGROMETER_SENSOR_DATA) , POSITION_TARGET_GLOBAL_INT (POSITION_TARGET_GLOBAL_INT_DATA) , HIGH_LATENCY2 (HIGH_LATENCY2_DATA) , GLOBAL_POSITION_INT_COV (GLOBAL_POSITION_INT_COV_DATA) , NAMED_VALUE_INT (NAMED_VALUE_INT_DATA) , CHANGE_OPERATOR_CONTROL_ACK (CHANGE_OPERATOR_CONTROL_ACK_DATA) , GIMBAL_MANAGER_INFORMATION (GIMBAL_MANAGER_INFORMATION_DATA) , COMPONENT_METADATA (COMPONENT_METADATA_DATA) , LOGGING_ACK (LOGGING_ACK_DATA) , RC_CHANNELS_RAW (RC_CHANNELS_RAW_DATA) , POSITION_TARGET_LOCAL_NED (POSITION_TARGET_LOCAL_NED_DATA) , PARAM_EXT_SET (PARAM_EXT_SET_DATA) , HEARTBEAT (HEARTBEAT_DATA) , WIFI_CONFIG_AP (WIFI_CONFIG_AP_DATA) , SCALED_IMU3 (SCALED_IMU3_DATA) , PARAM_EXT_VALUE (PARAM_EXT_VALUE_DATA) , WINCH_STATUS (WINCH_STATUS_DATA) , PARAM_REQUEST_READ (PARAM_REQUEST_READ_DATA) , HIGHRES_IMU (HIGHRES_IMU_DATA) , HIL_GPS (HIL_GPS_DATA) , TERRAIN_REQUEST (TERRAIN_REQUEST_DATA) , ATTITUDE (ATTITUDE_DATA) , SYSTEM_TIME (SYSTEM_TIME_DATA) , ATTITUDE_TARGET (ATTITUDE_TARGET_DATA) , DATA_TRANSMISSION_HANDSHAKE (DATA_TRANSMISSION_HANDSHAKE_DATA) , MESSAGE_INTERVAL (MESSAGE_INTERVAL_DATA) , TUNNEL (TUNNEL_DATA) , RAW_IMU (RAW_IMU_DATA) , OPEN_DRONE_ID_BASIC_ID (OPEN_DRONE_ID_BASIC_ID_DATA) , SCALED_PRESSURE (SCALED_PRESSURE_DATA) , GIMBAL_DEVICE_ATTITUDE_STATUS (GIMBAL_DEVICE_ATTITUDE_STATUS_DATA) , CAN_FILTER_MODIFY (CAN_FILTER_MODIFY_DATA) , HIL_ACTUATOR_CONTROLS (HIL_ACTUATOR_CONTROLS_DATA) , REQUEST_DATA_STREAM (REQUEST_DATA_STREAM_DATA) , NAMED_VALUE_FLOAT (NAMED_VALUE_FLOAT_DATA) , ATT_POS_MOCAP (ATT_POS_MOCAP_DATA) , PLAY_TUNE (PLAY_TUNE_DATA) , GPS_STATUS (GPS_STATUS_DATA) , SIM_STATE (SIM_STATE_DATA) , POWER_STATUS (POWER_STATUS_DATA) , SCALED_PRESSURE3 (SCALED_PRESSURE3_DATA) , FOLLOW_TARGET (FOLLOW_TARGET_DATA) , MAG_CAL_REPORT (MAG_CAL_REPORT_DATA) , OPTICAL_FLOW (OPTICAL_FLOW_DATA) , PROTOCOL_VERSION (PROTOCOL_VERSION_DATA) , SERIAL_CONTROL (SERIAL_CONTROL_DATA) , VIDEO_STREAM_STATUS (VIDEO_STREAM_STATUS_DATA) , ODOMETRY (ODOMETRY_DATA) , CELLULAR_STATUS (CELLULAR_STATUS_DATA) , OPEN_DRONE_ID_SYSTEM_UPDATE (OPEN_DRONE_ID_SYSTEM_UPDATE_DATA) , PARAM_REQUEST_LIST (PARAM_REQUEST_LIST_DATA) , GIMBAL_MANAGER_SET_PITCHYAW (GIMBAL_MANAGER_SET_PITCHYAW_DATA) , SERVO_OUTPUT_RAW (SERVO_OUTPUT_RAW_DATA) , TIMESYNC (TIMESYNC_DATA) , RC_CHANNELS (RC_CHANNELS_DATA) , GLOBAL_POSITION_INT (GLOBAL_POSITION_INT_DATA) , ATTITUDE_QUATERNION_COV (ATTITUDE_QUATERNION_COV_DATA) , RADIO_STATUS (RADIO_STATUS_DATA) , ADSB_VEHICLE (ADSB_VEHICLE_DATA) , CONTROL_SYSTEM_STATE (CONTROL_SYSTEM_STATE_DATA) , SCALED_IMU (SCALED_IMU_DATA) , MISSION_CLEAR_ALL (MISSION_CLEAR_ALL_DATA) , VICON_POSITION_ESTIMATE (VICON_POSITION_ESTIMATE_DATA) , TERRAIN_DATA (TERRAIN_DATA_DATA) , ATTITUDE_QUATERNION (ATTITUDE_QUATERNION_DATA) , CAMERA_IMAGE_CAPTURED (CAMERA_IMAGE_CAPTURED_DATA) , VISION_POSITION_ESTIMATE (VISION_POSITION_ESTIMATE_DATA) , LOG_REQUEST_DATA (LOG_REQUEST_DATA_DATA) , PING (PING_DATA) , VIBRATION (VIBRATION_DATA) , FLIGHT_INFORMATION (FLIGHT_INFORMATION_DATA) , GPS_RAW_INT (GPS_RAW_INT_DATA) , MOUNT_ORIENTATION (MOUNT_ORIENTATION_DATA) , LOGGING_DATA (LOGGING_DATA_DATA) , PARAM_SET (PARAM_SET_DATA) , GIMBAL_MANAGER_STATUS (GIMBAL_MANAGER_STATUS_DATA) , RAW_RPM (RAW_RPM_DATA) , TERRAIN_CHECK (TERRAIN_CHECK_DATA) , ACTUATOR_OUTPUT_STATUS (ACTUATOR_OUTPUT_STATUS_DATA) , V2_EXTENSION (V2_EXTENSION_DATA) , COMPONENT_INFORMATION (COMPONENT_INFORMATION_DATA) , HIL_STATE (HIL_STATE_DATA) , CAMERA_TRACKING_IMAGE_STATUS (CAMERA_TRACKING_IMAGE_STATUS_DATA) , RC_CHANNELS_SCALED (RC_CHANNELS_SCALED_DATA) , EVENT (EVENT_DATA) , WHEEL_DISTANCE (WHEEL_DISTANCE_DATA) , OPEN_DRONE_ID_OPERATOR_ID (OPEN_DRONE_ID_OPERATOR_ID_DATA) , OPEN_DRONE_ID_SYSTEM (OPEN_DRONE_ID_SYSTEM_DATA) , STORAGE_INFORMATION (STORAGE_INFORMATION_DATA) , PARAM_VALUE (PARAM_VALUE_DATA) , GPS_RTK (GPS_RTK_DATA) , ESC_INFO (ESC_INFO_DATA) , TERRAIN_REPORT (TERRAIN_REPORT_DATA) , CAMERA_CAPTURE_STATUS (CAMERA_CAPTURE_STATUS_DATA) , ENCAPSULATED_DATA (ENCAPSULATED_DATA_DATA) , HIL_SENSOR (HIL_SENSOR_DATA) , OPEN_DRONE_ID_ARM_STATUS (OPEN_DRONE_ID_ARM_STATUS_DATA) , MISSION_COUNT (MISSION_COUNT_DATA) , LOG_REQUEST_END (LOG_REQUEST_END_DATA) , OPEN_DRONE_ID_AUTHENTICATION (OPEN_DRONE_ID_AUTHENTICATION_DATA) , OBSTACLE_DISTANCE (OBSTACLE_DISTANCE_DATA) , SET_MODE (SET_MODE_DATA) , VFR_HUD (VFR_HUD_DATA) , OPTICAL_FLOW_RAD (OPTICAL_FLOW_RAD_DATA) , } impl Message for MavMessage { fn parse (version : MavlinkVersion , id : u32 , payload : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { match id { RAW_PRESSURE_DATA :: ID => RAW_PRESSURE_DATA :: deser (version , payload) . map (Self :: RAW_PRESSURE) , AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: ID => AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: deser (version , payload) . map (Self :: AUTOPILOT_STATE_FOR_GIMBAL_DEVICE) , LOG_ERASE_DATA :: ID => LOG_ERASE_DATA :: deser (version , payload) . map (Self :: LOG_ERASE) , CAMERA_INFORMATION_DATA :: ID => CAMERA_INFORMATION_DATA :: deser (version , payload) . map (Self :: CAMERA_INFORMATION) , RESOURCE_REQUEST_DATA :: ID => RESOURCE_REQUEST_DATA :: deser (version , payload) . map (Self :: RESOURCE_REQUEST) , PARAM_EXT_REQUEST_READ_DATA :: ID => PARAM_EXT_REQUEST_READ_DATA :: deser (version , payload) . map (Self :: PARAM_EXT_REQUEST_READ) , LOCAL_POSITION_NED_DATA :: ID => LOCAL_POSITION_NED_DATA :: deser (version , payload) . map (Self :: LOCAL_POSITION_NED) , MANUAL_SETPOINT_DATA :: ID => MANUAL_SETPOINT_DATA :: deser (version , payload) . map (Self :: MANUAL_SETPOINT) , LOCAL_POSITION_NED_COV_DATA :: ID => LOCAL_POSITION_NED_COV_DATA :: deser (version , payload) . map (Self :: LOCAL_POSITION_NED_COV) , HIL_RC_INPUTS_RAW_DATA :: ID => HIL_RC_INPUTS_RAW_DATA :: deser (version , payload) . map (Self :: HIL_RC_INPUTS_RAW) , ESTIMATOR_STATUS_DATA :: ID => ESTIMATOR_STATUS_DATA :: deser (version , payload) . map (Self :: ESTIMATOR_STATUS) , SAFETY_ALLOWED_AREA_DATA :: ID => SAFETY_ALLOWED_AREA_DATA :: deser (version , payload) . map (Self :: SAFETY_ALLOWED_AREA) , CAMERA_TRIGGER_DATA :: ID => CAMERA_TRIGGER_DATA :: deser (version , payload) . map (Self :: CAMERA_TRIGGER) , SCALED_IMU2_DATA :: ID => SCALED_IMU2_DATA :: deser (version , payload) . map (Self :: SCALED_IMU2) , FENCE_STATUS_DATA :: ID => FENCE_STATUS_DATA :: deser (version , payload) . map (Self :: FENCE_STATUS) , AUTOPILOT_VERSION_DATA :: ID => AUTOPILOT_VERSION_DATA :: deser (version , payload) . map (Self :: AUTOPILOT_VERSION) , ESC_STATUS_DATA :: ID => ESC_STATUS_DATA :: deser (version , payload) . map (Self :: ESC_STATUS) , TRAJECTORY_REPRESENTATION_BEZIER_DATA :: ID => TRAJECTORY_REPRESENTATION_BEZIER_DATA :: deser (version , payload) . map (Self :: TRAJECTORY_REPRESENTATION_BEZIER) , ALTITUDE_DATA :: ID => ALTITUDE_DATA :: deser (version , payload) . map (Self :: ALTITUDE) , HIGH_LATENCY_DATA :: ID => HIGH_LATENCY_DATA :: deser (version , payload) . map (Self :: HIGH_LATENCY) , SCALED_PRESSURE2_DATA :: ID => SCALED_PRESSURE2_DATA :: deser (version , payload) . map (Self :: SCALED_PRESSURE2) , GIMBAL_DEVICE_SET_ATTITUDE_DATA :: ID => GIMBAL_DEVICE_SET_ATTITUDE_DATA :: deser (version , payload) . map (Self :: GIMBAL_DEVICE_SET_ATTITUDE) , VISION_SPEED_ESTIMATE_DATA :: ID => VISION_SPEED_ESTIMATE_DATA :: deser (version , payload) . map (Self :: VISION_SPEED_ESTIMATE) , FILE_TRANSFER_PROTOCOL_DATA :: ID => FILE_TRANSFER_PROTOCOL_DATA :: deser (version , payload) . map (Self :: FILE_TRANSFER_PROTOCOL) , MISSION_REQUEST_DATA :: ID => MISSION_REQUEST_DATA :: deser (version , payload) . map (Self :: MISSION_REQUEST) , RESPONSE_EVENT_ERROR_DATA :: ID => RESPONSE_EVENT_ERROR_DATA :: deser (version , payload) . map (Self :: RESPONSE_EVENT_ERROR) , NAV_CONTROLLER_OUTPUT_DATA :: ID => NAV_CONTROLLER_OUTPUT_DATA :: deser (version , payload) . map (Self :: NAV_CONTROLLER_OUTPUT) , SYS_STATUS_DATA :: ID => SYS_STATUS_DATA :: deser (version , payload) . map (Self :: SYS_STATUS) , LOG_DATA_DATA :: ID => LOG_DATA_DATA :: deser (version , payload) . map (Self :: LOG_DATA) , CHANGE_OPERATOR_CONTROL_DATA :: ID => CHANGE_OPERATOR_CONTROL_DATA :: deser (version , payload) . map (Self :: CHANGE_OPERATOR_CONTROL) , COMMAND_ACK_DATA :: ID => COMMAND_ACK_DATA :: deser (version , payload) . map (Self :: COMMAND_ACK) , HIL_OPTICAL_FLOW_DATA :: ID => HIL_OPTICAL_FLOW_DATA :: deser (version , payload) . map (Self :: HIL_OPTICAL_FLOW) , ORBIT_EXECUTION_STATUS_DATA :: ID => ORBIT_EXECUTION_STATUS_DATA :: deser (version , payload) . map (Self :: ORBIT_EXECUTION_STATUS) , DEBUG_VECT_DATA :: ID => DEBUG_VECT_DATA :: deser (version , payload) . map (Self :: DEBUG_VECT) , TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: ID => TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: deser (version , payload) . map (Self :: TRAJECTORY_REPRESENTATION_WAYPOINTS) , SMART_BATTERY_INFO_DATA :: ID => SMART_BATTERY_INFO_DATA :: deser (version , payload) . map (Self :: SMART_BATTERY_INFO) , PARAM_MAP_RC_DATA :: ID => PARAM_MAP_RC_DATA :: deser (version , payload) . map (Self :: PARAM_MAP_RC) , MISSION_ITEM_INT_DATA :: ID => MISSION_ITEM_INT_DATA :: deser (version , payload) . map (Self :: MISSION_ITEM_INT) , WIND_COV_DATA :: ID => WIND_COV_DATA :: deser (version , payload) . map (Self :: WIND_COV) , MANUAL_CONTROL_DATA :: ID => MANUAL_CONTROL_DATA :: deser (version , payload) . map (Self :: MANUAL_CONTROL) , LOG_REQUEST_LIST_DATA :: ID => LOG_REQUEST_LIST_DATA :: deser (version , payload) . map (Self :: LOG_REQUEST_LIST) , GLOBAL_VISION_POSITION_ESTIMATE_DATA :: ID => GLOBAL_VISION_POSITION_ESTIMATE_DATA :: deser (version , payload) . map (Self :: GLOBAL_VISION_POSITION_ESTIMATE) , TIME_ESTIMATE_TO_TARGET_DATA :: ID => TIME_ESTIMATE_TO_TARGET_DATA :: deser (version , payload) . map (Self :: TIME_ESTIMATE_TO_TARGET) , COMMAND_LONG_DATA :: ID => COMMAND_LONG_DATA :: deser (version , payload) . map (Self :: COMMAND_LONG) , GIMBAL_MANAGER_SET_ATTITUDE_DATA :: ID => GIMBAL_MANAGER_SET_ATTITUDE_DATA :: deser (version , payload) . map (Self :: GIMBAL_MANAGER_SET_ATTITUDE) , GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: ID => GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: deser (version , payload) . map (Self :: GIMBAL_MANAGER_SET_MANUAL_CONTROL) , OPEN_DRONE_ID_LOCATION_DATA :: ID => OPEN_DRONE_ID_LOCATION_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_LOCATION) , HIL_CONTROLS_DATA :: ID => HIL_CONTROLS_DATA :: deser (version , payload) . map (Self :: HIL_CONTROLS) , MISSION_SET_CURRENT_DATA :: ID => MISSION_SET_CURRENT_DATA :: deser (version , payload) . map (Self :: MISSION_SET_CURRENT) , SET_POSITION_TARGET_LOCAL_NED_DATA :: ID => SET_POSITION_TARGET_LOCAL_NED_DATA :: deser (version , payload) . map (Self :: SET_POSITION_TARGET_LOCAL_NED) , HIL_STATE_QUATERNION_DATA :: ID => HIL_STATE_QUATERNION_DATA :: deser (version , payload) . map (Self :: HIL_STATE_QUATERNION) , SETUP_SIGNING_DATA :: ID => SETUP_SIGNING_DATA :: deser (version , payload) . map (Self :: SETUP_SIGNING) , DISTANCE_SENSOR_DATA :: ID => DISTANCE_SENSOR_DATA :: deser (version , payload) . map (Self :: DISTANCE_SENSOR) , MISSION_CURRENT_DATA :: ID => MISSION_CURRENT_DATA :: deser (version , payload) . map (Self :: MISSION_CURRENT) , SET_HOME_POSITION_DATA :: ID => SET_HOME_POSITION_DATA :: deser (version , payload) . map (Self :: SET_HOME_POSITION) , COMMAND_CANCEL_DATA :: ID => COMMAND_CANCEL_DATA :: deser (version , payload) . map (Self :: COMMAND_CANCEL) , GPS_INJECT_DATA_DATA :: ID => GPS_INJECT_DATA_DATA :: deser (version , payload) . map (Self :: GPS_INJECT_DATA) , GPS_INPUT_DATA :: ID => GPS_INPUT_DATA :: deser (version , payload) . map (Self :: GPS_INPUT) , UAVCAN_NODE_STATUS_DATA :: ID => UAVCAN_NODE_STATUS_DATA :: deser (version , payload) . map (Self :: UAVCAN_NODE_STATUS) , CELLULAR_CONFIG_DATA :: ID => CELLULAR_CONFIG_DATA :: deser (version , payload) . map (Self :: CELLULAR_CONFIG) , GENERATOR_STATUS_DATA :: ID => GENERATOR_STATUS_DATA :: deser (version , payload) . map (Self :: GENERATOR_STATUS) , CAN_FRAME_DATA :: ID => CAN_FRAME_DATA :: deser (version , payload) . map (Self :: CAN_FRAME) , OPEN_DRONE_ID_MESSAGE_PACK_DATA :: ID => OPEN_DRONE_ID_MESSAGE_PACK_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_MESSAGE_PACK) , MISSION_ITEM_REACHED_DATA :: ID => MISSION_ITEM_REACHED_DATA :: deser (version , payload) . map (Self :: MISSION_ITEM_REACHED) , SET_ATTITUDE_TARGET_DATA :: ID => SET_ATTITUDE_TARGET_DATA :: deser (version , payload) . map (Self :: SET_ATTITUDE_TARGET) , GPS_GLOBAL_ORIGIN_DATA :: ID => GPS_GLOBAL_ORIGIN_DATA :: deser (version , payload) . map (Self :: GPS_GLOBAL_ORIGIN) , SET_ACTUATOR_CONTROL_TARGET_DATA :: ID => SET_ACTUATOR_CONTROL_TARGET_DATA :: deser (version , payload) . map (Self :: SET_ACTUATOR_CONTROL_TARGET) , CAMERA_FOV_STATUS_DATA :: ID => CAMERA_FOV_STATUS_DATA :: deser (version , payload) . map (Self :: CAMERA_FOV_STATUS) , SET_POSITION_TARGET_GLOBAL_INT_DATA :: ID => SET_POSITION_TARGET_GLOBAL_INT_DATA :: deser (version , payload) . map (Self :: SET_POSITION_TARGET_GLOBAL_INT) , MISSION_ITEM_DATA :: ID => MISSION_ITEM_DATA :: deser (version , payload) . map (Self :: MISSION_ITEM) , CURRENT_EVENT_SEQUENCE_DATA :: ID => CURRENT_EVENT_SEQUENCE_DATA :: deser (version , payload) . map (Self :: CURRENT_EVENT_SEQUENCE) , MISSION_ACK_DATA :: ID => MISSION_ACK_DATA :: deser (version , payload) . map (Self :: MISSION_ACK) , PARAM_EXT_REQUEST_LIST_DATA :: ID => PARAM_EXT_REQUEST_LIST_DATA :: deser (version , payload) . map (Self :: PARAM_EXT_REQUEST_LIST) , RC_CHANNELS_OVERRIDE_DATA :: ID => RC_CHANNELS_OVERRIDE_DATA :: deser (version , payload) . map (Self :: RC_CHANNELS_OVERRIDE) , AUTH_KEY_DATA :: ID => AUTH_KEY_DATA :: deser (version , payload) . map (Self :: AUTH_KEY) , ISBD_LINK_STATUS_DATA :: ID => ISBD_LINK_STATUS_DATA :: deser (version , payload) . map (Self :: ISBD_LINK_STATUS) , COMMAND_INT_DATA :: ID => COMMAND_INT_DATA :: deser (version , payload) . map (Self :: COMMAND_INT) , LOG_ENTRY_DATA :: ID => LOG_ENTRY_DATA :: deser (version , payload) . map (Self :: LOG_ENTRY) , GPS2_RAW_DATA :: ID => GPS2_RAW_DATA :: deser (version , payload) . map (Self :: GPS2_RAW) , GPS2_RTK_DATA :: ID => GPS2_RTK_DATA :: deser (version , payload) . map (Self :: GPS2_RTK) , COLLISION_DATA :: ID => COLLISION_DATA :: deser (version , payload) . map (Self :: COLLISION) , ONBOARD_COMPUTER_STATUS_DATA :: ID => ONBOARD_COMPUTER_STATUS_DATA :: deser (version , payload) . map (Self :: ONBOARD_COMPUTER_STATUS) , DEBUG_DATA :: ID => DEBUG_DATA :: deser (version , payload) . map (Self :: DEBUG) , MEMORY_VECT_DATA :: ID => MEMORY_VECT_DATA :: deser (version , payload) . map (Self :: MEMORY_VECT) , GIMBAL_DEVICE_INFORMATION_DATA :: ID => GIMBAL_DEVICE_INFORMATION_DATA :: deser (version , payload) . map (Self :: GIMBAL_DEVICE_INFORMATION) , EXTENDED_SYS_STATE_DATA :: ID => EXTENDED_SYS_STATE_DATA :: deser (version , payload) . map (Self :: EXTENDED_SYS_STATE) , SUPPORTED_TUNES_DATA :: ID => SUPPORTED_TUNES_DATA :: deser (version , payload) . map (Self :: SUPPORTED_TUNES) , CAMERA_SETTINGS_DATA :: ID => CAMERA_SETTINGS_DATA :: deser (version , payload) . map (Self :: CAMERA_SETTINGS) , LOGGING_DATA_ACKED_DATA :: ID => LOGGING_DATA_ACKED_DATA :: deser (version , payload) . map (Self :: LOGGING_DATA_ACKED) , LINK_NODE_STATUS_DATA :: ID => LINK_NODE_STATUS_DATA :: deser (version , payload) . map (Self :: LINK_NODE_STATUS) , AIS_VESSEL_DATA :: ID => AIS_VESSEL_DATA :: deser (version , payload) . map (Self :: AIS_VESSEL) , DEBUG_FLOAT_ARRAY_DATA :: ID => DEBUG_FLOAT_ARRAY_DATA :: deser (version , payload) . map (Self :: DEBUG_FLOAT_ARRAY) , PARAM_EXT_ACK_DATA :: ID => PARAM_EXT_ACK_DATA :: deser (version , payload) . map (Self :: PARAM_EXT_ACK) , MISSION_WRITE_PARTIAL_LIST_DATA :: ID => MISSION_WRITE_PARTIAL_LIST_DATA :: deser (version , payload) . map (Self :: MISSION_WRITE_PARTIAL_LIST) , BATTERY_STATUS_DATA :: ID => BATTERY_STATUS_DATA :: deser (version , payload) . map (Self :: BATTERY_STATUS) , LANDING_TARGET_DATA :: ID => LANDING_TARGET_DATA :: deser (version , payload) . map (Self :: LANDING_TARGET) , CAMERA_TRACKING_GEO_STATUS_DATA :: ID => CAMERA_TRACKING_GEO_STATUS_DATA :: deser (version , payload) . map (Self :: CAMERA_TRACKING_GEO_STATUS) , REQUEST_EVENT_DATA :: ID => REQUEST_EVENT_DATA :: deser (version , payload) . map (Self :: REQUEST_EVENT) , SAFETY_SET_ALLOWED_AREA_DATA :: ID => SAFETY_SET_ALLOWED_AREA_DATA :: deser (version , payload) . map (Self :: SAFETY_SET_ALLOWED_AREA) , EFI_STATUS_DATA :: ID => EFI_STATUS_DATA :: deser (version , payload) . map (Self :: EFI_STATUS) , STATUSTEXT_DATA :: ID => STATUSTEXT_DATA :: deser (version , payload) . map (Self :: STATUSTEXT) , OPEN_DRONE_ID_SELF_ID_DATA :: ID => OPEN_DRONE_ID_SELF_ID_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_SELF_ID) , LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: ID => LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: deser (version , payload) . map (Self :: LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET) , GPS_RTCM_DATA_DATA :: ID => GPS_RTCM_DATA_DATA :: deser (version , payload) . map (Self :: GPS_RTCM_DATA) , SET_GPS_GLOBAL_ORIGIN_DATA :: ID => SET_GPS_GLOBAL_ORIGIN_DATA :: deser (version , payload) . map (Self :: SET_GPS_GLOBAL_ORIGIN) , ACTUATOR_CONTROL_TARGET_DATA :: ID => ACTUATOR_CONTROL_TARGET_DATA :: deser (version , payload) . map (Self :: ACTUATOR_CONTROL_TARGET) , BUTTON_CHANGE_DATA :: ID => BUTTON_CHANGE_DATA :: deser (version , payload) . map (Self :: BUTTON_CHANGE) , MISSION_REQUEST_PARTIAL_LIST_DATA :: ID => MISSION_REQUEST_PARTIAL_LIST_DATA :: deser (version , payload) . map (Self :: MISSION_REQUEST_PARTIAL_LIST) , UTM_GLOBAL_POSITION_DATA :: ID => UTM_GLOBAL_POSITION_DATA :: deser (version , payload) . map (Self :: UTM_GLOBAL_POSITION) , HOME_POSITION_DATA :: ID => HOME_POSITION_DATA :: deser (version , payload) . map (Self :: HOME_POSITION) , UAVCAN_NODE_INFO_DATA :: ID => UAVCAN_NODE_INFO_DATA :: deser (version , payload) . map (Self :: UAVCAN_NODE_INFO) , PLAY_TUNE_V2_DATA :: ID => PLAY_TUNE_V2_DATA :: deser (version , payload) . map (Self :: PLAY_TUNE_V2) , MISSION_REQUEST_LIST_DATA :: ID => MISSION_REQUEST_LIST_DATA :: deser (version , payload) . map (Self :: MISSION_REQUEST_LIST) , MISSION_REQUEST_INT_DATA :: ID => MISSION_REQUEST_INT_DATA :: deser (version , payload) . map (Self :: MISSION_REQUEST_INT) , DATA_STREAM_DATA :: ID => DATA_STREAM_DATA :: deser (version , payload) . map (Self :: DATA_STREAM) , VIDEO_STREAM_INFORMATION_DATA :: ID => VIDEO_STREAM_INFORMATION_DATA :: deser (version , payload) . map (Self :: VIDEO_STREAM_INFORMATION) , CANFD_FRAME_DATA :: ID => CANFD_FRAME_DATA :: deser (version , payload) . map (Self :: CANFD_FRAME) , HYGROMETER_SENSOR_DATA :: ID => HYGROMETER_SENSOR_DATA :: deser (version , payload) . map (Self :: HYGROMETER_SENSOR) , POSITION_TARGET_GLOBAL_INT_DATA :: ID => POSITION_TARGET_GLOBAL_INT_DATA :: deser (version , payload) . map (Self :: POSITION_TARGET_GLOBAL_INT) , HIGH_LATENCY2_DATA :: ID => HIGH_LATENCY2_DATA :: deser (version , payload) . map (Self :: HIGH_LATENCY2) , GLOBAL_POSITION_INT_COV_DATA :: ID => GLOBAL_POSITION_INT_COV_DATA :: deser (version , payload) . map (Self :: GLOBAL_POSITION_INT_COV) , NAMED_VALUE_INT_DATA :: ID => NAMED_VALUE_INT_DATA :: deser (version , payload) . map (Self :: NAMED_VALUE_INT) , CHANGE_OPERATOR_CONTROL_ACK_DATA :: ID => CHANGE_OPERATOR_CONTROL_ACK_DATA :: deser (version , payload) . map (Self :: CHANGE_OPERATOR_CONTROL_ACK) , GIMBAL_MANAGER_INFORMATION_DATA :: ID => GIMBAL_MANAGER_INFORMATION_DATA :: deser (version , payload) . map (Self :: GIMBAL_MANAGER_INFORMATION) , COMPONENT_METADATA_DATA :: ID => COMPONENT_METADATA_DATA :: deser (version , payload) . map (Self :: COMPONENT_METADATA) , LOGGING_ACK_DATA :: ID => LOGGING_ACK_DATA :: deser (version , payload) . map (Self :: LOGGING_ACK) , RC_CHANNELS_RAW_DATA :: ID => RC_CHANNELS_RAW_DATA :: deser (version , payload) . map (Self :: RC_CHANNELS_RAW) , POSITION_TARGET_LOCAL_NED_DATA :: ID => POSITION_TARGET_LOCAL_NED_DATA :: deser (version , payload) . map (Self :: POSITION_TARGET_LOCAL_NED) , PARAM_EXT_SET_DATA :: ID => PARAM_EXT_SET_DATA :: deser (version , payload) . map (Self :: PARAM_EXT_SET) , HEARTBEAT_DATA :: ID => HEARTBEAT_DATA :: deser (version , payload) . map (Self :: HEARTBEAT) , WIFI_CONFIG_AP_DATA :: ID => WIFI_CONFIG_AP_DATA :: deser (version , payload) . map (Self :: WIFI_CONFIG_AP) , SCALED_IMU3_DATA :: ID => SCALED_IMU3_DATA :: deser (version , payload) . map (Self :: SCALED_IMU3) , PARAM_EXT_VALUE_DATA :: ID => PARAM_EXT_VALUE_DATA :: deser (version , payload) . map (Self :: PARAM_EXT_VALUE) , WINCH_STATUS_DATA :: ID => WINCH_STATUS_DATA :: deser (version , payload) . map (Self :: WINCH_STATUS) , PARAM_REQUEST_READ_DATA :: ID => PARAM_REQUEST_READ_DATA :: deser (version , payload) . map (Self :: PARAM_REQUEST_READ) , HIGHRES_IMU_DATA :: ID => HIGHRES_IMU_DATA :: deser (version , payload) . map (Self :: HIGHRES_IMU) , HIL_GPS_DATA :: ID => HIL_GPS_DATA :: deser (version , payload) . map (Self :: HIL_GPS) , TERRAIN_REQUEST_DATA :: ID => TERRAIN_REQUEST_DATA :: deser (version , payload) . map (Self :: TERRAIN_REQUEST) , ATTITUDE_DATA :: ID => ATTITUDE_DATA :: deser (version , payload) . map (Self :: ATTITUDE) , SYSTEM_TIME_DATA :: ID => SYSTEM_TIME_DATA :: deser (version , payload) . map (Self :: SYSTEM_TIME) , ATTITUDE_TARGET_DATA :: ID => ATTITUDE_TARGET_DATA :: deser (version , payload) . map (Self :: ATTITUDE_TARGET) , DATA_TRANSMISSION_HANDSHAKE_DATA :: ID => DATA_TRANSMISSION_HANDSHAKE_DATA :: deser (version , payload) . map (Self :: DATA_TRANSMISSION_HANDSHAKE) , MESSAGE_INTERVAL_DATA :: ID => MESSAGE_INTERVAL_DATA :: deser (version , payload) . map (Self :: MESSAGE_INTERVAL) , TUNNEL_DATA :: ID => TUNNEL_DATA :: deser (version , payload) . map (Self :: TUNNEL) , RAW_IMU_DATA :: ID => RAW_IMU_DATA :: deser (version , payload) . map (Self :: RAW_IMU) , OPEN_DRONE_ID_BASIC_ID_DATA :: ID => OPEN_DRONE_ID_BASIC_ID_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_BASIC_ID) , SCALED_PRESSURE_DATA :: ID => SCALED_PRESSURE_DATA :: deser (version , payload) . map (Self :: SCALED_PRESSURE) , GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: ID => GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: deser (version , payload) . map (Self :: GIMBAL_DEVICE_ATTITUDE_STATUS) , CAN_FILTER_MODIFY_DATA :: ID => CAN_FILTER_MODIFY_DATA :: deser (version , payload) . map (Self :: CAN_FILTER_MODIFY) , HIL_ACTUATOR_CONTROLS_DATA :: ID => HIL_ACTUATOR_CONTROLS_DATA :: deser (version , payload) . map (Self :: HIL_ACTUATOR_CONTROLS) , REQUEST_DATA_STREAM_DATA :: ID => REQUEST_DATA_STREAM_DATA :: deser (version , payload) . map (Self :: REQUEST_DATA_STREAM) , NAMED_VALUE_FLOAT_DATA :: ID => NAMED_VALUE_FLOAT_DATA :: deser (version , payload) . map (Self :: NAMED_VALUE_FLOAT) , ATT_POS_MOCAP_DATA :: ID => ATT_POS_MOCAP_DATA :: deser (version , payload) . map (Self :: ATT_POS_MOCAP) , PLAY_TUNE_DATA :: ID => PLAY_TUNE_DATA :: deser (version , payload) . map (Self :: PLAY_TUNE) , GPS_STATUS_DATA :: ID => GPS_STATUS_DATA :: deser (version , payload) . map (Self :: GPS_STATUS) , SIM_STATE_DATA :: ID => SIM_STATE_DATA :: deser (version , payload) . map (Self :: SIM_STATE) , POWER_STATUS_DATA :: ID => POWER_STATUS_DATA :: deser (version , payload) . map (Self :: POWER_STATUS) , SCALED_PRESSURE3_DATA :: ID => SCALED_PRESSURE3_DATA :: deser (version , payload) . map (Self :: SCALED_PRESSURE3) , FOLLOW_TARGET_DATA :: ID => FOLLOW_TARGET_DATA :: deser (version , payload) . map (Self :: FOLLOW_TARGET) , MAG_CAL_REPORT_DATA :: ID => MAG_CAL_REPORT_DATA :: deser (version , payload) . map (Self :: MAG_CAL_REPORT) , OPTICAL_FLOW_DATA :: ID => OPTICAL_FLOW_DATA :: deser (version , payload) . map (Self :: OPTICAL_FLOW) , PROTOCOL_VERSION_DATA :: ID => PROTOCOL_VERSION_DATA :: deser (version , payload) . map (Self :: PROTOCOL_VERSION) , SERIAL_CONTROL_DATA :: ID => SERIAL_CONTROL_DATA :: deser (version , payload) . map (Self :: SERIAL_CONTROL) , VIDEO_STREAM_STATUS_DATA :: ID => VIDEO_STREAM_STATUS_DATA :: deser (version , payload) . map (Self :: VIDEO_STREAM_STATUS) , ODOMETRY_DATA :: ID => ODOMETRY_DATA :: deser (version , payload) . map (Self :: ODOMETRY) , CELLULAR_STATUS_DATA :: ID => CELLULAR_STATUS_DATA :: deser (version , payload) . map (Self :: CELLULAR_STATUS) , OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: ID => OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_SYSTEM_UPDATE) , PARAM_REQUEST_LIST_DATA :: ID => PARAM_REQUEST_LIST_DATA :: deser (version , payload) . map (Self :: PARAM_REQUEST_LIST) , GIMBAL_MANAGER_SET_PITCHYAW_DATA :: ID => GIMBAL_MANAGER_SET_PITCHYAW_DATA :: deser (version , payload) . map (Self :: GIMBAL_MANAGER_SET_PITCHYAW) , SERVO_OUTPUT_RAW_DATA :: ID => SERVO_OUTPUT_RAW_DATA :: deser (version , payload) . map (Self :: SERVO_OUTPUT_RAW) , TIMESYNC_DATA :: ID => TIMESYNC_DATA :: deser (version , payload) . map (Self :: TIMESYNC) , RC_CHANNELS_DATA :: ID => RC_CHANNELS_DATA :: deser (version , payload) . map (Self :: RC_CHANNELS) , GLOBAL_POSITION_INT_DATA :: ID => GLOBAL_POSITION_INT_DATA :: deser (version , payload) . map (Self :: GLOBAL_POSITION_INT) , ATTITUDE_QUATERNION_COV_DATA :: ID => ATTITUDE_QUATERNION_COV_DATA :: deser (version , payload) . map (Self :: ATTITUDE_QUATERNION_COV) , RADIO_STATUS_DATA :: ID => RADIO_STATUS_DATA :: deser (version , payload) . map (Self :: RADIO_STATUS) , ADSB_VEHICLE_DATA :: ID => ADSB_VEHICLE_DATA :: deser (version , payload) . map (Self :: ADSB_VEHICLE) , CONTROL_SYSTEM_STATE_DATA :: ID => CONTROL_SYSTEM_STATE_DATA :: deser (version , payload) . map (Self :: CONTROL_SYSTEM_STATE) , SCALED_IMU_DATA :: ID => SCALED_IMU_DATA :: deser (version , payload) . map (Self :: SCALED_IMU) , MISSION_CLEAR_ALL_DATA :: ID => MISSION_CLEAR_ALL_DATA :: deser (version , payload) . map (Self :: MISSION_CLEAR_ALL) , VICON_POSITION_ESTIMATE_DATA :: ID => VICON_POSITION_ESTIMATE_DATA :: deser (version , payload) . map (Self :: VICON_POSITION_ESTIMATE) , TERRAIN_DATA_DATA :: ID => TERRAIN_DATA_DATA :: deser (version , payload) . map (Self :: TERRAIN_DATA) , ATTITUDE_QUATERNION_DATA :: ID => ATTITUDE_QUATERNION_DATA :: deser (version , payload) . map (Self :: ATTITUDE_QUATERNION) , CAMERA_IMAGE_CAPTURED_DATA :: ID => CAMERA_IMAGE_CAPTURED_DATA :: deser (version , payload) . map (Self :: CAMERA_IMAGE_CAPTURED) , VISION_POSITION_ESTIMATE_DATA :: ID => VISION_POSITION_ESTIMATE_DATA :: deser (version , payload) . map (Self :: VISION_POSITION_ESTIMATE) , LOG_REQUEST_DATA_DATA :: ID => LOG_REQUEST_DATA_DATA :: deser (version , payload) . map (Self :: LOG_REQUEST_DATA) , PING_DATA :: ID => PING_DATA :: deser (version , payload) . map (Self :: PING) , VIBRATION_DATA :: ID => VIBRATION_DATA :: deser (version , payload) . map (Self :: VIBRATION) , FLIGHT_INFORMATION_DATA :: ID => FLIGHT_INFORMATION_DATA :: deser (version , payload) . map (Self :: FLIGHT_INFORMATION) , GPS_RAW_INT_DATA :: ID => GPS_RAW_INT_DATA :: deser (version , payload) . map (Self :: GPS_RAW_INT) , MOUNT_ORIENTATION_DATA :: ID => MOUNT_ORIENTATION_DATA :: deser (version , payload) . map (Self :: MOUNT_ORIENTATION) , LOGGING_DATA_DATA :: ID => LOGGING_DATA_DATA :: deser (version , payload) . map (Self :: LOGGING_DATA) , PARAM_SET_DATA :: ID => PARAM_SET_DATA :: deser (version , payload) . map (Self :: PARAM_SET) , GIMBAL_MANAGER_STATUS_DATA :: ID => GIMBAL_MANAGER_STATUS_DATA :: deser (version , payload) . map (Self :: GIMBAL_MANAGER_STATUS) , RAW_RPM_DATA :: ID => RAW_RPM_DATA :: deser (version , payload) . map (Self :: RAW_RPM) , TERRAIN_CHECK_DATA :: ID => TERRAIN_CHECK_DATA :: deser (version , payload) . map (Self :: TERRAIN_CHECK) , ACTUATOR_OUTPUT_STATUS_DATA :: ID => ACTUATOR_OUTPUT_STATUS_DATA :: deser (version , payload) . map (Self :: ACTUATOR_OUTPUT_STATUS) , V2_EXTENSION_DATA :: ID => V2_EXTENSION_DATA :: deser (version , payload) . map (Self :: V2_EXTENSION) , COMPONENT_INFORMATION_DATA :: ID => COMPONENT_INFORMATION_DATA :: deser (version , payload) . map (Self :: COMPONENT_INFORMATION) , HIL_STATE_DATA :: ID => HIL_STATE_DATA :: deser (version , payload) . map (Self :: HIL_STATE) , CAMERA_TRACKING_IMAGE_STATUS_DATA :: ID => CAMERA_TRACKING_IMAGE_STATUS_DATA :: deser (version , payload) . map (Self :: CAMERA_TRACKING_IMAGE_STATUS) , RC_CHANNELS_SCALED_DATA :: ID => RC_CHANNELS_SCALED_DATA :: deser (version , payload) . map (Self :: RC_CHANNELS_SCALED) , EVENT_DATA :: ID => EVENT_DATA :: deser (version , payload) . map (Self :: EVENT) , WHEEL_DISTANCE_DATA :: ID => WHEEL_DISTANCE_DATA :: deser (version , payload) . map (Self :: WHEEL_DISTANCE) , OPEN_DRONE_ID_OPERATOR_ID_DATA :: ID => OPEN_DRONE_ID_OPERATOR_ID_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_OPERATOR_ID) , OPEN_DRONE_ID_SYSTEM_DATA :: ID => OPEN_DRONE_ID_SYSTEM_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_SYSTEM) , STORAGE_INFORMATION_DATA :: ID => STORAGE_INFORMATION_DATA :: deser (version , payload) . map (Self :: STORAGE_INFORMATION) , PARAM_VALUE_DATA :: ID => PARAM_VALUE_DATA :: deser (version , payload) . map (Self :: PARAM_VALUE) , GPS_RTK_DATA :: ID => GPS_RTK_DATA :: deser (version , payload) . map (Self :: GPS_RTK) , ESC_INFO_DATA :: ID => ESC_INFO_DATA :: deser (version , payload) . map (Self :: ESC_INFO) , TERRAIN_REPORT_DATA :: ID => TERRAIN_REPORT_DATA :: deser (version , payload) . map (Self :: TERRAIN_REPORT) , CAMERA_CAPTURE_STATUS_DATA :: ID => CAMERA_CAPTURE_STATUS_DATA :: deser (version , payload) . map (Self :: CAMERA_CAPTURE_STATUS) , ENCAPSULATED_DATA_DATA :: ID => ENCAPSULATED_DATA_DATA :: deser (version , payload) . map (Self :: ENCAPSULATED_DATA) , HIL_SENSOR_DATA :: ID => HIL_SENSOR_DATA :: deser (version , payload) . map (Self :: HIL_SENSOR) , OPEN_DRONE_ID_ARM_STATUS_DATA :: ID => OPEN_DRONE_ID_ARM_STATUS_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_ARM_STATUS) , MISSION_COUNT_DATA :: ID => MISSION_COUNT_DATA :: deser (version , payload) . map (Self :: MISSION_COUNT) , LOG_REQUEST_END_DATA :: ID => LOG_REQUEST_END_DATA :: deser (version , payload) . map (Self :: LOG_REQUEST_END) , OPEN_DRONE_ID_AUTHENTICATION_DATA :: ID => OPEN_DRONE_ID_AUTHENTICATION_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_AUTHENTICATION) , OBSTACLE_DISTANCE_DATA :: ID => OBSTACLE_DISTANCE_DATA :: deser (version , payload) . map (Self :: OBSTACLE_DISTANCE) , SET_MODE_DATA :: ID => SET_MODE_DATA :: deser (version , payload) . map (Self :: SET_MODE) , VFR_HUD_DATA :: ID => VFR_HUD_DATA :: deser (version , payload) . map (Self :: VFR_HUD) , OPTICAL_FLOW_RAD_DATA :: ID => OPTICAL_FLOW_RAD_DATA :: deser (version , payload) . map (Self :: OPTICAL_FLOW_RAD) , _ => { Err (:: mavlink_core :: error :: ParserError :: UnknownMessage { id }) } , } } fn message_name (& self) -> & 'static str { match self { Self :: RAW_PRESSURE (..) => RAW_PRESSURE_DATA :: NAME , Self :: AUTOPILOT_STATE_FOR_GIMBAL_DEVICE (..) => AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: NAME , Self :: LOG_ERASE (..) => LOG_ERASE_DATA :: NAME , Self :: CAMERA_INFORMATION (..) => CAMERA_INFORMATION_DATA :: NAME , Self :: RESOURCE_REQUEST (..) => RESOURCE_REQUEST_DATA :: NAME , Self :: PARAM_EXT_REQUEST_READ (..) => PARAM_EXT_REQUEST_READ_DATA :: NAME , Self :: LOCAL_POSITION_NED (..) => LOCAL_POSITION_NED_DATA :: NAME , Self :: MANUAL_SETPOINT (..) => MANUAL_SETPOINT_DATA :: NAME , Self :: LOCAL_POSITION_NED_COV (..) => LOCAL_POSITION_NED_COV_DATA :: NAME , Self :: HIL_RC_INPUTS_RAW (..) => HIL_RC_INPUTS_RAW_DATA :: NAME , Self :: ESTIMATOR_STATUS (..) => ESTIMATOR_STATUS_DATA :: NAME , Self :: SAFETY_ALLOWED_AREA (..) => SAFETY_ALLOWED_AREA_DATA :: NAME , Self :: CAMERA_TRIGGER (..) => CAMERA_TRIGGER_DATA :: NAME , Self :: SCALED_IMU2 (..) => SCALED_IMU2_DATA :: NAME , Self :: FENCE_STATUS (..) => FENCE_STATUS_DATA :: NAME , Self :: AUTOPILOT_VERSION (..) => AUTOPILOT_VERSION_DATA :: NAME , Self :: ESC_STATUS (..) => ESC_STATUS_DATA :: NAME , Self :: TRAJECTORY_REPRESENTATION_BEZIER (..) => TRAJECTORY_REPRESENTATION_BEZIER_DATA :: NAME , Self :: ALTITUDE (..) => ALTITUDE_DATA :: NAME , Self :: HIGH_LATENCY (..) => HIGH_LATENCY_DATA :: NAME , Self :: SCALED_PRESSURE2 (..) => SCALED_PRESSURE2_DATA :: NAME , Self :: GIMBAL_DEVICE_SET_ATTITUDE (..) => GIMBAL_DEVICE_SET_ATTITUDE_DATA :: NAME , Self :: VISION_SPEED_ESTIMATE (..) => VISION_SPEED_ESTIMATE_DATA :: NAME , Self :: FILE_TRANSFER_PROTOCOL (..) => FILE_TRANSFER_PROTOCOL_DATA :: NAME , Self :: MISSION_REQUEST (..) => MISSION_REQUEST_DATA :: NAME , Self :: RESPONSE_EVENT_ERROR (..) => RESPONSE_EVENT_ERROR_DATA :: NAME , Self :: NAV_CONTROLLER_OUTPUT (..) => NAV_CONTROLLER_OUTPUT_DATA :: NAME , Self :: SYS_STATUS (..) => SYS_STATUS_DATA :: NAME , Self :: LOG_DATA (..) => LOG_DATA_DATA :: NAME , Self :: CHANGE_OPERATOR_CONTROL (..) => CHANGE_OPERATOR_CONTROL_DATA :: NAME , Self :: COMMAND_ACK (..) => COMMAND_ACK_DATA :: NAME , Self :: HIL_OPTICAL_FLOW (..) => HIL_OPTICAL_FLOW_DATA :: NAME , Self :: ORBIT_EXECUTION_STATUS (..) => ORBIT_EXECUTION_STATUS_DATA :: NAME , Self :: DEBUG_VECT (..) => DEBUG_VECT_DATA :: NAME , Self :: TRAJECTORY_REPRESENTATION_WAYPOINTS (..) => TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: NAME , Self :: SMART_BATTERY_INFO (..) => SMART_BATTERY_INFO_DATA :: NAME , Self :: PARAM_MAP_RC (..) => PARAM_MAP_RC_DATA :: NAME , Self :: MISSION_ITEM_INT (..) => MISSION_ITEM_INT_DATA :: NAME , Self :: WIND_COV (..) => WIND_COV_DATA :: NAME , Self :: MANUAL_CONTROL (..) => MANUAL_CONTROL_DATA :: NAME , Self :: LOG_REQUEST_LIST (..) => LOG_REQUEST_LIST_DATA :: NAME , Self :: GLOBAL_VISION_POSITION_ESTIMATE (..) => GLOBAL_VISION_POSITION_ESTIMATE_DATA :: NAME , Self :: TIME_ESTIMATE_TO_TARGET (..) => TIME_ESTIMATE_TO_TARGET_DATA :: NAME , Self :: COMMAND_LONG (..) => COMMAND_LONG_DATA :: NAME , Self :: GIMBAL_MANAGER_SET_ATTITUDE (..) => GIMBAL_MANAGER_SET_ATTITUDE_DATA :: NAME , Self :: GIMBAL_MANAGER_SET_MANUAL_CONTROL (..) => GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: NAME , Self :: OPEN_DRONE_ID_LOCATION (..) => OPEN_DRONE_ID_LOCATION_DATA :: NAME , Self :: HIL_CONTROLS (..) => HIL_CONTROLS_DATA :: NAME , Self :: MISSION_SET_CURRENT (..) => MISSION_SET_CURRENT_DATA :: NAME , Self :: SET_POSITION_TARGET_LOCAL_NED (..) => SET_POSITION_TARGET_LOCAL_NED_DATA :: NAME , Self :: HIL_STATE_QUATERNION (..) => HIL_STATE_QUATERNION_DATA :: NAME , Self :: SETUP_SIGNING (..) => SETUP_SIGNING_DATA :: NAME , Self :: DISTANCE_SENSOR (..) => DISTANCE_SENSOR_DATA :: NAME , Self :: MISSION_CURRENT (..) => MISSION_CURRENT_DATA :: NAME , Self :: SET_HOME_POSITION (..) => SET_HOME_POSITION_DATA :: NAME , Self :: COMMAND_CANCEL (..) => COMMAND_CANCEL_DATA :: NAME , Self :: GPS_INJECT_DATA (..) => GPS_INJECT_DATA_DATA :: NAME , Self :: GPS_INPUT (..) => GPS_INPUT_DATA :: NAME , Self :: UAVCAN_NODE_STATUS (..) => UAVCAN_NODE_STATUS_DATA :: NAME , Self :: CELLULAR_CONFIG (..) => CELLULAR_CONFIG_DATA :: NAME , Self :: GENERATOR_STATUS (..) => GENERATOR_STATUS_DATA :: NAME , Self :: CAN_FRAME (..) => CAN_FRAME_DATA :: NAME , Self :: OPEN_DRONE_ID_MESSAGE_PACK (..) => OPEN_DRONE_ID_MESSAGE_PACK_DATA :: NAME , Self :: MISSION_ITEM_REACHED (..) => MISSION_ITEM_REACHED_DATA :: NAME , Self :: SET_ATTITUDE_TARGET (..) => SET_ATTITUDE_TARGET_DATA :: NAME , Self :: GPS_GLOBAL_ORIGIN (..) => GPS_GLOBAL_ORIGIN_DATA :: NAME , Self :: SET_ACTUATOR_CONTROL_TARGET (..) => SET_ACTUATOR_CONTROL_TARGET_DATA :: NAME , Self :: CAMERA_FOV_STATUS (..) => CAMERA_FOV_STATUS_DATA :: NAME , Self :: SET_POSITION_TARGET_GLOBAL_INT (..) => SET_POSITION_TARGET_GLOBAL_INT_DATA :: NAME , Self :: MISSION_ITEM (..) => MISSION_ITEM_DATA :: NAME , Self :: CURRENT_EVENT_SEQUENCE (..) => CURRENT_EVENT_SEQUENCE_DATA :: NAME , Self :: MISSION_ACK (..) => MISSION_ACK_DATA :: NAME , Self :: PARAM_EXT_REQUEST_LIST (..) => PARAM_EXT_REQUEST_LIST_DATA :: NAME , Self :: RC_CHANNELS_OVERRIDE (..) => RC_CHANNELS_OVERRIDE_DATA :: NAME , Self :: AUTH_KEY (..) => AUTH_KEY_DATA :: NAME , Self :: ISBD_LINK_STATUS (..) => ISBD_LINK_STATUS_DATA :: NAME , Self :: COMMAND_INT (..) => COMMAND_INT_DATA :: NAME , Self :: LOG_ENTRY (..) => LOG_ENTRY_DATA :: NAME , Self :: GPS2_RAW (..) => GPS2_RAW_DATA :: NAME , Self :: GPS2_RTK (..) => GPS2_RTK_DATA :: NAME , Self :: COLLISION (..) => COLLISION_DATA :: NAME , Self :: ONBOARD_COMPUTER_STATUS (..) => ONBOARD_COMPUTER_STATUS_DATA :: NAME , Self :: DEBUG (..) => DEBUG_DATA :: NAME , Self :: MEMORY_VECT (..) => MEMORY_VECT_DATA :: NAME , Self :: GIMBAL_DEVICE_INFORMATION (..) => GIMBAL_DEVICE_INFORMATION_DATA :: NAME , Self :: EXTENDED_SYS_STATE (..) => EXTENDED_SYS_STATE_DATA :: NAME , Self :: SUPPORTED_TUNES (..) => SUPPORTED_TUNES_DATA :: NAME , Self :: CAMERA_SETTINGS (..) => CAMERA_SETTINGS_DATA :: NAME , Self :: LOGGING_DATA_ACKED (..) => LOGGING_DATA_ACKED_DATA :: NAME , Self :: LINK_NODE_STATUS (..) => LINK_NODE_STATUS_DATA :: NAME , Self :: AIS_VESSEL (..) => AIS_VESSEL_DATA :: NAME , Self :: DEBUG_FLOAT_ARRAY (..) => DEBUG_FLOAT_ARRAY_DATA :: NAME , Self :: PARAM_EXT_ACK (..) => PARAM_EXT_ACK_DATA :: NAME , Self :: MISSION_WRITE_PARTIAL_LIST (..) => MISSION_WRITE_PARTIAL_LIST_DATA :: NAME , Self :: BATTERY_STATUS (..) => BATTERY_STATUS_DATA :: NAME , Self :: LANDING_TARGET (..) => LANDING_TARGET_DATA :: NAME , Self :: CAMERA_TRACKING_GEO_STATUS (..) => CAMERA_TRACKING_GEO_STATUS_DATA :: NAME , Self :: REQUEST_EVENT (..) => REQUEST_EVENT_DATA :: NAME , Self :: SAFETY_SET_ALLOWED_AREA (..) => SAFETY_SET_ALLOWED_AREA_DATA :: NAME , Self :: EFI_STATUS (..) => EFI_STATUS_DATA :: NAME , Self :: STATUSTEXT (..) => STATUSTEXT_DATA :: NAME , Self :: OPEN_DRONE_ID_SELF_ID (..) => OPEN_DRONE_ID_SELF_ID_DATA :: NAME , Self :: LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET (..) => LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: NAME , Self :: GPS_RTCM_DATA (..) => GPS_RTCM_DATA_DATA :: NAME , Self :: SET_GPS_GLOBAL_ORIGIN (..) => SET_GPS_GLOBAL_ORIGIN_DATA :: NAME , Self :: ACTUATOR_CONTROL_TARGET (..) => ACTUATOR_CONTROL_TARGET_DATA :: NAME , Self :: BUTTON_CHANGE (..) => BUTTON_CHANGE_DATA :: NAME , Self :: MISSION_REQUEST_PARTIAL_LIST (..) => MISSION_REQUEST_PARTIAL_LIST_DATA :: NAME , Self :: UTM_GLOBAL_POSITION (..) => UTM_GLOBAL_POSITION_DATA :: NAME , Self :: HOME_POSITION (..) => HOME_POSITION_DATA :: NAME , Self :: UAVCAN_NODE_INFO (..) => UAVCAN_NODE_INFO_DATA :: NAME , Self :: PLAY_TUNE_V2 (..) => PLAY_TUNE_V2_DATA :: NAME , Self :: MISSION_REQUEST_LIST (..) => MISSION_REQUEST_LIST_DATA :: NAME , Self :: MISSION_REQUEST_INT (..) => MISSION_REQUEST_INT_DATA :: NAME , Self :: DATA_STREAM (..) => DATA_STREAM_DATA :: NAME , Self :: VIDEO_STREAM_INFORMATION (..) => VIDEO_STREAM_INFORMATION_DATA :: NAME , Self :: CANFD_FRAME (..) => CANFD_FRAME_DATA :: NAME , Self :: HYGROMETER_SENSOR (..) => HYGROMETER_SENSOR_DATA :: NAME , Self :: POSITION_TARGET_GLOBAL_INT (..) => POSITION_TARGET_GLOBAL_INT_DATA :: NAME , Self :: HIGH_LATENCY2 (..) => HIGH_LATENCY2_DATA :: NAME , Self :: GLOBAL_POSITION_INT_COV (..) => GLOBAL_POSITION_INT_COV_DATA :: NAME , Self :: NAMED_VALUE_INT (..) => NAMED_VALUE_INT_DATA :: NAME , Self :: CHANGE_OPERATOR_CONTROL_ACK (..) => CHANGE_OPERATOR_CONTROL_ACK_DATA :: NAME , Self :: GIMBAL_MANAGER_INFORMATION (..) => GIMBAL_MANAGER_INFORMATION_DATA :: NAME , Self :: COMPONENT_METADATA (..) => COMPONENT_METADATA_DATA :: NAME , Self :: LOGGING_ACK (..) => LOGGING_ACK_DATA :: NAME , Self :: RC_CHANNELS_RAW (..) => RC_CHANNELS_RAW_DATA :: NAME , Self :: POSITION_TARGET_LOCAL_NED (..) => POSITION_TARGET_LOCAL_NED_DATA :: NAME , Self :: PARAM_EXT_SET (..) => PARAM_EXT_SET_DATA :: NAME , Self :: HEARTBEAT (..) => HEARTBEAT_DATA :: NAME , Self :: WIFI_CONFIG_AP (..) => WIFI_CONFIG_AP_DATA :: NAME , Self :: SCALED_IMU3 (..) => SCALED_IMU3_DATA :: NAME , Self :: PARAM_EXT_VALUE (..) => PARAM_EXT_VALUE_DATA :: NAME , Self :: WINCH_STATUS (..) => WINCH_STATUS_DATA :: NAME , Self :: PARAM_REQUEST_READ (..) => PARAM_REQUEST_READ_DATA :: NAME , Self :: HIGHRES_IMU (..) => HIGHRES_IMU_DATA :: NAME , Self :: HIL_GPS (..) => HIL_GPS_DATA :: NAME , Self :: TERRAIN_REQUEST (..) => TERRAIN_REQUEST_DATA :: NAME , Self :: ATTITUDE (..) => ATTITUDE_DATA :: NAME , Self :: SYSTEM_TIME (..) => SYSTEM_TIME_DATA :: NAME , Self :: ATTITUDE_TARGET (..) => ATTITUDE_TARGET_DATA :: NAME , Self :: DATA_TRANSMISSION_HANDSHAKE (..) => DATA_TRANSMISSION_HANDSHAKE_DATA :: NAME , Self :: MESSAGE_INTERVAL (..) => MESSAGE_INTERVAL_DATA :: NAME , Self :: TUNNEL (..) => TUNNEL_DATA :: NAME , Self :: RAW_IMU (..) => RAW_IMU_DATA :: NAME , Self :: OPEN_DRONE_ID_BASIC_ID (..) => OPEN_DRONE_ID_BASIC_ID_DATA :: NAME , Self :: SCALED_PRESSURE (..) => SCALED_PRESSURE_DATA :: NAME , Self :: GIMBAL_DEVICE_ATTITUDE_STATUS (..) => GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: NAME , Self :: CAN_FILTER_MODIFY (..) => CAN_FILTER_MODIFY_DATA :: NAME , Self :: HIL_ACTUATOR_CONTROLS (..) => HIL_ACTUATOR_CONTROLS_DATA :: NAME , Self :: REQUEST_DATA_STREAM (..) => REQUEST_DATA_STREAM_DATA :: NAME , Self :: NAMED_VALUE_FLOAT (..) => NAMED_VALUE_FLOAT_DATA :: NAME , Self :: ATT_POS_MOCAP (..) => ATT_POS_MOCAP_DATA :: NAME , Self :: PLAY_TUNE (..) => PLAY_TUNE_DATA :: NAME , Self :: GPS_STATUS (..) => GPS_STATUS_DATA :: NAME , Self :: SIM_STATE (..) => SIM_STATE_DATA :: NAME , Self :: POWER_STATUS (..) => POWER_STATUS_DATA :: NAME , Self :: SCALED_PRESSURE3 (..) => SCALED_PRESSURE3_DATA :: NAME , Self :: FOLLOW_TARGET (..) => FOLLOW_TARGET_DATA :: NAME , Self :: MAG_CAL_REPORT (..) => MAG_CAL_REPORT_DATA :: NAME , Self :: OPTICAL_FLOW (..) => OPTICAL_FLOW_DATA :: NAME , Self :: PROTOCOL_VERSION (..) => PROTOCOL_VERSION_DATA :: NAME , Self :: SERIAL_CONTROL (..) => SERIAL_CONTROL_DATA :: NAME , Self :: VIDEO_STREAM_STATUS (..) => VIDEO_STREAM_STATUS_DATA :: NAME , Self :: ODOMETRY (..) => ODOMETRY_DATA :: NAME , Self :: CELLULAR_STATUS (..) => CELLULAR_STATUS_DATA :: NAME , Self :: OPEN_DRONE_ID_SYSTEM_UPDATE (..) => OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: NAME , Self :: PARAM_REQUEST_LIST (..) => PARAM_REQUEST_LIST_DATA :: NAME , Self :: GIMBAL_MANAGER_SET_PITCHYAW (..) => GIMBAL_MANAGER_SET_PITCHYAW_DATA :: NAME , Self :: SERVO_OUTPUT_RAW (..) => SERVO_OUTPUT_RAW_DATA :: NAME , Self :: TIMESYNC (..) => TIMESYNC_DATA :: NAME , Self :: RC_CHANNELS (..) => RC_CHANNELS_DATA :: NAME , Self :: GLOBAL_POSITION_INT (..) => GLOBAL_POSITION_INT_DATA :: NAME , Self :: ATTITUDE_QUATERNION_COV (..) => ATTITUDE_QUATERNION_COV_DATA :: NAME , Self :: RADIO_STATUS (..) => RADIO_STATUS_DATA :: NAME , Self :: ADSB_VEHICLE (..) => ADSB_VEHICLE_DATA :: NAME , Self :: CONTROL_SYSTEM_STATE (..) => CONTROL_SYSTEM_STATE_DATA :: NAME , Self :: SCALED_IMU (..) => SCALED_IMU_DATA :: NAME , Self :: MISSION_CLEAR_ALL (..) => MISSION_CLEAR_ALL_DATA :: NAME , Self :: VICON_POSITION_ESTIMATE (..) => VICON_POSITION_ESTIMATE_DATA :: NAME , Self :: TERRAIN_DATA (..) => TERRAIN_DATA_DATA :: NAME , Self :: ATTITUDE_QUATERNION (..) => ATTITUDE_QUATERNION_DATA :: NAME , Self :: CAMERA_IMAGE_CAPTURED (..) => CAMERA_IMAGE_CAPTURED_DATA :: NAME , Self :: VISION_POSITION_ESTIMATE (..) => VISION_POSITION_ESTIMATE_DATA :: NAME , Self :: LOG_REQUEST_DATA (..) => LOG_REQUEST_DATA_DATA :: NAME , Self :: PING (..) => PING_DATA :: NAME , Self :: VIBRATION (..) => VIBRATION_DATA :: NAME , Self :: FLIGHT_INFORMATION (..) => FLIGHT_INFORMATION_DATA :: NAME , Self :: GPS_RAW_INT (..) => GPS_RAW_INT_DATA :: NAME , Self :: MOUNT_ORIENTATION (..) => MOUNT_ORIENTATION_DATA :: NAME , Self :: LOGGING_DATA (..) => LOGGING_DATA_DATA :: NAME , Self :: PARAM_SET (..) => PARAM_SET_DATA :: NAME , Self :: GIMBAL_MANAGER_STATUS (..) => GIMBAL_MANAGER_STATUS_DATA :: NAME , Self :: RAW_RPM (..) => RAW_RPM_DATA :: NAME , Self :: TERRAIN_CHECK (..) => TERRAIN_CHECK_DATA :: NAME , Self :: ACTUATOR_OUTPUT_STATUS (..) => ACTUATOR_OUTPUT_STATUS_DATA :: NAME , Self :: V2_EXTENSION (..) => V2_EXTENSION_DATA :: NAME , Self :: COMPONENT_INFORMATION (..) => COMPONENT_INFORMATION_DATA :: NAME , Self :: HIL_STATE (..) => HIL_STATE_DATA :: NAME , Self :: CAMERA_TRACKING_IMAGE_STATUS (..) => CAMERA_TRACKING_IMAGE_STATUS_DATA :: NAME , Self :: RC_CHANNELS_SCALED (..) => RC_CHANNELS_SCALED_DATA :: NAME , Self :: EVENT (..) => EVENT_DATA :: NAME , Self :: WHEEL_DISTANCE (..) => WHEEL_DISTANCE_DATA :: NAME , Self :: OPEN_DRONE_ID_OPERATOR_ID (..) => OPEN_DRONE_ID_OPERATOR_ID_DATA :: NAME , Self :: OPEN_DRONE_ID_SYSTEM (..) => OPEN_DRONE_ID_SYSTEM_DATA :: NAME , Self :: STORAGE_INFORMATION (..) => STORAGE_INFORMATION_DATA :: NAME , Self :: PARAM_VALUE (..) => PARAM_VALUE_DATA :: NAME , Self :: GPS_RTK (..) => GPS_RTK_DATA :: NAME , Self :: ESC_INFO (..) => ESC_INFO_DATA :: NAME , Self :: TERRAIN_REPORT (..) => TERRAIN_REPORT_DATA :: NAME , Self :: CAMERA_CAPTURE_STATUS (..) => CAMERA_CAPTURE_STATUS_DATA :: NAME , Self :: ENCAPSULATED_DATA (..) => ENCAPSULATED_DATA_DATA :: NAME , Self :: HIL_SENSOR (..) => HIL_SENSOR_DATA :: NAME , Self :: OPEN_DRONE_ID_ARM_STATUS (..) => OPEN_DRONE_ID_ARM_STATUS_DATA :: NAME , Self :: MISSION_COUNT (..) => MISSION_COUNT_DATA :: NAME , Self :: LOG_REQUEST_END (..) => LOG_REQUEST_END_DATA :: NAME , Self :: OPEN_DRONE_ID_AUTHENTICATION (..) => OPEN_DRONE_ID_AUTHENTICATION_DATA :: NAME , Self :: OBSTACLE_DISTANCE (..) => OBSTACLE_DISTANCE_DATA :: NAME , Self :: SET_MODE (..) => SET_MODE_DATA :: NAME , Self :: VFR_HUD (..) => VFR_HUD_DATA :: NAME , Self :: OPTICAL_FLOW_RAD (..) => OPTICAL_FLOW_RAD_DATA :: NAME , } } fn message_id (& self) -> u32 { match self { Self :: RAW_PRESSURE (..) => RAW_PRESSURE_DATA :: ID , Self :: AUTOPILOT_STATE_FOR_GIMBAL_DEVICE (..) => AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: ID , Self :: LOG_ERASE (..) => LOG_ERASE_DATA :: ID , Self :: CAMERA_INFORMATION (..) => CAMERA_INFORMATION_DATA :: ID , Self :: RESOURCE_REQUEST (..) => RESOURCE_REQUEST_DATA :: ID , Self :: PARAM_EXT_REQUEST_READ (..) => PARAM_EXT_REQUEST_READ_DATA :: ID , Self :: LOCAL_POSITION_NED (..) => LOCAL_POSITION_NED_DATA :: ID , Self :: MANUAL_SETPOINT (..) => MANUAL_SETPOINT_DATA :: ID , Self :: LOCAL_POSITION_NED_COV (..) => LOCAL_POSITION_NED_COV_DATA :: ID , Self :: HIL_RC_INPUTS_RAW (..) => HIL_RC_INPUTS_RAW_DATA :: ID , Self :: ESTIMATOR_STATUS (..) => ESTIMATOR_STATUS_DATA :: ID , Self :: SAFETY_ALLOWED_AREA (..) => SAFETY_ALLOWED_AREA_DATA :: ID , Self :: CAMERA_TRIGGER (..) => CAMERA_TRIGGER_DATA :: ID , Self :: SCALED_IMU2 (..) => SCALED_IMU2_DATA :: ID , Self :: FENCE_STATUS (..) => FENCE_STATUS_DATA :: ID , Self :: AUTOPILOT_VERSION (..) => AUTOPILOT_VERSION_DATA :: ID , Self :: ESC_STATUS (..) => ESC_STATUS_DATA :: ID , Self :: TRAJECTORY_REPRESENTATION_BEZIER (..) => TRAJECTORY_REPRESENTATION_BEZIER_DATA :: ID , Self :: ALTITUDE (..) => ALTITUDE_DATA :: ID , Self :: HIGH_LATENCY (..) => HIGH_LATENCY_DATA :: ID , Self :: SCALED_PRESSURE2 (..) => SCALED_PRESSURE2_DATA :: ID , Self :: GIMBAL_DEVICE_SET_ATTITUDE (..) => GIMBAL_DEVICE_SET_ATTITUDE_DATA :: ID , Self :: VISION_SPEED_ESTIMATE (..) => VISION_SPEED_ESTIMATE_DATA :: ID , Self :: FILE_TRANSFER_PROTOCOL (..) => FILE_TRANSFER_PROTOCOL_DATA :: ID , Self :: MISSION_REQUEST (..) => MISSION_REQUEST_DATA :: ID , Self :: RESPONSE_EVENT_ERROR (..) => RESPONSE_EVENT_ERROR_DATA :: ID , Self :: NAV_CONTROLLER_OUTPUT (..) => NAV_CONTROLLER_OUTPUT_DATA :: ID , Self :: SYS_STATUS (..) => SYS_STATUS_DATA :: ID , Self :: LOG_DATA (..) => LOG_DATA_DATA :: ID , Self :: CHANGE_OPERATOR_CONTROL (..) => CHANGE_OPERATOR_CONTROL_DATA :: ID , Self :: COMMAND_ACK (..) => COMMAND_ACK_DATA :: ID , Self :: HIL_OPTICAL_FLOW (..) => HIL_OPTICAL_FLOW_DATA :: ID , Self :: ORBIT_EXECUTION_STATUS (..) => ORBIT_EXECUTION_STATUS_DATA :: ID , Self :: DEBUG_VECT (..) => DEBUG_VECT_DATA :: ID , Self :: TRAJECTORY_REPRESENTATION_WAYPOINTS (..) => TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: ID , Self :: SMART_BATTERY_INFO (..) => SMART_BATTERY_INFO_DATA :: ID , Self :: PARAM_MAP_RC (..) => PARAM_MAP_RC_DATA :: ID , Self :: MISSION_ITEM_INT (..) => MISSION_ITEM_INT_DATA :: ID , Self :: WIND_COV (..) => WIND_COV_DATA :: ID , Self :: MANUAL_CONTROL (..) => MANUAL_CONTROL_DATA :: ID , Self :: LOG_REQUEST_LIST (..) => LOG_REQUEST_LIST_DATA :: ID , Self :: GLOBAL_VISION_POSITION_ESTIMATE (..) => GLOBAL_VISION_POSITION_ESTIMATE_DATA :: ID , Self :: TIME_ESTIMATE_TO_TARGET (..) => TIME_ESTIMATE_TO_TARGET_DATA :: ID , Self :: COMMAND_LONG (..) => COMMAND_LONG_DATA :: ID , Self :: GIMBAL_MANAGER_SET_ATTITUDE (..) => GIMBAL_MANAGER_SET_ATTITUDE_DATA :: ID , Self :: GIMBAL_MANAGER_SET_MANUAL_CONTROL (..) => GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: ID , Self :: OPEN_DRONE_ID_LOCATION (..) => OPEN_DRONE_ID_LOCATION_DATA :: ID , Self :: HIL_CONTROLS (..) => HIL_CONTROLS_DATA :: ID , Self :: MISSION_SET_CURRENT (..) => MISSION_SET_CURRENT_DATA :: ID , Self :: SET_POSITION_TARGET_LOCAL_NED (..) => SET_POSITION_TARGET_LOCAL_NED_DATA :: ID , Self :: HIL_STATE_QUATERNION (..) => HIL_STATE_QUATERNION_DATA :: ID , Self :: SETUP_SIGNING (..) => SETUP_SIGNING_DATA :: ID , Self :: DISTANCE_SENSOR (..) => DISTANCE_SENSOR_DATA :: ID , Self :: MISSION_CURRENT (..) => MISSION_CURRENT_DATA :: ID , Self :: SET_HOME_POSITION (..) => SET_HOME_POSITION_DATA :: ID , Self :: COMMAND_CANCEL (..) => COMMAND_CANCEL_DATA :: ID , Self :: GPS_INJECT_DATA (..) => GPS_INJECT_DATA_DATA :: ID , Self :: GPS_INPUT (..) => GPS_INPUT_DATA :: ID , Self :: UAVCAN_NODE_STATUS (..) => UAVCAN_NODE_STATUS_DATA :: ID , Self :: CELLULAR_CONFIG (..) => CELLULAR_CONFIG_DATA :: ID , Self :: GENERATOR_STATUS (..) => GENERATOR_STATUS_DATA :: ID , Self :: CAN_FRAME (..) => CAN_FRAME_DATA :: ID , Self :: OPEN_DRONE_ID_MESSAGE_PACK (..) => OPEN_DRONE_ID_MESSAGE_PACK_DATA :: ID , Self :: MISSION_ITEM_REACHED (..) => MISSION_ITEM_REACHED_DATA :: ID , Self :: SET_ATTITUDE_TARGET (..) => SET_ATTITUDE_TARGET_DATA :: ID , Self :: GPS_GLOBAL_ORIGIN (..) => GPS_GLOBAL_ORIGIN_DATA :: ID , Self :: SET_ACTUATOR_CONTROL_TARGET (..) => SET_ACTUATOR_CONTROL_TARGET_DATA :: ID , Self :: CAMERA_FOV_STATUS (..) => CAMERA_FOV_STATUS_DATA :: ID , Self :: SET_POSITION_TARGET_GLOBAL_INT (..) => SET_POSITION_TARGET_GLOBAL_INT_DATA :: ID , Self :: MISSION_ITEM (..) => MISSION_ITEM_DATA :: ID , Self :: CURRENT_EVENT_SEQUENCE (..) => CURRENT_EVENT_SEQUENCE_DATA :: ID , Self :: MISSION_ACK (..) => MISSION_ACK_DATA :: ID , Self :: PARAM_EXT_REQUEST_LIST (..) => PARAM_EXT_REQUEST_LIST_DATA :: ID , Self :: RC_CHANNELS_OVERRIDE (..) => RC_CHANNELS_OVERRIDE_DATA :: ID , Self :: AUTH_KEY (..) => AUTH_KEY_DATA :: ID , Self :: ISBD_LINK_STATUS (..) => ISBD_LINK_STATUS_DATA :: ID , Self :: COMMAND_INT (..) => COMMAND_INT_DATA :: ID , Self :: LOG_ENTRY (..) => LOG_ENTRY_DATA :: ID , Self :: GPS2_RAW (..) => GPS2_RAW_DATA :: ID , Self :: GPS2_RTK (..) => GPS2_RTK_DATA :: ID , Self :: COLLISION (..) => COLLISION_DATA :: ID , Self :: ONBOARD_COMPUTER_STATUS (..) => ONBOARD_COMPUTER_STATUS_DATA :: ID , Self :: DEBUG (..) => DEBUG_DATA :: ID , Self :: MEMORY_VECT (..) => MEMORY_VECT_DATA :: ID , Self :: GIMBAL_DEVICE_INFORMATION (..) => GIMBAL_DEVICE_INFORMATION_DATA :: ID , Self :: EXTENDED_SYS_STATE (..) => EXTENDED_SYS_STATE_DATA :: ID , Self :: SUPPORTED_TUNES (..) => SUPPORTED_TUNES_DATA :: ID , Self :: CAMERA_SETTINGS (..) => CAMERA_SETTINGS_DATA :: ID , Self :: LOGGING_DATA_ACKED (..) => LOGGING_DATA_ACKED_DATA :: ID , Self :: LINK_NODE_STATUS (..) => LINK_NODE_STATUS_DATA :: ID , Self :: AIS_VESSEL (..) => AIS_VESSEL_DATA :: ID , Self :: DEBUG_FLOAT_ARRAY (..) => DEBUG_FLOAT_ARRAY_DATA :: ID , Self :: PARAM_EXT_ACK (..) => PARAM_EXT_ACK_DATA :: ID , Self :: MISSION_WRITE_PARTIAL_LIST (..) => MISSION_WRITE_PARTIAL_LIST_DATA :: ID , Self :: BATTERY_STATUS (..) => BATTERY_STATUS_DATA :: ID , Self :: LANDING_TARGET (..) => LANDING_TARGET_DATA :: ID , Self :: CAMERA_TRACKING_GEO_STATUS (..) => CAMERA_TRACKING_GEO_STATUS_DATA :: ID , Self :: REQUEST_EVENT (..) => REQUEST_EVENT_DATA :: ID , Self :: SAFETY_SET_ALLOWED_AREA (..) => SAFETY_SET_ALLOWED_AREA_DATA :: ID , Self :: EFI_STATUS (..) => EFI_STATUS_DATA :: ID , Self :: STATUSTEXT (..) => STATUSTEXT_DATA :: ID , Self :: OPEN_DRONE_ID_SELF_ID (..) => OPEN_DRONE_ID_SELF_ID_DATA :: ID , Self :: LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET (..) => LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: ID , Self :: GPS_RTCM_DATA (..) => GPS_RTCM_DATA_DATA :: ID , Self :: SET_GPS_GLOBAL_ORIGIN (..) => SET_GPS_GLOBAL_ORIGIN_DATA :: ID , Self :: ACTUATOR_CONTROL_TARGET (..) => ACTUATOR_CONTROL_TARGET_DATA :: ID , Self :: BUTTON_CHANGE (..) => BUTTON_CHANGE_DATA :: ID , Self :: MISSION_REQUEST_PARTIAL_LIST (..) => MISSION_REQUEST_PARTIAL_LIST_DATA :: ID , Self :: UTM_GLOBAL_POSITION (..) => UTM_GLOBAL_POSITION_DATA :: ID , Self :: HOME_POSITION (..) => HOME_POSITION_DATA :: ID , Self :: UAVCAN_NODE_INFO (..) => UAVCAN_NODE_INFO_DATA :: ID , Self :: PLAY_TUNE_V2 (..) => PLAY_TUNE_V2_DATA :: ID , Self :: MISSION_REQUEST_LIST (..) => MISSION_REQUEST_LIST_DATA :: ID , Self :: MISSION_REQUEST_INT (..) => MISSION_REQUEST_INT_DATA :: ID , Self :: DATA_STREAM (..) => DATA_STREAM_DATA :: ID , Self :: VIDEO_STREAM_INFORMATION (..) => VIDEO_STREAM_INFORMATION_DATA :: ID , Self :: CANFD_FRAME (..) => CANFD_FRAME_DATA :: ID , Self :: HYGROMETER_SENSOR (..) => HYGROMETER_SENSOR_DATA :: ID , Self :: POSITION_TARGET_GLOBAL_INT (..) => POSITION_TARGET_GLOBAL_INT_DATA :: ID , Self :: HIGH_LATENCY2 (..) => HIGH_LATENCY2_DATA :: ID , Self :: GLOBAL_POSITION_INT_COV (..) => GLOBAL_POSITION_INT_COV_DATA :: ID , Self :: NAMED_VALUE_INT (..) => NAMED_VALUE_INT_DATA :: ID , Self :: CHANGE_OPERATOR_CONTROL_ACK (..) => CHANGE_OPERATOR_CONTROL_ACK_DATA :: ID , Self :: GIMBAL_MANAGER_INFORMATION (..) => GIMBAL_MANAGER_INFORMATION_DATA :: ID , Self :: COMPONENT_METADATA (..) => COMPONENT_METADATA_DATA :: ID , Self :: LOGGING_ACK (..) => LOGGING_ACK_DATA :: ID , Self :: RC_CHANNELS_RAW (..) => RC_CHANNELS_RAW_DATA :: ID , Self :: POSITION_TARGET_LOCAL_NED (..) => POSITION_TARGET_LOCAL_NED_DATA :: ID , Self :: PARAM_EXT_SET (..) => PARAM_EXT_SET_DATA :: ID , Self :: HEARTBEAT (..) => HEARTBEAT_DATA :: ID , Self :: WIFI_CONFIG_AP (..) => WIFI_CONFIG_AP_DATA :: ID , Self :: SCALED_IMU3 (..) => SCALED_IMU3_DATA :: ID , Self :: PARAM_EXT_VALUE (..) => PARAM_EXT_VALUE_DATA :: ID , Self :: WINCH_STATUS (..) => WINCH_STATUS_DATA :: ID , Self :: PARAM_REQUEST_READ (..) => PARAM_REQUEST_READ_DATA :: ID , Self :: HIGHRES_IMU (..) => HIGHRES_IMU_DATA :: ID , Self :: HIL_GPS (..) => HIL_GPS_DATA :: ID , Self :: TERRAIN_REQUEST (..) => TERRAIN_REQUEST_DATA :: ID , Self :: ATTITUDE (..) => ATTITUDE_DATA :: ID , Self :: SYSTEM_TIME (..) => SYSTEM_TIME_DATA :: ID , Self :: ATTITUDE_TARGET (..) => ATTITUDE_TARGET_DATA :: ID , Self :: DATA_TRANSMISSION_HANDSHAKE (..) => DATA_TRANSMISSION_HANDSHAKE_DATA :: ID , Self :: MESSAGE_INTERVAL (..) => MESSAGE_INTERVAL_DATA :: ID , Self :: TUNNEL (..) => TUNNEL_DATA :: ID , Self :: RAW_IMU (..) => RAW_IMU_DATA :: ID , Self :: OPEN_DRONE_ID_BASIC_ID (..) => OPEN_DRONE_ID_BASIC_ID_DATA :: ID , Self :: SCALED_PRESSURE (..) => SCALED_PRESSURE_DATA :: ID , Self :: GIMBAL_DEVICE_ATTITUDE_STATUS (..) => GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: ID , Self :: CAN_FILTER_MODIFY (..) => CAN_FILTER_MODIFY_DATA :: ID , Self :: HIL_ACTUATOR_CONTROLS (..) => HIL_ACTUATOR_CONTROLS_DATA :: ID , Self :: REQUEST_DATA_STREAM (..) => REQUEST_DATA_STREAM_DATA :: ID , Self :: NAMED_VALUE_FLOAT (..) => NAMED_VALUE_FLOAT_DATA :: ID , Self :: ATT_POS_MOCAP (..) => ATT_POS_MOCAP_DATA :: ID , Self :: PLAY_TUNE (..) => PLAY_TUNE_DATA :: ID , Self :: GPS_STATUS (..) => GPS_STATUS_DATA :: ID , Self :: SIM_STATE (..) => SIM_STATE_DATA :: ID , Self :: POWER_STATUS (..) => POWER_STATUS_DATA :: ID , Self :: SCALED_PRESSURE3 (..) => SCALED_PRESSURE3_DATA :: ID , Self :: FOLLOW_TARGET (..) => FOLLOW_TARGET_DATA :: ID , Self :: MAG_CAL_REPORT (..) => MAG_CAL_REPORT_DATA :: ID , Self :: OPTICAL_FLOW (..) => OPTICAL_FLOW_DATA :: ID , Self :: PROTOCOL_VERSION (..) => PROTOCOL_VERSION_DATA :: ID , Self :: SERIAL_CONTROL (..) => SERIAL_CONTROL_DATA :: ID , Self :: VIDEO_STREAM_STATUS (..) => VIDEO_STREAM_STATUS_DATA :: ID , Self :: ODOMETRY (..) => ODOMETRY_DATA :: ID , Self :: CELLULAR_STATUS (..) => CELLULAR_STATUS_DATA :: ID , Self :: OPEN_DRONE_ID_SYSTEM_UPDATE (..) => OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: ID , Self :: PARAM_REQUEST_LIST (..) => PARAM_REQUEST_LIST_DATA :: ID , Self :: GIMBAL_MANAGER_SET_PITCHYAW (..) => GIMBAL_MANAGER_SET_PITCHYAW_DATA :: ID , Self :: SERVO_OUTPUT_RAW (..) => SERVO_OUTPUT_RAW_DATA :: ID , Self :: TIMESYNC (..) => TIMESYNC_DATA :: ID , Self :: RC_CHANNELS (..) => RC_CHANNELS_DATA :: ID , Self :: GLOBAL_POSITION_INT (..) => GLOBAL_POSITION_INT_DATA :: ID , Self :: ATTITUDE_QUATERNION_COV (..) => ATTITUDE_QUATERNION_COV_DATA :: ID , Self :: RADIO_STATUS (..) => RADIO_STATUS_DATA :: ID , Self :: ADSB_VEHICLE (..) => ADSB_VEHICLE_DATA :: ID , Self :: CONTROL_SYSTEM_STATE (..) => CONTROL_SYSTEM_STATE_DATA :: ID , Self :: SCALED_IMU (..) => SCALED_IMU_DATA :: ID , Self :: MISSION_CLEAR_ALL (..) => MISSION_CLEAR_ALL_DATA :: ID , Self :: VICON_POSITION_ESTIMATE (..) => VICON_POSITION_ESTIMATE_DATA :: ID , Self :: TERRAIN_DATA (..) => TERRAIN_DATA_DATA :: ID , Self :: ATTITUDE_QUATERNION (..) => ATTITUDE_QUATERNION_DATA :: ID , Self :: CAMERA_IMAGE_CAPTURED (..) => CAMERA_IMAGE_CAPTURED_DATA :: ID , Self :: VISION_POSITION_ESTIMATE (..) => VISION_POSITION_ESTIMATE_DATA :: ID , Self :: LOG_REQUEST_DATA (..) => LOG_REQUEST_DATA_DATA :: ID , Self :: PING (..) => PING_DATA :: ID , Self :: VIBRATION (..) => VIBRATION_DATA :: ID , Self :: FLIGHT_INFORMATION (..) => FLIGHT_INFORMATION_DATA :: ID , Self :: GPS_RAW_INT (..) => GPS_RAW_INT_DATA :: ID , Self :: MOUNT_ORIENTATION (..) => MOUNT_ORIENTATION_DATA :: ID , Self :: LOGGING_DATA (..) => LOGGING_DATA_DATA :: ID , Self :: PARAM_SET (..) => PARAM_SET_DATA :: ID , Self :: GIMBAL_MANAGER_STATUS (..) => GIMBAL_MANAGER_STATUS_DATA :: ID , Self :: RAW_RPM (..) => RAW_RPM_DATA :: ID , Self :: TERRAIN_CHECK (..) => TERRAIN_CHECK_DATA :: ID , Self :: ACTUATOR_OUTPUT_STATUS (..) => ACTUATOR_OUTPUT_STATUS_DATA :: ID , Self :: V2_EXTENSION (..) => V2_EXTENSION_DATA :: ID , Self :: COMPONENT_INFORMATION (..) => COMPONENT_INFORMATION_DATA :: ID , Self :: HIL_STATE (..) => HIL_STATE_DATA :: ID , Self :: CAMERA_TRACKING_IMAGE_STATUS (..) => CAMERA_TRACKING_IMAGE_STATUS_DATA :: ID , Self :: RC_CHANNELS_SCALED (..) => RC_CHANNELS_SCALED_DATA :: ID , Self :: EVENT (..) => EVENT_DATA :: ID , Self :: WHEEL_DISTANCE (..) => WHEEL_DISTANCE_DATA :: ID , Self :: OPEN_DRONE_ID_OPERATOR_ID (..) => OPEN_DRONE_ID_OPERATOR_ID_DATA :: ID , Self :: OPEN_DRONE_ID_SYSTEM (..) => OPEN_DRONE_ID_SYSTEM_DATA :: ID , Self :: STORAGE_INFORMATION (..) => STORAGE_INFORMATION_DATA :: ID , Self :: PARAM_VALUE (..) => PARAM_VALUE_DATA :: ID , Self :: GPS_RTK (..) => GPS_RTK_DATA :: ID , Self :: ESC_INFO (..) => ESC_INFO_DATA :: ID , Self :: TERRAIN_REPORT (..) => TERRAIN_REPORT_DATA :: ID , Self :: CAMERA_CAPTURE_STATUS (..) => CAMERA_CAPTURE_STATUS_DATA :: ID , Self :: ENCAPSULATED_DATA (..) => ENCAPSULATED_DATA_DATA :: ID , Self :: HIL_SENSOR (..) => HIL_SENSOR_DATA :: ID , Self :: OPEN_DRONE_ID_ARM_STATUS (..) => OPEN_DRONE_ID_ARM_STATUS_DATA :: ID , Self :: MISSION_COUNT (..) => MISSION_COUNT_DATA :: ID , Self :: LOG_REQUEST_END (..) => LOG_REQUEST_END_DATA :: ID , Self :: OPEN_DRONE_ID_AUTHENTICATION (..) => OPEN_DRONE_ID_AUTHENTICATION_DATA :: ID , Self :: OBSTACLE_DISTANCE (..) => OBSTACLE_DISTANCE_DATA :: ID , Self :: SET_MODE (..) => SET_MODE_DATA :: ID , Self :: VFR_HUD (..) => VFR_HUD_DATA :: ID , Self :: OPTICAL_FLOW_RAD (..) => OPTICAL_FLOW_RAD_DATA :: ID , } } fn message_id_from_name (name : & str) -> Result < u32 , & 'static str > { match name { RAW_PRESSURE_DATA :: NAME => Ok (RAW_PRESSURE_DATA :: ID) , AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: NAME => Ok (AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: ID) , LOG_ERASE_DATA :: NAME => Ok (LOG_ERASE_DATA :: ID) , CAMERA_INFORMATION_DATA :: NAME => Ok (CAMERA_INFORMATION_DATA :: ID) , RESOURCE_REQUEST_DATA :: NAME => Ok (RESOURCE_REQUEST_DATA :: ID) , PARAM_EXT_REQUEST_READ_DATA :: NAME => Ok (PARAM_EXT_REQUEST_READ_DATA :: ID) , LOCAL_POSITION_NED_DATA :: NAME => Ok (LOCAL_POSITION_NED_DATA :: ID) , MANUAL_SETPOINT_DATA :: NAME => Ok (MANUAL_SETPOINT_DATA :: ID) , LOCAL_POSITION_NED_COV_DATA :: NAME => Ok (LOCAL_POSITION_NED_COV_DATA :: ID) , HIL_RC_INPUTS_RAW_DATA :: NAME => Ok (HIL_RC_INPUTS_RAW_DATA :: ID) , ESTIMATOR_STATUS_DATA :: NAME => Ok (ESTIMATOR_STATUS_DATA :: ID) , SAFETY_ALLOWED_AREA_DATA :: NAME => Ok (SAFETY_ALLOWED_AREA_DATA :: ID) , CAMERA_TRIGGER_DATA :: NAME => Ok (CAMERA_TRIGGER_DATA :: ID) , SCALED_IMU2_DATA :: NAME => Ok (SCALED_IMU2_DATA :: ID) , FENCE_STATUS_DATA :: NAME => Ok (FENCE_STATUS_DATA :: ID) , AUTOPILOT_VERSION_DATA :: NAME => Ok (AUTOPILOT_VERSION_DATA :: ID) , ESC_STATUS_DATA :: NAME => Ok (ESC_STATUS_DATA :: ID) , TRAJECTORY_REPRESENTATION_BEZIER_DATA :: NAME => Ok (TRAJECTORY_REPRESENTATION_BEZIER_DATA :: ID) , ALTITUDE_DATA :: NAME => Ok (ALTITUDE_DATA :: ID) , HIGH_LATENCY_DATA :: NAME => Ok (HIGH_LATENCY_DATA :: ID) , SCALED_PRESSURE2_DATA :: NAME => Ok (SCALED_PRESSURE2_DATA :: ID) , GIMBAL_DEVICE_SET_ATTITUDE_DATA :: NAME => Ok (GIMBAL_DEVICE_SET_ATTITUDE_DATA :: ID) , VISION_SPEED_ESTIMATE_DATA :: NAME => Ok (VISION_SPEED_ESTIMATE_DATA :: ID) , FILE_TRANSFER_PROTOCOL_DATA :: NAME => Ok (FILE_TRANSFER_PROTOCOL_DATA :: ID) , MISSION_REQUEST_DATA :: NAME => Ok (MISSION_REQUEST_DATA :: ID) , RESPONSE_EVENT_ERROR_DATA :: NAME => Ok (RESPONSE_EVENT_ERROR_DATA :: ID) , NAV_CONTROLLER_OUTPUT_DATA :: NAME => Ok (NAV_CONTROLLER_OUTPUT_DATA :: ID) , SYS_STATUS_DATA :: NAME => Ok (SYS_STATUS_DATA :: ID) , LOG_DATA_DATA :: NAME => Ok (LOG_DATA_DATA :: ID) , CHANGE_OPERATOR_CONTROL_DATA :: NAME => Ok (CHANGE_OPERATOR_CONTROL_DATA :: ID) , COMMAND_ACK_DATA :: NAME => Ok (COMMAND_ACK_DATA :: ID) , HIL_OPTICAL_FLOW_DATA :: NAME => Ok (HIL_OPTICAL_FLOW_DATA :: ID) , ORBIT_EXECUTION_STATUS_DATA :: NAME => Ok (ORBIT_EXECUTION_STATUS_DATA :: ID) , DEBUG_VECT_DATA :: NAME => Ok (DEBUG_VECT_DATA :: ID) , TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: NAME => Ok (TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: ID) , SMART_BATTERY_INFO_DATA :: NAME => Ok (SMART_BATTERY_INFO_DATA :: ID) , PARAM_MAP_RC_DATA :: NAME => Ok (PARAM_MAP_RC_DATA :: ID) , MISSION_ITEM_INT_DATA :: NAME => Ok (MISSION_ITEM_INT_DATA :: ID) , WIND_COV_DATA :: NAME => Ok (WIND_COV_DATA :: ID) , MANUAL_CONTROL_DATA :: NAME => Ok (MANUAL_CONTROL_DATA :: ID) , LOG_REQUEST_LIST_DATA :: NAME => Ok (LOG_REQUEST_LIST_DATA :: ID) , GLOBAL_VISION_POSITION_ESTIMATE_DATA :: NAME => Ok (GLOBAL_VISION_POSITION_ESTIMATE_DATA :: ID) , TIME_ESTIMATE_TO_TARGET_DATA :: NAME => Ok (TIME_ESTIMATE_TO_TARGET_DATA :: ID) , COMMAND_LONG_DATA :: NAME => Ok (COMMAND_LONG_DATA :: ID) , GIMBAL_MANAGER_SET_ATTITUDE_DATA :: NAME => Ok (GIMBAL_MANAGER_SET_ATTITUDE_DATA :: ID) , GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: NAME => Ok (GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: ID) , OPEN_DRONE_ID_LOCATION_DATA :: NAME => Ok (OPEN_DRONE_ID_LOCATION_DATA :: ID) , HIL_CONTROLS_DATA :: NAME => Ok (HIL_CONTROLS_DATA :: ID) , MISSION_SET_CURRENT_DATA :: NAME => Ok (MISSION_SET_CURRENT_DATA :: ID) , SET_POSITION_TARGET_LOCAL_NED_DATA :: NAME => Ok (SET_POSITION_TARGET_LOCAL_NED_DATA :: ID) , HIL_STATE_QUATERNION_DATA :: NAME => Ok (HIL_STATE_QUATERNION_DATA :: ID) , SETUP_SIGNING_DATA :: NAME => Ok (SETUP_SIGNING_DATA :: ID) , DISTANCE_SENSOR_DATA :: NAME => Ok (DISTANCE_SENSOR_DATA :: ID) , MISSION_CURRENT_DATA :: NAME => Ok (MISSION_CURRENT_DATA :: ID) , SET_HOME_POSITION_DATA :: NAME => Ok (SET_HOME_POSITION_DATA :: ID) , COMMAND_CANCEL_DATA :: NAME => Ok (COMMAND_CANCEL_DATA :: ID) , GPS_INJECT_DATA_DATA :: NAME => Ok (GPS_INJECT_DATA_DATA :: ID) , GPS_INPUT_DATA :: NAME => Ok (GPS_INPUT_DATA :: ID) , UAVCAN_NODE_STATUS_DATA :: NAME => Ok (UAVCAN_NODE_STATUS_DATA :: ID) , CELLULAR_CONFIG_DATA :: NAME => Ok (CELLULAR_CONFIG_DATA :: ID) , GENERATOR_STATUS_DATA :: NAME => Ok (GENERATOR_STATUS_DATA :: ID) , CAN_FRAME_DATA :: NAME => Ok (CAN_FRAME_DATA :: ID) , OPEN_DRONE_ID_MESSAGE_PACK_DATA :: NAME => Ok (OPEN_DRONE_ID_MESSAGE_PACK_DATA :: ID) , MISSION_ITEM_REACHED_DATA :: NAME => Ok (MISSION_ITEM_REACHED_DATA :: ID) , SET_ATTITUDE_TARGET_DATA :: NAME => Ok (SET_ATTITUDE_TARGET_DATA :: ID) , GPS_GLOBAL_ORIGIN_DATA :: NAME => Ok (GPS_GLOBAL_ORIGIN_DATA :: ID) , SET_ACTUATOR_CONTROL_TARGET_DATA :: NAME => Ok (SET_ACTUATOR_CONTROL_TARGET_DATA :: ID) , CAMERA_FOV_STATUS_DATA :: NAME => Ok (CAMERA_FOV_STATUS_DATA :: ID) , SET_POSITION_TARGET_GLOBAL_INT_DATA :: NAME => Ok (SET_POSITION_TARGET_GLOBAL_INT_DATA :: ID) , MISSION_ITEM_DATA :: NAME => Ok (MISSION_ITEM_DATA :: ID) , CURRENT_EVENT_SEQUENCE_DATA :: NAME => Ok (CURRENT_EVENT_SEQUENCE_DATA :: ID) , MISSION_ACK_DATA :: NAME => Ok (MISSION_ACK_DATA :: ID) , PARAM_EXT_REQUEST_LIST_DATA :: NAME => Ok (PARAM_EXT_REQUEST_LIST_DATA :: ID) , RC_CHANNELS_OVERRIDE_DATA :: NAME => Ok (RC_CHANNELS_OVERRIDE_DATA :: ID) , AUTH_KEY_DATA :: NAME => Ok (AUTH_KEY_DATA :: ID) , ISBD_LINK_STATUS_DATA :: NAME => Ok (ISBD_LINK_STATUS_DATA :: ID) , COMMAND_INT_DATA :: NAME => Ok (COMMAND_INT_DATA :: ID) , LOG_ENTRY_DATA :: NAME => Ok (LOG_ENTRY_DATA :: ID) , GPS2_RAW_DATA :: NAME => Ok (GPS2_RAW_DATA :: ID) , GPS2_RTK_DATA :: NAME => Ok (GPS2_RTK_DATA :: ID) , COLLISION_DATA :: NAME => Ok (COLLISION_DATA :: ID) , ONBOARD_COMPUTER_STATUS_DATA :: NAME => Ok (ONBOARD_COMPUTER_STATUS_DATA :: ID) , DEBUG_DATA :: NAME => Ok (DEBUG_DATA :: ID) , MEMORY_VECT_DATA :: NAME => Ok (MEMORY_VECT_DATA :: ID) , GIMBAL_DEVICE_INFORMATION_DATA :: NAME => Ok (GIMBAL_DEVICE_INFORMATION_DATA :: ID) , EXTENDED_SYS_STATE_DATA :: NAME => Ok (EXTENDED_SYS_STATE_DATA :: ID) , SUPPORTED_TUNES_DATA :: NAME => Ok (SUPPORTED_TUNES_DATA :: ID) , CAMERA_SETTINGS_DATA :: NAME => Ok (CAMERA_SETTINGS_DATA :: ID) , LOGGING_DATA_ACKED_DATA :: NAME => Ok (LOGGING_DATA_ACKED_DATA :: ID) , LINK_NODE_STATUS_DATA :: NAME => Ok (LINK_NODE_STATUS_DATA :: ID) , AIS_VESSEL_DATA :: NAME => Ok (AIS_VESSEL_DATA :: ID) , DEBUG_FLOAT_ARRAY_DATA :: NAME => Ok (DEBUG_FLOAT_ARRAY_DATA :: ID) , PARAM_EXT_ACK_DATA :: NAME => Ok (PARAM_EXT_ACK_DATA :: ID) , MISSION_WRITE_PARTIAL_LIST_DATA :: NAME => Ok (MISSION_WRITE_PARTIAL_LIST_DATA :: ID) , BATTERY_STATUS_DATA :: NAME => Ok (BATTERY_STATUS_DATA :: ID) , LANDING_TARGET_DATA :: NAME => Ok (LANDING_TARGET_DATA :: ID) , CAMERA_TRACKING_GEO_STATUS_DATA :: NAME => Ok (CAMERA_TRACKING_GEO_STATUS_DATA :: ID) , REQUEST_EVENT_DATA :: NAME => Ok (REQUEST_EVENT_DATA :: ID) , SAFETY_SET_ALLOWED_AREA_DATA :: NAME => Ok (SAFETY_SET_ALLOWED_AREA_DATA :: ID) , EFI_STATUS_DATA :: NAME => Ok (EFI_STATUS_DATA :: ID) , STATUSTEXT_DATA :: NAME => Ok (STATUSTEXT_DATA :: ID) , OPEN_DRONE_ID_SELF_ID_DATA :: NAME => Ok (OPEN_DRONE_ID_SELF_ID_DATA :: ID) , LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: NAME => Ok (LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: ID) , GPS_RTCM_DATA_DATA :: NAME => Ok (GPS_RTCM_DATA_DATA :: ID) , SET_GPS_GLOBAL_ORIGIN_DATA :: NAME => Ok (SET_GPS_GLOBAL_ORIGIN_DATA :: ID) , ACTUATOR_CONTROL_TARGET_DATA :: NAME => Ok (ACTUATOR_CONTROL_TARGET_DATA :: ID) , BUTTON_CHANGE_DATA :: NAME => Ok (BUTTON_CHANGE_DATA :: ID) , MISSION_REQUEST_PARTIAL_LIST_DATA :: NAME => Ok (MISSION_REQUEST_PARTIAL_LIST_DATA :: ID) , UTM_GLOBAL_POSITION_DATA :: NAME => Ok (UTM_GLOBAL_POSITION_DATA :: ID) , HOME_POSITION_DATA :: NAME => Ok (HOME_POSITION_DATA :: ID) , UAVCAN_NODE_INFO_DATA :: NAME => Ok (UAVCAN_NODE_INFO_DATA :: ID) , PLAY_TUNE_V2_DATA :: NAME => Ok (PLAY_TUNE_V2_DATA :: ID) , MISSION_REQUEST_LIST_DATA :: NAME => Ok (MISSION_REQUEST_LIST_DATA :: ID) , MISSION_REQUEST_INT_DATA :: NAME => Ok (MISSION_REQUEST_INT_DATA :: ID) , DATA_STREAM_DATA :: NAME => Ok (DATA_STREAM_DATA :: ID) , VIDEO_STREAM_INFORMATION_DATA :: NAME => Ok (VIDEO_STREAM_INFORMATION_DATA :: ID) , CANFD_FRAME_DATA :: NAME => Ok (CANFD_FRAME_DATA :: ID) , HYGROMETER_SENSOR_DATA :: NAME => Ok (HYGROMETER_SENSOR_DATA :: ID) , POSITION_TARGET_GLOBAL_INT_DATA :: NAME => Ok (POSITION_TARGET_GLOBAL_INT_DATA :: ID) , HIGH_LATENCY2_DATA :: NAME => Ok (HIGH_LATENCY2_DATA :: ID) , GLOBAL_POSITION_INT_COV_DATA :: NAME => Ok (GLOBAL_POSITION_INT_COV_DATA :: ID) , NAMED_VALUE_INT_DATA :: NAME => Ok (NAMED_VALUE_INT_DATA :: ID) , CHANGE_OPERATOR_CONTROL_ACK_DATA :: NAME => Ok (CHANGE_OPERATOR_CONTROL_ACK_DATA :: ID) , GIMBAL_MANAGER_INFORMATION_DATA :: NAME => Ok (GIMBAL_MANAGER_INFORMATION_DATA :: ID) , COMPONENT_METADATA_DATA :: NAME => Ok (COMPONENT_METADATA_DATA :: ID) , LOGGING_ACK_DATA :: NAME => Ok (LOGGING_ACK_DATA :: ID) , RC_CHANNELS_RAW_DATA :: NAME => Ok (RC_CHANNELS_RAW_DATA :: ID) , POSITION_TARGET_LOCAL_NED_DATA :: NAME => Ok (POSITION_TARGET_LOCAL_NED_DATA :: ID) , PARAM_EXT_SET_DATA :: NAME => Ok (PARAM_EXT_SET_DATA :: ID) , HEARTBEAT_DATA :: NAME => Ok (HEARTBEAT_DATA :: ID) , WIFI_CONFIG_AP_DATA :: NAME => Ok (WIFI_CONFIG_AP_DATA :: ID) , SCALED_IMU3_DATA :: NAME => Ok (SCALED_IMU3_DATA :: ID) , PARAM_EXT_VALUE_DATA :: NAME => Ok (PARAM_EXT_VALUE_DATA :: ID) , WINCH_STATUS_DATA :: NAME => Ok (WINCH_STATUS_DATA :: ID) , PARAM_REQUEST_READ_DATA :: NAME => Ok (PARAM_REQUEST_READ_DATA :: ID) , HIGHRES_IMU_DATA :: NAME => Ok (HIGHRES_IMU_DATA :: ID) , HIL_GPS_DATA :: NAME => Ok (HIL_GPS_DATA :: ID) , TERRAIN_REQUEST_DATA :: NAME => Ok (TERRAIN_REQUEST_DATA :: ID) , ATTITUDE_DATA :: NAME => Ok (ATTITUDE_DATA :: ID) , SYSTEM_TIME_DATA :: NAME => Ok (SYSTEM_TIME_DATA :: ID) , ATTITUDE_TARGET_DATA :: NAME => Ok (ATTITUDE_TARGET_DATA :: ID) , DATA_TRANSMISSION_HANDSHAKE_DATA :: NAME => Ok (DATA_TRANSMISSION_HANDSHAKE_DATA :: ID) , MESSAGE_INTERVAL_DATA :: NAME => Ok (MESSAGE_INTERVAL_DATA :: ID) , TUNNEL_DATA :: NAME => Ok (TUNNEL_DATA :: ID) , RAW_IMU_DATA :: NAME => Ok (RAW_IMU_DATA :: ID) , OPEN_DRONE_ID_BASIC_ID_DATA :: NAME => Ok (OPEN_DRONE_ID_BASIC_ID_DATA :: ID) , SCALED_PRESSURE_DATA :: NAME => Ok (SCALED_PRESSURE_DATA :: ID) , GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: NAME => Ok (GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: ID) , CAN_FILTER_MODIFY_DATA :: NAME => Ok (CAN_FILTER_MODIFY_DATA :: ID) , HIL_ACTUATOR_CONTROLS_DATA :: NAME => Ok (HIL_ACTUATOR_CONTROLS_DATA :: ID) , REQUEST_DATA_STREAM_DATA :: NAME => Ok (REQUEST_DATA_STREAM_DATA :: ID) , NAMED_VALUE_FLOAT_DATA :: NAME => Ok (NAMED_VALUE_FLOAT_DATA :: ID) , ATT_POS_MOCAP_DATA :: NAME => Ok (ATT_POS_MOCAP_DATA :: ID) , PLAY_TUNE_DATA :: NAME => Ok (PLAY_TUNE_DATA :: ID) , GPS_STATUS_DATA :: NAME => Ok (GPS_STATUS_DATA :: ID) , SIM_STATE_DATA :: NAME => Ok (SIM_STATE_DATA :: ID) , POWER_STATUS_DATA :: NAME => Ok (POWER_STATUS_DATA :: ID) , SCALED_PRESSURE3_DATA :: NAME => Ok (SCALED_PRESSURE3_DATA :: ID) , FOLLOW_TARGET_DATA :: NAME => Ok (FOLLOW_TARGET_DATA :: ID) , MAG_CAL_REPORT_DATA :: NAME => Ok (MAG_CAL_REPORT_DATA :: ID) , OPTICAL_FLOW_DATA :: NAME => Ok (OPTICAL_FLOW_DATA :: ID) , PROTOCOL_VERSION_DATA :: NAME => Ok (PROTOCOL_VERSION_DATA :: ID) , SERIAL_CONTROL_DATA :: NAME => Ok (SERIAL_CONTROL_DATA :: ID) , VIDEO_STREAM_STATUS_DATA :: NAME => Ok (VIDEO_STREAM_STATUS_DATA :: ID) , ODOMETRY_DATA :: NAME => Ok (ODOMETRY_DATA :: ID) , CELLULAR_STATUS_DATA :: NAME => Ok (CELLULAR_STATUS_DATA :: ID) , OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: NAME => Ok (OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: ID) , PARAM_REQUEST_LIST_DATA :: NAME => Ok (PARAM_REQUEST_LIST_DATA :: ID) , GIMBAL_MANAGER_SET_PITCHYAW_DATA :: NAME => Ok (GIMBAL_MANAGER_SET_PITCHYAW_DATA :: ID) , SERVO_OUTPUT_RAW_DATA :: NAME => Ok (SERVO_OUTPUT_RAW_DATA :: ID) , TIMESYNC_DATA :: NAME => Ok (TIMESYNC_DATA :: ID) , RC_CHANNELS_DATA :: NAME => Ok (RC_CHANNELS_DATA :: ID) , GLOBAL_POSITION_INT_DATA :: NAME => Ok (GLOBAL_POSITION_INT_DATA :: ID) , ATTITUDE_QUATERNION_COV_DATA :: NAME => Ok (ATTITUDE_QUATERNION_COV_DATA :: ID) , RADIO_STATUS_DATA :: NAME => Ok (RADIO_STATUS_DATA :: ID) , ADSB_VEHICLE_DATA :: NAME => Ok (ADSB_VEHICLE_DATA :: ID) , CONTROL_SYSTEM_STATE_DATA :: NAME => Ok (CONTROL_SYSTEM_STATE_DATA :: ID) , SCALED_IMU_DATA :: NAME => Ok (SCALED_IMU_DATA :: ID) , MISSION_CLEAR_ALL_DATA :: NAME => Ok (MISSION_CLEAR_ALL_DATA :: ID) , VICON_POSITION_ESTIMATE_DATA :: NAME => Ok (VICON_POSITION_ESTIMATE_DATA :: ID) , TERRAIN_DATA_DATA :: NAME => Ok (TERRAIN_DATA_DATA :: ID) , ATTITUDE_QUATERNION_DATA :: NAME => Ok (ATTITUDE_QUATERNION_DATA :: ID) , CAMERA_IMAGE_CAPTURED_DATA :: NAME => Ok (CAMERA_IMAGE_CAPTURED_DATA :: ID) , VISION_POSITION_ESTIMATE_DATA :: NAME => Ok (VISION_POSITION_ESTIMATE_DATA :: ID) , LOG_REQUEST_DATA_DATA :: NAME => Ok (LOG_REQUEST_DATA_DATA :: ID) , PING_DATA :: NAME => Ok (PING_DATA :: ID) , VIBRATION_DATA :: NAME => Ok (VIBRATION_DATA :: ID) , FLIGHT_INFORMATION_DATA :: NAME => Ok (FLIGHT_INFORMATION_DATA :: ID) , GPS_RAW_INT_DATA :: NAME => Ok (GPS_RAW_INT_DATA :: ID) , MOUNT_ORIENTATION_DATA :: NAME => Ok (MOUNT_ORIENTATION_DATA :: ID) , LOGGING_DATA_DATA :: NAME => Ok (LOGGING_DATA_DATA :: ID) , PARAM_SET_DATA :: NAME => Ok (PARAM_SET_DATA :: ID) , GIMBAL_MANAGER_STATUS_DATA :: NAME => Ok (GIMBAL_MANAGER_STATUS_DATA :: ID) , RAW_RPM_DATA :: NAME => Ok (RAW_RPM_DATA :: ID) , TERRAIN_CHECK_DATA :: NAME => Ok (TERRAIN_CHECK_DATA :: ID) , ACTUATOR_OUTPUT_STATUS_DATA :: NAME => Ok (ACTUATOR_OUTPUT_STATUS_DATA :: ID) , V2_EXTENSION_DATA :: NAME => Ok (V2_EXTENSION_DATA :: ID) , COMPONENT_INFORMATION_DATA :: NAME => Ok (COMPONENT_INFORMATION_DATA :: ID) , HIL_STATE_DATA :: NAME => Ok (HIL_STATE_DATA :: ID) , CAMERA_TRACKING_IMAGE_STATUS_DATA :: NAME => Ok (CAMERA_TRACKING_IMAGE_STATUS_DATA :: ID) , RC_CHANNELS_SCALED_DATA :: NAME => Ok (RC_CHANNELS_SCALED_DATA :: ID) , EVENT_DATA :: NAME => Ok (EVENT_DATA :: ID) , WHEEL_DISTANCE_DATA :: NAME => Ok (WHEEL_DISTANCE_DATA :: ID) , OPEN_DRONE_ID_OPERATOR_ID_DATA :: NAME => Ok (OPEN_DRONE_ID_OPERATOR_ID_DATA :: ID) , OPEN_DRONE_ID_SYSTEM_DATA :: NAME => Ok (OPEN_DRONE_ID_SYSTEM_DATA :: ID) , STORAGE_INFORMATION_DATA :: NAME => Ok (STORAGE_INFORMATION_DATA :: ID) , PARAM_VALUE_DATA :: NAME => Ok (PARAM_VALUE_DATA :: ID) , GPS_RTK_DATA :: NAME => Ok (GPS_RTK_DATA :: ID) , ESC_INFO_DATA :: NAME => Ok (ESC_INFO_DATA :: ID) , TERRAIN_REPORT_DATA :: NAME => Ok (TERRAIN_REPORT_DATA :: ID) , CAMERA_CAPTURE_STATUS_DATA :: NAME => Ok (CAMERA_CAPTURE_STATUS_DATA :: ID) , ENCAPSULATED_DATA_DATA :: NAME => Ok (ENCAPSULATED_DATA_DATA :: ID) , HIL_SENSOR_DATA :: NAME => Ok (HIL_SENSOR_DATA :: ID) , OPEN_DRONE_ID_ARM_STATUS_DATA :: NAME => Ok (OPEN_DRONE_ID_ARM_STATUS_DATA :: ID) , MISSION_COUNT_DATA :: NAME => Ok (MISSION_COUNT_DATA :: ID) , LOG_REQUEST_END_DATA :: NAME => Ok (LOG_REQUEST_END_DATA :: ID) , OPEN_DRONE_ID_AUTHENTICATION_DATA :: NAME => Ok (OPEN_DRONE_ID_AUTHENTICATION_DATA :: ID) , OBSTACLE_DISTANCE_DATA :: NAME => Ok (OBSTACLE_DISTANCE_DATA :: ID) , SET_MODE_DATA :: NAME => Ok (SET_MODE_DATA :: ID) , VFR_HUD_DATA :: NAME => Ok (VFR_HUD_DATA :: ID) , OPTICAL_FLOW_RAD_DATA :: NAME => Ok (OPTICAL_FLOW_RAD_DATA :: ID) , _ => { Err ("Invalid message name.") } } } fn default_message_from_id (id : u32) -> Result < Self , & 'static str > { match id { RAW_PRESSURE_DATA :: ID => Ok (Self :: RAW_PRESSURE (RAW_PRESSURE_DATA :: default ())) , AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: ID => Ok (Self :: AUTOPILOT_STATE_FOR_GIMBAL_DEVICE (AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: default ())) , LOG_ERASE_DATA :: ID => Ok (Self :: LOG_ERASE (LOG_ERASE_DATA :: default ())) , CAMERA_INFORMATION_DATA :: ID => Ok (Self :: CAMERA_INFORMATION (CAMERA_INFORMATION_DATA :: default ())) , RESOURCE_REQUEST_DATA :: ID => Ok (Self :: RESOURCE_REQUEST (RESOURCE_REQUEST_DATA :: default ())) , PARAM_EXT_REQUEST_READ_DATA :: ID => Ok (Self :: PARAM_EXT_REQUEST_READ (PARAM_EXT_REQUEST_READ_DATA :: default ())) , LOCAL_POSITION_NED_DATA :: ID => Ok (Self :: LOCAL_POSITION_NED (LOCAL_POSITION_NED_DATA :: default ())) , MANUAL_SETPOINT_DATA :: ID => Ok (Self :: MANUAL_SETPOINT (MANUAL_SETPOINT_DATA :: default ())) , LOCAL_POSITION_NED_COV_DATA :: ID => Ok (Self :: LOCAL_POSITION_NED_COV (LOCAL_POSITION_NED_COV_DATA :: default ())) , HIL_RC_INPUTS_RAW_DATA :: ID => Ok (Self :: HIL_RC_INPUTS_RAW (HIL_RC_INPUTS_RAW_DATA :: default ())) , ESTIMATOR_STATUS_DATA :: ID => Ok (Self :: ESTIMATOR_STATUS (ESTIMATOR_STATUS_DATA :: default ())) , SAFETY_ALLOWED_AREA_DATA :: ID => Ok (Self :: SAFETY_ALLOWED_AREA (SAFETY_ALLOWED_AREA_DATA :: default ())) , CAMERA_TRIGGER_DATA :: ID => Ok (Self :: CAMERA_TRIGGER (CAMERA_TRIGGER_DATA :: default ())) , SCALED_IMU2_DATA :: ID => Ok (Self :: SCALED_IMU2 (SCALED_IMU2_DATA :: default ())) , FENCE_STATUS_DATA :: ID => Ok (Self :: FENCE_STATUS (FENCE_STATUS_DATA :: default ())) , AUTOPILOT_VERSION_DATA :: ID => Ok (Self :: AUTOPILOT_VERSION (AUTOPILOT_VERSION_DATA :: default ())) , ESC_STATUS_DATA :: ID => Ok (Self :: ESC_STATUS (ESC_STATUS_DATA :: default ())) , TRAJECTORY_REPRESENTATION_BEZIER_DATA :: ID => Ok (Self :: TRAJECTORY_REPRESENTATION_BEZIER (TRAJECTORY_REPRESENTATION_BEZIER_DATA :: default ())) , ALTITUDE_DATA :: ID => Ok (Self :: ALTITUDE (ALTITUDE_DATA :: default ())) , HIGH_LATENCY_DATA :: ID => Ok (Self :: HIGH_LATENCY (HIGH_LATENCY_DATA :: default ())) , SCALED_PRESSURE2_DATA :: ID => Ok (Self :: SCALED_PRESSURE2 (SCALED_PRESSURE2_DATA :: default ())) , GIMBAL_DEVICE_SET_ATTITUDE_DATA :: ID => Ok (Self :: GIMBAL_DEVICE_SET_ATTITUDE (GIMBAL_DEVICE_SET_ATTITUDE_DATA :: default ())) , VISION_SPEED_ESTIMATE_DATA :: ID => Ok (Self :: VISION_SPEED_ESTIMATE (VISION_SPEED_ESTIMATE_DATA :: default ())) , FILE_TRANSFER_PROTOCOL_DATA :: ID => Ok (Self :: FILE_TRANSFER_PROTOCOL (FILE_TRANSFER_PROTOCOL_DATA :: default ())) , MISSION_REQUEST_DATA :: ID => Ok (Self :: MISSION_REQUEST (MISSION_REQUEST_DATA :: default ())) , RESPONSE_EVENT_ERROR_DATA :: ID => Ok (Self :: RESPONSE_EVENT_ERROR (RESPONSE_EVENT_ERROR_DATA :: default ())) , NAV_CONTROLLER_OUTPUT_DATA :: ID => Ok (Self :: NAV_CONTROLLER_OUTPUT (NAV_CONTROLLER_OUTPUT_DATA :: default ())) , SYS_STATUS_DATA :: ID => Ok (Self :: SYS_STATUS (SYS_STATUS_DATA :: default ())) , LOG_DATA_DATA :: ID => Ok (Self :: LOG_DATA (LOG_DATA_DATA :: default ())) , CHANGE_OPERATOR_CONTROL_DATA :: ID => Ok (Self :: CHANGE_OPERATOR_CONTROL (CHANGE_OPERATOR_CONTROL_DATA :: default ())) , COMMAND_ACK_DATA :: ID => Ok (Self :: COMMAND_ACK (COMMAND_ACK_DATA :: default ())) , HIL_OPTICAL_FLOW_DATA :: ID => Ok (Self :: HIL_OPTICAL_FLOW (HIL_OPTICAL_FLOW_DATA :: default ())) , ORBIT_EXECUTION_STATUS_DATA :: ID => Ok (Self :: ORBIT_EXECUTION_STATUS (ORBIT_EXECUTION_STATUS_DATA :: default ())) , DEBUG_VECT_DATA :: ID => Ok (Self :: DEBUG_VECT (DEBUG_VECT_DATA :: default ())) , TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: ID => Ok (Self :: TRAJECTORY_REPRESENTATION_WAYPOINTS (TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: default ())) , SMART_BATTERY_INFO_DATA :: ID => Ok (Self :: SMART_BATTERY_INFO (SMART_BATTERY_INFO_DATA :: default ())) , PARAM_MAP_RC_DATA :: ID => Ok (Self :: PARAM_MAP_RC (PARAM_MAP_RC_DATA :: default ())) , MISSION_ITEM_INT_DATA :: ID => Ok (Self :: MISSION_ITEM_INT (MISSION_ITEM_INT_DATA :: default ())) , WIND_COV_DATA :: ID => Ok (Self :: WIND_COV (WIND_COV_DATA :: default ())) , MANUAL_CONTROL_DATA :: ID => Ok (Self :: MANUAL_CONTROL (MANUAL_CONTROL_DATA :: default ())) , LOG_REQUEST_LIST_DATA :: ID => Ok (Self :: LOG_REQUEST_LIST (LOG_REQUEST_LIST_DATA :: default ())) , GLOBAL_VISION_POSITION_ESTIMATE_DATA :: ID => Ok (Self :: GLOBAL_VISION_POSITION_ESTIMATE (GLOBAL_VISION_POSITION_ESTIMATE_DATA :: default ())) , TIME_ESTIMATE_TO_TARGET_DATA :: ID => Ok (Self :: TIME_ESTIMATE_TO_TARGET (TIME_ESTIMATE_TO_TARGET_DATA :: default ())) , COMMAND_LONG_DATA :: ID => Ok (Self :: COMMAND_LONG (COMMAND_LONG_DATA :: default ())) , GIMBAL_MANAGER_SET_ATTITUDE_DATA :: ID => Ok (Self :: GIMBAL_MANAGER_SET_ATTITUDE (GIMBAL_MANAGER_SET_ATTITUDE_DATA :: default ())) , GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: ID => Ok (Self :: GIMBAL_MANAGER_SET_MANUAL_CONTROL (GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: default ())) , OPEN_DRONE_ID_LOCATION_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_LOCATION (OPEN_DRONE_ID_LOCATION_DATA :: default ())) , HIL_CONTROLS_DATA :: ID => Ok (Self :: HIL_CONTROLS (HIL_CONTROLS_DATA :: default ())) , MISSION_SET_CURRENT_DATA :: ID => Ok (Self :: MISSION_SET_CURRENT (MISSION_SET_CURRENT_DATA :: default ())) , SET_POSITION_TARGET_LOCAL_NED_DATA :: ID => Ok (Self :: SET_POSITION_TARGET_LOCAL_NED (SET_POSITION_TARGET_LOCAL_NED_DATA :: default ())) , HIL_STATE_QUATERNION_DATA :: ID => Ok (Self :: HIL_STATE_QUATERNION (HIL_STATE_QUATERNION_DATA :: default ())) , SETUP_SIGNING_DATA :: ID => Ok (Self :: SETUP_SIGNING (SETUP_SIGNING_DATA :: default ())) , DISTANCE_SENSOR_DATA :: ID => Ok (Self :: DISTANCE_SENSOR (DISTANCE_SENSOR_DATA :: default ())) , MISSION_CURRENT_DATA :: ID => Ok (Self :: MISSION_CURRENT (MISSION_CURRENT_DATA :: default ())) , SET_HOME_POSITION_DATA :: ID => Ok (Self :: SET_HOME_POSITION (SET_HOME_POSITION_DATA :: default ())) , COMMAND_CANCEL_DATA :: ID => Ok (Self :: COMMAND_CANCEL (COMMAND_CANCEL_DATA :: default ())) , GPS_INJECT_DATA_DATA :: ID => Ok (Self :: GPS_INJECT_DATA (GPS_INJECT_DATA_DATA :: default ())) , GPS_INPUT_DATA :: ID => Ok (Self :: GPS_INPUT (GPS_INPUT_DATA :: default ())) , UAVCAN_NODE_STATUS_DATA :: ID => Ok (Self :: UAVCAN_NODE_STATUS (UAVCAN_NODE_STATUS_DATA :: default ())) , CELLULAR_CONFIG_DATA :: ID => Ok (Self :: CELLULAR_CONFIG (CELLULAR_CONFIG_DATA :: default ())) , GENERATOR_STATUS_DATA :: ID => Ok (Self :: GENERATOR_STATUS (GENERATOR_STATUS_DATA :: default ())) , CAN_FRAME_DATA :: ID => Ok (Self :: CAN_FRAME (CAN_FRAME_DATA :: default ())) , OPEN_DRONE_ID_MESSAGE_PACK_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_MESSAGE_PACK (OPEN_DRONE_ID_MESSAGE_PACK_DATA :: default ())) , MISSION_ITEM_REACHED_DATA :: ID => Ok (Self :: MISSION_ITEM_REACHED (MISSION_ITEM_REACHED_DATA :: default ())) , SET_ATTITUDE_TARGET_DATA :: ID => Ok (Self :: SET_ATTITUDE_TARGET (SET_ATTITUDE_TARGET_DATA :: default ())) , GPS_GLOBAL_ORIGIN_DATA :: ID => Ok (Self :: GPS_GLOBAL_ORIGIN (GPS_GLOBAL_ORIGIN_DATA :: default ())) , SET_ACTUATOR_CONTROL_TARGET_DATA :: ID => Ok (Self :: SET_ACTUATOR_CONTROL_TARGET (SET_ACTUATOR_CONTROL_TARGET_DATA :: default ())) , CAMERA_FOV_STATUS_DATA :: ID => Ok (Self :: CAMERA_FOV_STATUS (CAMERA_FOV_STATUS_DATA :: default ())) , SET_POSITION_TARGET_GLOBAL_INT_DATA :: ID => Ok (Self :: SET_POSITION_TARGET_GLOBAL_INT (SET_POSITION_TARGET_GLOBAL_INT_DATA :: default ())) , MISSION_ITEM_DATA :: ID => Ok (Self :: MISSION_ITEM (MISSION_ITEM_DATA :: default ())) , CURRENT_EVENT_SEQUENCE_DATA :: ID => Ok (Self :: CURRENT_EVENT_SEQUENCE (CURRENT_EVENT_SEQUENCE_DATA :: default ())) , MISSION_ACK_DATA :: ID => Ok (Self :: MISSION_ACK (MISSION_ACK_DATA :: default ())) , PARAM_EXT_REQUEST_LIST_DATA :: ID => Ok (Self :: PARAM_EXT_REQUEST_LIST (PARAM_EXT_REQUEST_LIST_DATA :: default ())) , RC_CHANNELS_OVERRIDE_DATA :: ID => Ok (Self :: RC_CHANNELS_OVERRIDE (RC_CHANNELS_OVERRIDE_DATA :: default ())) , AUTH_KEY_DATA :: ID => Ok (Self :: AUTH_KEY (AUTH_KEY_DATA :: default ())) , ISBD_LINK_STATUS_DATA :: ID => Ok (Self :: ISBD_LINK_STATUS (ISBD_LINK_STATUS_DATA :: default ())) , COMMAND_INT_DATA :: ID => Ok (Self :: COMMAND_INT (COMMAND_INT_DATA :: default ())) , LOG_ENTRY_DATA :: ID => Ok (Self :: LOG_ENTRY (LOG_ENTRY_DATA :: default ())) , GPS2_RAW_DATA :: ID => Ok (Self :: GPS2_RAW (GPS2_RAW_DATA :: default ())) , GPS2_RTK_DATA :: ID => Ok (Self :: GPS2_RTK (GPS2_RTK_DATA :: default ())) , COLLISION_DATA :: ID => Ok (Self :: COLLISION (COLLISION_DATA :: default ())) , ONBOARD_COMPUTER_STATUS_DATA :: ID => Ok (Self :: ONBOARD_COMPUTER_STATUS (ONBOARD_COMPUTER_STATUS_DATA :: default ())) , DEBUG_DATA :: ID => Ok (Self :: DEBUG (DEBUG_DATA :: default ())) , MEMORY_VECT_DATA :: ID => Ok (Self :: MEMORY_VECT (MEMORY_VECT_DATA :: default ())) , GIMBAL_DEVICE_INFORMATION_DATA :: ID => Ok (Self :: GIMBAL_DEVICE_INFORMATION (GIMBAL_DEVICE_INFORMATION_DATA :: default ())) , EXTENDED_SYS_STATE_DATA :: ID => Ok (Self :: EXTENDED_SYS_STATE (EXTENDED_SYS_STATE_DATA :: default ())) , SUPPORTED_TUNES_DATA :: ID => Ok (Self :: SUPPORTED_TUNES (SUPPORTED_TUNES_DATA :: default ())) , CAMERA_SETTINGS_DATA :: ID => Ok (Self :: CAMERA_SETTINGS (CAMERA_SETTINGS_DATA :: default ())) , LOGGING_DATA_ACKED_DATA :: ID => Ok (Self :: LOGGING_DATA_ACKED (LOGGING_DATA_ACKED_DATA :: default ())) , LINK_NODE_STATUS_DATA :: ID => Ok (Self :: LINK_NODE_STATUS (LINK_NODE_STATUS_DATA :: default ())) , AIS_VESSEL_DATA :: ID => Ok (Self :: AIS_VESSEL (AIS_VESSEL_DATA :: default ())) , DEBUG_FLOAT_ARRAY_DATA :: ID => Ok (Self :: DEBUG_FLOAT_ARRAY (DEBUG_FLOAT_ARRAY_DATA :: default ())) , PARAM_EXT_ACK_DATA :: ID => Ok (Self :: PARAM_EXT_ACK (PARAM_EXT_ACK_DATA :: default ())) , MISSION_WRITE_PARTIAL_LIST_DATA :: ID => Ok (Self :: MISSION_WRITE_PARTIAL_LIST (MISSION_WRITE_PARTIAL_LIST_DATA :: default ())) , BATTERY_STATUS_DATA :: ID => Ok (Self :: BATTERY_STATUS (BATTERY_STATUS_DATA :: default ())) , LANDING_TARGET_DATA :: ID => Ok (Self :: LANDING_TARGET (LANDING_TARGET_DATA :: default ())) , CAMERA_TRACKING_GEO_STATUS_DATA :: ID => Ok (Self :: CAMERA_TRACKING_GEO_STATUS (CAMERA_TRACKING_GEO_STATUS_DATA :: default ())) , REQUEST_EVENT_DATA :: ID => Ok (Self :: REQUEST_EVENT (REQUEST_EVENT_DATA :: default ())) , SAFETY_SET_ALLOWED_AREA_DATA :: ID => Ok (Self :: SAFETY_SET_ALLOWED_AREA (SAFETY_SET_ALLOWED_AREA_DATA :: default ())) , EFI_STATUS_DATA :: ID => Ok (Self :: EFI_STATUS (EFI_STATUS_DATA :: default ())) , STATUSTEXT_DATA :: ID => Ok (Self :: STATUSTEXT (STATUSTEXT_DATA :: default ())) , OPEN_DRONE_ID_SELF_ID_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_SELF_ID (OPEN_DRONE_ID_SELF_ID_DATA :: default ())) , LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: ID => Ok (Self :: LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET (LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: default ())) , GPS_RTCM_DATA_DATA :: ID => Ok (Self :: GPS_RTCM_DATA (GPS_RTCM_DATA_DATA :: default ())) , SET_GPS_GLOBAL_ORIGIN_DATA :: ID => Ok (Self :: SET_GPS_GLOBAL_ORIGIN (SET_GPS_GLOBAL_ORIGIN_DATA :: default ())) , ACTUATOR_CONTROL_TARGET_DATA :: ID => Ok (Self :: ACTUATOR_CONTROL_TARGET (ACTUATOR_CONTROL_TARGET_DATA :: default ())) , BUTTON_CHANGE_DATA :: ID => Ok (Self :: BUTTON_CHANGE (BUTTON_CHANGE_DATA :: default ())) , MISSION_REQUEST_PARTIAL_LIST_DATA :: ID => Ok (Self :: MISSION_REQUEST_PARTIAL_LIST (MISSION_REQUEST_PARTIAL_LIST_DATA :: default ())) , UTM_GLOBAL_POSITION_DATA :: ID => Ok (Self :: UTM_GLOBAL_POSITION (UTM_GLOBAL_POSITION_DATA :: default ())) , HOME_POSITION_DATA :: ID => Ok (Self :: HOME_POSITION (HOME_POSITION_DATA :: default ())) , UAVCAN_NODE_INFO_DATA :: ID => Ok (Self :: UAVCAN_NODE_INFO (UAVCAN_NODE_INFO_DATA :: default ())) , PLAY_TUNE_V2_DATA :: ID => Ok (Self :: PLAY_TUNE_V2 (PLAY_TUNE_V2_DATA :: default ())) , MISSION_REQUEST_LIST_DATA :: ID => Ok (Self :: MISSION_REQUEST_LIST (MISSION_REQUEST_LIST_DATA :: default ())) , MISSION_REQUEST_INT_DATA :: ID => Ok (Self :: MISSION_REQUEST_INT (MISSION_REQUEST_INT_DATA :: default ())) , DATA_STREAM_DATA :: ID => Ok (Self :: DATA_STREAM (DATA_STREAM_DATA :: default ())) , VIDEO_STREAM_INFORMATION_DATA :: ID => Ok (Self :: VIDEO_STREAM_INFORMATION (VIDEO_STREAM_INFORMATION_DATA :: default ())) , CANFD_FRAME_DATA :: ID => Ok (Self :: CANFD_FRAME (CANFD_FRAME_DATA :: default ())) , HYGROMETER_SENSOR_DATA :: ID => Ok (Self :: HYGROMETER_SENSOR (HYGROMETER_SENSOR_DATA :: default ())) , POSITION_TARGET_GLOBAL_INT_DATA :: ID => Ok (Self :: POSITION_TARGET_GLOBAL_INT (POSITION_TARGET_GLOBAL_INT_DATA :: default ())) , HIGH_LATENCY2_DATA :: ID => Ok (Self :: HIGH_LATENCY2 (HIGH_LATENCY2_DATA :: default ())) , GLOBAL_POSITION_INT_COV_DATA :: ID => Ok (Self :: GLOBAL_POSITION_INT_COV (GLOBAL_POSITION_INT_COV_DATA :: default ())) , NAMED_VALUE_INT_DATA :: ID => Ok (Self :: NAMED_VALUE_INT (NAMED_VALUE_INT_DATA :: default ())) , CHANGE_OPERATOR_CONTROL_ACK_DATA :: ID => Ok (Self :: CHANGE_OPERATOR_CONTROL_ACK (CHANGE_OPERATOR_CONTROL_ACK_DATA :: default ())) , GIMBAL_MANAGER_INFORMATION_DATA :: ID => Ok (Self :: GIMBAL_MANAGER_INFORMATION (GIMBAL_MANAGER_INFORMATION_DATA :: default ())) , COMPONENT_METADATA_DATA :: ID => Ok (Self :: COMPONENT_METADATA (COMPONENT_METADATA_DATA :: default ())) , LOGGING_ACK_DATA :: ID => Ok (Self :: LOGGING_ACK (LOGGING_ACK_DATA :: default ())) , RC_CHANNELS_RAW_DATA :: ID => Ok (Self :: RC_CHANNELS_RAW (RC_CHANNELS_RAW_DATA :: default ())) , POSITION_TARGET_LOCAL_NED_DATA :: ID => Ok (Self :: POSITION_TARGET_LOCAL_NED (POSITION_TARGET_LOCAL_NED_DATA :: default ())) , PARAM_EXT_SET_DATA :: ID => Ok (Self :: PARAM_EXT_SET (PARAM_EXT_SET_DATA :: default ())) , HEARTBEAT_DATA :: ID => Ok (Self :: HEARTBEAT (HEARTBEAT_DATA :: default ())) , WIFI_CONFIG_AP_DATA :: ID => Ok (Self :: WIFI_CONFIG_AP (WIFI_CONFIG_AP_DATA :: default ())) , SCALED_IMU3_DATA :: ID => Ok (Self :: SCALED_IMU3 (SCALED_IMU3_DATA :: default ())) , PARAM_EXT_VALUE_DATA :: ID => Ok (Self :: PARAM_EXT_VALUE (PARAM_EXT_VALUE_DATA :: default ())) , WINCH_STATUS_DATA :: ID => Ok (Self :: WINCH_STATUS (WINCH_STATUS_DATA :: default ())) , PARAM_REQUEST_READ_DATA :: ID => Ok (Self :: PARAM_REQUEST_READ (PARAM_REQUEST_READ_DATA :: default ())) , HIGHRES_IMU_DATA :: ID => Ok (Self :: HIGHRES_IMU (HIGHRES_IMU_DATA :: default ())) , HIL_GPS_DATA :: ID => Ok (Self :: HIL_GPS (HIL_GPS_DATA :: default ())) , TERRAIN_REQUEST_DATA :: ID => Ok (Self :: TERRAIN_REQUEST (TERRAIN_REQUEST_DATA :: default ())) , ATTITUDE_DATA :: ID => Ok (Self :: ATTITUDE (ATTITUDE_DATA :: default ())) , SYSTEM_TIME_DATA :: ID => Ok (Self :: SYSTEM_TIME (SYSTEM_TIME_DATA :: default ())) , ATTITUDE_TARGET_DATA :: ID => Ok (Self :: ATTITUDE_TARGET (ATTITUDE_TARGET_DATA :: default ())) , DATA_TRANSMISSION_HANDSHAKE_DATA :: ID => Ok (Self :: DATA_TRANSMISSION_HANDSHAKE (DATA_TRANSMISSION_HANDSHAKE_DATA :: default ())) , MESSAGE_INTERVAL_DATA :: ID => Ok (Self :: MESSAGE_INTERVAL (MESSAGE_INTERVAL_DATA :: default ())) , TUNNEL_DATA :: ID => Ok (Self :: TUNNEL (TUNNEL_DATA :: default ())) , RAW_IMU_DATA :: ID => Ok (Self :: RAW_IMU (RAW_IMU_DATA :: default ())) , OPEN_DRONE_ID_BASIC_ID_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_BASIC_ID (OPEN_DRONE_ID_BASIC_ID_DATA :: default ())) , SCALED_PRESSURE_DATA :: ID => Ok (Self :: SCALED_PRESSURE (SCALED_PRESSURE_DATA :: default ())) , GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: ID => Ok (Self :: GIMBAL_DEVICE_ATTITUDE_STATUS (GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: default ())) , CAN_FILTER_MODIFY_DATA :: ID => Ok (Self :: CAN_FILTER_MODIFY (CAN_FILTER_MODIFY_DATA :: default ())) , HIL_ACTUATOR_CONTROLS_DATA :: ID => Ok (Self :: HIL_ACTUATOR_CONTROLS (HIL_ACTUATOR_CONTROLS_DATA :: default ())) , REQUEST_DATA_STREAM_DATA :: ID => Ok (Self :: REQUEST_DATA_STREAM (REQUEST_DATA_STREAM_DATA :: default ())) , NAMED_VALUE_FLOAT_DATA :: ID => Ok (Self :: NAMED_VALUE_FLOAT (NAMED_VALUE_FLOAT_DATA :: default ())) , ATT_POS_MOCAP_DATA :: ID => Ok (Self :: ATT_POS_MOCAP (ATT_POS_MOCAP_DATA :: default ())) , PLAY_TUNE_DATA :: ID => Ok (Self :: PLAY_TUNE (PLAY_TUNE_DATA :: default ())) , GPS_STATUS_DATA :: ID => Ok (Self :: GPS_STATUS (GPS_STATUS_DATA :: default ())) , SIM_STATE_DATA :: ID => Ok (Self :: SIM_STATE (SIM_STATE_DATA :: default ())) , POWER_STATUS_DATA :: ID => Ok (Self :: POWER_STATUS (POWER_STATUS_DATA :: default ())) , SCALED_PRESSURE3_DATA :: ID => Ok (Self :: SCALED_PRESSURE3 (SCALED_PRESSURE3_DATA :: default ())) , FOLLOW_TARGET_DATA :: ID => Ok (Self :: FOLLOW_TARGET (FOLLOW_TARGET_DATA :: default ())) , MAG_CAL_REPORT_DATA :: ID => Ok (Self :: MAG_CAL_REPORT (MAG_CAL_REPORT_DATA :: default ())) , OPTICAL_FLOW_DATA :: ID => Ok (Self :: OPTICAL_FLOW (OPTICAL_FLOW_DATA :: default ())) , PROTOCOL_VERSION_DATA :: ID => Ok (Self :: PROTOCOL_VERSION (PROTOCOL_VERSION_DATA :: default ())) , SERIAL_CONTROL_DATA :: ID => Ok (Self :: SERIAL_CONTROL (SERIAL_CONTROL_DATA :: default ())) , VIDEO_STREAM_STATUS_DATA :: ID => Ok (Self :: VIDEO_STREAM_STATUS (VIDEO_STREAM_STATUS_DATA :: default ())) , ODOMETRY_DATA :: ID => Ok (Self :: ODOMETRY (ODOMETRY_DATA :: default ())) , CELLULAR_STATUS_DATA :: ID => Ok (Self :: CELLULAR_STATUS (CELLULAR_STATUS_DATA :: default ())) , OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_SYSTEM_UPDATE (OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: default ())) , PARAM_REQUEST_LIST_DATA :: ID => Ok (Self :: PARAM_REQUEST_LIST (PARAM_REQUEST_LIST_DATA :: default ())) , GIMBAL_MANAGER_SET_PITCHYAW_DATA :: ID => Ok (Self :: GIMBAL_MANAGER_SET_PITCHYAW (GIMBAL_MANAGER_SET_PITCHYAW_DATA :: default ())) , SERVO_OUTPUT_RAW_DATA :: ID => Ok (Self :: SERVO_OUTPUT_RAW (SERVO_OUTPUT_RAW_DATA :: default ())) , TIMESYNC_DATA :: ID => Ok (Self :: TIMESYNC (TIMESYNC_DATA :: default ())) , RC_CHANNELS_DATA :: ID => Ok (Self :: RC_CHANNELS (RC_CHANNELS_DATA :: default ())) , GLOBAL_POSITION_INT_DATA :: ID => Ok (Self :: GLOBAL_POSITION_INT (GLOBAL_POSITION_INT_DATA :: default ())) , ATTITUDE_QUATERNION_COV_DATA :: ID => Ok (Self :: ATTITUDE_QUATERNION_COV (ATTITUDE_QUATERNION_COV_DATA :: default ())) , RADIO_STATUS_DATA :: ID => Ok (Self :: RADIO_STATUS (RADIO_STATUS_DATA :: default ())) , ADSB_VEHICLE_DATA :: ID => Ok (Self :: ADSB_VEHICLE (ADSB_VEHICLE_DATA :: default ())) , CONTROL_SYSTEM_STATE_DATA :: ID => Ok (Self :: CONTROL_SYSTEM_STATE (CONTROL_SYSTEM_STATE_DATA :: default ())) , SCALED_IMU_DATA :: ID => Ok (Self :: SCALED_IMU (SCALED_IMU_DATA :: default ())) , MISSION_CLEAR_ALL_DATA :: ID => Ok (Self :: MISSION_CLEAR_ALL (MISSION_CLEAR_ALL_DATA :: default ())) , VICON_POSITION_ESTIMATE_DATA :: ID => Ok (Self :: VICON_POSITION_ESTIMATE (VICON_POSITION_ESTIMATE_DATA :: default ())) , TERRAIN_DATA_DATA :: ID => Ok (Self :: TERRAIN_DATA (TERRAIN_DATA_DATA :: default ())) , ATTITUDE_QUATERNION_DATA :: ID => Ok (Self :: ATTITUDE_QUATERNION (ATTITUDE_QUATERNION_DATA :: default ())) , CAMERA_IMAGE_CAPTURED_DATA :: ID => Ok (Self :: CAMERA_IMAGE_CAPTURED (CAMERA_IMAGE_CAPTURED_DATA :: default ())) , VISION_POSITION_ESTIMATE_DATA :: ID => Ok (Self :: VISION_POSITION_ESTIMATE (VISION_POSITION_ESTIMATE_DATA :: default ())) , LOG_REQUEST_DATA_DATA :: ID => Ok (Self :: LOG_REQUEST_DATA (LOG_REQUEST_DATA_DATA :: default ())) , PING_DATA :: ID => Ok (Self :: PING (PING_DATA :: default ())) , VIBRATION_DATA :: ID => Ok (Self :: VIBRATION (VIBRATION_DATA :: default ())) , FLIGHT_INFORMATION_DATA :: ID => Ok (Self :: FLIGHT_INFORMATION (FLIGHT_INFORMATION_DATA :: default ())) , GPS_RAW_INT_DATA :: ID => Ok (Self :: GPS_RAW_INT (GPS_RAW_INT_DATA :: default ())) , MOUNT_ORIENTATION_DATA :: ID => Ok (Self :: MOUNT_ORIENTATION (MOUNT_ORIENTATION_DATA :: default ())) , LOGGING_DATA_DATA :: ID => Ok (Self :: LOGGING_DATA (LOGGING_DATA_DATA :: default ())) , PARAM_SET_DATA :: ID => Ok (Self :: PARAM_SET (PARAM_SET_DATA :: default ())) , GIMBAL_MANAGER_STATUS_DATA :: ID => Ok (Self :: GIMBAL_MANAGER_STATUS (GIMBAL_MANAGER_STATUS_DATA :: default ())) , RAW_RPM_DATA :: ID => Ok (Self :: RAW_RPM (RAW_RPM_DATA :: default ())) , TERRAIN_CHECK_DATA :: ID => Ok (Self :: TERRAIN_CHECK (TERRAIN_CHECK_DATA :: default ())) , ACTUATOR_OUTPUT_STATUS_DATA :: ID => Ok (Self :: ACTUATOR_OUTPUT_STATUS (ACTUATOR_OUTPUT_STATUS_DATA :: default ())) , V2_EXTENSION_DATA :: ID => Ok (Self :: V2_EXTENSION (V2_EXTENSION_DATA :: default ())) , COMPONENT_INFORMATION_DATA :: ID => Ok (Self :: COMPONENT_INFORMATION (COMPONENT_INFORMATION_DATA :: default ())) , HIL_STATE_DATA :: ID => Ok (Self :: HIL_STATE (HIL_STATE_DATA :: default ())) , CAMERA_TRACKING_IMAGE_STATUS_DATA :: ID => Ok (Self :: CAMERA_TRACKING_IMAGE_STATUS (CAMERA_TRACKING_IMAGE_STATUS_DATA :: default ())) , RC_CHANNELS_SCALED_DATA :: ID => Ok (Self :: RC_CHANNELS_SCALED (RC_CHANNELS_SCALED_DATA :: default ())) , EVENT_DATA :: ID => Ok (Self :: EVENT (EVENT_DATA :: default ())) , WHEEL_DISTANCE_DATA :: ID => Ok (Self :: WHEEL_DISTANCE (WHEEL_DISTANCE_DATA :: default ())) , OPEN_DRONE_ID_OPERATOR_ID_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_OPERATOR_ID (OPEN_DRONE_ID_OPERATOR_ID_DATA :: default ())) , OPEN_DRONE_ID_SYSTEM_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_SYSTEM (OPEN_DRONE_ID_SYSTEM_DATA :: default ())) , STORAGE_INFORMATION_DATA :: ID => Ok (Self :: STORAGE_INFORMATION (STORAGE_INFORMATION_DATA :: default ())) , PARAM_VALUE_DATA :: ID => Ok (Self :: PARAM_VALUE (PARAM_VALUE_DATA :: default ())) , GPS_RTK_DATA :: ID => Ok (Self :: GPS_RTK (GPS_RTK_DATA :: default ())) , ESC_INFO_DATA :: ID => Ok (Self :: ESC_INFO (ESC_INFO_DATA :: default ())) , TERRAIN_REPORT_DATA :: ID => Ok (Self :: TERRAIN_REPORT (TERRAIN_REPORT_DATA :: default ())) , CAMERA_CAPTURE_STATUS_DATA :: ID => Ok (Self :: CAMERA_CAPTURE_STATUS (CAMERA_CAPTURE_STATUS_DATA :: default ())) , ENCAPSULATED_DATA_DATA :: ID => Ok (Self :: ENCAPSULATED_DATA (ENCAPSULATED_DATA_DATA :: default ())) , HIL_SENSOR_DATA :: ID => Ok (Self :: HIL_SENSOR (HIL_SENSOR_DATA :: default ())) , OPEN_DRONE_ID_ARM_STATUS_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_ARM_STATUS (OPEN_DRONE_ID_ARM_STATUS_DATA :: default ())) , MISSION_COUNT_DATA :: ID => Ok (Self :: MISSION_COUNT (MISSION_COUNT_DATA :: default ())) , LOG_REQUEST_END_DATA :: ID => Ok (Self :: LOG_REQUEST_END (LOG_REQUEST_END_DATA :: default ())) , OPEN_DRONE_ID_AUTHENTICATION_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_AUTHENTICATION (OPEN_DRONE_ID_AUTHENTICATION_DATA :: default ())) , OBSTACLE_DISTANCE_DATA :: ID => Ok (Self :: OBSTACLE_DISTANCE (OBSTACLE_DISTANCE_DATA :: default ())) , SET_MODE_DATA :: ID => Ok (Self :: SET_MODE (SET_MODE_DATA :: default ())) , VFR_HUD_DATA :: ID => Ok (Self :: VFR_HUD (VFR_HUD_DATA :: default ())) , OPTICAL_FLOW_RAD_DATA :: ID => Ok (Self :: OPTICAL_FLOW_RAD (OPTICAL_FLOW_RAD_DATA :: default ())) , _ => { Err ("Invalid message id.") } } } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { match self { Self :: RAW_PRESSURE (body) => body . ser (version , bytes) , Self :: AUTOPILOT_STATE_FOR_GIMBAL_DEVICE (body) => body . ser (version , bytes) , Self :: LOG_ERASE (body) => body . ser (version , bytes) , Self :: CAMERA_INFORMATION (body) => body . ser (version , bytes) , Self :: RESOURCE_REQUEST (body) => body . ser (version , bytes) , Self :: PARAM_EXT_REQUEST_READ (body) => body . ser (version , bytes) , Self :: LOCAL_POSITION_NED (body) => body . ser (version , bytes) , Self :: MANUAL_SETPOINT (body) => body . ser (version , bytes) , Self :: LOCAL_POSITION_NED_COV (body) => body . ser (version , bytes) , Self :: HIL_RC_INPUTS_RAW (body) => body . ser (version , bytes) , Self :: ESTIMATOR_STATUS (body) => body . ser (version , bytes) , Self :: SAFETY_ALLOWED_AREA (body) => body . ser (version , bytes) , Self :: CAMERA_TRIGGER (body) => body . ser (version , bytes) , Self :: SCALED_IMU2 (body) => body . ser (version , bytes) , Self :: FENCE_STATUS (body) => body . ser (version , bytes) , Self :: AUTOPILOT_VERSION (body) => body . ser (version , bytes) , Self :: ESC_STATUS (body) => body . ser (version , bytes) , Self :: TRAJECTORY_REPRESENTATION_BEZIER (body) => body . ser (version , bytes) , Self :: ALTITUDE (body) => body . ser (version , bytes) , Self :: HIGH_LATENCY (body) => body . ser (version , bytes) , Self :: SCALED_PRESSURE2 (body) => body . ser (version , bytes) , Self :: GIMBAL_DEVICE_SET_ATTITUDE (body) => body . ser (version , bytes) , Self :: VISION_SPEED_ESTIMATE (body) => body . ser (version , bytes) , Self :: FILE_TRANSFER_PROTOCOL (body) => body . ser (version , bytes) , Self :: MISSION_REQUEST (body) => body . ser (version , bytes) , Self :: RESPONSE_EVENT_ERROR (body) => body . ser (version , bytes) , Self :: NAV_CONTROLLER_OUTPUT (body) => body . ser (version , bytes) , Self :: SYS_STATUS (body) => body . ser (version , bytes) , Self :: LOG_DATA (body) => body . ser (version , bytes) , Self :: CHANGE_OPERATOR_CONTROL (body) => body . ser (version , bytes) , Self :: COMMAND_ACK (body) => body . ser (version , bytes) , Self :: HIL_OPTICAL_FLOW (body) => body . ser (version , bytes) , Self :: ORBIT_EXECUTION_STATUS (body) => body . ser (version , bytes) , Self :: DEBUG_VECT (body) => body . ser (version , bytes) , Self :: TRAJECTORY_REPRESENTATION_WAYPOINTS (body) => body . ser (version , bytes) , Self :: SMART_BATTERY_INFO (body) => body . ser (version , bytes) , Self :: PARAM_MAP_RC (body) => body . ser (version , bytes) , Self :: MISSION_ITEM_INT (body) => body . ser (version , bytes) , Self :: WIND_COV (body) => body . ser (version , bytes) , Self :: MANUAL_CONTROL (body) => body . ser (version , bytes) , Self :: LOG_REQUEST_LIST (body) => body . ser (version , bytes) , Self :: GLOBAL_VISION_POSITION_ESTIMATE (body) => body . ser (version , bytes) , Self :: TIME_ESTIMATE_TO_TARGET (body) => body . ser (version , bytes) , Self :: COMMAND_LONG (body) => body . ser (version , bytes) , Self :: GIMBAL_MANAGER_SET_ATTITUDE (body) => body . ser (version , bytes) , Self :: GIMBAL_MANAGER_SET_MANUAL_CONTROL (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_LOCATION (body) => body . ser (version , bytes) , Self :: HIL_CONTROLS (body) => body . ser (version , bytes) , Self :: MISSION_SET_CURRENT (body) => body . ser (version , bytes) , Self :: SET_POSITION_TARGET_LOCAL_NED (body) => body . ser (version , bytes) , Self :: HIL_STATE_QUATERNION (body) => body . ser (version , bytes) , Self :: SETUP_SIGNING (body) => body . ser (version , bytes) , Self :: DISTANCE_SENSOR (body) => body . ser (version , bytes) , Self :: MISSION_CURRENT (body) => body . ser (version , bytes) , Self :: SET_HOME_POSITION (body) => body . ser (version , bytes) , Self :: COMMAND_CANCEL (body) => body . ser (version , bytes) , Self :: GPS_INJECT_DATA (body) => body . ser (version , bytes) , Self :: GPS_INPUT (body) => body . ser (version , bytes) , Self :: UAVCAN_NODE_STATUS (body) => body . ser (version , bytes) , Self :: CELLULAR_CONFIG (body) => body . ser (version , bytes) , Self :: GENERATOR_STATUS (body) => body . ser (version , bytes) , Self :: CAN_FRAME (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_MESSAGE_PACK (body) => body . ser (version , bytes) , Self :: MISSION_ITEM_REACHED (body) => body . ser (version , bytes) , Self :: SET_ATTITUDE_TARGET (body) => body . ser (version , bytes) , Self :: GPS_GLOBAL_ORIGIN (body) => body . ser (version , bytes) , Self :: SET_ACTUATOR_CONTROL_TARGET (body) => body . ser (version , bytes) , Self :: CAMERA_FOV_STATUS (body) => body . ser (version , bytes) , Self :: SET_POSITION_TARGET_GLOBAL_INT (body) => body . ser (version , bytes) , Self :: MISSION_ITEM (body) => body . ser (version , bytes) , Self :: CURRENT_EVENT_SEQUENCE (body) => body . ser (version , bytes) , Self :: MISSION_ACK (body) => body . ser (version , bytes) , Self :: PARAM_EXT_REQUEST_LIST (body) => body . ser (version , bytes) , Self :: RC_CHANNELS_OVERRIDE (body) => body . ser (version , bytes) , Self :: AUTH_KEY (body) => body . ser (version , bytes) , Self :: ISBD_LINK_STATUS (body) => body . ser (version , bytes) , Self :: COMMAND_INT (body) => body . ser (version , bytes) , Self :: LOG_ENTRY (body) => body . ser (version , bytes) , Self :: GPS2_RAW (body) => body . ser (version , bytes) , Self :: GPS2_RTK (body) => body . ser (version , bytes) , Self :: COLLISION (body) => body . ser (version , bytes) , Self :: ONBOARD_COMPUTER_STATUS (body) => body . ser (version , bytes) , Self :: DEBUG (body) => body . ser (version , bytes) , Self :: MEMORY_VECT (body) => body . ser (version , bytes) , Self :: GIMBAL_DEVICE_INFORMATION (body) => body . ser (version , bytes) , Self :: EXTENDED_SYS_STATE (body) => body . ser (version , bytes) , Self :: SUPPORTED_TUNES (body) => body . ser (version , bytes) , Self :: CAMERA_SETTINGS (body) => body . ser (version , bytes) , Self :: LOGGING_DATA_ACKED (body) => body . ser (version , bytes) , Self :: LINK_NODE_STATUS (body) => body . ser (version , bytes) , Self :: AIS_VESSEL (body) => body . ser (version , bytes) , Self :: DEBUG_FLOAT_ARRAY (body) => body . ser (version , bytes) , Self :: PARAM_EXT_ACK (body) => body . ser (version , bytes) , Self :: MISSION_WRITE_PARTIAL_LIST (body) => body . ser (version , bytes) , Self :: BATTERY_STATUS (body) => body . ser (version , bytes) , Self :: LANDING_TARGET (body) => body . ser (version , bytes) , Self :: CAMERA_TRACKING_GEO_STATUS (body) => body . ser (version , bytes) , Self :: REQUEST_EVENT (body) => body . ser (version , bytes) , Self :: SAFETY_SET_ALLOWED_AREA (body) => body . ser (version , bytes) , Self :: EFI_STATUS (body) => body . ser (version , bytes) , Self :: STATUSTEXT (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_SELF_ID (body) => body . ser (version , bytes) , Self :: LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET (body) => body . ser (version , bytes) , Self :: GPS_RTCM_DATA (body) => body . ser (version , bytes) , Self :: SET_GPS_GLOBAL_ORIGIN (body) => body . ser (version , bytes) , Self :: ACTUATOR_CONTROL_TARGET (body) => body . ser (version , bytes) , Self :: BUTTON_CHANGE (body) => body . ser (version , bytes) , Self :: MISSION_REQUEST_PARTIAL_LIST (body) => body . ser (version , bytes) , Self :: UTM_GLOBAL_POSITION (body) => body . ser (version , bytes) , Self :: HOME_POSITION (body) => body . ser (version , bytes) , Self :: UAVCAN_NODE_INFO (body) => body . ser (version , bytes) , Self :: PLAY_TUNE_V2 (body) => body . ser (version , bytes) , Self :: MISSION_REQUEST_LIST (body) => body . ser (version , bytes) , Self :: MISSION_REQUEST_INT (body) => body . ser (version , bytes) , Self :: DATA_STREAM (body) => body . ser (version , bytes) , Self :: VIDEO_STREAM_INFORMATION (body) => body . ser (version , bytes) , Self :: CANFD_FRAME (body) => body . ser (version , bytes) , Self :: HYGROMETER_SENSOR (body) => body . ser (version , bytes) , Self :: POSITION_TARGET_GLOBAL_INT (body) => body . ser (version , bytes) , Self :: HIGH_LATENCY2 (body) => body . ser (version , bytes) , Self :: GLOBAL_POSITION_INT_COV (body) => body . ser (version , bytes) , Self :: NAMED_VALUE_INT (body) => body . ser (version , bytes) , Self :: CHANGE_OPERATOR_CONTROL_ACK (body) => body . ser (version , bytes) , Self :: GIMBAL_MANAGER_INFORMATION (body) => body . ser (version , bytes) , Self :: COMPONENT_METADATA (body) => body . ser (version , bytes) , Self :: LOGGING_ACK (body) => body . ser (version , bytes) , Self :: RC_CHANNELS_RAW (body) => body . ser (version , bytes) , Self :: POSITION_TARGET_LOCAL_NED (body) => body . ser (version , bytes) , Self :: PARAM_EXT_SET (body) => body . ser (version , bytes) , Self :: HEARTBEAT (body) => body . ser (version , bytes) , Self :: WIFI_CONFIG_AP (body) => body . ser (version , bytes) , Self :: SCALED_IMU3 (body) => body . ser (version , bytes) , Self :: PARAM_EXT_VALUE (body) => body . ser (version , bytes) , Self :: WINCH_STATUS (body) => body . ser (version , bytes) , Self :: PARAM_REQUEST_READ (body) => body . ser (version , bytes) , Self :: HIGHRES_IMU (body) => body . ser (version , bytes) , Self :: HIL_GPS (body) => body . ser (version , bytes) , Self :: TERRAIN_REQUEST (body) => body . ser (version , bytes) , Self :: ATTITUDE (body) => body . ser (version , bytes) , Self :: SYSTEM_TIME (body) => body . ser (version , bytes) , Self :: ATTITUDE_TARGET (body) => body . ser (version , bytes) , Self :: DATA_TRANSMISSION_HANDSHAKE (body) => body . ser (version , bytes) , Self :: MESSAGE_INTERVAL (body) => body . ser (version , bytes) , Self :: TUNNEL (body) => body . ser (version , bytes) , Self :: RAW_IMU (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_BASIC_ID (body) => body . ser (version , bytes) , Self :: SCALED_PRESSURE (body) => body . ser (version , bytes) , Self :: GIMBAL_DEVICE_ATTITUDE_STATUS (body) => body . ser (version , bytes) , Self :: CAN_FILTER_MODIFY (body) => body . ser (version , bytes) , Self :: HIL_ACTUATOR_CONTROLS (body) => body . ser (version , bytes) , Self :: REQUEST_DATA_STREAM (body) => body . ser (version , bytes) , Self :: NAMED_VALUE_FLOAT (body) => body . ser (version , bytes) , Self :: ATT_POS_MOCAP (body) => body . ser (version , bytes) , Self :: PLAY_TUNE (body) => body . ser (version , bytes) , Self :: GPS_STATUS (body) => body . ser (version , bytes) , Self :: SIM_STATE (body) => body . ser (version , bytes) , Self :: POWER_STATUS (body) => body . ser (version , bytes) , Self :: SCALED_PRESSURE3 (body) => body . ser (version , bytes) , Self :: FOLLOW_TARGET (body) => body . ser (version , bytes) , Self :: MAG_CAL_REPORT (body) => body . ser (version , bytes) , Self :: OPTICAL_FLOW (body) => body . ser (version , bytes) , Self :: PROTOCOL_VERSION (body) => body . ser (version , bytes) , Self :: SERIAL_CONTROL (body) => body . ser (version , bytes) , Self :: VIDEO_STREAM_STATUS (body) => body . ser (version , bytes) , Self :: ODOMETRY (body) => body . ser (version , bytes) , Self :: CELLULAR_STATUS (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_SYSTEM_UPDATE (body) => body . ser (version , bytes) , Self :: PARAM_REQUEST_LIST (body) => body . ser (version , bytes) , Self :: GIMBAL_MANAGER_SET_PITCHYAW (body) => body . ser (version , bytes) , Self :: SERVO_OUTPUT_RAW (body) => body . ser (version , bytes) , Self :: TIMESYNC (body) => body . ser (version , bytes) , Self :: RC_CHANNELS (body) => body . ser (version , bytes) , Self :: GLOBAL_POSITION_INT (body) => body . ser (version , bytes) , Self :: ATTITUDE_QUATERNION_COV (body) => body . ser (version , bytes) , Self :: RADIO_STATUS (body) => body . ser (version , bytes) , Self :: ADSB_VEHICLE (body) => body . ser (version , bytes) , Self :: CONTROL_SYSTEM_STATE (body) => body . ser (version , bytes) , Self :: SCALED_IMU (body) => body . ser (version , bytes) , Self :: MISSION_CLEAR_ALL (body) => body . ser (version , bytes) , Self :: VICON_POSITION_ESTIMATE (body) => body . ser (version , bytes) , Self :: TERRAIN_DATA (body) => body . ser (version , bytes) , Self :: ATTITUDE_QUATERNION (body) => body . ser (version , bytes) , Self :: CAMERA_IMAGE_CAPTURED (body) => body . ser (version , bytes) , Self :: VISION_POSITION_ESTIMATE (body) => body . ser (version , bytes) , Self :: LOG_REQUEST_DATA (body) => body . ser (version , bytes) , Self :: PING (body) => body . ser (version , bytes) , Self :: VIBRATION (body) => body . ser (version , bytes) , Self :: FLIGHT_INFORMATION (body) => body . ser (version , bytes) , Self :: GPS_RAW_INT (body) => body . ser (version , bytes) , Self :: MOUNT_ORIENTATION (body) => body . ser (version , bytes) , Self :: LOGGING_DATA (body) => body . ser (version , bytes) , Self :: PARAM_SET (body) => body . ser (version , bytes) , Self :: GIMBAL_MANAGER_STATUS (body) => body . ser (version , bytes) , Self :: RAW_RPM (body) => body . ser (version , bytes) , Self :: TERRAIN_CHECK (body) => body . ser (version , bytes) , Self :: ACTUATOR_OUTPUT_STATUS (body) => body . ser (version , bytes) , Self :: V2_EXTENSION (body) => body . ser (version , bytes) , Self :: COMPONENT_INFORMATION (body) => body . ser (version , bytes) , Self :: HIL_STATE (body) => body . ser (version , bytes) , Self :: CAMERA_TRACKING_IMAGE_STATUS (body) => body . ser (version , bytes) , Self :: RC_CHANNELS_SCALED (body) => body . ser (version , bytes) , Self :: EVENT (body) => body . ser (version , bytes) , Self :: WHEEL_DISTANCE (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_OPERATOR_ID (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_SYSTEM (body) => body . ser (version , bytes) , Self :: STORAGE_INFORMATION (body) => body . ser (version , bytes) , Self :: PARAM_VALUE (body) => body . ser (version , bytes) , Self :: GPS_RTK (body) => body . ser (version , bytes) , Self :: ESC_INFO (body) => body . ser (version , bytes) , Self :: TERRAIN_REPORT (body) => body . ser (version , bytes) , Self :: CAMERA_CAPTURE_STATUS (body) => body . ser (version , bytes) , Self :: ENCAPSULATED_DATA (body) => body . ser (version , bytes) , Self :: HIL_SENSOR (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_ARM_STATUS (body) => body . ser (version , bytes) , Self :: MISSION_COUNT (body) => body . ser (version , bytes) , Self :: LOG_REQUEST_END (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_AUTHENTICATION (body) => body . ser (version , bytes) , Self :: OBSTACLE_DISTANCE (body) => body . ser (version , bytes) , Self :: SET_MODE (body) => body . ser (version , bytes) , Self :: VFR_HUD (body) => body . ser (version , bytes) , Self :: OPTICAL_FLOW_RAD (body) => body . ser (version , bytes) , } } fn extra_crc (id : u32) -> u8 { match id { RAW_PRESSURE_DATA :: ID => RAW_PRESSURE_DATA :: EXTRA_CRC , AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: ID => AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: EXTRA_CRC , LOG_ERASE_DATA :: ID => LOG_ERASE_DATA :: EXTRA_CRC , CAMERA_INFORMATION_DATA :: ID => CAMERA_INFORMATION_DATA :: EXTRA_CRC , RESOURCE_REQUEST_DATA :: ID => RESOURCE_REQUEST_DATA :: EXTRA_CRC , PARAM_EXT_REQUEST_READ_DATA :: ID => PARAM_EXT_REQUEST_READ_DATA :: EXTRA_CRC , LOCAL_POSITION_NED_DATA :: ID => LOCAL_POSITION_NED_DATA :: EXTRA_CRC , MANUAL_SETPOINT_DATA :: ID => MANUAL_SETPOINT_DATA :: EXTRA_CRC , LOCAL_POSITION_NED_COV_DATA :: ID => LOCAL_POSITION_NED_COV_DATA :: EXTRA_CRC , HIL_RC_INPUTS_RAW_DATA :: ID => HIL_RC_INPUTS_RAW_DATA :: EXTRA_CRC , ESTIMATOR_STATUS_DATA :: ID => ESTIMATOR_STATUS_DATA :: EXTRA_CRC , SAFETY_ALLOWED_AREA_DATA :: ID => SAFETY_ALLOWED_AREA_DATA :: EXTRA_CRC , CAMERA_TRIGGER_DATA :: ID => CAMERA_TRIGGER_DATA :: EXTRA_CRC , SCALED_IMU2_DATA :: ID => SCALED_IMU2_DATA :: EXTRA_CRC , FENCE_STATUS_DATA :: ID => FENCE_STATUS_DATA :: EXTRA_CRC , AUTOPILOT_VERSION_DATA :: ID => AUTOPILOT_VERSION_DATA :: EXTRA_CRC , ESC_STATUS_DATA :: ID => ESC_STATUS_DATA :: EXTRA_CRC , TRAJECTORY_REPRESENTATION_BEZIER_DATA :: ID => TRAJECTORY_REPRESENTATION_BEZIER_DATA :: EXTRA_CRC , ALTITUDE_DATA :: ID => ALTITUDE_DATA :: EXTRA_CRC , HIGH_LATENCY_DATA :: ID => HIGH_LATENCY_DATA :: EXTRA_CRC , SCALED_PRESSURE2_DATA :: ID => SCALED_PRESSURE2_DATA :: EXTRA_CRC , GIMBAL_DEVICE_SET_ATTITUDE_DATA :: ID => GIMBAL_DEVICE_SET_ATTITUDE_DATA :: EXTRA_CRC , VISION_SPEED_ESTIMATE_DATA :: ID => VISION_SPEED_ESTIMATE_DATA :: EXTRA_CRC , FILE_TRANSFER_PROTOCOL_DATA :: ID => FILE_TRANSFER_PROTOCOL_DATA :: EXTRA_CRC , MISSION_REQUEST_DATA :: ID => MISSION_REQUEST_DATA :: EXTRA_CRC , RESPONSE_EVENT_ERROR_DATA :: ID => RESPONSE_EVENT_ERROR_DATA :: EXTRA_CRC , NAV_CONTROLLER_OUTPUT_DATA :: ID => NAV_CONTROLLER_OUTPUT_DATA :: EXTRA_CRC , SYS_STATUS_DATA :: ID => SYS_STATUS_DATA :: EXTRA_CRC , LOG_DATA_DATA :: ID => LOG_DATA_DATA :: EXTRA_CRC , CHANGE_OPERATOR_CONTROL_DATA :: ID => CHANGE_OPERATOR_CONTROL_DATA :: EXTRA_CRC , COMMAND_ACK_DATA :: ID => COMMAND_ACK_DATA :: EXTRA_CRC , HIL_OPTICAL_FLOW_DATA :: ID => HIL_OPTICAL_FLOW_DATA :: EXTRA_CRC , ORBIT_EXECUTION_STATUS_DATA :: ID => ORBIT_EXECUTION_STATUS_DATA :: EXTRA_CRC , DEBUG_VECT_DATA :: ID => DEBUG_VECT_DATA :: EXTRA_CRC , TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: ID => TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: EXTRA_CRC , SMART_BATTERY_INFO_DATA :: ID => SMART_BATTERY_INFO_DATA :: EXTRA_CRC , PARAM_MAP_RC_DATA :: ID => PARAM_MAP_RC_DATA :: EXTRA_CRC , MISSION_ITEM_INT_DATA :: ID => MISSION_ITEM_INT_DATA :: EXTRA_CRC , WIND_COV_DATA :: ID => WIND_COV_DATA :: EXTRA_CRC , MANUAL_CONTROL_DATA :: ID => MANUAL_CONTROL_DATA :: EXTRA_CRC , LOG_REQUEST_LIST_DATA :: ID => LOG_REQUEST_LIST_DATA :: EXTRA_CRC , GLOBAL_VISION_POSITION_ESTIMATE_DATA :: ID => GLOBAL_VISION_POSITION_ESTIMATE_DATA :: EXTRA_CRC , TIME_ESTIMATE_TO_TARGET_DATA :: ID => TIME_ESTIMATE_TO_TARGET_DATA :: EXTRA_CRC , COMMAND_LONG_DATA :: ID => COMMAND_LONG_DATA :: EXTRA_CRC , GIMBAL_MANAGER_SET_ATTITUDE_DATA :: ID => GIMBAL_MANAGER_SET_ATTITUDE_DATA :: EXTRA_CRC , GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: ID => GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: EXTRA_CRC , OPEN_DRONE_ID_LOCATION_DATA :: ID => OPEN_DRONE_ID_LOCATION_DATA :: EXTRA_CRC , HIL_CONTROLS_DATA :: ID => HIL_CONTROLS_DATA :: EXTRA_CRC , MISSION_SET_CURRENT_DATA :: ID => MISSION_SET_CURRENT_DATA :: EXTRA_CRC , SET_POSITION_TARGET_LOCAL_NED_DATA :: ID => SET_POSITION_TARGET_LOCAL_NED_DATA :: EXTRA_CRC , HIL_STATE_QUATERNION_DATA :: ID => HIL_STATE_QUATERNION_DATA :: EXTRA_CRC , SETUP_SIGNING_DATA :: ID => SETUP_SIGNING_DATA :: EXTRA_CRC , DISTANCE_SENSOR_DATA :: ID => DISTANCE_SENSOR_DATA :: EXTRA_CRC , MISSION_CURRENT_DATA :: ID => MISSION_CURRENT_DATA :: EXTRA_CRC , SET_HOME_POSITION_DATA :: ID => SET_HOME_POSITION_DATA :: EXTRA_CRC , COMMAND_CANCEL_DATA :: ID => COMMAND_CANCEL_DATA :: EXTRA_CRC , GPS_INJECT_DATA_DATA :: ID => GPS_INJECT_DATA_DATA :: EXTRA_CRC , GPS_INPUT_DATA :: ID => GPS_INPUT_DATA :: EXTRA_CRC , UAVCAN_NODE_STATUS_DATA :: ID => UAVCAN_NODE_STATUS_DATA :: EXTRA_CRC , CELLULAR_CONFIG_DATA :: ID => CELLULAR_CONFIG_DATA :: EXTRA_CRC , GENERATOR_STATUS_DATA :: ID => GENERATOR_STATUS_DATA :: EXTRA_CRC , CAN_FRAME_DATA :: ID => CAN_FRAME_DATA :: EXTRA_CRC , OPEN_DRONE_ID_MESSAGE_PACK_DATA :: ID => OPEN_DRONE_ID_MESSAGE_PACK_DATA :: EXTRA_CRC , MISSION_ITEM_REACHED_DATA :: ID => MISSION_ITEM_REACHED_DATA :: EXTRA_CRC , SET_ATTITUDE_TARGET_DATA :: ID => SET_ATTITUDE_TARGET_DATA :: EXTRA_CRC , GPS_GLOBAL_ORIGIN_DATA :: ID => GPS_GLOBAL_ORIGIN_DATA :: EXTRA_CRC , SET_ACTUATOR_CONTROL_TARGET_DATA :: ID => SET_ACTUATOR_CONTROL_TARGET_DATA :: EXTRA_CRC , CAMERA_FOV_STATUS_DATA :: ID => CAMERA_FOV_STATUS_DATA :: EXTRA_CRC , SET_POSITION_TARGET_GLOBAL_INT_DATA :: ID => SET_POSITION_TARGET_GLOBAL_INT_DATA :: EXTRA_CRC , MISSION_ITEM_DATA :: ID => MISSION_ITEM_DATA :: EXTRA_CRC , CURRENT_EVENT_SEQUENCE_DATA :: ID => CURRENT_EVENT_SEQUENCE_DATA :: EXTRA_CRC , MISSION_ACK_DATA :: ID => MISSION_ACK_DATA :: EXTRA_CRC , PARAM_EXT_REQUEST_LIST_DATA :: ID => PARAM_EXT_REQUEST_LIST_DATA :: EXTRA_CRC , RC_CHANNELS_OVERRIDE_DATA :: ID => RC_CHANNELS_OVERRIDE_DATA :: EXTRA_CRC , AUTH_KEY_DATA :: ID => AUTH_KEY_DATA :: EXTRA_CRC , ISBD_LINK_STATUS_DATA :: ID => ISBD_LINK_STATUS_DATA :: EXTRA_CRC , COMMAND_INT_DATA :: ID => COMMAND_INT_DATA :: EXTRA_CRC , LOG_ENTRY_DATA :: ID => LOG_ENTRY_DATA :: EXTRA_CRC , GPS2_RAW_DATA :: ID => GPS2_RAW_DATA :: EXTRA_CRC , GPS2_RTK_DATA :: ID => GPS2_RTK_DATA :: EXTRA_CRC , COLLISION_DATA :: ID => COLLISION_DATA :: EXTRA_CRC , ONBOARD_COMPUTER_STATUS_DATA :: ID => ONBOARD_COMPUTER_STATUS_DATA :: EXTRA_CRC , DEBUG_DATA :: ID => DEBUG_DATA :: EXTRA_CRC , MEMORY_VECT_DATA :: ID => MEMORY_VECT_DATA :: EXTRA_CRC , GIMBAL_DEVICE_INFORMATION_DATA :: ID => GIMBAL_DEVICE_INFORMATION_DATA :: EXTRA_CRC , EXTENDED_SYS_STATE_DATA :: ID => EXTENDED_SYS_STATE_DATA :: EXTRA_CRC , SUPPORTED_TUNES_DATA :: ID => SUPPORTED_TUNES_DATA :: EXTRA_CRC , CAMERA_SETTINGS_DATA :: ID => CAMERA_SETTINGS_DATA :: EXTRA_CRC , LOGGING_DATA_ACKED_DATA :: ID => LOGGING_DATA_ACKED_DATA :: EXTRA_CRC , LINK_NODE_STATUS_DATA :: ID => LINK_NODE_STATUS_DATA :: EXTRA_CRC , AIS_VESSEL_DATA :: ID => AIS_VESSEL_DATA :: EXTRA_CRC , DEBUG_FLOAT_ARRAY_DATA :: ID => DEBUG_FLOAT_ARRAY_DATA :: EXTRA_CRC , PARAM_EXT_ACK_DATA :: ID => PARAM_EXT_ACK_DATA :: EXTRA_CRC , MISSION_WRITE_PARTIAL_LIST_DATA :: ID => MISSION_WRITE_PARTIAL_LIST_DATA :: EXTRA_CRC , BATTERY_STATUS_DATA :: ID => BATTERY_STATUS_DATA :: EXTRA_CRC , LANDING_TARGET_DATA :: ID => LANDING_TARGET_DATA :: EXTRA_CRC , CAMERA_TRACKING_GEO_STATUS_DATA :: ID => CAMERA_TRACKING_GEO_STATUS_DATA :: EXTRA_CRC , REQUEST_EVENT_DATA :: ID => REQUEST_EVENT_DATA :: EXTRA_CRC , SAFETY_SET_ALLOWED_AREA_DATA :: ID => SAFETY_SET_ALLOWED_AREA_DATA :: EXTRA_CRC , EFI_STATUS_DATA :: ID => EFI_STATUS_DATA :: EXTRA_CRC , STATUSTEXT_DATA :: ID => STATUSTEXT_DATA :: EXTRA_CRC , OPEN_DRONE_ID_SELF_ID_DATA :: ID => OPEN_DRONE_ID_SELF_ID_DATA :: EXTRA_CRC , LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: ID => LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: EXTRA_CRC , GPS_RTCM_DATA_DATA :: ID => GPS_RTCM_DATA_DATA :: EXTRA_CRC , SET_GPS_GLOBAL_ORIGIN_DATA :: ID => SET_GPS_GLOBAL_ORIGIN_DATA :: EXTRA_CRC , ACTUATOR_CONTROL_TARGET_DATA :: ID => ACTUATOR_CONTROL_TARGET_DATA :: EXTRA_CRC , BUTTON_CHANGE_DATA :: ID => BUTTON_CHANGE_DATA :: EXTRA_CRC , MISSION_REQUEST_PARTIAL_LIST_DATA :: ID => MISSION_REQUEST_PARTIAL_LIST_DATA :: EXTRA_CRC , UTM_GLOBAL_POSITION_DATA :: ID => UTM_GLOBAL_POSITION_DATA :: EXTRA_CRC , HOME_POSITION_DATA :: ID => HOME_POSITION_DATA :: EXTRA_CRC , UAVCAN_NODE_INFO_DATA :: ID => UAVCAN_NODE_INFO_DATA :: EXTRA_CRC , PLAY_TUNE_V2_DATA :: ID => PLAY_TUNE_V2_DATA :: EXTRA_CRC , MISSION_REQUEST_LIST_DATA :: ID => MISSION_REQUEST_LIST_DATA :: EXTRA_CRC , MISSION_REQUEST_INT_DATA :: ID => MISSION_REQUEST_INT_DATA :: EXTRA_CRC , DATA_STREAM_DATA :: ID => DATA_STREAM_DATA :: EXTRA_CRC , VIDEO_STREAM_INFORMATION_DATA :: ID => VIDEO_STREAM_INFORMATION_DATA :: EXTRA_CRC , CANFD_FRAME_DATA :: ID => CANFD_FRAME_DATA :: EXTRA_CRC , HYGROMETER_SENSOR_DATA :: ID => HYGROMETER_SENSOR_DATA :: EXTRA_CRC , POSITION_TARGET_GLOBAL_INT_DATA :: ID => POSITION_TARGET_GLOBAL_INT_DATA :: EXTRA_CRC , HIGH_LATENCY2_DATA :: ID => HIGH_LATENCY2_DATA :: EXTRA_CRC , GLOBAL_POSITION_INT_COV_DATA :: ID => GLOBAL_POSITION_INT_COV_DATA :: EXTRA_CRC , NAMED_VALUE_INT_DATA :: ID => NAMED_VALUE_INT_DATA :: EXTRA_CRC , CHANGE_OPERATOR_CONTROL_ACK_DATA :: ID => CHANGE_OPERATOR_CONTROL_ACK_DATA :: EXTRA_CRC , GIMBAL_MANAGER_INFORMATION_DATA :: ID => GIMBAL_MANAGER_INFORMATION_DATA :: EXTRA_CRC , COMPONENT_METADATA_DATA :: ID => COMPONENT_METADATA_DATA :: EXTRA_CRC , LOGGING_ACK_DATA :: ID => LOGGING_ACK_DATA :: EXTRA_CRC , RC_CHANNELS_RAW_DATA :: ID => RC_CHANNELS_RAW_DATA :: EXTRA_CRC , POSITION_TARGET_LOCAL_NED_DATA :: ID => POSITION_TARGET_LOCAL_NED_DATA :: EXTRA_CRC , PARAM_EXT_SET_DATA :: ID => PARAM_EXT_SET_DATA :: EXTRA_CRC , HEARTBEAT_DATA :: ID => HEARTBEAT_DATA :: EXTRA_CRC , WIFI_CONFIG_AP_DATA :: ID => WIFI_CONFIG_AP_DATA :: EXTRA_CRC , SCALED_IMU3_DATA :: ID => SCALED_IMU3_DATA :: EXTRA_CRC , PARAM_EXT_VALUE_DATA :: ID => PARAM_EXT_VALUE_DATA :: EXTRA_CRC , WINCH_STATUS_DATA :: ID => WINCH_STATUS_DATA :: EXTRA_CRC , PARAM_REQUEST_READ_DATA :: ID => PARAM_REQUEST_READ_DATA :: EXTRA_CRC , HIGHRES_IMU_DATA :: ID => HIGHRES_IMU_DATA :: EXTRA_CRC , HIL_GPS_DATA :: ID => HIL_GPS_DATA :: EXTRA_CRC , TERRAIN_REQUEST_DATA :: ID => TERRAIN_REQUEST_DATA :: EXTRA_CRC , ATTITUDE_DATA :: ID => ATTITUDE_DATA :: EXTRA_CRC , SYSTEM_TIME_DATA :: ID => SYSTEM_TIME_DATA :: EXTRA_CRC , ATTITUDE_TARGET_DATA :: ID => ATTITUDE_TARGET_DATA :: EXTRA_CRC , DATA_TRANSMISSION_HANDSHAKE_DATA :: ID => DATA_TRANSMISSION_HANDSHAKE_DATA :: EXTRA_CRC , MESSAGE_INTERVAL_DATA :: ID => MESSAGE_INTERVAL_DATA :: EXTRA_CRC , TUNNEL_DATA :: ID => TUNNEL_DATA :: EXTRA_CRC , RAW_IMU_DATA :: ID => RAW_IMU_DATA :: EXTRA_CRC , OPEN_DRONE_ID_BASIC_ID_DATA :: ID => OPEN_DRONE_ID_BASIC_ID_DATA :: EXTRA_CRC , SCALED_PRESSURE_DATA :: ID => SCALED_PRESSURE_DATA :: EXTRA_CRC , GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: ID => GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: EXTRA_CRC , CAN_FILTER_MODIFY_DATA :: ID => CAN_FILTER_MODIFY_DATA :: EXTRA_CRC , HIL_ACTUATOR_CONTROLS_DATA :: ID => HIL_ACTUATOR_CONTROLS_DATA :: EXTRA_CRC , REQUEST_DATA_STREAM_DATA :: ID => REQUEST_DATA_STREAM_DATA :: EXTRA_CRC , NAMED_VALUE_FLOAT_DATA :: ID => NAMED_VALUE_FLOAT_DATA :: EXTRA_CRC , ATT_POS_MOCAP_DATA :: ID => ATT_POS_MOCAP_DATA :: EXTRA_CRC , PLAY_TUNE_DATA :: ID => PLAY_TUNE_DATA :: EXTRA_CRC , GPS_STATUS_DATA :: ID => GPS_STATUS_DATA :: EXTRA_CRC , SIM_STATE_DATA :: ID => SIM_STATE_DATA :: EXTRA_CRC , POWER_STATUS_DATA :: ID => POWER_STATUS_DATA :: EXTRA_CRC , SCALED_PRESSURE3_DATA :: ID => SCALED_PRESSURE3_DATA :: EXTRA_CRC , FOLLOW_TARGET_DATA :: ID => FOLLOW_TARGET_DATA :: EXTRA_CRC , MAG_CAL_REPORT_DATA :: ID => MAG_CAL_REPORT_DATA :: EXTRA_CRC , OPTICAL_FLOW_DATA :: ID => OPTICAL_FLOW_DATA :: EXTRA_CRC , PROTOCOL_VERSION_DATA :: ID => PROTOCOL_VERSION_DATA :: EXTRA_CRC , SERIAL_CONTROL_DATA :: ID => SERIAL_CONTROL_DATA :: EXTRA_CRC , VIDEO_STREAM_STATUS_DATA :: ID => VIDEO_STREAM_STATUS_DATA :: EXTRA_CRC , ODOMETRY_DATA :: ID => ODOMETRY_DATA :: EXTRA_CRC , CELLULAR_STATUS_DATA :: ID => CELLULAR_STATUS_DATA :: EXTRA_CRC , OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: ID => OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: EXTRA_CRC , PARAM_REQUEST_LIST_DATA :: ID => PARAM_REQUEST_LIST_DATA :: EXTRA_CRC , GIMBAL_MANAGER_SET_PITCHYAW_DATA :: ID => GIMBAL_MANAGER_SET_PITCHYAW_DATA :: EXTRA_CRC , SERVO_OUTPUT_RAW_DATA :: ID => SERVO_OUTPUT_RAW_DATA :: EXTRA_CRC , TIMESYNC_DATA :: ID => TIMESYNC_DATA :: EXTRA_CRC , RC_CHANNELS_DATA :: ID => RC_CHANNELS_DATA :: EXTRA_CRC , GLOBAL_POSITION_INT_DATA :: ID => GLOBAL_POSITION_INT_DATA :: EXTRA_CRC , ATTITUDE_QUATERNION_COV_DATA :: ID => ATTITUDE_QUATERNION_COV_DATA :: EXTRA_CRC , RADIO_STATUS_DATA :: ID => RADIO_STATUS_DATA :: EXTRA_CRC , ADSB_VEHICLE_DATA :: ID => ADSB_VEHICLE_DATA :: EXTRA_CRC , CONTROL_SYSTEM_STATE_DATA :: ID => CONTROL_SYSTEM_STATE_DATA :: EXTRA_CRC , SCALED_IMU_DATA :: ID => SCALED_IMU_DATA :: EXTRA_CRC , MISSION_CLEAR_ALL_DATA :: ID => MISSION_CLEAR_ALL_DATA :: EXTRA_CRC , VICON_POSITION_ESTIMATE_DATA :: ID => VICON_POSITION_ESTIMATE_DATA :: EXTRA_CRC , TERRAIN_DATA_DATA :: ID => TERRAIN_DATA_DATA :: EXTRA_CRC , ATTITUDE_QUATERNION_DATA :: ID => ATTITUDE_QUATERNION_DATA :: EXTRA_CRC , CAMERA_IMAGE_CAPTURED_DATA :: ID => CAMERA_IMAGE_CAPTURED_DATA :: EXTRA_CRC , VISION_POSITION_ESTIMATE_DATA :: ID => VISION_POSITION_ESTIMATE_DATA :: EXTRA_CRC , LOG_REQUEST_DATA_DATA :: ID => LOG_REQUEST_DATA_DATA :: EXTRA_CRC , PING_DATA :: ID => PING_DATA :: EXTRA_CRC , VIBRATION_DATA :: ID => VIBRATION_DATA :: EXTRA_CRC , FLIGHT_INFORMATION_DATA :: ID => FLIGHT_INFORMATION_DATA :: EXTRA_CRC , GPS_RAW_INT_DATA :: ID => GPS_RAW_INT_DATA :: EXTRA_CRC , MOUNT_ORIENTATION_DATA :: ID => MOUNT_ORIENTATION_DATA :: EXTRA_CRC , LOGGING_DATA_DATA :: ID => LOGGING_DATA_DATA :: EXTRA_CRC , PARAM_SET_DATA :: ID => PARAM_SET_DATA :: EXTRA_CRC , GIMBAL_MANAGER_STATUS_DATA :: ID => GIMBAL_MANAGER_STATUS_DATA :: EXTRA_CRC , RAW_RPM_DATA :: ID => RAW_RPM_DATA :: EXTRA_CRC , TERRAIN_CHECK_DATA :: ID => TERRAIN_CHECK_DATA :: EXTRA_CRC , ACTUATOR_OUTPUT_STATUS_DATA :: ID => ACTUATOR_OUTPUT_STATUS_DATA :: EXTRA_CRC , V2_EXTENSION_DATA :: ID => V2_EXTENSION_DATA :: EXTRA_CRC , COMPONENT_INFORMATION_DATA :: ID => COMPONENT_INFORMATION_DATA :: EXTRA_CRC , HIL_STATE_DATA :: ID => HIL_STATE_DATA :: EXTRA_CRC , CAMERA_TRACKING_IMAGE_STATUS_DATA :: ID => CAMERA_TRACKING_IMAGE_STATUS_DATA :: EXTRA_CRC , RC_CHANNELS_SCALED_DATA :: ID => RC_CHANNELS_SCALED_DATA :: EXTRA_CRC , EVENT_DATA :: ID => EVENT_DATA :: EXTRA_CRC , WHEEL_DISTANCE_DATA :: ID => WHEEL_DISTANCE_DATA :: EXTRA_CRC , OPEN_DRONE_ID_OPERATOR_ID_DATA :: ID => OPEN_DRONE_ID_OPERATOR_ID_DATA :: EXTRA_CRC , OPEN_DRONE_ID_SYSTEM_DATA :: ID => OPEN_DRONE_ID_SYSTEM_DATA :: EXTRA_CRC , STORAGE_INFORMATION_DATA :: ID => STORAGE_INFORMATION_DATA :: EXTRA_CRC , PARAM_VALUE_DATA :: ID => PARAM_VALUE_DATA :: EXTRA_CRC , GPS_RTK_DATA :: ID => GPS_RTK_DATA :: EXTRA_CRC , ESC_INFO_DATA :: ID => ESC_INFO_DATA :: EXTRA_CRC , TERRAIN_REPORT_DATA :: ID => TERRAIN_REPORT_DATA :: EXTRA_CRC , CAMERA_CAPTURE_STATUS_DATA :: ID => CAMERA_CAPTURE_STATUS_DATA :: EXTRA_CRC , ENCAPSULATED_DATA_DATA :: ID => ENCAPSULATED_DATA_DATA :: EXTRA_CRC , HIL_SENSOR_DATA :: ID => HIL_SENSOR_DATA :: EXTRA_CRC , OPEN_DRONE_ID_ARM_STATUS_DATA :: ID => OPEN_DRONE_ID_ARM_STATUS_DATA :: EXTRA_CRC , MISSION_COUNT_DATA :: ID => MISSION_COUNT_DATA :: EXTRA_CRC , LOG_REQUEST_END_DATA :: ID => LOG_REQUEST_END_DATA :: EXTRA_CRC , OPEN_DRONE_ID_AUTHENTICATION_DATA :: ID => OPEN_DRONE_ID_AUTHENTICATION_DATA :: EXTRA_CRC , OBSTACLE_DISTANCE_DATA :: ID => OBSTACLE_DISTANCE_DATA :: EXTRA_CRC , SET_MODE_DATA :: ID => SET_MODE_DATA :: EXTRA_CRC , VFR_HUD_DATA :: ID => VFR_HUD_DATA :: EXTRA_CRC , OPTICAL_FLOW_RAD_DATA :: ID => OPTICAL_FLOW_RAD_DATA :: EXTRA_CRC , _ => { 0 } , } } }
       
    \ No newline at end of file diff --git a/src/mavlink/home/runner/work/rust-mavlink/rust-mavlink/target/debug/build/mavlink-08cb26f928ee1368/out/icarous.rs.html b/src/mavlink/home/runner/work/rust-mavlink/rust-mavlink/target/debug/build/mavlink-08cb26f928ee1368/out/icarous.rs.html index 33279c488d..651d3decd7 100644 --- a/src/mavlink/home/runner/work/rust-mavlink/rust-mavlink/target/debug/build/mavlink-08cb26f928ee1368/out/icarous.rs.html +++ b/src/mavlink/home/runner/work/rust-mavlink/rust-mavlink/target/debug/build/mavlink-08cb26f928ee1368/out/icarous.rs.html @@ -1,3 +1,3 @@ icarous.rs - source
    1
    -
    # ! [doc = "This file was automatically generated, do not edit"] # [allow (unused_imports)] use num_derive :: FromPrimitive ; # [allow (unused_imports)] use num_traits :: FromPrimitive ; # [allow (unused_imports)] use num_derive :: ToPrimitive ; # [allow (unused_imports)] use num_traits :: ToPrimitive ; # [allow (unused_imports)] use bitflags :: bitflags ; use mavlink_core :: { MavlinkVersion , Message , MessageData , bytes :: Bytes , bytes_mut :: BytesMut } ; # [cfg (feature = "serde")] use serde :: { Serialize , Deserialize } ; # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum IcarousFmsState { ICAROUS_FMS_STATE_IDLE = 0 , ICAROUS_FMS_STATE_TAKEOFF = 1 , ICAROUS_FMS_STATE_CLIMB = 2 , ICAROUS_FMS_STATE_CRUISE = 3 , ICAROUS_FMS_STATE_APPROACH = 4 , ICAROUS_FMS_STATE_LAND = 5 , } impl IcarousFmsState { pub const DEFAULT : Self = Self :: ICAROUS_FMS_STATE_IDLE ; } impl Default for IcarousFmsState { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum IcarousTrackBandTypes { ICAROUS_TRACK_BAND_TYPE_NONE = 0 , ICAROUS_TRACK_BAND_TYPE_NEAR = 1 , ICAROUS_TRACK_BAND_TYPE_RECOVERY = 2 , } impl IcarousTrackBandTypes { pub const DEFAULT : Self = Self :: ICAROUS_TRACK_BAND_TYPE_NONE ; } impl Default for IcarousTrackBandTypes { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ICAROUS_HEARTBEAT_DATA { pub status : IcarousFmsState , } impl ICAROUS_HEARTBEAT_DATA { pub const ENCODED_LEN : usize = 1usize ; pub const DEFAULT : Self = Self { status : IcarousFmsState :: DEFAULT , } ; } impl Default for ICAROUS_HEARTBEAT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ICAROUS_HEARTBEAT_DATA { type Message = MavMessage ; const ID : u32 = 42000u32 ; const NAME : & 'static str = "ICAROUS_HEARTBEAT" ; const EXTRA_CRC : u8 = 227u8 ; const ENCODED_LEN : usize = 1usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u8 () ; __struct . status = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "IcarousFmsState" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . status as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ICAROUS_KINEMATIC_BANDS_DATA { pub min1 : f32 , pub max1 : f32 , pub min2 : f32 , pub max2 : f32 , pub min3 : f32 , pub max3 : f32 , pub min4 : f32 , pub max4 : f32 , pub min5 : f32 , pub max5 : f32 , pub numBands : i8 , pub type1 : IcarousTrackBandTypes , pub type2 : IcarousTrackBandTypes , pub type3 : IcarousTrackBandTypes , pub type4 : IcarousTrackBandTypes , pub type5 : IcarousTrackBandTypes , } impl ICAROUS_KINEMATIC_BANDS_DATA { pub const ENCODED_LEN : usize = 46usize ; pub const DEFAULT : Self = Self { min1 : 0.0_f32 , max1 : 0.0_f32 , min2 : 0.0_f32 , max2 : 0.0_f32 , min3 : 0.0_f32 , max3 : 0.0_f32 , min4 : 0.0_f32 , max4 : 0.0_f32 , min5 : 0.0_f32 , max5 : 0.0_f32 , numBands : 0_i8 , type1 : IcarousTrackBandTypes :: DEFAULT , type2 : IcarousTrackBandTypes :: DEFAULT , type3 : IcarousTrackBandTypes :: DEFAULT , type4 : IcarousTrackBandTypes :: DEFAULT , type5 : IcarousTrackBandTypes :: DEFAULT , } ; } impl Default for ICAROUS_KINEMATIC_BANDS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ICAROUS_KINEMATIC_BANDS_DATA { type Message = MavMessage ; const ID : u32 = 42001u32 ; const NAME : & 'static str = "ICAROUS_KINEMATIC_BANDS" ; const EXTRA_CRC : u8 = 239u8 ; const ENCODED_LEN : usize = 46usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . min1 = buf . get_f32_le () ; __struct . max1 = buf . get_f32_le () ; __struct . min2 = buf . get_f32_le () ; __struct . max2 = buf . get_f32_le () ; __struct . min3 = buf . get_f32_le () ; __struct . max3 = buf . get_f32_le () ; __struct . min4 = buf . get_f32_le () ; __struct . max4 = buf . get_f32_le () ; __struct . min5 = buf . get_f32_le () ; __struct . max5 = buf . get_f32_le () ; __struct . numBands = buf . get_i8 () ; let tmp = buf . get_u8 () ; __struct . type1 = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "IcarousTrackBandTypes" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . type2 = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "IcarousTrackBandTypes" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . type3 = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "IcarousTrackBandTypes" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . type4 = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "IcarousTrackBandTypes" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . type5 = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "IcarousTrackBandTypes" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . min1) ; __tmp . put_f32_le (self . max1) ; __tmp . put_f32_le (self . min2) ; __tmp . put_f32_le (self . max2) ; __tmp . put_f32_le (self . min3) ; __tmp . put_f32_le (self . max3) ; __tmp . put_f32_le (self . min4) ; __tmp . put_f32_le (self . max4) ; __tmp . put_f32_le (self . min5) ; __tmp . put_f32_le (self . max5) ; __tmp . put_i8 (self . numBands) ; __tmp . put_u8 (self . type1 as u8) ; __tmp . put_u8 (self . type2 as u8) ; __tmp . put_u8 (self . type3 as u8) ; __tmp . put_u8 (self . type4 as u8) ; __tmp . put_u8 (self . type5 as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Clone , PartialEq , Debug)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavMessage { ICAROUS_HEARTBEAT (ICAROUS_HEARTBEAT_DATA) , ICAROUS_KINEMATIC_BANDS (ICAROUS_KINEMATIC_BANDS_DATA) , } impl Message for MavMessage { fn parse (version : MavlinkVersion , id : u32 , payload : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { match id { ICAROUS_HEARTBEAT_DATA :: ID => ICAROUS_HEARTBEAT_DATA :: deser (version , payload) . map (Self :: ICAROUS_HEARTBEAT) , ICAROUS_KINEMATIC_BANDS_DATA :: ID => ICAROUS_KINEMATIC_BANDS_DATA :: deser (version , payload) . map (Self :: ICAROUS_KINEMATIC_BANDS) , _ => { Err (:: mavlink_core :: error :: ParserError :: UnknownMessage { id }) } , } } fn message_name (& self) -> & 'static str { match self { Self :: ICAROUS_HEARTBEAT (..) => ICAROUS_HEARTBEAT_DATA :: NAME , Self :: ICAROUS_KINEMATIC_BANDS (..) => ICAROUS_KINEMATIC_BANDS_DATA :: NAME , } } fn message_id (& self) -> u32 { match self { Self :: ICAROUS_HEARTBEAT (..) => ICAROUS_HEARTBEAT_DATA :: ID , Self :: ICAROUS_KINEMATIC_BANDS (..) => ICAROUS_KINEMATIC_BANDS_DATA :: ID , } } fn message_id_from_name (name : & str) -> Result < u32 , & 'static str > { match name { ICAROUS_HEARTBEAT_DATA :: NAME => Ok (ICAROUS_HEARTBEAT_DATA :: ID) , ICAROUS_KINEMATIC_BANDS_DATA :: NAME => Ok (ICAROUS_KINEMATIC_BANDS_DATA :: ID) , _ => { Err ("Invalid message name.") } } } fn default_message_from_id (id : u32) -> Result < Self , & 'static str > { match id { ICAROUS_HEARTBEAT_DATA :: ID => Ok (Self :: ICAROUS_HEARTBEAT (ICAROUS_HEARTBEAT_DATA :: default ())) , ICAROUS_KINEMATIC_BANDS_DATA :: ID => Ok (Self :: ICAROUS_KINEMATIC_BANDS (ICAROUS_KINEMATIC_BANDS_DATA :: default ())) , _ => { Err ("Invalid message id.") } } } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { match self { Self :: ICAROUS_HEARTBEAT (body) => body . ser (version , bytes) , Self :: ICAROUS_KINEMATIC_BANDS (body) => body . ser (version , bytes) , } } fn extra_crc (id : u32) -> u8 { match id { ICAROUS_HEARTBEAT_DATA :: ID => ICAROUS_HEARTBEAT_DATA :: EXTRA_CRC , ICAROUS_KINEMATIC_BANDS_DATA :: ID => ICAROUS_KINEMATIC_BANDS_DATA :: EXTRA_CRC , _ => { 0 } , } } }
    +
    # ! [doc = "This file was automatically generated, do not edit"] # [allow (unused_imports)] use num_derive :: FromPrimitive ; # [allow (unused_imports)] use num_traits :: FromPrimitive ; # [allow (unused_imports)] use num_derive :: ToPrimitive ; # [allow (unused_imports)] use num_traits :: ToPrimitive ; # [allow (unused_imports)] use bitflags :: bitflags ; use mavlink_core :: { MavlinkVersion , Message , MessageData , bytes :: Bytes , bytes_mut :: BytesMut } ; # [cfg (feature = "serde")] use serde :: { Serialize , Deserialize } ; # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum IcarousTrackBandTypes { ICAROUS_TRACK_BAND_TYPE_NONE = 0 , ICAROUS_TRACK_BAND_TYPE_NEAR = 1 , ICAROUS_TRACK_BAND_TYPE_RECOVERY = 2 , } impl IcarousTrackBandTypes { pub const DEFAULT : Self = Self :: ICAROUS_TRACK_BAND_TYPE_NONE ; } impl Default for IcarousTrackBandTypes { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum IcarousFmsState { ICAROUS_FMS_STATE_IDLE = 0 , ICAROUS_FMS_STATE_TAKEOFF = 1 , ICAROUS_FMS_STATE_CLIMB = 2 , ICAROUS_FMS_STATE_CRUISE = 3 , ICAROUS_FMS_STATE_APPROACH = 4 , ICAROUS_FMS_STATE_LAND = 5 , } impl IcarousFmsState { pub const DEFAULT : Self = Self :: ICAROUS_FMS_STATE_IDLE ; } impl Default for IcarousFmsState { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ICAROUS_KINEMATIC_BANDS_DATA { pub min1 : f32 , pub max1 : f32 , pub min2 : f32 , pub max2 : f32 , pub min3 : f32 , pub max3 : f32 , pub min4 : f32 , pub max4 : f32 , pub min5 : f32 , pub max5 : f32 , pub numBands : i8 , pub type1 : IcarousTrackBandTypes , pub type2 : IcarousTrackBandTypes , pub type3 : IcarousTrackBandTypes , pub type4 : IcarousTrackBandTypes , pub type5 : IcarousTrackBandTypes , } impl ICAROUS_KINEMATIC_BANDS_DATA { pub const ENCODED_LEN : usize = 46usize ; pub const DEFAULT : Self = Self { min1 : 0.0_f32 , max1 : 0.0_f32 , min2 : 0.0_f32 , max2 : 0.0_f32 , min3 : 0.0_f32 , max3 : 0.0_f32 , min4 : 0.0_f32 , max4 : 0.0_f32 , min5 : 0.0_f32 , max5 : 0.0_f32 , numBands : 0_i8 , type1 : IcarousTrackBandTypes :: DEFAULT , type2 : IcarousTrackBandTypes :: DEFAULT , type3 : IcarousTrackBandTypes :: DEFAULT , type4 : IcarousTrackBandTypes :: DEFAULT , type5 : IcarousTrackBandTypes :: DEFAULT , } ; } impl Default for ICAROUS_KINEMATIC_BANDS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ICAROUS_KINEMATIC_BANDS_DATA { type Message = MavMessage ; const ID : u32 = 42001u32 ; const NAME : & 'static str = "ICAROUS_KINEMATIC_BANDS" ; const EXTRA_CRC : u8 = 239u8 ; const ENCODED_LEN : usize = 46usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . min1 = buf . get_f32_le () ; __struct . max1 = buf . get_f32_le () ; __struct . min2 = buf . get_f32_le () ; __struct . max2 = buf . get_f32_le () ; __struct . min3 = buf . get_f32_le () ; __struct . max3 = buf . get_f32_le () ; __struct . min4 = buf . get_f32_le () ; __struct . max4 = buf . get_f32_le () ; __struct . min5 = buf . get_f32_le () ; __struct . max5 = buf . get_f32_le () ; __struct . numBands = buf . get_i8 () ; let tmp = buf . get_u8 () ; __struct . type1 = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "IcarousTrackBandTypes" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . type2 = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "IcarousTrackBandTypes" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . type3 = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "IcarousTrackBandTypes" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . type4 = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "IcarousTrackBandTypes" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . type5 = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "IcarousTrackBandTypes" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . min1) ; __tmp . put_f32_le (self . max1) ; __tmp . put_f32_le (self . min2) ; __tmp . put_f32_le (self . max2) ; __tmp . put_f32_le (self . min3) ; __tmp . put_f32_le (self . max3) ; __tmp . put_f32_le (self . min4) ; __tmp . put_f32_le (self . max4) ; __tmp . put_f32_le (self . min5) ; __tmp . put_f32_le (self . max5) ; __tmp . put_i8 (self . numBands) ; __tmp . put_u8 (self . type1 as u8) ; __tmp . put_u8 (self . type2 as u8) ; __tmp . put_u8 (self . type3 as u8) ; __tmp . put_u8 (self . type4 as u8) ; __tmp . put_u8 (self . type5 as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ICAROUS_HEARTBEAT_DATA { pub status : IcarousFmsState , } impl ICAROUS_HEARTBEAT_DATA { pub const ENCODED_LEN : usize = 1usize ; pub const DEFAULT : Self = Self { status : IcarousFmsState :: DEFAULT , } ; } impl Default for ICAROUS_HEARTBEAT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ICAROUS_HEARTBEAT_DATA { type Message = MavMessage ; const ID : u32 = 42000u32 ; const NAME : & 'static str = "ICAROUS_HEARTBEAT" ; const EXTRA_CRC : u8 = 227u8 ; const ENCODED_LEN : usize = 1usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u8 () ; __struct . status = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "IcarousFmsState" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . status as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Clone , PartialEq , Debug)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavMessage { ICAROUS_KINEMATIC_BANDS (ICAROUS_KINEMATIC_BANDS_DATA) , ICAROUS_HEARTBEAT (ICAROUS_HEARTBEAT_DATA) , } impl Message for MavMessage { fn parse (version : MavlinkVersion , id : u32 , payload : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { match id { ICAROUS_KINEMATIC_BANDS_DATA :: ID => ICAROUS_KINEMATIC_BANDS_DATA :: deser (version , payload) . map (Self :: ICAROUS_KINEMATIC_BANDS) , ICAROUS_HEARTBEAT_DATA :: ID => ICAROUS_HEARTBEAT_DATA :: deser (version , payload) . map (Self :: ICAROUS_HEARTBEAT) , _ => { Err (:: mavlink_core :: error :: ParserError :: UnknownMessage { id }) } , } } fn message_name (& self) -> & 'static str { match self { Self :: ICAROUS_KINEMATIC_BANDS (..) => ICAROUS_KINEMATIC_BANDS_DATA :: NAME , Self :: ICAROUS_HEARTBEAT (..) => ICAROUS_HEARTBEAT_DATA :: NAME , } } fn message_id (& self) -> u32 { match self { Self :: ICAROUS_KINEMATIC_BANDS (..) => ICAROUS_KINEMATIC_BANDS_DATA :: ID , Self :: ICAROUS_HEARTBEAT (..) => ICAROUS_HEARTBEAT_DATA :: ID , } } fn message_id_from_name (name : & str) -> Result < u32 , & 'static str > { match name { ICAROUS_KINEMATIC_BANDS_DATA :: NAME => Ok (ICAROUS_KINEMATIC_BANDS_DATA :: ID) , ICAROUS_HEARTBEAT_DATA :: NAME => Ok (ICAROUS_HEARTBEAT_DATA :: ID) , _ => { Err ("Invalid message name.") } } } fn default_message_from_id (id : u32) -> Result < Self , & 'static str > { match id { ICAROUS_KINEMATIC_BANDS_DATA :: ID => Ok (Self :: ICAROUS_KINEMATIC_BANDS (ICAROUS_KINEMATIC_BANDS_DATA :: default ())) , ICAROUS_HEARTBEAT_DATA :: ID => Ok (Self :: ICAROUS_HEARTBEAT (ICAROUS_HEARTBEAT_DATA :: default ())) , _ => { Err ("Invalid message id.") } } } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { match self { Self :: ICAROUS_KINEMATIC_BANDS (body) => body . ser (version , bytes) , Self :: ICAROUS_HEARTBEAT (body) => body . ser (version , bytes) , } } fn extra_crc (id : u32) -> u8 { match id { ICAROUS_KINEMATIC_BANDS_DATA :: ID => ICAROUS_KINEMATIC_BANDS_DATA :: EXTRA_CRC , ICAROUS_HEARTBEAT_DATA :: ID => ICAROUS_HEARTBEAT_DATA :: EXTRA_CRC , _ => { 0 } , } } }
     
\ No newline at end of file diff --git a/src/mavlink/home/runner/work/rust-mavlink/rust-mavlink/target/debug/build/mavlink-08cb26f928ee1368/out/uavionix.rs.html b/src/mavlink/home/runner/work/rust-mavlink/rust-mavlink/target/debug/build/mavlink-08cb26f928ee1368/out/uavionix.rs.html index 4ad9097ec5..5ef335f972 100644 --- a/src/mavlink/home/runner/work/rust-mavlink/rust-mavlink/target/debug/build/mavlink-08cb26f928ee1368/out/uavionix.rs.html +++ b/src/mavlink/home/runner/work/rust-mavlink/rust-mavlink/target/debug/build/mavlink-08cb26f928ee1368/out/uavionix.rs.html @@ -1,3 +1,3 @@ uavionix.rs - source
1
-
# ! [doc = "This file was automatically generated, do not edit"] # [allow (unused_imports)] use num_derive :: FromPrimitive ; # [allow (unused_imports)] use num_traits :: FromPrimitive ; # [allow (unused_imports)] use num_derive :: ToPrimitive ; # [allow (unused_imports)] use num_traits :: ToPrimitive ; # [allow (unused_imports)] use bitflags :: bitflags ; use mavlink_core :: { MavlinkVersion , Message , MessageData , bytes :: Bytes , bytes_mut :: BytesMut } ; # [cfg (feature = "serde")] use serde :: { Serialize , Deserialize } ; # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum AisNavStatus { UNDER_WAY = 0 , AIS_NAV_ANCHORED = 1 , AIS_NAV_UN_COMMANDED = 2 , AIS_NAV_RESTRICTED_MANOEUVERABILITY = 3 , AIS_NAV_DRAUGHT_CONSTRAINED = 4 , AIS_NAV_MOORED = 5 , AIS_NAV_AGROUND = 6 , AIS_NAV_FISHING = 7 , AIS_NAV_SAILING = 8 , AIS_NAV_RESERVED_HSC = 9 , AIS_NAV_RESERVED_WIG = 10 , AIS_NAV_RESERVED_1 = 11 , AIS_NAV_RESERVED_2 = 12 , AIS_NAV_RESERVED_3 = 13 , AIS_NAV_AIS_SART = 14 , AIS_NAV_UNKNOWN = 15 , } impl AisNavStatus { pub const DEFAULT : Self = Self :: UNDER_WAY ; } impl Default for AisNavStatus { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum RtkBaselineCoordinateSystem { RTK_BASELINE_COORDINATE_SYSTEM_ECEF = 0 , RTK_BASELINE_COORDINATE_SYSTEM_NED = 1 , } impl RtkBaselineCoordinateSystem { pub const DEFAULT : Self = Self :: RTK_BASELINE_COORDINATE_SYSTEM_ECEF ; } impl Default for RtkBaselineCoordinateSystem { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum PreflightStorageMissionAction { MISSION_READ_PERSISTENT = 0 , MISSION_WRITE_PERSISTENT = 1 , MISSION_RESET_DEFAULT = 2 , } impl PreflightStorageMissionAction { pub const DEFAULT : Self = Self :: MISSION_READ_PERSISTENT ; } impl Default for PreflightStorageMissionAction { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct EscFailureFlags : u16 { const ESC_FAILURE_NONE = 0 ; const ESC_FAILURE_OVER_CURRENT = 1 ; const ESC_FAILURE_OVER_VOLTAGE = 2 ; const ESC_FAILURE_OVER_TEMPERATURE = 4 ; const ESC_FAILURE_OVER_RPM = 8 ; const ESC_FAILURE_INCONSISTENT_CMD = 16 ; const ESC_FAILURE_MOTOR_STUCK = 32 ; const ESC_FAILURE_GENERIC = 64 ; } } impl EscFailureFlags { pub const DEFAULT : Self = Self :: ESC_FAILURE_NONE ; } impl Default for EscFailureFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum UavionixAdsbOutDynamicGpsFix { UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX_NONE_0 = 0 , UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX_NONE_1 = 1 , UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX_2D = 2 , UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX_3D = 3 , UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX_DGPS = 4 , UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX_RTK = 5 , } impl UavionixAdsbOutDynamicGpsFix { pub const DEFAULT : Self = Self :: UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX_NONE_0 ; } impl Default for UavionixAdsbOutDynamicGpsFix { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum UavcanNodeHealth { UAVCAN_NODE_HEALTH_OK = 0 , UAVCAN_NODE_HEALTH_WARNING = 1 , UAVCAN_NODE_HEALTH_ERROR = 2 , UAVCAN_NODE_HEALTH_CRITICAL = 3 , } impl UavcanNodeHealth { pub const DEFAULT : Self = Self :: UAVCAN_NODE_HEALTH_OK ; } impl Default for UavcanNodeHealth { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum EscConnectionType { ESC_CONNECTION_TYPE_PPM = 0 , ESC_CONNECTION_TYPE_SERIAL = 1 , ESC_CONNECTION_TYPE_ONESHOT = 2 , ESC_CONNECTION_TYPE_I2C = 3 , ESC_CONNECTION_TYPE_CAN = 4 , ESC_CONNECTION_TYPE_DSHOT = 5 , } impl EscConnectionType { pub const DEFAULT : Self = Self :: ESC_CONNECTION_TYPE_PPM ; } impl Default for EscConnectionType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavArmAuthDeniedReason { MAV_ARM_AUTH_DENIED_REASON_GENERIC = 0 , MAV_ARM_AUTH_DENIED_REASON_NONE = 1 , MAV_ARM_AUTH_DENIED_REASON_INVALID_WAYPOINT = 2 , MAV_ARM_AUTH_DENIED_REASON_TIMEOUT = 3 , MAV_ARM_AUTH_DENIED_REASON_AIRSPACE_IN_USE = 4 , MAV_ARM_AUTH_DENIED_REASON_BAD_WEATHER = 5 , } impl MavArmAuthDeniedReason { pub const DEFAULT : Self = Self :: MAV_ARM_AUTH_DENIED_REASON_GENERIC ; } impl Default for MavArmAuthDeniedReason { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum VideoStreamType { VIDEO_STREAM_TYPE_RTSP = 0 , VIDEO_STREAM_TYPE_RTPUDP = 1 , VIDEO_STREAM_TYPE_TCP_MPEG = 2 , VIDEO_STREAM_TYPE_MPEG_TS_H264 = 3 , } impl VideoStreamType { pub const DEFAULT : Self = Self :: VIDEO_STREAM_TYPE_RTSP ; } impl Default for VideoStreamType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavTunnelPayloadType { MAV_TUNNEL_PAYLOAD_TYPE_UNKNOWN = 0 , MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED0 = 200 , MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED1 = 201 , MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED2 = 202 , MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED3 = 203 , MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED4 = 204 , MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED5 = 205 , MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED6 = 206 , MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED7 = 207 , MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED8 = 208 , MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED9 = 209 , } impl MavTunnelPayloadType { pub const DEFAULT : Self = Self :: MAV_TUNNEL_PAYLOAD_TYPE_UNKNOWN ; } impl Default for MavTunnelPayloadType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum FailureUnit { FAILURE_UNIT_SENSOR_GYRO = 0 , FAILURE_UNIT_SENSOR_ACCEL = 1 , FAILURE_UNIT_SENSOR_MAG = 2 , FAILURE_UNIT_SENSOR_BARO = 3 , FAILURE_UNIT_SENSOR_GPS = 4 , FAILURE_UNIT_SENSOR_OPTICAL_FLOW = 5 , FAILURE_UNIT_SENSOR_VIO = 6 , FAILURE_UNIT_SENSOR_DISTANCE_SENSOR = 7 , FAILURE_UNIT_SENSOR_AIRSPEED = 8 , FAILURE_UNIT_SYSTEM_BATTERY = 100 , FAILURE_UNIT_SYSTEM_MOTOR = 101 , FAILURE_UNIT_SYSTEM_SERVO = 102 , FAILURE_UNIT_SYSTEM_AVOIDANCE = 103 , FAILURE_UNIT_SYSTEM_RC_SIGNAL = 104 , FAILURE_UNIT_SYSTEM_MAVLINK_SIGNAL = 105 , } impl FailureUnit { pub const DEFAULT : Self = Self :: FAILURE_UNIT_SENSOR_GYRO ; } impl Default for FailureUnit { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavCollisionSrc { MAV_COLLISION_SRC_ADSB = 0 , MAV_COLLISION_SRC_MAVLINK_GPS_GLOBAL_INT = 1 , } impl MavCollisionSrc { pub const DEFAULT : Self = Self :: MAV_COLLISION_SRC_ADSB ; } impl Default for MavCollisionSrc { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MavModeFlag : u8 { const MAV_MODE_FLAG_SAFETY_ARMED = 128 ; const MAV_MODE_FLAG_MANUAL_INPUT_ENABLED = 64 ; const MAV_MODE_FLAG_HIL_ENABLED = 32 ; const MAV_MODE_FLAG_STABILIZE_ENABLED = 16 ; const MAV_MODE_FLAG_GUIDED_ENABLED = 8 ; const MAV_MODE_FLAG_AUTO_ENABLED = 4 ; const MAV_MODE_FLAG_TEST_ENABLED = 2 ; const MAV_MODE_FLAG_CUSTOM_MODE_ENABLED = 1 ; } } impl MavModeFlag { pub const DEFAULT : Self = Self :: MAV_MODE_FLAG_SAFETY_ARMED ; } impl Default for MavModeFlag { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavFtpErr { MAV_FTP_ERR_NONE = 0 , MAV_FTP_ERR_FAIL = 1 , MAV_FTP_ERR_FAILERRNO = 2 , MAV_FTP_ERR_INVALIDDATASIZE = 3 , MAV_FTP_ERR_INVALIDSESSION = 4 , MAV_FTP_ERR_NOSESSIONSAVAILABLE = 5 , MAV_FTP_ERR_EOF = 6 , MAV_FTP_ERR_UNKNOWNCOMMAND = 7 , MAV_FTP_ERR_FILEEXISTS = 8 , MAV_FTP_ERR_FILEPROTECTED = 9 , MAV_FTP_ERR_FILENOTFOUND = 10 , } impl MavFtpErr { pub const DEFAULT : Self = Self :: MAV_FTP_ERR_NONE ; } impl Default for MavFtpErr { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavMountMode { MAV_MOUNT_MODE_RETRACT = 0 , MAV_MOUNT_MODE_NEUTRAL = 1 , MAV_MOUNT_MODE_MAVLINK_TARGETING = 2 , MAV_MOUNT_MODE_RC_TARGETING = 3 , MAV_MOUNT_MODE_GPS_POINT = 4 , MAV_MOUNT_MODE_SYSID_TARGET = 5 , MAV_MOUNT_MODE_HOME_LOCATION = 6 , } impl MavMountMode { pub const DEFAULT : Self = Self :: MAV_MOUNT_MODE_RETRACT ; } impl Default for MavMountMode { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavModeFlagDecodePosition { MAV_MODE_FLAG_DECODE_POSITION_SAFETY = 128 , MAV_MODE_FLAG_DECODE_POSITION_MANUAL = 64 , MAV_MODE_FLAG_DECODE_POSITION_HIL = 32 , MAV_MODE_FLAG_DECODE_POSITION_STABILIZE = 16 , MAV_MODE_FLAG_DECODE_POSITION_GUIDED = 8 , MAV_MODE_FLAG_DECODE_POSITION_AUTO = 4 , MAV_MODE_FLAG_DECODE_POSITION_TEST = 2 , MAV_MODE_FLAG_DECODE_POSITION_CUSTOM_MODE = 1 , } impl MavModeFlagDecodePosition { pub const DEFAULT : Self = Self :: MAV_MODE_FLAG_DECODE_POSITION_SAFETY ; } impl Default for MavModeFlagDecodePosition { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum GpsFixType { GPS_FIX_TYPE_NO_GPS = 0 , GPS_FIX_TYPE_NO_FIX = 1 , GPS_FIX_TYPE_2D_FIX = 2 , GPS_FIX_TYPE_3D_FIX = 3 , GPS_FIX_TYPE_DGPS = 4 , GPS_FIX_TYPE_RTK_FLOAT = 5 , GPS_FIX_TYPE_RTK_FIXED = 6 , GPS_FIX_TYPE_STATIC = 7 , GPS_FIX_TYPE_PPP = 8 , } impl GpsFixType { pub const DEFAULT : Self = Self :: GPS_FIX_TYPE_NO_GPS ; } impl Default for GpsFixType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum CellularConfigResponse { CELLULAR_CONFIG_RESPONSE_ACCEPTED = 0 , CELLULAR_CONFIG_RESPONSE_APN_ERROR = 1 , CELLULAR_CONFIG_RESPONSE_PIN_ERROR = 2 , CELLULAR_CONFIG_RESPONSE_REJECTED = 3 , CELLULAR_CONFIG_BLOCKED_PUK_REQUIRED = 4 , } impl CellularConfigResponse { pub const DEFAULT : Self = Self :: CELLULAR_CONFIG_RESPONSE_ACCEPTED ; } impl Default for CellularConfigResponse { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidOperatorLocationType { MAV_ODID_OPERATOR_LOCATION_TYPE_TAKEOFF = 0 , MAV_ODID_OPERATOR_LOCATION_TYPE_LIVE_GNSS = 1 , MAV_ODID_OPERATOR_LOCATION_TYPE_FIXED = 2 , } impl MavOdidOperatorLocationType { pub const DEFAULT : Self = Self :: MAV_ODID_OPERATOR_LOCATION_TYPE_TAKEOFF ; } impl Default for MavOdidOperatorLocationType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavSeverity { MAV_SEVERITY_EMERGENCY = 0 , MAV_SEVERITY_ALERT = 1 , MAV_SEVERITY_CRITICAL = 2 , MAV_SEVERITY_ERROR = 3 , MAV_SEVERITY_WARNING = 4 , MAV_SEVERITY_NOTICE = 5 , MAV_SEVERITY_INFO = 6 , MAV_SEVERITY_DEBUG = 7 , } impl MavSeverity { pub const DEFAULT : Self = Self :: MAV_SEVERITY_EMERGENCY ; } impl Default for MavSeverity { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct UtmDataAvailFlags : u8 { const UTM_DATA_AVAIL_FLAGS_TIME_VALID = 1 ; const UTM_DATA_AVAIL_FLAGS_UAS_ID_AVAILABLE = 2 ; const UTM_DATA_AVAIL_FLAGS_POSITION_AVAILABLE = 4 ; const UTM_DATA_AVAIL_FLAGS_ALTITUDE_AVAILABLE = 8 ; const UTM_DATA_AVAIL_FLAGS_RELATIVE_ALTITUDE_AVAILABLE = 16 ; const UTM_DATA_AVAIL_FLAGS_HORIZONTAL_VELO_AVAILABLE = 32 ; const UTM_DATA_AVAIL_FLAGS_VERTICAL_VELO_AVAILABLE = 64 ; const UTM_DATA_AVAIL_FLAGS_NEXT_WAYPOINT_AVAILABLE = 128 ; } } impl UtmDataAvailFlags { pub const DEFAULT : Self = Self :: UTM_DATA_AVAIL_FLAGS_TIME_VALID ; } impl Default for UtmDataAvailFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum FirmwareVersionType { FIRMWARE_VERSION_TYPE_DEV = 0 , FIRMWARE_VERSION_TYPE_ALPHA = 64 , FIRMWARE_VERSION_TYPE_BETA = 128 , FIRMWARE_VERSION_TYPE_RC = 192 , FIRMWARE_VERSION_TYPE_OFFICIAL = 255 , } impl FirmwareVersionType { pub const DEFAULT : Self = Self :: FIRMWARE_VERSION_TYPE_DEV ; } impl Default for FirmwareVersionType { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HilSensorUpdatedFlags : u32 { const HIL_SENSOR_UPDATED_NONE = 0 ; const HIL_SENSOR_UPDATED_XACC = 1 ; const HIL_SENSOR_UPDATED_YACC = 2 ; const HIL_SENSOR_UPDATED_ZACC = 4 ; const HIL_SENSOR_UPDATED_XGYRO = 8 ; const HIL_SENSOR_UPDATED_YGYRO = 16 ; const HIL_SENSOR_UPDATED_ZGYRO = 32 ; const HIL_SENSOR_UPDATED_XMAG = 64 ; const HIL_SENSOR_UPDATED_YMAG = 128 ; const HIL_SENSOR_UPDATED_ZMAG = 256 ; const HIL_SENSOR_UPDATED_ABS_PRESSURE = 512 ; const HIL_SENSOR_UPDATED_DIFF_PRESSURE = 1024 ; const HIL_SENSOR_UPDATED_PRESSURE_ALT = 2048 ; const HIL_SENSOR_UPDATED_TEMPERATURE = 4096 ; const HIL_SENSOR_UPDATED_RESET = 2147483648 ; } } impl HilSensorUpdatedFlags { pub const DEFAULT : Self = Self :: HIL_SENSOR_UPDATED_NONE ; } impl Default for HilSensorUpdatedFlags { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HlFailureFlag : u16 { const HL_FAILURE_FLAG_GPS = 1 ; const HL_FAILURE_FLAG_DIFFERENTIAL_PRESSURE = 2 ; const HL_FAILURE_FLAG_ABSOLUTE_PRESSURE = 4 ; const HL_FAILURE_FLAG_3D_ACCEL = 8 ; const HL_FAILURE_FLAG_3D_GYRO = 16 ; const HL_FAILURE_FLAG_3D_MAG = 32 ; const HL_FAILURE_FLAG_TERRAIN = 64 ; const HL_FAILURE_FLAG_BATTERY = 128 ; const HL_FAILURE_FLAG_RC_RECEIVER = 256 ; const HL_FAILURE_FLAG_OFFBOARD_LINK = 512 ; const HL_FAILURE_FLAG_ENGINE = 1024 ; const HL_FAILURE_FLAG_GEOFENCE = 2048 ; const HL_FAILURE_FLAG_ESTIMATOR = 4096 ; const HL_FAILURE_FLAG_MISSION = 8192 ; } } impl HlFailureFlag { pub const DEFAULT : Self = Self :: HL_FAILURE_FLAG_GPS ; } impl Default for HlFailureFlag { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum ParachuteAction { PARACHUTE_DISABLE = 0 , PARACHUTE_ENABLE = 1 , PARACHUTE_RELEASE = 2 , } impl ParachuteAction { pub const DEFAULT : Self = Self :: PARACHUTE_DISABLE ; } impl Default for ParachuteAction { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum FenceBreach { FENCE_BREACH_NONE = 0 , FENCE_BREACH_MINALT = 1 , FENCE_BREACH_MAXALT = 2 , FENCE_BREACH_BOUNDARY = 3 , } impl FenceBreach { pub const DEFAULT : Self = Self :: FENCE_BREACH_NONE ; } impl Default for FenceBreach { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum VtolTransitionHeading { VTOL_TRANSITION_HEADING_VEHICLE_DEFAULT = 0 , VTOL_TRANSITION_HEADING_NEXT_WAYPOINT = 1 , VTOL_TRANSITION_HEADING_TAKEOFF = 2 , VTOL_TRANSITION_HEADING_SPECIFIED = 3 , VTOL_TRANSITION_HEADING_ANY = 4 , } impl VtolTransitionHeading { pub const DEFAULT : Self = Self :: VTOL_TRANSITION_HEADING_VEHICLE_DEFAULT ; } impl Default for VtolTransitionHeading { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum UavionixAdsbOutCfgAircraftSize { UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_NO_DATA = 0 , UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L15M_W23M = 1 , UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L25M_W28P5M = 2 , UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L25_34M = 3 , UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L35_33M = 4 , UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L35_38M = 5 , UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L45_39P5M = 6 , UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L45_45M = 7 , UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L55_45M = 8 , UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L55_52M = 9 , UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L65_59P5M = 10 , UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L65_67M = 11 , UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L75_W72P5M = 12 , UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L75_W80M = 13 , UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L85_W80M = 14 , UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L85_W90M = 15 , } impl UavionixAdsbOutCfgAircraftSize { pub const DEFAULT : Self = Self :: UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_NO_DATA ; } impl Default for UavionixAdsbOutCfgAircraftSize { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum UavionixAdsbOutCfgGpsOffsetLat { UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_NO_DATA = 0 , UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_LEFT_2M = 1 , UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_LEFT_4M = 2 , UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_LEFT_6M = 3 , UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_RIGHT_0M = 4 , UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_RIGHT_2M = 5 , UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_RIGHT_4M = 6 , UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_RIGHT_6M = 7 , } impl UavionixAdsbOutCfgGpsOffsetLat { pub const DEFAULT : Self = Self :: UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_NO_DATA ; } impl Default for UavionixAdsbOutCfgGpsOffsetLat { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum CanFilterOp { CAN_FILTER_REPLACE = 0 , CAN_FILTER_ADD = 1 , CAN_FILTER_REMOVE = 2 , } impl CanFilterOp { pub const DEFAULT : Self = Self :: CAN_FILTER_REPLACE ; } impl Default for CanFilterOp { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct AttitudeTargetTypemask : u8 { const ATTITUDE_TARGET_TYPEMASK_BODY_ROLL_RATE_IGNORE = 1 ; const ATTITUDE_TARGET_TYPEMASK_BODY_PITCH_RATE_IGNORE = 2 ; const ATTITUDE_TARGET_TYPEMASK_BODY_YAW_RATE_IGNORE = 4 ; const ATTITUDE_TARGET_TYPEMASK_THRUST_BODY_SET = 32 ; const ATTITUDE_TARGET_TYPEMASK_THROTTLE_IGNORE = 64 ; const ATTITUDE_TARGET_TYPEMASK_ATTITUDE_IGNORE = 128 ; } } impl AttitudeTargetTypemask { pub const DEFAULT : Self = Self :: ATTITUDE_TARGET_TYPEMASK_BODY_ROLL_RATE_IGNORE ; } impl Default for AttitudeTargetTypemask { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavMode { MAV_MODE_PREFLIGHT = 0 , MAV_MODE_STABILIZE_DISARMED = 80 , MAV_MODE_STABILIZE_ARMED = 208 , MAV_MODE_MANUAL_DISARMED = 64 , MAV_MODE_MANUAL_ARMED = 192 , MAV_MODE_GUIDED_DISARMED = 88 , MAV_MODE_GUIDED_ARMED = 216 , MAV_MODE_AUTO_DISARMED = 92 , MAV_MODE_AUTO_ARMED = 220 , MAV_MODE_TEST_DISARMED = 66 , MAV_MODE_TEST_ARMED = 194 , } impl MavMode { pub const DEFAULT : Self = Self :: MAV_MODE_PREFLIGHT ; } impl Default for MavMode { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavCollisionAction { MAV_COLLISION_ACTION_NONE = 0 , MAV_COLLISION_ACTION_REPORT = 1 , MAV_COLLISION_ACTION_ASCEND_OR_DESCEND = 2 , MAV_COLLISION_ACTION_MOVE_HORIZONTALLY = 3 , MAV_COLLISION_ACTION_MOVE_PERPENDICULAR = 4 , MAV_COLLISION_ACTION_RTL = 5 , MAV_COLLISION_ACTION_HOVER = 6 , } impl MavCollisionAction { pub const DEFAULT : Self = Self :: MAV_COLLISION_ACTION_NONE ; } impl Default for MavCollisionAction { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidVerAcc { MAV_ODID_VER_ACC_UNKNOWN = 0 , MAV_ODID_VER_ACC_150_METER = 1 , MAV_ODID_VER_ACC_45_METER = 2 , MAV_ODID_VER_ACC_25_METER = 3 , MAV_ODID_VER_ACC_10_METER = 4 , MAV_ODID_VER_ACC_3_METER = 5 , MAV_ODID_VER_ACC_1_METER = 6 , } impl MavOdidVerAcc { pub const DEFAULT : Self = Self :: MAV_ODID_VER_ACC_UNKNOWN ; } impl Default for MavOdidVerAcc { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum CellularStatusFlag { CELLULAR_STATUS_FLAG_UNKNOWN = 0 , CELLULAR_STATUS_FLAG_FAILED = 1 , CELLULAR_STATUS_FLAG_INITIALIZING = 2 , CELLULAR_STATUS_FLAG_LOCKED = 3 , CELLULAR_STATUS_FLAG_DISABLED = 4 , CELLULAR_STATUS_FLAG_DISABLING = 5 , CELLULAR_STATUS_FLAG_ENABLING = 6 , CELLULAR_STATUS_FLAG_ENABLED = 7 , CELLULAR_STATUS_FLAG_SEARCHING = 8 , CELLULAR_STATUS_FLAG_REGISTERED = 9 , CELLULAR_STATUS_FLAG_DISCONNECTING = 10 , CELLULAR_STATUS_FLAG_CONNECTING = 11 , CELLULAR_STATUS_FLAG_CONNECTED = 12 , } impl CellularStatusFlag { pub const DEFAULT : Self = Self :: CELLULAR_STATUS_FLAG_UNKNOWN ; } impl Default for CellularStatusFlag { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavBatteryFunction { MAV_BATTERY_FUNCTION_UNKNOWN = 0 , MAV_BATTERY_FUNCTION_ALL = 1 , MAV_BATTERY_FUNCTION_PROPULSION = 2 , MAV_BATTERY_FUNCTION_AVIONICS = 3 , MAV_BATTERY_FUNCTION_PAYLOAD = 4 , } impl MavBatteryFunction { pub const DEFAULT : Self = Self :: MAV_BATTERY_FUNCTION_UNKNOWN ; } impl Default for MavBatteryFunction { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidUaType { MAV_ODID_UA_TYPE_NONE = 0 , MAV_ODID_UA_TYPE_AEROPLANE = 1 , MAV_ODID_UA_TYPE_HELICOPTER_OR_MULTIROTOR = 2 , MAV_ODID_UA_TYPE_GYROPLANE = 3 , MAV_ODID_UA_TYPE_HYBRID_LIFT = 4 , MAV_ODID_UA_TYPE_ORNITHOPTER = 5 , MAV_ODID_UA_TYPE_GLIDER = 6 , MAV_ODID_UA_TYPE_KITE = 7 , MAV_ODID_UA_TYPE_FREE_BALLOON = 8 , MAV_ODID_UA_TYPE_CAPTIVE_BALLOON = 9 , MAV_ODID_UA_TYPE_AIRSHIP = 10 , MAV_ODID_UA_TYPE_FREE_FALL_PARACHUTE = 11 , MAV_ODID_UA_TYPE_ROCKET = 12 , MAV_ODID_UA_TYPE_TETHERED_POWERED_AIRCRAFT = 13 , MAV_ODID_UA_TYPE_GROUND_OBSTACLE = 14 , MAV_ODID_UA_TYPE_OTHER = 15 , } impl MavOdidUaType { pub const DEFAULT : Self = Self :: MAV_ODID_UA_TYPE_NONE ; } impl Default for MavOdidUaType { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MavWinchStatusFlag : u32 { const MAV_WINCH_STATUS_HEALTHY = 1 ; const MAV_WINCH_STATUS_FULLY_RETRACTED = 2 ; const MAV_WINCH_STATUS_MOVING = 4 ; const MAV_WINCH_STATUS_CLUTCH_ENGAGED = 8 ; const MAV_WINCH_STATUS_LOCKED = 16 ; const MAV_WINCH_STATUS_DROPPING = 32 ; const MAV_WINCH_STATUS_ARRESTING = 64 ; const MAV_WINCH_STATUS_GROUND_SENSE = 128 ; const MAV_WINCH_STATUS_RETRACTING = 256 ; const MAV_WINCH_STATUS_REDELIVER = 512 ; const MAV_WINCH_STATUS_ABANDON_LINE = 1024 ; const MAV_WINCH_STATUS_LOCKING = 2048 ; const MAV_WINCH_STATUS_LOAD_LINE = 4096 ; const MAV_WINCH_STATUS_LOAD_PAYLOAD = 8192 ; } } impl MavWinchStatusFlag { pub const DEFAULT : Self = Self :: MAV_WINCH_STATUS_HEALTHY ; } impl Default for MavWinchStatusFlag { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum CameraZoomType { ZOOM_TYPE_STEP = 0 , ZOOM_TYPE_CONTINUOUS = 1 , ZOOM_TYPE_RANGE = 2 , ZOOM_TYPE_FOCAL_LENGTH = 3 , } impl CameraZoomType { pub const DEFAULT : Self = Self :: ZOOM_TYPE_STEP ; } impl Default for CameraZoomType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidStatus { MAV_ODID_STATUS_UNDECLARED = 0 , MAV_ODID_STATUS_GROUND = 1 , MAV_ODID_STATUS_AIRBORNE = 2 , MAV_ODID_STATUS_EMERGENCY = 3 , MAV_ODID_STATUS_REMOTE_ID_SYSTEM_FAILURE = 4 , } impl MavOdidStatus { pub const DEFAULT : Self = Self :: MAV_ODID_STATUS_UNDECLARED ; } impl Default for MavOdidStatus { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavFrame { MAV_FRAME_GLOBAL = 0 , MAV_FRAME_LOCAL_NED = 1 , MAV_FRAME_MISSION = 2 , MAV_FRAME_GLOBAL_RELATIVE_ALT = 3 , MAV_FRAME_LOCAL_ENU = 4 , MAV_FRAME_GLOBAL_INT = 5 , MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6 , MAV_FRAME_LOCAL_OFFSET_NED = 7 , MAV_FRAME_BODY_NED = 8 , MAV_FRAME_BODY_OFFSET_NED = 9 , MAV_FRAME_GLOBAL_TERRAIN_ALT = 10 , MAV_FRAME_GLOBAL_TERRAIN_ALT_INT = 11 , MAV_FRAME_BODY_FRD = 12 , MAV_FRAME_RESERVED_13 = 13 , MAV_FRAME_RESERVED_14 = 14 , MAV_FRAME_RESERVED_15 = 15 , MAV_FRAME_RESERVED_16 = 16 , MAV_FRAME_RESERVED_17 = 17 , MAV_FRAME_RESERVED_18 = 18 , MAV_FRAME_RESERVED_19 = 19 , MAV_FRAME_LOCAL_FRD = 20 , MAV_FRAME_LOCAL_FLU = 21 , } impl MavFrame { pub const DEFAULT : Self = Self :: MAV_FRAME_GLOBAL ; } impl Default for MavFrame { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum CameraTrackingTargetData { CAMERA_TRACKING_TARGET_DATA_NONE = 0 , CAMERA_TRACKING_TARGET_DATA_EMBEDDED = 1 , CAMERA_TRACKING_TARGET_DATA_RENDERED = 2 , CAMERA_TRACKING_TARGET_DATA_IN_STATUS = 4 , } impl CameraTrackingTargetData { pub const DEFAULT : Self = Self :: CAMERA_TRACKING_TARGET_DATA_NONE ; } impl Default for CameraTrackingTargetData { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidOperatorIdType { MAV_ODID_OPERATOR_ID_TYPE_CAA = 0 , } impl MavOdidOperatorIdType { pub const DEFAULT : Self = Self :: MAV_ODID_OPERATOR_ID_TYPE_CAA ; } impl Default for MavOdidOperatorIdType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum WinchActions { WINCH_RELAXED = 0 , WINCH_RELATIVE_LENGTH_CONTROL = 1 , WINCH_RATE_CONTROL = 2 , WINCH_LOCK = 3 , WINCH_DELIVER = 4 , WINCH_HOLD = 5 , WINCH_RETRACT = 6 , WINCH_LOAD_LINE = 7 , WINCH_ABANDON_LINE = 8 , WINCH_LOAD_PAYLOAD = 9 , } impl WinchActions { pub const DEFAULT : Self = Self :: WINCH_RELAXED ; } impl Default for WinchActions { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum GripperActions { GRIPPER_ACTION_RELEASE = 0 , GRIPPER_ACTION_GRAB = 1 , } impl GripperActions { pub const DEFAULT : Self = Self :: GRIPPER_ACTION_RELEASE ; } impl Default for GripperActions { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavBatteryMode { MAV_BATTERY_MODE_UNKNOWN = 0 , MAV_BATTERY_MODE_AUTO_DISCHARGING = 1 , MAV_BATTERY_MODE_HOT_SWAP = 2 , } impl MavBatteryMode { pub const DEFAULT : Self = Self :: MAV_BATTERY_MODE_UNKNOWN ; } impl Default for MavBatteryMode { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum WifiConfigApResponse { WIFI_CONFIG_AP_RESPONSE_UNDEFINED = 0 , WIFI_CONFIG_AP_RESPONSE_ACCEPTED = 1 , WIFI_CONFIG_AP_RESPONSE_REJECTED = 2 , WIFI_CONFIG_AP_RESPONSE_MODE_ERROR = 3 , WIFI_CONFIG_AP_RESPONSE_SSID_ERROR = 4 , WIFI_CONFIG_AP_RESPONSE_PASSWORD_ERROR = 5 , } impl WifiConfigApResponse { pub const DEFAULT : Self = Self :: WIFI_CONFIG_AP_RESPONSE_UNDEFINED ; } impl Default for WifiConfigApResponse { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum StorageType { STORAGE_TYPE_UNKNOWN = 0 , STORAGE_TYPE_USB_STICK = 1 , STORAGE_TYPE_SD = 2 , STORAGE_TYPE_MICROSD = 3 , STORAGE_TYPE_CF = 4 , STORAGE_TYPE_CFE = 5 , STORAGE_TYPE_XQD = 6 , STORAGE_TYPE_HD = 7 , STORAGE_TYPE_OTHER = 254 , } impl StorageType { pub const DEFAULT : Self = Self :: STORAGE_TYPE_UNKNOWN ; } impl Default for StorageType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavlinkDataStreamType { MAVLINK_DATA_STREAM_IMG_JPEG = 0 , MAVLINK_DATA_STREAM_IMG_BMP = 1 , MAVLINK_DATA_STREAM_IMG_RAW8U = 2 , MAVLINK_DATA_STREAM_IMG_RAW32U = 3 , MAVLINK_DATA_STREAM_IMG_PGM = 4 , MAVLINK_DATA_STREAM_IMG_PNG = 5 , } impl MavlinkDataStreamType { pub const DEFAULT : Self = Self :: MAVLINK_DATA_STREAM_IMG_JPEG ; } impl Default for MavlinkDataStreamType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavMissionType { MAV_MISSION_TYPE_MISSION = 0 , MAV_MISSION_TYPE_FENCE = 1 , MAV_MISSION_TYPE_RALLY = 2 , MAV_MISSION_TYPE_ALL = 255 , } impl MavMissionType { pub const DEFAULT : Self = Self :: MAV_MISSION_TYPE_MISSION ; } impl Default for MavMissionType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavDataStream { MAV_DATA_STREAM_ALL = 0 , MAV_DATA_STREAM_RAW_SENSORS = 1 , MAV_DATA_STREAM_EXTENDED_STATUS = 2 , MAV_DATA_STREAM_RC_CHANNELS = 3 , MAV_DATA_STREAM_RAW_CONTROLLER = 4 , MAV_DATA_STREAM_POSITION = 6 , MAV_DATA_STREAM_EXTRA1 = 10 , MAV_DATA_STREAM_EXTRA2 = 11 , MAV_DATA_STREAM_EXTRA3 = 12 , } impl MavDataStream { pub const DEFAULT : Self = Self :: MAV_DATA_STREAM_ALL ; } impl Default for MavDataStream { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct UavionixAdsbRfHealth : u8 { const UAVIONIX_ADSB_RF_HEALTH_INITIALIZING = 0 ; const UAVIONIX_ADSB_RF_HEALTH_OK = 1 ; const UAVIONIX_ADSB_RF_HEALTH_FAIL_TX = 2 ; const UAVIONIX_ADSB_RF_HEALTH_FAIL_RX = 16 ; } } impl UavionixAdsbRfHealth { pub const DEFAULT : Self = Self :: UAVIONIX_ADSB_RF_HEALTH_INITIALIZING ; } impl Default for UavionixAdsbRfHealth { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HighresImuUpdatedFlags : u16 { const HIGHRES_IMU_UPDATED_NONE = 0 ; const HIGHRES_IMU_UPDATED_XACC = 1 ; const HIGHRES_IMU_UPDATED_YACC = 2 ; const HIGHRES_IMU_UPDATED_ZACC = 4 ; const HIGHRES_IMU_UPDATED_XGYRO = 8 ; const HIGHRES_IMU_UPDATED_YGYRO = 16 ; const HIGHRES_IMU_UPDATED_ZGYRO = 32 ; const HIGHRES_IMU_UPDATED_XMAG = 64 ; const HIGHRES_IMU_UPDATED_YMAG = 128 ; const HIGHRES_IMU_UPDATED_ZMAG = 256 ; const HIGHRES_IMU_UPDATED_ABS_PRESSURE = 512 ; const HIGHRES_IMU_UPDATED_DIFF_PRESSURE = 1024 ; const HIGHRES_IMU_UPDATED_PRESSURE_ALT = 2048 ; const HIGHRES_IMU_UPDATED_TEMPERATURE = 4096 ; const HIGHRES_IMU_UPDATED_ALL = 65535 ; } } impl HighresImuUpdatedFlags { pub const DEFAULT : Self = Self :: HIGHRES_IMU_UPDATED_NONE ; } impl Default for HighresImuUpdatedFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavLandedState { MAV_LANDED_STATE_UNDEFINED = 0 , MAV_LANDED_STATE_ON_GROUND = 1 , MAV_LANDED_STATE_IN_AIR = 2 , MAV_LANDED_STATE_TAKEOFF = 3 , MAV_LANDED_STATE_LANDING = 4 , } impl MavLandedState { pub const DEFAULT : Self = Self :: MAV_LANDED_STATE_UNDEFINED ; } impl Default for MavLandedState { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidSpeedAcc { MAV_ODID_SPEED_ACC_UNKNOWN = 0 , MAV_ODID_SPEED_ACC_10_METERS_PER_SECOND = 1 , MAV_ODID_SPEED_ACC_3_METERS_PER_SECOND = 2 , MAV_ODID_SPEED_ACC_1_METERS_PER_SECOND = 3 , MAV_ODID_SPEED_ACC_0_3_METERS_PER_SECOND = 4 , } impl MavOdidSpeedAcc { pub const DEFAULT : Self = Self :: MAV_ODID_SPEED_ACC_UNKNOWN ; } impl Default for MavOdidSpeedAcc { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavBatteryType { MAV_BATTERY_TYPE_UNKNOWN = 0 , MAV_BATTERY_TYPE_LIPO = 1 , MAV_BATTERY_TYPE_LIFE = 2 , MAV_BATTERY_TYPE_LION = 3 , MAV_BATTERY_TYPE_NIMH = 4 , } impl MavBatteryType { pub const DEFAULT : Self = Self :: MAV_BATTERY_TYPE_UNKNOWN ; } impl Default for MavBatteryType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum ParamAck { PARAM_ACK_ACCEPTED = 0 , PARAM_ACK_VALUE_UNSUPPORTED = 1 , PARAM_ACK_FAILED = 2 , PARAM_ACK_IN_PROGRESS = 3 , } impl ParamAck { pub const DEFAULT : Self = Self :: PARAM_ACK_ACCEPTED ; } impl Default for ParamAck { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum UavcanNodeMode { UAVCAN_NODE_MODE_OPERATIONAL = 0 , UAVCAN_NODE_MODE_INITIALIZATION = 1 , UAVCAN_NODE_MODE_MAINTENANCE = 2 , UAVCAN_NODE_MODE_SOFTWARE_UPDATE = 3 , UAVCAN_NODE_MODE_OFFLINE = 7 , } impl UavcanNodeMode { pub const DEFAULT : Self = Self :: UAVCAN_NODE_MODE_OPERATIONAL ; } impl Default for UavcanNodeMode { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SerialControlFlag : u8 { const SERIAL_CONTROL_FLAG_REPLY = 1 ; const SERIAL_CONTROL_FLAG_RESPOND = 2 ; const SERIAL_CONTROL_FLAG_EXCLUSIVE = 4 ; const SERIAL_CONTROL_FLAG_BLOCKING = 8 ; const SERIAL_CONTROL_FLAG_MULTI = 16 ; } } impl SerialControlFlag { pub const DEFAULT : Self = Self :: SERIAL_CONTROL_FLAG_REPLY ; } impl Default for SerialControlFlag { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavVtolState { MAV_VTOL_STATE_UNDEFINED = 0 , MAV_VTOL_STATE_TRANSITION_TO_FW = 1 , MAV_VTOL_STATE_TRANSITION_TO_MC = 2 , MAV_VTOL_STATE_MC = 3 , MAV_VTOL_STATE_FW = 4 , } impl MavVtolState { pub const DEFAULT : Self = Self :: MAV_VTOL_STATE_UNDEFINED ; } impl Default for MavVtolState { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavRoi { MAV_ROI_NONE = 0 , MAV_ROI_WPNEXT = 1 , MAV_ROI_WPINDEX = 2 , MAV_ROI_LOCATION = 3 , MAV_ROI_TARGET = 4 , } impl MavRoi { pub const DEFAULT : Self = Self :: MAV_ROI_NONE ; } impl Default for MavRoi { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavMissionResult { MAV_MISSION_ACCEPTED = 0 , MAV_MISSION_ERROR = 1 , MAV_MISSION_UNSUPPORTED_FRAME = 2 , MAV_MISSION_UNSUPPORTED = 3 , MAV_MISSION_NO_SPACE = 4 , MAV_MISSION_INVALID = 5 , MAV_MISSION_INVALID_PARAM1 = 6 , MAV_MISSION_INVALID_PARAM2 = 7 , MAV_MISSION_INVALID_PARAM3 = 8 , MAV_MISSION_INVALID_PARAM4 = 9 , MAV_MISSION_INVALID_PARAM5_X = 10 , MAV_MISSION_INVALID_PARAM6_Y = 11 , MAV_MISSION_INVALID_PARAM7 = 12 , MAV_MISSION_INVALID_SEQUENCE = 13 , MAV_MISSION_DENIED = 14 , MAV_MISSION_OPERATION_CANCELLED = 15 , } impl MavMissionResult { pub const DEFAULT : Self = Self :: MAV_MISSION_ACCEPTED ; } impl Default for MavMissionResult { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum LandingTargetType { LANDING_TARGET_TYPE_LIGHT_BEACON = 0 , LANDING_TARGET_TYPE_RADIO_BEACON = 1 , LANDING_TARGET_TYPE_VISION_FIDUCIAL = 2 , LANDING_TARGET_TYPE_VISION_OTHER = 3 , } impl LandingTargetType { pub const DEFAULT : Self = Self :: LANDING_TARGET_TYPE_LIGHT_BEACON ; } impl Default for LandingTargetType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum StorageStatus { STORAGE_STATUS_EMPTY = 0 , STORAGE_STATUS_UNFORMATTED = 1 , STORAGE_STATUS_READY = 2 , STORAGE_STATUS_NOT_SUPPORTED = 3 , } impl StorageStatus { pub const DEFAULT : Self = Self :: STORAGE_STATUS_EMPTY ; } impl Default for StorageStatus { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavState { MAV_STATE_UNINIT = 0 , MAV_STATE_BOOT = 1 , MAV_STATE_CALIBRATING = 2 , MAV_STATE_STANDBY = 3 , MAV_STATE_ACTIVE = 4 , MAV_STATE_CRITICAL = 5 , MAV_STATE_EMERGENCY = 6 , MAV_STATE_POWEROFF = 7 , MAV_STATE_FLIGHT_TERMINATION = 8 , } impl MavState { pub const DEFAULT : Self = Self :: MAV_STATE_UNINIT ; } impl Default for MavState { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GpsInputIgnoreFlags : u16 { const GPS_INPUT_IGNORE_FLAG_ALT = 1 ; const GPS_INPUT_IGNORE_FLAG_HDOP = 2 ; const GPS_INPUT_IGNORE_FLAG_VDOP = 4 ; const GPS_INPUT_IGNORE_FLAG_VEL_HORIZ = 8 ; const GPS_INPUT_IGNORE_FLAG_VEL_VERT = 16 ; const GPS_INPUT_IGNORE_FLAG_SPEED_ACCURACY = 32 ; const GPS_INPUT_IGNORE_FLAG_HORIZONTAL_ACCURACY = 64 ; const GPS_INPUT_IGNORE_FLAG_VERTICAL_ACCURACY = 128 ; } } impl GpsInputIgnoreFlags { pub const DEFAULT : Self = Self :: GPS_INPUT_IGNORE_FLAG_ALT ; } impl Default for GpsInputIgnoreFlags { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct AisFlags : u16 { const AIS_FLAGS_POSITION_ACCURACY = 1 ; const AIS_FLAGS_VALID_COG = 2 ; const AIS_FLAGS_VALID_VELOCITY = 4 ; const AIS_FLAGS_HIGH_VELOCITY = 8 ; const AIS_FLAGS_VALID_TURN_RATE = 16 ; const AIS_FLAGS_TURN_RATE_SIGN_ONLY = 32 ; const AIS_FLAGS_VALID_DIMENSIONS = 64 ; const AIS_FLAGS_LARGE_BOW_DIMENSION = 128 ; const AIS_FLAGS_LARGE_STERN_DIMENSION = 256 ; const AIS_FLAGS_LARGE_PORT_DIMENSION = 512 ; const AIS_FLAGS_LARGE_STARBOARD_DIMENSION = 1024 ; const AIS_FLAGS_VALID_CALLSIGN = 2048 ; const AIS_FLAGS_VALID_NAME = 4096 ; } } impl AisFlags { pub const DEFAULT : Self = Self :: AIS_FLAGS_POSITION_ACCURACY ; } impl Default for AisFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum AdsbEmitterType { ADSB_EMITTER_TYPE_NO_INFO = 0 , ADSB_EMITTER_TYPE_LIGHT = 1 , ADSB_EMITTER_TYPE_SMALL = 2 , ADSB_EMITTER_TYPE_LARGE = 3 , ADSB_EMITTER_TYPE_HIGH_VORTEX_LARGE = 4 , ADSB_EMITTER_TYPE_HEAVY = 5 , ADSB_EMITTER_TYPE_HIGHLY_MANUV = 6 , ADSB_EMITTER_TYPE_ROTOCRAFT = 7 , ADSB_EMITTER_TYPE_UNASSIGNED = 8 , ADSB_EMITTER_TYPE_GLIDER = 9 , ADSB_EMITTER_TYPE_LIGHTER_AIR = 10 , ADSB_EMITTER_TYPE_PARACHUTE = 11 , ADSB_EMITTER_TYPE_ULTRA_LIGHT = 12 , ADSB_EMITTER_TYPE_UNASSIGNED2 = 13 , ADSB_EMITTER_TYPE_UAV = 14 , ADSB_EMITTER_TYPE_SPACE = 15 , ADSB_EMITTER_TYPE_UNASSGINED3 = 16 , ADSB_EMITTER_TYPE_EMERGENCY_SURFACE = 17 , ADSB_EMITTER_TYPE_SERVICE_SURFACE = 18 , ADSB_EMITTER_TYPE_POINT_OBSTACLE = 19 , } impl AdsbEmitterType { pub const DEFAULT : Self = Self :: ADSB_EMITTER_TYPE_NO_INFO ; } impl Default for AdsbEmitterType { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CameraCapFlags : u32 { const CAMERA_CAP_FLAGS_CAPTURE_VIDEO = 1 ; const CAMERA_CAP_FLAGS_CAPTURE_IMAGE = 2 ; const CAMERA_CAP_FLAGS_HAS_MODES = 4 ; const CAMERA_CAP_FLAGS_CAN_CAPTURE_IMAGE_IN_VIDEO_MODE = 8 ; const CAMERA_CAP_FLAGS_CAN_CAPTURE_VIDEO_IN_IMAGE_MODE = 16 ; const CAMERA_CAP_FLAGS_HAS_IMAGE_SURVEY_MODE = 32 ; const CAMERA_CAP_FLAGS_HAS_BASIC_ZOOM = 64 ; const CAMERA_CAP_FLAGS_HAS_BASIC_FOCUS = 128 ; const CAMERA_CAP_FLAGS_HAS_VIDEO_STREAM = 256 ; const CAMERA_CAP_FLAGS_HAS_TRACKING_POINT = 512 ; const CAMERA_CAP_FLAGS_HAS_TRACKING_RECTANGLE = 1024 ; const CAMERA_CAP_FLAGS_HAS_TRACKING_GEO_STATUS = 2048 ; } } impl CameraCapFlags { pub const DEFAULT : Self = Self :: CAMERA_CAP_FLAGS_CAPTURE_VIDEO ; } impl Default for CameraCapFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavCmdAck { MAV_CMD_ACK_OK = 0 , MAV_CMD_ACK_ERR_FAIL = 1 , MAV_CMD_ACK_ERR_ACCESS_DENIED = 2 , MAV_CMD_ACK_ERR_NOT_SUPPORTED = 3 , MAV_CMD_ACK_ERR_COORDINATE_FRAME_NOT_SUPPORTED = 4 , MAV_CMD_ACK_ERR_COORDINATES_OUT_OF_RANGE = 5 , MAV_CMD_ACK_ERR_X_LAT_OUT_OF_RANGE = 6 , MAV_CMD_ACK_ERR_Y_LON_OUT_OF_RANGE = 7 , MAV_CMD_ACK_ERR_Z_ALT_OUT_OF_RANGE = 8 , } impl MavCmdAck { pub const DEFAULT : Self = Self :: MAV_CMD_ACK_OK ; } impl Default for MavCmdAck { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MotorTestThrottleType { MOTOR_TEST_THROTTLE_PERCENT = 0 , MOTOR_TEST_THROTTLE_PWM = 1 , MOTOR_TEST_THROTTLE_PILOT = 2 , MOTOR_TEST_COMPASS_CAL = 3 , } impl MotorTestThrottleType { pub const DEFAULT : Self = Self :: MOTOR_TEST_THROTTLE_PERCENT ; } impl Default for MotorTestThrottleType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavDoRepositionFlags { MAV_DO_REPOSITION_FLAGS_CHANGE_MODE = 1 , } impl MavDoRepositionFlags { pub const DEFAULT : Self = Self :: MAV_DO_REPOSITION_FLAGS_CHANGE_MODE ; } impl Default for MavDoRepositionFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum SerialControlDev { SERIAL_CONTROL_DEV_TELEM1 = 0 , SERIAL_CONTROL_DEV_TELEM2 = 1 , SERIAL_CONTROL_DEV_GPS1 = 2 , SERIAL_CONTROL_DEV_GPS2 = 3 , SERIAL_CONTROL_DEV_SHELL = 10 , SERIAL_CONTROL_SERIAL0 = 100 , SERIAL_CONTROL_SERIAL1 = 101 , SERIAL_CONTROL_SERIAL2 = 102 , SERIAL_CONTROL_SERIAL3 = 103 , SERIAL_CONTROL_SERIAL4 = 104 , SERIAL_CONTROL_SERIAL5 = 105 , SERIAL_CONTROL_SERIAL6 = 106 , SERIAL_CONTROL_SERIAL7 = 107 , SERIAL_CONTROL_SERIAL8 = 108 , SERIAL_CONTROL_SERIAL9 = 109 , } impl SerialControlDev { pub const DEFAULT : Self = Self :: SERIAL_CONTROL_DEV_TELEM1 ; } impl Default for SerialControlDev { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MagCalStatus { MAG_CAL_NOT_STARTED = 0 , MAG_CAL_WAITING_TO_START = 1 , MAG_CAL_RUNNING_STEP_ONE = 2 , MAG_CAL_RUNNING_STEP_TWO = 3 , MAG_CAL_SUCCESS = 4 , MAG_CAL_FAILED = 5 , MAG_CAL_BAD_ORIENTATION = 6 , MAG_CAL_BAD_RADIUS = 7 , } impl MagCalStatus { pub const DEFAULT : Self = Self :: MAG_CAL_NOT_STARTED ; } impl Default for MagCalStatus { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MissionState { MISSION_STATE_UNKNOWN = 0 , MISSION_STATE_NO_MISSION = 1 , MISSION_STATE_NOT_STARTED = 2 , MISSION_STATE_ACTIVE = 3 , MISSION_STATE_PAUSED = 4 , MISSION_STATE_COMPLETE = 5 , } impl MissionState { pub const DEFAULT : Self = Self :: MISSION_STATE_UNKNOWN ; } impl Default for MissionState { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct EstimatorStatusFlags : u16 { const ESTIMATOR_ATTITUDE = 1 ; const ESTIMATOR_VELOCITY_HORIZ = 2 ; const ESTIMATOR_VELOCITY_VERT = 4 ; const ESTIMATOR_POS_HORIZ_REL = 8 ; const ESTIMATOR_POS_HORIZ_ABS = 16 ; const ESTIMATOR_POS_VERT_ABS = 32 ; const ESTIMATOR_POS_VERT_AGL = 64 ; const ESTIMATOR_CONST_POS_MODE = 128 ; const ESTIMATOR_PRED_POS_HORIZ_REL = 256 ; const ESTIMATOR_PRED_POS_HORIZ_ABS = 512 ; const ESTIMATOR_GPS_GLITCH = 1024 ; const ESTIMATOR_ACCEL_ERROR = 2048 ; } } impl EstimatorStatusFlags { pub const DEFAULT : Self = Self :: ESTIMATOR_ATTITUDE ; } impl Default for EstimatorStatusFlags { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct UavionixAdsbOutRfSelect : u8 { const UAVIONIX_ADSB_OUT_RF_SELECT_STANDBY = 0 ; const UAVIONIX_ADSB_OUT_RF_SELECT_RX_ENABLED = 1 ; const UAVIONIX_ADSB_OUT_RF_SELECT_TX_ENABLED = 2 ; } } impl UavionixAdsbOutRfSelect { pub const DEFAULT : Self = Self :: UAVIONIX_ADSB_OUT_RF_SELECT_STANDBY ; } impl Default for UavionixAdsbOutRfSelect { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum StorageUsageFlag { STORAGE_USAGE_FLAG_SET = 1 , STORAGE_USAGE_FLAG_PHOTO = 2 , STORAGE_USAGE_FLAG_VIDEO = 4 , STORAGE_USAGE_FLAG_LOGS = 8 , } impl StorageUsageFlag { pub const DEFAULT : Self = Self :: STORAGE_USAGE_FLAG_SET ; } impl Default for StorageUsageFlag { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavCollisionThreatLevel { MAV_COLLISION_THREAT_LEVEL_NONE = 0 , MAV_COLLISION_THREAT_LEVEL_LOW = 1 , MAV_COLLISION_THREAT_LEVEL_HIGH = 2 , } impl MavCollisionThreatLevel { pub const DEFAULT : Self = Self :: MAV_COLLISION_THREAT_LEVEL_NONE ; } impl Default for MavCollisionThreatLevel { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum AisType { AIS_TYPE_UNKNOWN = 0 , AIS_TYPE_RESERVED_1 = 1 , AIS_TYPE_RESERVED_2 = 2 , AIS_TYPE_RESERVED_3 = 3 , AIS_TYPE_RESERVED_4 = 4 , AIS_TYPE_RESERVED_5 = 5 , AIS_TYPE_RESERVED_6 = 6 , AIS_TYPE_RESERVED_7 = 7 , AIS_TYPE_RESERVED_8 = 8 , AIS_TYPE_RESERVED_9 = 9 , AIS_TYPE_RESERVED_10 = 10 , AIS_TYPE_RESERVED_11 = 11 , AIS_TYPE_RESERVED_12 = 12 , AIS_TYPE_RESERVED_13 = 13 , AIS_TYPE_RESERVED_14 = 14 , AIS_TYPE_RESERVED_15 = 15 , AIS_TYPE_RESERVED_16 = 16 , AIS_TYPE_RESERVED_17 = 17 , AIS_TYPE_RESERVED_18 = 18 , AIS_TYPE_RESERVED_19 = 19 , AIS_TYPE_WIG = 20 , AIS_TYPE_WIG_HAZARDOUS_A = 21 , AIS_TYPE_WIG_HAZARDOUS_B = 22 , AIS_TYPE_WIG_HAZARDOUS_C = 23 , AIS_TYPE_WIG_HAZARDOUS_D = 24 , AIS_TYPE_WIG_RESERVED_1 = 25 , AIS_TYPE_WIG_RESERVED_2 = 26 , AIS_TYPE_WIG_RESERVED_3 = 27 , AIS_TYPE_WIG_RESERVED_4 = 28 , AIS_TYPE_WIG_RESERVED_5 = 29 , AIS_TYPE_FISHING = 30 , AIS_TYPE_TOWING = 31 , AIS_TYPE_TOWING_LARGE = 32 , AIS_TYPE_DREDGING = 33 , AIS_TYPE_DIVING = 34 , AIS_TYPE_MILITARY = 35 , AIS_TYPE_SAILING = 36 , AIS_TYPE_PLEASURE = 37 , AIS_TYPE_RESERVED_20 = 38 , AIS_TYPE_RESERVED_21 = 39 , AIS_TYPE_HSC = 40 , AIS_TYPE_HSC_HAZARDOUS_A = 41 , AIS_TYPE_HSC_HAZARDOUS_B = 42 , AIS_TYPE_HSC_HAZARDOUS_C = 43 , AIS_TYPE_HSC_HAZARDOUS_D = 44 , AIS_TYPE_HSC_RESERVED_1 = 45 , AIS_TYPE_HSC_RESERVED_2 = 46 , AIS_TYPE_HSC_RESERVED_3 = 47 , AIS_TYPE_HSC_RESERVED_4 = 48 , AIS_TYPE_HSC_UNKNOWN = 49 , AIS_TYPE_PILOT = 50 , AIS_TYPE_SAR = 51 , AIS_TYPE_TUG = 52 , AIS_TYPE_PORT_TENDER = 53 , AIS_TYPE_ANTI_POLLUTION = 54 , AIS_TYPE_LAW_ENFORCEMENT = 55 , AIS_TYPE_SPARE_LOCAL_1 = 56 , AIS_TYPE_SPARE_LOCAL_2 = 57 , AIS_TYPE_MEDICAL_TRANSPORT = 58 , AIS_TYPE_NONECOMBATANT = 59 , AIS_TYPE_PASSENGER = 60 , AIS_TYPE_PASSENGER_HAZARDOUS_A = 61 , AIS_TYPE_PASSENGER_HAZARDOUS_B = 62 , AIS_TYPE_PASSENGER_HAZARDOUS_C = 63 , AIS_TYPE_PASSENGER_HAZARDOUS_D = 64 , AIS_TYPE_PASSENGER_RESERVED_1 = 65 , AIS_TYPE_PASSENGER_RESERVED_2 = 66 , AIS_TYPE_PASSENGER_RESERVED_3 = 67 , AIS_TYPE_PASSENGER_RESERVED_4 = 68 , AIS_TYPE_PASSENGER_UNKNOWN = 69 , AIS_TYPE_CARGO = 70 , AIS_TYPE_CARGO_HAZARDOUS_A = 71 , AIS_TYPE_CARGO_HAZARDOUS_B = 72 , AIS_TYPE_CARGO_HAZARDOUS_C = 73 , AIS_TYPE_CARGO_HAZARDOUS_D = 74 , AIS_TYPE_CARGO_RESERVED_1 = 75 , AIS_TYPE_CARGO_RESERVED_2 = 76 , AIS_TYPE_CARGO_RESERVED_3 = 77 , AIS_TYPE_CARGO_RESERVED_4 = 78 , AIS_TYPE_CARGO_UNKNOWN = 79 , AIS_TYPE_TANKER = 80 , AIS_TYPE_TANKER_HAZARDOUS_A = 81 , AIS_TYPE_TANKER_HAZARDOUS_B = 82 , AIS_TYPE_TANKER_HAZARDOUS_C = 83 , AIS_TYPE_TANKER_HAZARDOUS_D = 84 , AIS_TYPE_TANKER_RESERVED_1 = 85 , AIS_TYPE_TANKER_RESERVED_2 = 86 , AIS_TYPE_TANKER_RESERVED_3 = 87 , AIS_TYPE_TANKER_RESERVED_4 = 88 , AIS_TYPE_TANKER_UNKNOWN = 89 , AIS_TYPE_OTHER = 90 , AIS_TYPE_OTHER_HAZARDOUS_A = 91 , AIS_TYPE_OTHER_HAZARDOUS_B = 92 , AIS_TYPE_OTHER_HAZARDOUS_C = 93 , AIS_TYPE_OTHER_HAZARDOUS_D = 94 , AIS_TYPE_OTHER_RESERVED_1 = 95 , AIS_TYPE_OTHER_RESERVED_2 = 96 , AIS_TYPE_OTHER_RESERVED_3 = 97 , AIS_TYPE_OTHER_RESERVED_4 = 98 , AIS_TYPE_OTHER_UNKNOWN = 99 , } impl AisType { pub const DEFAULT : Self = Self :: AIS_TYPE_UNKNOWN ; } impl Default for AisType { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MavProtocolCapability : u64 { const MAV_PROTOCOL_CAPABILITY_MISSION_FLOAT = 1 ; const MAV_PROTOCOL_CAPABILITY_PARAM_FLOAT = 2 ; const MAV_PROTOCOL_CAPABILITY_MISSION_INT = 4 ; const MAV_PROTOCOL_CAPABILITY_COMMAND_INT = 8 ; const MAV_PROTOCOL_CAPABILITY_PARAM_ENCODE_BYTEWISE = 16 ; const MAV_PROTOCOL_CAPABILITY_FTP = 32 ; const MAV_PROTOCOL_CAPABILITY_SET_ATTITUDE_TARGET = 64 ; const MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_LOCAL_NED = 128 ; const MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_GLOBAL_INT = 256 ; const MAV_PROTOCOL_CAPABILITY_TERRAIN = 512 ; const MAV_PROTOCOL_CAPABILITY_SET_ACTUATOR_TARGET = 1024 ; const MAV_PROTOCOL_CAPABILITY_FLIGHT_TERMINATION = 2048 ; const MAV_PROTOCOL_CAPABILITY_COMPASS_CALIBRATION = 4096 ; const MAV_PROTOCOL_CAPABILITY_MAVLINK2 = 8192 ; const MAV_PROTOCOL_CAPABILITY_MISSION_FENCE = 16384 ; const MAV_PROTOCOL_CAPABILITY_MISSION_RALLY = 32768 ; const MAV_PROTOCOL_CAPABILITY_RESERVED2 = 65536 ; const MAV_PROTOCOL_CAPABILITY_PARAM_ENCODE_C_CAST = 131072 ; } } impl MavProtocolCapability { pub const DEFAULT : Self = Self :: MAV_PROTOCOL_CAPABILITY_MISSION_FLOAT ; } impl Default for MavProtocolCapability { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MavSysStatusSensor : u32 { const MAV_SYS_STATUS_SENSOR_3D_GYRO = 1 ; const MAV_SYS_STATUS_SENSOR_3D_ACCEL = 2 ; const MAV_SYS_STATUS_SENSOR_3D_MAG = 4 ; const MAV_SYS_STATUS_SENSOR_ABSOLUTE_PRESSURE = 8 ; const MAV_SYS_STATUS_SENSOR_DIFFERENTIAL_PRESSURE = 16 ; const MAV_SYS_STATUS_SENSOR_GPS = 32 ; const MAV_SYS_STATUS_SENSOR_OPTICAL_FLOW = 64 ; const MAV_SYS_STATUS_SENSOR_VISION_POSITION = 128 ; const MAV_SYS_STATUS_SENSOR_LASER_POSITION = 256 ; const MAV_SYS_STATUS_SENSOR_EXTERNAL_GROUND_TRUTH = 512 ; const MAV_SYS_STATUS_SENSOR_ANGULAR_RATE_CONTROL = 1024 ; const MAV_SYS_STATUS_SENSOR_ATTITUDE_STABILIZATION = 2048 ; const MAV_SYS_STATUS_SENSOR_YAW_POSITION = 4096 ; const MAV_SYS_STATUS_SENSOR_Z_ALTITUDE_CONTROL = 8192 ; const MAV_SYS_STATUS_SENSOR_XY_POSITION_CONTROL = 16384 ; const MAV_SYS_STATUS_SENSOR_MOTOR_OUTPUTS = 32768 ; const MAV_SYS_STATUS_SENSOR_RC_RECEIVER = 65536 ; const MAV_SYS_STATUS_SENSOR_3D_GYRO2 = 131072 ; const MAV_SYS_STATUS_SENSOR_3D_ACCEL2 = 262144 ; const MAV_SYS_STATUS_SENSOR_3D_MAG2 = 524288 ; const MAV_SYS_STATUS_GEOFENCE = 1048576 ; const MAV_SYS_STATUS_AHRS = 2097152 ; const MAV_SYS_STATUS_TERRAIN = 4194304 ; const MAV_SYS_STATUS_REVERSE_MOTOR = 8388608 ; const MAV_SYS_STATUS_LOGGING = 16777216 ; const MAV_SYS_STATUS_SENSOR_BATTERY = 33554432 ; const MAV_SYS_STATUS_SENSOR_PROXIMITY = 67108864 ; const MAV_SYS_STATUS_SENSOR_SATCOM = 134217728 ; const MAV_SYS_STATUS_PREARM_CHECK = 268435456 ; const MAV_SYS_STATUS_OBSTACLE_AVOIDANCE = 536870912 ; const MAV_SYS_STATUS_SENSOR_PROPULSION = 1073741824 ; const MAV_SYS_STATUS_EXTENSION_USED = 2147483648 ; } } impl MavSysStatusSensor { pub const DEFAULT : Self = Self :: MAV_SYS_STATUS_SENSOR_3D_GYRO ; } impl Default for MavSysStatusSensor { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum SetFocusType { FOCUS_TYPE_STEP = 0 , FOCUS_TYPE_CONTINUOUS = 1 , FOCUS_TYPE_RANGE = 2 , FOCUS_TYPE_METERS = 3 , FOCUS_TYPE_AUTO = 4 , FOCUS_TYPE_AUTO_SINGLE = 5 , FOCUS_TYPE_AUTO_CONTINUOUS = 6 , } impl SetFocusType { pub const DEFAULT : Self = Self :: FOCUS_TYPE_STEP ; } impl Default for SetFocusType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum CameraTrackingMode { CAMERA_TRACKING_MODE_NONE = 0 , CAMERA_TRACKING_MODE_POINT = 1 , CAMERA_TRACKING_MODE_RECTANGLE = 2 , } impl CameraTrackingMode { pub const DEFAULT : Self = Self :: CAMERA_TRACKING_MODE_NONE ; } impl Default for CameraTrackingMode { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PositionTargetTypemask : u16 { const POSITION_TARGET_TYPEMASK_X_IGNORE = 1 ; const POSITION_TARGET_TYPEMASK_Y_IGNORE = 2 ; const POSITION_TARGET_TYPEMASK_Z_IGNORE = 4 ; const POSITION_TARGET_TYPEMASK_VX_IGNORE = 8 ; const POSITION_TARGET_TYPEMASK_VY_IGNORE = 16 ; const POSITION_TARGET_TYPEMASK_VZ_IGNORE = 32 ; const POSITION_TARGET_TYPEMASK_AX_IGNORE = 64 ; const POSITION_TARGET_TYPEMASK_AY_IGNORE = 128 ; const POSITION_TARGET_TYPEMASK_AZ_IGNORE = 256 ; const POSITION_TARGET_TYPEMASK_FORCE_SET = 512 ; const POSITION_TARGET_TYPEMASK_YAW_IGNORE = 1024 ; const POSITION_TARGET_TYPEMASK_YAW_RATE_IGNORE = 2048 ; } } impl PositionTargetTypemask { pub const DEFAULT : Self = Self :: POSITION_TARGET_TYPEMASK_X_IGNORE ; } impl Default for PositionTargetTypemask { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavCmd { MAV_CMD_NAV_WAYPOINT = 16 , MAV_CMD_NAV_LOITER_UNLIM = 17 , MAV_CMD_NAV_LOITER_TURNS = 18 , MAV_CMD_NAV_LOITER_TIME = 19 , MAV_CMD_NAV_RETURN_TO_LAUNCH = 20 , MAV_CMD_NAV_LAND = 21 , MAV_CMD_NAV_TAKEOFF = 22 , MAV_CMD_NAV_LAND_LOCAL = 23 , MAV_CMD_NAV_TAKEOFF_LOCAL = 24 , MAV_CMD_NAV_FOLLOW = 25 , MAV_CMD_NAV_CONTINUE_AND_CHANGE_ALT = 30 , MAV_CMD_NAV_LOITER_TO_ALT = 31 , MAV_CMD_DO_FOLLOW = 32 , MAV_CMD_DO_FOLLOW_REPOSITION = 33 , MAV_CMD_DO_ORBIT = 34 , MAV_CMD_NAV_ROI = 80 , MAV_CMD_NAV_PATHPLANNING = 81 , MAV_CMD_NAV_SPLINE_WAYPOINT = 82 , MAV_CMD_NAV_VTOL_TAKEOFF = 84 , MAV_CMD_NAV_VTOL_LAND = 85 , MAV_CMD_NAV_GUIDED_ENABLE = 92 , MAV_CMD_NAV_DELAY = 93 , MAV_CMD_NAV_PAYLOAD_PLACE = 94 , MAV_CMD_NAV_LAST = 95 , MAV_CMD_CONDITION_DELAY = 112 , MAV_CMD_CONDITION_CHANGE_ALT = 113 , MAV_CMD_CONDITION_DISTANCE = 114 , MAV_CMD_CONDITION_YAW = 115 , MAV_CMD_CONDITION_LAST = 159 , MAV_CMD_DO_SET_MODE = 176 , MAV_CMD_DO_JUMP = 177 , MAV_CMD_DO_CHANGE_SPEED = 178 , MAV_CMD_DO_SET_HOME = 179 , MAV_CMD_DO_SET_PARAMETER = 180 , MAV_CMD_DO_SET_RELAY = 181 , MAV_CMD_DO_REPEAT_RELAY = 182 , MAV_CMD_DO_SET_SERVO = 183 , MAV_CMD_DO_REPEAT_SERVO = 184 , MAV_CMD_DO_FLIGHTTERMINATION = 185 , MAV_CMD_DO_CHANGE_ALTITUDE = 186 , MAV_CMD_DO_SET_ACTUATOR = 187 , MAV_CMD_DO_LAND_START = 189 , MAV_CMD_DO_RALLY_LAND = 190 , MAV_CMD_DO_GO_AROUND = 191 , MAV_CMD_DO_REPOSITION = 192 , MAV_CMD_DO_PAUSE_CONTINUE = 193 , MAV_CMD_DO_SET_REVERSE = 194 , MAV_CMD_DO_SET_ROI_LOCATION = 195 , MAV_CMD_DO_SET_ROI_WPNEXT_OFFSET = 196 , MAV_CMD_DO_SET_ROI_NONE = 197 , MAV_CMD_DO_SET_ROI_SYSID = 198 , MAV_CMD_DO_CONTROL_VIDEO = 200 , MAV_CMD_DO_SET_ROI = 201 , MAV_CMD_DO_DIGICAM_CONFIGURE = 202 , MAV_CMD_DO_DIGICAM_CONTROL = 203 , MAV_CMD_DO_MOUNT_CONFIGURE = 204 , MAV_CMD_DO_MOUNT_CONTROL = 205 , MAV_CMD_DO_SET_CAM_TRIGG_DIST = 206 , MAV_CMD_DO_FENCE_ENABLE = 207 , MAV_CMD_DO_PARACHUTE = 208 , MAV_CMD_DO_MOTOR_TEST = 209 , MAV_CMD_DO_INVERTED_FLIGHT = 210 , MAV_CMD_DO_GRIPPER = 211 , MAV_CMD_DO_AUTOTUNE_ENABLE = 212 , MAV_CMD_NAV_SET_YAW_SPEED = 213 , MAV_CMD_DO_SET_CAM_TRIGG_INTERVAL = 214 , MAV_CMD_DO_MOUNT_CONTROL_QUAT = 220 , MAV_CMD_DO_GUIDED_MASTER = 221 , MAV_CMD_DO_GUIDED_LIMITS = 222 , MAV_CMD_DO_ENGINE_CONTROL = 223 , MAV_CMD_DO_SET_MISSION_CURRENT = 224 , MAV_CMD_DO_LAST = 240 , MAV_CMD_PREFLIGHT_CALIBRATION = 241 , MAV_CMD_PREFLIGHT_SET_SENSOR_OFFSETS = 242 , MAV_CMD_PREFLIGHT_UAVCAN = 243 , MAV_CMD_PREFLIGHT_STORAGE = 245 , MAV_CMD_PREFLIGHT_REBOOT_SHUTDOWN = 246 , MAV_CMD_OVERRIDE_GOTO = 252 , MAV_CMD_OBLIQUE_SURVEY = 260 , MAV_CMD_MISSION_START = 300 , MAV_CMD_ACTUATOR_TEST = 310 , MAV_CMD_CONFIGURE_ACTUATOR = 311 , MAV_CMD_COMPONENT_ARM_DISARM = 400 , MAV_CMD_RUN_PREARM_CHECKS = 401 , MAV_CMD_ILLUMINATOR_ON_OFF = 405 , MAV_CMD_GET_HOME_POSITION = 410 , MAV_CMD_INJECT_FAILURE = 420 , MAV_CMD_START_RX_PAIR = 500 , MAV_CMD_GET_MESSAGE_INTERVAL = 510 , MAV_CMD_SET_MESSAGE_INTERVAL = 511 , MAV_CMD_REQUEST_MESSAGE = 512 , MAV_CMD_REQUEST_PROTOCOL_VERSION = 519 , MAV_CMD_REQUEST_AUTOPILOT_CAPABILITIES = 520 , MAV_CMD_REQUEST_CAMERA_INFORMATION = 521 , MAV_CMD_REQUEST_CAMERA_SETTINGS = 522 , MAV_CMD_REQUEST_STORAGE_INFORMATION = 525 , MAV_CMD_STORAGE_FORMAT = 526 , MAV_CMD_REQUEST_CAMERA_CAPTURE_STATUS = 527 , MAV_CMD_REQUEST_FLIGHT_INFORMATION = 528 , MAV_CMD_RESET_CAMERA_SETTINGS = 529 , MAV_CMD_SET_CAMERA_MODE = 530 , MAV_CMD_SET_CAMERA_ZOOM = 531 , MAV_CMD_SET_CAMERA_FOCUS = 532 , MAV_CMD_SET_STORAGE_USAGE = 533 , MAV_CMD_JUMP_TAG = 600 , MAV_CMD_DO_JUMP_TAG = 601 , MAV_CMD_DO_GIMBAL_MANAGER_PITCHYAW = 1000 , MAV_CMD_DO_GIMBAL_MANAGER_CONFIGURE = 1001 , MAV_CMD_IMAGE_START_CAPTURE = 2000 , MAV_CMD_IMAGE_STOP_CAPTURE = 2001 , MAV_CMD_REQUEST_CAMERA_IMAGE_CAPTURE = 2002 , MAV_CMD_DO_TRIGGER_CONTROL = 2003 , MAV_CMD_CAMERA_TRACK_POINT = 2004 , MAV_CMD_CAMERA_TRACK_RECTANGLE = 2005 , MAV_CMD_CAMERA_STOP_TRACKING = 2010 , MAV_CMD_VIDEO_START_CAPTURE = 2500 , MAV_CMD_VIDEO_STOP_CAPTURE = 2501 , MAV_CMD_VIDEO_START_STREAMING = 2502 , MAV_CMD_VIDEO_STOP_STREAMING = 2503 , MAV_CMD_REQUEST_VIDEO_STREAM_INFORMATION = 2504 , MAV_CMD_REQUEST_VIDEO_STREAM_STATUS = 2505 , MAV_CMD_LOGGING_START = 2510 , MAV_CMD_LOGGING_STOP = 2511 , MAV_CMD_AIRFRAME_CONFIGURATION = 2520 , MAV_CMD_CONTROL_HIGH_LATENCY = 2600 , MAV_CMD_PANORAMA_CREATE = 2800 , MAV_CMD_DO_VTOL_TRANSITION = 3000 , MAV_CMD_ARM_AUTHORIZATION_REQUEST = 3001 , MAV_CMD_SET_GUIDED_SUBMODE_STANDARD = 4000 , MAV_CMD_SET_GUIDED_SUBMODE_CIRCLE = 4001 , MAV_CMD_CONDITION_GATE = 4501 , MAV_CMD_NAV_FENCE_RETURN_POINT = 5000 , MAV_CMD_NAV_FENCE_POLYGON_VERTEX_INCLUSION = 5001 , MAV_CMD_NAV_FENCE_POLYGON_VERTEX_EXCLUSION = 5002 , MAV_CMD_NAV_FENCE_CIRCLE_INCLUSION = 5003 , MAV_CMD_NAV_FENCE_CIRCLE_EXCLUSION = 5004 , MAV_CMD_NAV_RALLY_POINT = 5100 , MAV_CMD_UAVCAN_GET_NODE_INFO = 5200 , MAV_CMD_DO_ADSB_OUT_IDENT = 10001 , MAV_CMD_PAYLOAD_PREPARE_DEPLOY = 30001 , MAV_CMD_PAYLOAD_CONTROL_DEPLOY = 30002 , MAV_CMD_FIXED_MAG_CAL_YAW = 42006 , MAV_CMD_DO_WINCH = 42600 , MAV_CMD_WAYPOINT_USER_1 = 31000 , MAV_CMD_WAYPOINT_USER_2 = 31001 , MAV_CMD_WAYPOINT_USER_3 = 31002 , MAV_CMD_WAYPOINT_USER_4 = 31003 , MAV_CMD_WAYPOINT_USER_5 = 31004 , MAV_CMD_SPATIAL_USER_1 = 31005 , MAV_CMD_SPATIAL_USER_2 = 31006 , MAV_CMD_SPATIAL_USER_3 = 31007 , MAV_CMD_SPATIAL_USER_4 = 31008 , MAV_CMD_SPATIAL_USER_5 = 31009 , MAV_CMD_USER_1 = 31010 , MAV_CMD_USER_2 = 31011 , MAV_CMD_USER_3 = 31012 , MAV_CMD_USER_4 = 31013 , MAV_CMD_USER_5 = 31014 , MAV_CMD_CAN_FORWARD = 32000 , } impl MavCmd { pub const DEFAULT : Self = Self :: MAV_CMD_NAV_WAYPOINT ; } impl Default for MavCmd { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidDescType { MAV_ODID_DESC_TYPE_TEXT = 0 , MAV_ODID_DESC_TYPE_EMERGENCY = 1 , MAV_ODID_DESC_TYPE_EXTENDED_STATUS = 2 , } impl MavOdidDescType { pub const DEFAULT : Self = Self :: MAV_ODID_DESC_TYPE_TEXT ; } impl Default for MavOdidDescType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum WifiConfigApMode { WIFI_CONFIG_AP_MODE_UNDEFINED = 0 , WIFI_CONFIG_AP_MODE_AP = 1 , WIFI_CONFIG_AP_MODE_STATION = 2 , WIFI_CONFIG_AP_MODE_DISABLED = 3 , } impl WifiConfigApMode { pub const DEFAULT : Self = Self :: WIFI_CONFIG_AP_MODE_UNDEFINED ; } impl Default for WifiConfigApMode { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct TuneFormat : u32 { const TUNE_FORMAT_QBASIC1_1 = 1 ; const TUNE_FORMAT_MML_MODERN = 2 ; } } impl TuneFormat { pub const DEFAULT : Self = Self :: TUNE_FORMAT_QBASIC1_1 ; } impl Default for TuneFormat { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum CellularNetworkFailedReason { CELLULAR_NETWORK_FAILED_REASON_NONE = 0 , CELLULAR_NETWORK_FAILED_REASON_UNKNOWN = 1 , CELLULAR_NETWORK_FAILED_REASON_SIM_MISSING = 2 , CELLULAR_NETWORK_FAILED_REASON_SIM_ERROR = 3 , } impl CellularNetworkFailedReason { pub const DEFAULT : Self = Self :: CELLULAR_NETWORK_FAILED_REASON_NONE ; } impl Default for CellularNetworkFailedReason { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidIdType { MAV_ODID_ID_TYPE_NONE = 0 , MAV_ODID_ID_TYPE_SERIAL_NUMBER = 1 , MAV_ODID_ID_TYPE_CAA_REGISTRATION_ID = 2 , MAV_ODID_ID_TYPE_UTM_ASSIGNED_UUID = 3 , MAV_ODID_ID_TYPE_SPECIFIC_SESSION_ID = 4 , } impl MavOdidIdType { pub const DEFAULT : Self = Self :: MAV_ODID_ID_TYPE_NONE ; } impl Default for MavOdidIdType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum AdsbAltitudeType { ADSB_ALTITUDE_TYPE_PRESSURE_QNH = 0 , ADSB_ALTITUDE_TYPE_GEOMETRIC = 1 , } impl AdsbAltitudeType { pub const DEFAULT : Self = Self :: ADSB_ALTITUDE_TYPE_PRESSURE_QNH ; } impl Default for AdsbAltitudeType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavEstimatorType { MAV_ESTIMATOR_TYPE_UNKNOWN = 0 , MAV_ESTIMATOR_TYPE_NAIVE = 1 , MAV_ESTIMATOR_TYPE_VISION = 2 , MAV_ESTIMATOR_TYPE_VIO = 3 , MAV_ESTIMATOR_TYPE_GPS = 4 , MAV_ESTIMATOR_TYPE_GPS_INS = 5 , MAV_ESTIMATOR_TYPE_MOCAP = 6 , MAV_ESTIMATOR_TYPE_LIDAR = 7 , MAV_ESTIMATOR_TYPE_AUTOPILOT = 8 , } impl MavEstimatorType { pub const DEFAULT : Self = Self :: MAV_ESTIMATOR_TYPE_UNKNOWN ; } impl Default for MavEstimatorType { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MavEventCurrentSequenceFlags : u8 { const MAV_EVENT_CURRENT_SEQUENCE_FLAGS_RESET = 1 ; } } impl MavEventCurrentSequenceFlags { pub const DEFAULT : Self = Self :: MAV_EVENT_CURRENT_SEQUENCE_FLAGS_RESET ; } impl Default for MavEventCurrentSequenceFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavEventErrorReason { MAV_EVENT_ERROR_REASON_UNAVAILABLE = 0 , } impl MavEventErrorReason { pub const DEFAULT : Self = Self :: MAV_EVENT_ERROR_REASON_UNAVAILABLE ; } impl Default for MavEventErrorReason { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GimbalDeviceCapFlags : u16 { const GIMBAL_DEVICE_CAP_FLAGS_HAS_RETRACT = 1 ; const GIMBAL_DEVICE_CAP_FLAGS_HAS_NEUTRAL = 2 ; const GIMBAL_DEVICE_CAP_FLAGS_HAS_ROLL_AXIS = 4 ; const GIMBAL_DEVICE_CAP_FLAGS_HAS_ROLL_FOLLOW = 8 ; const GIMBAL_DEVICE_CAP_FLAGS_HAS_ROLL_LOCK = 16 ; const GIMBAL_DEVICE_CAP_FLAGS_HAS_PITCH_AXIS = 32 ; const GIMBAL_DEVICE_CAP_FLAGS_HAS_PITCH_FOLLOW = 64 ; const GIMBAL_DEVICE_CAP_FLAGS_HAS_PITCH_LOCK = 128 ; const GIMBAL_DEVICE_CAP_FLAGS_HAS_YAW_AXIS = 256 ; const GIMBAL_DEVICE_CAP_FLAGS_HAS_YAW_FOLLOW = 512 ; const GIMBAL_DEVICE_CAP_FLAGS_HAS_YAW_LOCK = 1024 ; const GIMBAL_DEVICE_CAP_FLAGS_SUPPORTS_INFINITE_YAW = 2048 ; const GIMBAL_DEVICE_CAP_FLAGS_SUPPORTS_YAW_IN_EARTH_FRAME = 4096 ; const GIMBAL_DEVICE_CAP_FLAGS_HAS_RC_INPUTS = 8192 ; } } impl GimbalDeviceCapFlags { pub const DEFAULT : Self = Self :: GIMBAL_DEVICE_CAP_FLAGS_HAS_RETRACT ; } impl Default for GimbalDeviceCapFlags { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct AdsbFlags : u16 { const ADSB_FLAGS_VALID_COORDS = 1 ; const ADSB_FLAGS_VALID_ALTITUDE = 2 ; const ADSB_FLAGS_VALID_HEADING = 4 ; const ADSB_FLAGS_VALID_VELOCITY = 8 ; const ADSB_FLAGS_VALID_CALLSIGN = 16 ; const ADSB_FLAGS_VALID_SQUAWK = 32 ; const ADSB_FLAGS_SIMULATED = 64 ; const ADSB_FLAGS_VERTICAL_VELOCITY_VALID = 128 ; const ADSB_FLAGS_BARO_VALID = 256 ; const ADSB_FLAGS_SOURCE_UAT = 32768 ; } } impl AdsbFlags { pub const DEFAULT : Self = Self :: ADSB_FLAGS_VALID_COORDS ; } impl Default for AdsbFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum CameraMode { CAMERA_MODE_IMAGE = 0 , CAMERA_MODE_VIDEO = 1 , CAMERA_MODE_IMAGE_SURVEY = 2 , } impl CameraMode { pub const DEFAULT : Self = Self :: CAMERA_MODE_IMAGE ; } impl Default for CameraMode { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum CameraTrackingStatusFlags { CAMERA_TRACKING_STATUS_FLAGS_IDLE = 0 , CAMERA_TRACKING_STATUS_FLAGS_ACTIVE = 1 , CAMERA_TRACKING_STATUS_FLAGS_ERROR = 2 , } impl CameraTrackingStatusFlags { pub const DEFAULT : Self = Self :: CAMERA_TRACKING_STATUS_FLAGS_IDLE ; } impl Default for CameraTrackingStatusFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidArmStatus { MAV_ODID_ARM_STATUS_GOOD_TO_ARM = 0 , MAV_ODID_ARM_STATUS_PRE_ARM_FAIL_GENERIC = 1 , } impl MavOdidArmStatus { pub const DEFAULT : Self = Self :: MAV_ODID_ARM_STATUS_GOOD_TO_ARM ; } impl Default for MavOdidArmStatus { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavSensorOrientation { MAV_SENSOR_ROTATION_NONE = 0 , MAV_SENSOR_ROTATION_YAW_45 = 1 , MAV_SENSOR_ROTATION_YAW_90 = 2 , MAV_SENSOR_ROTATION_YAW_135 = 3 , MAV_SENSOR_ROTATION_YAW_180 = 4 , MAV_SENSOR_ROTATION_YAW_225 = 5 , MAV_SENSOR_ROTATION_YAW_270 = 6 , MAV_SENSOR_ROTATION_YAW_315 = 7 , MAV_SENSOR_ROTATION_ROLL_180 = 8 , MAV_SENSOR_ROTATION_ROLL_180_YAW_45 = 9 , MAV_SENSOR_ROTATION_ROLL_180_YAW_90 = 10 , MAV_SENSOR_ROTATION_ROLL_180_YAW_135 = 11 , MAV_SENSOR_ROTATION_PITCH_180 = 12 , MAV_SENSOR_ROTATION_ROLL_180_YAW_225 = 13 , MAV_SENSOR_ROTATION_ROLL_180_YAW_270 = 14 , MAV_SENSOR_ROTATION_ROLL_180_YAW_315 = 15 , MAV_SENSOR_ROTATION_ROLL_90 = 16 , MAV_SENSOR_ROTATION_ROLL_90_YAW_45 = 17 , MAV_SENSOR_ROTATION_ROLL_90_YAW_90 = 18 , MAV_SENSOR_ROTATION_ROLL_90_YAW_135 = 19 , MAV_SENSOR_ROTATION_ROLL_270 = 20 , MAV_SENSOR_ROTATION_ROLL_270_YAW_45 = 21 , MAV_SENSOR_ROTATION_ROLL_270_YAW_90 = 22 , MAV_SENSOR_ROTATION_ROLL_270_YAW_135 = 23 , MAV_SENSOR_ROTATION_PITCH_90 = 24 , MAV_SENSOR_ROTATION_PITCH_270 = 25 , MAV_SENSOR_ROTATION_PITCH_180_YAW_90 = 26 , MAV_SENSOR_ROTATION_PITCH_180_YAW_270 = 27 , MAV_SENSOR_ROTATION_ROLL_90_PITCH_90 = 28 , MAV_SENSOR_ROTATION_ROLL_180_PITCH_90 = 29 , MAV_SENSOR_ROTATION_ROLL_270_PITCH_90 = 30 , MAV_SENSOR_ROTATION_ROLL_90_PITCH_180 = 31 , MAV_SENSOR_ROTATION_ROLL_270_PITCH_180 = 32 , MAV_SENSOR_ROTATION_ROLL_90_PITCH_270 = 33 , MAV_SENSOR_ROTATION_ROLL_180_PITCH_270 = 34 , MAV_SENSOR_ROTATION_ROLL_270_PITCH_270 = 35 , MAV_SENSOR_ROTATION_ROLL_90_PITCH_180_YAW_90 = 36 , MAV_SENSOR_ROTATION_ROLL_90_YAW_270 = 37 , MAV_SENSOR_ROTATION_ROLL_90_PITCH_68_YAW_293 = 38 , MAV_SENSOR_ROTATION_PITCH_315 = 39 , MAV_SENSOR_ROTATION_ROLL_90_PITCH_315 = 40 , MAV_SENSOR_ROTATION_CUSTOM = 100 , } impl MavSensorOrientation { pub const DEFAULT : Self = Self :: MAV_SENSOR_ROTATION_NONE ; } impl Default for MavSensorOrientation { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidHorAcc { MAV_ODID_HOR_ACC_UNKNOWN = 0 , MAV_ODID_HOR_ACC_10NM = 1 , MAV_ODID_HOR_ACC_4NM = 2 , MAV_ODID_HOR_ACC_2NM = 3 , MAV_ODID_HOR_ACC_1NM = 4 , MAV_ODID_HOR_ACC_0_5NM = 5 , MAV_ODID_HOR_ACC_0_3NM = 6 , MAV_ODID_HOR_ACC_0_1NM = 7 , MAV_ODID_HOR_ACC_0_05NM = 8 , MAV_ODID_HOR_ACC_30_METER = 9 , MAV_ODID_HOR_ACC_10_METER = 10 , MAV_ODID_HOR_ACC_3_METER = 11 , MAV_ODID_HOR_ACC_1_METER = 12 , } impl MavOdidHorAcc { pub const DEFAULT : Self = Self :: MAV_ODID_HOR_ACC_UNKNOWN ; } impl Default for MavOdidHorAcc { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavAutopilot { MAV_AUTOPILOT_GENERIC = 0 , MAV_AUTOPILOT_RESERVED = 1 , MAV_AUTOPILOT_SLUGS = 2 , MAV_AUTOPILOT_ARDUPILOTMEGA = 3 , MAV_AUTOPILOT_OPENPILOT = 4 , MAV_AUTOPILOT_GENERIC_WAYPOINTS_ONLY = 5 , MAV_AUTOPILOT_GENERIC_WAYPOINTS_AND_SIMPLE_NAVIGATION_ONLY = 6 , MAV_AUTOPILOT_GENERIC_MISSION_FULL = 7 , MAV_AUTOPILOT_INVALID = 8 , MAV_AUTOPILOT_PPZ = 9 , MAV_AUTOPILOT_UDB = 10 , MAV_AUTOPILOT_FP = 11 , MAV_AUTOPILOT_PX4 = 12 , MAV_AUTOPILOT_SMACCMPILOT = 13 , MAV_AUTOPILOT_AUTOQUAD = 14 , MAV_AUTOPILOT_ARMAZILA = 15 , MAV_AUTOPILOT_AEROB = 16 , MAV_AUTOPILOT_ASLUAV = 17 , MAV_AUTOPILOT_SMARTAP = 18 , MAV_AUTOPILOT_AIRRAILS = 19 , MAV_AUTOPILOT_REFLEX = 20 , } impl MavAutopilot { pub const DEFAULT : Self = Self :: MAV_AUTOPILOT_GENERIC ; } impl Default for MavAutopilot { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidClassEu { MAV_ODID_CLASS_EU_UNDECLARED = 0 , MAV_ODID_CLASS_EU_CLASS_0 = 1 , MAV_ODID_CLASS_EU_CLASS_1 = 2 , MAV_ODID_CLASS_EU_CLASS_2 = 3 , MAV_ODID_CLASS_EU_CLASS_3 = 4 , MAV_ODID_CLASS_EU_CLASS_4 = 5 , MAV_ODID_CLASS_EU_CLASS_5 = 6 , MAV_ODID_CLASS_EU_CLASS_6 = 7 , } impl MavOdidClassEu { pub const DEFAULT : Self = Self :: MAV_ODID_CLASS_EU_UNDECLARED ; } impl Default for MavOdidClassEu { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavResult { MAV_RESULT_ACCEPTED = 0 , MAV_RESULT_TEMPORARILY_REJECTED = 1 , MAV_RESULT_DENIED = 2 , MAV_RESULT_UNSUPPORTED = 3 , MAV_RESULT_FAILED = 4 , MAV_RESULT_IN_PROGRESS = 5 , MAV_RESULT_CANCELLED = 6 , } impl MavResult { pub const DEFAULT : Self = Self :: MAV_RESULT_ACCEPTED ; } impl Default for MavResult { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum FenceMitigate { FENCE_MITIGATE_UNKNOWN = 0 , FENCE_MITIGATE_NONE = 1 , FENCE_MITIGATE_VEL_LIMIT = 2 , } impl FenceMitigate { pub const DEFAULT : Self = Self :: FENCE_MITIGATE_UNKNOWN ; } impl Default for FenceMitigate { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GimbalManagerCapFlags : u32 { const GIMBAL_MANAGER_CAP_FLAGS_HAS_RETRACT = 1 ; const GIMBAL_MANAGER_CAP_FLAGS_HAS_NEUTRAL = 2 ; const GIMBAL_MANAGER_CAP_FLAGS_HAS_ROLL_AXIS = 4 ; const GIMBAL_MANAGER_CAP_FLAGS_HAS_ROLL_FOLLOW = 8 ; const GIMBAL_MANAGER_CAP_FLAGS_HAS_ROLL_LOCK = 16 ; const GIMBAL_MANAGER_CAP_FLAGS_HAS_PITCH_AXIS = 32 ; const GIMBAL_MANAGER_CAP_FLAGS_HAS_PITCH_FOLLOW = 64 ; const GIMBAL_MANAGER_CAP_FLAGS_HAS_PITCH_LOCK = 128 ; const GIMBAL_MANAGER_CAP_FLAGS_HAS_YAW_AXIS = 256 ; const GIMBAL_MANAGER_CAP_FLAGS_HAS_YAW_FOLLOW = 512 ; const GIMBAL_MANAGER_CAP_FLAGS_HAS_YAW_LOCK = 1024 ; const GIMBAL_MANAGER_CAP_FLAGS_SUPPORTS_INFINITE_YAW = 2048 ; const GIMBAL_MANAGER_CAP_FLAGS_SUPPORTS_YAW_IN_EARTH_FRAME = 4096 ; const GIMBAL_MANAGER_CAP_FLAGS_HAS_RC_INPUTS = 8192 ; const GIMBAL_MANAGER_CAP_FLAGS_CAN_POINT_LOCATION_LOCAL = 65536 ; const GIMBAL_MANAGER_CAP_FLAGS_CAN_POINT_LOCATION_GLOBAL = 131072 ; } } impl GimbalManagerCapFlags { pub const DEFAULT : Self = Self :: GIMBAL_MANAGER_CAP_FLAGS_HAS_RETRACT ; } impl Default for GimbalManagerCapFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum NavVtolLandOptions { NAV_VTOL_LAND_OPTIONS_DEFAULT = 0 , NAV_VTOL_LAND_OPTIONS_FW_DESCENT = 1 , NAV_VTOL_LAND_OPTIONS_HOVER_DESCENT = 2 , } impl NavVtolLandOptions { pub const DEFAULT : Self = Self :: NAV_VTOL_LAND_OPTIONS_DEFAULT ; } impl Default for NavVtolLandOptions { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavParamExtType { MAV_PARAM_EXT_TYPE_UINT8 = 1 , MAV_PARAM_EXT_TYPE_INT8 = 2 , MAV_PARAM_EXT_TYPE_UINT16 = 3 , MAV_PARAM_EXT_TYPE_INT16 = 4 , MAV_PARAM_EXT_TYPE_UINT32 = 5 , MAV_PARAM_EXT_TYPE_INT32 = 6 , MAV_PARAM_EXT_TYPE_UINT64 = 7 , MAV_PARAM_EXT_TYPE_INT64 = 8 , MAV_PARAM_EXT_TYPE_REAL32 = 9 , MAV_PARAM_EXT_TYPE_REAL64 = 10 , MAV_PARAM_EXT_TYPE_CUSTOM = 11 , } impl MavParamExtType { pub const DEFAULT : Self = Self :: MAV_PARAM_EXT_TYPE_UINT8 ; } impl Default for MavParamExtType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidAuthType { MAV_ODID_AUTH_TYPE_NONE = 0 , MAV_ODID_AUTH_TYPE_UAS_ID_SIGNATURE = 1 , MAV_ODID_AUTH_TYPE_OPERATOR_ID_SIGNATURE = 2 , MAV_ODID_AUTH_TYPE_MESSAGE_SET_SIGNATURE = 3 , MAV_ODID_AUTH_TYPE_NETWORK_REMOTE_ID = 4 , MAV_ODID_AUTH_TYPE_SPECIFIC_AUTHENTICATION = 5 , } impl MavOdidAuthType { pub const DEFAULT : Self = Self :: MAV_ODID_AUTH_TYPE_NONE ; } impl Default for MavOdidAuthType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidClassificationType { MAV_ODID_CLASSIFICATION_TYPE_UNDECLARED = 0 , MAV_ODID_CLASSIFICATION_TYPE_EU = 1 , } impl MavOdidClassificationType { pub const DEFAULT : Self = Self :: MAV_ODID_CLASSIFICATION_TYPE_UNDECLARED ; } impl Default for MavOdidClassificationType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavBatteryChargeState { MAV_BATTERY_CHARGE_STATE_UNDEFINED = 0 , MAV_BATTERY_CHARGE_STATE_OK = 1 , MAV_BATTERY_CHARGE_STATE_LOW = 2 , MAV_BATTERY_CHARGE_STATE_CRITICAL = 3 , MAV_BATTERY_CHARGE_STATE_EMERGENCY = 4 , MAV_BATTERY_CHARGE_STATE_FAILED = 5 , MAV_BATTERY_CHARGE_STATE_UNHEALTHY = 6 , MAV_BATTERY_CHARGE_STATE_CHARGING = 7 , } impl MavBatteryChargeState { pub const DEFAULT : Self = Self :: MAV_BATTERY_CHARGE_STATE_UNDEFINED ; } impl Default for MavBatteryChargeState { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum UavionixAdsbOutCfgGpsOffsetLon { UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LON_NO_DATA = 0 , UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LON_APPLIED_BY_SENSOR = 1 , } impl UavionixAdsbOutCfgGpsOffsetLon { pub const DEFAULT : Self = Self :: UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LON_NO_DATA ; } impl Default for UavionixAdsbOutCfgGpsOffsetLon { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidHeightRef { MAV_ODID_HEIGHT_REF_OVER_TAKEOFF = 0 , MAV_ODID_HEIGHT_REF_OVER_GROUND = 1 , } impl MavOdidHeightRef { pub const DEFAULT : Self = Self :: MAV_ODID_HEIGHT_REF_OVER_TAKEOFF ; } impl Default for MavOdidHeightRef { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum UtmFlightState { UTM_FLIGHT_STATE_UNKNOWN = 1 , UTM_FLIGHT_STATE_GROUND = 2 , UTM_FLIGHT_STATE_AIRBORNE = 3 , UTM_FLIGHT_STATE_EMERGENCY = 16 , UTM_FLIGHT_STATE_NOCTRL = 32 , } impl UtmFlightState { pub const DEFAULT : Self = Self :: UTM_FLIGHT_STATE_UNKNOWN ; } impl Default for UtmFlightState { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavBatteryFault { MAV_BATTERY_FAULT_DEEP_DISCHARGE = 1 , MAV_BATTERY_FAULT_SPIKES = 2 , MAV_BATTERY_FAULT_CELL_FAIL = 4 , MAV_BATTERY_FAULT_OVER_CURRENT = 8 , MAV_BATTERY_FAULT_OVER_TEMPERATURE = 16 , MAV_BATTERY_FAULT_UNDER_TEMPERATURE = 32 , MAV_BATTERY_FAULT_INCOMPATIBLE_VOLTAGE = 64 , MAV_BATTERY_FAULT_INCOMPATIBLE_FIRMWARE = 128 , BATTERY_FAULT_INCOMPATIBLE_CELLS_CONFIGURATION = 256 , } impl MavBatteryFault { pub const DEFAULT : Self = Self :: MAV_BATTERY_FAULT_DEEP_DISCHARGE ; } impl Default for MavBatteryFault { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GimbalDeviceFlags : u16 { const GIMBAL_DEVICE_FLAGS_RETRACT = 1 ; const GIMBAL_DEVICE_FLAGS_NEUTRAL = 2 ; const GIMBAL_DEVICE_FLAGS_ROLL_LOCK = 4 ; const GIMBAL_DEVICE_FLAGS_PITCH_LOCK = 8 ; const GIMBAL_DEVICE_FLAGS_YAW_LOCK = 16 ; const GIMBAL_DEVICE_FLAGS_YAW_IN_VEHICLE_FRAME = 32 ; const GIMBAL_DEVICE_FLAGS_YAW_IN_EARTH_FRAME = 64 ; const GIMBAL_DEVICE_FLAGS_ACCEPTS_YAW_IN_EARTH_FRAME = 128 ; const GIMBAL_DEVICE_FLAGS_RC_EXCLUSIVE = 256 ; const GIMBAL_DEVICE_FLAGS_RC_MIXED = 512 ; } } impl GimbalDeviceFlags { pub const DEFAULT : Self = Self :: GIMBAL_DEVICE_FLAGS_RETRACT ; } impl Default for GimbalDeviceFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavFtpOpcode { MAV_FTP_OPCODE_NONE = 0 , MAV_FTP_OPCODE_TERMINATESESSION = 1 , MAV_FTP_OPCODE_RESETSESSION = 2 , MAV_FTP_OPCODE_LISTDIRECTORY = 3 , MAV_FTP_OPCODE_OPENFILERO = 4 , MAV_FTP_OPCODE_READFILE = 5 , MAV_FTP_OPCODE_CREATEFILE = 6 , MAV_FTP_OPCODE_WRITEFILE = 7 , MAV_FTP_OPCODE_REMOVEFILE = 8 , MAV_FTP_OPCODE_CREATEDIRECTORY = 9 , MAV_FTP_OPCODE_REMOVEDIRECTORY = 10 , MAV_FTP_OPCODE_OPENFILEWO = 11 , MAV_FTP_OPCODE_TRUNCATEFILE = 12 , MAV_FTP_OPCODE_RENAME = 13 , MAV_FTP_OPCODE_CALCFILECRC = 14 , MAV_FTP_OPCODE_BURSTREADFILE = 15 , MAV_FTP_OPCODE_ACK = 128 , MAV_FTP_OPCODE_NAK = 129 , } impl MavFtpOpcode { pub const DEFAULT : Self = Self :: MAV_FTP_OPCODE_NONE ; } impl Default for MavFtpOpcode { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum RcType { RC_TYPE_SPEKTRUM_DSM2 = 0 , RC_TYPE_SPEKTRUM_DSMX = 1 , } impl RcType { pub const DEFAULT : Self = Self :: RC_TYPE_SPEKTRUM_DSM2 ; } impl Default for RcType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum GimbalManagerFlags { GIMBAL_MANAGER_FLAGS_RETRACT = 1 , GIMBAL_MANAGER_FLAGS_NEUTRAL = 2 , GIMBAL_MANAGER_FLAGS_ROLL_LOCK = 4 , GIMBAL_MANAGER_FLAGS_PITCH_LOCK = 8 , GIMBAL_MANAGER_FLAGS_YAW_LOCK = 16 , GIMBAL_MANAGER_FLAGS_YAW_IN_VEHICLE_FRAME = 32 , GIMBAL_MANAGER_FLAGS_YAW_IN_EARTH_FRAME = 64 , GIMBAL_MANAGER_FLAGS_ACCEPTS_YAW_IN_EARTH_FRAME = 128 , GIMBAL_MANAGER_FLAGS_RC_EXCLUSIVE = 256 , GIMBAL_MANAGER_FLAGS_RC_MIXED = 512 , } impl GimbalManagerFlags { pub const DEFAULT : Self = Self :: GIMBAL_MANAGER_FLAGS_RETRACT ; } impl Default for GimbalManagerFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavComponent { MAV_COMP_ID_ALL = 0 , MAV_COMP_ID_AUTOPILOT1 = 1 , MAV_COMP_ID_USER1 = 25 , MAV_COMP_ID_USER2 = 26 , MAV_COMP_ID_USER3 = 27 , MAV_COMP_ID_USER4 = 28 , MAV_COMP_ID_USER5 = 29 , MAV_COMP_ID_USER6 = 30 , MAV_COMP_ID_USER7 = 31 , MAV_COMP_ID_USER8 = 32 , MAV_COMP_ID_USER9 = 33 , MAV_COMP_ID_USER10 = 34 , MAV_COMP_ID_USER11 = 35 , MAV_COMP_ID_USER12 = 36 , MAV_COMP_ID_USER13 = 37 , MAV_COMP_ID_USER14 = 38 , MAV_COMP_ID_USER15 = 39 , MAV_COMP_ID_USER16 = 40 , MAV_COMP_ID_USER17 = 41 , MAV_COMP_ID_USER18 = 42 , MAV_COMP_ID_USER19 = 43 , MAV_COMP_ID_USER20 = 44 , MAV_COMP_ID_USER21 = 45 , MAV_COMP_ID_USER22 = 46 , MAV_COMP_ID_USER23 = 47 , MAV_COMP_ID_USER24 = 48 , MAV_COMP_ID_USER25 = 49 , MAV_COMP_ID_USER26 = 50 , MAV_COMP_ID_USER27 = 51 , MAV_COMP_ID_USER28 = 52 , MAV_COMP_ID_USER29 = 53 , MAV_COMP_ID_USER30 = 54 , MAV_COMP_ID_USER31 = 55 , MAV_COMP_ID_USER32 = 56 , MAV_COMP_ID_USER33 = 57 , MAV_COMP_ID_USER34 = 58 , MAV_COMP_ID_USER35 = 59 , MAV_COMP_ID_USER36 = 60 , MAV_COMP_ID_USER37 = 61 , MAV_COMP_ID_USER38 = 62 , MAV_COMP_ID_USER39 = 63 , MAV_COMP_ID_USER40 = 64 , MAV_COMP_ID_USER41 = 65 , MAV_COMP_ID_USER42 = 66 , MAV_COMP_ID_USER43 = 67 , MAV_COMP_ID_TELEMETRY_RADIO = 68 , MAV_COMP_ID_USER45 = 69 , MAV_COMP_ID_USER46 = 70 , MAV_COMP_ID_USER47 = 71 , MAV_COMP_ID_USER48 = 72 , MAV_COMP_ID_USER49 = 73 , MAV_COMP_ID_USER50 = 74 , MAV_COMP_ID_USER51 = 75 , MAV_COMP_ID_USER52 = 76 , MAV_COMP_ID_USER53 = 77 , MAV_COMP_ID_USER54 = 78 , MAV_COMP_ID_USER55 = 79 , MAV_COMP_ID_USER56 = 80 , MAV_COMP_ID_USER57 = 81 , MAV_COMP_ID_USER58 = 82 , MAV_COMP_ID_USER59 = 83 , MAV_COMP_ID_USER60 = 84 , MAV_COMP_ID_USER61 = 85 , MAV_COMP_ID_USER62 = 86 , MAV_COMP_ID_USER63 = 87 , MAV_COMP_ID_USER64 = 88 , MAV_COMP_ID_USER65 = 89 , MAV_COMP_ID_USER66 = 90 , MAV_COMP_ID_USER67 = 91 , MAV_COMP_ID_USER68 = 92 , MAV_COMP_ID_USER69 = 93 , MAV_COMP_ID_USER70 = 94 , MAV_COMP_ID_USER71 = 95 , MAV_COMP_ID_USER72 = 96 , MAV_COMP_ID_USER73 = 97 , MAV_COMP_ID_USER74 = 98 , MAV_COMP_ID_USER75 = 99 , MAV_COMP_ID_CAMERA = 100 , MAV_COMP_ID_CAMERA2 = 101 , MAV_COMP_ID_CAMERA3 = 102 , MAV_COMP_ID_CAMERA4 = 103 , MAV_COMP_ID_CAMERA5 = 104 , MAV_COMP_ID_CAMERA6 = 105 , MAV_COMP_ID_SERVO1 = 140 , MAV_COMP_ID_SERVO2 = 141 , MAV_COMP_ID_SERVO3 = 142 , MAV_COMP_ID_SERVO4 = 143 , MAV_COMP_ID_SERVO5 = 144 , MAV_COMP_ID_SERVO6 = 145 , MAV_COMP_ID_SERVO7 = 146 , MAV_COMP_ID_SERVO8 = 147 , MAV_COMP_ID_SERVO9 = 148 , MAV_COMP_ID_SERVO10 = 149 , MAV_COMP_ID_SERVO11 = 150 , MAV_COMP_ID_SERVO12 = 151 , MAV_COMP_ID_SERVO13 = 152 , MAV_COMP_ID_SERVO14 = 153 , MAV_COMP_ID_GIMBAL = 154 , MAV_COMP_ID_LOG = 155 , MAV_COMP_ID_ADSB = 156 , MAV_COMP_ID_OSD = 157 , MAV_COMP_ID_PERIPHERAL = 158 , MAV_COMP_ID_QX1_GIMBAL = 159 , MAV_COMP_ID_FLARM = 160 , MAV_COMP_ID_PARACHUTE = 161 , MAV_COMP_ID_WINCH = 169 , MAV_COMP_ID_GIMBAL2 = 171 , MAV_COMP_ID_GIMBAL3 = 172 , MAV_COMP_ID_GIMBAL4 = 173 , MAV_COMP_ID_GIMBAL5 = 174 , MAV_COMP_ID_GIMBAL6 = 175 , MAV_COMP_ID_BATTERY = 180 , MAV_COMP_ID_BATTERY2 = 181 , MAV_COMP_ID_MAVCAN = 189 , MAV_COMP_ID_MISSIONPLANNER = 190 , MAV_COMP_ID_ONBOARD_COMPUTER = 191 , MAV_COMP_ID_ONBOARD_COMPUTER2 = 192 , MAV_COMP_ID_ONBOARD_COMPUTER3 = 193 , MAV_COMP_ID_ONBOARD_COMPUTER4 = 194 , MAV_COMP_ID_PATHPLANNER = 195 , MAV_COMP_ID_OBSTACLE_AVOIDANCE = 196 , MAV_COMP_ID_VISUAL_INERTIAL_ODOMETRY = 197 , MAV_COMP_ID_PAIRING_MANAGER = 198 , MAV_COMP_ID_IMU = 200 , MAV_COMP_ID_IMU_2 = 201 , MAV_COMP_ID_IMU_3 = 202 , MAV_COMP_ID_GPS = 220 , MAV_COMP_ID_GPS2 = 221 , MAV_COMP_ID_ODID_TXRX_1 = 236 , MAV_COMP_ID_ODID_TXRX_2 = 237 , MAV_COMP_ID_ODID_TXRX_3 = 238 , MAV_COMP_ID_UDP_BRIDGE = 240 , MAV_COMP_ID_UART_BRIDGE = 241 , MAV_COMP_ID_TUNNEL_NODE = 242 , MAV_COMP_ID_SYSTEM_CONTROL = 250 , } impl MavComponent { pub const DEFAULT : Self = Self :: MAV_COMP_ID_ALL ; } impl Default for MavComponent { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidTimeAcc { MAV_ODID_TIME_ACC_UNKNOWN = 0 , MAV_ODID_TIME_ACC_0_1_SECOND = 1 , MAV_ODID_TIME_ACC_0_2_SECOND = 2 , MAV_ODID_TIME_ACC_0_3_SECOND = 3 , MAV_ODID_TIME_ACC_0_4_SECOND = 4 , MAV_ODID_TIME_ACC_0_5_SECOND = 5 , MAV_ODID_TIME_ACC_0_6_SECOND = 6 , MAV_ODID_TIME_ACC_0_7_SECOND = 7 , MAV_ODID_TIME_ACC_0_8_SECOND = 8 , MAV_ODID_TIME_ACC_0_9_SECOND = 9 , MAV_ODID_TIME_ACC_1_0_SECOND = 10 , MAV_ODID_TIME_ACC_1_1_SECOND = 11 , MAV_ODID_TIME_ACC_1_2_SECOND = 12 , MAV_ODID_TIME_ACC_1_3_SECOND = 13 , MAV_ODID_TIME_ACC_1_4_SECOND = 14 , MAV_ODID_TIME_ACC_1_5_SECOND = 15 , } impl MavOdidTimeAcc { pub const DEFAULT : Self = Self :: MAV_ODID_TIME_ACC_UNKNOWN ; } impl Default for MavOdidTimeAcc { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MavGeneratorStatusFlag : u64 { const MAV_GENERATOR_STATUS_FLAG_OFF = 1 ; const MAV_GENERATOR_STATUS_FLAG_READY = 2 ; const MAV_GENERATOR_STATUS_FLAG_GENERATING = 4 ; const MAV_GENERATOR_STATUS_FLAG_CHARGING = 8 ; const MAV_GENERATOR_STATUS_FLAG_REDUCED_POWER = 16 ; const MAV_GENERATOR_STATUS_FLAG_MAXPOWER = 32 ; const MAV_GENERATOR_STATUS_FLAG_OVERTEMP_WARNING = 64 ; const MAV_GENERATOR_STATUS_FLAG_OVERTEMP_FAULT = 128 ; const MAV_GENERATOR_STATUS_FLAG_ELECTRONICS_OVERTEMP_WARNING = 256 ; const MAV_GENERATOR_STATUS_FLAG_ELECTRONICS_OVERTEMP_FAULT = 512 ; const MAV_GENERATOR_STATUS_FLAG_ELECTRONICS_FAULT = 1024 ; const MAV_GENERATOR_STATUS_FLAG_POWERSOURCE_FAULT = 2048 ; const MAV_GENERATOR_STATUS_FLAG_COMMUNICATION_WARNING = 4096 ; const MAV_GENERATOR_STATUS_FLAG_COOLING_WARNING = 8192 ; const MAV_GENERATOR_STATUS_FLAG_POWER_RAIL_FAULT = 16384 ; const MAV_GENERATOR_STATUS_FLAG_OVERCURRENT_FAULT = 32768 ; const MAV_GENERATOR_STATUS_FLAG_BATTERY_OVERCHARGE_CURRENT_FAULT = 65536 ; const MAV_GENERATOR_STATUS_FLAG_OVERVOLTAGE_FAULT = 131072 ; const MAV_GENERATOR_STATUS_FLAG_BATTERY_UNDERVOLT_FAULT = 262144 ; const MAV_GENERATOR_STATUS_FLAG_START_INHIBITED = 524288 ; const MAV_GENERATOR_STATUS_FLAG_MAINTENANCE_REQUIRED = 1048576 ; const MAV_GENERATOR_STATUS_FLAG_WARMING_UP = 2097152 ; const MAV_GENERATOR_STATUS_FLAG_IDLE = 4194304 ; } } impl MavGeneratorStatusFlag { pub const DEFAULT : Self = Self :: MAV_GENERATOR_STATUS_FLAG_OFF ; } impl Default for MavGeneratorStatusFlag { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum CompMetadataType { COMP_METADATA_TYPE_GENERAL = 0 , COMP_METADATA_TYPE_PARAMETER = 1 , COMP_METADATA_TYPE_COMMANDS = 2 , COMP_METADATA_TYPE_PERIPHERALS = 3 , COMP_METADATA_TYPE_EVENTS = 4 , COMP_METADATA_TYPE_ACTUATORS = 5 , } impl CompMetadataType { pub const DEFAULT : Self = Self :: COMP_METADATA_TYPE_GENERAL ; } impl Default for CompMetadataType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum CellularNetworkRadioType { CELLULAR_NETWORK_RADIO_TYPE_NONE = 0 , CELLULAR_NETWORK_RADIO_TYPE_GSM = 1 , CELLULAR_NETWORK_RADIO_TYPE_CDMA = 2 , CELLULAR_NETWORK_RADIO_TYPE_WCDMA = 3 , CELLULAR_NETWORK_RADIO_TYPE_LTE = 4 , } impl CellularNetworkRadioType { pub const DEFAULT : Self = Self :: CELLULAR_NETWORK_RADIO_TYPE_NONE ; } impl Default for CellularNetworkRadioType { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct UavionixAdsbOutDynamicState : u16 { const UAVIONIX_ADSB_OUT_DYNAMIC_STATE_INTENT_CHANGE = 1 ; const UAVIONIX_ADSB_OUT_DYNAMIC_STATE_AUTOPILOT_ENABLED = 2 ; const UAVIONIX_ADSB_OUT_DYNAMIC_STATE_NICBARO_CROSSCHECKED = 4 ; const UAVIONIX_ADSB_OUT_DYNAMIC_STATE_ON_GROUND = 8 ; const UAVIONIX_ADSB_OUT_DYNAMIC_STATE_IDENT = 16 ; } } impl UavionixAdsbOutDynamicState { pub const DEFAULT : Self = Self :: UAVIONIX_ADSB_OUT_DYNAMIC_STATE_INTENT_CHANGE ; } impl Default for UavionixAdsbOutDynamicState { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum PreflightStorageParameterAction { PARAM_READ_PERSISTENT = 0 , PARAM_WRITE_PERSISTENT = 1 , PARAM_RESET_CONFIG_DEFAULT = 2 , PARAM_RESET_SENSOR_DEFAULT = 3 , PARAM_RESET_ALL_DEFAULT = 4 , } impl PreflightStorageParameterAction { pub const DEFAULT : Self = Self :: PARAM_READ_PERSISTENT ; } impl Default for PreflightStorageParameterAction { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum VideoStreamStatusFlags { VIDEO_STREAM_STATUS_FLAGS_RUNNING = 1 , VIDEO_STREAM_STATUS_FLAGS_THERMAL = 2 , } impl VideoStreamStatusFlags { pub const DEFAULT : Self = Self :: VIDEO_STREAM_STATUS_FLAGS_RUNNING ; } impl Default for VideoStreamStatusFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum ActuatorOutputFunction { ACTUATOR_OUTPUT_FUNCTION_NONE = 0 , ACTUATOR_OUTPUT_FUNCTION_MOTOR1 = 1 , ACTUATOR_OUTPUT_FUNCTION_MOTOR2 = 2 , ACTUATOR_OUTPUT_FUNCTION_MOTOR3 = 3 , ACTUATOR_OUTPUT_FUNCTION_MOTOR4 = 4 , ACTUATOR_OUTPUT_FUNCTION_MOTOR5 = 5 , ACTUATOR_OUTPUT_FUNCTION_MOTOR6 = 6 , ACTUATOR_OUTPUT_FUNCTION_MOTOR7 = 7 , ACTUATOR_OUTPUT_FUNCTION_MOTOR8 = 8 , ACTUATOR_OUTPUT_FUNCTION_MOTOR9 = 9 , ACTUATOR_OUTPUT_FUNCTION_MOTOR10 = 10 , ACTUATOR_OUTPUT_FUNCTION_MOTOR11 = 11 , ACTUATOR_OUTPUT_FUNCTION_MOTOR12 = 12 , ACTUATOR_OUTPUT_FUNCTION_MOTOR13 = 13 , ACTUATOR_OUTPUT_FUNCTION_MOTOR14 = 14 , ACTUATOR_OUTPUT_FUNCTION_MOTOR15 = 15 , ACTUATOR_OUTPUT_FUNCTION_MOTOR16 = 16 , ACTUATOR_OUTPUT_FUNCTION_SERVO1 = 33 , ACTUATOR_OUTPUT_FUNCTION_SERVO2 = 34 , ACTUATOR_OUTPUT_FUNCTION_SERVO3 = 35 , ACTUATOR_OUTPUT_FUNCTION_SERVO4 = 36 , ACTUATOR_OUTPUT_FUNCTION_SERVO5 = 37 , ACTUATOR_OUTPUT_FUNCTION_SERVO6 = 38 , ACTUATOR_OUTPUT_FUNCTION_SERVO7 = 39 , ACTUATOR_OUTPUT_FUNCTION_SERVO8 = 40 , ACTUATOR_OUTPUT_FUNCTION_SERVO9 = 41 , ACTUATOR_OUTPUT_FUNCTION_SERVO10 = 42 , ACTUATOR_OUTPUT_FUNCTION_SERVO11 = 43 , ACTUATOR_OUTPUT_FUNCTION_SERVO12 = 44 , ACTUATOR_OUTPUT_FUNCTION_SERVO13 = 45 , ACTUATOR_OUTPUT_FUNCTION_SERVO14 = 46 , ACTUATOR_OUTPUT_FUNCTION_SERVO15 = 47 , ACTUATOR_OUTPUT_FUNCTION_SERVO16 = 48 , } impl ActuatorOutputFunction { pub const DEFAULT : Self = Self :: ACTUATOR_OUTPUT_FUNCTION_NONE ; } impl Default for ActuatorOutputFunction { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MavPowerStatus : u16 { const MAV_POWER_STATUS_BRICK_VALID = 1 ; const MAV_POWER_STATUS_SERVO_VALID = 2 ; const MAV_POWER_STATUS_USB_CONNECTED = 4 ; const MAV_POWER_STATUS_PERIPH_OVERCURRENT = 8 ; const MAV_POWER_STATUS_PERIPH_HIPOWER_OVERCURRENT = 16 ; const MAV_POWER_STATUS_CHANGED = 32 ; } } impl MavPowerStatus { pub const DEFAULT : Self = Self :: MAV_POWER_STATUS_BRICK_VALID ; } impl Default for MavPowerStatus { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavGoto { MAV_GOTO_DO_HOLD = 0 , MAV_GOTO_DO_CONTINUE = 1 , MAV_GOTO_HOLD_AT_CURRENT_POSITION = 2 , MAV_GOTO_HOLD_AT_SPECIFIED_POSITION = 3 , } impl MavGoto { pub const DEFAULT : Self = Self :: MAV_GOTO_DO_HOLD ; } impl Default for MavGoto { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum FailureType { FAILURE_TYPE_OK = 0 , FAILURE_TYPE_OFF = 1 , FAILURE_TYPE_STUCK = 2 , FAILURE_TYPE_GARBAGE = 3 , FAILURE_TYPE_WRONG = 4 , FAILURE_TYPE_SLOW = 5 , FAILURE_TYPE_DELAYED = 6 , FAILURE_TYPE_INTERMITTENT = 7 , } impl FailureType { pub const DEFAULT : Self = Self :: FAILURE_TYPE_OK ; } impl Default for FailureType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavParamType { MAV_PARAM_TYPE_UINT8 = 1 , MAV_PARAM_TYPE_INT8 = 2 , MAV_PARAM_TYPE_UINT16 = 3 , MAV_PARAM_TYPE_INT16 = 4 , MAV_PARAM_TYPE_UINT32 = 5 , MAV_PARAM_TYPE_INT32 = 6 , MAV_PARAM_TYPE_UINT64 = 7 , MAV_PARAM_TYPE_INT64 = 8 , MAV_PARAM_TYPE_REAL32 = 9 , MAV_PARAM_TYPE_REAL64 = 10 , } impl MavParamType { pub const DEFAULT : Self = Self :: MAV_PARAM_TYPE_UINT8 ; } impl Default for MavParamType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidCategoryEu { MAV_ODID_CATEGORY_EU_UNDECLARED = 0 , MAV_ODID_CATEGORY_EU_OPEN = 1 , MAV_ODID_CATEGORY_EU_SPECIFIC = 2 , MAV_ODID_CATEGORY_EU_CERTIFIED = 3 , } impl MavOdidCategoryEu { pub const DEFAULT : Self = Self :: MAV_ODID_CATEGORY_EU_UNDECLARED ; } impl Default for MavOdidCategoryEu { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum OrbitYawBehaviour { ORBIT_YAW_BEHAVIOUR_HOLD_FRONT_TO_CIRCLE_CENTER = 0 , ORBIT_YAW_BEHAVIOUR_HOLD_INITIAL_HEADING = 1 , ORBIT_YAW_BEHAVIOUR_UNCONTROLLED = 2 , ORBIT_YAW_BEHAVIOUR_HOLD_FRONT_TANGENT_TO_CIRCLE = 3 , ORBIT_YAW_BEHAVIOUR_RC_CONTROLLED = 4 , } impl OrbitYawBehaviour { pub const DEFAULT : Self = Self :: ORBIT_YAW_BEHAVIOUR_HOLD_FRONT_TO_CIRCLE_CENTER ; } impl Default for OrbitYawBehaviour { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum AutotuneAxis { AUTOTUNE_AXIS_DEFAULT = 0 , AUTOTUNE_AXIS_ROLL = 1 , AUTOTUNE_AXIS_PITCH = 2 , AUTOTUNE_AXIS_YAW = 4 , } impl AutotuneAxis { pub const DEFAULT : Self = Self :: AUTOTUNE_AXIS_DEFAULT ; } impl Default for AutotuneAxis { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum UavionixAdsbEmergencyStatus { UAVIONIX_ADSB_OUT_NO_EMERGENCY = 0 , UAVIONIX_ADSB_OUT_GENERAL_EMERGENCY = 1 , UAVIONIX_ADSB_OUT_LIFEGUARD_EMERGENCY = 2 , UAVIONIX_ADSB_OUT_MINIMUM_FUEL_EMERGENCY = 3 , UAVIONIX_ADSB_OUT_NO_COMM_EMERGENCY = 4 , UAVIONIX_ADSB_OUT_UNLAWFUL_INTERFERANCE_EMERGENCY = 5 , UAVIONIX_ADSB_OUT_DOWNED_AIRCRAFT_EMERGENCY = 6 , UAVIONIX_ADSB_OUT_RESERVED = 7 , } impl UavionixAdsbEmergencyStatus { pub const DEFAULT : Self = Self :: UAVIONIX_ADSB_OUT_NO_EMERGENCY ; } impl Default for UavionixAdsbEmergencyStatus { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MotorTestOrder { MOTOR_TEST_ORDER_DEFAULT = 0 , MOTOR_TEST_ORDER_SEQUENCE = 1 , MOTOR_TEST_ORDER_BOARD = 2 , } impl MotorTestOrder { pub const DEFAULT : Self = Self :: MOTOR_TEST_ORDER_DEFAULT ; } impl Default for MotorTestOrder { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum PrecisionLandMode { PRECISION_LAND_MODE_DISABLED = 0 , PRECISION_LAND_MODE_OPPORTUNISTIC = 1 , PRECISION_LAND_MODE_REQUIRED = 2 , } impl PrecisionLandMode { pub const DEFAULT : Self = Self :: PRECISION_LAND_MODE_DISABLED ; } impl Default for PrecisionLandMode { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavType { MAV_TYPE_GENERIC = 0 , MAV_TYPE_FIXED_WING = 1 , MAV_TYPE_QUADROTOR = 2 , MAV_TYPE_COAXIAL = 3 , MAV_TYPE_HELICOPTER = 4 , MAV_TYPE_ANTENNA_TRACKER = 5 , MAV_TYPE_GCS = 6 , MAV_TYPE_AIRSHIP = 7 , MAV_TYPE_FREE_BALLOON = 8 , MAV_TYPE_ROCKET = 9 , MAV_TYPE_GROUND_ROVER = 10 , MAV_TYPE_SURFACE_BOAT = 11 , MAV_TYPE_SUBMARINE = 12 , MAV_TYPE_HEXAROTOR = 13 , MAV_TYPE_OCTOROTOR = 14 , MAV_TYPE_TRICOPTER = 15 , MAV_TYPE_FLAPPING_WING = 16 , MAV_TYPE_KITE = 17 , MAV_TYPE_ONBOARD_CONTROLLER = 18 , MAV_TYPE_VTOL_TAILSITTER_DUOROTOR = 19 , MAV_TYPE_VTOL_TAILSITTER_QUADROTOR = 20 , MAV_TYPE_VTOL_TILTROTOR = 21 , MAV_TYPE_VTOL_FIXEDROTOR = 22 , MAV_TYPE_VTOL_TAILSITTER = 23 , MAV_TYPE_VTOL_TILTWING = 24 , MAV_TYPE_VTOL_RESERVED5 = 25 , MAV_TYPE_GIMBAL = 26 , MAV_TYPE_ADSB = 27 , MAV_TYPE_PARAFOIL = 28 , MAV_TYPE_DODECAROTOR = 29 , MAV_TYPE_CAMERA = 30 , MAV_TYPE_CHARGING_STATION = 31 , MAV_TYPE_FLARM = 32 , MAV_TYPE_SERVO = 33 , MAV_TYPE_ODID = 34 , MAV_TYPE_DECAROTOR = 35 , MAV_TYPE_BATTERY = 36 , MAV_TYPE_PARACHUTE = 37 , MAV_TYPE_LOG = 38 , MAV_TYPE_OSD = 39 , MAV_TYPE_IMU = 40 , MAV_TYPE_GPS = 41 , MAV_TYPE_WINCH = 42 , } impl MavType { pub const DEFAULT : Self = Self :: MAV_TYPE_GENERIC ; } impl Default for MavType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum FenceAction { FENCE_ACTION_NONE = 0 , FENCE_ACTION_GUIDED = 1 , FENCE_ACTION_REPORT = 2 , FENCE_ACTION_GUIDED_THR_PASS = 3 , FENCE_ACTION_RTL = 4 , FENCE_ACTION_HOLD = 5 , FENCE_ACTION_TERMINATE = 6 , FENCE_ACTION_LAND = 7 , } impl FenceAction { pub const DEFAULT : Self = Self :: FENCE_ACTION_NONE ; } impl Default for FenceAction { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum ActuatorConfiguration { ACTUATOR_CONFIGURATION_NONE = 0 , ACTUATOR_CONFIGURATION_BEEP = 1 , ACTUATOR_CONFIGURATION_3D_MODE_ON = 2 , ACTUATOR_CONFIGURATION_3D_MODE_OFF = 3 , ACTUATOR_CONFIGURATION_SPIN_DIRECTION1 = 4 , ACTUATOR_CONFIGURATION_SPIN_DIRECTION2 = 5 , } impl ActuatorConfiguration { pub const DEFAULT : Self = Self :: ACTUATOR_CONFIGURATION_NONE ; } impl Default for ActuatorConfiguration { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GimbalDeviceErrorFlags : u32 { const GIMBAL_DEVICE_ERROR_FLAGS_AT_ROLL_LIMIT = 1 ; const GIMBAL_DEVICE_ERROR_FLAGS_AT_PITCH_LIMIT = 2 ; const GIMBAL_DEVICE_ERROR_FLAGS_AT_YAW_LIMIT = 4 ; const GIMBAL_DEVICE_ERROR_FLAGS_ENCODER_ERROR = 8 ; const GIMBAL_DEVICE_ERROR_FLAGS_POWER_ERROR = 16 ; const GIMBAL_DEVICE_ERROR_FLAGS_MOTOR_ERROR = 32 ; const GIMBAL_DEVICE_ERROR_FLAGS_SOFTWARE_ERROR = 64 ; const GIMBAL_DEVICE_ERROR_FLAGS_COMMS_ERROR = 128 ; const GIMBAL_DEVICE_ERROR_FLAGS_CALIBRATION_RUNNING = 256 ; const GIMBAL_DEVICE_ERROR_FLAGS_NO_MANAGER = 512 ; } } impl GimbalDeviceErrorFlags { pub const DEFAULT : Self = Self :: GIMBAL_DEVICE_ERROR_FLAGS_AT_ROLL_LIMIT ; } impl Default for GimbalDeviceErrorFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavDistanceSensor { MAV_DISTANCE_SENSOR_LASER = 0 , MAV_DISTANCE_SENSOR_ULTRASOUND = 1 , MAV_DISTANCE_SENSOR_INFRARED = 2 , MAV_DISTANCE_SENSOR_RADAR = 3 , MAV_DISTANCE_SENSOR_UNKNOWN = 4 , } impl MavDistanceSensor { pub const DEFAULT : Self = Self :: MAV_DISTANCE_SENSOR_LASER ; } impl Default for MavDistanceSensor { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavSysStatusSensorExtended { MAV_SYS_STATUS_RECOVERY_SYSTEM = 1 , } impl MavSysStatusSensorExtended { pub const DEFAULT : Self = Self :: MAV_SYS_STATUS_RECOVERY_SYSTEM ; } impl Default for MavSysStatusSensorExtended { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct STORAGE_INFORMATION_DATA { pub time_boot_ms : u32 , pub total_capacity : f32 , pub used_capacity : f32 , pub available_capacity : f32 , pub read_speed : f32 , pub write_speed : f32 , pub storage_id : u8 , pub storage_count : u8 , pub status : StorageStatus , } impl STORAGE_INFORMATION_DATA { pub const ENCODED_LEN : usize = 27usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , total_capacity : 0.0_f32 , used_capacity : 0.0_f32 , available_capacity : 0.0_f32 , read_speed : 0.0_f32 , write_speed : 0.0_f32 , storage_id : 0_u8 , storage_count : 0_u8 , status : StorageStatus :: DEFAULT , } ; } impl Default for STORAGE_INFORMATION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for STORAGE_INFORMATION_DATA { type Message = MavMessage ; const ID : u32 = 261u32 ; const NAME : & 'static str = "STORAGE_INFORMATION" ; const EXTRA_CRC : u8 = 179u8 ; const ENCODED_LEN : usize = 27usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . total_capacity = buf . get_f32_le () ; __struct . used_capacity = buf . get_f32_le () ; __struct . available_capacity = buf . get_f32_le () ; __struct . read_speed = buf . get_f32_le () ; __struct . write_speed = buf . get_f32_le () ; __struct . storage_id = buf . get_u8 () ; __struct . storage_count = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . status = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "StorageStatus" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . total_capacity) ; __tmp . put_f32_le (self . used_capacity) ; __tmp . put_f32_le (self . available_capacity) ; __tmp . put_f32_le (self . read_speed) ; __tmp . put_f32_le (self . write_speed) ; __tmp . put_u8 (self . storage_id) ; __tmp . put_u8 (self . storage_count) ; __tmp . put_u8 (self . status as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MOUNT_ORIENTATION_DATA { pub time_boot_ms : u32 , pub roll : f32 , pub pitch : f32 , pub yaw : f32 , } impl MOUNT_ORIENTATION_DATA { pub const ENCODED_LEN : usize = 16usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , roll : 0.0_f32 , pitch : 0.0_f32 , yaw : 0.0_f32 , } ; } impl Default for MOUNT_ORIENTATION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MOUNT_ORIENTATION_DATA { type Message = MavMessage ; const ID : u32 = 265u32 ; const NAME : & 'static str = "MOUNT_ORIENTATION" ; const EXTRA_CRC : u8 = 26u8 ; const ENCODED_LEN : usize = 16usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . roll = buf . get_f32_le () ; __struct . pitch = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . roll) ; __tmp . put_f32_le (self . pitch) ; __tmp . put_f32_le (self . yaw) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SCALED_PRESSURE2_DATA { pub time_boot_ms : u32 , pub press_abs : f32 , pub press_diff : f32 , pub temperature : i16 , } impl SCALED_PRESSURE2_DATA { pub const ENCODED_LEN : usize = 14usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , press_abs : 0.0_f32 , press_diff : 0.0_f32 , temperature : 0_i16 , } ; } impl Default for SCALED_PRESSURE2_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SCALED_PRESSURE2_DATA { type Message = MavMessage ; const ID : u32 = 137u32 ; const NAME : & 'static str = "SCALED_PRESSURE2" ; const EXTRA_CRC : u8 = 195u8 ; const ENCODED_LEN : usize = 14usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . press_abs = buf . get_f32_le () ; __struct . press_diff = buf . get_f32_le () ; __struct . temperature = buf . get_i16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . press_abs) ; __tmp . put_f32_le (self . press_diff) ; __tmp . put_i16_le (self . temperature) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HIL_STATE_DATA { pub time_usec : u64 , pub roll : f32 , pub pitch : f32 , pub yaw : f32 , pub rollspeed : f32 , pub pitchspeed : f32 , pub yawspeed : f32 , pub lat : i32 , pub lon : i32 , pub alt : i32 , pub vx : i16 , pub vy : i16 , pub vz : i16 , pub xacc : i16 , pub yacc : i16 , pub zacc : i16 , } impl HIL_STATE_DATA { pub const ENCODED_LEN : usize = 56usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , roll : 0.0_f32 , pitch : 0.0_f32 , yaw : 0.0_f32 , rollspeed : 0.0_f32 , pitchspeed : 0.0_f32 , yawspeed : 0.0_f32 , lat : 0_i32 , lon : 0_i32 , alt : 0_i32 , vx : 0_i16 , vy : 0_i16 , vz : 0_i16 , xacc : 0_i16 , yacc : 0_i16 , zacc : 0_i16 , } ; } impl Default for HIL_STATE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for HIL_STATE_DATA { type Message = MavMessage ; const ID : u32 = 90u32 ; const NAME : & 'static str = "HIL_STATE" ; const EXTRA_CRC : u8 = 183u8 ; const ENCODED_LEN : usize = 56usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . roll = buf . get_f32_le () ; __struct . pitch = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; __struct . rollspeed = buf . get_f32_le () ; __struct . pitchspeed = buf . get_f32_le () ; __struct . yawspeed = buf . get_f32_le () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . alt = buf . get_i32_le () ; __struct . vx = buf . get_i16_le () ; __struct . vy = buf . get_i16_le () ; __struct . vz = buf . get_i16_le () ; __struct . xacc = buf . get_i16_le () ; __struct . yacc = buf . get_i16_le () ; __struct . zacc = buf . get_i16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . roll) ; __tmp . put_f32_le (self . pitch) ; __tmp . put_f32_le (self . yaw) ; __tmp . put_f32_le (self . rollspeed) ; __tmp . put_f32_le (self . pitchspeed) ; __tmp . put_f32_le (self . yawspeed) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_i32_le (self . alt) ; __tmp . put_i16_le (self . vx) ; __tmp . put_i16_le (self . vy) ; __tmp . put_i16_le (self . vz) ; __tmp . put_i16_le (self . xacc) ; __tmp . put_i16_le (self . yacc) ; __tmp . put_i16_le (self . zacc) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GPS_RTCM_DATA_DATA { pub flags : u8 , pub len : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub data : [u8 ; 180] , } impl GPS_RTCM_DATA_DATA { pub const ENCODED_LEN : usize = 182usize ; pub const DEFAULT : Self = Self { flags : 0_u8 , len : 0_u8 , data : [0_u8 ; 180usize] , } ; } impl Default for GPS_RTCM_DATA_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GPS_RTCM_DATA_DATA { type Message = MavMessage ; const ID : u32 = 233u32 ; const NAME : & 'static str = "GPS_RTCM_DATA" ; const EXTRA_CRC : u8 = 35u8 ; const ENCODED_LEN : usize = 182usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . flags = buf . get_u8 () ; __struct . len = buf . get_u8 () ; for v in & mut __struct . data { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . flags) ; __tmp . put_u8 (self . len) ; for val in & self . data { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PARAM_EXT_VALUE_DATA { pub param_count : u16 , pub param_index : u16 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub param_id : [u8 ; 16] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub param_value : [u8 ; 128] , pub param_type : MavParamExtType , } impl PARAM_EXT_VALUE_DATA { pub const ENCODED_LEN : usize = 149usize ; pub const DEFAULT : Self = Self { param_count : 0_u16 , param_index : 0_u16 , param_id : [0_u8 ; 16usize] , param_value : [0_u8 ; 128usize] , param_type : MavParamExtType :: DEFAULT , } ; } impl Default for PARAM_EXT_VALUE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for PARAM_EXT_VALUE_DATA { type Message = MavMessage ; const ID : u32 = 322u32 ; const NAME : & 'static str = "PARAM_EXT_VALUE" ; const EXTRA_CRC : u8 = 243u8 ; const ENCODED_LEN : usize = 149usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . param_count = buf . get_u16_le () ; __struct . param_index = buf . get_u16_le () ; for v in & mut __struct . param_id { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . param_value { let val = buf . get_u8 () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . param_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavParamExtType" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . param_count) ; __tmp . put_u16_le (self . param_index) ; for val in & self . param_id { __tmp . put_u8 (* val) ; } for val in & self . param_value { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . param_type as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MISSION_REQUEST_INT_DATA { pub seq : u16 , pub target_system : u8 , pub target_component : u8 , } impl MISSION_REQUEST_INT_DATA { pub const ENCODED_LEN : usize = 4usize ; pub const DEFAULT : Self = Self { seq : 0_u16 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for MISSION_REQUEST_INT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MISSION_REQUEST_INT_DATA { type Message = MavMessage ; const ID : u32 = 51u32 ; const NAME : & 'static str = "MISSION_REQUEST_INT" ; const EXTRA_CRC : u8 = 196u8 ; const ENCODED_LEN : usize = 4usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . seq = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . seq) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ALTITUDE_DATA { pub time_usec : u64 , pub altitude_monotonic : f32 , pub altitude_amsl : f32 , pub altitude_local : f32 , pub altitude_relative : f32 , pub altitude_terrain : f32 , pub bottom_clearance : f32 , } impl ALTITUDE_DATA { pub const ENCODED_LEN : usize = 32usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , altitude_monotonic : 0.0_f32 , altitude_amsl : 0.0_f32 , altitude_local : 0.0_f32 , altitude_relative : 0.0_f32 , altitude_terrain : 0.0_f32 , bottom_clearance : 0.0_f32 , } ; } impl Default for ALTITUDE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ALTITUDE_DATA { type Message = MavMessage ; const ID : u32 = 141u32 ; const NAME : & 'static str = "ALTITUDE" ; const EXTRA_CRC : u8 = 47u8 ; const ENCODED_LEN : usize = 32usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . altitude_monotonic = buf . get_f32_le () ; __struct . altitude_amsl = buf . get_f32_le () ; __struct . altitude_local = buf . get_f32_le () ; __struct . altitude_relative = buf . get_f32_le () ; __struct . altitude_terrain = buf . get_f32_le () ; __struct . bottom_clearance = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . altitude_monotonic) ; __tmp . put_f32_le (self . altitude_amsl) ; __tmp . put_f32_le (self . altitude_local) ; __tmp . put_f32_le (self . altitude_relative) ; __tmp . put_f32_le (self . altitude_terrain) ; __tmp . put_f32_le (self . bottom_clearance) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CAMERA_TRIGGER_DATA { pub time_usec : u64 , pub seq : u32 , } impl CAMERA_TRIGGER_DATA { pub const ENCODED_LEN : usize = 12usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , seq : 0_u32 , } ; } impl Default for CAMERA_TRIGGER_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CAMERA_TRIGGER_DATA { type Message = MavMessage ; const ID : u32 = 112u32 ; const NAME : & 'static str = "CAMERA_TRIGGER" ; const EXTRA_CRC : u8 = 174u8 ; const ENCODED_LEN : usize = 12usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . seq = buf . get_u32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_u32_le (self . seq) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LOCAL_POSITION_NED_COV_DATA { pub time_usec : u64 , pub x : f32 , pub y : f32 , pub z : f32 , pub vx : f32 , pub vy : f32 , pub vz : f32 , pub ax : f32 , pub ay : f32 , pub az : f32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub covariance : [f32 ; 45] , pub estimator_type : MavEstimatorType , } impl LOCAL_POSITION_NED_COV_DATA { pub const ENCODED_LEN : usize = 225usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , x : 0.0_f32 , y : 0.0_f32 , z : 0.0_f32 , vx : 0.0_f32 , vy : 0.0_f32 , vz : 0.0_f32 , ax : 0.0_f32 , ay : 0.0_f32 , az : 0.0_f32 , covariance : [0.0_f32 ; 45usize] , estimator_type : MavEstimatorType :: DEFAULT , } ; } impl Default for LOCAL_POSITION_NED_COV_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for LOCAL_POSITION_NED_COV_DATA { type Message = MavMessage ; const ID : u32 = 64u32 ; const NAME : & 'static str = "LOCAL_POSITION_NED_COV" ; const EXTRA_CRC : u8 = 191u8 ; const ENCODED_LEN : usize = 225usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . x = buf . get_f32_le () ; __struct . y = buf . get_f32_le () ; __struct . z = buf . get_f32_le () ; __struct . vx = buf . get_f32_le () ; __struct . vy = buf . get_f32_le () ; __struct . vz = buf . get_f32_le () ; __struct . ax = buf . get_f32_le () ; __struct . ay = buf . get_f32_le () ; __struct . az = buf . get_f32_le () ; for v in & mut __struct . covariance { let val = buf . get_f32_le () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . estimator_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavEstimatorType" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; __tmp . put_f32_le (self . vx) ; __tmp . put_f32_le (self . vy) ; __tmp . put_f32_le (self . vz) ; __tmp . put_f32_le (self . ax) ; __tmp . put_f32_le (self . ay) ; __tmp . put_f32_le (self . az) ; for val in & self . covariance { __tmp . put_f32_le (* val) ; } __tmp . put_u8 (self . estimator_type as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LOG_ENTRY_DATA { pub time_utc : u32 , pub size : u32 , pub id : u16 , pub num_logs : u16 , pub last_log_num : u16 , } impl LOG_ENTRY_DATA { pub const ENCODED_LEN : usize = 14usize ; pub const DEFAULT : Self = Self { time_utc : 0_u32 , size : 0_u32 , id : 0_u16 , num_logs : 0_u16 , last_log_num : 0_u16 , } ; } impl Default for LOG_ENTRY_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for LOG_ENTRY_DATA { type Message = MavMessage ; const ID : u32 = 118u32 ; const NAME : & 'static str = "LOG_ENTRY" ; const EXTRA_CRC : u8 = 56u8 ; const ENCODED_LEN : usize = 14usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_utc = buf . get_u32_le () ; __struct . size = buf . get_u32_le () ; __struct . id = buf . get_u16_le () ; __struct . num_logs = buf . get_u16_le () ; __struct . last_log_num = buf . get_u16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_utc) ; __tmp . put_u32_le (self . size) ; __tmp . put_u16_le (self . id) ; __tmp . put_u16_le (self . num_logs) ; __tmp . put_u16_le (self . last_log_num) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA { pub time_boot_us : u64 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub q : [f32 ; 4] , pub q_estimated_delay_us : u32 , pub vx : f32 , pub vy : f32 , pub vz : f32 , pub v_estimated_delay_us : u32 , pub feed_forward_angular_velocity_z : f32 , pub estimator_status : EstimatorStatusFlags , pub target_system : u8 , pub target_component : u8 , pub landed_state : MavLandedState , } impl AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA { pub const ENCODED_LEN : usize = 53usize ; pub const DEFAULT : Self = Self { time_boot_us : 0_u64 , q : [0.0_f32 ; 4usize] , q_estimated_delay_us : 0_u32 , vx : 0.0_f32 , vy : 0.0_f32 , vz : 0.0_f32 , v_estimated_delay_us : 0_u32 , feed_forward_angular_velocity_z : 0.0_f32 , estimator_status : EstimatorStatusFlags :: DEFAULT , target_system : 0_u8 , target_component : 0_u8 , landed_state : MavLandedState :: DEFAULT , } ; } impl Default for AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA { type Message = MavMessage ; const ID : u32 = 286u32 ; const NAME : & 'static str = "AUTOPILOT_STATE_FOR_GIMBAL_DEVICE" ; const EXTRA_CRC : u8 = 210u8 ; const ENCODED_LEN : usize = 53usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_us = buf . get_u64_le () ; for v in & mut __struct . q { let val = buf . get_f32_le () ; * v = val ; } __struct . q_estimated_delay_us = buf . get_u32_le () ; __struct . vx = buf . get_f32_le () ; __struct . vy = buf . get_f32_le () ; __struct . vz = buf . get_f32_le () ; __struct . v_estimated_delay_us = buf . get_u32_le () ; __struct . feed_forward_angular_velocity_z = buf . get_f32_le () ; let tmp = buf . get_u16_le () ; __struct . estimator_status = EstimatorStatusFlags :: from_bits (tmp & EstimatorStatusFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "EstimatorStatusFlags" , value : tmp as u32 }) ? ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . landed_state = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavLandedState" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_boot_us) ; for val in & self . q { __tmp . put_f32_le (* val) ; } __tmp . put_u32_le (self . q_estimated_delay_us) ; __tmp . put_f32_le (self . vx) ; __tmp . put_f32_le (self . vy) ; __tmp . put_f32_le (self . vz) ; __tmp . put_u32_le (self . v_estimated_delay_us) ; __tmp . put_f32_le (self . feed_forward_angular_velocity_z) ; __tmp . put_u16_le (self . estimator_status . bits ()) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . landed_state as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct WIFI_CONFIG_AP_DATA { # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub ssid : [u8 ; 32] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub password : [u8 ; 64] , } impl WIFI_CONFIG_AP_DATA { pub const ENCODED_LEN : usize = 96usize ; pub const DEFAULT : Self = Self { ssid : [0_u8 ; 32usize] , password : [0_u8 ; 64usize] , } ; } impl Default for WIFI_CONFIG_AP_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for WIFI_CONFIG_AP_DATA { type Message = MavMessage ; const ID : u32 = 299u32 ; const NAME : & 'static str = "WIFI_CONFIG_AP" ; const EXTRA_CRC : u8 = 19u8 ; const ENCODED_LEN : usize = 96usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; for v in & mut __struct . ssid { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . password { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; for val in & self . ssid { __tmp . put_u8 (* val) ; } for val in & self . password { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ONBOARD_COMPUTER_STATUS_DATA { pub time_usec : u64 , pub uptime : u32 , pub ram_usage : u32 , pub ram_total : u32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub storage_type : [u32 ; 4] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub storage_usage : [u32 ; 4] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub storage_total : [u32 ; 4] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub link_type : [u32 ; 6] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub link_tx_rate : [u32 ; 6] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub link_rx_rate : [u32 ; 6] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub link_tx_max : [u32 ; 6] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub link_rx_max : [u32 ; 6] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub fan_speed : [i16 ; 4] , pub mavtype : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub cpu_cores : [u8 ; 8] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub cpu_combined : [u8 ; 10] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub gpu_cores : [u8 ; 4] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub gpu_combined : [u8 ; 10] , pub temperature_board : i8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub temperature_core : [i8 ; 8] , } impl ONBOARD_COMPUTER_STATUS_DATA { pub const ENCODED_LEN : usize = 238usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , uptime : 0_u32 , ram_usage : 0_u32 , ram_total : 0_u32 , storage_type : [0_u32 ; 4usize] , storage_usage : [0_u32 ; 4usize] , storage_total : [0_u32 ; 4usize] , link_type : [0_u32 ; 6usize] , link_tx_rate : [0_u32 ; 6usize] , link_rx_rate : [0_u32 ; 6usize] , link_tx_max : [0_u32 ; 6usize] , link_rx_max : [0_u32 ; 6usize] , fan_speed : [0_i16 ; 4usize] , mavtype : 0_u8 , cpu_cores : [0_u8 ; 8usize] , cpu_combined : [0_u8 ; 10usize] , gpu_cores : [0_u8 ; 4usize] , gpu_combined : [0_u8 ; 10usize] , temperature_board : 0_i8 , temperature_core : [0_i8 ; 8usize] , } ; } impl Default for ONBOARD_COMPUTER_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ONBOARD_COMPUTER_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 390u32 ; const NAME : & 'static str = "ONBOARD_COMPUTER_STATUS" ; const EXTRA_CRC : u8 = 156u8 ; const ENCODED_LEN : usize = 238usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . uptime = buf . get_u32_le () ; __struct . ram_usage = buf . get_u32_le () ; __struct . ram_total = buf . get_u32_le () ; for v in & mut __struct . storage_type { let val = buf . get_u32_le () ; * v = val ; } for v in & mut __struct . storage_usage { let val = buf . get_u32_le () ; * v = val ; } for v in & mut __struct . storage_total { let val = buf . get_u32_le () ; * v = val ; } for v in & mut __struct . link_type { let val = buf . get_u32_le () ; * v = val ; } for v in & mut __struct . link_tx_rate { let val = buf . get_u32_le () ; * v = val ; } for v in & mut __struct . link_rx_rate { let val = buf . get_u32_le () ; * v = val ; } for v in & mut __struct . link_tx_max { let val = buf . get_u32_le () ; * v = val ; } for v in & mut __struct . link_rx_max { let val = buf . get_u32_le () ; * v = val ; } for v in & mut __struct . fan_speed { let val = buf . get_i16_le () ; * v = val ; } __struct . mavtype = buf . get_u8 () ; for v in & mut __struct . cpu_cores { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . cpu_combined { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . gpu_cores { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . gpu_combined { let val = buf . get_u8 () ; * v = val ; } __struct . temperature_board = buf . get_i8 () ; for v in & mut __struct . temperature_core { let val = buf . get_i8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_u32_le (self . uptime) ; __tmp . put_u32_le (self . ram_usage) ; __tmp . put_u32_le (self . ram_total) ; for val in & self . storage_type { __tmp . put_u32_le (* val) ; } for val in & self . storage_usage { __tmp . put_u32_le (* val) ; } for val in & self . storage_total { __tmp . put_u32_le (* val) ; } for val in & self . link_type { __tmp . put_u32_le (* val) ; } for val in & self . link_tx_rate { __tmp . put_u32_le (* val) ; } for val in & self . link_rx_rate { __tmp . put_u32_le (* val) ; } for val in & self . link_tx_max { __tmp . put_u32_le (* val) ; } for val in & self . link_rx_max { __tmp . put_u32_le (* val) ; } for val in & self . fan_speed { __tmp . put_i16_le (* val) ; } __tmp . put_u8 (self . mavtype) ; for val in & self . cpu_cores { __tmp . put_u8 (* val) ; } for val in & self . cpu_combined { __tmp . put_u8 (* val) ; } for val in & self . gpu_cores { __tmp . put_u8 (* val) ; } for val in & self . gpu_combined { __tmp . put_u8 (* val) ; } __tmp . put_i8 (self . temperature_board) ; for val in & self . temperature_core { __tmp . put_i8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct DATA_STREAM_DATA { pub message_rate : u16 , pub stream_id : u8 , pub on_off : u8 , } impl DATA_STREAM_DATA { pub const ENCODED_LEN : usize = 4usize ; pub const DEFAULT : Self = Self { message_rate : 0_u16 , stream_id : 0_u8 , on_off : 0_u8 , } ; } impl Default for DATA_STREAM_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for DATA_STREAM_DATA { type Message = MavMessage ; const ID : u32 = 67u32 ; const NAME : & 'static str = "DATA_STREAM" ; const EXTRA_CRC : u8 = 21u8 ; const ENCODED_LEN : usize = 4usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . message_rate = buf . get_u16_le () ; __struct . stream_id = buf . get_u8 () ; __struct . on_off = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . message_rate) ; __tmp . put_u8 (self . stream_id) ; __tmp . put_u8 (self . on_off) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SERVO_OUTPUT_RAW_DATA { pub time_usec : u32 , pub servo1_raw : u16 , pub servo2_raw : u16 , pub servo3_raw : u16 , pub servo4_raw : u16 , pub servo5_raw : u16 , pub servo6_raw : u16 , pub servo7_raw : u16 , pub servo8_raw : u16 , pub port : u8 , } impl SERVO_OUTPUT_RAW_DATA { pub const ENCODED_LEN : usize = 21usize ; pub const DEFAULT : Self = Self { time_usec : 0_u32 , servo1_raw : 0_u16 , servo2_raw : 0_u16 , servo3_raw : 0_u16 , servo4_raw : 0_u16 , servo5_raw : 0_u16 , servo6_raw : 0_u16 , servo7_raw : 0_u16 , servo8_raw : 0_u16 , port : 0_u8 , } ; } impl Default for SERVO_OUTPUT_RAW_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SERVO_OUTPUT_RAW_DATA { type Message = MavMessage ; const ID : u32 = 36u32 ; const NAME : & 'static str = "SERVO_OUTPUT_RAW" ; const EXTRA_CRC : u8 = 222u8 ; const ENCODED_LEN : usize = 21usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u32_le () ; __struct . servo1_raw = buf . get_u16_le () ; __struct . servo2_raw = buf . get_u16_le () ; __struct . servo3_raw = buf . get_u16_le () ; __struct . servo4_raw = buf . get_u16_le () ; __struct . servo5_raw = buf . get_u16_le () ; __struct . servo6_raw = buf . get_u16_le () ; __struct . servo7_raw = buf . get_u16_le () ; __struct . servo8_raw = buf . get_u16_le () ; __struct . port = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_usec) ; __tmp . put_u16_le (self . servo1_raw) ; __tmp . put_u16_le (self . servo2_raw) ; __tmp . put_u16_le (self . servo3_raw) ; __tmp . put_u16_le (self . servo4_raw) ; __tmp . put_u16_le (self . servo5_raw) ; __tmp . put_u16_le (self . servo6_raw) ; __tmp . put_u16_le (self . servo7_raw) ; __tmp . put_u16_le (self . servo8_raw) ; __tmp . put_u8 (self . port) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GIMBAL_DEVICE_ATTITUDE_STATUS_DATA { pub time_boot_ms : u32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub q : [f32 ; 4] , pub angular_velocity_x : f32 , pub angular_velocity_y : f32 , pub angular_velocity_z : f32 , pub failure_flags : GimbalDeviceErrorFlags , pub flags : GimbalDeviceFlags , pub target_system : u8 , pub target_component : u8 , } impl GIMBAL_DEVICE_ATTITUDE_STATUS_DATA { pub const ENCODED_LEN : usize = 40usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , q : [0.0_f32 ; 4usize] , angular_velocity_x : 0.0_f32 , angular_velocity_y : 0.0_f32 , angular_velocity_z : 0.0_f32 , failure_flags : GimbalDeviceErrorFlags :: DEFAULT , flags : GimbalDeviceFlags :: DEFAULT , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for GIMBAL_DEVICE_ATTITUDE_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GIMBAL_DEVICE_ATTITUDE_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 285u32 ; const NAME : & 'static str = "GIMBAL_DEVICE_ATTITUDE_STATUS" ; const EXTRA_CRC : u8 = 137u8 ; const ENCODED_LEN : usize = 40usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; for v in & mut __struct . q { let val = buf . get_f32_le () ; * v = val ; } __struct . angular_velocity_x = buf . get_f32_le () ; __struct . angular_velocity_y = buf . get_f32_le () ; __struct . angular_velocity_z = buf . get_f32_le () ; let tmp = buf . get_u32_le () ; __struct . failure_flags = GimbalDeviceErrorFlags :: from_bits (tmp & GimbalDeviceErrorFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "GimbalDeviceErrorFlags" , value : tmp as u32 }) ? ; let tmp = buf . get_u16_le () ; __struct . flags = GimbalDeviceFlags :: from_bits (tmp & GimbalDeviceFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "GimbalDeviceFlags" , value : tmp as u32 }) ? ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; for val in & self . q { __tmp . put_f32_le (* val) ; } __tmp . put_f32_le (self . angular_velocity_x) ; __tmp . put_f32_le (self . angular_velocity_y) ; __tmp . put_f32_le (self . angular_velocity_z) ; __tmp . put_u32_le (self . failure_flags . bits ()) ; __tmp . put_u16_le (self . flags . bits ()) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ESC_STATUS_DATA { pub time_usec : u64 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub rpm : [i32 ; 4] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub voltage : [f32 ; 4] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub current : [f32 ; 4] , pub index : u8 , } impl ESC_STATUS_DATA { pub const ENCODED_LEN : usize = 57usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , rpm : [0_i32 ; 4usize] , voltage : [0.0_f32 ; 4usize] , current : [0.0_f32 ; 4usize] , index : 0_u8 , } ; } impl Default for ESC_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ESC_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 291u32 ; const NAME : & 'static str = "ESC_STATUS" ; const EXTRA_CRC : u8 = 10u8 ; const ENCODED_LEN : usize = 57usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; for v in & mut __struct . rpm { let val = buf . get_i32_le () ; * v = val ; } for v in & mut __struct . voltage { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . current { let val = buf . get_f32_le () ; * v = val ; } __struct . index = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; for val in & self . rpm { __tmp . put_i32_le (* val) ; } for val in & self . voltage { __tmp . put_f32_le (* val) ; } for val in & self . current { __tmp . put_f32_le (* val) ; } __tmp . put_u8 (self . index) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PLAY_TUNE_DATA { pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub tune : [u8 ; 30] , } impl PLAY_TUNE_DATA { pub const ENCODED_LEN : usize = 32usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , tune : [0_u8 ; 30usize] , } ; } impl Default for PLAY_TUNE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for PLAY_TUNE_DATA { type Message = MavMessage ; const ID : u32 = 258u32 ; const NAME : & 'static str = "PLAY_TUNE" ; const EXTRA_CRC : u8 = 187u8 ; const ENCODED_LEN : usize = 32usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . tune { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . tune { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct FILE_TRANSFER_PROTOCOL_DATA { pub target_network : u8 , pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub payload : [u8 ; 251] , } impl FILE_TRANSFER_PROTOCOL_DATA { pub const ENCODED_LEN : usize = 254usize ; pub const DEFAULT : Self = Self { target_network : 0_u8 , target_system : 0_u8 , target_component : 0_u8 , payload : [0_u8 ; 251usize] , } ; } impl Default for FILE_TRANSFER_PROTOCOL_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for FILE_TRANSFER_PROTOCOL_DATA { type Message = MavMessage ; const ID : u32 = 110u32 ; const NAME : & 'static str = "FILE_TRANSFER_PROTOCOL" ; const EXTRA_CRC : u8 = 84u8 ; const ENCODED_LEN : usize = 254usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_network = buf . get_u8 () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . payload { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_network) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . payload { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SET_HOME_POSITION_DATA { pub latitude : i32 , pub longitude : i32 , pub altitude : i32 , pub x : f32 , pub y : f32 , pub z : f32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub q : [f32 ; 4] , pub approach_x : f32 , pub approach_y : f32 , pub approach_z : f32 , pub target_system : u8 , } impl SET_HOME_POSITION_DATA { pub const ENCODED_LEN : usize = 53usize ; pub const DEFAULT : Self = Self { latitude : 0_i32 , longitude : 0_i32 , altitude : 0_i32 , x : 0.0_f32 , y : 0.0_f32 , z : 0.0_f32 , q : [0.0_f32 ; 4usize] , approach_x : 0.0_f32 , approach_y : 0.0_f32 , approach_z : 0.0_f32 , target_system : 0_u8 , } ; } impl Default for SET_HOME_POSITION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SET_HOME_POSITION_DATA { type Message = MavMessage ; const ID : u32 = 243u32 ; const NAME : & 'static str = "SET_HOME_POSITION" ; const EXTRA_CRC : u8 = 85u8 ; const ENCODED_LEN : usize = 53usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . latitude = buf . get_i32_le () ; __struct . longitude = buf . get_i32_le () ; __struct . altitude = buf . get_i32_le () ; __struct . x = buf . get_f32_le () ; __struct . y = buf . get_f32_le () ; __struct . z = buf . get_f32_le () ; for v in & mut __struct . q { let val = buf . get_f32_le () ; * v = val ; } __struct . approach_x = buf . get_f32_le () ; __struct . approach_y = buf . get_f32_le () ; __struct . approach_z = buf . get_f32_le () ; __struct . target_system = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . latitude) ; __tmp . put_i32_le (self . longitude) ; __tmp . put_i32_le (self . altitude) ; __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; for val in & self . q { __tmp . put_f32_le (* val) ; } __tmp . put_f32_le (self . approach_x) ; __tmp . put_f32_le (self . approach_y) ; __tmp . put_f32_le (self . approach_z) ; __tmp . put_u8 (self . target_system) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ATTITUDE_QUATERNION_COV_DATA { pub time_usec : u64 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub q : [f32 ; 4] , pub rollspeed : f32 , pub pitchspeed : f32 , pub yawspeed : f32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub covariance : [f32 ; 9] , } impl ATTITUDE_QUATERNION_COV_DATA { pub const ENCODED_LEN : usize = 72usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , q : [0.0_f32 ; 4usize] , rollspeed : 0.0_f32 , pitchspeed : 0.0_f32 , yawspeed : 0.0_f32 , covariance : [0.0_f32 ; 9usize] , } ; } impl Default for ATTITUDE_QUATERNION_COV_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ATTITUDE_QUATERNION_COV_DATA { type Message = MavMessage ; const ID : u32 = 61u32 ; const NAME : & 'static str = "ATTITUDE_QUATERNION_COV" ; const EXTRA_CRC : u8 = 167u8 ; const ENCODED_LEN : usize = 72usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; for v in & mut __struct . q { let val = buf . get_f32_le () ; * v = val ; } __struct . rollspeed = buf . get_f32_le () ; __struct . pitchspeed = buf . get_f32_le () ; __struct . yawspeed = buf . get_f32_le () ; for v in & mut __struct . covariance { let val = buf . get_f32_le () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; for val in & self . q { __tmp . put_f32_le (* val) ; } __tmp . put_f32_le (self . rollspeed) ; __tmp . put_f32_le (self . pitchspeed) ; __tmp . put_f32_le (self . yawspeed) ; for val in & self . covariance { __tmp . put_f32_le (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GPS2_RAW_DATA { pub time_usec : u64 , pub lat : i32 , pub lon : i32 , pub alt : i32 , pub dgps_age : u32 , pub eph : u16 , pub epv : u16 , pub vel : u16 , pub cog : u16 , pub fix_type : GpsFixType , pub satellites_visible : u8 , pub dgps_numch : u8 , } impl GPS2_RAW_DATA { pub const ENCODED_LEN : usize = 35usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , lat : 0_i32 , lon : 0_i32 , alt : 0_i32 , dgps_age : 0_u32 , eph : 0_u16 , epv : 0_u16 , vel : 0_u16 , cog : 0_u16 , fix_type : GpsFixType :: DEFAULT , satellites_visible : 0_u8 , dgps_numch : 0_u8 , } ; } impl Default for GPS2_RAW_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GPS2_RAW_DATA { type Message = MavMessage ; const ID : u32 = 124u32 ; const NAME : & 'static str = "GPS2_RAW" ; const EXTRA_CRC : u8 = 87u8 ; const ENCODED_LEN : usize = 35usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . alt = buf . get_i32_le () ; __struct . dgps_age = buf . get_u32_le () ; __struct . eph = buf . get_u16_le () ; __struct . epv = buf . get_u16_le () ; __struct . vel = buf . get_u16_le () ; __struct . cog = buf . get_u16_le () ; let tmp = buf . get_u8 () ; __struct . fix_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "GpsFixType" , value : tmp as u32 }) ? ; __struct . satellites_visible = buf . get_u8 () ; __struct . dgps_numch = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_i32_le (self . alt) ; __tmp . put_u32_le (self . dgps_age) ; __tmp . put_u16_le (self . eph) ; __tmp . put_u16_le (self . epv) ; __tmp . put_u16_le (self . vel) ; __tmp . put_u16_le (self . cog) ; __tmp . put_u8 (self . fix_type as u8) ; __tmp . put_u8 (self . satellites_visible) ; __tmp . put_u8 (self . dgps_numch) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SIM_STATE_DATA { pub q1 : f32 , pub q2 : f32 , pub q3 : f32 , pub q4 : f32 , pub roll : f32 , pub pitch : f32 , pub yaw : f32 , pub xacc : f32 , pub yacc : f32 , pub zacc : f32 , pub xgyro : f32 , pub ygyro : f32 , pub zgyro : f32 , pub lat : f32 , pub lon : f32 , pub alt : f32 , pub std_dev_horz : f32 , pub std_dev_vert : f32 , pub vn : f32 , pub ve : f32 , pub vd : f32 , } impl SIM_STATE_DATA { pub const ENCODED_LEN : usize = 84usize ; pub const DEFAULT : Self = Self { q1 : 0.0_f32 , q2 : 0.0_f32 , q3 : 0.0_f32 , q4 : 0.0_f32 , roll : 0.0_f32 , pitch : 0.0_f32 , yaw : 0.0_f32 , xacc : 0.0_f32 , yacc : 0.0_f32 , zacc : 0.0_f32 , xgyro : 0.0_f32 , ygyro : 0.0_f32 , zgyro : 0.0_f32 , lat : 0.0_f32 , lon : 0.0_f32 , alt : 0.0_f32 , std_dev_horz : 0.0_f32 , std_dev_vert : 0.0_f32 , vn : 0.0_f32 , ve : 0.0_f32 , vd : 0.0_f32 , } ; } impl Default for SIM_STATE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SIM_STATE_DATA { type Message = MavMessage ; const ID : u32 = 108u32 ; const NAME : & 'static str = "SIM_STATE" ; const EXTRA_CRC : u8 = 32u8 ; const ENCODED_LEN : usize = 84usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . q1 = buf . get_f32_le () ; __struct . q2 = buf . get_f32_le () ; __struct . q3 = buf . get_f32_le () ; __struct . q4 = buf . get_f32_le () ; __struct . roll = buf . get_f32_le () ; __struct . pitch = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; __struct . xacc = buf . get_f32_le () ; __struct . yacc = buf . get_f32_le () ; __struct . zacc = buf . get_f32_le () ; __struct . xgyro = buf . get_f32_le () ; __struct . ygyro = buf . get_f32_le () ; __struct . zgyro = buf . get_f32_le () ; __struct . lat = buf . get_f32_le () ; __struct . lon = buf . get_f32_le () ; __struct . alt = buf . get_f32_le () ; __struct . std_dev_horz = buf . get_f32_le () ; __struct . std_dev_vert = buf . get_f32_le () ; __struct . vn = buf . get_f32_le () ; __struct . ve = buf . get_f32_le () ; __struct . vd = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . q1) ; __tmp . put_f32_le (self . q2) ; __tmp . put_f32_le (self . q3) ; __tmp . put_f32_le (self . q4) ; __tmp . put_f32_le (self . roll) ; __tmp . put_f32_le (self . pitch) ; __tmp . put_f32_le (self . yaw) ; __tmp . put_f32_le (self . xacc) ; __tmp . put_f32_le (self . yacc) ; __tmp . put_f32_le (self . zacc) ; __tmp . put_f32_le (self . xgyro) ; __tmp . put_f32_le (self . ygyro) ; __tmp . put_f32_le (self . zgyro) ; __tmp . put_f32_le (self . lat) ; __tmp . put_f32_le (self . lon) ; __tmp . put_f32_le (self . alt) ; __tmp . put_f32_le (self . std_dev_horz) ; __tmp . put_f32_le (self . std_dev_vert) ; __tmp . put_f32_le (self . vn) ; __tmp . put_f32_le (self . ve) ; __tmp . put_f32_le (self . vd) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HOME_POSITION_DATA { pub latitude : i32 , pub longitude : i32 , pub altitude : i32 , pub x : f32 , pub y : f32 , pub z : f32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub q : [f32 ; 4] , pub approach_x : f32 , pub approach_y : f32 , pub approach_z : f32 , } impl HOME_POSITION_DATA { pub const ENCODED_LEN : usize = 52usize ; pub const DEFAULT : Self = Self { latitude : 0_i32 , longitude : 0_i32 , altitude : 0_i32 , x : 0.0_f32 , y : 0.0_f32 , z : 0.0_f32 , q : [0.0_f32 ; 4usize] , approach_x : 0.0_f32 , approach_y : 0.0_f32 , approach_z : 0.0_f32 , } ; } impl Default for HOME_POSITION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for HOME_POSITION_DATA { type Message = MavMessage ; const ID : u32 = 242u32 ; const NAME : & 'static str = "HOME_POSITION" ; const EXTRA_CRC : u8 = 104u8 ; const ENCODED_LEN : usize = 52usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . latitude = buf . get_i32_le () ; __struct . longitude = buf . get_i32_le () ; __struct . altitude = buf . get_i32_le () ; __struct . x = buf . get_f32_le () ; __struct . y = buf . get_f32_le () ; __struct . z = buf . get_f32_le () ; for v in & mut __struct . q { let val = buf . get_f32_le () ; * v = val ; } __struct . approach_x = buf . get_f32_le () ; __struct . approach_y = buf . get_f32_le () ; __struct . approach_z = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . latitude) ; __tmp . put_i32_le (self . longitude) ; __tmp . put_i32_le (self . altitude) ; __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; for val in & self . q { __tmp . put_f32_le (* val) ; } __tmp . put_f32_le (self . approach_x) ; __tmp . put_f32_le (self . approach_y) ; __tmp . put_f32_le (self . approach_z) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MANUAL_CONTROL_DATA { pub x : i16 , pub y : i16 , pub z : i16 , pub r : i16 , pub buttons : u16 , pub target : u8 , } impl MANUAL_CONTROL_DATA { pub const ENCODED_LEN : usize = 11usize ; pub const DEFAULT : Self = Self { x : 0_i16 , y : 0_i16 , z : 0_i16 , r : 0_i16 , buttons : 0_u16 , target : 0_u8 , } ; } impl Default for MANUAL_CONTROL_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MANUAL_CONTROL_DATA { type Message = MavMessage ; const ID : u32 = 69u32 ; const NAME : & 'static str = "MANUAL_CONTROL" ; const EXTRA_CRC : u8 = 243u8 ; const ENCODED_LEN : usize = 11usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . x = buf . get_i16_le () ; __struct . y = buf . get_i16_le () ; __struct . z = buf . get_i16_le () ; __struct . r = buf . get_i16_le () ; __struct . buttons = buf . get_u16_le () ; __struct . target = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i16_le (self . x) ; __tmp . put_i16_le (self . y) ; __tmp . put_i16_le (self . z) ; __tmp . put_i16_le (self . r) ; __tmp . put_u16_le (self . buttons) ; __tmp . put_u8 (self . target) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SET_POSITION_TARGET_GLOBAL_INT_DATA { pub time_boot_ms : u32 , pub lat_int : i32 , pub lon_int : i32 , pub alt : f32 , pub vx : f32 , pub vy : f32 , pub vz : f32 , pub afx : f32 , pub afy : f32 , pub afz : f32 , pub yaw : f32 , pub yaw_rate : f32 , pub type_mask : PositionTargetTypemask , pub target_system : u8 , pub target_component : u8 , pub coordinate_frame : MavFrame , } impl SET_POSITION_TARGET_GLOBAL_INT_DATA { pub const ENCODED_LEN : usize = 53usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , lat_int : 0_i32 , lon_int : 0_i32 , alt : 0.0_f32 , vx : 0.0_f32 , vy : 0.0_f32 , vz : 0.0_f32 , afx : 0.0_f32 , afy : 0.0_f32 , afz : 0.0_f32 , yaw : 0.0_f32 , yaw_rate : 0.0_f32 , type_mask : PositionTargetTypemask :: DEFAULT , target_system : 0_u8 , target_component : 0_u8 , coordinate_frame : MavFrame :: DEFAULT , } ; } impl Default for SET_POSITION_TARGET_GLOBAL_INT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SET_POSITION_TARGET_GLOBAL_INT_DATA { type Message = MavMessage ; const ID : u32 = 86u32 ; const NAME : & 'static str = "SET_POSITION_TARGET_GLOBAL_INT" ; const EXTRA_CRC : u8 = 5u8 ; const ENCODED_LEN : usize = 53usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . lat_int = buf . get_i32_le () ; __struct . lon_int = buf . get_i32_le () ; __struct . alt = buf . get_f32_le () ; __struct . vx = buf . get_f32_le () ; __struct . vy = buf . get_f32_le () ; __struct . vz = buf . get_f32_le () ; __struct . afx = buf . get_f32_le () ; __struct . afy = buf . get_f32_le () ; __struct . afz = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; __struct . yaw_rate = buf . get_f32_le () ; let tmp = buf . get_u16_le () ; __struct . type_mask = PositionTargetTypemask :: from_bits (tmp & PositionTargetTypemask :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "PositionTargetTypemask" , value : tmp as u32 }) ? ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . coordinate_frame = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavFrame" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_i32_le (self . lat_int) ; __tmp . put_i32_le (self . lon_int) ; __tmp . put_f32_le (self . alt) ; __tmp . put_f32_le (self . vx) ; __tmp . put_f32_le (self . vy) ; __tmp . put_f32_le (self . vz) ; __tmp . put_f32_le (self . afx) ; __tmp . put_f32_le (self . afy) ; __tmp . put_f32_le (self . afz) ; __tmp . put_f32_le (self . yaw) ; __tmp . put_f32_le (self . yaw_rate) ; __tmp . put_u16_le (self . type_mask . bits ()) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . coordinate_frame as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GLOBAL_VISION_POSITION_ESTIMATE_DATA { pub usec : u64 , pub x : f32 , pub y : f32 , pub z : f32 , pub roll : f32 , pub pitch : f32 , pub yaw : f32 , } impl GLOBAL_VISION_POSITION_ESTIMATE_DATA { pub const ENCODED_LEN : usize = 32usize ; pub const DEFAULT : Self = Self { usec : 0_u64 , x : 0.0_f32 , y : 0.0_f32 , z : 0.0_f32 , roll : 0.0_f32 , pitch : 0.0_f32 , yaw : 0.0_f32 , } ; } impl Default for GLOBAL_VISION_POSITION_ESTIMATE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GLOBAL_VISION_POSITION_ESTIMATE_DATA { type Message = MavMessage ; const ID : u32 = 101u32 ; const NAME : & 'static str = "GLOBAL_VISION_POSITION_ESTIMATE" ; const EXTRA_CRC : u8 = 102u8 ; const ENCODED_LEN : usize = 32usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . usec = buf . get_u64_le () ; __struct . x = buf . get_f32_le () ; __struct . y = buf . get_f32_le () ; __struct . z = buf . get_f32_le () ; __struct . roll = buf . get_f32_le () ; __struct . pitch = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . usec) ; __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; __tmp . put_f32_le (self . roll) ; __tmp . put_f32_le (self . pitch) ; __tmp . put_f32_le (self . yaw) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PING_DATA { pub time_usec : u64 , pub seq : u32 , pub target_system : u8 , pub target_component : u8 , } impl PING_DATA { pub const ENCODED_LEN : usize = 14usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , seq : 0_u32 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for PING_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for PING_DATA { type Message = MavMessage ; const ID : u32 = 4u32 ; const NAME : & 'static str = "PING" ; const EXTRA_CRC : u8 = 237u8 ; const ENCODED_LEN : usize = 14usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . seq = buf . get_u32_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_u32_le (self . seq) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct WHEEL_DISTANCE_DATA { pub time_usec : u64 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub distance : [f64 ; 16] , pub count : u8 , } impl WHEEL_DISTANCE_DATA { pub const ENCODED_LEN : usize = 137usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , distance : [0.0_f64 ; 16usize] , count : 0_u8 , } ; } impl Default for WHEEL_DISTANCE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for WHEEL_DISTANCE_DATA { type Message = MavMessage ; const ID : u32 = 9000u32 ; const NAME : & 'static str = "WHEEL_DISTANCE" ; const EXTRA_CRC : u8 = 113u8 ; const ENCODED_LEN : usize = 137usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; for v in & mut __struct . distance { let val = buf . get_f64_le () ; * v = val ; } __struct . count = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; for val in & self . distance { __tmp . put_f64_le (* val) ; } __tmp . put_u8 (self . count) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA { pub flags : GimbalManagerFlags , pub pitch : f32 , pub yaw : f32 , pub pitch_rate : f32 , pub yaw_rate : f32 , pub target_system : u8 , pub target_component : u8 , pub gimbal_device_id : u8 , } impl GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA { pub const ENCODED_LEN : usize = 23usize ; pub const DEFAULT : Self = Self { flags : GimbalManagerFlags :: DEFAULT , pitch : 0.0_f32 , yaw : 0.0_f32 , pitch_rate : 0.0_f32 , yaw_rate : 0.0_f32 , target_system : 0_u8 , target_component : 0_u8 , gimbal_device_id : 0_u8 , } ; } impl Default for GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA { type Message = MavMessage ; const ID : u32 = 288u32 ; const NAME : & 'static str = "GIMBAL_MANAGER_SET_MANUAL_CONTROL" ; const EXTRA_CRC : u8 = 20u8 ; const ENCODED_LEN : usize = 23usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u32_le () ; __struct . flags = FromPrimitive :: from_u32 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "GimbalManagerFlags" , value : tmp as u32 }) ? ; __struct . pitch = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; __struct . pitch_rate = buf . get_f32_le () ; __struct . yaw_rate = buf . get_f32_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . gimbal_device_id = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . flags as u32) ; __tmp . put_f32_le (self . pitch) ; __tmp . put_f32_le (self . yaw) ; __tmp . put_f32_le (self . pitch_rate) ; __tmp . put_f32_le (self . yaw_rate) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . gimbal_device_id) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct RESPONSE_EVENT_ERROR_DATA { pub sequence : u16 , pub sequence_oldest_available : u16 , pub target_system : u8 , pub target_component : u8 , pub reason : MavEventErrorReason , } impl RESPONSE_EVENT_ERROR_DATA { pub const ENCODED_LEN : usize = 7usize ; pub const DEFAULT : Self = Self { sequence : 0_u16 , sequence_oldest_available : 0_u16 , target_system : 0_u8 , target_component : 0_u8 , reason : MavEventErrorReason :: DEFAULT , } ; } impl Default for RESPONSE_EVENT_ERROR_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for RESPONSE_EVENT_ERROR_DATA { type Message = MavMessage ; const ID : u32 = 413u32 ; const NAME : & 'static str = "RESPONSE_EVENT_ERROR" ; const EXTRA_CRC : u8 = 77u8 ; const ENCODED_LEN : usize = 7usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . sequence = buf . get_u16_le () ; __struct . sequence_oldest_available = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . reason = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavEventErrorReason" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . sequence) ; __tmp . put_u16_le (self . sequence_oldest_available) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . reason as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct TERRAIN_CHECK_DATA { pub lat : i32 , pub lon : i32 , } impl TERRAIN_CHECK_DATA { pub const ENCODED_LEN : usize = 8usize ; pub const DEFAULT : Self = Self { lat : 0_i32 , lon : 0_i32 , } ; } impl Default for TERRAIN_CHECK_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for TERRAIN_CHECK_DATA { type Message = MavMessage ; const ID : u32 = 135u32 ; const NAME : & 'static str = "TERRAIN_CHECK" ; const EXTRA_CRC : u8 = 203u8 ; const ENCODED_LEN : usize = 8usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct OPEN_DRONE_ID_AUTHENTICATION_DATA { pub timestamp : u32 , pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub id_or_mac : [u8 ; 20] , pub authentication_type : MavOdidAuthType , pub data_page : u8 , pub last_page_index : u8 , pub length : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub authentication_data : [u8 ; 23] , } impl OPEN_DRONE_ID_AUTHENTICATION_DATA { pub const ENCODED_LEN : usize = 53usize ; pub const DEFAULT : Self = Self { timestamp : 0_u32 , target_system : 0_u8 , target_component : 0_u8 , id_or_mac : [0_u8 ; 20usize] , authentication_type : MavOdidAuthType :: DEFAULT , data_page : 0_u8 , last_page_index : 0_u8 , length : 0_u8 , authentication_data : [0_u8 ; 23usize] , } ; } impl Default for OPEN_DRONE_ID_AUTHENTICATION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for OPEN_DRONE_ID_AUTHENTICATION_DATA { type Message = MavMessage ; const ID : u32 = 12902u32 ; const NAME : & 'static str = "OPEN_DRONE_ID_AUTHENTICATION" ; const EXTRA_CRC : u8 = 140u8 ; const ENCODED_LEN : usize = 53usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . timestamp = buf . get_u32_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . id_or_mac { let val = buf . get_u8 () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . authentication_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidAuthType" , value : tmp as u32 }) ? ; __struct . data_page = buf . get_u8 () ; __struct . last_page_index = buf . get_u8 () ; __struct . length = buf . get_u8 () ; for v in & mut __struct . authentication_data { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . timestamp) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . id_or_mac { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . authentication_type as u8) ; __tmp . put_u8 (self . data_page) ; __tmp . put_u8 (self . last_page_index) ; __tmp . put_u8 (self . length) ; for val in & self . authentication_data { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct OPEN_DRONE_ID_ARM_STATUS_DATA { pub status : MavOdidArmStatus , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub error : [u8 ; 50] , } impl OPEN_DRONE_ID_ARM_STATUS_DATA { pub const ENCODED_LEN : usize = 51usize ; pub const DEFAULT : Self = Self { status : MavOdidArmStatus :: DEFAULT , error : [0_u8 ; 50usize] , } ; } impl Default for OPEN_DRONE_ID_ARM_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for OPEN_DRONE_ID_ARM_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 12918u32 ; const NAME : & 'static str = "OPEN_DRONE_ID_ARM_STATUS" ; const EXTRA_CRC : u8 = 139u8 ; const ENCODED_LEN : usize = 51usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u8 () ; __struct . status = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidArmStatus" , value : tmp as u32 }) ? ; for v in & mut __struct . error { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . status as u8) ; for val in & self . error { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct OPEN_DRONE_ID_SYSTEM_UPDATE_DATA { pub operator_latitude : i32 , pub operator_longitude : i32 , pub operator_altitude_geo : f32 , pub timestamp : u32 , pub target_system : u8 , pub target_component : u8 , } impl OPEN_DRONE_ID_SYSTEM_UPDATE_DATA { pub const ENCODED_LEN : usize = 18usize ; pub const DEFAULT : Self = Self { operator_latitude : 0_i32 , operator_longitude : 0_i32 , operator_altitude_geo : 0.0_f32 , timestamp : 0_u32 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for OPEN_DRONE_ID_SYSTEM_UPDATE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for OPEN_DRONE_ID_SYSTEM_UPDATE_DATA { type Message = MavMessage ; const ID : u32 = 12919u32 ; const NAME : & 'static str = "OPEN_DRONE_ID_SYSTEM_UPDATE" ; const EXTRA_CRC : u8 = 7u8 ; const ENCODED_LEN : usize = 18usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . operator_latitude = buf . get_i32_le () ; __struct . operator_longitude = buf . get_i32_le () ; __struct . operator_altitude_geo = buf . get_f32_le () ; __struct . timestamp = buf . get_u32_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . operator_latitude) ; __tmp . put_i32_le (self . operator_longitude) ; __tmp . put_f32_le (self . operator_altitude_geo) ; __tmp . put_u32_le (self . timestamp) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct OPEN_DRONE_ID_SELF_ID_DATA { pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub id_or_mac : [u8 ; 20] , pub description_type : MavOdidDescType , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub description : [u8 ; 23] , } impl OPEN_DRONE_ID_SELF_ID_DATA { pub const ENCODED_LEN : usize = 46usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , id_or_mac : [0_u8 ; 20usize] , description_type : MavOdidDescType :: DEFAULT , description : [0_u8 ; 23usize] , } ; } impl Default for OPEN_DRONE_ID_SELF_ID_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for OPEN_DRONE_ID_SELF_ID_DATA { type Message = MavMessage ; const ID : u32 = 12903u32 ; const NAME : & 'static str = "OPEN_DRONE_ID_SELF_ID" ; const EXTRA_CRC : u8 = 249u8 ; const ENCODED_LEN : usize = 46usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . id_or_mac { let val = buf . get_u8 () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . description_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidDescType" , value : tmp as u32 }) ? ; for v in & mut __struct . description { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . id_or_mac { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . description_type as u8) ; for val in & self . description { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct BUTTON_CHANGE_DATA { pub time_boot_ms : u32 , pub last_change_ms : u32 , pub state : u8 , } impl BUTTON_CHANGE_DATA { pub const ENCODED_LEN : usize = 9usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , last_change_ms : 0_u32 , state : 0_u8 , } ; } impl Default for BUTTON_CHANGE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for BUTTON_CHANGE_DATA { type Message = MavMessage ; const ID : u32 = 257u32 ; const NAME : & 'static str = "BUTTON_CHANGE" ; const EXTRA_CRC : u8 = 131u8 ; const ENCODED_LEN : usize = 9usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . last_change_ms = buf . get_u32_le () ; __struct . state = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_u32_le (self . last_change_ms) ; __tmp . put_u8 (self . state) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CAMERA_SETTINGS_DATA { pub time_boot_ms : u32 , pub mode_id : CameraMode , } impl CAMERA_SETTINGS_DATA { pub const ENCODED_LEN : usize = 5usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , mode_id : CameraMode :: DEFAULT , } ; } impl Default for CAMERA_SETTINGS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CAMERA_SETTINGS_DATA { type Message = MavMessage ; const ID : u32 = 260u32 ; const NAME : & 'static str = "CAMERA_SETTINGS" ; const EXTRA_CRC : u8 = 146u8 ; const ENCODED_LEN : usize = 5usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; let tmp = buf . get_u8 () ; __struct . mode_id = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "CameraMode" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_u8 (self . mode_id as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ESC_INFO_DATA { pub time_usec : u64 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub error_count : [u32 ; 4] , pub counter : u16 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub failure_flags : [u16 ; 4] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub temperature : [i16 ; 4] , pub index : u8 , pub count : u8 , pub connection_type : EscConnectionType , pub info : u8 , } impl ESC_INFO_DATA { pub const ENCODED_LEN : usize = 46usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , error_count : [0_u32 ; 4usize] , counter : 0_u16 , failure_flags : [0_u16 ; 4usize] , temperature : [0_i16 ; 4usize] , index : 0_u8 , count : 0_u8 , connection_type : EscConnectionType :: DEFAULT , info : 0_u8 , } ; } impl Default for ESC_INFO_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ESC_INFO_DATA { type Message = MavMessage ; const ID : u32 = 290u32 ; const NAME : & 'static str = "ESC_INFO" ; const EXTRA_CRC : u8 = 251u8 ; const ENCODED_LEN : usize = 46usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; for v in & mut __struct . error_count { let val = buf . get_u32_le () ; * v = val ; } __struct . counter = buf . get_u16_le () ; for v in & mut __struct . failure_flags { let val = buf . get_u16_le () ; * v = val ; } for v in & mut __struct . temperature { let val = buf . get_i16_le () ; * v = val ; } __struct . index = buf . get_u8 () ; __struct . count = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . connection_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "EscConnectionType" , value : tmp as u32 }) ? ; __struct . info = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; for val in & self . error_count { __tmp . put_u32_le (* val) ; } __tmp . put_u16_le (self . counter) ; for val in & self . failure_flags { __tmp . put_u16_le (* val) ; } for val in & self . temperature { __tmp . put_i16_le (* val) ; } __tmp . put_u8 (self . index) ; __tmp . put_u8 (self . count) ; __tmp . put_u8 (self . connection_type as u8) ; __tmp . put_u8 (self . info) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SERIAL_CONTROL_DATA { pub baudrate : u32 , pub timeout : u16 , pub device : SerialControlDev , pub flags : SerialControlFlag , pub count : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub data : [u8 ; 70] , } impl SERIAL_CONTROL_DATA { pub const ENCODED_LEN : usize = 79usize ; pub const DEFAULT : Self = Self { baudrate : 0_u32 , timeout : 0_u16 , device : SerialControlDev :: DEFAULT , flags : SerialControlFlag :: DEFAULT , count : 0_u8 , data : [0_u8 ; 70usize] , } ; } impl Default for SERIAL_CONTROL_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SERIAL_CONTROL_DATA { type Message = MavMessage ; const ID : u32 = 126u32 ; const NAME : & 'static str = "SERIAL_CONTROL" ; const EXTRA_CRC : u8 = 220u8 ; const ENCODED_LEN : usize = 79usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . baudrate = buf . get_u32_le () ; __struct . timeout = buf . get_u16_le () ; let tmp = buf . get_u8 () ; __struct . device = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "SerialControlDev" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . flags = SerialControlFlag :: from_bits (tmp & SerialControlFlag :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "SerialControlFlag" , value : tmp as u32 }) ? ; __struct . count = buf . get_u8 () ; for v in & mut __struct . data { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . baudrate) ; __tmp . put_u16_le (self . timeout) ; __tmp . put_u8 (self . device as u8) ; __tmp . put_u8 (self . flags . bits ()) ; __tmp . put_u8 (self . count) ; for val in & self . data { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CHANGE_OPERATOR_CONTROL_ACK_DATA { pub gcs_system_id : u8 , pub control_request : u8 , pub ack : u8 , } impl CHANGE_OPERATOR_CONTROL_ACK_DATA { pub const ENCODED_LEN : usize = 3usize ; pub const DEFAULT : Self = Self { gcs_system_id : 0_u8 , control_request : 0_u8 , ack : 0_u8 , } ; } impl Default for CHANGE_OPERATOR_CONTROL_ACK_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CHANGE_OPERATOR_CONTROL_ACK_DATA { type Message = MavMessage ; const ID : u32 = 6u32 ; const NAME : & 'static str = "CHANGE_OPERATOR_CONTROL_ACK" ; const EXTRA_CRC : u8 = 104u8 ; const ENCODED_LEN : usize = 3usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . gcs_system_id = buf . get_u8 () ; __struct . control_request = buf . get_u8 () ; __struct . ack = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . gcs_system_id) ; __tmp . put_u8 (self . control_request) ; __tmp . put_u8 (self . ack) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ESTIMATOR_STATUS_DATA { pub time_usec : u64 , pub vel_ratio : f32 , pub pos_horiz_ratio : f32 , pub pos_vert_ratio : f32 , pub mag_ratio : f32 , pub hagl_ratio : f32 , pub tas_ratio : f32 , pub pos_horiz_accuracy : f32 , pub pos_vert_accuracy : f32 , pub flags : EstimatorStatusFlags , } impl ESTIMATOR_STATUS_DATA { pub const ENCODED_LEN : usize = 42usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , vel_ratio : 0.0_f32 , pos_horiz_ratio : 0.0_f32 , pos_vert_ratio : 0.0_f32 , mag_ratio : 0.0_f32 , hagl_ratio : 0.0_f32 , tas_ratio : 0.0_f32 , pos_horiz_accuracy : 0.0_f32 , pos_vert_accuracy : 0.0_f32 , flags : EstimatorStatusFlags :: DEFAULT , } ; } impl Default for ESTIMATOR_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ESTIMATOR_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 230u32 ; const NAME : & 'static str = "ESTIMATOR_STATUS" ; const EXTRA_CRC : u8 = 163u8 ; const ENCODED_LEN : usize = 42usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . vel_ratio = buf . get_f32_le () ; __struct . pos_horiz_ratio = buf . get_f32_le () ; __struct . pos_vert_ratio = buf . get_f32_le () ; __struct . mag_ratio = buf . get_f32_le () ; __struct . hagl_ratio = buf . get_f32_le () ; __struct . tas_ratio = buf . get_f32_le () ; __struct . pos_horiz_accuracy = buf . get_f32_le () ; __struct . pos_vert_accuracy = buf . get_f32_le () ; let tmp = buf . get_u16_le () ; __struct . flags = EstimatorStatusFlags :: from_bits (tmp & EstimatorStatusFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "EstimatorStatusFlags" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . vel_ratio) ; __tmp . put_f32_le (self . pos_horiz_ratio) ; __tmp . put_f32_le (self . pos_vert_ratio) ; __tmp . put_f32_le (self . mag_ratio) ; __tmp . put_f32_le (self . hagl_ratio) ; __tmp . put_f32_le (self . tas_ratio) ; __tmp . put_f32_le (self . pos_horiz_accuracy) ; __tmp . put_f32_le (self . pos_vert_accuracy) ; __tmp . put_u16_le (self . flags . bits ()) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MISSION_ITEM_REACHED_DATA { pub seq : u16 , } impl MISSION_ITEM_REACHED_DATA { pub const ENCODED_LEN : usize = 2usize ; pub const DEFAULT : Self = Self { seq : 0_u16 , } ; } impl Default for MISSION_ITEM_REACHED_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MISSION_ITEM_REACHED_DATA { type Message = MavMessage ; const ID : u32 = 46u32 ; const NAME : & 'static str = "MISSION_ITEM_REACHED" ; const EXTRA_CRC : u8 = 11u8 ; const ENCODED_LEN : usize = 2usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . seq = buf . get_u16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . seq) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SCALED_IMU2_DATA { pub time_boot_ms : u32 , pub xacc : i16 , pub yacc : i16 , pub zacc : i16 , pub xgyro : i16 , pub ygyro : i16 , pub zgyro : i16 , pub xmag : i16 , pub ymag : i16 , pub zmag : i16 , } impl SCALED_IMU2_DATA { pub const ENCODED_LEN : usize = 22usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , xacc : 0_i16 , yacc : 0_i16 , zacc : 0_i16 , xgyro : 0_i16 , ygyro : 0_i16 , zgyro : 0_i16 , xmag : 0_i16 , ymag : 0_i16 , zmag : 0_i16 , } ; } impl Default for SCALED_IMU2_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SCALED_IMU2_DATA { type Message = MavMessage ; const ID : u32 = 116u32 ; const NAME : & 'static str = "SCALED_IMU2" ; const EXTRA_CRC : u8 = 76u8 ; const ENCODED_LEN : usize = 22usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . xacc = buf . get_i16_le () ; __struct . yacc = buf . get_i16_le () ; __struct . zacc = buf . get_i16_le () ; __struct . xgyro = buf . get_i16_le () ; __struct . ygyro = buf . get_i16_le () ; __struct . zgyro = buf . get_i16_le () ; __struct . xmag = buf . get_i16_le () ; __struct . ymag = buf . get_i16_le () ; __struct . zmag = buf . get_i16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_i16_le (self . xacc) ; __tmp . put_i16_le (self . yacc) ; __tmp . put_i16_le (self . zacc) ; __tmp . put_i16_le (self . xgyro) ; __tmp . put_i16_le (self . ygyro) ; __tmp . put_i16_le (self . zgyro) ; __tmp . put_i16_le (self . xmag) ; __tmp . put_i16_le (self . ymag) ; __tmp . put_i16_le (self . zmag) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct OPTICAL_FLOW_RAD_DATA { pub time_usec : u64 , pub integration_time_us : u32 , pub integrated_x : f32 , pub integrated_y : f32 , pub integrated_xgyro : f32 , pub integrated_ygyro : f32 , pub integrated_zgyro : f32 , pub time_delta_distance_us : u32 , pub distance : f32 , pub temperature : i16 , pub sensor_id : u8 , pub quality : u8 , } impl OPTICAL_FLOW_RAD_DATA { pub const ENCODED_LEN : usize = 44usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , integration_time_us : 0_u32 , integrated_x : 0.0_f32 , integrated_y : 0.0_f32 , integrated_xgyro : 0.0_f32 , integrated_ygyro : 0.0_f32 , integrated_zgyro : 0.0_f32 , time_delta_distance_us : 0_u32 , distance : 0.0_f32 , temperature : 0_i16 , sensor_id : 0_u8 , quality : 0_u8 , } ; } impl Default for OPTICAL_FLOW_RAD_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for OPTICAL_FLOW_RAD_DATA { type Message = MavMessage ; const ID : u32 = 106u32 ; const NAME : & 'static str = "OPTICAL_FLOW_RAD" ; const EXTRA_CRC : u8 = 138u8 ; const ENCODED_LEN : usize = 44usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . integration_time_us = buf . get_u32_le () ; __struct . integrated_x = buf . get_f32_le () ; __struct . integrated_y = buf . get_f32_le () ; __struct . integrated_xgyro = buf . get_f32_le () ; __struct . integrated_ygyro = buf . get_f32_le () ; __struct . integrated_zgyro = buf . get_f32_le () ; __struct . time_delta_distance_us = buf . get_u32_le () ; __struct . distance = buf . get_f32_le () ; __struct . temperature = buf . get_i16_le () ; __struct . sensor_id = buf . get_u8 () ; __struct . quality = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_u32_le (self . integration_time_us) ; __tmp . put_f32_le (self . integrated_x) ; __tmp . put_f32_le (self . integrated_y) ; __tmp . put_f32_le (self . integrated_xgyro) ; __tmp . put_f32_le (self . integrated_ygyro) ; __tmp . put_f32_le (self . integrated_zgyro) ; __tmp . put_u32_le (self . time_delta_distance_us) ; __tmp . put_f32_le (self . distance) ; __tmp . put_i16_le (self . temperature) ; __tmp . put_u8 (self . sensor_id) ; __tmp . put_u8 (self . quality) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LOG_REQUEST_DATA_DATA { pub ofs : u32 , pub count : u32 , pub id : u16 , pub target_system : u8 , pub target_component : u8 , } impl LOG_REQUEST_DATA_DATA { pub const ENCODED_LEN : usize = 12usize ; pub const DEFAULT : Self = Self { ofs : 0_u32 , count : 0_u32 , id : 0_u16 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for LOG_REQUEST_DATA_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for LOG_REQUEST_DATA_DATA { type Message = MavMessage ; const ID : u32 = 119u32 ; const NAME : & 'static str = "LOG_REQUEST_DATA" ; const EXTRA_CRC : u8 = 116u8 ; const ENCODED_LEN : usize = 12usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . ofs = buf . get_u32_le () ; __struct . count = buf . get_u32_le () ; __struct . id = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . ofs) ; __tmp . put_u32_le (self . count) ; __tmp . put_u16_le (self . id) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct FOLLOW_TARGET_DATA { pub timestamp : u64 , pub custom_state : u64 , pub lat : i32 , pub lon : i32 , pub alt : f32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub vel : [f32 ; 3] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub acc : [f32 ; 3] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub attitude_q : [f32 ; 4] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub rates : [f32 ; 3] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub position_cov : [f32 ; 3] , pub est_capabilities : u8 , } impl FOLLOW_TARGET_DATA { pub const ENCODED_LEN : usize = 93usize ; pub const DEFAULT : Self = Self { timestamp : 0_u64 , custom_state : 0_u64 , lat : 0_i32 , lon : 0_i32 , alt : 0.0_f32 , vel : [0.0_f32 ; 3usize] , acc : [0.0_f32 ; 3usize] , attitude_q : [0.0_f32 ; 4usize] , rates : [0.0_f32 ; 3usize] , position_cov : [0.0_f32 ; 3usize] , est_capabilities : 0_u8 , } ; } impl Default for FOLLOW_TARGET_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for FOLLOW_TARGET_DATA { type Message = MavMessage ; const ID : u32 = 144u32 ; const NAME : & 'static str = "FOLLOW_TARGET" ; const EXTRA_CRC : u8 = 127u8 ; const ENCODED_LEN : usize = 93usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . timestamp = buf . get_u64_le () ; __struct . custom_state = buf . get_u64_le () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . alt = buf . get_f32_le () ; for v in & mut __struct . vel { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . acc { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . attitude_q { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . rates { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . position_cov { let val = buf . get_f32_le () ; * v = val ; } __struct . est_capabilities = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . timestamp) ; __tmp . put_u64_le (self . custom_state) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_f32_le (self . alt) ; for val in & self . vel { __tmp . put_f32_le (* val) ; } for val in & self . acc { __tmp . put_f32_le (* val) ; } for val in & self . attitude_q { __tmp . put_f32_le (* val) ; } for val in & self . rates { __tmp . put_f32_le (* val) ; } for val in & self . position_cov { __tmp . put_f32_le (* val) ; } __tmp . put_u8 (self . est_capabilities) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GIMBAL_MANAGER_SET_PITCHYAW_DATA { pub flags : GimbalManagerFlags , pub pitch : f32 , pub yaw : f32 , pub pitch_rate : f32 , pub yaw_rate : f32 , pub target_system : u8 , pub target_component : u8 , pub gimbal_device_id : u8 , } impl GIMBAL_MANAGER_SET_PITCHYAW_DATA { pub const ENCODED_LEN : usize = 23usize ; pub const DEFAULT : Self = Self { flags : GimbalManagerFlags :: DEFAULT , pitch : 0.0_f32 , yaw : 0.0_f32 , pitch_rate : 0.0_f32 , yaw_rate : 0.0_f32 , target_system : 0_u8 , target_component : 0_u8 , gimbal_device_id : 0_u8 , } ; } impl Default for GIMBAL_MANAGER_SET_PITCHYAW_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GIMBAL_MANAGER_SET_PITCHYAW_DATA { type Message = MavMessage ; const ID : u32 = 287u32 ; const NAME : & 'static str = "GIMBAL_MANAGER_SET_PITCHYAW" ; const EXTRA_CRC : u8 = 1u8 ; const ENCODED_LEN : usize = 23usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u32_le () ; __struct . flags = FromPrimitive :: from_u32 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "GimbalManagerFlags" , value : tmp as u32 }) ? ; __struct . pitch = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; __struct . pitch_rate = buf . get_f32_le () ; __struct . yaw_rate = buf . get_f32_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . gimbal_device_id = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . flags as u32) ; __tmp . put_f32_le (self . pitch) ; __tmp . put_f32_le (self . yaw) ; __tmp . put_f32_le (self . pitch_rate) ; __tmp . put_f32_le (self . yaw_rate) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . gimbal_device_id) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HIGH_LATENCY_DATA { pub custom_mode : u32 , pub latitude : i32 , pub longitude : i32 , pub roll : i16 , pub pitch : i16 , pub heading : u16 , pub heading_sp : i16 , pub altitude_amsl : i16 , pub altitude_sp : i16 , pub wp_distance : u16 , pub base_mode : MavModeFlag , pub landed_state : MavLandedState , pub throttle : i8 , pub airspeed : u8 , pub airspeed_sp : u8 , pub groundspeed : u8 , pub climb_rate : i8 , pub gps_nsat : u8 , pub gps_fix_type : GpsFixType , pub battery_remaining : u8 , pub temperature : i8 , pub temperature_air : i8 , pub failsafe : u8 , pub wp_num : u8 , } impl HIGH_LATENCY_DATA { pub const ENCODED_LEN : usize = 40usize ; pub const DEFAULT : Self = Self { custom_mode : 0_u32 , latitude : 0_i32 , longitude : 0_i32 , roll : 0_i16 , pitch : 0_i16 , heading : 0_u16 , heading_sp : 0_i16 , altitude_amsl : 0_i16 , altitude_sp : 0_i16 , wp_distance : 0_u16 , base_mode : MavModeFlag :: DEFAULT , landed_state : MavLandedState :: DEFAULT , throttle : 0_i8 , airspeed : 0_u8 , airspeed_sp : 0_u8 , groundspeed : 0_u8 , climb_rate : 0_i8 , gps_nsat : 0_u8 , gps_fix_type : GpsFixType :: DEFAULT , battery_remaining : 0_u8 , temperature : 0_i8 , temperature_air : 0_i8 , failsafe : 0_u8 , wp_num : 0_u8 , } ; } impl Default for HIGH_LATENCY_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for HIGH_LATENCY_DATA { type Message = MavMessage ; const ID : u32 = 234u32 ; const NAME : & 'static str = "HIGH_LATENCY" ; const EXTRA_CRC : u8 = 150u8 ; const ENCODED_LEN : usize = 40usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . custom_mode = buf . get_u32_le () ; __struct . latitude = buf . get_i32_le () ; __struct . longitude = buf . get_i32_le () ; __struct . roll = buf . get_i16_le () ; __struct . pitch = buf . get_i16_le () ; __struct . heading = buf . get_u16_le () ; __struct . heading_sp = buf . get_i16_le () ; __struct . altitude_amsl = buf . get_i16_le () ; __struct . altitude_sp = buf . get_i16_le () ; __struct . wp_distance = buf . get_u16_le () ; let tmp = buf . get_u8 () ; __struct . base_mode = MavModeFlag :: from_bits (tmp & MavModeFlag :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "MavModeFlag" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . landed_state = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavLandedState" , value : tmp as u32 }) ? ; __struct . throttle = buf . get_i8 () ; __struct . airspeed = buf . get_u8 () ; __struct . airspeed_sp = buf . get_u8 () ; __struct . groundspeed = buf . get_u8 () ; __struct . climb_rate = buf . get_i8 () ; __struct . gps_nsat = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . gps_fix_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "GpsFixType" , value : tmp as u32 }) ? ; __struct . battery_remaining = buf . get_u8 () ; __struct . temperature = buf . get_i8 () ; __struct . temperature_air = buf . get_i8 () ; __struct . failsafe = buf . get_u8 () ; __struct . wp_num = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . custom_mode) ; __tmp . put_i32_le (self . latitude) ; __tmp . put_i32_le (self . longitude) ; __tmp . put_i16_le (self . roll) ; __tmp . put_i16_le (self . pitch) ; __tmp . put_u16_le (self . heading) ; __tmp . put_i16_le (self . heading_sp) ; __tmp . put_i16_le (self . altitude_amsl) ; __tmp . put_i16_le (self . altitude_sp) ; __tmp . put_u16_le (self . wp_distance) ; __tmp . put_u8 (self . base_mode . bits ()) ; __tmp . put_u8 (self . landed_state as u8) ; __tmp . put_i8 (self . throttle) ; __tmp . put_u8 (self . airspeed) ; __tmp . put_u8 (self . airspeed_sp) ; __tmp . put_u8 (self . groundspeed) ; __tmp . put_i8 (self . climb_rate) ; __tmp . put_u8 (self . gps_nsat) ; __tmp . put_u8 (self . gps_fix_type as u8) ; __tmp . put_u8 (self . battery_remaining) ; __tmp . put_i8 (self . temperature) ; __tmp . put_i8 (self . temperature_air) ; __tmp . put_u8 (self . failsafe) ; __tmp . put_u8 (self . wp_num) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PARAM_MAP_RC_DATA { pub param_value0 : f32 , pub scale : f32 , pub param_value_min : f32 , pub param_value_max : f32 , pub param_index : i16 , pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub param_id : [u8 ; 16] , pub parameter_rc_channel_index : u8 , } impl PARAM_MAP_RC_DATA { pub const ENCODED_LEN : usize = 37usize ; pub const DEFAULT : Self = Self { param_value0 : 0.0_f32 , scale : 0.0_f32 , param_value_min : 0.0_f32 , param_value_max : 0.0_f32 , param_index : 0_i16 , target_system : 0_u8 , target_component : 0_u8 , param_id : [0_u8 ; 16usize] , parameter_rc_channel_index : 0_u8 , } ; } impl Default for PARAM_MAP_RC_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for PARAM_MAP_RC_DATA { type Message = MavMessage ; const ID : u32 = 50u32 ; const NAME : & 'static str = "PARAM_MAP_RC" ; const EXTRA_CRC : u8 = 78u8 ; const ENCODED_LEN : usize = 37usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . param_value0 = buf . get_f32_le () ; __struct . scale = buf . get_f32_le () ; __struct . param_value_min = buf . get_f32_le () ; __struct . param_value_max = buf . get_f32_le () ; __struct . param_index = buf . get_i16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . param_id { let val = buf . get_u8 () ; * v = val ; } __struct . parameter_rc_channel_index = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . param_value0) ; __tmp . put_f32_le (self . scale) ; __tmp . put_f32_le (self . param_value_min) ; __tmp . put_f32_le (self . param_value_max) ; __tmp . put_i16_le (self . param_index) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . param_id { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . parameter_rc_channel_index) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MISSION_COUNT_DATA { pub count : u16 , pub target_system : u8 , pub target_component : u8 , } impl MISSION_COUNT_DATA { pub const ENCODED_LEN : usize = 4usize ; pub const DEFAULT : Self = Self { count : 0_u16 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for MISSION_COUNT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MISSION_COUNT_DATA { type Message = MavMessage ; const ID : u32 = 44u32 ; const NAME : & 'static str = "MISSION_COUNT" ; const EXTRA_CRC : u8 = 221u8 ; const ENCODED_LEN : usize = 4usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . count = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . count) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PARAM_VALUE_DATA { pub param_value : f32 , pub param_count : u16 , pub param_index : u16 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub param_id : [u8 ; 16] , pub param_type : MavParamType , } impl PARAM_VALUE_DATA { pub const ENCODED_LEN : usize = 25usize ; pub const DEFAULT : Self = Self { param_value : 0.0_f32 , param_count : 0_u16 , param_index : 0_u16 , param_id : [0_u8 ; 16usize] , param_type : MavParamType :: DEFAULT , } ; } impl Default for PARAM_VALUE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for PARAM_VALUE_DATA { type Message = MavMessage ; const ID : u32 = 22u32 ; const NAME : & 'static str = "PARAM_VALUE" ; const EXTRA_CRC : u8 = 220u8 ; const ENCODED_LEN : usize = 25usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . param_value = buf . get_f32_le () ; __struct . param_count = buf . get_u16_le () ; __struct . param_index = buf . get_u16_le () ; for v in & mut __struct . param_id { let val = buf . get_u8 () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . param_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavParamType" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . param_value) ; __tmp . put_u16_le (self . param_count) ; __tmp . put_u16_le (self . param_index) ; for val in & self . param_id { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . param_type as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LOGGING_ACK_DATA { pub sequence : u16 , pub target_system : u8 , pub target_component : u8 , } impl LOGGING_ACK_DATA { pub const ENCODED_LEN : usize = 4usize ; pub const DEFAULT : Self = Self { sequence : 0_u16 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for LOGGING_ACK_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for LOGGING_ACK_DATA { type Message = MavMessage ; const ID : u32 = 268u32 ; const NAME : & 'static str = "LOGGING_ACK" ; const EXTRA_CRC : u8 = 14u8 ; const ENCODED_LEN : usize = 4usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . sequence = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . sequence) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HIL_OPTICAL_FLOW_DATA { pub time_usec : u64 , pub integration_time_us : u32 , pub integrated_x : f32 , pub integrated_y : f32 , pub integrated_xgyro : f32 , pub integrated_ygyro : f32 , pub integrated_zgyro : f32 , pub time_delta_distance_us : u32 , pub distance : f32 , pub temperature : i16 , pub sensor_id : u8 , pub quality : u8 , } impl HIL_OPTICAL_FLOW_DATA { pub const ENCODED_LEN : usize = 44usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , integration_time_us : 0_u32 , integrated_x : 0.0_f32 , integrated_y : 0.0_f32 , integrated_xgyro : 0.0_f32 , integrated_ygyro : 0.0_f32 , integrated_zgyro : 0.0_f32 , time_delta_distance_us : 0_u32 , distance : 0.0_f32 , temperature : 0_i16 , sensor_id : 0_u8 , quality : 0_u8 , } ; } impl Default for HIL_OPTICAL_FLOW_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for HIL_OPTICAL_FLOW_DATA { type Message = MavMessage ; const ID : u32 = 114u32 ; const NAME : & 'static str = "HIL_OPTICAL_FLOW" ; const EXTRA_CRC : u8 = 237u8 ; const ENCODED_LEN : usize = 44usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . integration_time_us = buf . get_u32_le () ; __struct . integrated_x = buf . get_f32_le () ; __struct . integrated_y = buf . get_f32_le () ; __struct . integrated_xgyro = buf . get_f32_le () ; __struct . integrated_ygyro = buf . get_f32_le () ; __struct . integrated_zgyro = buf . get_f32_le () ; __struct . time_delta_distance_us = buf . get_u32_le () ; __struct . distance = buf . get_f32_le () ; __struct . temperature = buf . get_i16_le () ; __struct . sensor_id = buf . get_u8 () ; __struct . quality = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_u32_le (self . integration_time_us) ; __tmp . put_f32_le (self . integrated_x) ; __tmp . put_f32_le (self . integrated_y) ; __tmp . put_f32_le (self . integrated_xgyro) ; __tmp . put_f32_le (self . integrated_ygyro) ; __tmp . put_f32_le (self . integrated_zgyro) ; __tmp . put_u32_le (self . time_delta_distance_us) ; __tmp . put_f32_le (self . distance) ; __tmp . put_i16_le (self . temperature) ; __tmp . put_u8 (self . sensor_id) ; __tmp . put_u8 (self . quality) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HIGH_LATENCY2_DATA { pub timestamp : u32 , pub latitude : i32 , pub longitude : i32 , pub custom_mode : u16 , pub altitude : i16 , pub target_altitude : i16 , pub target_distance : u16 , pub wp_num : u16 , pub failure_flags : HlFailureFlag , pub mavtype : MavType , pub autopilot : MavAutopilot , pub heading : u8 , pub target_heading : u8 , pub throttle : u8 , pub airspeed : u8 , pub airspeed_sp : u8 , pub groundspeed : u8 , pub windspeed : u8 , pub wind_heading : u8 , pub eph : u8 , pub epv : u8 , pub temperature_air : i8 , pub climb_rate : i8 , pub battery : i8 , pub custom0 : i8 , pub custom1 : i8 , pub custom2 : i8 , } impl HIGH_LATENCY2_DATA { pub const ENCODED_LEN : usize = 42usize ; pub const DEFAULT : Self = Self { timestamp : 0_u32 , latitude : 0_i32 , longitude : 0_i32 , custom_mode : 0_u16 , altitude : 0_i16 , target_altitude : 0_i16 , target_distance : 0_u16 , wp_num : 0_u16 , failure_flags : HlFailureFlag :: DEFAULT , mavtype : MavType :: DEFAULT , autopilot : MavAutopilot :: DEFAULT , heading : 0_u8 , target_heading : 0_u8 , throttle : 0_u8 , airspeed : 0_u8 , airspeed_sp : 0_u8 , groundspeed : 0_u8 , windspeed : 0_u8 , wind_heading : 0_u8 , eph : 0_u8 , epv : 0_u8 , temperature_air : 0_i8 , climb_rate : 0_i8 , battery : 0_i8 , custom0 : 0_i8 , custom1 : 0_i8 , custom2 : 0_i8 , } ; } impl Default for HIGH_LATENCY2_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for HIGH_LATENCY2_DATA { type Message = MavMessage ; const ID : u32 = 235u32 ; const NAME : & 'static str = "HIGH_LATENCY2" ; const EXTRA_CRC : u8 = 179u8 ; const ENCODED_LEN : usize = 42usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . timestamp = buf . get_u32_le () ; __struct . latitude = buf . get_i32_le () ; __struct . longitude = buf . get_i32_le () ; __struct . custom_mode = buf . get_u16_le () ; __struct . altitude = buf . get_i16_le () ; __struct . target_altitude = buf . get_i16_le () ; __struct . target_distance = buf . get_u16_le () ; __struct . wp_num = buf . get_u16_le () ; let tmp = buf . get_u16_le () ; __struct . failure_flags = HlFailureFlag :: from_bits (tmp & HlFailureFlag :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "HlFailureFlag" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . mavtype = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavType" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . autopilot = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavAutopilot" , value : tmp as u32 }) ? ; __struct . heading = buf . get_u8 () ; __struct . target_heading = buf . get_u8 () ; __struct . throttle = buf . get_u8 () ; __struct . airspeed = buf . get_u8 () ; __struct . airspeed_sp = buf . get_u8 () ; __struct . groundspeed = buf . get_u8 () ; __struct . windspeed = buf . get_u8 () ; __struct . wind_heading = buf . get_u8 () ; __struct . eph = buf . get_u8 () ; __struct . epv = buf . get_u8 () ; __struct . temperature_air = buf . get_i8 () ; __struct . climb_rate = buf . get_i8 () ; __struct . battery = buf . get_i8 () ; __struct . custom0 = buf . get_i8 () ; __struct . custom1 = buf . get_i8 () ; __struct . custom2 = buf . get_i8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . timestamp) ; __tmp . put_i32_le (self . latitude) ; __tmp . put_i32_le (self . longitude) ; __tmp . put_u16_le (self . custom_mode) ; __tmp . put_i16_le (self . altitude) ; __tmp . put_i16_le (self . target_altitude) ; __tmp . put_u16_le (self . target_distance) ; __tmp . put_u16_le (self . wp_num) ; __tmp . put_u16_le (self . failure_flags . bits ()) ; __tmp . put_u8 (self . mavtype as u8) ; __tmp . put_u8 (self . autopilot as u8) ; __tmp . put_u8 (self . heading) ; __tmp . put_u8 (self . target_heading) ; __tmp . put_u8 (self . throttle) ; __tmp . put_u8 (self . airspeed) ; __tmp . put_u8 (self . airspeed_sp) ; __tmp . put_u8 (self . groundspeed) ; __tmp . put_u8 (self . windspeed) ; __tmp . put_u8 (self . wind_heading) ; __tmp . put_u8 (self . eph) ; __tmp . put_u8 (self . epv) ; __tmp . put_i8 (self . temperature_air) ; __tmp . put_i8 (self . climb_rate) ; __tmp . put_i8 (self . battery) ; __tmp . put_i8 (self . custom0) ; __tmp . put_i8 (self . custom1) ; __tmp . put_i8 (self . custom2) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CURRENT_EVENT_SEQUENCE_DATA { pub sequence : u16 , pub flags : MavEventCurrentSequenceFlags , } impl CURRENT_EVENT_SEQUENCE_DATA { pub const ENCODED_LEN : usize = 3usize ; pub const DEFAULT : Self = Self { sequence : 0_u16 , flags : MavEventCurrentSequenceFlags :: DEFAULT , } ; } impl Default for CURRENT_EVENT_SEQUENCE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CURRENT_EVENT_SEQUENCE_DATA { type Message = MavMessage ; const ID : u32 = 411u32 ; const NAME : & 'static str = "CURRENT_EVENT_SEQUENCE" ; const EXTRA_CRC : u8 = 106u8 ; const ENCODED_LEN : usize = 3usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . sequence = buf . get_u16_le () ; let tmp = buf . get_u8 () ; __struct . flags = MavEventCurrentSequenceFlags :: from_bits (tmp & MavEventCurrentSequenceFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "MavEventCurrentSequenceFlags" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . sequence) ; __tmp . put_u8 (self . flags . bits ()) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CAMERA_TRACKING_GEO_STATUS_DATA { pub lat : i32 , pub lon : i32 , pub alt : f32 , pub h_acc : f32 , pub v_acc : f32 , pub vel_n : f32 , pub vel_e : f32 , pub vel_d : f32 , pub vel_acc : f32 , pub dist : f32 , pub hdg : f32 , pub hdg_acc : f32 , pub tracking_status : CameraTrackingStatusFlags , } impl CAMERA_TRACKING_GEO_STATUS_DATA { pub const ENCODED_LEN : usize = 49usize ; pub const DEFAULT : Self = Self { lat : 0_i32 , lon : 0_i32 , alt : 0.0_f32 , h_acc : 0.0_f32 , v_acc : 0.0_f32 , vel_n : 0.0_f32 , vel_e : 0.0_f32 , vel_d : 0.0_f32 , vel_acc : 0.0_f32 , dist : 0.0_f32 , hdg : 0.0_f32 , hdg_acc : 0.0_f32 , tracking_status : CameraTrackingStatusFlags :: DEFAULT , } ; } impl Default for CAMERA_TRACKING_GEO_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CAMERA_TRACKING_GEO_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 276u32 ; const NAME : & 'static str = "CAMERA_TRACKING_GEO_STATUS" ; const EXTRA_CRC : u8 = 18u8 ; const ENCODED_LEN : usize = 49usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . alt = buf . get_f32_le () ; __struct . h_acc = buf . get_f32_le () ; __struct . v_acc = buf . get_f32_le () ; __struct . vel_n = buf . get_f32_le () ; __struct . vel_e = buf . get_f32_le () ; __struct . vel_d = buf . get_f32_le () ; __struct . vel_acc = buf . get_f32_le () ; __struct . dist = buf . get_f32_le () ; __struct . hdg = buf . get_f32_le () ; __struct . hdg_acc = buf . get_f32_le () ; let tmp = buf . get_u8 () ; __struct . tracking_status = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "CameraTrackingStatusFlags" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_f32_le (self . alt) ; __tmp . put_f32_le (self . h_acc) ; __tmp . put_f32_le (self . v_acc) ; __tmp . put_f32_le (self . vel_n) ; __tmp . put_f32_le (self . vel_e) ; __tmp . put_f32_le (self . vel_d) ; __tmp . put_f32_le (self . vel_acc) ; __tmp . put_f32_le (self . dist) ; __tmp . put_f32_le (self . hdg) ; __tmp . put_f32_le (self . hdg_acc) ; __tmp . put_u8 (self . tracking_status as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct RC_CHANNELS_SCALED_DATA { pub time_boot_ms : u32 , pub chan1_scaled : i16 , pub chan2_scaled : i16 , pub chan3_scaled : i16 , pub chan4_scaled : i16 , pub chan5_scaled : i16 , pub chan6_scaled : i16 , pub chan7_scaled : i16 , pub chan8_scaled : i16 , pub port : u8 , pub rssi : u8 , } impl RC_CHANNELS_SCALED_DATA { pub const ENCODED_LEN : usize = 22usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , chan1_scaled : 0_i16 , chan2_scaled : 0_i16 , chan3_scaled : 0_i16 , chan4_scaled : 0_i16 , chan5_scaled : 0_i16 , chan6_scaled : 0_i16 , chan7_scaled : 0_i16 , chan8_scaled : 0_i16 , port : 0_u8 , rssi : 0_u8 , } ; } impl Default for RC_CHANNELS_SCALED_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for RC_CHANNELS_SCALED_DATA { type Message = MavMessage ; const ID : u32 = 34u32 ; const NAME : & 'static str = "RC_CHANNELS_SCALED" ; const EXTRA_CRC : u8 = 237u8 ; const ENCODED_LEN : usize = 22usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . chan1_scaled = buf . get_i16_le () ; __struct . chan2_scaled = buf . get_i16_le () ; __struct . chan3_scaled = buf . get_i16_le () ; __struct . chan4_scaled = buf . get_i16_le () ; __struct . chan5_scaled = buf . get_i16_le () ; __struct . chan6_scaled = buf . get_i16_le () ; __struct . chan7_scaled = buf . get_i16_le () ; __struct . chan8_scaled = buf . get_i16_le () ; __struct . port = buf . get_u8 () ; __struct . rssi = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_i16_le (self . chan1_scaled) ; __tmp . put_i16_le (self . chan2_scaled) ; __tmp . put_i16_le (self . chan3_scaled) ; __tmp . put_i16_le (self . chan4_scaled) ; __tmp . put_i16_le (self . chan5_scaled) ; __tmp . put_i16_le (self . chan6_scaled) ; __tmp . put_i16_le (self . chan7_scaled) ; __tmp . put_i16_le (self . chan8_scaled) ; __tmp . put_u8 (self . port) ; __tmp . put_u8 (self . rssi) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GPS2_RTK_DATA { pub time_last_baseline_ms : u32 , pub tow : u32 , pub baseline_a_mm : i32 , pub baseline_b_mm : i32 , pub baseline_c_mm : i32 , pub accuracy : u32 , pub iar_num_hypotheses : i32 , pub wn : u16 , pub rtk_receiver_id : u8 , pub rtk_health : u8 , pub rtk_rate : u8 , pub nsats : u8 , pub baseline_coords_type : RtkBaselineCoordinateSystem , } impl GPS2_RTK_DATA { pub const ENCODED_LEN : usize = 35usize ; pub const DEFAULT : Self = Self { time_last_baseline_ms : 0_u32 , tow : 0_u32 , baseline_a_mm : 0_i32 , baseline_b_mm : 0_i32 , baseline_c_mm : 0_i32 , accuracy : 0_u32 , iar_num_hypotheses : 0_i32 , wn : 0_u16 , rtk_receiver_id : 0_u8 , rtk_health : 0_u8 , rtk_rate : 0_u8 , nsats : 0_u8 , baseline_coords_type : RtkBaselineCoordinateSystem :: DEFAULT , } ; } impl Default for GPS2_RTK_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GPS2_RTK_DATA { type Message = MavMessage ; const ID : u32 = 128u32 ; const NAME : & 'static str = "GPS2_RTK" ; const EXTRA_CRC : u8 = 226u8 ; const ENCODED_LEN : usize = 35usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_last_baseline_ms = buf . get_u32_le () ; __struct . tow = buf . get_u32_le () ; __struct . baseline_a_mm = buf . get_i32_le () ; __struct . baseline_b_mm = buf . get_i32_le () ; __struct . baseline_c_mm = buf . get_i32_le () ; __struct . accuracy = buf . get_u32_le () ; __struct . iar_num_hypotheses = buf . get_i32_le () ; __struct . wn = buf . get_u16_le () ; __struct . rtk_receiver_id = buf . get_u8 () ; __struct . rtk_health = buf . get_u8 () ; __struct . rtk_rate = buf . get_u8 () ; __struct . nsats = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . baseline_coords_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "RtkBaselineCoordinateSystem" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_last_baseline_ms) ; __tmp . put_u32_le (self . tow) ; __tmp . put_i32_le (self . baseline_a_mm) ; __tmp . put_i32_le (self . baseline_b_mm) ; __tmp . put_i32_le (self . baseline_c_mm) ; __tmp . put_u32_le (self . accuracy) ; __tmp . put_i32_le (self . iar_num_hypotheses) ; __tmp . put_u16_le (self . wn) ; __tmp . put_u8 (self . rtk_receiver_id) ; __tmp . put_u8 (self . rtk_health) ; __tmp . put_u8 (self . rtk_rate) ; __tmp . put_u8 (self . nsats) ; __tmp . put_u8 (self . baseline_coords_type as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct RC_CHANNELS_DATA { pub time_boot_ms : u32 , pub chan1_raw : u16 , pub chan2_raw : u16 , pub chan3_raw : u16 , pub chan4_raw : u16 , pub chan5_raw : u16 , pub chan6_raw : u16 , pub chan7_raw : u16 , pub chan8_raw : u16 , pub chan9_raw : u16 , pub chan10_raw : u16 , pub chan11_raw : u16 , pub chan12_raw : u16 , pub chan13_raw : u16 , pub chan14_raw : u16 , pub chan15_raw : u16 , pub chan16_raw : u16 , pub chan17_raw : u16 , pub chan18_raw : u16 , pub chancount : u8 , pub rssi : u8 , } impl RC_CHANNELS_DATA { pub const ENCODED_LEN : usize = 42usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , chan1_raw : 0_u16 , chan2_raw : 0_u16 , chan3_raw : 0_u16 , chan4_raw : 0_u16 , chan5_raw : 0_u16 , chan6_raw : 0_u16 , chan7_raw : 0_u16 , chan8_raw : 0_u16 , chan9_raw : 0_u16 , chan10_raw : 0_u16 , chan11_raw : 0_u16 , chan12_raw : 0_u16 , chan13_raw : 0_u16 , chan14_raw : 0_u16 , chan15_raw : 0_u16 , chan16_raw : 0_u16 , chan17_raw : 0_u16 , chan18_raw : 0_u16 , chancount : 0_u8 , rssi : 0_u8 , } ; } impl Default for RC_CHANNELS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for RC_CHANNELS_DATA { type Message = MavMessage ; const ID : u32 = 65u32 ; const NAME : & 'static str = "RC_CHANNELS" ; const EXTRA_CRC : u8 = 118u8 ; const ENCODED_LEN : usize = 42usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . chan1_raw = buf . get_u16_le () ; __struct . chan2_raw = buf . get_u16_le () ; __struct . chan3_raw = buf . get_u16_le () ; __struct . chan4_raw = buf . get_u16_le () ; __struct . chan5_raw = buf . get_u16_le () ; __struct . chan6_raw = buf . get_u16_le () ; __struct . chan7_raw = buf . get_u16_le () ; __struct . chan8_raw = buf . get_u16_le () ; __struct . chan9_raw = buf . get_u16_le () ; __struct . chan10_raw = buf . get_u16_le () ; __struct . chan11_raw = buf . get_u16_le () ; __struct . chan12_raw = buf . get_u16_le () ; __struct . chan13_raw = buf . get_u16_le () ; __struct . chan14_raw = buf . get_u16_le () ; __struct . chan15_raw = buf . get_u16_le () ; __struct . chan16_raw = buf . get_u16_le () ; __struct . chan17_raw = buf . get_u16_le () ; __struct . chan18_raw = buf . get_u16_le () ; __struct . chancount = buf . get_u8 () ; __struct . rssi = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_u16_le (self . chan1_raw) ; __tmp . put_u16_le (self . chan2_raw) ; __tmp . put_u16_le (self . chan3_raw) ; __tmp . put_u16_le (self . chan4_raw) ; __tmp . put_u16_le (self . chan5_raw) ; __tmp . put_u16_le (self . chan6_raw) ; __tmp . put_u16_le (self . chan7_raw) ; __tmp . put_u16_le (self . chan8_raw) ; __tmp . put_u16_le (self . chan9_raw) ; __tmp . put_u16_le (self . chan10_raw) ; __tmp . put_u16_le (self . chan11_raw) ; __tmp . put_u16_le (self . chan12_raw) ; __tmp . put_u16_le (self . chan13_raw) ; __tmp . put_u16_le (self . chan14_raw) ; __tmp . put_u16_le (self . chan15_raw) ; __tmp . put_u16_le (self . chan16_raw) ; __tmp . put_u16_le (self . chan17_raw) ; __tmp . put_u16_le (self . chan18_raw) ; __tmp . put_u8 (self . chancount) ; __tmp . put_u8 (self . rssi) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MISSION_WRITE_PARTIAL_LIST_DATA { pub start_index : i16 , pub end_index : i16 , pub target_system : u8 , pub target_component : u8 , } impl MISSION_WRITE_PARTIAL_LIST_DATA { pub const ENCODED_LEN : usize = 6usize ; pub const DEFAULT : Self = Self { start_index : 0_i16 , end_index : 0_i16 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for MISSION_WRITE_PARTIAL_LIST_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MISSION_WRITE_PARTIAL_LIST_DATA { type Message = MavMessage ; const ID : u32 = 38u32 ; const NAME : & 'static str = "MISSION_WRITE_PARTIAL_LIST" ; const EXTRA_CRC : u8 = 9u8 ; const ENCODED_LEN : usize = 6usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . start_index = buf . get_i16_le () ; __struct . end_index = buf . get_i16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i16_le (self . start_index) ; __tmp . put_i16_le (self . end_index) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CAMERA_CAPTURE_STATUS_DATA { pub time_boot_ms : u32 , pub image_interval : f32 , pub recording_time_ms : u32 , pub available_capacity : f32 , pub image_status : u8 , pub video_status : u8 , } impl CAMERA_CAPTURE_STATUS_DATA { pub const ENCODED_LEN : usize = 18usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , image_interval : 0.0_f32 , recording_time_ms : 0_u32 , available_capacity : 0.0_f32 , image_status : 0_u8 , video_status : 0_u8 , } ; } impl Default for CAMERA_CAPTURE_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CAMERA_CAPTURE_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 262u32 ; const NAME : & 'static str = "CAMERA_CAPTURE_STATUS" ; const EXTRA_CRC : u8 = 12u8 ; const ENCODED_LEN : usize = 18usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . image_interval = buf . get_f32_le () ; __struct . recording_time_ms = buf . get_u32_le () ; __struct . available_capacity = buf . get_f32_le () ; __struct . image_status = buf . get_u8 () ; __struct . video_status = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . image_interval) ; __tmp . put_u32_le (self . recording_time_ms) ; __tmp . put_f32_le (self . available_capacity) ; __tmp . put_u8 (self . image_status) ; __tmp . put_u8 (self . video_status) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct RC_CHANNELS_OVERRIDE_DATA { pub chan1_raw : u16 , pub chan2_raw : u16 , pub chan3_raw : u16 , pub chan4_raw : u16 , pub chan5_raw : u16 , pub chan6_raw : u16 , pub chan7_raw : u16 , pub chan8_raw : u16 , pub target_system : u8 , pub target_component : u8 , } impl RC_CHANNELS_OVERRIDE_DATA { pub const ENCODED_LEN : usize = 18usize ; pub const DEFAULT : Self = Self { chan1_raw : 0_u16 , chan2_raw : 0_u16 , chan3_raw : 0_u16 , chan4_raw : 0_u16 , chan5_raw : 0_u16 , chan6_raw : 0_u16 , chan7_raw : 0_u16 , chan8_raw : 0_u16 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for RC_CHANNELS_OVERRIDE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for RC_CHANNELS_OVERRIDE_DATA { type Message = MavMessage ; const ID : u32 = 70u32 ; const NAME : & 'static str = "RC_CHANNELS_OVERRIDE" ; const EXTRA_CRC : u8 = 124u8 ; const ENCODED_LEN : usize = 18usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . chan1_raw = buf . get_u16_le () ; __struct . chan2_raw = buf . get_u16_le () ; __struct . chan3_raw = buf . get_u16_le () ; __struct . chan4_raw = buf . get_u16_le () ; __struct . chan5_raw = buf . get_u16_le () ; __struct . chan6_raw = buf . get_u16_le () ; __struct . chan7_raw = buf . get_u16_le () ; __struct . chan8_raw = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . chan1_raw) ; __tmp . put_u16_le (self . chan2_raw) ; __tmp . put_u16_le (self . chan3_raw) ; __tmp . put_u16_le (self . chan4_raw) ; __tmp . put_u16_le (self . chan5_raw) ; __tmp . put_u16_le (self . chan6_raw) ; __tmp . put_u16_le (self . chan7_raw) ; __tmp . put_u16_le (self . chan8_raw) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CAMERA_IMAGE_CAPTURED_DATA { pub time_utc : u64 , pub time_boot_ms : u32 , pub lat : i32 , pub lon : i32 , pub alt : i32 , pub relative_alt : i32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub q : [f32 ; 4] , pub image_index : i32 , pub camera_id : u8 , pub capture_result : i8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub file_url : [u8 ; 205] , } impl CAMERA_IMAGE_CAPTURED_DATA { pub const ENCODED_LEN : usize = 255usize ; pub const DEFAULT : Self = Self { time_utc : 0_u64 , time_boot_ms : 0_u32 , lat : 0_i32 , lon : 0_i32 , alt : 0_i32 , relative_alt : 0_i32 , q : [0.0_f32 ; 4usize] , image_index : 0_i32 , camera_id : 0_u8 , capture_result : 0_i8 , file_url : [0_u8 ; 205usize] , } ; } impl Default for CAMERA_IMAGE_CAPTURED_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CAMERA_IMAGE_CAPTURED_DATA { type Message = MavMessage ; const ID : u32 = 263u32 ; const NAME : & 'static str = "CAMERA_IMAGE_CAPTURED" ; const EXTRA_CRC : u8 = 133u8 ; const ENCODED_LEN : usize = 255usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_utc = buf . get_u64_le () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . alt = buf . get_i32_le () ; __struct . relative_alt = buf . get_i32_le () ; for v in & mut __struct . q { let val = buf . get_f32_le () ; * v = val ; } __struct . image_index = buf . get_i32_le () ; __struct . camera_id = buf . get_u8 () ; __struct . capture_result = buf . get_i8 () ; for v in & mut __struct . file_url { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_utc) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_i32_le (self . alt) ; __tmp . put_i32_le (self . relative_alt) ; for val in & self . q { __tmp . put_f32_le (* val) ; } __tmp . put_i32_le (self . image_index) ; __tmp . put_u8 (self . camera_id) ; __tmp . put_i8 (self . capture_result) ; for val in & self . file_url { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MISSION_ITEM_DATA { pub param1 : f32 , pub param2 : f32 , pub param3 : f32 , pub param4 : f32 , pub x : f32 , pub y : f32 , pub z : f32 , pub seq : u16 , pub command : MavCmd , pub target_system : u8 , pub target_component : u8 , pub frame : MavFrame , pub current : u8 , pub autocontinue : u8 , } impl MISSION_ITEM_DATA { pub const ENCODED_LEN : usize = 37usize ; pub const DEFAULT : Self = Self { param1 : 0.0_f32 , param2 : 0.0_f32 , param3 : 0.0_f32 , param4 : 0.0_f32 , x : 0.0_f32 , y : 0.0_f32 , z : 0.0_f32 , seq : 0_u16 , command : MavCmd :: DEFAULT , target_system : 0_u8 , target_component : 0_u8 , frame : MavFrame :: DEFAULT , current : 0_u8 , autocontinue : 0_u8 , } ; } impl Default for MISSION_ITEM_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MISSION_ITEM_DATA { type Message = MavMessage ; const ID : u32 = 39u32 ; const NAME : & 'static str = "MISSION_ITEM" ; const EXTRA_CRC : u8 = 254u8 ; const ENCODED_LEN : usize = 37usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . param1 = buf . get_f32_le () ; __struct . param2 = buf . get_f32_le () ; __struct . param3 = buf . get_f32_le () ; __struct . param4 = buf . get_f32_le () ; __struct . x = buf . get_f32_le () ; __struct . y = buf . get_f32_le () ; __struct . z = buf . get_f32_le () ; __struct . seq = buf . get_u16_le () ; let tmp = buf . get_u16_le () ; __struct . command = FromPrimitive :: from_u16 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavCmd" , value : tmp as u32 }) ? ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . frame = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavFrame" , value : tmp as u32 }) ? ; __struct . current = buf . get_u8 () ; __struct . autocontinue = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . param1) ; __tmp . put_f32_le (self . param2) ; __tmp . put_f32_le (self . param3) ; __tmp . put_f32_le (self . param4) ; __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; __tmp . put_u16_le (self . seq) ; __tmp . put_u16_le (self . command as u16) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . frame as u8) ; __tmp . put_u8 (self . current) ; __tmp . put_u8 (self . autocontinue) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MAG_CAL_REPORT_DATA { pub fitness : f32 , pub ofs_x : f32 , pub ofs_y : f32 , pub ofs_z : f32 , pub diag_x : f32 , pub diag_y : f32 , pub diag_z : f32 , pub offdiag_x : f32 , pub offdiag_y : f32 , pub offdiag_z : f32 , pub compass_id : u8 , pub cal_mask : u8 , pub cal_status : MagCalStatus , pub autosaved : u8 , } impl MAG_CAL_REPORT_DATA { pub const ENCODED_LEN : usize = 44usize ; pub const DEFAULT : Self = Self { fitness : 0.0_f32 , ofs_x : 0.0_f32 , ofs_y : 0.0_f32 , ofs_z : 0.0_f32 , diag_x : 0.0_f32 , diag_y : 0.0_f32 , diag_z : 0.0_f32 , offdiag_x : 0.0_f32 , offdiag_y : 0.0_f32 , offdiag_z : 0.0_f32 , compass_id : 0_u8 , cal_mask : 0_u8 , cal_status : MagCalStatus :: DEFAULT , autosaved : 0_u8 , } ; } impl Default for MAG_CAL_REPORT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MAG_CAL_REPORT_DATA { type Message = MavMessage ; const ID : u32 = 192u32 ; const NAME : & 'static str = "MAG_CAL_REPORT" ; const EXTRA_CRC : u8 = 36u8 ; const ENCODED_LEN : usize = 44usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . fitness = buf . get_f32_le () ; __struct . ofs_x = buf . get_f32_le () ; __struct . ofs_y = buf . get_f32_le () ; __struct . ofs_z = buf . get_f32_le () ; __struct . diag_x = buf . get_f32_le () ; __struct . diag_y = buf . get_f32_le () ; __struct . diag_z = buf . get_f32_le () ; __struct . offdiag_x = buf . get_f32_le () ; __struct . offdiag_y = buf . get_f32_le () ; __struct . offdiag_z = buf . get_f32_le () ; __struct . compass_id = buf . get_u8 () ; __struct . cal_mask = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . cal_status = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MagCalStatus" , value : tmp as u32 }) ? ; __struct . autosaved = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . fitness) ; __tmp . put_f32_le (self . ofs_x) ; __tmp . put_f32_le (self . ofs_y) ; __tmp . put_f32_le (self . ofs_z) ; __tmp . put_f32_le (self . diag_x) ; __tmp . put_f32_le (self . diag_y) ; __tmp . put_f32_le (self . diag_z) ; __tmp . put_f32_le (self . offdiag_x) ; __tmp . put_f32_le (self . offdiag_y) ; __tmp . put_f32_le (self . offdiag_z) ; __tmp . put_u8 (self . compass_id) ; __tmp . put_u8 (self . cal_mask) ; __tmp . put_u8 (self . cal_status as u8) ; __tmp . put_u8 (self . autosaved) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct COMMAND_INT_DATA { pub param1 : f32 , pub param2 : f32 , pub param3 : f32 , pub param4 : f32 , pub x : i32 , pub y : i32 , pub z : f32 , pub command : MavCmd , pub target_system : u8 , pub target_component : u8 , pub frame : MavFrame , pub current : u8 , pub autocontinue : u8 , } impl COMMAND_INT_DATA { pub const ENCODED_LEN : usize = 35usize ; pub const DEFAULT : Self = Self { param1 : 0.0_f32 , param2 : 0.0_f32 , param3 : 0.0_f32 , param4 : 0.0_f32 , x : 0_i32 , y : 0_i32 , z : 0.0_f32 , command : MavCmd :: DEFAULT , target_system : 0_u8 , target_component : 0_u8 , frame : MavFrame :: DEFAULT , current : 0_u8 , autocontinue : 0_u8 , } ; } impl Default for COMMAND_INT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for COMMAND_INT_DATA { type Message = MavMessage ; const ID : u32 = 75u32 ; const NAME : & 'static str = "COMMAND_INT" ; const EXTRA_CRC : u8 = 158u8 ; const ENCODED_LEN : usize = 35usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . param1 = buf . get_f32_le () ; __struct . param2 = buf . get_f32_le () ; __struct . param3 = buf . get_f32_le () ; __struct . param4 = buf . get_f32_le () ; __struct . x = buf . get_i32_le () ; __struct . y = buf . get_i32_le () ; __struct . z = buf . get_f32_le () ; let tmp = buf . get_u16_le () ; __struct . command = FromPrimitive :: from_u16 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavCmd" , value : tmp as u32 }) ? ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . frame = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavFrame" , value : tmp as u32 }) ? ; __struct . current = buf . get_u8 () ; __struct . autocontinue = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . param1) ; __tmp . put_f32_le (self . param2) ; __tmp . put_f32_le (self . param3) ; __tmp . put_f32_le (self . param4) ; __tmp . put_i32_le (self . x) ; __tmp . put_i32_le (self . y) ; __tmp . put_f32_le (self . z) ; __tmp . put_u16_le (self . command as u16) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . frame as u8) ; __tmp . put_u8 (self . current) ; __tmp . put_u8 (self . autocontinue) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CANFD_FRAME_DATA { pub id : u32 , pub target_system : u8 , pub target_component : u8 , pub bus : u8 , pub len : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub data : [u8 ; 64] , } impl CANFD_FRAME_DATA { pub const ENCODED_LEN : usize = 72usize ; pub const DEFAULT : Self = Self { id : 0_u32 , target_system : 0_u8 , target_component : 0_u8 , bus : 0_u8 , len : 0_u8 , data : [0_u8 ; 64usize] , } ; } impl Default for CANFD_FRAME_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CANFD_FRAME_DATA { type Message = MavMessage ; const ID : u32 = 387u32 ; const NAME : & 'static str = "CANFD_FRAME" ; const EXTRA_CRC : u8 = 4u8 ; const ENCODED_LEN : usize = 72usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . id = buf . get_u32_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . bus = buf . get_u8 () ; __struct . len = buf . get_u8 () ; for v in & mut __struct . data { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . id) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . bus) ; __tmp . put_u8 (self . len) ; for val in & self . data { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SET_GPS_GLOBAL_ORIGIN_DATA { pub latitude : i32 , pub longitude : i32 , pub altitude : i32 , pub target_system : u8 , } impl SET_GPS_GLOBAL_ORIGIN_DATA { pub const ENCODED_LEN : usize = 13usize ; pub const DEFAULT : Self = Self { latitude : 0_i32 , longitude : 0_i32 , altitude : 0_i32 , target_system : 0_u8 , } ; } impl Default for SET_GPS_GLOBAL_ORIGIN_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SET_GPS_GLOBAL_ORIGIN_DATA { type Message = MavMessage ; const ID : u32 = 48u32 ; const NAME : & 'static str = "SET_GPS_GLOBAL_ORIGIN" ; const EXTRA_CRC : u8 = 41u8 ; const ENCODED_LEN : usize = 13usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . latitude = buf . get_i32_le () ; __struct . longitude = buf . get_i32_le () ; __struct . altitude = buf . get_i32_le () ; __struct . target_system = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . latitude) ; __tmp . put_i32_le (self . longitude) ; __tmp . put_i32_le (self . altitude) ; __tmp . put_u8 (self . target_system) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HIL_GPS_DATA { pub time_usec : u64 , pub lat : i32 , pub lon : i32 , pub alt : i32 , pub eph : u16 , pub epv : u16 , pub vel : u16 , pub vn : i16 , pub ve : i16 , pub vd : i16 , pub cog : u16 , pub fix_type : u8 , pub satellites_visible : u8 , } impl HIL_GPS_DATA { pub const ENCODED_LEN : usize = 36usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , lat : 0_i32 , lon : 0_i32 , alt : 0_i32 , eph : 0_u16 , epv : 0_u16 , vel : 0_u16 , vn : 0_i16 , ve : 0_i16 , vd : 0_i16 , cog : 0_u16 , fix_type : 0_u8 , satellites_visible : 0_u8 , } ; } impl Default for HIL_GPS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for HIL_GPS_DATA { type Message = MavMessage ; const ID : u32 = 113u32 ; const NAME : & 'static str = "HIL_GPS" ; const EXTRA_CRC : u8 = 124u8 ; const ENCODED_LEN : usize = 36usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . alt = buf . get_i32_le () ; __struct . eph = buf . get_u16_le () ; __struct . epv = buf . get_u16_le () ; __struct . vel = buf . get_u16_le () ; __struct . vn = buf . get_i16_le () ; __struct . ve = buf . get_i16_le () ; __struct . vd = buf . get_i16_le () ; __struct . cog = buf . get_u16_le () ; __struct . fix_type = buf . get_u8 () ; __struct . satellites_visible = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_i32_le (self . alt) ; __tmp . put_u16_le (self . eph) ; __tmp . put_u16_le (self . epv) ; __tmp . put_u16_le (self . vel) ; __tmp . put_i16_le (self . vn) ; __tmp . put_i16_le (self . ve) ; __tmp . put_i16_le (self . vd) ; __tmp . put_u16_le (self . cog) ; __tmp . put_u8 (self . fix_type) ; __tmp . put_u8 (self . satellites_visible) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct WINCH_STATUS_DATA { pub time_usec : u64 , pub line_length : f32 , pub speed : f32 , pub tension : f32 , pub voltage : f32 , pub current : f32 , pub status : MavWinchStatusFlag , pub temperature : i16 , } impl WINCH_STATUS_DATA { pub const ENCODED_LEN : usize = 34usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , line_length : 0.0_f32 , speed : 0.0_f32 , tension : 0.0_f32 , voltage : 0.0_f32 , current : 0.0_f32 , status : MavWinchStatusFlag :: DEFAULT , temperature : 0_i16 , } ; } impl Default for WINCH_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for WINCH_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 9005u32 ; const NAME : & 'static str = "WINCH_STATUS" ; const EXTRA_CRC : u8 = 117u8 ; const ENCODED_LEN : usize = 34usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . line_length = buf . get_f32_le () ; __struct . speed = buf . get_f32_le () ; __struct . tension = buf . get_f32_le () ; __struct . voltage = buf . get_f32_le () ; __struct . current = buf . get_f32_le () ; let tmp = buf . get_u32_le () ; __struct . status = MavWinchStatusFlag :: from_bits (tmp & MavWinchStatusFlag :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "MavWinchStatusFlag" , value : tmp as u32 }) ? ; __struct . temperature = buf . get_i16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . line_length) ; __tmp . put_f32_le (self . speed) ; __tmp . put_f32_le (self . tension) ; __tmp . put_f32_le (self . voltage) ; __tmp . put_f32_le (self . current) ; __tmp . put_u32_le (self . status . bits ()) ; __tmp . put_i16_le (self . temperature) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct DEBUG_VECT_DATA { pub time_usec : u64 , pub x : f32 , pub y : f32 , pub z : f32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub name : [u8 ; 10] , } impl DEBUG_VECT_DATA { pub const ENCODED_LEN : usize = 30usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , x : 0.0_f32 , y : 0.0_f32 , z : 0.0_f32 , name : [0_u8 ; 10usize] , } ; } impl Default for DEBUG_VECT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for DEBUG_VECT_DATA { type Message = MavMessage ; const ID : u32 = 250u32 ; const NAME : & 'static str = "DEBUG_VECT" ; const EXTRA_CRC : u8 = 49u8 ; const ENCODED_LEN : usize = 30usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . x = buf . get_f32_le () ; __struct . y = buf . get_f32_le () ; __struct . z = buf . get_f32_le () ; for v in & mut __struct . name { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; for val in & self . name { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LOGGING_DATA_DATA { pub sequence : u16 , pub target_system : u8 , pub target_component : u8 , pub length : u8 , pub first_message_offset : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub data : [u8 ; 249] , } impl LOGGING_DATA_DATA { pub const ENCODED_LEN : usize = 255usize ; pub const DEFAULT : Self = Self { sequence : 0_u16 , target_system : 0_u8 , target_component : 0_u8 , length : 0_u8 , first_message_offset : 0_u8 , data : [0_u8 ; 249usize] , } ; } impl Default for LOGGING_DATA_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for LOGGING_DATA_DATA { type Message = MavMessage ; const ID : u32 = 266u32 ; const NAME : & 'static str = "LOGGING_DATA" ; const EXTRA_CRC : u8 = 193u8 ; const ENCODED_LEN : usize = 255usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . sequence = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . length = buf . get_u8 () ; __struct . first_message_offset = buf . get_u8 () ; for v in & mut __struct . data { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . sequence) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . length) ; __tmp . put_u8 (self . first_message_offset) ; for val in & self . data { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct NAV_CONTROLLER_OUTPUT_DATA { pub nav_roll : f32 , pub nav_pitch : f32 , pub alt_error : f32 , pub aspd_error : f32 , pub xtrack_error : f32 , pub nav_bearing : i16 , pub target_bearing : i16 , pub wp_dist : u16 , } impl NAV_CONTROLLER_OUTPUT_DATA { pub const ENCODED_LEN : usize = 26usize ; pub const DEFAULT : Self = Self { nav_roll : 0.0_f32 , nav_pitch : 0.0_f32 , alt_error : 0.0_f32 , aspd_error : 0.0_f32 , xtrack_error : 0.0_f32 , nav_bearing : 0_i16 , target_bearing : 0_i16 , wp_dist : 0_u16 , } ; } impl Default for NAV_CONTROLLER_OUTPUT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for NAV_CONTROLLER_OUTPUT_DATA { type Message = MavMessage ; const ID : u32 = 62u32 ; const NAME : & 'static str = "NAV_CONTROLLER_OUTPUT" ; const EXTRA_CRC : u8 = 183u8 ; const ENCODED_LEN : usize = 26usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . nav_roll = buf . get_f32_le () ; __struct . nav_pitch = buf . get_f32_le () ; __struct . alt_error = buf . get_f32_le () ; __struct . aspd_error = buf . get_f32_le () ; __struct . xtrack_error = buf . get_f32_le () ; __struct . nav_bearing = buf . get_i16_le () ; __struct . target_bearing = buf . get_i16_le () ; __struct . wp_dist = buf . get_u16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . nav_roll) ; __tmp . put_f32_le (self . nav_pitch) ; __tmp . put_f32_le (self . alt_error) ; __tmp . put_f32_le (self . aspd_error) ; __tmp . put_f32_le (self . xtrack_error) ; __tmp . put_i16_le (self . nav_bearing) ; __tmp . put_i16_le (self . target_bearing) ; __tmp . put_u16_le (self . wp_dist) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MISSION_ITEM_INT_DATA { pub param1 : f32 , pub param2 : f32 , pub param3 : f32 , pub param4 : f32 , pub x : i32 , pub y : i32 , pub z : f32 , pub seq : u16 , pub command : MavCmd , pub target_system : u8 , pub target_component : u8 , pub frame : MavFrame , pub current : u8 , pub autocontinue : u8 , } impl MISSION_ITEM_INT_DATA { pub const ENCODED_LEN : usize = 37usize ; pub const DEFAULT : Self = Self { param1 : 0.0_f32 , param2 : 0.0_f32 , param3 : 0.0_f32 , param4 : 0.0_f32 , x : 0_i32 , y : 0_i32 , z : 0.0_f32 , seq : 0_u16 , command : MavCmd :: DEFAULT , target_system : 0_u8 , target_component : 0_u8 , frame : MavFrame :: DEFAULT , current : 0_u8 , autocontinue : 0_u8 , } ; } impl Default for MISSION_ITEM_INT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MISSION_ITEM_INT_DATA { type Message = MavMessage ; const ID : u32 = 73u32 ; const NAME : & 'static str = "MISSION_ITEM_INT" ; const EXTRA_CRC : u8 = 38u8 ; const ENCODED_LEN : usize = 37usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . param1 = buf . get_f32_le () ; __struct . param2 = buf . get_f32_le () ; __struct . param3 = buf . get_f32_le () ; __struct . param4 = buf . get_f32_le () ; __struct . x = buf . get_i32_le () ; __struct . y = buf . get_i32_le () ; __struct . z = buf . get_f32_le () ; __struct . seq = buf . get_u16_le () ; let tmp = buf . get_u16_le () ; __struct . command = FromPrimitive :: from_u16 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavCmd" , value : tmp as u32 }) ? ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . frame = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavFrame" , value : tmp as u32 }) ? ; __struct . current = buf . get_u8 () ; __struct . autocontinue = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . param1) ; __tmp . put_f32_le (self . param2) ; __tmp . put_f32_le (self . param3) ; __tmp . put_f32_le (self . param4) ; __tmp . put_i32_le (self . x) ; __tmp . put_i32_le (self . y) ; __tmp . put_f32_le (self . z) ; __tmp . put_u16_le (self . seq) ; __tmp . put_u16_le (self . command as u16) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . frame as u8) ; __tmp . put_u8 (self . current) ; __tmp . put_u8 (self . autocontinue) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ACTUATOR_OUTPUT_STATUS_DATA { pub time_usec : u64 , pub active : u32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub actuator : [f32 ; 32] , } impl ACTUATOR_OUTPUT_STATUS_DATA { pub const ENCODED_LEN : usize = 140usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , active : 0_u32 , actuator : [0.0_f32 ; 32usize] , } ; } impl Default for ACTUATOR_OUTPUT_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ACTUATOR_OUTPUT_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 375u32 ; const NAME : & 'static str = "ACTUATOR_OUTPUT_STATUS" ; const EXTRA_CRC : u8 = 251u8 ; const ENCODED_LEN : usize = 140usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . active = buf . get_u32_le () ; for v in & mut __struct . actuator { let val = buf . get_f32_le () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_u32_le (self . active) ; for val in & self . actuator { __tmp . put_f32_le (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LOG_ERASE_DATA { pub target_system : u8 , pub target_component : u8 , } impl LOG_ERASE_DATA { pub const ENCODED_LEN : usize = 2usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for LOG_ERASE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for LOG_ERASE_DATA { type Message = MavMessage ; const ID : u32 = 121u32 ; const NAME : & 'static str = "LOG_ERASE" ; const EXTRA_CRC : u8 = 237u8 ; const ENCODED_LEN : usize = 2usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct COMMAND_LONG_DATA { pub param1 : f32 , pub param2 : f32 , pub param3 : f32 , pub param4 : f32 , pub param5 : f32 , pub param6 : f32 , pub param7 : f32 , pub command : MavCmd , pub target_system : u8 , pub target_component : u8 , pub confirmation : u8 , } impl COMMAND_LONG_DATA { pub const ENCODED_LEN : usize = 33usize ; pub const DEFAULT : Self = Self { param1 : 0.0_f32 , param2 : 0.0_f32 , param3 : 0.0_f32 , param4 : 0.0_f32 , param5 : 0.0_f32 , param6 : 0.0_f32 , param7 : 0.0_f32 , command : MavCmd :: DEFAULT , target_system : 0_u8 , target_component : 0_u8 , confirmation : 0_u8 , } ; } impl Default for COMMAND_LONG_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for COMMAND_LONG_DATA { type Message = MavMessage ; const ID : u32 = 76u32 ; const NAME : & 'static str = "COMMAND_LONG" ; const EXTRA_CRC : u8 = 152u8 ; const ENCODED_LEN : usize = 33usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . param1 = buf . get_f32_le () ; __struct . param2 = buf . get_f32_le () ; __struct . param3 = buf . get_f32_le () ; __struct . param4 = buf . get_f32_le () ; __struct . param5 = buf . get_f32_le () ; __struct . param6 = buf . get_f32_le () ; __struct . param7 = buf . get_f32_le () ; let tmp = buf . get_u16_le () ; __struct . command = FromPrimitive :: from_u16 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavCmd" , value : tmp as u32 }) ? ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . confirmation = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . param1) ; __tmp . put_f32_le (self . param2) ; __tmp . put_f32_le (self . param3) ; __tmp . put_f32_le (self . param4) ; __tmp . put_f32_le (self . param5) ; __tmp . put_f32_le (self . param6) ; __tmp . put_f32_le (self . param7) ; __tmp . put_u16_le (self . command as u16) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . confirmation) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CAMERA_INFORMATION_DATA { pub time_boot_ms : u32 , pub firmware_version : u32 , pub focal_length : f32 , pub sensor_size_h : f32 , pub sensor_size_v : f32 , pub flags : CameraCapFlags , pub resolution_h : u16 , pub resolution_v : u16 , pub cam_definition_version : u16 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub vendor_name : [u8 ; 32] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub model_name : [u8 ; 32] , pub lens_id : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub cam_definition_uri : [u8 ; 140] , } impl CAMERA_INFORMATION_DATA { pub const ENCODED_LEN : usize = 235usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , firmware_version : 0_u32 , focal_length : 0.0_f32 , sensor_size_h : 0.0_f32 , sensor_size_v : 0.0_f32 , flags : CameraCapFlags :: DEFAULT , resolution_h : 0_u16 , resolution_v : 0_u16 , cam_definition_version : 0_u16 , vendor_name : [0_u8 ; 32usize] , model_name : [0_u8 ; 32usize] , lens_id : 0_u8 , cam_definition_uri : [0_u8 ; 140usize] , } ; } impl Default for CAMERA_INFORMATION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CAMERA_INFORMATION_DATA { type Message = MavMessage ; const ID : u32 = 259u32 ; const NAME : & 'static str = "CAMERA_INFORMATION" ; const EXTRA_CRC : u8 = 92u8 ; const ENCODED_LEN : usize = 235usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . firmware_version = buf . get_u32_le () ; __struct . focal_length = buf . get_f32_le () ; __struct . sensor_size_h = buf . get_f32_le () ; __struct . sensor_size_v = buf . get_f32_le () ; let tmp = buf . get_u32_le () ; __struct . flags = CameraCapFlags :: from_bits (tmp & CameraCapFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "CameraCapFlags" , value : tmp as u32 }) ? ; __struct . resolution_h = buf . get_u16_le () ; __struct . resolution_v = buf . get_u16_le () ; __struct . cam_definition_version = buf . get_u16_le () ; for v in & mut __struct . vendor_name { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . model_name { let val = buf . get_u8 () ; * v = val ; } __struct . lens_id = buf . get_u8 () ; for v in & mut __struct . cam_definition_uri { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_u32_le (self . firmware_version) ; __tmp . put_f32_le (self . focal_length) ; __tmp . put_f32_le (self . sensor_size_h) ; __tmp . put_f32_le (self . sensor_size_v) ; __tmp . put_u32_le (self . flags . bits ()) ; __tmp . put_u16_le (self . resolution_h) ; __tmp . put_u16_le (self . resolution_v) ; __tmp . put_u16_le (self . cam_definition_version) ; for val in & self . vendor_name { __tmp . put_u8 (* val) ; } for val in & self . model_name { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . lens_id) ; for val in & self . cam_definition_uri { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct DISTANCE_SENSOR_DATA { pub time_boot_ms : u32 , pub min_distance : u16 , pub max_distance : u16 , pub current_distance : u16 , pub mavtype : MavDistanceSensor , pub id : u8 , pub orientation : MavSensorOrientation , pub covariance : u8 , } impl DISTANCE_SENSOR_DATA { pub const ENCODED_LEN : usize = 14usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , min_distance : 0_u16 , max_distance : 0_u16 , current_distance : 0_u16 , mavtype : MavDistanceSensor :: DEFAULT , id : 0_u8 , orientation : MavSensorOrientation :: DEFAULT , covariance : 0_u8 , } ; } impl Default for DISTANCE_SENSOR_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for DISTANCE_SENSOR_DATA { type Message = MavMessage ; const ID : u32 = 132u32 ; const NAME : & 'static str = "DISTANCE_SENSOR" ; const EXTRA_CRC : u8 = 85u8 ; const ENCODED_LEN : usize = 14usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . min_distance = buf . get_u16_le () ; __struct . max_distance = buf . get_u16_le () ; __struct . current_distance = buf . get_u16_le () ; let tmp = buf . get_u8 () ; __struct . mavtype = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavDistanceSensor" , value : tmp as u32 }) ? ; __struct . id = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . orientation = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavSensorOrientation" , value : tmp as u32 }) ? ; __struct . covariance = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_u16_le (self . min_distance) ; __tmp . put_u16_le (self . max_distance) ; __tmp . put_u16_le (self . current_distance) ; __tmp . put_u8 (self . mavtype as u8) ; __tmp . put_u8 (self . id) ; __tmp . put_u8 (self . orientation as u8) ; __tmp . put_u8 (self . covariance) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct UTM_GLOBAL_POSITION_DATA { pub time : u64 , pub lat : i32 , pub lon : i32 , pub alt : i32 , pub relative_alt : i32 , pub next_lat : i32 , pub next_lon : i32 , pub next_alt : i32 , pub vx : i16 , pub vy : i16 , pub vz : i16 , pub h_acc : u16 , pub v_acc : u16 , pub vel_acc : u16 , pub update_rate : u16 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub uas_id : [u8 ; 18] , pub flight_state : UtmFlightState , pub flags : UtmDataAvailFlags , } impl UTM_GLOBAL_POSITION_DATA { pub const ENCODED_LEN : usize = 70usize ; pub const DEFAULT : Self = Self { time : 0_u64 , lat : 0_i32 , lon : 0_i32 , alt : 0_i32 , relative_alt : 0_i32 , next_lat : 0_i32 , next_lon : 0_i32 , next_alt : 0_i32 , vx : 0_i16 , vy : 0_i16 , vz : 0_i16 , h_acc : 0_u16 , v_acc : 0_u16 , vel_acc : 0_u16 , update_rate : 0_u16 , uas_id : [0_u8 ; 18usize] , flight_state : UtmFlightState :: DEFAULT , flags : UtmDataAvailFlags :: DEFAULT , } ; } impl Default for UTM_GLOBAL_POSITION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for UTM_GLOBAL_POSITION_DATA { type Message = MavMessage ; const ID : u32 = 340u32 ; const NAME : & 'static str = "UTM_GLOBAL_POSITION" ; const EXTRA_CRC : u8 = 99u8 ; const ENCODED_LEN : usize = 70usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time = buf . get_u64_le () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . alt = buf . get_i32_le () ; __struct . relative_alt = buf . get_i32_le () ; __struct . next_lat = buf . get_i32_le () ; __struct . next_lon = buf . get_i32_le () ; __struct . next_alt = buf . get_i32_le () ; __struct . vx = buf . get_i16_le () ; __struct . vy = buf . get_i16_le () ; __struct . vz = buf . get_i16_le () ; __struct . h_acc = buf . get_u16_le () ; __struct . v_acc = buf . get_u16_le () ; __struct . vel_acc = buf . get_u16_le () ; __struct . update_rate = buf . get_u16_le () ; for v in & mut __struct . uas_id { let val = buf . get_u8 () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . flight_state = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "UtmFlightState" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . flags = UtmDataAvailFlags :: from_bits (tmp & UtmDataAvailFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "UtmDataAvailFlags" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_i32_le (self . alt) ; __tmp . put_i32_le (self . relative_alt) ; __tmp . put_i32_le (self . next_lat) ; __tmp . put_i32_le (self . next_lon) ; __tmp . put_i32_le (self . next_alt) ; __tmp . put_i16_le (self . vx) ; __tmp . put_i16_le (self . vy) ; __tmp . put_i16_le (self . vz) ; __tmp . put_u16_le (self . h_acc) ; __tmp . put_u16_le (self . v_acc) ; __tmp . put_u16_le (self . vel_acc) ; __tmp . put_u16_le (self . update_rate) ; for val in & self . uas_id { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . flight_state as u8) ; __tmp . put_u8 (self . flags . bits ()) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ATTITUDE_DATA { pub time_boot_ms : u32 , pub roll : f32 , pub pitch : f32 , pub yaw : f32 , pub rollspeed : f32 , pub pitchspeed : f32 , pub yawspeed : f32 , } impl ATTITUDE_DATA { pub const ENCODED_LEN : usize = 28usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , roll : 0.0_f32 , pitch : 0.0_f32 , yaw : 0.0_f32 , rollspeed : 0.0_f32 , pitchspeed : 0.0_f32 , yawspeed : 0.0_f32 , } ; } impl Default for ATTITUDE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ATTITUDE_DATA { type Message = MavMessage ; const ID : u32 = 30u32 ; const NAME : & 'static str = "ATTITUDE" ; const EXTRA_CRC : u8 = 39u8 ; const ENCODED_LEN : usize = 28usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . roll = buf . get_f32_le () ; __struct . pitch = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; __struct . rollspeed = buf . get_f32_le () ; __struct . pitchspeed = buf . get_f32_le () ; __struct . yawspeed = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . roll) ; __tmp . put_f32_le (self . pitch) ; __tmp . put_f32_le (self . yaw) ; __tmp . put_f32_le (self . rollspeed) ; __tmp . put_f32_le (self . pitchspeed) ; __tmp . put_f32_le (self . yawspeed) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct WIND_COV_DATA { pub time_usec : u64 , pub wind_x : f32 , pub wind_y : f32 , pub wind_z : f32 , pub var_horiz : f32 , pub var_vert : f32 , pub wind_alt : f32 , pub horiz_accuracy : f32 , pub vert_accuracy : f32 , } impl WIND_COV_DATA { pub const ENCODED_LEN : usize = 40usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , wind_x : 0.0_f32 , wind_y : 0.0_f32 , wind_z : 0.0_f32 , var_horiz : 0.0_f32 , var_vert : 0.0_f32 , wind_alt : 0.0_f32 , horiz_accuracy : 0.0_f32 , vert_accuracy : 0.0_f32 , } ; } impl Default for WIND_COV_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for WIND_COV_DATA { type Message = MavMessage ; const ID : u32 = 231u32 ; const NAME : & 'static str = "WIND_COV" ; const EXTRA_CRC : u8 = 105u8 ; const ENCODED_LEN : usize = 40usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . wind_x = buf . get_f32_le () ; __struct . wind_y = buf . get_f32_le () ; __struct . wind_z = buf . get_f32_le () ; __struct . var_horiz = buf . get_f32_le () ; __struct . var_vert = buf . get_f32_le () ; __struct . wind_alt = buf . get_f32_le () ; __struct . horiz_accuracy = buf . get_f32_le () ; __struct . vert_accuracy = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . wind_x) ; __tmp . put_f32_le (self . wind_y) ; __tmp . put_f32_le (self . wind_z) ; __tmp . put_f32_le (self . var_horiz) ; __tmp . put_f32_le (self . var_vert) ; __tmp . put_f32_le (self . wind_alt) ; __tmp . put_f32_le (self . horiz_accuracy) ; __tmp . put_f32_le (self . vert_accuracy) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MEMORY_VECT_DATA { pub address : u16 , pub ver : u8 , pub mavtype : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub value : [i8 ; 32] , } impl MEMORY_VECT_DATA { pub const ENCODED_LEN : usize = 36usize ; pub const DEFAULT : Self = Self { address : 0_u16 , ver : 0_u8 , mavtype : 0_u8 , value : [0_i8 ; 32usize] , } ; } impl Default for MEMORY_VECT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MEMORY_VECT_DATA { type Message = MavMessage ; const ID : u32 = 249u32 ; const NAME : & 'static str = "MEMORY_VECT" ; const EXTRA_CRC : u8 = 204u8 ; const ENCODED_LEN : usize = 36usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . address = buf . get_u16_le () ; __struct . ver = buf . get_u8 () ; __struct . mavtype = buf . get_u8 () ; for v in & mut __struct . value { let val = buf . get_i8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . address) ; __tmp . put_u8 (self . ver) ; __tmp . put_u8 (self . mavtype) ; for val in & self . value { __tmp . put_i8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GIMBAL_MANAGER_SET_ATTITUDE_DATA { pub flags : GimbalManagerFlags , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub q : [f32 ; 4] , pub angular_velocity_x : f32 , pub angular_velocity_y : f32 , pub angular_velocity_z : f32 , pub target_system : u8 , pub target_component : u8 , pub gimbal_device_id : u8 , } impl GIMBAL_MANAGER_SET_ATTITUDE_DATA { pub const ENCODED_LEN : usize = 35usize ; pub const DEFAULT : Self = Self { flags : GimbalManagerFlags :: DEFAULT , q : [0.0_f32 ; 4usize] , angular_velocity_x : 0.0_f32 , angular_velocity_y : 0.0_f32 , angular_velocity_z : 0.0_f32 , target_system : 0_u8 , target_component : 0_u8 , gimbal_device_id : 0_u8 , } ; } impl Default for GIMBAL_MANAGER_SET_ATTITUDE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GIMBAL_MANAGER_SET_ATTITUDE_DATA { type Message = MavMessage ; const ID : u32 = 282u32 ; const NAME : & 'static str = "GIMBAL_MANAGER_SET_ATTITUDE" ; const EXTRA_CRC : u8 = 123u8 ; const ENCODED_LEN : usize = 35usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u32_le () ; __struct . flags = FromPrimitive :: from_u32 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "GimbalManagerFlags" , value : tmp as u32 }) ? ; for v in & mut __struct . q { let val = buf . get_f32_le () ; * v = val ; } __struct . angular_velocity_x = buf . get_f32_le () ; __struct . angular_velocity_y = buf . get_f32_le () ; __struct . angular_velocity_z = buf . get_f32_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . gimbal_device_id = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . flags as u32) ; for val in & self . q { __tmp . put_f32_le (* val) ; } __tmp . put_f32_le (self . angular_velocity_x) ; __tmp . put_f32_le (self . angular_velocity_y) ; __tmp . put_f32_le (self . angular_velocity_z) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . gimbal_device_id) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MISSION_CLEAR_ALL_DATA { pub target_system : u8 , pub target_component : u8 , } impl MISSION_CLEAR_ALL_DATA { pub const ENCODED_LEN : usize = 2usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for MISSION_CLEAR_ALL_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MISSION_CLEAR_ALL_DATA { type Message = MavMessage ; const ID : u32 = 45u32 ; const NAME : & 'static str = "MISSION_CLEAR_ALL" ; const EXTRA_CRC : u8 = 232u8 ; const ENCODED_LEN : usize = 2usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct DATA_TRANSMISSION_HANDSHAKE_DATA { pub size : u32 , pub width : u16 , pub height : u16 , pub packets : u16 , pub mavtype : MavlinkDataStreamType , pub payload : u8 , pub jpg_quality : u8 , } impl DATA_TRANSMISSION_HANDSHAKE_DATA { pub const ENCODED_LEN : usize = 13usize ; pub const DEFAULT : Self = Self { size : 0_u32 , width : 0_u16 , height : 0_u16 , packets : 0_u16 , mavtype : MavlinkDataStreamType :: DEFAULT , payload : 0_u8 , jpg_quality : 0_u8 , } ; } impl Default for DATA_TRANSMISSION_HANDSHAKE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for DATA_TRANSMISSION_HANDSHAKE_DATA { type Message = MavMessage ; const ID : u32 = 130u32 ; const NAME : & 'static str = "DATA_TRANSMISSION_HANDSHAKE" ; const EXTRA_CRC : u8 = 29u8 ; const ENCODED_LEN : usize = 13usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . size = buf . get_u32_le () ; __struct . width = buf . get_u16_le () ; __struct . height = buf . get_u16_le () ; __struct . packets = buf . get_u16_le () ; let tmp = buf . get_u8 () ; __struct . mavtype = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavlinkDataStreamType" , value : tmp as u32 }) ? ; __struct . payload = buf . get_u8 () ; __struct . jpg_quality = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . size) ; __tmp . put_u16_le (self . width) ; __tmp . put_u16_le (self . height) ; __tmp . put_u16_le (self . packets) ; __tmp . put_u8 (self . mavtype as u8) ; __tmp . put_u8 (self . payload) ; __tmp . put_u8 (self . jpg_quality) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CAN_FILTER_MODIFY_DATA { # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub ids : [u16 ; 16] , pub target_system : u8 , pub target_component : u8 , pub bus : u8 , pub operation : CanFilterOp , pub num_ids : u8 , } impl CAN_FILTER_MODIFY_DATA { pub const ENCODED_LEN : usize = 37usize ; pub const DEFAULT : Self = Self { ids : [0_u16 ; 16usize] , target_system : 0_u8 , target_component : 0_u8 , bus : 0_u8 , operation : CanFilterOp :: DEFAULT , num_ids : 0_u8 , } ; } impl Default for CAN_FILTER_MODIFY_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CAN_FILTER_MODIFY_DATA { type Message = MavMessage ; const ID : u32 = 388u32 ; const NAME : & 'static str = "CAN_FILTER_MODIFY" ; const EXTRA_CRC : u8 = 8u8 ; const ENCODED_LEN : usize = 37usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; for v in & mut __struct . ids { let val = buf . get_u16_le () ; * v = val ; } __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . bus = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . operation = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "CanFilterOp" , value : tmp as u32 }) ? ; __struct . num_ids = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; for val in & self . ids { __tmp . put_u16_le (* val) ; } __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . bus) ; __tmp . put_u8 (self . operation as u8) ; __tmp . put_u8 (self . num_ids) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LOCAL_POSITION_NED_DATA { pub time_boot_ms : u32 , pub x : f32 , pub y : f32 , pub z : f32 , pub vx : f32 , pub vy : f32 , pub vz : f32 , } impl LOCAL_POSITION_NED_DATA { pub const ENCODED_LEN : usize = 28usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , x : 0.0_f32 , y : 0.0_f32 , z : 0.0_f32 , vx : 0.0_f32 , vy : 0.0_f32 , vz : 0.0_f32 , } ; } impl Default for LOCAL_POSITION_NED_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for LOCAL_POSITION_NED_DATA { type Message = MavMessage ; const ID : u32 = 32u32 ; const NAME : & 'static str = "LOCAL_POSITION_NED" ; const EXTRA_CRC : u8 = 185u8 ; const ENCODED_LEN : usize = 28usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . x = buf . get_f32_le () ; __struct . y = buf . get_f32_le () ; __struct . z = buf . get_f32_le () ; __struct . vx = buf . get_f32_le () ; __struct . vy = buf . get_f32_le () ; __struct . vz = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; __tmp . put_f32_le (self . vx) ; __tmp . put_f32_le (self . vy) ; __tmp . put_f32_le (self . vz) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GPS_INJECT_DATA_DATA { pub target_system : u8 , pub target_component : u8 , pub len : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub data : [u8 ; 110] , } impl GPS_INJECT_DATA_DATA { pub const ENCODED_LEN : usize = 113usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , len : 0_u8 , data : [0_u8 ; 110usize] , } ; } impl Default for GPS_INJECT_DATA_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GPS_INJECT_DATA_DATA { type Message = MavMessage ; const ID : u32 = 123u32 ; const NAME : & 'static str = "GPS_INJECT_DATA" ; const EXTRA_CRC : u8 = 250u8 ; const ENCODED_LEN : usize = 113usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . len = buf . get_u8 () ; for v in & mut __struct . data { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . len) ; for val in & self . data { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HIL_STATE_QUATERNION_DATA { pub time_usec : u64 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub attitude_quaternion : [f32 ; 4] , pub rollspeed : f32 , pub pitchspeed : f32 , pub yawspeed : f32 , pub lat : i32 , pub lon : i32 , pub alt : i32 , pub vx : i16 , pub vy : i16 , pub vz : i16 , pub ind_airspeed : u16 , pub true_airspeed : u16 , pub xacc : i16 , pub yacc : i16 , pub zacc : i16 , } impl HIL_STATE_QUATERNION_DATA { pub const ENCODED_LEN : usize = 64usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , attitude_quaternion : [0.0_f32 ; 4usize] , rollspeed : 0.0_f32 , pitchspeed : 0.0_f32 , yawspeed : 0.0_f32 , lat : 0_i32 , lon : 0_i32 , alt : 0_i32 , vx : 0_i16 , vy : 0_i16 , vz : 0_i16 , ind_airspeed : 0_u16 , true_airspeed : 0_u16 , xacc : 0_i16 , yacc : 0_i16 , zacc : 0_i16 , } ; } impl Default for HIL_STATE_QUATERNION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for HIL_STATE_QUATERNION_DATA { type Message = MavMessage ; const ID : u32 = 115u32 ; const NAME : & 'static str = "HIL_STATE_QUATERNION" ; const EXTRA_CRC : u8 = 4u8 ; const ENCODED_LEN : usize = 64usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; for v in & mut __struct . attitude_quaternion { let val = buf . get_f32_le () ; * v = val ; } __struct . rollspeed = buf . get_f32_le () ; __struct . pitchspeed = buf . get_f32_le () ; __struct . yawspeed = buf . get_f32_le () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . alt = buf . get_i32_le () ; __struct . vx = buf . get_i16_le () ; __struct . vy = buf . get_i16_le () ; __struct . vz = buf . get_i16_le () ; __struct . ind_airspeed = buf . get_u16_le () ; __struct . true_airspeed = buf . get_u16_le () ; __struct . xacc = buf . get_i16_le () ; __struct . yacc = buf . get_i16_le () ; __struct . zacc = buf . get_i16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; for val in & self . attitude_quaternion { __tmp . put_f32_le (* val) ; } __tmp . put_f32_le (self . rollspeed) ; __tmp . put_f32_le (self . pitchspeed) ; __tmp . put_f32_le (self . yawspeed) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_i32_le (self . alt) ; __tmp . put_i16_le (self . vx) ; __tmp . put_i16_le (self . vy) ; __tmp . put_i16_le (self . vz) ; __tmp . put_u16_le (self . ind_airspeed) ; __tmp . put_u16_le (self . true_airspeed) ; __tmp . put_i16_le (self . xacc) ; __tmp . put_i16_le (self . yacc) ; __tmp . put_i16_le (self . zacc) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SAFETY_SET_ALLOWED_AREA_DATA { pub p1x : f32 , pub p1y : f32 , pub p1z : f32 , pub p2x : f32 , pub p2y : f32 , pub p2z : f32 , pub target_system : u8 , pub target_component : u8 , pub frame : MavFrame , } impl SAFETY_SET_ALLOWED_AREA_DATA { pub const ENCODED_LEN : usize = 27usize ; pub const DEFAULT : Self = Self { p1x : 0.0_f32 , p1y : 0.0_f32 , p1z : 0.0_f32 , p2x : 0.0_f32 , p2y : 0.0_f32 , p2z : 0.0_f32 , target_system : 0_u8 , target_component : 0_u8 , frame : MavFrame :: DEFAULT , } ; } impl Default for SAFETY_SET_ALLOWED_AREA_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SAFETY_SET_ALLOWED_AREA_DATA { type Message = MavMessage ; const ID : u32 = 54u32 ; const NAME : & 'static str = "SAFETY_SET_ALLOWED_AREA" ; const EXTRA_CRC : u8 = 15u8 ; const ENCODED_LEN : usize = 27usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . p1x = buf . get_f32_le () ; __struct . p1y = buf . get_f32_le () ; __struct . p1z = buf . get_f32_le () ; __struct . p2x = buf . get_f32_le () ; __struct . p2y = buf . get_f32_le () ; __struct . p2z = buf . get_f32_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . frame = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavFrame" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . p1x) ; __tmp . put_f32_le (self . p1y) ; __tmp . put_f32_le (self . p1z) ; __tmp . put_f32_le (self . p2x) ; __tmp . put_f32_le (self . p2y) ; __tmp . put_f32_le (self . p2z) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . frame as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct FENCE_STATUS_DATA { pub breach_time : u32 , pub breach_count : u16 , pub breach_status : u8 , pub breach_type : FenceBreach , } impl FENCE_STATUS_DATA { pub const ENCODED_LEN : usize = 8usize ; pub const DEFAULT : Self = Self { breach_time : 0_u32 , breach_count : 0_u16 , breach_status : 0_u8 , breach_type : FenceBreach :: DEFAULT , } ; } impl Default for FENCE_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for FENCE_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 162u32 ; const NAME : & 'static str = "FENCE_STATUS" ; const EXTRA_CRC : u8 = 189u8 ; const ENCODED_LEN : usize = 8usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . breach_time = buf . get_u32_le () ; __struct . breach_count = buf . get_u16_le () ; __struct . breach_status = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . breach_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "FenceBreach" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . breach_time) ; __tmp . put_u16_le (self . breach_count) ; __tmp . put_u8 (self . breach_status) ; __tmp . put_u8 (self . breach_type as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct OPTICAL_FLOW_DATA { pub time_usec : u64 , pub flow_comp_m_x : f32 , pub flow_comp_m_y : f32 , pub ground_distance : f32 , pub flow_x : i16 , pub flow_y : i16 , pub sensor_id : u8 , pub quality : u8 , } impl OPTICAL_FLOW_DATA { pub const ENCODED_LEN : usize = 26usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , flow_comp_m_x : 0.0_f32 , flow_comp_m_y : 0.0_f32 , ground_distance : 0.0_f32 , flow_x : 0_i16 , flow_y : 0_i16 , sensor_id : 0_u8 , quality : 0_u8 , } ; } impl Default for OPTICAL_FLOW_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for OPTICAL_FLOW_DATA { type Message = MavMessage ; const ID : u32 = 100u32 ; const NAME : & 'static str = "OPTICAL_FLOW" ; const EXTRA_CRC : u8 = 175u8 ; const ENCODED_LEN : usize = 26usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . flow_comp_m_x = buf . get_f32_le () ; __struct . flow_comp_m_y = buf . get_f32_le () ; __struct . ground_distance = buf . get_f32_le () ; __struct . flow_x = buf . get_i16_le () ; __struct . flow_y = buf . get_i16_le () ; __struct . sensor_id = buf . get_u8 () ; __struct . quality = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . flow_comp_m_x) ; __tmp . put_f32_le (self . flow_comp_m_y) ; __tmp . put_f32_le (self . ground_distance) ; __tmp . put_i16_le (self . flow_x) ; __tmp . put_i16_le (self . flow_y) ; __tmp . put_u8 (self . sensor_id) ; __tmp . put_u8 (self . quality) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct RADIO_STATUS_DATA { pub rxerrors : u16 , pub fixed : u16 , pub rssi : u8 , pub remrssi : u8 , pub txbuf : u8 , pub noise : u8 , pub remnoise : u8 , } impl RADIO_STATUS_DATA { pub const ENCODED_LEN : usize = 9usize ; pub const DEFAULT : Self = Self { rxerrors : 0_u16 , fixed : 0_u16 , rssi : 0_u8 , remrssi : 0_u8 , txbuf : 0_u8 , noise : 0_u8 , remnoise : 0_u8 , } ; } impl Default for RADIO_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for RADIO_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 109u32 ; const NAME : & 'static str = "RADIO_STATUS" ; const EXTRA_CRC : u8 = 185u8 ; const ENCODED_LEN : usize = 9usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . rxerrors = buf . get_u16_le () ; __struct . fixed = buf . get_u16_le () ; __struct . rssi = buf . get_u8 () ; __struct . remrssi = buf . get_u8 () ; __struct . txbuf = buf . get_u8 () ; __struct . noise = buf . get_u8 () ; __struct . remnoise = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . rxerrors) ; __tmp . put_u16_le (self . fixed) ; __tmp . put_u8 (self . rssi) ; __tmp . put_u8 (self . remrssi) ; __tmp . put_u8 (self . txbuf) ; __tmp . put_u8 (self . noise) ; __tmp . put_u8 (self . remnoise) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SET_POSITION_TARGET_LOCAL_NED_DATA { pub time_boot_ms : u32 , pub x : f32 , pub y : f32 , pub z : f32 , pub vx : f32 , pub vy : f32 , pub vz : f32 , pub afx : f32 , pub afy : f32 , pub afz : f32 , pub yaw : f32 , pub yaw_rate : f32 , pub type_mask : PositionTargetTypemask , pub target_system : u8 , pub target_component : u8 , pub coordinate_frame : MavFrame , } impl SET_POSITION_TARGET_LOCAL_NED_DATA { pub const ENCODED_LEN : usize = 53usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , x : 0.0_f32 , y : 0.0_f32 , z : 0.0_f32 , vx : 0.0_f32 , vy : 0.0_f32 , vz : 0.0_f32 , afx : 0.0_f32 , afy : 0.0_f32 , afz : 0.0_f32 , yaw : 0.0_f32 , yaw_rate : 0.0_f32 , type_mask : PositionTargetTypemask :: DEFAULT , target_system : 0_u8 , target_component : 0_u8 , coordinate_frame : MavFrame :: DEFAULT , } ; } impl Default for SET_POSITION_TARGET_LOCAL_NED_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SET_POSITION_TARGET_LOCAL_NED_DATA { type Message = MavMessage ; const ID : u32 = 84u32 ; const NAME : & 'static str = "SET_POSITION_TARGET_LOCAL_NED" ; const EXTRA_CRC : u8 = 143u8 ; const ENCODED_LEN : usize = 53usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . x = buf . get_f32_le () ; __struct . y = buf . get_f32_le () ; __struct . z = buf . get_f32_le () ; __struct . vx = buf . get_f32_le () ; __struct . vy = buf . get_f32_le () ; __struct . vz = buf . get_f32_le () ; __struct . afx = buf . get_f32_le () ; __struct . afy = buf . get_f32_le () ; __struct . afz = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; __struct . yaw_rate = buf . get_f32_le () ; let tmp = buf . get_u16_le () ; __struct . type_mask = PositionTargetTypemask :: from_bits (tmp & PositionTargetTypemask :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "PositionTargetTypemask" , value : tmp as u32 }) ? ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . coordinate_frame = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavFrame" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; __tmp . put_f32_le (self . vx) ; __tmp . put_f32_le (self . vy) ; __tmp . put_f32_le (self . vz) ; __tmp . put_f32_le (self . afx) ; __tmp . put_f32_le (self . afy) ; __tmp . put_f32_le (self . afz) ; __tmp . put_f32_le (self . yaw) ; __tmp . put_f32_le (self . yaw_rate) ; __tmp . put_u16_le (self . type_mask . bits ()) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . coordinate_frame as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct RESOURCE_REQUEST_DATA { pub request_id : u8 , pub uri_type : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub uri : [u8 ; 120] , pub transfer_type : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub storage : [u8 ; 120] , } impl RESOURCE_REQUEST_DATA { pub const ENCODED_LEN : usize = 243usize ; pub const DEFAULT : Self = Self { request_id : 0_u8 , uri_type : 0_u8 , uri : [0_u8 ; 120usize] , transfer_type : 0_u8 , storage : [0_u8 ; 120usize] , } ; } impl Default for RESOURCE_REQUEST_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for RESOURCE_REQUEST_DATA { type Message = MavMessage ; const ID : u32 = 142u32 ; const NAME : & 'static str = "RESOURCE_REQUEST" ; const EXTRA_CRC : u8 = 72u8 ; const ENCODED_LEN : usize = 243usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . request_id = buf . get_u8 () ; __struct . uri_type = buf . get_u8 () ; for v in & mut __struct . uri { let val = buf . get_u8 () ; * v = val ; } __struct . transfer_type = buf . get_u8 () ; for v in & mut __struct . storage { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . request_id) ; __tmp . put_u8 (self . uri_type) ; for val in & self . uri { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . transfer_type) ; for val in & self . storage { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct UAVIONIX_ADSB_OUT_DYNAMIC_DATA { pub utcTime : u32 , pub gpsLat : i32 , pub gpsLon : i32 , pub gpsAlt : i32 , pub baroAltMSL : i32 , pub accuracyHor : u32 , pub accuracyVert : u16 , pub accuracyVel : u16 , pub velVert : i16 , pub velNS : i16 , pub VelEW : i16 , pub state : UavionixAdsbOutDynamicState , pub squawk : u16 , pub gpsFix : UavionixAdsbOutDynamicGpsFix , pub numSats : u8 , pub emergencyStatus : UavionixAdsbEmergencyStatus , } impl UAVIONIX_ADSB_OUT_DYNAMIC_DATA { pub const ENCODED_LEN : usize = 41usize ; pub const DEFAULT : Self = Self { utcTime : 0_u32 , gpsLat : 0_i32 , gpsLon : 0_i32 , gpsAlt : 0_i32 , baroAltMSL : 0_i32 , accuracyHor : 0_u32 , accuracyVert : 0_u16 , accuracyVel : 0_u16 , velVert : 0_i16 , velNS : 0_i16 , VelEW : 0_i16 , state : UavionixAdsbOutDynamicState :: DEFAULT , squawk : 0_u16 , gpsFix : UavionixAdsbOutDynamicGpsFix :: DEFAULT , numSats : 0_u8 , emergencyStatus : UavionixAdsbEmergencyStatus :: DEFAULT , } ; } impl Default for UAVIONIX_ADSB_OUT_DYNAMIC_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for UAVIONIX_ADSB_OUT_DYNAMIC_DATA { type Message = MavMessage ; const ID : u32 = 10002u32 ; const NAME : & 'static str = "UAVIONIX_ADSB_OUT_DYNAMIC" ; const EXTRA_CRC : u8 = 186u8 ; const ENCODED_LEN : usize = 41usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . utcTime = buf . get_u32_le () ; __struct . gpsLat = buf . get_i32_le () ; __struct . gpsLon = buf . get_i32_le () ; __struct . gpsAlt = buf . get_i32_le () ; __struct . baroAltMSL = buf . get_i32_le () ; __struct . accuracyHor = buf . get_u32_le () ; __struct . accuracyVert = buf . get_u16_le () ; __struct . accuracyVel = buf . get_u16_le () ; __struct . velVert = buf . get_i16_le () ; __struct . velNS = buf . get_i16_le () ; __struct . VelEW = buf . get_i16_le () ; let tmp = buf . get_u16_le () ; __struct . state = UavionixAdsbOutDynamicState :: from_bits (tmp & UavionixAdsbOutDynamicState :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "UavionixAdsbOutDynamicState" , value : tmp as u32 }) ? ; __struct . squawk = buf . get_u16_le () ; let tmp = buf . get_u8 () ; __struct . gpsFix = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "UavionixAdsbOutDynamicGpsFix" , value : tmp as u32 }) ? ; __struct . numSats = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . emergencyStatus = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "UavionixAdsbEmergencyStatus" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . utcTime) ; __tmp . put_i32_le (self . gpsLat) ; __tmp . put_i32_le (self . gpsLon) ; __tmp . put_i32_le (self . gpsAlt) ; __tmp . put_i32_le (self . baroAltMSL) ; __tmp . put_u32_le (self . accuracyHor) ; __tmp . put_u16_le (self . accuracyVert) ; __tmp . put_u16_le (self . accuracyVel) ; __tmp . put_i16_le (self . velVert) ; __tmp . put_i16_le (self . velNS) ; __tmp . put_i16_le (self . VelEW) ; __tmp . put_u16_le (self . state . bits ()) ; __tmp . put_u16_le (self . squawk) ; __tmp . put_u8 (self . gpsFix as u8) ; __tmp . put_u8 (self . numSats) ; __tmp . put_u8 (self . emergencyStatus as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct TRAJECTORY_REPRESENTATION_BEZIER_DATA { pub time_usec : u64 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub pos_x : [f32 ; 5] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub pos_y : [f32 ; 5] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub pos_z : [f32 ; 5] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub delta : [f32 ; 5] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub pos_yaw : [f32 ; 5] , pub valid_points : u8 , } impl TRAJECTORY_REPRESENTATION_BEZIER_DATA { pub const ENCODED_LEN : usize = 109usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , pos_x : [0.0_f32 ; 5usize] , pos_y : [0.0_f32 ; 5usize] , pos_z : [0.0_f32 ; 5usize] , delta : [0.0_f32 ; 5usize] , pos_yaw : [0.0_f32 ; 5usize] , valid_points : 0_u8 , } ; } impl Default for TRAJECTORY_REPRESENTATION_BEZIER_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for TRAJECTORY_REPRESENTATION_BEZIER_DATA { type Message = MavMessage ; const ID : u32 = 333u32 ; const NAME : & 'static str = "TRAJECTORY_REPRESENTATION_BEZIER" ; const EXTRA_CRC : u8 = 231u8 ; const ENCODED_LEN : usize = 109usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; for v in & mut __struct . pos_x { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . pos_y { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . pos_z { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . delta { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . pos_yaw { let val = buf . get_f32_le () ; * v = val ; } __struct . valid_points = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; for val in & self . pos_x { __tmp . put_f32_le (* val) ; } for val in & self . pos_y { __tmp . put_f32_le (* val) ; } for val in & self . pos_z { __tmp . put_f32_le (* val) ; } for val in & self . delta { __tmp . put_f32_le (* val) ; } for val in & self . pos_yaw { __tmp . put_f32_le (* val) ; } __tmp . put_u8 (self . valid_points) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GPS_STATUS_DATA { pub satellites_visible : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub satellite_prn : [u8 ; 20] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub satellite_used : [u8 ; 20] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub satellite_elevation : [u8 ; 20] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub satellite_azimuth : [u8 ; 20] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub satellite_snr : [u8 ; 20] , } impl GPS_STATUS_DATA { pub const ENCODED_LEN : usize = 101usize ; pub const DEFAULT : Self = Self { satellites_visible : 0_u8 , satellite_prn : [0_u8 ; 20usize] , satellite_used : [0_u8 ; 20usize] , satellite_elevation : [0_u8 ; 20usize] , satellite_azimuth : [0_u8 ; 20usize] , satellite_snr : [0_u8 ; 20usize] , } ; } impl Default for GPS_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GPS_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 25u32 ; const NAME : & 'static str = "GPS_STATUS" ; const EXTRA_CRC : u8 = 23u8 ; const ENCODED_LEN : usize = 101usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . satellites_visible = buf . get_u8 () ; for v in & mut __struct . satellite_prn { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . satellite_used { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . satellite_elevation { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . satellite_azimuth { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . satellite_snr { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . satellites_visible) ; for val in & self . satellite_prn { __tmp . put_u8 (* val) ; } for val in & self . satellite_used { __tmp . put_u8 (* val) ; } for val in & self . satellite_elevation { __tmp . put_u8 (* val) ; } for val in & self . satellite_azimuth { __tmp . put_u8 (* val) ; } for val in & self . satellite_snr { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MISSION_REQUEST_PARTIAL_LIST_DATA { pub start_index : i16 , pub end_index : i16 , pub target_system : u8 , pub target_component : u8 , } impl MISSION_REQUEST_PARTIAL_LIST_DATA { pub const ENCODED_LEN : usize = 6usize ; pub const DEFAULT : Self = Self { start_index : 0_i16 , end_index : 0_i16 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for MISSION_REQUEST_PARTIAL_LIST_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MISSION_REQUEST_PARTIAL_LIST_DATA { type Message = MavMessage ; const ID : u32 = 37u32 ; const NAME : & 'static str = "MISSION_REQUEST_PARTIAL_LIST" ; const EXTRA_CRC : u8 = 212u8 ; const ENCODED_LEN : usize = 6usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . start_index = buf . get_i16_le () ; __struct . end_index = buf . get_i16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i16_le (self . start_index) ; __tmp . put_i16_le (self . end_index) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct AUTOPILOT_VERSION_DATA { pub capabilities : MavProtocolCapability , pub uid : u64 , pub flight_sw_version : u32 , pub middleware_sw_version : u32 , pub os_sw_version : u32 , pub board_version : u32 , pub vendor_id : u16 , pub product_id : u16 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub flight_custom_version : [u8 ; 8] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub middleware_custom_version : [u8 ; 8] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub os_custom_version : [u8 ; 8] , } impl AUTOPILOT_VERSION_DATA { pub const ENCODED_LEN : usize = 60usize ; pub const DEFAULT : Self = Self { capabilities : MavProtocolCapability :: DEFAULT , uid : 0_u64 , flight_sw_version : 0_u32 , middleware_sw_version : 0_u32 , os_sw_version : 0_u32 , board_version : 0_u32 , vendor_id : 0_u16 , product_id : 0_u16 , flight_custom_version : [0_u8 ; 8usize] , middleware_custom_version : [0_u8 ; 8usize] , os_custom_version : [0_u8 ; 8usize] , } ; } impl Default for AUTOPILOT_VERSION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for AUTOPILOT_VERSION_DATA { type Message = MavMessage ; const ID : u32 = 148u32 ; const NAME : & 'static str = "AUTOPILOT_VERSION" ; const EXTRA_CRC : u8 = 178u8 ; const ENCODED_LEN : usize = 60usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u64_le () ; __struct . capabilities = MavProtocolCapability :: from_bits (tmp & MavProtocolCapability :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "MavProtocolCapability" , value : tmp as u32 }) ? ; __struct . uid = buf . get_u64_le () ; __struct . flight_sw_version = buf . get_u32_le () ; __struct . middleware_sw_version = buf . get_u32_le () ; __struct . os_sw_version = buf . get_u32_le () ; __struct . board_version = buf . get_u32_le () ; __struct . vendor_id = buf . get_u16_le () ; __struct . product_id = buf . get_u16_le () ; for v in & mut __struct . flight_custom_version { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . middleware_custom_version { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . os_custom_version { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . capabilities . bits ()) ; __tmp . put_u64_le (self . uid) ; __tmp . put_u32_le (self . flight_sw_version) ; __tmp . put_u32_le (self . middleware_sw_version) ; __tmp . put_u32_le (self . os_sw_version) ; __tmp . put_u32_le (self . board_version) ; __tmp . put_u16_le (self . vendor_id) ; __tmp . put_u16_le (self . product_id) ; for val in & self . flight_custom_version { __tmp . put_u8 (* val) ; } for val in & self . middleware_custom_version { __tmp . put_u8 (* val) ; } for val in & self . os_custom_version { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct TUNNEL_DATA { pub payload_type : MavTunnelPayloadType , pub target_system : u8 , pub target_component : u8 , pub payload_length : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub payload : [u8 ; 128] , } impl TUNNEL_DATA { pub const ENCODED_LEN : usize = 133usize ; pub const DEFAULT : Self = Self { payload_type : MavTunnelPayloadType :: DEFAULT , target_system : 0_u8 , target_component : 0_u8 , payload_length : 0_u8 , payload : [0_u8 ; 128usize] , } ; } impl Default for TUNNEL_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for TUNNEL_DATA { type Message = MavMessage ; const ID : u32 = 385u32 ; const NAME : & 'static str = "TUNNEL" ; const EXTRA_CRC : u8 = 147u8 ; const ENCODED_LEN : usize = 133usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u16_le () ; __struct . payload_type = FromPrimitive :: from_u16 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavTunnelPayloadType" , value : tmp as u32 }) ? ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . payload_length = buf . get_u8 () ; for v in & mut __struct . payload { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . payload_type as u16) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . payload_length) ; for val in & self . payload { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct TERRAIN_DATA_DATA { pub lat : i32 , pub lon : i32 , pub grid_spacing : u16 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub data : [i16 ; 16] , pub gridbit : u8 , } impl TERRAIN_DATA_DATA { pub const ENCODED_LEN : usize = 43usize ; pub const DEFAULT : Self = Self { lat : 0_i32 , lon : 0_i32 , grid_spacing : 0_u16 , data : [0_i16 ; 16usize] , gridbit : 0_u8 , } ; } impl Default for TERRAIN_DATA_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for TERRAIN_DATA_DATA { type Message = MavMessage ; const ID : u32 = 134u32 ; const NAME : & 'static str = "TERRAIN_DATA" ; const EXTRA_CRC : u8 = 229u8 ; const ENCODED_LEN : usize = 43usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . grid_spacing = buf . get_u16_le () ; for v in & mut __struct . data { let val = buf . get_i16_le () ; * v = val ; } __struct . gridbit = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_u16_le (self . grid_spacing) ; for val in & self . data { __tmp . put_i16_le (* val) ; } __tmp . put_u8 (self . gridbit) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct UAVCAN_NODE_STATUS_DATA { pub time_usec : u64 , pub uptime_sec : u32 , pub vendor_specific_status_code : u16 , pub health : UavcanNodeHealth , pub mode : UavcanNodeMode , pub sub_mode : u8 , } impl UAVCAN_NODE_STATUS_DATA { pub const ENCODED_LEN : usize = 17usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , uptime_sec : 0_u32 , vendor_specific_status_code : 0_u16 , health : UavcanNodeHealth :: DEFAULT , mode : UavcanNodeMode :: DEFAULT , sub_mode : 0_u8 , } ; } impl Default for UAVCAN_NODE_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for UAVCAN_NODE_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 310u32 ; const NAME : & 'static str = "UAVCAN_NODE_STATUS" ; const EXTRA_CRC : u8 = 28u8 ; const ENCODED_LEN : usize = 17usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . uptime_sec = buf . get_u32_le () ; __struct . vendor_specific_status_code = buf . get_u16_le () ; let tmp = buf . get_u8 () ; __struct . health = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "UavcanNodeHealth" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . mode = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "UavcanNodeMode" , value : tmp as u32 }) ? ; __struct . sub_mode = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_u32_le (self . uptime_sec) ; __tmp . put_u16_le (self . vendor_specific_status_code) ; __tmp . put_u8 (self . health as u8) ; __tmp . put_u8 (self . mode as u8) ; __tmp . put_u8 (self . sub_mode) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HEARTBEAT_DATA { pub custom_mode : u32 , pub mavtype : MavType , pub autopilot : MavAutopilot , pub base_mode : MavModeFlag , pub system_status : MavState , pub mavlink_version : u8 , } impl HEARTBEAT_DATA { pub const ENCODED_LEN : usize = 9usize ; pub const DEFAULT : Self = Self { custom_mode : 0_u32 , mavtype : MavType :: DEFAULT , autopilot : MavAutopilot :: DEFAULT , base_mode : MavModeFlag :: DEFAULT , system_status : MavState :: DEFAULT , mavlink_version : 0_u8 , } ; } impl Default for HEARTBEAT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for HEARTBEAT_DATA { type Message = MavMessage ; const ID : u32 = 0u32 ; const NAME : & 'static str = "HEARTBEAT" ; const EXTRA_CRC : u8 = 50u8 ; const ENCODED_LEN : usize = 9usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . custom_mode = buf . get_u32_le () ; let tmp = buf . get_u8 () ; __struct . mavtype = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavType" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . autopilot = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavAutopilot" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . base_mode = MavModeFlag :: from_bits (tmp & MavModeFlag :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "MavModeFlag" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . system_status = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavState" , value : tmp as u32 }) ? ; __struct . mavlink_version = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . custom_mode) ; __tmp . put_u8 (self . mavtype as u8) ; __tmp . put_u8 (self . autopilot as u8) ; __tmp . put_u8 (self . base_mode . bits ()) ; __tmp . put_u8 (self . system_status as u8) ; __tmp . put_u8 (self . mavlink_version) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct REQUEST_EVENT_DATA { pub first_sequence : u16 , pub last_sequence : u16 , pub target_system : u8 , pub target_component : u8 , } impl REQUEST_EVENT_DATA { pub const ENCODED_LEN : usize = 6usize ; pub const DEFAULT : Self = Self { first_sequence : 0_u16 , last_sequence : 0_u16 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for REQUEST_EVENT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for REQUEST_EVENT_DATA { type Message = MavMessage ; const ID : u32 = 412u32 ; const NAME : & 'static str = "REQUEST_EVENT" ; const EXTRA_CRC : u8 = 33u8 ; const ENCODED_LEN : usize = 6usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . first_sequence = buf . get_u16_le () ; __struct . last_sequence = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . first_sequence) ; __tmp . put_u16_le (self . last_sequence) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PARAM_EXT_SET_DATA { pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub param_id : [u8 ; 16] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub param_value : [u8 ; 128] , pub param_type : MavParamExtType , } impl PARAM_EXT_SET_DATA { pub const ENCODED_LEN : usize = 147usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , param_id : [0_u8 ; 16usize] , param_value : [0_u8 ; 128usize] , param_type : MavParamExtType :: DEFAULT , } ; } impl Default for PARAM_EXT_SET_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for PARAM_EXT_SET_DATA { type Message = MavMessage ; const ID : u32 = 323u32 ; const NAME : & 'static str = "PARAM_EXT_SET" ; const EXTRA_CRC : u8 = 78u8 ; const ENCODED_LEN : usize = 147usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . param_id { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . param_value { let val = buf . get_u8 () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . param_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavParamExtType" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . param_id { __tmp . put_u8 (* val) ; } for val in & self . param_value { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . param_type as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct VISION_POSITION_ESTIMATE_DATA { pub usec : u64 , pub x : f32 , pub y : f32 , pub z : f32 , pub roll : f32 , pub pitch : f32 , pub yaw : f32 , } impl VISION_POSITION_ESTIMATE_DATA { pub const ENCODED_LEN : usize = 32usize ; pub const DEFAULT : Self = Self { usec : 0_u64 , x : 0.0_f32 , y : 0.0_f32 , z : 0.0_f32 , roll : 0.0_f32 , pitch : 0.0_f32 , yaw : 0.0_f32 , } ; } impl Default for VISION_POSITION_ESTIMATE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for VISION_POSITION_ESTIMATE_DATA { type Message = MavMessage ; const ID : u32 = 102u32 ; const NAME : & 'static str = "VISION_POSITION_ESTIMATE" ; const EXTRA_CRC : u8 = 158u8 ; const ENCODED_LEN : usize = 32usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . usec = buf . get_u64_le () ; __struct . x = buf . get_f32_le () ; __struct . y = buf . get_f32_le () ; __struct . z = buf . get_f32_le () ; __struct . roll = buf . get_f32_le () ; __struct . pitch = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . usec) ; __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; __tmp . put_f32_le (self . roll) ; __tmp . put_f32_le (self . pitch) ; __tmp . put_f32_le (self . yaw) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SUPPORTED_TUNES_DATA { pub format : TuneFormat , pub target_system : u8 , pub target_component : u8 , } impl SUPPORTED_TUNES_DATA { pub const ENCODED_LEN : usize = 6usize ; pub const DEFAULT : Self = Self { format : TuneFormat :: DEFAULT , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for SUPPORTED_TUNES_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SUPPORTED_TUNES_DATA { type Message = MavMessage ; const ID : u32 = 401u32 ; const NAME : & 'static str = "SUPPORTED_TUNES" ; const EXTRA_CRC : u8 = 183u8 ; const ENCODED_LEN : usize = 6usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u32_le () ; __struct . format = TuneFormat :: from_bits (tmp & TuneFormat :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "TuneFormat" , value : tmp as u32 }) ? ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . format . bits ()) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PARAM_EXT_REQUEST_LIST_DATA { pub target_system : u8 , pub target_component : u8 , } impl PARAM_EXT_REQUEST_LIST_DATA { pub const ENCODED_LEN : usize = 2usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for PARAM_EXT_REQUEST_LIST_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for PARAM_EXT_REQUEST_LIST_DATA { type Message = MavMessage ; const ID : u32 = 321u32 ; const NAME : & 'static str = "PARAM_EXT_REQUEST_LIST" ; const EXTRA_CRC : u8 = 88u8 ; const ENCODED_LEN : usize = 2usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ISBD_LINK_STATUS_DATA { pub timestamp : u64 , pub last_heartbeat : u64 , pub failed_sessions : u16 , pub successful_sessions : u16 , pub signal_quality : u8 , pub ring_pending : u8 , pub tx_session_pending : u8 , pub rx_session_pending : u8 , } impl ISBD_LINK_STATUS_DATA { pub const ENCODED_LEN : usize = 24usize ; pub const DEFAULT : Self = Self { timestamp : 0_u64 , last_heartbeat : 0_u64 , failed_sessions : 0_u16 , successful_sessions : 0_u16 , signal_quality : 0_u8 , ring_pending : 0_u8 , tx_session_pending : 0_u8 , rx_session_pending : 0_u8 , } ; } impl Default for ISBD_LINK_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ISBD_LINK_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 335u32 ; const NAME : & 'static str = "ISBD_LINK_STATUS" ; const EXTRA_CRC : u8 = 225u8 ; const ENCODED_LEN : usize = 24usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . timestamp = buf . get_u64_le () ; __struct . last_heartbeat = buf . get_u64_le () ; __struct . failed_sessions = buf . get_u16_le () ; __struct . successful_sessions = buf . get_u16_le () ; __struct . signal_quality = buf . get_u8 () ; __struct . ring_pending = buf . get_u8 () ; __struct . tx_session_pending = buf . get_u8 () ; __struct . rx_session_pending = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . timestamp) ; __tmp . put_u64_le (self . last_heartbeat) ; __tmp . put_u16_le (self . failed_sessions) ; __tmp . put_u16_le (self . successful_sessions) ; __tmp . put_u8 (self . signal_quality) ; __tmp . put_u8 (self . ring_pending) ; __tmp . put_u8 (self . tx_session_pending) ; __tmp . put_u8 (self . rx_session_pending) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PLAY_TUNE_V2_DATA { pub format : TuneFormat , pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub tune : [u8 ; 248] , } impl PLAY_TUNE_V2_DATA { pub const ENCODED_LEN : usize = 254usize ; pub const DEFAULT : Self = Self { format : TuneFormat :: DEFAULT , target_system : 0_u8 , target_component : 0_u8 , tune : [0_u8 ; 248usize] , } ; } impl Default for PLAY_TUNE_V2_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for PLAY_TUNE_V2_DATA { type Message = MavMessage ; const ID : u32 = 400u32 ; const NAME : & 'static str = "PLAY_TUNE_V2" ; const EXTRA_CRC : u8 = 110u8 ; const ENCODED_LEN : usize = 254usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u32_le () ; __struct . format = TuneFormat :: from_bits (tmp & TuneFormat :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "TuneFormat" , value : tmp as u32 }) ? ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . tune { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . format . bits ()) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . tune { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct VIDEO_STREAM_STATUS_DATA { pub framerate : f32 , pub bitrate : u32 , pub flags : VideoStreamStatusFlags , pub resolution_h : u16 , pub resolution_v : u16 , pub rotation : u16 , pub hfov : u16 , pub stream_id : u8 , } impl VIDEO_STREAM_STATUS_DATA { pub const ENCODED_LEN : usize = 19usize ; pub const DEFAULT : Self = Self { framerate : 0.0_f32 , bitrate : 0_u32 , flags : VideoStreamStatusFlags :: DEFAULT , resolution_h : 0_u16 , resolution_v : 0_u16 , rotation : 0_u16 , hfov : 0_u16 , stream_id : 0_u8 , } ; } impl Default for VIDEO_STREAM_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for VIDEO_STREAM_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 270u32 ; const NAME : & 'static str = "VIDEO_STREAM_STATUS" ; const EXTRA_CRC : u8 = 59u8 ; const ENCODED_LEN : usize = 19usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . framerate = buf . get_f32_le () ; __struct . bitrate = buf . get_u32_le () ; let tmp = buf . get_u16_le () ; __struct . flags = FromPrimitive :: from_u16 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "VideoStreamStatusFlags" , value : tmp as u32 }) ? ; __struct . resolution_h = buf . get_u16_le () ; __struct . resolution_v = buf . get_u16_le () ; __struct . rotation = buf . get_u16_le () ; __struct . hfov = buf . get_u16_le () ; __struct . stream_id = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . framerate) ; __tmp . put_u32_le (self . bitrate) ; __tmp . put_u16_le (self . flags as u16) ; __tmp . put_u16_le (self . resolution_h) ; __tmp . put_u16_le (self . resolution_v) ; __tmp . put_u16_le (self . rotation) ; __tmp . put_u16_le (self . hfov) ; __tmp . put_u8 (self . stream_id) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct RAW_IMU_DATA { pub time_usec : u64 , pub xacc : i16 , pub yacc : i16 , pub zacc : i16 , pub xgyro : i16 , pub ygyro : i16 , pub zgyro : i16 , pub xmag : i16 , pub ymag : i16 , pub zmag : i16 , } impl RAW_IMU_DATA { pub const ENCODED_LEN : usize = 26usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , xacc : 0_i16 , yacc : 0_i16 , zacc : 0_i16 , xgyro : 0_i16 , ygyro : 0_i16 , zgyro : 0_i16 , xmag : 0_i16 , ymag : 0_i16 , zmag : 0_i16 , } ; } impl Default for RAW_IMU_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for RAW_IMU_DATA { type Message = MavMessage ; const ID : u32 = 27u32 ; const NAME : & 'static str = "RAW_IMU" ; const EXTRA_CRC : u8 = 144u8 ; const ENCODED_LEN : usize = 26usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . xacc = buf . get_i16_le () ; __struct . yacc = buf . get_i16_le () ; __struct . zacc = buf . get_i16_le () ; __struct . xgyro = buf . get_i16_le () ; __struct . ygyro = buf . get_i16_le () ; __struct . zgyro = buf . get_i16_le () ; __struct . xmag = buf . get_i16_le () ; __struct . ymag = buf . get_i16_le () ; __struct . zmag = buf . get_i16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_i16_le (self . xacc) ; __tmp . put_i16_le (self . yacc) ; __tmp . put_i16_le (self . zacc) ; __tmp . put_i16_le (self . xgyro) ; __tmp . put_i16_le (self . ygyro) ; __tmp . put_i16_le (self . zgyro) ; __tmp . put_i16_le (self . xmag) ; __tmp . put_i16_le (self . ymag) ; __tmp . put_i16_le (self . zmag) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct OPEN_DRONE_ID_LOCATION_DATA { pub latitude : i32 , pub longitude : i32 , pub altitude_barometric : f32 , pub altitude_geodetic : f32 , pub height : f32 , pub timestamp : f32 , pub direction : u16 , pub speed_horizontal : u16 , pub speed_vertical : i16 , pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub id_or_mac : [u8 ; 20] , pub status : MavOdidStatus , pub height_reference : MavOdidHeightRef , pub horizontal_accuracy : MavOdidHorAcc , pub vertical_accuracy : MavOdidVerAcc , pub barometer_accuracy : MavOdidVerAcc , pub speed_accuracy : MavOdidSpeedAcc , pub timestamp_accuracy : MavOdidTimeAcc , } impl OPEN_DRONE_ID_LOCATION_DATA { pub const ENCODED_LEN : usize = 59usize ; pub const DEFAULT : Self = Self { latitude : 0_i32 , longitude : 0_i32 , altitude_barometric : 0.0_f32 , altitude_geodetic : 0.0_f32 , height : 0.0_f32 , timestamp : 0.0_f32 , direction : 0_u16 , speed_horizontal : 0_u16 , speed_vertical : 0_i16 , target_system : 0_u8 , target_component : 0_u8 , id_or_mac : [0_u8 ; 20usize] , status : MavOdidStatus :: DEFAULT , height_reference : MavOdidHeightRef :: DEFAULT , horizontal_accuracy : MavOdidHorAcc :: DEFAULT , vertical_accuracy : MavOdidVerAcc :: DEFAULT , barometer_accuracy : MavOdidVerAcc :: DEFAULT , speed_accuracy : MavOdidSpeedAcc :: DEFAULT , timestamp_accuracy : MavOdidTimeAcc :: DEFAULT , } ; } impl Default for OPEN_DRONE_ID_LOCATION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for OPEN_DRONE_ID_LOCATION_DATA { type Message = MavMessage ; const ID : u32 = 12901u32 ; const NAME : & 'static str = "OPEN_DRONE_ID_LOCATION" ; const EXTRA_CRC : u8 = 254u8 ; const ENCODED_LEN : usize = 59usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . latitude = buf . get_i32_le () ; __struct . longitude = buf . get_i32_le () ; __struct . altitude_barometric = buf . get_f32_le () ; __struct . altitude_geodetic = buf . get_f32_le () ; __struct . height = buf . get_f32_le () ; __struct . timestamp = buf . get_f32_le () ; __struct . direction = buf . get_u16_le () ; __struct . speed_horizontal = buf . get_u16_le () ; __struct . speed_vertical = buf . get_i16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . id_or_mac { let val = buf . get_u8 () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . status = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidStatus" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . height_reference = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidHeightRef" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . horizontal_accuracy = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidHorAcc" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . vertical_accuracy = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidVerAcc" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . barometer_accuracy = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidVerAcc" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . speed_accuracy = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidSpeedAcc" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . timestamp_accuracy = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidTimeAcc" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . latitude) ; __tmp . put_i32_le (self . longitude) ; __tmp . put_f32_le (self . altitude_barometric) ; __tmp . put_f32_le (self . altitude_geodetic) ; __tmp . put_f32_le (self . height) ; __tmp . put_f32_le (self . timestamp) ; __tmp . put_u16_le (self . direction) ; __tmp . put_u16_le (self . speed_horizontal) ; __tmp . put_i16_le (self . speed_vertical) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . id_or_mac { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . status as u8) ; __tmp . put_u8 (self . height_reference as u8) ; __tmp . put_u8 (self . horizontal_accuracy as u8) ; __tmp . put_u8 (self . vertical_accuracy as u8) ; __tmp . put_u8 (self . barometer_accuracy as u8) ; __tmp . put_u8 (self . speed_accuracy as u8) ; __tmp . put_u8 (self . timestamp_accuracy as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct AIS_VESSEL_DATA { pub MMSI : u32 , pub lat : i32 , pub lon : i32 , pub COG : u16 , pub heading : u16 , pub velocity : u16 , pub dimension_bow : u16 , pub dimension_stern : u16 , pub tslc : u16 , pub flags : AisFlags , pub turn_rate : i8 , pub navigational_status : AisNavStatus , pub mavtype : AisType , pub dimension_port : u8 , pub dimension_starboard : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub callsign : [u8 ; 7] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub name : [u8 ; 20] , } impl AIS_VESSEL_DATA { pub const ENCODED_LEN : usize = 58usize ; pub const DEFAULT : Self = Self { MMSI : 0_u32 , lat : 0_i32 , lon : 0_i32 , COG : 0_u16 , heading : 0_u16 , velocity : 0_u16 , dimension_bow : 0_u16 , dimension_stern : 0_u16 , tslc : 0_u16 , flags : AisFlags :: DEFAULT , turn_rate : 0_i8 , navigational_status : AisNavStatus :: DEFAULT , mavtype : AisType :: DEFAULT , dimension_port : 0_u8 , dimension_starboard : 0_u8 , callsign : [0_u8 ; 7usize] , name : [0_u8 ; 20usize] , } ; } impl Default for AIS_VESSEL_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for AIS_VESSEL_DATA { type Message = MavMessage ; const ID : u32 = 301u32 ; const NAME : & 'static str = "AIS_VESSEL" ; const EXTRA_CRC : u8 = 243u8 ; const ENCODED_LEN : usize = 58usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . MMSI = buf . get_u32_le () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . COG = buf . get_u16_le () ; __struct . heading = buf . get_u16_le () ; __struct . velocity = buf . get_u16_le () ; __struct . dimension_bow = buf . get_u16_le () ; __struct . dimension_stern = buf . get_u16_le () ; __struct . tslc = buf . get_u16_le () ; let tmp = buf . get_u16_le () ; __struct . flags = AisFlags :: from_bits (tmp & AisFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "AisFlags" , value : tmp as u32 }) ? ; __struct . turn_rate = buf . get_i8 () ; let tmp = buf . get_u8 () ; __struct . navigational_status = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "AisNavStatus" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . mavtype = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "AisType" , value : tmp as u32 }) ? ; __struct . dimension_port = buf . get_u8 () ; __struct . dimension_starboard = buf . get_u8 () ; for v in & mut __struct . callsign { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . name { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . MMSI) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_u16_le (self . COG) ; __tmp . put_u16_le (self . heading) ; __tmp . put_u16_le (self . velocity) ; __tmp . put_u16_le (self . dimension_bow) ; __tmp . put_u16_le (self . dimension_stern) ; __tmp . put_u16_le (self . tslc) ; __tmp . put_u16_le (self . flags . bits ()) ; __tmp . put_i8 (self . turn_rate) ; __tmp . put_u8 (self . navigational_status as u8) ; __tmp . put_u8 (self . mavtype as u8) ; __tmp . put_u8 (self . dimension_port) ; __tmp . put_u8 (self . dimension_starboard) ; for val in & self . callsign { __tmp . put_u8 (* val) ; } for val in & self . name { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct RAW_RPM_DATA { pub frequency : f32 , pub index : u8 , } impl RAW_RPM_DATA { pub const ENCODED_LEN : usize = 5usize ; pub const DEFAULT : Self = Self { frequency : 0.0_f32 , index : 0_u8 , } ; } impl Default for RAW_RPM_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for RAW_RPM_DATA { type Message = MavMessage ; const ID : u32 = 339u32 ; const NAME : & 'static str = "RAW_RPM" ; const EXTRA_CRC : u8 = 199u8 ; const ENCODED_LEN : usize = 5usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . frequency = buf . get_f32_le () ; __struct . index = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . frequency) ; __tmp . put_u8 (self . index) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MISSION_REQUEST_DATA { pub seq : u16 , pub target_system : u8 , pub target_component : u8 , } impl MISSION_REQUEST_DATA { pub const ENCODED_LEN : usize = 4usize ; pub const DEFAULT : Self = Self { seq : 0_u16 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for MISSION_REQUEST_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MISSION_REQUEST_DATA { type Message = MavMessage ; const ID : u32 = 40u32 ; const NAME : & 'static str = "MISSION_REQUEST" ; const EXTRA_CRC : u8 = 230u8 ; const ENCODED_LEN : usize = 4usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . seq = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . seq) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct FLIGHT_INFORMATION_DATA { pub arming_time_utc : u64 , pub takeoff_time_utc : u64 , pub flight_uuid : u64 , pub time_boot_ms : u32 , } impl FLIGHT_INFORMATION_DATA { pub const ENCODED_LEN : usize = 28usize ; pub const DEFAULT : Self = Self { arming_time_utc : 0_u64 , takeoff_time_utc : 0_u64 , flight_uuid : 0_u64 , time_boot_ms : 0_u32 , } ; } impl Default for FLIGHT_INFORMATION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for FLIGHT_INFORMATION_DATA { type Message = MavMessage ; const ID : u32 = 264u32 ; const NAME : & 'static str = "FLIGHT_INFORMATION" ; const EXTRA_CRC : u8 = 49u8 ; const ENCODED_LEN : usize = 28usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . arming_time_utc = buf . get_u64_le () ; __struct . takeoff_time_utc = buf . get_u64_le () ; __struct . flight_uuid = buf . get_u64_le () ; __struct . time_boot_ms = buf . get_u32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . arming_time_utc) ; __tmp . put_u64_le (self . takeoff_time_utc) ; __tmp . put_u64_le (self . flight_uuid) ; __tmp . put_u32_le (self . time_boot_ms) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct VICON_POSITION_ESTIMATE_DATA { pub usec : u64 , pub x : f32 , pub y : f32 , pub z : f32 , pub roll : f32 , pub pitch : f32 , pub yaw : f32 , } impl VICON_POSITION_ESTIMATE_DATA { pub const ENCODED_LEN : usize = 32usize ; pub const DEFAULT : Self = Self { usec : 0_u64 , x : 0.0_f32 , y : 0.0_f32 , z : 0.0_f32 , roll : 0.0_f32 , pitch : 0.0_f32 , yaw : 0.0_f32 , } ; } impl Default for VICON_POSITION_ESTIMATE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for VICON_POSITION_ESTIMATE_DATA { type Message = MavMessage ; const ID : u32 = 104u32 ; const NAME : & 'static str = "VICON_POSITION_ESTIMATE" ; const EXTRA_CRC : u8 = 56u8 ; const ENCODED_LEN : usize = 32usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . usec = buf . get_u64_le () ; __struct . x = buf . get_f32_le () ; __struct . y = buf . get_f32_le () ; __struct . z = buf . get_f32_le () ; __struct . roll = buf . get_f32_le () ; __struct . pitch = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . usec) ; __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; __tmp . put_f32_le (self . roll) ; __tmp . put_f32_le (self . pitch) ; __tmp . put_f32_le (self . yaw) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HIL_SENSOR_DATA { pub time_usec : u64 , pub xacc : f32 , pub yacc : f32 , pub zacc : f32 , pub xgyro : f32 , pub ygyro : f32 , pub zgyro : f32 , pub xmag : f32 , pub ymag : f32 , pub zmag : f32 , pub abs_pressure : f32 , pub diff_pressure : f32 , pub pressure_alt : f32 , pub temperature : f32 , pub fields_updated : HilSensorUpdatedFlags , } impl HIL_SENSOR_DATA { pub const ENCODED_LEN : usize = 64usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , xacc : 0.0_f32 , yacc : 0.0_f32 , zacc : 0.0_f32 , xgyro : 0.0_f32 , ygyro : 0.0_f32 , zgyro : 0.0_f32 , xmag : 0.0_f32 , ymag : 0.0_f32 , zmag : 0.0_f32 , abs_pressure : 0.0_f32 , diff_pressure : 0.0_f32 , pressure_alt : 0.0_f32 , temperature : 0.0_f32 , fields_updated : HilSensorUpdatedFlags :: DEFAULT , } ; } impl Default for HIL_SENSOR_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for HIL_SENSOR_DATA { type Message = MavMessage ; const ID : u32 = 107u32 ; const NAME : & 'static str = "HIL_SENSOR" ; const EXTRA_CRC : u8 = 108u8 ; const ENCODED_LEN : usize = 64usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . xacc = buf . get_f32_le () ; __struct . yacc = buf . get_f32_le () ; __struct . zacc = buf . get_f32_le () ; __struct . xgyro = buf . get_f32_le () ; __struct . ygyro = buf . get_f32_le () ; __struct . zgyro = buf . get_f32_le () ; __struct . xmag = buf . get_f32_le () ; __struct . ymag = buf . get_f32_le () ; __struct . zmag = buf . get_f32_le () ; __struct . abs_pressure = buf . get_f32_le () ; __struct . diff_pressure = buf . get_f32_le () ; __struct . pressure_alt = buf . get_f32_le () ; __struct . temperature = buf . get_f32_le () ; let tmp = buf . get_u32_le () ; __struct . fields_updated = HilSensorUpdatedFlags :: from_bits (tmp & HilSensorUpdatedFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "HilSensorUpdatedFlags" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . xacc) ; __tmp . put_f32_le (self . yacc) ; __tmp . put_f32_le (self . zacc) ; __tmp . put_f32_le (self . xgyro) ; __tmp . put_f32_le (self . ygyro) ; __tmp . put_f32_le (self . zgyro) ; __tmp . put_f32_le (self . xmag) ; __tmp . put_f32_le (self . ymag) ; __tmp . put_f32_le (self . zmag) ; __tmp . put_f32_le (self . abs_pressure) ; __tmp . put_f32_le (self . diff_pressure) ; __tmp . put_f32_le (self . pressure_alt) ; __tmp . put_f32_le (self . temperature) ; __tmp . put_u32_le (self . fields_updated . bits ()) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct TIMESYNC_DATA { pub tc1 : i64 , pub ts1 : i64 , } impl TIMESYNC_DATA { pub const ENCODED_LEN : usize = 16usize ; pub const DEFAULT : Self = Self { tc1 : 0_i64 , ts1 : 0_i64 , } ; } impl Default for TIMESYNC_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for TIMESYNC_DATA { type Message = MavMessage ; const ID : u32 = 111u32 ; const NAME : & 'static str = "TIMESYNC" ; const EXTRA_CRC : u8 = 34u8 ; const ENCODED_LEN : usize = 16usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . tc1 = buf . get_i64_le () ; __struct . ts1 = buf . get_i64_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i64_le (self . tc1) ; __tmp . put_i64_le (self . ts1) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct OPEN_DRONE_ID_OPERATOR_ID_DATA { pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub id_or_mac : [u8 ; 20] , pub operator_id_type : MavOdidOperatorIdType , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub operator_id : [u8 ; 20] , } impl OPEN_DRONE_ID_OPERATOR_ID_DATA { pub const ENCODED_LEN : usize = 43usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , id_or_mac : [0_u8 ; 20usize] , operator_id_type : MavOdidOperatorIdType :: DEFAULT , operator_id : [0_u8 ; 20usize] , } ; } impl Default for OPEN_DRONE_ID_OPERATOR_ID_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for OPEN_DRONE_ID_OPERATOR_ID_DATA { type Message = MavMessage ; const ID : u32 = 12905u32 ; const NAME : & 'static str = "OPEN_DRONE_ID_OPERATOR_ID" ; const EXTRA_CRC : u8 = 49u8 ; const ENCODED_LEN : usize = 43usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . id_or_mac { let val = buf . get_u8 () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . operator_id_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidOperatorIdType" , value : tmp as u32 }) ? ; for v in & mut __struct . operator_id { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . id_or_mac { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . operator_id_type as u8) ; for val in & self . operator_id { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct COMPONENT_METADATA_DATA { pub time_boot_ms : u32 , pub file_crc : u32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub uri : [u8 ; 100] , } impl COMPONENT_METADATA_DATA { pub const ENCODED_LEN : usize = 108usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , file_crc : 0_u32 , uri : [0_u8 ; 100usize] , } ; } impl Default for COMPONENT_METADATA_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for COMPONENT_METADATA_DATA { type Message = MavMessage ; const ID : u32 = 397u32 ; const NAME : & 'static str = "COMPONENT_METADATA" ; const EXTRA_CRC : u8 = 182u8 ; const ENCODED_LEN : usize = 108usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . file_crc = buf . get_u32_le () ; for v in & mut __struct . uri { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_u32_le (self . file_crc) ; for val in & self . uri { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SAFETY_ALLOWED_AREA_DATA { pub p1x : f32 , pub p1y : f32 , pub p1z : f32 , pub p2x : f32 , pub p2y : f32 , pub p2z : f32 , pub frame : MavFrame , } impl SAFETY_ALLOWED_AREA_DATA { pub const ENCODED_LEN : usize = 25usize ; pub const DEFAULT : Self = Self { p1x : 0.0_f32 , p1y : 0.0_f32 , p1z : 0.0_f32 , p2x : 0.0_f32 , p2y : 0.0_f32 , p2z : 0.0_f32 , frame : MavFrame :: DEFAULT , } ; } impl Default for SAFETY_ALLOWED_AREA_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SAFETY_ALLOWED_AREA_DATA { type Message = MavMessage ; const ID : u32 = 55u32 ; const NAME : & 'static str = "SAFETY_ALLOWED_AREA" ; const EXTRA_CRC : u8 = 3u8 ; const ENCODED_LEN : usize = 25usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . p1x = buf . get_f32_le () ; __struct . p1y = buf . get_f32_le () ; __struct . p1z = buf . get_f32_le () ; __struct . p2x = buf . get_f32_le () ; __struct . p2y = buf . get_f32_le () ; __struct . p2z = buf . get_f32_le () ; let tmp = buf . get_u8 () ; __struct . frame = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavFrame" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . p1x) ; __tmp . put_f32_le (self . p1y) ; __tmp . put_f32_le (self . p1z) ; __tmp . put_f32_le (self . p2x) ; __tmp . put_f32_le (self . p2y) ; __tmp . put_f32_le (self . p2z) ; __tmp . put_u8 (self . frame as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MANUAL_SETPOINT_DATA { pub time_boot_ms : u32 , pub roll : f32 , pub pitch : f32 , pub yaw : f32 , pub thrust : f32 , pub mode_switch : u8 , pub manual_override_switch : u8 , } impl MANUAL_SETPOINT_DATA { pub const ENCODED_LEN : usize = 22usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , roll : 0.0_f32 , pitch : 0.0_f32 , yaw : 0.0_f32 , thrust : 0.0_f32 , mode_switch : 0_u8 , manual_override_switch : 0_u8 , } ; } impl Default for MANUAL_SETPOINT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MANUAL_SETPOINT_DATA { type Message = MavMessage ; const ID : u32 = 81u32 ; const NAME : & 'static str = "MANUAL_SETPOINT" ; const EXTRA_CRC : u8 = 106u8 ; const ENCODED_LEN : usize = 22usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . roll = buf . get_f32_le () ; __struct . pitch = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; __struct . thrust = buf . get_f32_le () ; __struct . mode_switch = buf . get_u8 () ; __struct . manual_override_switch = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . roll) ; __tmp . put_f32_le (self . pitch) ; __tmp . put_f32_le (self . yaw) ; __tmp . put_f32_le (self . thrust) ; __tmp . put_u8 (self . mode_switch) ; __tmp . put_u8 (self . manual_override_switch) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CAMERA_TRACKING_IMAGE_STATUS_DATA { pub point_x : f32 , pub point_y : f32 , pub radius : f32 , pub rec_top_x : f32 , pub rec_top_y : f32 , pub rec_bottom_x : f32 , pub rec_bottom_y : f32 , pub tracking_status : CameraTrackingStatusFlags , pub tracking_mode : CameraTrackingMode , pub target_data : CameraTrackingTargetData , } impl CAMERA_TRACKING_IMAGE_STATUS_DATA { pub const ENCODED_LEN : usize = 31usize ; pub const DEFAULT : Self = Self { point_x : 0.0_f32 , point_y : 0.0_f32 , radius : 0.0_f32 , rec_top_x : 0.0_f32 , rec_top_y : 0.0_f32 , rec_bottom_x : 0.0_f32 , rec_bottom_y : 0.0_f32 , tracking_status : CameraTrackingStatusFlags :: DEFAULT , tracking_mode : CameraTrackingMode :: DEFAULT , target_data : CameraTrackingTargetData :: DEFAULT , } ; } impl Default for CAMERA_TRACKING_IMAGE_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CAMERA_TRACKING_IMAGE_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 275u32 ; const NAME : & 'static str = "CAMERA_TRACKING_IMAGE_STATUS" ; const EXTRA_CRC : u8 = 126u8 ; const ENCODED_LEN : usize = 31usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . point_x = buf . get_f32_le () ; __struct . point_y = buf . get_f32_le () ; __struct . radius = buf . get_f32_le () ; __struct . rec_top_x = buf . get_f32_le () ; __struct . rec_top_y = buf . get_f32_le () ; __struct . rec_bottom_x = buf . get_f32_le () ; __struct . rec_bottom_y = buf . get_f32_le () ; let tmp = buf . get_u8 () ; __struct . tracking_status = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "CameraTrackingStatusFlags" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . tracking_mode = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "CameraTrackingMode" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . target_data = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "CameraTrackingTargetData" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . point_x) ; __tmp . put_f32_le (self . point_y) ; __tmp . put_f32_le (self . radius) ; __tmp . put_f32_le (self . rec_top_x) ; __tmp . put_f32_le (self . rec_top_y) ; __tmp . put_f32_le (self . rec_bottom_x) ; __tmp . put_f32_le (self . rec_bottom_y) ; __tmp . put_u8 (self . tracking_status as u8) ; __tmp . put_u8 (self . tracking_mode as u8) ; __tmp . put_u8 (self . target_data as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GLOBAL_POSITION_INT_DATA { pub time_boot_ms : u32 , pub lat : i32 , pub lon : i32 , pub alt : i32 , pub relative_alt : i32 , pub vx : i16 , pub vy : i16 , pub vz : i16 , pub hdg : u16 , } impl GLOBAL_POSITION_INT_DATA { pub const ENCODED_LEN : usize = 28usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , lat : 0_i32 , lon : 0_i32 , alt : 0_i32 , relative_alt : 0_i32 , vx : 0_i16 , vy : 0_i16 , vz : 0_i16 , hdg : 0_u16 , } ; } impl Default for GLOBAL_POSITION_INT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GLOBAL_POSITION_INT_DATA { type Message = MavMessage ; const ID : u32 = 33u32 ; const NAME : & 'static str = "GLOBAL_POSITION_INT" ; const EXTRA_CRC : u8 = 104u8 ; const ENCODED_LEN : usize = 28usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . alt = buf . get_i32_le () ; __struct . relative_alt = buf . get_i32_le () ; __struct . vx = buf . get_i16_le () ; __struct . vy = buf . get_i16_le () ; __struct . vz = buf . get_i16_le () ; __struct . hdg = buf . get_u16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_i32_le (self . alt) ; __tmp . put_i32_le (self . relative_alt) ; __tmp . put_i16_le (self . vx) ; __tmp . put_i16_le (self . vy) ; __tmp . put_i16_le (self . vz) ; __tmp . put_u16_le (self . hdg) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct EXTENDED_SYS_STATE_DATA { pub vtol_state : MavVtolState , pub landed_state : MavLandedState , } impl EXTENDED_SYS_STATE_DATA { pub const ENCODED_LEN : usize = 2usize ; pub const DEFAULT : Self = Self { vtol_state : MavVtolState :: DEFAULT , landed_state : MavLandedState :: DEFAULT , } ; } impl Default for EXTENDED_SYS_STATE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for EXTENDED_SYS_STATE_DATA { type Message = MavMessage ; const ID : u32 = 245u32 ; const NAME : & 'static str = "EXTENDED_SYS_STATE" ; const EXTRA_CRC : u8 = 130u8 ; const ENCODED_LEN : usize = 2usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u8 () ; __struct . vtol_state = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavVtolState" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . landed_state = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavLandedState" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . vtol_state as u8) ; __tmp . put_u8 (self . landed_state as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct OPEN_DRONE_ID_BASIC_ID_DATA { pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub id_or_mac : [u8 ; 20] , pub id_type : MavOdidIdType , pub ua_type : MavOdidUaType , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub uas_id : [u8 ; 20] , } impl OPEN_DRONE_ID_BASIC_ID_DATA { pub const ENCODED_LEN : usize = 44usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , id_or_mac : [0_u8 ; 20usize] , id_type : MavOdidIdType :: DEFAULT , ua_type : MavOdidUaType :: DEFAULT , uas_id : [0_u8 ; 20usize] , } ; } impl Default for OPEN_DRONE_ID_BASIC_ID_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for OPEN_DRONE_ID_BASIC_ID_DATA { type Message = MavMessage ; const ID : u32 = 12900u32 ; const NAME : & 'static str = "OPEN_DRONE_ID_BASIC_ID" ; const EXTRA_CRC : u8 = 114u8 ; const ENCODED_LEN : usize = 44usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . id_or_mac { let val = buf . get_u8 () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . id_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidIdType" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . ua_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidUaType" , value : tmp as u32 }) ? ; for v in & mut __struct . uas_id { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . id_or_mac { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . id_type as u8) ; __tmp . put_u8 (self . ua_type as u8) ; for val in & self . uas_id { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SYS_STATUS_DATA { pub onboard_control_sensors_present : MavSysStatusSensor , pub onboard_control_sensors_enabled : MavSysStatusSensor , pub onboard_control_sensors_health : MavSysStatusSensor , pub load : u16 , pub voltage_battery : u16 , pub current_battery : i16 , pub drop_rate_comm : u16 , pub errors_comm : u16 , pub errors_count1 : u16 , pub errors_count2 : u16 , pub errors_count3 : u16 , pub errors_count4 : u16 , pub battery_remaining : i8 , } impl SYS_STATUS_DATA { pub const ENCODED_LEN : usize = 31usize ; pub const DEFAULT : Self = Self { onboard_control_sensors_present : MavSysStatusSensor :: DEFAULT , onboard_control_sensors_enabled : MavSysStatusSensor :: DEFAULT , onboard_control_sensors_health : MavSysStatusSensor :: DEFAULT , load : 0_u16 , voltage_battery : 0_u16 , current_battery : 0_i16 , drop_rate_comm : 0_u16 , errors_comm : 0_u16 , errors_count1 : 0_u16 , errors_count2 : 0_u16 , errors_count3 : 0_u16 , errors_count4 : 0_u16 , battery_remaining : 0_i8 , } ; } impl Default for SYS_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SYS_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 1u32 ; const NAME : & 'static str = "SYS_STATUS" ; const EXTRA_CRC : u8 = 124u8 ; const ENCODED_LEN : usize = 31usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u32_le () ; __struct . onboard_control_sensors_present = MavSysStatusSensor :: from_bits (tmp & MavSysStatusSensor :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "MavSysStatusSensor" , value : tmp as u32 }) ? ; let tmp = buf . get_u32_le () ; __struct . onboard_control_sensors_enabled = MavSysStatusSensor :: from_bits (tmp & MavSysStatusSensor :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "MavSysStatusSensor" , value : tmp as u32 }) ? ; let tmp = buf . get_u32_le () ; __struct . onboard_control_sensors_health = MavSysStatusSensor :: from_bits (tmp & MavSysStatusSensor :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "MavSysStatusSensor" , value : tmp as u32 }) ? ; __struct . load = buf . get_u16_le () ; __struct . voltage_battery = buf . get_u16_le () ; __struct . current_battery = buf . get_i16_le () ; __struct . drop_rate_comm = buf . get_u16_le () ; __struct . errors_comm = buf . get_u16_le () ; __struct . errors_count1 = buf . get_u16_le () ; __struct . errors_count2 = buf . get_u16_le () ; __struct . errors_count3 = buf . get_u16_le () ; __struct . errors_count4 = buf . get_u16_le () ; __struct . battery_remaining = buf . get_i8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . onboard_control_sensors_present . bits ()) ; __tmp . put_u32_le (self . onboard_control_sensors_enabled . bits ()) ; __tmp . put_u32_le (self . onboard_control_sensors_health . bits ()) ; __tmp . put_u16_le (self . load) ; __tmp . put_u16_le (self . voltage_battery) ; __tmp . put_i16_le (self . current_battery) ; __tmp . put_u16_le (self . drop_rate_comm) ; __tmp . put_u16_le (self . errors_comm) ; __tmp . put_u16_le (self . errors_count1) ; __tmp . put_u16_le (self . errors_count2) ; __tmp . put_u16_le (self . errors_count3) ; __tmp . put_u16_le (self . errors_count4) ; __tmp . put_i8 (self . battery_remaining) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct UAVCAN_NODE_INFO_DATA { pub time_usec : u64 , pub uptime_sec : u32 , pub sw_vcs_commit : u32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub name : [u8 ; 80] , pub hw_version_major : u8 , pub hw_version_minor : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub hw_unique_id : [u8 ; 16] , pub sw_version_major : u8 , pub sw_version_minor : u8 , } impl UAVCAN_NODE_INFO_DATA { pub const ENCODED_LEN : usize = 116usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , uptime_sec : 0_u32 , sw_vcs_commit : 0_u32 , name : [0_u8 ; 80usize] , hw_version_major : 0_u8 , hw_version_minor : 0_u8 , hw_unique_id : [0_u8 ; 16usize] , sw_version_major : 0_u8 , sw_version_minor : 0_u8 , } ; } impl Default for UAVCAN_NODE_INFO_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for UAVCAN_NODE_INFO_DATA { type Message = MavMessage ; const ID : u32 = 311u32 ; const NAME : & 'static str = "UAVCAN_NODE_INFO" ; const EXTRA_CRC : u8 = 95u8 ; const ENCODED_LEN : usize = 116usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . uptime_sec = buf . get_u32_le () ; __struct . sw_vcs_commit = buf . get_u32_le () ; for v in & mut __struct . name { let val = buf . get_u8 () ; * v = val ; } __struct . hw_version_major = buf . get_u8 () ; __struct . hw_version_minor = buf . get_u8 () ; for v in & mut __struct . hw_unique_id { let val = buf . get_u8 () ; * v = val ; } __struct . sw_version_major = buf . get_u8 () ; __struct . sw_version_minor = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_u32_le (self . uptime_sec) ; __tmp . put_u32_le (self . sw_vcs_commit) ; for val in & self . name { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . hw_version_major) ; __tmp . put_u8 (self . hw_version_minor) ; for val in & self . hw_unique_id { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . sw_version_major) ; __tmp . put_u8 (self . sw_version_minor) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct VIBRATION_DATA { pub time_usec : u64 , pub vibration_x : f32 , pub vibration_y : f32 , pub vibration_z : f32 , pub clipping_0 : u32 , pub clipping_1 : u32 , pub clipping_2 : u32 , } impl VIBRATION_DATA { pub const ENCODED_LEN : usize = 32usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , vibration_x : 0.0_f32 , vibration_y : 0.0_f32 , vibration_z : 0.0_f32 , clipping_0 : 0_u32 , clipping_1 : 0_u32 , clipping_2 : 0_u32 , } ; } impl Default for VIBRATION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for VIBRATION_DATA { type Message = MavMessage ; const ID : u32 = 241u32 ; const NAME : & 'static str = "VIBRATION" ; const EXTRA_CRC : u8 = 90u8 ; const ENCODED_LEN : usize = 32usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . vibration_x = buf . get_f32_le () ; __struct . vibration_y = buf . get_f32_le () ; __struct . vibration_z = buf . get_f32_le () ; __struct . clipping_0 = buf . get_u32_le () ; __struct . clipping_1 = buf . get_u32_le () ; __struct . clipping_2 = buf . get_u32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . vibration_x) ; __tmp . put_f32_le (self . vibration_y) ; __tmp . put_f32_le (self . vibration_z) ; __tmp . put_u32_le (self . clipping_0) ; __tmp . put_u32_le (self . clipping_1) ; __tmp . put_u32_le (self . clipping_2) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PARAM_REQUEST_READ_DATA { pub param_index : i16 , pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub param_id : [u8 ; 16] , } impl PARAM_REQUEST_READ_DATA { pub const ENCODED_LEN : usize = 20usize ; pub const DEFAULT : Self = Self { param_index : 0_i16 , target_system : 0_u8 , target_component : 0_u8 , param_id : [0_u8 ; 16usize] , } ; } impl Default for PARAM_REQUEST_READ_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for PARAM_REQUEST_READ_DATA { type Message = MavMessage ; const ID : u32 = 20u32 ; const NAME : & 'static str = "PARAM_REQUEST_READ" ; const EXTRA_CRC : u8 = 214u8 ; const ENCODED_LEN : usize = 20usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . param_index = buf . get_i16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . param_id { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i16_le (self . param_index) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . param_id { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct POSITION_TARGET_GLOBAL_INT_DATA { pub time_boot_ms : u32 , pub lat_int : i32 , pub lon_int : i32 , pub alt : f32 , pub vx : f32 , pub vy : f32 , pub vz : f32 , pub afx : f32 , pub afy : f32 , pub afz : f32 , pub yaw : f32 , pub yaw_rate : f32 , pub type_mask : PositionTargetTypemask , pub coordinate_frame : MavFrame , } impl POSITION_TARGET_GLOBAL_INT_DATA { pub const ENCODED_LEN : usize = 51usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , lat_int : 0_i32 , lon_int : 0_i32 , alt : 0.0_f32 , vx : 0.0_f32 , vy : 0.0_f32 , vz : 0.0_f32 , afx : 0.0_f32 , afy : 0.0_f32 , afz : 0.0_f32 , yaw : 0.0_f32 , yaw_rate : 0.0_f32 , type_mask : PositionTargetTypemask :: DEFAULT , coordinate_frame : MavFrame :: DEFAULT , } ; } impl Default for POSITION_TARGET_GLOBAL_INT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for POSITION_TARGET_GLOBAL_INT_DATA { type Message = MavMessage ; const ID : u32 = 87u32 ; const NAME : & 'static str = "POSITION_TARGET_GLOBAL_INT" ; const EXTRA_CRC : u8 = 150u8 ; const ENCODED_LEN : usize = 51usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . lat_int = buf . get_i32_le () ; __struct . lon_int = buf . get_i32_le () ; __struct . alt = buf . get_f32_le () ; __struct . vx = buf . get_f32_le () ; __struct . vy = buf . get_f32_le () ; __struct . vz = buf . get_f32_le () ; __struct . afx = buf . get_f32_le () ; __struct . afy = buf . get_f32_le () ; __struct . afz = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; __struct . yaw_rate = buf . get_f32_le () ; let tmp = buf . get_u16_le () ; __struct . type_mask = PositionTargetTypemask :: from_bits (tmp & PositionTargetTypemask :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "PositionTargetTypemask" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . coordinate_frame = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavFrame" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_i32_le (self . lat_int) ; __tmp . put_i32_le (self . lon_int) ; __tmp . put_f32_le (self . alt) ; __tmp . put_f32_le (self . vx) ; __tmp . put_f32_le (self . vy) ; __tmp . put_f32_le (self . vz) ; __tmp . put_f32_le (self . afx) ; __tmp . put_f32_le (self . afy) ; __tmp . put_f32_le (self . afz) ; __tmp . put_f32_le (self . yaw) ; __tmp . put_f32_le (self . yaw_rate) ; __tmp . put_u16_le (self . type_mask . bits ()) ; __tmp . put_u8 (self . coordinate_frame as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SET_ACTUATOR_CONTROL_TARGET_DATA { pub time_usec : u64 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub controls : [f32 ; 8] , pub group_mlx : u8 , pub target_system : u8 , pub target_component : u8 , } impl SET_ACTUATOR_CONTROL_TARGET_DATA { pub const ENCODED_LEN : usize = 43usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , controls : [0.0_f32 ; 8usize] , group_mlx : 0_u8 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for SET_ACTUATOR_CONTROL_TARGET_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SET_ACTUATOR_CONTROL_TARGET_DATA { type Message = MavMessage ; const ID : u32 = 139u32 ; const NAME : & 'static str = "SET_ACTUATOR_CONTROL_TARGET" ; const EXTRA_CRC : u8 = 168u8 ; const ENCODED_LEN : usize = 43usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; for v in & mut __struct . controls { let val = buf . get_f32_le () ; * v = val ; } __struct . group_mlx = buf . get_u8 () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; for val in & self . controls { __tmp . put_f32_le (* val) ; } __tmp . put_u8 (self . group_mlx) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SET_MODE_DATA { pub custom_mode : u32 , pub target_system : u8 , pub base_mode : MavMode , } impl SET_MODE_DATA { pub const ENCODED_LEN : usize = 6usize ; pub const DEFAULT : Self = Self { custom_mode : 0_u32 , target_system : 0_u8 , base_mode : MavMode :: DEFAULT , } ; } impl Default for SET_MODE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SET_MODE_DATA { type Message = MavMessage ; const ID : u32 = 11u32 ; const NAME : & 'static str = "SET_MODE" ; const EXTRA_CRC : u8 = 89u8 ; const ENCODED_LEN : usize = 6usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . custom_mode = buf . get_u32_le () ; __struct . target_system = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . base_mode = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavMode" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . custom_mode) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . base_mode as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA { pub time_usec : u64 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub pos_x : [f32 ; 5] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub pos_y : [f32 ; 5] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub pos_z : [f32 ; 5] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub vel_x : [f32 ; 5] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub vel_y : [f32 ; 5] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub vel_z : [f32 ; 5] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub acc_x : [f32 ; 5] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub acc_y : [f32 ; 5] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub acc_z : [f32 ; 5] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub pos_yaw : [f32 ; 5] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub vel_yaw : [f32 ; 5] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub command : [u16 ; 5] , pub valid_points : u8 , } impl TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA { pub const ENCODED_LEN : usize = 239usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , pos_x : [0.0_f32 ; 5usize] , pos_y : [0.0_f32 ; 5usize] , pos_z : [0.0_f32 ; 5usize] , vel_x : [0.0_f32 ; 5usize] , vel_y : [0.0_f32 ; 5usize] , vel_z : [0.0_f32 ; 5usize] , acc_x : [0.0_f32 ; 5usize] , acc_y : [0.0_f32 ; 5usize] , acc_z : [0.0_f32 ; 5usize] , pos_yaw : [0.0_f32 ; 5usize] , vel_yaw : [0.0_f32 ; 5usize] , command : [0_u16 ; 5usize] , valid_points : 0_u8 , } ; } impl Default for TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA { type Message = MavMessage ; const ID : u32 = 332u32 ; const NAME : & 'static str = "TRAJECTORY_REPRESENTATION_WAYPOINTS" ; const EXTRA_CRC : u8 = 236u8 ; const ENCODED_LEN : usize = 239usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; for v in & mut __struct . pos_x { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . pos_y { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . pos_z { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . vel_x { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . vel_y { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . vel_z { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . acc_x { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . acc_y { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . acc_z { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . pos_yaw { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . vel_yaw { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . command { let val = buf . get_u16_le () ; * v = val ; } __struct . valid_points = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; for val in & self . pos_x { __tmp . put_f32_le (* val) ; } for val in & self . pos_y { __tmp . put_f32_le (* val) ; } for val in & self . pos_z { __tmp . put_f32_le (* val) ; } for val in & self . vel_x { __tmp . put_f32_le (* val) ; } for val in & self . vel_y { __tmp . put_f32_le (* val) ; } for val in & self . vel_z { __tmp . put_f32_le (* val) ; } for val in & self . acc_x { __tmp . put_f32_le (* val) ; } for val in & self . acc_y { __tmp . put_f32_le (* val) ; } for val in & self . acc_z { __tmp . put_f32_le (* val) ; } for val in & self . pos_yaw { __tmp . put_f32_le (* val) ; } for val in & self . vel_yaw { __tmp . put_f32_le (* val) ; } for val in & self . command { __tmp . put_u16_le (* val) ; } __tmp . put_u8 (self . valid_points) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct COMPONENT_INFORMATION_DATA { pub time_boot_ms : u32 , pub general_metadata_file_crc : u32 , pub peripherals_metadata_file_crc : u32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub general_metadata_uri : [u8 ; 100] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub peripherals_metadata_uri : [u8 ; 100] , } impl COMPONENT_INFORMATION_DATA { pub const ENCODED_LEN : usize = 212usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , general_metadata_file_crc : 0_u32 , peripherals_metadata_file_crc : 0_u32 , general_metadata_uri : [0_u8 ; 100usize] , peripherals_metadata_uri : [0_u8 ; 100usize] , } ; } impl Default for COMPONENT_INFORMATION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for COMPONENT_INFORMATION_DATA { type Message = MavMessage ; const ID : u32 = 395u32 ; const NAME : & 'static str = "COMPONENT_INFORMATION" ; const EXTRA_CRC : u8 = 0u8 ; const ENCODED_LEN : usize = 212usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . general_metadata_file_crc = buf . get_u32_le () ; __struct . peripherals_metadata_file_crc = buf . get_u32_le () ; for v in & mut __struct . general_metadata_uri { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . peripherals_metadata_uri { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_u32_le (self . general_metadata_file_crc) ; __tmp . put_u32_le (self . peripherals_metadata_file_crc) ; for val in & self . general_metadata_uri { __tmp . put_u8 (* val) ; } for val in & self . peripherals_metadata_uri { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PROTOCOL_VERSION_DATA { pub version : u16 , pub min_version : u16 , pub max_version : u16 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub spec_version_hash : [u8 ; 8] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub library_version_hash : [u8 ; 8] , } impl PROTOCOL_VERSION_DATA { pub const ENCODED_LEN : usize = 22usize ; pub const DEFAULT : Self = Self { version : 0_u16 , min_version : 0_u16 , max_version : 0_u16 , spec_version_hash : [0_u8 ; 8usize] , library_version_hash : [0_u8 ; 8usize] , } ; } impl Default for PROTOCOL_VERSION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for PROTOCOL_VERSION_DATA { type Message = MavMessage ; const ID : u32 = 300u32 ; const NAME : & 'static str = "PROTOCOL_VERSION" ; const EXTRA_CRC : u8 = 217u8 ; const ENCODED_LEN : usize = 22usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . version = buf . get_u16_le () ; __struct . min_version = buf . get_u16_le () ; __struct . max_version = buf . get_u16_le () ; for v in & mut __struct . spec_version_hash { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . library_version_hash { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . version) ; __tmp . put_u16_le (self . min_version) ; __tmp . put_u16_le (self . max_version) ; for val in & self . spec_version_hash { __tmp . put_u8 (* val) ; } for val in & self . library_version_hash { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MESSAGE_INTERVAL_DATA { pub interval_us : i32 , pub message_id : u16 , } impl MESSAGE_INTERVAL_DATA { pub const ENCODED_LEN : usize = 6usize ; pub const DEFAULT : Self = Self { interval_us : 0_i32 , message_id : 0_u16 , } ; } impl Default for MESSAGE_INTERVAL_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MESSAGE_INTERVAL_DATA { type Message = MavMessage ; const ID : u32 = 244u32 ; const NAME : & 'static str = "MESSAGE_INTERVAL" ; const EXTRA_CRC : u8 = 95u8 ; const ENCODED_LEN : usize = 6usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . interval_us = buf . get_i32_le () ; __struct . message_id = buf . get_u16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . interval_us) ; __tmp . put_u16_le (self . message_id) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct OPEN_DRONE_ID_SYSTEM_DATA { pub operator_latitude : i32 , pub operator_longitude : i32 , pub area_ceiling : f32 , pub area_floor : f32 , pub operator_altitude_geo : f32 , pub timestamp : u32 , pub area_count : u16 , pub area_radius : u16 , pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub id_or_mac : [u8 ; 20] , pub operator_location_type : MavOdidOperatorLocationType , pub classification_type : MavOdidClassificationType , pub category_eu : MavOdidCategoryEu , pub class_eu : MavOdidClassEu , } impl OPEN_DRONE_ID_SYSTEM_DATA { pub const ENCODED_LEN : usize = 54usize ; pub const DEFAULT : Self = Self { operator_latitude : 0_i32 , operator_longitude : 0_i32 , area_ceiling : 0.0_f32 , area_floor : 0.0_f32 , operator_altitude_geo : 0.0_f32 , timestamp : 0_u32 , area_count : 0_u16 , area_radius : 0_u16 , target_system : 0_u8 , target_component : 0_u8 , id_or_mac : [0_u8 ; 20usize] , operator_location_type : MavOdidOperatorLocationType :: DEFAULT , classification_type : MavOdidClassificationType :: DEFAULT , category_eu : MavOdidCategoryEu :: DEFAULT , class_eu : MavOdidClassEu :: DEFAULT , } ; } impl Default for OPEN_DRONE_ID_SYSTEM_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for OPEN_DRONE_ID_SYSTEM_DATA { type Message = MavMessage ; const ID : u32 = 12904u32 ; const NAME : & 'static str = "OPEN_DRONE_ID_SYSTEM" ; const EXTRA_CRC : u8 = 77u8 ; const ENCODED_LEN : usize = 54usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . operator_latitude = buf . get_i32_le () ; __struct . operator_longitude = buf . get_i32_le () ; __struct . area_ceiling = buf . get_f32_le () ; __struct . area_floor = buf . get_f32_le () ; __struct . operator_altitude_geo = buf . get_f32_le () ; __struct . timestamp = buf . get_u32_le () ; __struct . area_count = buf . get_u16_le () ; __struct . area_radius = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . id_or_mac { let val = buf . get_u8 () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . operator_location_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidOperatorLocationType" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . classification_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidClassificationType" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . category_eu = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidCategoryEu" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . class_eu = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidClassEu" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . operator_latitude) ; __tmp . put_i32_le (self . operator_longitude) ; __tmp . put_f32_le (self . area_ceiling) ; __tmp . put_f32_le (self . area_floor) ; __tmp . put_f32_le (self . operator_altitude_geo) ; __tmp . put_u32_le (self . timestamp) ; __tmp . put_u16_le (self . area_count) ; __tmp . put_u16_le (self . area_radius) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . id_or_mac { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . operator_location_type as u8) ; __tmp . put_u8 (self . classification_type as u8) ; __tmp . put_u8 (self . category_eu as u8) ; __tmp . put_u8 (self . class_eu as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ORBIT_EXECUTION_STATUS_DATA { pub time_usec : u64 , pub radius : f32 , pub x : i32 , pub y : i32 , pub z : f32 , pub frame : MavFrame , } impl ORBIT_EXECUTION_STATUS_DATA { pub const ENCODED_LEN : usize = 25usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , radius : 0.0_f32 , x : 0_i32 , y : 0_i32 , z : 0.0_f32 , frame : MavFrame :: DEFAULT , } ; } impl Default for ORBIT_EXECUTION_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ORBIT_EXECUTION_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 360u32 ; const NAME : & 'static str = "ORBIT_EXECUTION_STATUS" ; const EXTRA_CRC : u8 = 11u8 ; const ENCODED_LEN : usize = 25usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . radius = buf . get_f32_le () ; __struct . x = buf . get_i32_le () ; __struct . y = buf . get_i32_le () ; __struct . z = buf . get_f32_le () ; let tmp = buf . get_u8 () ; __struct . frame = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavFrame" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . radius) ; __tmp . put_i32_le (self . x) ; __tmp . put_i32_le (self . y) ; __tmp . put_f32_le (self . z) ; __tmp . put_u8 (self . frame as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SETUP_SIGNING_DATA { pub initial_timestamp : u64 , pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub secret_key : [u8 ; 32] , } impl SETUP_SIGNING_DATA { pub const ENCODED_LEN : usize = 42usize ; pub const DEFAULT : Self = Self { initial_timestamp : 0_u64 , target_system : 0_u8 , target_component : 0_u8 , secret_key : [0_u8 ; 32usize] , } ; } impl Default for SETUP_SIGNING_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SETUP_SIGNING_DATA { type Message = MavMessage ; const ID : u32 = 256u32 ; const NAME : & 'static str = "SETUP_SIGNING" ; const EXTRA_CRC : u8 = 71u8 ; const ENCODED_LEN : usize = 42usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . initial_timestamp = buf . get_u64_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . secret_key { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . initial_timestamp) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . secret_key { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct OBSTACLE_DISTANCE_DATA { pub time_usec : u64 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub distances : [u16 ; 72] , pub min_distance : u16 , pub max_distance : u16 , pub sensor_type : MavDistanceSensor , pub increment : u8 , } impl OBSTACLE_DISTANCE_DATA { pub const ENCODED_LEN : usize = 158usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , distances : [0_u16 ; 72usize] , min_distance : 0_u16 , max_distance : 0_u16 , sensor_type : MavDistanceSensor :: DEFAULT , increment : 0_u8 , } ; } impl Default for OBSTACLE_DISTANCE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for OBSTACLE_DISTANCE_DATA { type Message = MavMessage ; const ID : u32 = 330u32 ; const NAME : & 'static str = "OBSTACLE_DISTANCE" ; const EXTRA_CRC : u8 = 23u8 ; const ENCODED_LEN : usize = 158usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; for v in & mut __struct . distances { let val = buf . get_u16_le () ; * v = val ; } __struct . min_distance = buf . get_u16_le () ; __struct . max_distance = buf . get_u16_le () ; let tmp = buf . get_u8 () ; __struct . sensor_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavDistanceSensor" , value : tmp as u32 }) ? ; __struct . increment = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; for val in & self . distances { __tmp . put_u16_le (* val) ; } __tmp . put_u16_le (self . min_distance) ; __tmp . put_u16_le (self . max_distance) ; __tmp . put_u8 (self . sensor_type as u8) ; __tmp . put_u8 (self . increment) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CAMERA_FOV_STATUS_DATA { pub time_boot_ms : u32 , pub lat_camera : i32 , pub lon_camera : i32 , pub alt_camera : i32 , pub lat_image : i32 , pub lon_image : i32 , pub alt_image : i32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub q : [f32 ; 4] , pub hfov : f32 , pub vfov : f32 , } impl CAMERA_FOV_STATUS_DATA { pub const ENCODED_LEN : usize = 52usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , lat_camera : 0_i32 , lon_camera : 0_i32 , alt_camera : 0_i32 , lat_image : 0_i32 , lon_image : 0_i32 , alt_image : 0_i32 , q : [0.0_f32 ; 4usize] , hfov : 0.0_f32 , vfov : 0.0_f32 , } ; } impl Default for CAMERA_FOV_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CAMERA_FOV_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 271u32 ; const NAME : & 'static str = "CAMERA_FOV_STATUS" ; const EXTRA_CRC : u8 = 22u8 ; const ENCODED_LEN : usize = 52usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . lat_camera = buf . get_i32_le () ; __struct . lon_camera = buf . get_i32_le () ; __struct . alt_camera = buf . get_i32_le () ; __struct . lat_image = buf . get_i32_le () ; __struct . lon_image = buf . get_i32_le () ; __struct . alt_image = buf . get_i32_le () ; for v in & mut __struct . q { let val = buf . get_f32_le () ; * v = val ; } __struct . hfov = buf . get_f32_le () ; __struct . vfov = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_i32_le (self . lat_camera) ; __tmp . put_i32_le (self . lon_camera) ; __tmp . put_i32_le (self . alt_camera) ; __tmp . put_i32_le (self . lat_image) ; __tmp . put_i32_le (self . lon_image) ; __tmp . put_i32_le (self . alt_image) ; for val in & self . q { __tmp . put_f32_le (* val) ; } __tmp . put_f32_le (self . hfov) ; __tmp . put_f32_le (self . vfov) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ATTITUDE_QUATERNION_DATA { pub time_boot_ms : u32 , pub q1 : f32 , pub q2 : f32 , pub q3 : f32 , pub q4 : f32 , pub rollspeed : f32 , pub pitchspeed : f32 , pub yawspeed : f32 , } impl ATTITUDE_QUATERNION_DATA { pub const ENCODED_LEN : usize = 32usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , q1 : 0.0_f32 , q2 : 0.0_f32 , q3 : 0.0_f32 , q4 : 0.0_f32 , rollspeed : 0.0_f32 , pitchspeed : 0.0_f32 , yawspeed : 0.0_f32 , } ; } impl Default for ATTITUDE_QUATERNION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ATTITUDE_QUATERNION_DATA { type Message = MavMessage ; const ID : u32 = 31u32 ; const NAME : & 'static str = "ATTITUDE_QUATERNION" ; const EXTRA_CRC : u8 = 246u8 ; const ENCODED_LEN : usize = 32usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . q1 = buf . get_f32_le () ; __struct . q2 = buf . get_f32_le () ; __struct . q3 = buf . get_f32_le () ; __struct . q4 = buf . get_f32_le () ; __struct . rollspeed = buf . get_f32_le () ; __struct . pitchspeed = buf . get_f32_le () ; __struct . yawspeed = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . q1) ; __tmp . put_f32_le (self . q2) ; __tmp . put_f32_le (self . q3) ; __tmp . put_f32_le (self . q4) ; __tmp . put_f32_le (self . rollspeed) ; __tmp . put_f32_le (self . pitchspeed) ; __tmp . put_f32_le (self . yawspeed) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GENERATOR_STATUS_DATA { pub status : MavGeneratorStatusFlag , pub battery_current : f32 , pub load_current : f32 , pub power_generated : f32 , pub bus_voltage : f32 , pub bat_current_setpoint : f32 , pub runtime : u32 , pub time_until_maintenance : i32 , pub generator_speed : u16 , pub rectifier_temperature : i16 , pub generator_temperature : i16 , } impl GENERATOR_STATUS_DATA { pub const ENCODED_LEN : usize = 42usize ; pub const DEFAULT : Self = Self { status : MavGeneratorStatusFlag :: DEFAULT , battery_current : 0.0_f32 , load_current : 0.0_f32 , power_generated : 0.0_f32 , bus_voltage : 0.0_f32 , bat_current_setpoint : 0.0_f32 , runtime : 0_u32 , time_until_maintenance : 0_i32 , generator_speed : 0_u16 , rectifier_temperature : 0_i16 , generator_temperature : 0_i16 , } ; } impl Default for GENERATOR_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GENERATOR_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 373u32 ; const NAME : & 'static str = "GENERATOR_STATUS" ; const EXTRA_CRC : u8 = 117u8 ; const ENCODED_LEN : usize = 42usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u64_le () ; __struct . status = MavGeneratorStatusFlag :: from_bits (tmp & MavGeneratorStatusFlag :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "MavGeneratorStatusFlag" , value : tmp as u32 }) ? ; __struct . battery_current = buf . get_f32_le () ; __struct . load_current = buf . get_f32_le () ; __struct . power_generated = buf . get_f32_le () ; __struct . bus_voltage = buf . get_f32_le () ; __struct . bat_current_setpoint = buf . get_f32_le () ; __struct . runtime = buf . get_u32_le () ; __struct . time_until_maintenance = buf . get_i32_le () ; __struct . generator_speed = buf . get_u16_le () ; __struct . rectifier_temperature = buf . get_i16_le () ; __struct . generator_temperature = buf . get_i16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . status . bits ()) ; __tmp . put_f32_le (self . battery_current) ; __tmp . put_f32_le (self . load_current) ; __tmp . put_f32_le (self . power_generated) ; __tmp . put_f32_le (self . bus_voltage) ; __tmp . put_f32_le (self . bat_current_setpoint) ; __tmp . put_u32_le (self . runtime) ; __tmp . put_i32_le (self . time_until_maintenance) ; __tmp . put_u16_le (self . generator_speed) ; __tmp . put_i16_le (self . rectifier_temperature) ; __tmp . put_i16_le (self . generator_temperature) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct POSITION_TARGET_LOCAL_NED_DATA { pub time_boot_ms : u32 , pub x : f32 , pub y : f32 , pub z : f32 , pub vx : f32 , pub vy : f32 , pub vz : f32 , pub afx : f32 , pub afy : f32 , pub afz : f32 , pub yaw : f32 , pub yaw_rate : f32 , pub type_mask : PositionTargetTypemask , pub coordinate_frame : MavFrame , } impl POSITION_TARGET_LOCAL_NED_DATA { pub const ENCODED_LEN : usize = 51usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , x : 0.0_f32 , y : 0.0_f32 , z : 0.0_f32 , vx : 0.0_f32 , vy : 0.0_f32 , vz : 0.0_f32 , afx : 0.0_f32 , afy : 0.0_f32 , afz : 0.0_f32 , yaw : 0.0_f32 , yaw_rate : 0.0_f32 , type_mask : PositionTargetTypemask :: DEFAULT , coordinate_frame : MavFrame :: DEFAULT , } ; } impl Default for POSITION_TARGET_LOCAL_NED_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for POSITION_TARGET_LOCAL_NED_DATA { type Message = MavMessage ; const ID : u32 = 85u32 ; const NAME : & 'static str = "POSITION_TARGET_LOCAL_NED" ; const EXTRA_CRC : u8 = 140u8 ; const ENCODED_LEN : usize = 51usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . x = buf . get_f32_le () ; __struct . y = buf . get_f32_le () ; __struct . z = buf . get_f32_le () ; __struct . vx = buf . get_f32_le () ; __struct . vy = buf . get_f32_le () ; __struct . vz = buf . get_f32_le () ; __struct . afx = buf . get_f32_le () ; __struct . afy = buf . get_f32_le () ; __struct . afz = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; __struct . yaw_rate = buf . get_f32_le () ; let tmp = buf . get_u16_le () ; __struct . type_mask = PositionTargetTypemask :: from_bits (tmp & PositionTargetTypemask :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "PositionTargetTypemask" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . coordinate_frame = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavFrame" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; __tmp . put_f32_le (self . vx) ; __tmp . put_f32_le (self . vy) ; __tmp . put_f32_le (self . vz) ; __tmp . put_f32_le (self . afx) ; __tmp . put_f32_le (self . afy) ; __tmp . put_f32_le (self . afz) ; __tmp . put_f32_le (self . yaw) ; __tmp . put_f32_le (self . yaw_rate) ; __tmp . put_u16_le (self . type_mask . bits ()) ; __tmp . put_u8 (self . coordinate_frame as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HYGROMETER_SENSOR_DATA { pub temperature : i16 , pub humidity : u16 , pub id : u8 , } impl HYGROMETER_SENSOR_DATA { pub const ENCODED_LEN : usize = 5usize ; pub const DEFAULT : Self = Self { temperature : 0_i16 , humidity : 0_u16 , id : 0_u8 , } ; } impl Default for HYGROMETER_SENSOR_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for HYGROMETER_SENSOR_DATA { type Message = MavMessage ; const ID : u32 = 12920u32 ; const NAME : & 'static str = "HYGROMETER_SENSOR" ; const EXTRA_CRC : u8 = 20u8 ; const ENCODED_LEN : usize = 5usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . temperature = buf . get_i16_le () ; __struct . humidity = buf . get_u16_le () ; __struct . id = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i16_le (self . temperature) ; __tmp . put_u16_le (self . humidity) ; __tmp . put_u8 (self . id) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct TIME_ESTIMATE_TO_TARGET_DATA { pub safe_return : i32 , pub land : i32 , pub mission_next_item : i32 , pub mission_end : i32 , pub commanded_action : i32 , } impl TIME_ESTIMATE_TO_TARGET_DATA { pub const ENCODED_LEN : usize = 20usize ; pub const DEFAULT : Self = Self { safe_return : 0_i32 , land : 0_i32 , mission_next_item : 0_i32 , mission_end : 0_i32 , commanded_action : 0_i32 , } ; } impl Default for TIME_ESTIMATE_TO_TARGET_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for TIME_ESTIMATE_TO_TARGET_DATA { type Message = MavMessage ; const ID : u32 = 380u32 ; const NAME : & 'static str = "TIME_ESTIMATE_TO_TARGET" ; const EXTRA_CRC : u8 = 232u8 ; const ENCODED_LEN : usize = 20usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . safe_return = buf . get_i32_le () ; __struct . land = buf . get_i32_le () ; __struct . mission_next_item = buf . get_i32_le () ; __struct . mission_end = buf . get_i32_le () ; __struct . commanded_action = buf . get_i32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . safe_return) ; __tmp . put_i32_le (self . land) ; __tmp . put_i32_le (self . mission_next_item) ; __tmp . put_i32_le (self . mission_end) ; __tmp . put_i32_le (self . commanded_action) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MISSION_CURRENT_DATA { pub seq : u16 , } impl MISSION_CURRENT_DATA { pub const ENCODED_LEN : usize = 2usize ; pub const DEFAULT : Self = Self { seq : 0_u16 , } ; } impl Default for MISSION_CURRENT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MISSION_CURRENT_DATA { type Message = MavMessage ; const ID : u32 = 42u32 ; const NAME : & 'static str = "MISSION_CURRENT" ; const EXTRA_CRC : u8 = 28u8 ; const ENCODED_LEN : usize = 2usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . seq = buf . get_u16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . seq) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SYSTEM_TIME_DATA { pub time_unix_usec : u64 , pub time_boot_ms : u32 , } impl SYSTEM_TIME_DATA { pub const ENCODED_LEN : usize = 12usize ; pub const DEFAULT : Self = Self { time_unix_usec : 0_u64 , time_boot_ms : 0_u32 , } ; } impl Default for SYSTEM_TIME_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SYSTEM_TIME_DATA { type Message = MavMessage ; const ID : u32 = 2u32 ; const NAME : & 'static str = "SYSTEM_TIME" ; const EXTRA_CRC : u8 = 137u8 ; const ENCODED_LEN : usize = 12usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_unix_usec = buf . get_u64_le () ; __struct . time_boot_ms = buf . get_u32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_unix_usec) ; __tmp . put_u32_le (self . time_boot_ms) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HIGHRES_IMU_DATA { pub time_usec : u64 , pub xacc : f32 , pub yacc : f32 , pub zacc : f32 , pub xgyro : f32 , pub ygyro : f32 , pub zgyro : f32 , pub xmag : f32 , pub ymag : f32 , pub zmag : f32 , pub abs_pressure : f32 , pub diff_pressure : f32 , pub pressure_alt : f32 , pub temperature : f32 , pub fields_updated : HighresImuUpdatedFlags , } impl HIGHRES_IMU_DATA { pub const ENCODED_LEN : usize = 62usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , xacc : 0.0_f32 , yacc : 0.0_f32 , zacc : 0.0_f32 , xgyro : 0.0_f32 , ygyro : 0.0_f32 , zgyro : 0.0_f32 , xmag : 0.0_f32 , ymag : 0.0_f32 , zmag : 0.0_f32 , abs_pressure : 0.0_f32 , diff_pressure : 0.0_f32 , pressure_alt : 0.0_f32 , temperature : 0.0_f32 , fields_updated : HighresImuUpdatedFlags :: DEFAULT , } ; } impl Default for HIGHRES_IMU_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for HIGHRES_IMU_DATA { type Message = MavMessage ; const ID : u32 = 105u32 ; const NAME : & 'static str = "HIGHRES_IMU" ; const EXTRA_CRC : u8 = 93u8 ; const ENCODED_LEN : usize = 62usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . xacc = buf . get_f32_le () ; __struct . yacc = buf . get_f32_le () ; __struct . zacc = buf . get_f32_le () ; __struct . xgyro = buf . get_f32_le () ; __struct . ygyro = buf . get_f32_le () ; __struct . zgyro = buf . get_f32_le () ; __struct . xmag = buf . get_f32_le () ; __struct . ymag = buf . get_f32_le () ; __struct . zmag = buf . get_f32_le () ; __struct . abs_pressure = buf . get_f32_le () ; __struct . diff_pressure = buf . get_f32_le () ; __struct . pressure_alt = buf . get_f32_le () ; __struct . temperature = buf . get_f32_le () ; let tmp = buf . get_u16_le () ; __struct . fields_updated = HighresImuUpdatedFlags :: from_bits (tmp & HighresImuUpdatedFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "HighresImuUpdatedFlags" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . xacc) ; __tmp . put_f32_le (self . yacc) ; __tmp . put_f32_le (self . zacc) ; __tmp . put_f32_le (self . xgyro) ; __tmp . put_f32_le (self . ygyro) ; __tmp . put_f32_le (self . zgyro) ; __tmp . put_f32_le (self . xmag) ; __tmp . put_f32_le (self . ymag) ; __tmp . put_f32_le (self . zmag) ; __tmp . put_f32_le (self . abs_pressure) ; __tmp . put_f32_le (self . diff_pressure) ; __tmp . put_f32_le (self . pressure_alt) ; __tmp . put_f32_le (self . temperature) ; __tmp . put_u16_le (self . fields_updated . bits ()) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct REQUEST_DATA_STREAM_DATA { pub req_message_rate : u16 , pub target_system : u8 , pub target_component : u8 , pub req_stream_id : u8 , pub start_stop : u8 , } impl REQUEST_DATA_STREAM_DATA { pub const ENCODED_LEN : usize = 6usize ; pub const DEFAULT : Self = Self { req_message_rate : 0_u16 , target_system : 0_u8 , target_component : 0_u8 , req_stream_id : 0_u8 , start_stop : 0_u8 , } ; } impl Default for REQUEST_DATA_STREAM_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for REQUEST_DATA_STREAM_DATA { type Message = MavMessage ; const ID : u32 = 66u32 ; const NAME : & 'static str = "REQUEST_DATA_STREAM" ; const EXTRA_CRC : u8 = 148u8 ; const ENCODED_LEN : usize = 6usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . req_message_rate = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . req_stream_id = buf . get_u8 () ; __struct . start_stop = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . req_message_rate) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . req_stream_id) ; __tmp . put_u8 (self . start_stop) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GPS_RTK_DATA { pub time_last_baseline_ms : u32 , pub tow : u32 , pub baseline_a_mm : i32 , pub baseline_b_mm : i32 , pub baseline_c_mm : i32 , pub accuracy : u32 , pub iar_num_hypotheses : i32 , pub wn : u16 , pub rtk_receiver_id : u8 , pub rtk_health : u8 , pub rtk_rate : u8 , pub nsats : u8 , pub baseline_coords_type : RtkBaselineCoordinateSystem , } impl GPS_RTK_DATA { pub const ENCODED_LEN : usize = 35usize ; pub const DEFAULT : Self = Self { time_last_baseline_ms : 0_u32 , tow : 0_u32 , baseline_a_mm : 0_i32 , baseline_b_mm : 0_i32 , baseline_c_mm : 0_i32 , accuracy : 0_u32 , iar_num_hypotheses : 0_i32 , wn : 0_u16 , rtk_receiver_id : 0_u8 , rtk_health : 0_u8 , rtk_rate : 0_u8 , nsats : 0_u8 , baseline_coords_type : RtkBaselineCoordinateSystem :: DEFAULT , } ; } impl Default for GPS_RTK_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GPS_RTK_DATA { type Message = MavMessage ; const ID : u32 = 127u32 ; const NAME : & 'static str = "GPS_RTK" ; const EXTRA_CRC : u8 = 25u8 ; const ENCODED_LEN : usize = 35usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_last_baseline_ms = buf . get_u32_le () ; __struct . tow = buf . get_u32_le () ; __struct . baseline_a_mm = buf . get_i32_le () ; __struct . baseline_b_mm = buf . get_i32_le () ; __struct . baseline_c_mm = buf . get_i32_le () ; __struct . accuracy = buf . get_u32_le () ; __struct . iar_num_hypotheses = buf . get_i32_le () ; __struct . wn = buf . get_u16_le () ; __struct . rtk_receiver_id = buf . get_u8 () ; __struct . rtk_health = buf . get_u8 () ; __struct . rtk_rate = buf . get_u8 () ; __struct . nsats = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . baseline_coords_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "RtkBaselineCoordinateSystem" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_last_baseline_ms) ; __tmp . put_u32_le (self . tow) ; __tmp . put_i32_le (self . baseline_a_mm) ; __tmp . put_i32_le (self . baseline_b_mm) ; __tmp . put_i32_le (self . baseline_c_mm) ; __tmp . put_u32_le (self . accuracy) ; __tmp . put_i32_le (self . iar_num_hypotheses) ; __tmp . put_u16_le (self . wn) ; __tmp . put_u8 (self . rtk_receiver_id) ; __tmp . put_u8 (self . rtk_health) ; __tmp . put_u8 (self . rtk_rate) ; __tmp . put_u8 (self . nsats) ; __tmp . put_u8 (self . baseline_coords_type as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct EFI_STATUS_DATA { pub ecu_index : f32 , pub rpm : f32 , pub fuel_consumed : f32 , pub fuel_flow : f32 , pub engine_load : f32 , pub throttle_position : f32 , pub spark_dwell_time : f32 , pub barometric_pressure : f32 , pub intake_manifold_pressure : f32 , pub intake_manifold_temperature : f32 , pub cylinder_head_temperature : f32 , pub ignition_timing : f32 , pub injection_time : f32 , pub exhaust_gas_temperature : f32 , pub throttle_out : f32 , pub pt_compensation : f32 , pub health : u8 , } impl EFI_STATUS_DATA { pub const ENCODED_LEN : usize = 65usize ; pub const DEFAULT : Self = Self { ecu_index : 0.0_f32 , rpm : 0.0_f32 , fuel_consumed : 0.0_f32 , fuel_flow : 0.0_f32 , engine_load : 0.0_f32 , throttle_position : 0.0_f32 , spark_dwell_time : 0.0_f32 , barometric_pressure : 0.0_f32 , intake_manifold_pressure : 0.0_f32 , intake_manifold_temperature : 0.0_f32 , cylinder_head_temperature : 0.0_f32 , ignition_timing : 0.0_f32 , injection_time : 0.0_f32 , exhaust_gas_temperature : 0.0_f32 , throttle_out : 0.0_f32 , pt_compensation : 0.0_f32 , health : 0_u8 , } ; } impl Default for EFI_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for EFI_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 225u32 ; const NAME : & 'static str = "EFI_STATUS" ; const EXTRA_CRC : u8 = 208u8 ; const ENCODED_LEN : usize = 65usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . ecu_index = buf . get_f32_le () ; __struct . rpm = buf . get_f32_le () ; __struct . fuel_consumed = buf . get_f32_le () ; __struct . fuel_flow = buf . get_f32_le () ; __struct . engine_load = buf . get_f32_le () ; __struct . throttle_position = buf . get_f32_le () ; __struct . spark_dwell_time = buf . get_f32_le () ; __struct . barometric_pressure = buf . get_f32_le () ; __struct . intake_manifold_pressure = buf . get_f32_le () ; __struct . intake_manifold_temperature = buf . get_f32_le () ; __struct . cylinder_head_temperature = buf . get_f32_le () ; __struct . ignition_timing = buf . get_f32_le () ; __struct . injection_time = buf . get_f32_le () ; __struct . exhaust_gas_temperature = buf . get_f32_le () ; __struct . throttle_out = buf . get_f32_le () ; __struct . pt_compensation = buf . get_f32_le () ; __struct . health = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . ecu_index) ; __tmp . put_f32_le (self . rpm) ; __tmp . put_f32_le (self . fuel_consumed) ; __tmp . put_f32_le (self . fuel_flow) ; __tmp . put_f32_le (self . engine_load) ; __tmp . put_f32_le (self . throttle_position) ; __tmp . put_f32_le (self . spark_dwell_time) ; __tmp . put_f32_le (self . barometric_pressure) ; __tmp . put_f32_le (self . intake_manifold_pressure) ; __tmp . put_f32_le (self . intake_manifold_temperature) ; __tmp . put_f32_le (self . cylinder_head_temperature) ; __tmp . put_f32_le (self . ignition_timing) ; __tmp . put_f32_le (self . injection_time) ; __tmp . put_f32_le (self . exhaust_gas_temperature) ; __tmp . put_f32_le (self . throttle_out) ; __tmp . put_f32_le (self . pt_compensation) ; __tmp . put_u8 (self . health) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MISSION_REQUEST_LIST_DATA { pub target_system : u8 , pub target_component : u8 , } impl MISSION_REQUEST_LIST_DATA { pub const ENCODED_LEN : usize = 2usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for MISSION_REQUEST_LIST_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MISSION_REQUEST_LIST_DATA { type Message = MavMessage ; const ID : u32 = 43u32 ; const NAME : & 'static str = "MISSION_REQUEST_LIST" ; const EXTRA_CRC : u8 = 132u8 ; const ENCODED_LEN : usize = 2usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SMART_BATTERY_INFO_DATA { pub capacity_full_specification : i32 , pub capacity_full : i32 , pub cycle_count : u16 , pub weight : u16 , pub discharge_minimum_voltage : u16 , pub charging_minimum_voltage : u16 , pub resting_minimum_voltage : u16 , pub id : u8 , pub battery_function : MavBatteryFunction , pub mavtype : MavBatteryType , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub serial_number : [u8 ; 16] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub device_name : [u8 ; 50] , } impl SMART_BATTERY_INFO_DATA { pub const ENCODED_LEN : usize = 87usize ; pub const DEFAULT : Self = Self { capacity_full_specification : 0_i32 , capacity_full : 0_i32 , cycle_count : 0_u16 , weight : 0_u16 , discharge_minimum_voltage : 0_u16 , charging_minimum_voltage : 0_u16 , resting_minimum_voltage : 0_u16 , id : 0_u8 , battery_function : MavBatteryFunction :: DEFAULT , mavtype : MavBatteryType :: DEFAULT , serial_number : [0_u8 ; 16usize] , device_name : [0_u8 ; 50usize] , } ; } impl Default for SMART_BATTERY_INFO_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SMART_BATTERY_INFO_DATA { type Message = MavMessage ; const ID : u32 = 370u32 ; const NAME : & 'static str = "SMART_BATTERY_INFO" ; const EXTRA_CRC : u8 = 75u8 ; const ENCODED_LEN : usize = 87usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . capacity_full_specification = buf . get_i32_le () ; __struct . capacity_full = buf . get_i32_le () ; __struct . cycle_count = buf . get_u16_le () ; __struct . weight = buf . get_u16_le () ; __struct . discharge_minimum_voltage = buf . get_u16_le () ; __struct . charging_minimum_voltage = buf . get_u16_le () ; __struct . resting_minimum_voltage = buf . get_u16_le () ; __struct . id = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . battery_function = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavBatteryFunction" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . mavtype = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavBatteryType" , value : tmp as u32 }) ? ; for v in & mut __struct . serial_number { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . device_name { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . capacity_full_specification) ; __tmp . put_i32_le (self . capacity_full) ; __tmp . put_u16_le (self . cycle_count) ; __tmp . put_u16_le (self . weight) ; __tmp . put_u16_le (self . discharge_minimum_voltage) ; __tmp . put_u16_le (self . charging_minimum_voltage) ; __tmp . put_u16_le (self . resting_minimum_voltage) ; __tmp . put_u8 (self . id) ; __tmp . put_u8 (self . battery_function as u8) ; __tmp . put_u8 (self . mavtype as u8) ; for val in & self . serial_number { __tmp . put_u8 (* val) ; } for val in & self . device_name { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CELLULAR_CONFIG_DATA { pub enable_lte : u8 , pub enable_pin : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub pin : [u8 ; 16] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub new_pin : [u8 ; 16] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub apn : [u8 ; 32] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub puk : [u8 ; 16] , pub roaming : u8 , pub response : CellularConfigResponse , } impl CELLULAR_CONFIG_DATA { pub const ENCODED_LEN : usize = 84usize ; pub const DEFAULT : Self = Self { enable_lte : 0_u8 , enable_pin : 0_u8 , pin : [0_u8 ; 16usize] , new_pin : [0_u8 ; 16usize] , apn : [0_u8 ; 32usize] , puk : [0_u8 ; 16usize] , roaming : 0_u8 , response : CellularConfigResponse :: DEFAULT , } ; } impl Default for CELLULAR_CONFIG_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CELLULAR_CONFIG_DATA { type Message = MavMessage ; const ID : u32 = 336u32 ; const NAME : & 'static str = "CELLULAR_CONFIG" ; const EXTRA_CRC : u8 = 245u8 ; const ENCODED_LEN : usize = 84usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . enable_lte = buf . get_u8 () ; __struct . enable_pin = buf . get_u8 () ; for v in & mut __struct . pin { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . new_pin { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . apn { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . puk { let val = buf . get_u8 () ; * v = val ; } __struct . roaming = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . response = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "CellularConfigResponse" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . enable_lte) ; __tmp . put_u8 (self . enable_pin) ; for val in & self . pin { __tmp . put_u8 (* val) ; } for val in & self . new_pin { __tmp . put_u8 (* val) ; } for val in & self . apn { __tmp . put_u8 (* val) ; } for val in & self . puk { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . roaming) ; __tmp . put_u8 (self . response as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CHANGE_OPERATOR_CONTROL_DATA { pub target_system : u8 , pub control_request : u8 , pub version : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub passkey : [u8 ; 25] , } impl CHANGE_OPERATOR_CONTROL_DATA { pub const ENCODED_LEN : usize = 28usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , control_request : 0_u8 , version : 0_u8 , passkey : [0_u8 ; 25usize] , } ; } impl Default for CHANGE_OPERATOR_CONTROL_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CHANGE_OPERATOR_CONTROL_DATA { type Message = MavMessage ; const ID : u32 = 5u32 ; const NAME : & 'static str = "CHANGE_OPERATOR_CONTROL" ; const EXTRA_CRC : u8 = 217u8 ; const ENCODED_LEN : usize = 28usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . control_request = buf . get_u8 () ; __struct . version = buf . get_u8 () ; for v in & mut __struct . passkey { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . control_request) ; __tmp . put_u8 (self . version) ; for val in & self . passkey { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct UAVIONIX_ADSB_OUT_CFG_DATA { pub ICAO : u32 , pub stallSpeed : u16 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub callsign : [u8 ; 9] , pub emitterType : AdsbEmitterType , pub aircraftSize : UavionixAdsbOutCfgAircraftSize , pub gpsOffsetLat : UavionixAdsbOutCfgGpsOffsetLat , pub gpsOffsetLon : UavionixAdsbOutCfgGpsOffsetLon , pub rfSelect : UavionixAdsbOutRfSelect , } impl UAVIONIX_ADSB_OUT_CFG_DATA { pub const ENCODED_LEN : usize = 20usize ; pub const DEFAULT : Self = Self { ICAO : 0_u32 , stallSpeed : 0_u16 , callsign : [0_u8 ; 9usize] , emitterType : AdsbEmitterType :: DEFAULT , aircraftSize : UavionixAdsbOutCfgAircraftSize :: DEFAULT , gpsOffsetLat : UavionixAdsbOutCfgGpsOffsetLat :: DEFAULT , gpsOffsetLon : UavionixAdsbOutCfgGpsOffsetLon :: DEFAULT , rfSelect : UavionixAdsbOutRfSelect :: DEFAULT , } ; } impl Default for UAVIONIX_ADSB_OUT_CFG_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for UAVIONIX_ADSB_OUT_CFG_DATA { type Message = MavMessage ; const ID : u32 = 10001u32 ; const NAME : & 'static str = "UAVIONIX_ADSB_OUT_CFG" ; const EXTRA_CRC : u8 = 209u8 ; const ENCODED_LEN : usize = 20usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . ICAO = buf . get_u32_le () ; __struct . stallSpeed = buf . get_u16_le () ; for v in & mut __struct . callsign { let val = buf . get_u8 () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . emitterType = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "AdsbEmitterType" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . aircraftSize = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "UavionixAdsbOutCfgAircraftSize" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . gpsOffsetLat = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "UavionixAdsbOutCfgGpsOffsetLat" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . gpsOffsetLon = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "UavionixAdsbOutCfgGpsOffsetLon" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . rfSelect = UavionixAdsbOutRfSelect :: from_bits (tmp & UavionixAdsbOutRfSelect :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "UavionixAdsbOutRfSelect" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . ICAO) ; __tmp . put_u16_le (self . stallSpeed) ; for val in & self . callsign { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . emitterType as u8) ; __tmp . put_u8 (self . aircraftSize as u8) ; __tmp . put_u8 (self . gpsOffsetLat as u8) ; __tmp . put_u8 (self . gpsOffsetLon as u8) ; __tmp . put_u8 (self . rfSelect . bits ()) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA { pub rfHealth : UavionixAdsbRfHealth , } impl UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA { pub const ENCODED_LEN : usize = 1usize ; pub const DEFAULT : Self = Self { rfHealth : UavionixAdsbRfHealth :: DEFAULT , } ; } impl Default for UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA { type Message = MavMessage ; const ID : u32 = 10003u32 ; const NAME : & 'static str = "UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT" ; const EXTRA_CRC : u8 = 4u8 ; const ENCODED_LEN : usize = 1usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u8 () ; __struct . rfHealth = UavionixAdsbRfHealth :: from_bits (tmp & UavionixAdsbRfHealth :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "UavionixAdsbRfHealth" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . rfHealth . bits ()) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PARAM_EXT_REQUEST_READ_DATA { pub param_index : i16 , pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub param_id : [u8 ; 16] , } impl PARAM_EXT_REQUEST_READ_DATA { pub const ENCODED_LEN : usize = 20usize ; pub const DEFAULT : Self = Self { param_index : 0_i16 , target_system : 0_u8 , target_component : 0_u8 , param_id : [0_u8 ; 16usize] , } ; } impl Default for PARAM_EXT_REQUEST_READ_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for PARAM_EXT_REQUEST_READ_DATA { type Message = MavMessage ; const ID : u32 = 320u32 ; const NAME : & 'static str = "PARAM_EXT_REQUEST_READ" ; const EXTRA_CRC : u8 = 243u8 ; const ENCODED_LEN : usize = 20usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . param_index = buf . get_i16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . param_id { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i16_le (self . param_index) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . param_id { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LANDING_TARGET_DATA { pub time_usec : u64 , pub angle_x : f32 , pub angle_y : f32 , pub distance : f32 , pub size_x : f32 , pub size_y : f32 , pub target_num : u8 , pub frame : MavFrame , } impl LANDING_TARGET_DATA { pub const ENCODED_LEN : usize = 30usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , angle_x : 0.0_f32 , angle_y : 0.0_f32 , distance : 0.0_f32 , size_x : 0.0_f32 , size_y : 0.0_f32 , target_num : 0_u8 , frame : MavFrame :: DEFAULT , } ; } impl Default for LANDING_TARGET_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for LANDING_TARGET_DATA { type Message = MavMessage ; const ID : u32 = 149u32 ; const NAME : & 'static str = "LANDING_TARGET" ; const EXTRA_CRC : u8 = 200u8 ; const ENCODED_LEN : usize = 30usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . angle_x = buf . get_f32_le () ; __struct . angle_y = buf . get_f32_le () ; __struct . distance = buf . get_f32_le () ; __struct . size_x = buf . get_f32_le () ; __struct . size_y = buf . get_f32_le () ; __struct . target_num = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . frame = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavFrame" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . angle_x) ; __tmp . put_f32_le (self . angle_y) ; __tmp . put_f32_le (self . distance) ; __tmp . put_f32_le (self . size_x) ; __tmp . put_f32_le (self . size_y) ; __tmp . put_u8 (self . target_num) ; __tmp . put_u8 (self . frame as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct EVENT_DATA { pub id : u32 , pub event_time_boot_ms : u32 , pub sequence : u16 , pub destination_component : u8 , pub destination_system : u8 , pub log_levels : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub arguments : [u8 ; 40] , } impl EVENT_DATA { pub const ENCODED_LEN : usize = 53usize ; pub const DEFAULT : Self = Self { id : 0_u32 , event_time_boot_ms : 0_u32 , sequence : 0_u16 , destination_component : 0_u8 , destination_system : 0_u8 , log_levels : 0_u8 , arguments : [0_u8 ; 40usize] , } ; } impl Default for EVENT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for EVENT_DATA { type Message = MavMessage ; const ID : u32 = 410u32 ; const NAME : & 'static str = "EVENT" ; const EXTRA_CRC : u8 = 160u8 ; const ENCODED_LEN : usize = 53usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . id = buf . get_u32_le () ; __struct . event_time_boot_ms = buf . get_u32_le () ; __struct . sequence = buf . get_u16_le () ; __struct . destination_component = buf . get_u8 () ; __struct . destination_system = buf . get_u8 () ; __struct . log_levels = buf . get_u8 () ; for v in & mut __struct . arguments { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . id) ; __tmp . put_u32_le (self . event_time_boot_ms) ; __tmp . put_u16_le (self . sequence) ; __tmp . put_u8 (self . destination_component) ; __tmp . put_u8 (self . destination_system) ; __tmp . put_u8 (self . log_levels) ; for val in & self . arguments { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct VFR_HUD_DATA { pub airspeed : f32 , pub groundspeed : f32 , pub alt : f32 , pub climb : f32 , pub heading : i16 , pub throttle : u16 , } impl VFR_HUD_DATA { pub const ENCODED_LEN : usize = 20usize ; pub const DEFAULT : Self = Self { airspeed : 0.0_f32 , groundspeed : 0.0_f32 , alt : 0.0_f32 , climb : 0.0_f32 , heading : 0_i16 , throttle : 0_u16 , } ; } impl Default for VFR_HUD_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for VFR_HUD_DATA { type Message = MavMessage ; const ID : u32 = 74u32 ; const NAME : & 'static str = "VFR_HUD" ; const EXTRA_CRC : u8 = 20u8 ; const ENCODED_LEN : usize = 20usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . airspeed = buf . get_f32_le () ; __struct . groundspeed = buf . get_f32_le () ; __struct . alt = buf . get_f32_le () ; __struct . climb = buf . get_f32_le () ; __struct . heading = buf . get_i16_le () ; __struct . throttle = buf . get_u16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . airspeed) ; __tmp . put_f32_le (self . groundspeed) ; __tmp . put_f32_le (self . alt) ; __tmp . put_f32_le (self . climb) ; __tmp . put_i16_le (self . heading) ; __tmp . put_u16_le (self . throttle) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HIL_RC_INPUTS_RAW_DATA { pub time_usec : u64 , pub chan1_raw : u16 , pub chan2_raw : u16 , pub chan3_raw : u16 , pub chan4_raw : u16 , pub chan5_raw : u16 , pub chan6_raw : u16 , pub chan7_raw : u16 , pub chan8_raw : u16 , pub chan9_raw : u16 , pub chan10_raw : u16 , pub chan11_raw : u16 , pub chan12_raw : u16 , pub rssi : u8 , } impl HIL_RC_INPUTS_RAW_DATA { pub const ENCODED_LEN : usize = 33usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , chan1_raw : 0_u16 , chan2_raw : 0_u16 , chan3_raw : 0_u16 , chan4_raw : 0_u16 , chan5_raw : 0_u16 , chan6_raw : 0_u16 , chan7_raw : 0_u16 , chan8_raw : 0_u16 , chan9_raw : 0_u16 , chan10_raw : 0_u16 , chan11_raw : 0_u16 , chan12_raw : 0_u16 , rssi : 0_u8 , } ; } impl Default for HIL_RC_INPUTS_RAW_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for HIL_RC_INPUTS_RAW_DATA { type Message = MavMessage ; const ID : u32 = 92u32 ; const NAME : & 'static str = "HIL_RC_INPUTS_RAW" ; const EXTRA_CRC : u8 = 54u8 ; const ENCODED_LEN : usize = 33usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . chan1_raw = buf . get_u16_le () ; __struct . chan2_raw = buf . get_u16_le () ; __struct . chan3_raw = buf . get_u16_le () ; __struct . chan4_raw = buf . get_u16_le () ; __struct . chan5_raw = buf . get_u16_le () ; __struct . chan6_raw = buf . get_u16_le () ; __struct . chan7_raw = buf . get_u16_le () ; __struct . chan8_raw = buf . get_u16_le () ; __struct . chan9_raw = buf . get_u16_le () ; __struct . chan10_raw = buf . get_u16_le () ; __struct . chan11_raw = buf . get_u16_le () ; __struct . chan12_raw = buf . get_u16_le () ; __struct . rssi = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_u16_le (self . chan1_raw) ; __tmp . put_u16_le (self . chan2_raw) ; __tmp . put_u16_le (self . chan3_raw) ; __tmp . put_u16_le (self . chan4_raw) ; __tmp . put_u16_le (self . chan5_raw) ; __tmp . put_u16_le (self . chan6_raw) ; __tmp . put_u16_le (self . chan7_raw) ; __tmp . put_u16_le (self . chan8_raw) ; __tmp . put_u16_le (self . chan9_raw) ; __tmp . put_u16_le (self . chan10_raw) ; __tmp . put_u16_le (self . chan11_raw) ; __tmp . put_u16_le (self . chan12_raw) ; __tmp . put_u8 (self . rssi) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SCALED_PRESSURE3_DATA { pub time_boot_ms : u32 , pub press_abs : f32 , pub press_diff : f32 , pub temperature : i16 , } impl SCALED_PRESSURE3_DATA { pub const ENCODED_LEN : usize = 14usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , press_abs : 0.0_f32 , press_diff : 0.0_f32 , temperature : 0_i16 , } ; } impl Default for SCALED_PRESSURE3_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SCALED_PRESSURE3_DATA { type Message = MavMessage ; const ID : u32 = 143u32 ; const NAME : & 'static str = "SCALED_PRESSURE3" ; const EXTRA_CRC : u8 = 131u8 ; const ENCODED_LEN : usize = 14usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . press_abs = buf . get_f32_le () ; __struct . press_diff = buf . get_f32_le () ; __struct . temperature = buf . get_i16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . press_abs) ; __tmp . put_f32_le (self . press_diff) ; __tmp . put_i16_le (self . temperature) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct COMMAND_CANCEL_DATA { pub command : MavCmd , pub target_system : u8 , pub target_component : u8 , } impl COMMAND_CANCEL_DATA { pub const ENCODED_LEN : usize = 4usize ; pub const DEFAULT : Self = Self { command : MavCmd :: DEFAULT , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for COMMAND_CANCEL_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for COMMAND_CANCEL_DATA { type Message = MavMessage ; const ID : u32 = 80u32 ; const NAME : & 'static str = "COMMAND_CANCEL" ; const EXTRA_CRC : u8 = 14u8 ; const ENCODED_LEN : usize = 4usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u16_le () ; __struct . command = FromPrimitive :: from_u16 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavCmd" , value : tmp as u32 }) ? ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . command as u16) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GIMBAL_MANAGER_STATUS_DATA { pub time_boot_ms : u32 , pub flags : GimbalManagerFlags , pub gimbal_device_id : u8 , pub primary_control_sysid : u8 , pub primary_control_compid : u8 , pub secondary_control_sysid : u8 , pub secondary_control_compid : u8 , } impl GIMBAL_MANAGER_STATUS_DATA { pub const ENCODED_LEN : usize = 13usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , flags : GimbalManagerFlags :: DEFAULT , gimbal_device_id : 0_u8 , primary_control_sysid : 0_u8 , primary_control_compid : 0_u8 , secondary_control_sysid : 0_u8 , secondary_control_compid : 0_u8 , } ; } impl Default for GIMBAL_MANAGER_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GIMBAL_MANAGER_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 281u32 ; const NAME : & 'static str = "GIMBAL_MANAGER_STATUS" ; const EXTRA_CRC : u8 = 48u8 ; const ENCODED_LEN : usize = 13usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; let tmp = buf . get_u32_le () ; __struct . flags = FromPrimitive :: from_u32 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "GimbalManagerFlags" , value : tmp as u32 }) ? ; __struct . gimbal_device_id = buf . get_u8 () ; __struct . primary_control_sysid = buf . get_u8 () ; __struct . primary_control_compid = buf . get_u8 () ; __struct . secondary_control_sysid = buf . get_u8 () ; __struct . secondary_control_compid = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_u32_le (self . flags as u32) ; __tmp . put_u8 (self . gimbal_device_id) ; __tmp . put_u8 (self . primary_control_sysid) ; __tmp . put_u8 (self . primary_control_compid) ; __tmp . put_u8 (self . secondary_control_sysid) ; __tmp . put_u8 (self . secondary_control_compid) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ATT_POS_MOCAP_DATA { pub time_usec : u64 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub q : [f32 ; 4] , pub x : f32 , pub y : f32 , pub z : f32 , } impl ATT_POS_MOCAP_DATA { pub const ENCODED_LEN : usize = 36usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , q : [0.0_f32 ; 4usize] , x : 0.0_f32 , y : 0.0_f32 , z : 0.0_f32 , } ; } impl Default for ATT_POS_MOCAP_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ATT_POS_MOCAP_DATA { type Message = MavMessage ; const ID : u32 = 138u32 ; const NAME : & 'static str = "ATT_POS_MOCAP" ; const EXTRA_CRC : u8 = 109u8 ; const ENCODED_LEN : usize = 36usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; for v in & mut __struct . q { let val = buf . get_f32_le () ; * v = val ; } __struct . x = buf . get_f32_le () ; __struct . y = buf . get_f32_le () ; __struct . z = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; for val in & self . q { __tmp . put_f32_le (* val) ; } __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HIL_CONTROLS_DATA { pub time_usec : u64 , pub roll_ailerons : f32 , pub pitch_elevator : f32 , pub yaw_rudder : f32 , pub throttle : f32 , pub aux1 : f32 , pub aux2 : f32 , pub aux3 : f32 , pub aux4 : f32 , pub mode : MavMode , pub nav_mode : u8 , } impl HIL_CONTROLS_DATA { pub const ENCODED_LEN : usize = 42usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , roll_ailerons : 0.0_f32 , pitch_elevator : 0.0_f32 , yaw_rudder : 0.0_f32 , throttle : 0.0_f32 , aux1 : 0.0_f32 , aux2 : 0.0_f32 , aux3 : 0.0_f32 , aux4 : 0.0_f32 , mode : MavMode :: DEFAULT , nav_mode : 0_u8 , } ; } impl Default for HIL_CONTROLS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for HIL_CONTROLS_DATA { type Message = MavMessage ; const ID : u32 = 91u32 ; const NAME : & 'static str = "HIL_CONTROLS" ; const EXTRA_CRC : u8 = 63u8 ; const ENCODED_LEN : usize = 42usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . roll_ailerons = buf . get_f32_le () ; __struct . pitch_elevator = buf . get_f32_le () ; __struct . yaw_rudder = buf . get_f32_le () ; __struct . throttle = buf . get_f32_le () ; __struct . aux1 = buf . get_f32_le () ; __struct . aux2 = buf . get_f32_le () ; __struct . aux3 = buf . get_f32_le () ; __struct . aux4 = buf . get_f32_le () ; let tmp = buf . get_u8 () ; __struct . mode = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavMode" , value : tmp as u32 }) ? ; __struct . nav_mode = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . roll_ailerons) ; __tmp . put_f32_le (self . pitch_elevator) ; __tmp . put_f32_le (self . yaw_rudder) ; __tmp . put_f32_le (self . throttle) ; __tmp . put_f32_le (self . aux1) ; __tmp . put_f32_le (self . aux2) ; __tmp . put_f32_le (self . aux3) ; __tmp . put_f32_le (self . aux4) ; __tmp . put_u8 (self . mode as u8) ; __tmp . put_u8 (self . nav_mode) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ATTITUDE_TARGET_DATA { pub time_boot_ms : u32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub q : [f32 ; 4] , pub body_roll_rate : f32 , pub body_pitch_rate : f32 , pub body_yaw_rate : f32 , pub thrust : f32 , pub type_mask : AttitudeTargetTypemask , } impl ATTITUDE_TARGET_DATA { pub const ENCODED_LEN : usize = 37usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , q : [0.0_f32 ; 4usize] , body_roll_rate : 0.0_f32 , body_pitch_rate : 0.0_f32 , body_yaw_rate : 0.0_f32 , thrust : 0.0_f32 , type_mask : AttitudeTargetTypemask :: DEFAULT , } ; } impl Default for ATTITUDE_TARGET_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ATTITUDE_TARGET_DATA { type Message = MavMessage ; const ID : u32 = 83u32 ; const NAME : & 'static str = "ATTITUDE_TARGET" ; const EXTRA_CRC : u8 = 22u8 ; const ENCODED_LEN : usize = 37usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; for v in & mut __struct . q { let val = buf . get_f32_le () ; * v = val ; } __struct . body_roll_rate = buf . get_f32_le () ; __struct . body_pitch_rate = buf . get_f32_le () ; __struct . body_yaw_rate = buf . get_f32_le () ; __struct . thrust = buf . get_f32_le () ; let tmp = buf . get_u8 () ; __struct . type_mask = AttitudeTargetTypemask :: from_bits (tmp & AttitudeTargetTypemask :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "AttitudeTargetTypemask" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; for val in & self . q { __tmp . put_f32_le (* val) ; } __tmp . put_f32_le (self . body_roll_rate) ; __tmp . put_f32_le (self . body_pitch_rate) ; __tmp . put_f32_le (self . body_yaw_rate) ; __tmp . put_f32_le (self . thrust) ; __tmp . put_u8 (self . type_mask . bits ()) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PARAM_EXT_ACK_DATA { # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub param_id : [u8 ; 16] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub param_value : [u8 ; 128] , pub param_type : MavParamExtType , pub param_result : ParamAck , } impl PARAM_EXT_ACK_DATA { pub const ENCODED_LEN : usize = 146usize ; pub const DEFAULT : Self = Self { param_id : [0_u8 ; 16usize] , param_value : [0_u8 ; 128usize] , param_type : MavParamExtType :: DEFAULT , param_result : ParamAck :: DEFAULT , } ; } impl Default for PARAM_EXT_ACK_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for PARAM_EXT_ACK_DATA { type Message = MavMessage ; const ID : u32 = 324u32 ; const NAME : & 'static str = "PARAM_EXT_ACK" ; const EXTRA_CRC : u8 = 132u8 ; const ENCODED_LEN : usize = 146usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; for v in & mut __struct . param_id { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . param_value { let val = buf . get_u8 () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . param_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavParamExtType" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . param_result = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "ParamAck" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; for val in & self . param_id { __tmp . put_u8 (* val) ; } for val in & self . param_value { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . param_type as u8) ; __tmp . put_u8 (self . param_result as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ACTUATOR_CONTROL_TARGET_DATA { pub time_usec : u64 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub controls : [f32 ; 8] , pub group_mlx : u8 , } impl ACTUATOR_CONTROL_TARGET_DATA { pub const ENCODED_LEN : usize = 41usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , controls : [0.0_f32 ; 8usize] , group_mlx : 0_u8 , } ; } impl Default for ACTUATOR_CONTROL_TARGET_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ACTUATOR_CONTROL_TARGET_DATA { type Message = MavMessage ; const ID : u32 = 140u32 ; const NAME : & 'static str = "ACTUATOR_CONTROL_TARGET" ; const EXTRA_CRC : u8 = 181u8 ; const ENCODED_LEN : usize = 41usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; for v in & mut __struct . controls { let val = buf . get_f32_le () ; * v = val ; } __struct . group_mlx = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; for val in & self . controls { __tmp . put_f32_le (* val) ; } __tmp . put_u8 (self . group_mlx) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GPS_GLOBAL_ORIGIN_DATA { pub latitude : i32 , pub longitude : i32 , pub altitude : i32 , } impl GPS_GLOBAL_ORIGIN_DATA { pub const ENCODED_LEN : usize = 12usize ; pub const DEFAULT : Self = Self { latitude : 0_i32 , longitude : 0_i32 , altitude : 0_i32 , } ; } impl Default for GPS_GLOBAL_ORIGIN_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GPS_GLOBAL_ORIGIN_DATA { type Message = MavMessage ; const ID : u32 = 49u32 ; const NAME : & 'static str = "GPS_GLOBAL_ORIGIN" ; const EXTRA_CRC : u8 = 39u8 ; const ENCODED_LEN : usize = 12usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . latitude = buf . get_i32_le () ; __struct . longitude = buf . get_i32_le () ; __struct . altitude = buf . get_i32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . latitude) ; __tmp . put_i32_le (self . longitude) ; __tmp . put_i32_le (self . altitude) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SCALED_PRESSURE_DATA { pub time_boot_ms : u32 , pub press_abs : f32 , pub press_diff : f32 , pub temperature : i16 , } impl SCALED_PRESSURE_DATA { pub const ENCODED_LEN : usize = 14usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , press_abs : 0.0_f32 , press_diff : 0.0_f32 , temperature : 0_i16 , } ; } impl Default for SCALED_PRESSURE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SCALED_PRESSURE_DATA { type Message = MavMessage ; const ID : u32 = 29u32 ; const NAME : & 'static str = "SCALED_PRESSURE" ; const EXTRA_CRC : u8 = 115u8 ; const ENCODED_LEN : usize = 14usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . press_abs = buf . get_f32_le () ; __struct . press_diff = buf . get_f32_le () ; __struct . temperature = buf . get_i16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . press_abs) ; __tmp . put_f32_le (self . press_diff) ; __tmp . put_i16_le (self . temperature) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct POWER_STATUS_DATA { pub Vcc : u16 , pub Vservo : u16 , pub flags : MavPowerStatus , } impl POWER_STATUS_DATA { pub const ENCODED_LEN : usize = 6usize ; pub const DEFAULT : Self = Self { Vcc : 0_u16 , Vservo : 0_u16 , flags : MavPowerStatus :: DEFAULT , } ; } impl Default for POWER_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for POWER_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 125u32 ; const NAME : & 'static str = "POWER_STATUS" ; const EXTRA_CRC : u8 = 203u8 ; const ENCODED_LEN : usize = 6usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . Vcc = buf . get_u16_le () ; __struct . Vservo = buf . get_u16_le () ; let tmp = buf . get_u16_le () ; __struct . flags = MavPowerStatus :: from_bits (tmp & MavPowerStatus :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "MavPowerStatus" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . Vcc) ; __tmp . put_u16_le (self . Vservo) ; __tmp . put_u16_le (self . flags . bits ()) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct TERRAIN_REQUEST_DATA { pub mask : u64 , pub lat : i32 , pub lon : i32 , pub grid_spacing : u16 , } impl TERRAIN_REQUEST_DATA { pub const ENCODED_LEN : usize = 18usize ; pub const DEFAULT : Self = Self { mask : 0_u64 , lat : 0_i32 , lon : 0_i32 , grid_spacing : 0_u16 , } ; } impl Default for TERRAIN_REQUEST_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for TERRAIN_REQUEST_DATA { type Message = MavMessage ; const ID : u32 = 133u32 ; const NAME : & 'static str = "TERRAIN_REQUEST" ; const EXTRA_CRC : u8 = 6u8 ; const ENCODED_LEN : usize = 18usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . mask = buf . get_u64_le () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . grid_spacing = buf . get_u16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . mask) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_u16_le (self . grid_spacing) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct OPEN_DRONE_ID_MESSAGE_PACK_DATA { pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub id_or_mac : [u8 ; 20] , pub single_message_size : u8 , pub msg_pack_size : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub messages : [u8 ; 225] , } impl OPEN_DRONE_ID_MESSAGE_PACK_DATA { pub const ENCODED_LEN : usize = 249usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , id_or_mac : [0_u8 ; 20usize] , single_message_size : 0_u8 , msg_pack_size : 0_u8 , messages : [0_u8 ; 225usize] , } ; } impl Default for OPEN_DRONE_ID_MESSAGE_PACK_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for OPEN_DRONE_ID_MESSAGE_PACK_DATA { type Message = MavMessage ; const ID : u32 = 12915u32 ; const NAME : & 'static str = "OPEN_DRONE_ID_MESSAGE_PACK" ; const EXTRA_CRC : u8 = 94u8 ; const ENCODED_LEN : usize = 249usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . id_or_mac { let val = buf . get_u8 () ; * v = val ; } __struct . single_message_size = buf . get_u8 () ; __struct . msg_pack_size = buf . get_u8 () ; for v in & mut __struct . messages { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . id_or_mac { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . single_message_size) ; __tmp . put_u8 (self . msg_pack_size) ; for val in & self . messages { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LOG_DATA_DATA { pub ofs : u32 , pub id : u16 , pub count : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub data : [u8 ; 90] , } impl LOG_DATA_DATA { pub const ENCODED_LEN : usize = 97usize ; pub const DEFAULT : Self = Self { ofs : 0_u32 , id : 0_u16 , count : 0_u8 , data : [0_u8 ; 90usize] , } ; } impl Default for LOG_DATA_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for LOG_DATA_DATA { type Message = MavMessage ; const ID : u32 = 120u32 ; const NAME : & 'static str = "LOG_DATA" ; const EXTRA_CRC : u8 = 134u8 ; const ENCODED_LEN : usize = 97usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . ofs = buf . get_u32_le () ; __struct . id = buf . get_u16_le () ; __struct . count = buf . get_u8 () ; for v in & mut __struct . data { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . ofs) ; __tmp . put_u16_le (self . id) ; __tmp . put_u8 (self . count) ; for val in & self . data { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GLOBAL_POSITION_INT_COV_DATA { pub time_usec : u64 , pub lat : i32 , pub lon : i32 , pub alt : i32 , pub relative_alt : i32 , pub vx : f32 , pub vy : f32 , pub vz : f32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub covariance : [f32 ; 36] , pub estimator_type : MavEstimatorType , } impl GLOBAL_POSITION_INT_COV_DATA { pub const ENCODED_LEN : usize = 181usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , lat : 0_i32 , lon : 0_i32 , alt : 0_i32 , relative_alt : 0_i32 , vx : 0.0_f32 , vy : 0.0_f32 , vz : 0.0_f32 , covariance : [0.0_f32 ; 36usize] , estimator_type : MavEstimatorType :: DEFAULT , } ; } impl Default for GLOBAL_POSITION_INT_COV_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GLOBAL_POSITION_INT_COV_DATA { type Message = MavMessage ; const ID : u32 = 63u32 ; const NAME : & 'static str = "GLOBAL_POSITION_INT_COV" ; const EXTRA_CRC : u8 = 119u8 ; const ENCODED_LEN : usize = 181usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . alt = buf . get_i32_le () ; __struct . relative_alt = buf . get_i32_le () ; __struct . vx = buf . get_f32_le () ; __struct . vy = buf . get_f32_le () ; __struct . vz = buf . get_f32_le () ; for v in & mut __struct . covariance { let val = buf . get_f32_le () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . estimator_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavEstimatorType" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_i32_le (self . alt) ; __tmp . put_i32_le (self . relative_alt) ; __tmp . put_f32_le (self . vx) ; __tmp . put_f32_le (self . vy) ; __tmp . put_f32_le (self . vz) ; for val in & self . covariance { __tmp . put_f32_le (* val) ; } __tmp . put_u8 (self . estimator_type as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct V2_EXTENSION_DATA { pub message_type : u16 , pub target_network : u8 , pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub payload : [u8 ; 249] , } impl V2_EXTENSION_DATA { pub const ENCODED_LEN : usize = 254usize ; pub const DEFAULT : Self = Self { message_type : 0_u16 , target_network : 0_u8 , target_system : 0_u8 , target_component : 0_u8 , payload : [0_u8 ; 249usize] , } ; } impl Default for V2_EXTENSION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for V2_EXTENSION_DATA { type Message = MavMessage ; const ID : u32 = 248u32 ; const NAME : & 'static str = "V2_EXTENSION" ; const EXTRA_CRC : u8 = 8u8 ; const ENCODED_LEN : usize = 254usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . message_type = buf . get_u16_le () ; __struct . target_network = buf . get_u8 () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . payload { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . message_type) ; __tmp . put_u8 (self . target_network) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . payload { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LOG_REQUEST_END_DATA { pub target_system : u8 , pub target_component : u8 , } impl LOG_REQUEST_END_DATA { pub const ENCODED_LEN : usize = 2usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for LOG_REQUEST_END_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for LOG_REQUEST_END_DATA { type Message = MavMessage ; const ID : u32 = 122u32 ; const NAME : & 'static str = "LOG_REQUEST_END" ; const EXTRA_CRC : u8 = 203u8 ; const ENCODED_LEN : usize = 2usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CAN_FRAME_DATA { pub id : u32 , pub target_system : u8 , pub target_component : u8 , pub bus : u8 , pub len : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub data : [u8 ; 8] , } impl CAN_FRAME_DATA { pub const ENCODED_LEN : usize = 16usize ; pub const DEFAULT : Self = Self { id : 0_u32 , target_system : 0_u8 , target_component : 0_u8 , bus : 0_u8 , len : 0_u8 , data : [0_u8 ; 8usize] , } ; } impl Default for CAN_FRAME_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CAN_FRAME_DATA { type Message = MavMessage ; const ID : u32 = 386u32 ; const NAME : & 'static str = "CAN_FRAME" ; const EXTRA_CRC : u8 = 132u8 ; const ENCODED_LEN : usize = 16usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . id = buf . get_u32_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . bus = buf . get_u8 () ; __struct . len = buf . get_u8 () ; for v in & mut __struct . data { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . id) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . bus) ; __tmp . put_u8 (self . len) ; for val in & self . data { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ODOMETRY_DATA { pub time_usec : u64 , pub x : f32 , pub y : f32 , pub z : f32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub q : [f32 ; 4] , pub vx : f32 , pub vy : f32 , pub vz : f32 , pub rollspeed : f32 , pub pitchspeed : f32 , pub yawspeed : f32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub pose_covariance : [f32 ; 21] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub velocity_covariance : [f32 ; 21] , pub frame_id : MavFrame , pub child_frame_id : MavFrame , } impl ODOMETRY_DATA { pub const ENCODED_LEN : usize = 230usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , x : 0.0_f32 , y : 0.0_f32 , z : 0.0_f32 , q : [0.0_f32 ; 4usize] , vx : 0.0_f32 , vy : 0.0_f32 , vz : 0.0_f32 , rollspeed : 0.0_f32 , pitchspeed : 0.0_f32 , yawspeed : 0.0_f32 , pose_covariance : [0.0_f32 ; 21usize] , velocity_covariance : [0.0_f32 ; 21usize] , frame_id : MavFrame :: DEFAULT , child_frame_id : MavFrame :: DEFAULT , } ; } impl Default for ODOMETRY_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ODOMETRY_DATA { type Message = MavMessage ; const ID : u32 = 331u32 ; const NAME : & 'static str = "ODOMETRY" ; const EXTRA_CRC : u8 = 91u8 ; const ENCODED_LEN : usize = 230usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . x = buf . get_f32_le () ; __struct . y = buf . get_f32_le () ; __struct . z = buf . get_f32_le () ; for v in & mut __struct . q { let val = buf . get_f32_le () ; * v = val ; } __struct . vx = buf . get_f32_le () ; __struct . vy = buf . get_f32_le () ; __struct . vz = buf . get_f32_le () ; __struct . rollspeed = buf . get_f32_le () ; __struct . pitchspeed = buf . get_f32_le () ; __struct . yawspeed = buf . get_f32_le () ; for v in & mut __struct . pose_covariance { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . velocity_covariance { let val = buf . get_f32_le () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . frame_id = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavFrame" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . child_frame_id = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavFrame" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; for val in & self . q { __tmp . put_f32_le (* val) ; } __tmp . put_f32_le (self . vx) ; __tmp . put_f32_le (self . vy) ; __tmp . put_f32_le (self . vz) ; __tmp . put_f32_le (self . rollspeed) ; __tmp . put_f32_le (self . pitchspeed) ; __tmp . put_f32_le (self . yawspeed) ; for val in & self . pose_covariance { __tmp . put_f32_le (* val) ; } for val in & self . velocity_covariance { __tmp . put_f32_le (* val) ; } __tmp . put_u8 (self . frame_id as u8) ; __tmp . put_u8 (self . child_frame_id as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct TERRAIN_REPORT_DATA { pub lat : i32 , pub lon : i32 , pub terrain_height : f32 , pub current_height : f32 , pub spacing : u16 , pub pending : u16 , pub loaded : u16 , } impl TERRAIN_REPORT_DATA { pub const ENCODED_LEN : usize = 22usize ; pub const DEFAULT : Self = Self { lat : 0_i32 , lon : 0_i32 , terrain_height : 0.0_f32 , current_height : 0.0_f32 , spacing : 0_u16 , pending : 0_u16 , loaded : 0_u16 , } ; } impl Default for TERRAIN_REPORT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for TERRAIN_REPORT_DATA { type Message = MavMessage ; const ID : u32 = 136u32 ; const NAME : & 'static str = "TERRAIN_REPORT" ; const EXTRA_CRC : u8 = 1u8 ; const ENCODED_LEN : usize = 22usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . terrain_height = buf . get_f32_le () ; __struct . current_height = buf . get_f32_le () ; __struct . spacing = buf . get_u16_le () ; __struct . pending = buf . get_u16_le () ; __struct . loaded = buf . get_u16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_f32_le (self . terrain_height) ; __tmp . put_f32_le (self . current_height) ; __tmp . put_u16_le (self . spacing) ; __tmp . put_u16_le (self . pending) ; __tmp . put_u16_le (self . loaded) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GIMBAL_DEVICE_SET_ATTITUDE_DATA { # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub q : [f32 ; 4] , pub angular_velocity_x : f32 , pub angular_velocity_y : f32 , pub angular_velocity_z : f32 , pub flags : GimbalDeviceFlags , pub target_system : u8 , pub target_component : u8 , } impl GIMBAL_DEVICE_SET_ATTITUDE_DATA { pub const ENCODED_LEN : usize = 32usize ; pub const DEFAULT : Self = Self { q : [0.0_f32 ; 4usize] , angular_velocity_x : 0.0_f32 , angular_velocity_y : 0.0_f32 , angular_velocity_z : 0.0_f32 , flags : GimbalDeviceFlags :: DEFAULT , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for GIMBAL_DEVICE_SET_ATTITUDE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GIMBAL_DEVICE_SET_ATTITUDE_DATA { type Message = MavMessage ; const ID : u32 = 284u32 ; const NAME : & 'static str = "GIMBAL_DEVICE_SET_ATTITUDE" ; const EXTRA_CRC : u8 = 99u8 ; const ENCODED_LEN : usize = 32usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; for v in & mut __struct . q { let val = buf . get_f32_le () ; * v = val ; } __struct . angular_velocity_x = buf . get_f32_le () ; __struct . angular_velocity_y = buf . get_f32_le () ; __struct . angular_velocity_z = buf . get_f32_le () ; let tmp = buf . get_u16_le () ; __struct . flags = GimbalDeviceFlags :: from_bits (tmp & GimbalDeviceFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "GimbalDeviceFlags" , value : tmp as u32 }) ? ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; for val in & self . q { __tmp . put_f32_le (* val) ; } __tmp . put_f32_le (self . angular_velocity_x) ; __tmp . put_f32_le (self . angular_velocity_y) ; __tmp . put_f32_le (self . angular_velocity_z) ; __tmp . put_u16_le (self . flags . bits ()) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MISSION_SET_CURRENT_DATA { pub seq : u16 , pub target_system : u8 , pub target_component : u8 , } impl MISSION_SET_CURRENT_DATA { pub const ENCODED_LEN : usize = 4usize ; pub const DEFAULT : Self = Self { seq : 0_u16 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for MISSION_SET_CURRENT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MISSION_SET_CURRENT_DATA { type Message = MavMessage ; const ID : u32 = 41u32 ; const NAME : & 'static str = "MISSION_SET_CURRENT" ; const EXTRA_CRC : u8 = 28u8 ; const ENCODED_LEN : usize = 4usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . seq = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . seq) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct DEBUG_FLOAT_ARRAY_DATA { pub time_usec : u64 , pub array_id : u16 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub name : [u8 ; 10] , } impl DEBUG_FLOAT_ARRAY_DATA { pub const ENCODED_LEN : usize = 20usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , array_id : 0_u16 , name : [0_u8 ; 10usize] , } ; } impl Default for DEBUG_FLOAT_ARRAY_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for DEBUG_FLOAT_ARRAY_DATA { type Message = MavMessage ; const ID : u32 = 350u32 ; const NAME : & 'static str = "DEBUG_FLOAT_ARRAY" ; const EXTRA_CRC : u8 = 232u8 ; const ENCODED_LEN : usize = 20usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . array_id = buf . get_u16_le () ; for v in & mut __struct . name { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_u16_le (self . array_id) ; for val in & self . name { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct AUTH_KEY_DATA { # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub key : [u8 ; 32] , } impl AUTH_KEY_DATA { pub const ENCODED_LEN : usize = 32usize ; pub const DEFAULT : Self = Self { key : [0_u8 ; 32usize] , } ; } impl Default for AUTH_KEY_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for AUTH_KEY_DATA { type Message = MavMessage ; const ID : u32 = 7u32 ; const NAME : & 'static str = "AUTH_KEY" ; const EXTRA_CRC : u8 = 119u8 ; const ENCODED_LEN : usize = 32usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; for v in & mut __struct . key { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; for val in & self . key { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GIMBAL_MANAGER_INFORMATION_DATA { pub time_boot_ms : u32 , pub cap_flags : GimbalManagerCapFlags , pub roll_min : f32 , pub roll_max : f32 , pub pitch_min : f32 , pub pitch_max : f32 , pub yaw_min : f32 , pub yaw_max : f32 , pub gimbal_device_id : u8 , } impl GIMBAL_MANAGER_INFORMATION_DATA { pub const ENCODED_LEN : usize = 33usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , cap_flags : GimbalManagerCapFlags :: DEFAULT , roll_min : 0.0_f32 , roll_max : 0.0_f32 , pitch_min : 0.0_f32 , pitch_max : 0.0_f32 , yaw_min : 0.0_f32 , yaw_max : 0.0_f32 , gimbal_device_id : 0_u8 , } ; } impl Default for GIMBAL_MANAGER_INFORMATION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GIMBAL_MANAGER_INFORMATION_DATA { type Message = MavMessage ; const ID : u32 = 280u32 ; const NAME : & 'static str = "GIMBAL_MANAGER_INFORMATION" ; const EXTRA_CRC : u8 = 70u8 ; const ENCODED_LEN : usize = 33usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; let tmp = buf . get_u32_le () ; __struct . cap_flags = GimbalManagerCapFlags :: from_bits (tmp & GimbalManagerCapFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "GimbalManagerCapFlags" , value : tmp as u32 }) ? ; __struct . roll_min = buf . get_f32_le () ; __struct . roll_max = buf . get_f32_le () ; __struct . pitch_min = buf . get_f32_le () ; __struct . pitch_max = buf . get_f32_le () ; __struct . yaw_min = buf . get_f32_le () ; __struct . yaw_max = buf . get_f32_le () ; __struct . gimbal_device_id = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_u32_le (self . cap_flags . bits ()) ; __tmp . put_f32_le (self . roll_min) ; __tmp . put_f32_le (self . roll_max) ; __tmp . put_f32_le (self . pitch_min) ; __tmp . put_f32_le (self . pitch_max) ; __tmp . put_f32_le (self . yaw_min) ; __tmp . put_f32_le (self . yaw_max) ; __tmp . put_u8 (self . gimbal_device_id) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct RAW_PRESSURE_DATA { pub time_usec : u64 , pub press_abs : i16 , pub press_diff1 : i16 , pub press_diff2 : i16 , pub temperature : i16 , } impl RAW_PRESSURE_DATA { pub const ENCODED_LEN : usize = 16usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , press_abs : 0_i16 , press_diff1 : 0_i16 , press_diff2 : 0_i16 , temperature : 0_i16 , } ; } impl Default for RAW_PRESSURE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for RAW_PRESSURE_DATA { type Message = MavMessage ; const ID : u32 = 28u32 ; const NAME : & 'static str = "RAW_PRESSURE" ; const EXTRA_CRC : u8 = 67u8 ; const ENCODED_LEN : usize = 16usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . press_abs = buf . get_i16_le () ; __struct . press_diff1 = buf . get_i16_le () ; __struct . press_diff2 = buf . get_i16_le () ; __struct . temperature = buf . get_i16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_i16_le (self . press_abs) ; __tmp . put_i16_le (self . press_diff1) ; __tmp . put_i16_le (self . press_diff2) ; __tmp . put_i16_le (self . temperature) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MISSION_ACK_DATA { pub target_system : u8 , pub target_component : u8 , pub mavtype : MavMissionResult , } impl MISSION_ACK_DATA { pub const ENCODED_LEN : usize = 3usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , mavtype : MavMissionResult :: DEFAULT , } ; } impl Default for MISSION_ACK_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MISSION_ACK_DATA { type Message = MavMessage ; const ID : u32 = 47u32 ; const NAME : & 'static str = "MISSION_ACK" ; const EXTRA_CRC : u8 = 153u8 ; const ENCODED_LEN : usize = 3usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . mavtype = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavMissionResult" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . mavtype as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PARAM_REQUEST_LIST_DATA { pub target_system : u8 , pub target_component : u8 , } impl PARAM_REQUEST_LIST_DATA { pub const ENCODED_LEN : usize = 2usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for PARAM_REQUEST_LIST_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for PARAM_REQUEST_LIST_DATA { type Message = MavMessage ; const ID : u32 = 21u32 ; const NAME : & 'static str = "PARAM_REQUEST_LIST" ; const EXTRA_CRC : u8 = 159u8 ; const ENCODED_LEN : usize = 2usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SCALED_IMU_DATA { pub time_boot_ms : u32 , pub xacc : i16 , pub yacc : i16 , pub zacc : i16 , pub xgyro : i16 , pub ygyro : i16 , pub zgyro : i16 , pub xmag : i16 , pub ymag : i16 , pub zmag : i16 , } impl SCALED_IMU_DATA { pub const ENCODED_LEN : usize = 22usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , xacc : 0_i16 , yacc : 0_i16 , zacc : 0_i16 , xgyro : 0_i16 , ygyro : 0_i16 , zgyro : 0_i16 , xmag : 0_i16 , ymag : 0_i16 , zmag : 0_i16 , } ; } impl Default for SCALED_IMU_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SCALED_IMU_DATA { type Message = MavMessage ; const ID : u32 = 26u32 ; const NAME : & 'static str = "SCALED_IMU" ; const EXTRA_CRC : u8 = 170u8 ; const ENCODED_LEN : usize = 22usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . xacc = buf . get_i16_le () ; __struct . yacc = buf . get_i16_le () ; __struct . zacc = buf . get_i16_le () ; __struct . xgyro = buf . get_i16_le () ; __struct . ygyro = buf . get_i16_le () ; __struct . zgyro = buf . get_i16_le () ; __struct . xmag = buf . get_i16_le () ; __struct . ymag = buf . get_i16_le () ; __struct . zmag = buf . get_i16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_i16_le (self . xacc) ; __tmp . put_i16_le (self . yacc) ; __tmp . put_i16_le (self . zacc) ; __tmp . put_i16_le (self . xgyro) ; __tmp . put_i16_le (self . ygyro) ; __tmp . put_i16_le (self . zgyro) ; __tmp . put_i16_le (self . xmag) ; __tmp . put_i16_le (self . ymag) ; __tmp . put_i16_le (self . zmag) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA { pub time_boot_ms : u32 , pub x : f32 , pub y : f32 , pub z : f32 , pub roll : f32 , pub pitch : f32 , pub yaw : f32 , } impl LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA { pub const ENCODED_LEN : usize = 28usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , x : 0.0_f32 , y : 0.0_f32 , z : 0.0_f32 , roll : 0.0_f32 , pitch : 0.0_f32 , yaw : 0.0_f32 , } ; } impl Default for LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA { type Message = MavMessage ; const ID : u32 = 89u32 ; const NAME : & 'static str = "LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET" ; const EXTRA_CRC : u8 = 231u8 ; const ENCODED_LEN : usize = 28usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . x = buf . get_f32_le () ; __struct . y = buf . get_f32_le () ; __struct . z = buf . get_f32_le () ; __struct . roll = buf . get_f32_le () ; __struct . pitch = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; __tmp . put_f32_le (self . roll) ; __tmp . put_f32_le (self . pitch) ; __tmp . put_f32_le (self . yaw) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct DEBUG_DATA { pub time_boot_ms : u32 , pub value : f32 , pub ind : u8 , } impl DEBUG_DATA { pub const ENCODED_LEN : usize = 9usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , value : 0.0_f32 , ind : 0_u8 , } ; } impl Default for DEBUG_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for DEBUG_DATA { type Message = MavMessage ; const ID : u32 = 254u32 ; const NAME : & 'static str = "DEBUG" ; const EXTRA_CRC : u8 = 46u8 ; const ENCODED_LEN : usize = 9usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . value = buf . get_f32_le () ; __struct . ind = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . value) ; __tmp . put_u8 (self . ind) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct NAMED_VALUE_INT_DATA { pub time_boot_ms : u32 , pub value : i32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub name : [u8 ; 10] , } impl NAMED_VALUE_INT_DATA { pub const ENCODED_LEN : usize = 18usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , value : 0_i32 , name : [0_u8 ; 10usize] , } ; } impl Default for NAMED_VALUE_INT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for NAMED_VALUE_INT_DATA { type Message = MavMessage ; const ID : u32 = 252u32 ; const NAME : & 'static str = "NAMED_VALUE_INT" ; const EXTRA_CRC : u8 = 44u8 ; const ENCODED_LEN : usize = 18usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . value = buf . get_i32_le () ; for v in & mut __struct . name { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_i32_le (self . value) ; for val in & self . name { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CONTROL_SYSTEM_STATE_DATA { pub time_usec : u64 , pub x_acc : f32 , pub y_acc : f32 , pub z_acc : f32 , pub x_vel : f32 , pub y_vel : f32 , pub z_vel : f32 , pub x_pos : f32 , pub y_pos : f32 , pub z_pos : f32 , pub airspeed : f32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub vel_variance : [f32 ; 3] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub pos_variance : [f32 ; 3] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub q : [f32 ; 4] , pub roll_rate : f32 , pub pitch_rate : f32 , pub yaw_rate : f32 , } impl CONTROL_SYSTEM_STATE_DATA { pub const ENCODED_LEN : usize = 100usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , x_acc : 0.0_f32 , y_acc : 0.0_f32 , z_acc : 0.0_f32 , x_vel : 0.0_f32 , y_vel : 0.0_f32 , z_vel : 0.0_f32 , x_pos : 0.0_f32 , y_pos : 0.0_f32 , z_pos : 0.0_f32 , airspeed : 0.0_f32 , vel_variance : [0.0_f32 ; 3usize] , pos_variance : [0.0_f32 ; 3usize] , q : [0.0_f32 ; 4usize] , roll_rate : 0.0_f32 , pitch_rate : 0.0_f32 , yaw_rate : 0.0_f32 , } ; } impl Default for CONTROL_SYSTEM_STATE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CONTROL_SYSTEM_STATE_DATA { type Message = MavMessage ; const ID : u32 = 146u32 ; const NAME : & 'static str = "CONTROL_SYSTEM_STATE" ; const EXTRA_CRC : u8 = 103u8 ; const ENCODED_LEN : usize = 100usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . x_acc = buf . get_f32_le () ; __struct . y_acc = buf . get_f32_le () ; __struct . z_acc = buf . get_f32_le () ; __struct . x_vel = buf . get_f32_le () ; __struct . y_vel = buf . get_f32_le () ; __struct . z_vel = buf . get_f32_le () ; __struct . x_pos = buf . get_f32_le () ; __struct . y_pos = buf . get_f32_le () ; __struct . z_pos = buf . get_f32_le () ; __struct . airspeed = buf . get_f32_le () ; for v in & mut __struct . vel_variance { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . pos_variance { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . q { let val = buf . get_f32_le () ; * v = val ; } __struct . roll_rate = buf . get_f32_le () ; __struct . pitch_rate = buf . get_f32_le () ; __struct . yaw_rate = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . x_acc) ; __tmp . put_f32_le (self . y_acc) ; __tmp . put_f32_le (self . z_acc) ; __tmp . put_f32_le (self . x_vel) ; __tmp . put_f32_le (self . y_vel) ; __tmp . put_f32_le (self . z_vel) ; __tmp . put_f32_le (self . x_pos) ; __tmp . put_f32_le (self . y_pos) ; __tmp . put_f32_le (self . z_pos) ; __tmp . put_f32_le (self . airspeed) ; for val in & self . vel_variance { __tmp . put_f32_le (* val) ; } for val in & self . pos_variance { __tmp . put_f32_le (* val) ; } for val in & self . q { __tmp . put_f32_le (* val) ; } __tmp . put_f32_le (self . roll_rate) ; __tmp . put_f32_le (self . pitch_rate) ; __tmp . put_f32_le (self . yaw_rate) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GPS_RAW_INT_DATA { pub time_usec : u64 , pub lat : i32 , pub lon : i32 , pub alt : i32 , pub eph : u16 , pub epv : u16 , pub vel : u16 , pub cog : u16 , pub fix_type : GpsFixType , pub satellites_visible : u8 , } impl GPS_RAW_INT_DATA { pub const ENCODED_LEN : usize = 30usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , lat : 0_i32 , lon : 0_i32 , alt : 0_i32 , eph : 0_u16 , epv : 0_u16 , vel : 0_u16 , cog : 0_u16 , fix_type : GpsFixType :: DEFAULT , satellites_visible : 0_u8 , } ; } impl Default for GPS_RAW_INT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GPS_RAW_INT_DATA { type Message = MavMessage ; const ID : u32 = 24u32 ; const NAME : & 'static str = "GPS_RAW_INT" ; const EXTRA_CRC : u8 = 24u8 ; const ENCODED_LEN : usize = 30usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . alt = buf . get_i32_le () ; __struct . eph = buf . get_u16_le () ; __struct . epv = buf . get_u16_le () ; __struct . vel = buf . get_u16_le () ; __struct . cog = buf . get_u16_le () ; let tmp = buf . get_u8 () ; __struct . fix_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "GpsFixType" , value : tmp as u32 }) ? ; __struct . satellites_visible = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_i32_le (self . alt) ; __tmp . put_u16_le (self . eph) ; __tmp . put_u16_le (self . epv) ; __tmp . put_u16_le (self . vel) ; __tmp . put_u16_le (self . cog) ; __tmp . put_u8 (self . fix_type as u8) ; __tmp . put_u8 (self . satellites_visible) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct COMMAND_ACK_DATA { pub command : MavCmd , pub result : MavResult , } impl COMMAND_ACK_DATA { pub const ENCODED_LEN : usize = 3usize ; pub const DEFAULT : Self = Self { command : MavCmd :: DEFAULT , result : MavResult :: DEFAULT , } ; } impl Default for COMMAND_ACK_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for COMMAND_ACK_DATA { type Message = MavMessage ; const ID : u32 = 77u32 ; const NAME : & 'static str = "COMMAND_ACK" ; const EXTRA_CRC : u8 = 143u8 ; const ENCODED_LEN : usize = 3usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u16_le () ; __struct . command = FromPrimitive :: from_u16 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavCmd" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . result = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavResult" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . command as u16) ; __tmp . put_u8 (self . result as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct VIDEO_STREAM_INFORMATION_DATA { pub framerate : f32 , pub bitrate : u32 , pub flags : VideoStreamStatusFlags , pub resolution_h : u16 , pub resolution_v : u16 , pub rotation : u16 , pub hfov : u16 , pub stream_id : u8 , pub count : u8 , pub mavtype : VideoStreamType , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub name : [u8 ; 32] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub uri : [u8 ; 160] , } impl VIDEO_STREAM_INFORMATION_DATA { pub const ENCODED_LEN : usize = 213usize ; pub const DEFAULT : Self = Self { framerate : 0.0_f32 , bitrate : 0_u32 , flags : VideoStreamStatusFlags :: DEFAULT , resolution_h : 0_u16 , resolution_v : 0_u16 , rotation : 0_u16 , hfov : 0_u16 , stream_id : 0_u8 , count : 0_u8 , mavtype : VideoStreamType :: DEFAULT , name : [0_u8 ; 32usize] , uri : [0_u8 ; 160usize] , } ; } impl Default for VIDEO_STREAM_INFORMATION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for VIDEO_STREAM_INFORMATION_DATA { type Message = MavMessage ; const ID : u32 = 269u32 ; const NAME : & 'static str = "VIDEO_STREAM_INFORMATION" ; const EXTRA_CRC : u8 = 109u8 ; const ENCODED_LEN : usize = 213usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . framerate = buf . get_f32_le () ; __struct . bitrate = buf . get_u32_le () ; let tmp = buf . get_u16_le () ; __struct . flags = FromPrimitive :: from_u16 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "VideoStreamStatusFlags" , value : tmp as u32 }) ? ; __struct . resolution_h = buf . get_u16_le () ; __struct . resolution_v = buf . get_u16_le () ; __struct . rotation = buf . get_u16_le () ; __struct . hfov = buf . get_u16_le () ; __struct . stream_id = buf . get_u8 () ; __struct . count = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . mavtype = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "VideoStreamType" , value : tmp as u32 }) ? ; for v in & mut __struct . name { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . uri { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . framerate) ; __tmp . put_u32_le (self . bitrate) ; __tmp . put_u16_le (self . flags as u16) ; __tmp . put_u16_le (self . resolution_h) ; __tmp . put_u16_le (self . resolution_v) ; __tmp . put_u16_le (self . rotation) ; __tmp . put_u16_le (self . hfov) ; __tmp . put_u8 (self . stream_id) ; __tmp . put_u8 (self . count) ; __tmp . put_u8 (self . mavtype as u8) ; for val in & self . name { __tmp . put_u8 (* val) ; } for val in & self . uri { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PARAM_SET_DATA { pub param_value : f32 , pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub param_id : [u8 ; 16] , pub param_type : MavParamType , } impl PARAM_SET_DATA { pub const ENCODED_LEN : usize = 23usize ; pub const DEFAULT : Self = Self { param_value : 0.0_f32 , target_system : 0_u8 , target_component : 0_u8 , param_id : [0_u8 ; 16usize] , param_type : MavParamType :: DEFAULT , } ; } impl Default for PARAM_SET_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for PARAM_SET_DATA { type Message = MavMessage ; const ID : u32 = 23u32 ; const NAME : & 'static str = "PARAM_SET" ; const EXTRA_CRC : u8 = 168u8 ; const ENCODED_LEN : usize = 23usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . param_value = buf . get_f32_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . param_id { let val = buf . get_u8 () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . param_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavParamType" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . param_value) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . param_id { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . param_type as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LOGGING_DATA_ACKED_DATA { pub sequence : u16 , pub target_system : u8 , pub target_component : u8 , pub length : u8 , pub first_message_offset : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub data : [u8 ; 249] , } impl LOGGING_DATA_ACKED_DATA { pub const ENCODED_LEN : usize = 255usize ; pub const DEFAULT : Self = Self { sequence : 0_u16 , target_system : 0_u8 , target_component : 0_u8 , length : 0_u8 , first_message_offset : 0_u8 , data : [0_u8 ; 249usize] , } ; } impl Default for LOGGING_DATA_ACKED_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for LOGGING_DATA_ACKED_DATA { type Message = MavMessage ; const ID : u32 = 267u32 ; const NAME : & 'static str = "LOGGING_DATA_ACKED" ; const EXTRA_CRC : u8 = 35u8 ; const ENCODED_LEN : usize = 255usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . sequence = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . length = buf . get_u8 () ; __struct . first_message_offset = buf . get_u8 () ; for v in & mut __struct . data { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . sequence) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . length) ; __tmp . put_u8 (self . first_message_offset) ; for val in & self . data { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct NAMED_VALUE_FLOAT_DATA { pub time_boot_ms : u32 , pub value : f32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub name : [u8 ; 10] , } impl NAMED_VALUE_FLOAT_DATA { pub const ENCODED_LEN : usize = 18usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , value : 0.0_f32 , name : [0_u8 ; 10usize] , } ; } impl Default for NAMED_VALUE_FLOAT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for NAMED_VALUE_FLOAT_DATA { type Message = MavMessage ; const ID : u32 = 251u32 ; const NAME : & 'static str = "NAMED_VALUE_FLOAT" ; const EXTRA_CRC : u8 = 170u8 ; const ENCODED_LEN : usize = 18usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . value = buf . get_f32_le () ; for v in & mut __struct . name { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . value) ; for val in & self . name { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ADSB_VEHICLE_DATA { pub ICAO_address : u32 , pub lat : i32 , pub lon : i32 , pub altitude : i32 , pub heading : u16 , pub hor_velocity : u16 , pub ver_velocity : i16 , pub flags : AdsbFlags , pub squawk : u16 , pub altitude_type : AdsbAltitudeType , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub callsign : [u8 ; 9] , pub emitter_type : AdsbEmitterType , pub tslc : u8 , } impl ADSB_VEHICLE_DATA { pub const ENCODED_LEN : usize = 38usize ; pub const DEFAULT : Self = Self { ICAO_address : 0_u32 , lat : 0_i32 , lon : 0_i32 , altitude : 0_i32 , heading : 0_u16 , hor_velocity : 0_u16 , ver_velocity : 0_i16 , flags : AdsbFlags :: DEFAULT , squawk : 0_u16 , altitude_type : AdsbAltitudeType :: DEFAULT , callsign : [0_u8 ; 9usize] , emitter_type : AdsbEmitterType :: DEFAULT , tslc : 0_u8 , } ; } impl Default for ADSB_VEHICLE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ADSB_VEHICLE_DATA { type Message = MavMessage ; const ID : u32 = 246u32 ; const NAME : & 'static str = "ADSB_VEHICLE" ; const EXTRA_CRC : u8 = 184u8 ; const ENCODED_LEN : usize = 38usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . ICAO_address = buf . get_u32_le () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . altitude = buf . get_i32_le () ; __struct . heading = buf . get_u16_le () ; __struct . hor_velocity = buf . get_u16_le () ; __struct . ver_velocity = buf . get_i16_le () ; let tmp = buf . get_u16_le () ; __struct . flags = AdsbFlags :: from_bits (tmp & AdsbFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "AdsbFlags" , value : tmp as u32 }) ? ; __struct . squawk = buf . get_u16_le () ; let tmp = buf . get_u8 () ; __struct . altitude_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "AdsbAltitudeType" , value : tmp as u32 }) ? ; for v in & mut __struct . callsign { let val = buf . get_u8 () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . emitter_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "AdsbEmitterType" , value : tmp as u32 }) ? ; __struct . tslc = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . ICAO_address) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_i32_le (self . altitude) ; __tmp . put_u16_le (self . heading) ; __tmp . put_u16_le (self . hor_velocity) ; __tmp . put_i16_le (self . ver_velocity) ; __tmp . put_u16_le (self . flags . bits ()) ; __tmp . put_u16_le (self . squawk) ; __tmp . put_u8 (self . altitude_type as u8) ; for val in & self . callsign { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . emitter_type as u8) ; __tmp . put_u8 (self . tslc) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct COLLISION_DATA { pub id : u32 , pub time_to_minimum_delta : f32 , pub altitude_minimum_delta : f32 , pub horizontal_minimum_delta : f32 , pub src : MavCollisionSrc , pub action : MavCollisionAction , pub threat_level : MavCollisionThreatLevel , } impl COLLISION_DATA { pub const ENCODED_LEN : usize = 19usize ; pub const DEFAULT : Self = Self { id : 0_u32 , time_to_minimum_delta : 0.0_f32 , altitude_minimum_delta : 0.0_f32 , horizontal_minimum_delta : 0.0_f32 , src : MavCollisionSrc :: DEFAULT , action : MavCollisionAction :: DEFAULT , threat_level : MavCollisionThreatLevel :: DEFAULT , } ; } impl Default for COLLISION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for COLLISION_DATA { type Message = MavMessage ; const ID : u32 = 247u32 ; const NAME : & 'static str = "COLLISION" ; const EXTRA_CRC : u8 = 81u8 ; const ENCODED_LEN : usize = 19usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . id = buf . get_u32_le () ; __struct . time_to_minimum_delta = buf . get_f32_le () ; __struct . altitude_minimum_delta = buf . get_f32_le () ; __struct . horizontal_minimum_delta = buf . get_f32_le () ; let tmp = buf . get_u8 () ; __struct . src = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavCollisionSrc" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . action = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavCollisionAction" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . threat_level = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavCollisionThreatLevel" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . id) ; __tmp . put_f32_le (self . time_to_minimum_delta) ; __tmp . put_f32_le (self . altitude_minimum_delta) ; __tmp . put_f32_le (self . horizontal_minimum_delta) ; __tmp . put_u8 (self . src as u8) ; __tmp . put_u8 (self . action as u8) ; __tmp . put_u8 (self . threat_level as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HIL_ACTUATOR_CONTROLS_DATA { pub time_usec : u64 , pub flags : u64 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub controls : [f32 ; 16] , pub mode : MavModeFlag , } impl HIL_ACTUATOR_CONTROLS_DATA { pub const ENCODED_LEN : usize = 81usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , flags : 0_u64 , controls : [0.0_f32 ; 16usize] , mode : MavModeFlag :: DEFAULT , } ; } impl Default for HIL_ACTUATOR_CONTROLS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for HIL_ACTUATOR_CONTROLS_DATA { type Message = MavMessage ; const ID : u32 = 93u32 ; const NAME : & 'static str = "HIL_ACTUATOR_CONTROLS" ; const EXTRA_CRC : u8 = 47u8 ; const ENCODED_LEN : usize = 81usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . flags = buf . get_u64_le () ; for v in & mut __struct . controls { let val = buf . get_f32_le () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . mode = MavModeFlag :: from_bits (tmp & MavModeFlag :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "MavModeFlag" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_u64_le (self . flags) ; for val in & self . controls { __tmp . put_f32_le (* val) ; } __tmp . put_u8 (self . mode . bits ()) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LOG_REQUEST_LIST_DATA { pub start : u16 , pub end : u16 , pub target_system : u8 , pub target_component : u8 , } impl LOG_REQUEST_LIST_DATA { pub const ENCODED_LEN : usize = 6usize ; pub const DEFAULT : Self = Self { start : 0_u16 , end : 0_u16 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for LOG_REQUEST_LIST_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for LOG_REQUEST_LIST_DATA { type Message = MavMessage ; const ID : u32 = 117u32 ; const NAME : & 'static str = "LOG_REQUEST_LIST" ; const EXTRA_CRC : u8 = 128u8 ; const ENCODED_LEN : usize = 6usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . start = buf . get_u16_le () ; __struct . end = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . start) ; __tmp . put_u16_le (self . end) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LINK_NODE_STATUS_DATA { pub timestamp : u64 , pub tx_rate : u32 , pub rx_rate : u32 , pub messages_sent : u32 , pub messages_received : u32 , pub messages_lost : u32 , pub rx_parse_err : u16 , pub tx_overflows : u16 , pub rx_overflows : u16 , pub tx_buf : u8 , pub rx_buf : u8 , } impl LINK_NODE_STATUS_DATA { pub const ENCODED_LEN : usize = 36usize ; pub const DEFAULT : Self = Self { timestamp : 0_u64 , tx_rate : 0_u32 , rx_rate : 0_u32 , messages_sent : 0_u32 , messages_received : 0_u32 , messages_lost : 0_u32 , rx_parse_err : 0_u16 , tx_overflows : 0_u16 , rx_overflows : 0_u16 , tx_buf : 0_u8 , rx_buf : 0_u8 , } ; } impl Default for LINK_NODE_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for LINK_NODE_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 8u32 ; const NAME : & 'static str = "LINK_NODE_STATUS" ; const EXTRA_CRC : u8 = 117u8 ; const ENCODED_LEN : usize = 36usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . timestamp = buf . get_u64_le () ; __struct . tx_rate = buf . get_u32_le () ; __struct . rx_rate = buf . get_u32_le () ; __struct . messages_sent = buf . get_u32_le () ; __struct . messages_received = buf . get_u32_le () ; __struct . messages_lost = buf . get_u32_le () ; __struct . rx_parse_err = buf . get_u16_le () ; __struct . tx_overflows = buf . get_u16_le () ; __struct . rx_overflows = buf . get_u16_le () ; __struct . tx_buf = buf . get_u8 () ; __struct . rx_buf = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . timestamp) ; __tmp . put_u32_le (self . tx_rate) ; __tmp . put_u32_le (self . rx_rate) ; __tmp . put_u32_le (self . messages_sent) ; __tmp . put_u32_le (self . messages_received) ; __tmp . put_u32_le (self . messages_lost) ; __tmp . put_u16_le (self . rx_parse_err) ; __tmp . put_u16_le (self . tx_overflows) ; __tmp . put_u16_le (self . rx_overflows) ; __tmp . put_u8 (self . tx_buf) ; __tmp . put_u8 (self . rx_buf) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct BATTERY_STATUS_DATA { pub current_consumed : i32 , pub energy_consumed : i32 , pub temperature : i16 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub voltages : [u16 ; 10] , pub current_battery : i16 , pub id : u8 , pub battery_function : MavBatteryFunction , pub mavtype : MavBatteryType , pub battery_remaining : i8 , } impl BATTERY_STATUS_DATA { pub const ENCODED_LEN : usize = 36usize ; pub const DEFAULT : Self = Self { current_consumed : 0_i32 , energy_consumed : 0_i32 , temperature : 0_i16 , voltages : [0_u16 ; 10usize] , current_battery : 0_i16 , id : 0_u8 , battery_function : MavBatteryFunction :: DEFAULT , mavtype : MavBatteryType :: DEFAULT , battery_remaining : 0_i8 , } ; } impl Default for BATTERY_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for BATTERY_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 147u32 ; const NAME : & 'static str = "BATTERY_STATUS" ; const EXTRA_CRC : u8 = 154u8 ; const ENCODED_LEN : usize = 36usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . current_consumed = buf . get_i32_le () ; __struct . energy_consumed = buf . get_i32_le () ; __struct . temperature = buf . get_i16_le () ; for v in & mut __struct . voltages { let val = buf . get_u16_le () ; * v = val ; } __struct . current_battery = buf . get_i16_le () ; __struct . id = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . battery_function = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavBatteryFunction" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . mavtype = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavBatteryType" , value : tmp as u32 }) ? ; __struct . battery_remaining = buf . get_i8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . current_consumed) ; __tmp . put_i32_le (self . energy_consumed) ; __tmp . put_i16_le (self . temperature) ; for val in & self . voltages { __tmp . put_u16_le (* val) ; } __tmp . put_i16_le (self . current_battery) ; __tmp . put_u8 (self . id) ; __tmp . put_u8 (self . battery_function as u8) ; __tmp . put_u8 (self . mavtype as u8) ; __tmp . put_i8 (self . battery_remaining) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct VISION_SPEED_ESTIMATE_DATA { pub usec : u64 , pub x : f32 , pub y : f32 , pub z : f32 , } impl VISION_SPEED_ESTIMATE_DATA { pub const ENCODED_LEN : usize = 20usize ; pub const DEFAULT : Self = Self { usec : 0_u64 , x : 0.0_f32 , y : 0.0_f32 , z : 0.0_f32 , } ; } impl Default for VISION_SPEED_ESTIMATE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for VISION_SPEED_ESTIMATE_DATA { type Message = MavMessage ; const ID : u32 = 103u32 ; const NAME : & 'static str = "VISION_SPEED_ESTIMATE" ; const EXTRA_CRC : u8 = 208u8 ; const ENCODED_LEN : usize = 20usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . usec = buf . get_u64_le () ; __struct . x = buf . get_f32_le () ; __struct . y = buf . get_f32_le () ; __struct . z = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . usec) ; __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct RC_CHANNELS_RAW_DATA { pub time_boot_ms : u32 , pub chan1_raw : u16 , pub chan2_raw : u16 , pub chan3_raw : u16 , pub chan4_raw : u16 , pub chan5_raw : u16 , pub chan6_raw : u16 , pub chan7_raw : u16 , pub chan8_raw : u16 , pub port : u8 , pub rssi : u8 , } impl RC_CHANNELS_RAW_DATA { pub const ENCODED_LEN : usize = 22usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , chan1_raw : 0_u16 , chan2_raw : 0_u16 , chan3_raw : 0_u16 , chan4_raw : 0_u16 , chan5_raw : 0_u16 , chan6_raw : 0_u16 , chan7_raw : 0_u16 , chan8_raw : 0_u16 , port : 0_u8 , rssi : 0_u8 , } ; } impl Default for RC_CHANNELS_RAW_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for RC_CHANNELS_RAW_DATA { type Message = MavMessage ; const ID : u32 = 35u32 ; const NAME : & 'static str = "RC_CHANNELS_RAW" ; const EXTRA_CRC : u8 = 244u8 ; const ENCODED_LEN : usize = 22usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . chan1_raw = buf . get_u16_le () ; __struct . chan2_raw = buf . get_u16_le () ; __struct . chan3_raw = buf . get_u16_le () ; __struct . chan4_raw = buf . get_u16_le () ; __struct . chan5_raw = buf . get_u16_le () ; __struct . chan6_raw = buf . get_u16_le () ; __struct . chan7_raw = buf . get_u16_le () ; __struct . chan8_raw = buf . get_u16_le () ; __struct . port = buf . get_u8 () ; __struct . rssi = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_u16_le (self . chan1_raw) ; __tmp . put_u16_le (self . chan2_raw) ; __tmp . put_u16_le (self . chan3_raw) ; __tmp . put_u16_le (self . chan4_raw) ; __tmp . put_u16_le (self . chan5_raw) ; __tmp . put_u16_le (self . chan6_raw) ; __tmp . put_u16_le (self . chan7_raw) ; __tmp . put_u16_le (self . chan8_raw) ; __tmp . put_u8 (self . port) ; __tmp . put_u8 (self . rssi) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SCALED_IMU3_DATA { pub time_boot_ms : u32 , pub xacc : i16 , pub yacc : i16 , pub zacc : i16 , pub xgyro : i16 , pub ygyro : i16 , pub zgyro : i16 , pub xmag : i16 , pub ymag : i16 , pub zmag : i16 , } impl SCALED_IMU3_DATA { pub const ENCODED_LEN : usize = 22usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , xacc : 0_i16 , yacc : 0_i16 , zacc : 0_i16 , xgyro : 0_i16 , ygyro : 0_i16 , zgyro : 0_i16 , xmag : 0_i16 , ymag : 0_i16 , zmag : 0_i16 , } ; } impl Default for SCALED_IMU3_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SCALED_IMU3_DATA { type Message = MavMessage ; const ID : u32 = 129u32 ; const NAME : & 'static str = "SCALED_IMU3" ; const EXTRA_CRC : u8 = 46u8 ; const ENCODED_LEN : usize = 22usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . xacc = buf . get_i16_le () ; __struct . yacc = buf . get_i16_le () ; __struct . zacc = buf . get_i16_le () ; __struct . xgyro = buf . get_i16_le () ; __struct . ygyro = buf . get_i16_le () ; __struct . zgyro = buf . get_i16_le () ; __struct . xmag = buf . get_i16_le () ; __struct . ymag = buf . get_i16_le () ; __struct . zmag = buf . get_i16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_i16_le (self . xacc) ; __tmp . put_i16_le (self . yacc) ; __tmp . put_i16_le (self . zacc) ; __tmp . put_i16_le (self . xgyro) ; __tmp . put_i16_le (self . ygyro) ; __tmp . put_i16_le (self . zgyro) ; __tmp . put_i16_le (self . xmag) ; __tmp . put_i16_le (self . ymag) ; __tmp . put_i16_le (self . zmag) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GIMBAL_DEVICE_INFORMATION_DATA { pub uid : u64 , pub time_boot_ms : u32 , pub firmware_version : u32 , pub hardware_version : u32 , pub roll_min : f32 , pub roll_max : f32 , pub pitch_min : f32 , pub pitch_max : f32 , pub yaw_min : f32 , pub yaw_max : f32 , pub cap_flags : GimbalDeviceCapFlags , pub custom_cap_flags : u16 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub vendor_name : [u8 ; 32] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub model_name : [u8 ; 32] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub custom_name : [u8 ; 32] , } impl GIMBAL_DEVICE_INFORMATION_DATA { pub const ENCODED_LEN : usize = 144usize ; pub const DEFAULT : Self = Self { uid : 0_u64 , time_boot_ms : 0_u32 , firmware_version : 0_u32 , hardware_version : 0_u32 , roll_min : 0.0_f32 , roll_max : 0.0_f32 , pitch_min : 0.0_f32 , pitch_max : 0.0_f32 , yaw_min : 0.0_f32 , yaw_max : 0.0_f32 , cap_flags : GimbalDeviceCapFlags :: DEFAULT , custom_cap_flags : 0_u16 , vendor_name : [0_u8 ; 32usize] , model_name : [0_u8 ; 32usize] , custom_name : [0_u8 ; 32usize] , } ; } impl Default for GIMBAL_DEVICE_INFORMATION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GIMBAL_DEVICE_INFORMATION_DATA { type Message = MavMessage ; const ID : u32 = 283u32 ; const NAME : & 'static str = "GIMBAL_DEVICE_INFORMATION" ; const EXTRA_CRC : u8 = 74u8 ; const ENCODED_LEN : usize = 144usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . uid = buf . get_u64_le () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . firmware_version = buf . get_u32_le () ; __struct . hardware_version = buf . get_u32_le () ; __struct . roll_min = buf . get_f32_le () ; __struct . roll_max = buf . get_f32_le () ; __struct . pitch_min = buf . get_f32_le () ; __struct . pitch_max = buf . get_f32_le () ; __struct . yaw_min = buf . get_f32_le () ; __struct . yaw_max = buf . get_f32_le () ; let tmp = buf . get_u16_le () ; __struct . cap_flags = GimbalDeviceCapFlags :: from_bits (tmp & GimbalDeviceCapFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "GimbalDeviceCapFlags" , value : tmp as u32 }) ? ; __struct . custom_cap_flags = buf . get_u16_le () ; for v in & mut __struct . vendor_name { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . model_name { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . custom_name { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . uid) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_u32_le (self . firmware_version) ; __tmp . put_u32_le (self . hardware_version) ; __tmp . put_f32_le (self . roll_min) ; __tmp . put_f32_le (self . roll_max) ; __tmp . put_f32_le (self . pitch_min) ; __tmp . put_f32_le (self . pitch_max) ; __tmp . put_f32_le (self . yaw_min) ; __tmp . put_f32_le (self . yaw_max) ; __tmp . put_u16_le (self . cap_flags . bits ()) ; __tmp . put_u16_le (self . custom_cap_flags) ; for val in & self . vendor_name { __tmp . put_u8 (* val) ; } for val in & self . model_name { __tmp . put_u8 (* val) ; } for val in & self . custom_name { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ENCAPSULATED_DATA_DATA { pub seqnr : u16 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub data : [u8 ; 253] , } impl ENCAPSULATED_DATA_DATA { pub const ENCODED_LEN : usize = 255usize ; pub const DEFAULT : Self = Self { seqnr : 0_u16 , data : [0_u8 ; 253usize] , } ; } impl Default for ENCAPSULATED_DATA_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ENCAPSULATED_DATA_DATA { type Message = MavMessage ; const ID : u32 = 131u32 ; const NAME : & 'static str = "ENCAPSULATED_DATA" ; const EXTRA_CRC : u8 = 223u8 ; const ENCODED_LEN : usize = 255usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . seqnr = buf . get_u16_le () ; for v in & mut __struct . data { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . seqnr) ; for val in & self . data { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SET_ATTITUDE_TARGET_DATA { pub time_boot_ms : u32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub q : [f32 ; 4] , pub body_roll_rate : f32 , pub body_pitch_rate : f32 , pub body_yaw_rate : f32 , pub thrust : f32 , pub target_system : u8 , pub target_component : u8 , pub type_mask : AttitudeTargetTypemask , } impl SET_ATTITUDE_TARGET_DATA { pub const ENCODED_LEN : usize = 39usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , q : [0.0_f32 ; 4usize] , body_roll_rate : 0.0_f32 , body_pitch_rate : 0.0_f32 , body_yaw_rate : 0.0_f32 , thrust : 0.0_f32 , target_system : 0_u8 , target_component : 0_u8 , type_mask : AttitudeTargetTypemask :: DEFAULT , } ; } impl Default for SET_ATTITUDE_TARGET_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SET_ATTITUDE_TARGET_DATA { type Message = MavMessage ; const ID : u32 = 82u32 ; const NAME : & 'static str = "SET_ATTITUDE_TARGET" ; const EXTRA_CRC : u8 = 49u8 ; const ENCODED_LEN : usize = 39usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; for v in & mut __struct . q { let val = buf . get_f32_le () ; * v = val ; } __struct . body_roll_rate = buf . get_f32_le () ; __struct . body_pitch_rate = buf . get_f32_le () ; __struct . body_yaw_rate = buf . get_f32_le () ; __struct . thrust = buf . get_f32_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . type_mask = AttitudeTargetTypemask :: from_bits (tmp & AttitudeTargetTypemask :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "AttitudeTargetTypemask" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; for val in & self . q { __tmp . put_f32_le (* val) ; } __tmp . put_f32_le (self . body_roll_rate) ; __tmp . put_f32_le (self . body_pitch_rate) ; __tmp . put_f32_le (self . body_yaw_rate) ; __tmp . put_f32_le (self . thrust) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . type_mask . bits ()) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CELLULAR_STATUS_DATA { pub mcc : u16 , pub mnc : u16 , pub lac : u16 , pub status : CellularStatusFlag , pub failure_reason : CellularNetworkFailedReason , pub mavtype : CellularNetworkRadioType , pub quality : u8 , } impl CELLULAR_STATUS_DATA { pub const ENCODED_LEN : usize = 10usize ; pub const DEFAULT : Self = Self { mcc : 0_u16 , mnc : 0_u16 , lac : 0_u16 , status : CellularStatusFlag :: DEFAULT , failure_reason : CellularNetworkFailedReason :: DEFAULT , mavtype : CellularNetworkRadioType :: DEFAULT , quality : 0_u8 , } ; } impl Default for CELLULAR_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CELLULAR_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 334u32 ; const NAME : & 'static str = "CELLULAR_STATUS" ; const EXTRA_CRC : u8 = 72u8 ; const ENCODED_LEN : usize = 10usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . mcc = buf . get_u16_le () ; __struct . mnc = buf . get_u16_le () ; __struct . lac = buf . get_u16_le () ; let tmp = buf . get_u8 () ; __struct . status = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "CellularStatusFlag" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . failure_reason = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "CellularNetworkFailedReason" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . mavtype = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "CellularNetworkRadioType" , value : tmp as u32 }) ? ; __struct . quality = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . mcc) ; __tmp . put_u16_le (self . mnc) ; __tmp . put_u16_le (self . lac) ; __tmp . put_u8 (self . status as u8) ; __tmp . put_u8 (self . failure_reason as u8) ; __tmp . put_u8 (self . mavtype as u8) ; __tmp . put_u8 (self . quality) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct STATUSTEXT_DATA { pub severity : MavSeverity , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub text : [u8 ; 50] , } impl STATUSTEXT_DATA { pub const ENCODED_LEN : usize = 51usize ; pub const DEFAULT : Self = Self { severity : MavSeverity :: DEFAULT , text : [0_u8 ; 50usize] , } ; } impl Default for STATUSTEXT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for STATUSTEXT_DATA { type Message = MavMessage ; const ID : u32 = 253u32 ; const NAME : & 'static str = "STATUSTEXT" ; const EXTRA_CRC : u8 = 83u8 ; const ENCODED_LEN : usize = 51usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u8 () ; __struct . severity = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavSeverity" , value : tmp as u32 }) ? ; for v in & mut __struct . text { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . severity as u8) ; for val in & self . text { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GPS_INPUT_DATA { pub time_usec : u64 , pub time_week_ms : u32 , pub lat : i32 , pub lon : i32 , pub alt : f32 , pub hdop : f32 , pub vdop : f32 , pub vn : f32 , pub ve : f32 , pub vd : f32 , pub speed_accuracy : f32 , pub horiz_accuracy : f32 , pub vert_accuracy : f32 , pub ignore_flags : GpsInputIgnoreFlags , pub time_week : u16 , pub gps_id : u8 , pub fix_type : u8 , pub satellites_visible : u8 , } impl GPS_INPUT_DATA { pub const ENCODED_LEN : usize = 63usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , time_week_ms : 0_u32 , lat : 0_i32 , lon : 0_i32 , alt : 0.0_f32 , hdop : 0.0_f32 , vdop : 0.0_f32 , vn : 0.0_f32 , ve : 0.0_f32 , vd : 0.0_f32 , speed_accuracy : 0.0_f32 , horiz_accuracy : 0.0_f32 , vert_accuracy : 0.0_f32 , ignore_flags : GpsInputIgnoreFlags :: DEFAULT , time_week : 0_u16 , gps_id : 0_u8 , fix_type : 0_u8 , satellites_visible : 0_u8 , } ; } impl Default for GPS_INPUT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GPS_INPUT_DATA { type Message = MavMessage ; const ID : u32 = 232u32 ; const NAME : & 'static str = "GPS_INPUT" ; const EXTRA_CRC : u8 = 151u8 ; const ENCODED_LEN : usize = 63usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . time_week_ms = buf . get_u32_le () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . alt = buf . get_f32_le () ; __struct . hdop = buf . get_f32_le () ; __struct . vdop = buf . get_f32_le () ; __struct . vn = buf . get_f32_le () ; __struct . ve = buf . get_f32_le () ; __struct . vd = buf . get_f32_le () ; __struct . speed_accuracy = buf . get_f32_le () ; __struct . horiz_accuracy = buf . get_f32_le () ; __struct . vert_accuracy = buf . get_f32_le () ; let tmp = buf . get_u16_le () ; __struct . ignore_flags = GpsInputIgnoreFlags :: from_bits (tmp & GpsInputIgnoreFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "GpsInputIgnoreFlags" , value : tmp as u32 }) ? ; __struct . time_week = buf . get_u16_le () ; __struct . gps_id = buf . get_u8 () ; __struct . fix_type = buf . get_u8 () ; __struct . satellites_visible = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_u32_le (self . time_week_ms) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_f32_le (self . alt) ; __tmp . put_f32_le (self . hdop) ; __tmp . put_f32_le (self . vdop) ; __tmp . put_f32_le (self . vn) ; __tmp . put_f32_le (self . ve) ; __tmp . put_f32_le (self . vd) ; __tmp . put_f32_le (self . speed_accuracy) ; __tmp . put_f32_le (self . horiz_accuracy) ; __tmp . put_f32_le (self . vert_accuracy) ; __tmp . put_u16_le (self . ignore_flags . bits ()) ; __tmp . put_u16_le (self . time_week) ; __tmp . put_u8 (self . gps_id) ; __tmp . put_u8 (self . fix_type) ; __tmp . put_u8 (self . satellites_visible) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Clone , PartialEq , Debug)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavMessage { STORAGE_INFORMATION (STORAGE_INFORMATION_DATA) , MOUNT_ORIENTATION (MOUNT_ORIENTATION_DATA) , SCALED_PRESSURE2 (SCALED_PRESSURE2_DATA) , HIL_STATE (HIL_STATE_DATA) , GPS_RTCM_DATA (GPS_RTCM_DATA_DATA) , PARAM_EXT_VALUE (PARAM_EXT_VALUE_DATA) , MISSION_REQUEST_INT (MISSION_REQUEST_INT_DATA) , ALTITUDE (ALTITUDE_DATA) , CAMERA_TRIGGER (CAMERA_TRIGGER_DATA) , LOCAL_POSITION_NED_COV (LOCAL_POSITION_NED_COV_DATA) , LOG_ENTRY (LOG_ENTRY_DATA) , AUTOPILOT_STATE_FOR_GIMBAL_DEVICE (AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA) , WIFI_CONFIG_AP (WIFI_CONFIG_AP_DATA) , ONBOARD_COMPUTER_STATUS (ONBOARD_COMPUTER_STATUS_DATA) , DATA_STREAM (DATA_STREAM_DATA) , SERVO_OUTPUT_RAW (SERVO_OUTPUT_RAW_DATA) , GIMBAL_DEVICE_ATTITUDE_STATUS (GIMBAL_DEVICE_ATTITUDE_STATUS_DATA) , ESC_STATUS (ESC_STATUS_DATA) , PLAY_TUNE (PLAY_TUNE_DATA) , FILE_TRANSFER_PROTOCOL (FILE_TRANSFER_PROTOCOL_DATA) , SET_HOME_POSITION (SET_HOME_POSITION_DATA) , ATTITUDE_QUATERNION_COV (ATTITUDE_QUATERNION_COV_DATA) , GPS2_RAW (GPS2_RAW_DATA) , SIM_STATE (SIM_STATE_DATA) , HOME_POSITION (HOME_POSITION_DATA) , MANUAL_CONTROL (MANUAL_CONTROL_DATA) , SET_POSITION_TARGET_GLOBAL_INT (SET_POSITION_TARGET_GLOBAL_INT_DATA) , GLOBAL_VISION_POSITION_ESTIMATE (GLOBAL_VISION_POSITION_ESTIMATE_DATA) , PING (PING_DATA) , WHEEL_DISTANCE (WHEEL_DISTANCE_DATA) , GIMBAL_MANAGER_SET_MANUAL_CONTROL (GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA) , RESPONSE_EVENT_ERROR (RESPONSE_EVENT_ERROR_DATA) , TERRAIN_CHECK (TERRAIN_CHECK_DATA) , OPEN_DRONE_ID_AUTHENTICATION (OPEN_DRONE_ID_AUTHENTICATION_DATA) , OPEN_DRONE_ID_ARM_STATUS (OPEN_DRONE_ID_ARM_STATUS_DATA) , OPEN_DRONE_ID_SYSTEM_UPDATE (OPEN_DRONE_ID_SYSTEM_UPDATE_DATA) , OPEN_DRONE_ID_SELF_ID (OPEN_DRONE_ID_SELF_ID_DATA) , BUTTON_CHANGE (BUTTON_CHANGE_DATA) , CAMERA_SETTINGS (CAMERA_SETTINGS_DATA) , ESC_INFO (ESC_INFO_DATA) , SERIAL_CONTROL (SERIAL_CONTROL_DATA) , CHANGE_OPERATOR_CONTROL_ACK (CHANGE_OPERATOR_CONTROL_ACK_DATA) , ESTIMATOR_STATUS (ESTIMATOR_STATUS_DATA) , MISSION_ITEM_REACHED (MISSION_ITEM_REACHED_DATA) , SCALED_IMU2 (SCALED_IMU2_DATA) , OPTICAL_FLOW_RAD (OPTICAL_FLOW_RAD_DATA) , LOG_REQUEST_DATA (LOG_REQUEST_DATA_DATA) , FOLLOW_TARGET (FOLLOW_TARGET_DATA) , GIMBAL_MANAGER_SET_PITCHYAW (GIMBAL_MANAGER_SET_PITCHYAW_DATA) , HIGH_LATENCY (HIGH_LATENCY_DATA) , PARAM_MAP_RC (PARAM_MAP_RC_DATA) , MISSION_COUNT (MISSION_COUNT_DATA) , PARAM_VALUE (PARAM_VALUE_DATA) , LOGGING_ACK (LOGGING_ACK_DATA) , HIL_OPTICAL_FLOW (HIL_OPTICAL_FLOW_DATA) , HIGH_LATENCY2 (HIGH_LATENCY2_DATA) , CURRENT_EVENT_SEQUENCE (CURRENT_EVENT_SEQUENCE_DATA) , CAMERA_TRACKING_GEO_STATUS (CAMERA_TRACKING_GEO_STATUS_DATA) , RC_CHANNELS_SCALED (RC_CHANNELS_SCALED_DATA) , GPS2_RTK (GPS2_RTK_DATA) , RC_CHANNELS (RC_CHANNELS_DATA) , MISSION_WRITE_PARTIAL_LIST (MISSION_WRITE_PARTIAL_LIST_DATA) , CAMERA_CAPTURE_STATUS (CAMERA_CAPTURE_STATUS_DATA) , RC_CHANNELS_OVERRIDE (RC_CHANNELS_OVERRIDE_DATA) , CAMERA_IMAGE_CAPTURED (CAMERA_IMAGE_CAPTURED_DATA) , MISSION_ITEM (MISSION_ITEM_DATA) , MAG_CAL_REPORT (MAG_CAL_REPORT_DATA) , COMMAND_INT (COMMAND_INT_DATA) , CANFD_FRAME (CANFD_FRAME_DATA) , SET_GPS_GLOBAL_ORIGIN (SET_GPS_GLOBAL_ORIGIN_DATA) , HIL_GPS (HIL_GPS_DATA) , WINCH_STATUS (WINCH_STATUS_DATA) , DEBUG_VECT (DEBUG_VECT_DATA) , LOGGING_DATA (LOGGING_DATA_DATA) , NAV_CONTROLLER_OUTPUT (NAV_CONTROLLER_OUTPUT_DATA) , MISSION_ITEM_INT (MISSION_ITEM_INT_DATA) , ACTUATOR_OUTPUT_STATUS (ACTUATOR_OUTPUT_STATUS_DATA) , LOG_ERASE (LOG_ERASE_DATA) , COMMAND_LONG (COMMAND_LONG_DATA) , CAMERA_INFORMATION (CAMERA_INFORMATION_DATA) , DISTANCE_SENSOR (DISTANCE_SENSOR_DATA) , UTM_GLOBAL_POSITION (UTM_GLOBAL_POSITION_DATA) , ATTITUDE (ATTITUDE_DATA) , WIND_COV (WIND_COV_DATA) , MEMORY_VECT (MEMORY_VECT_DATA) , GIMBAL_MANAGER_SET_ATTITUDE (GIMBAL_MANAGER_SET_ATTITUDE_DATA) , MISSION_CLEAR_ALL (MISSION_CLEAR_ALL_DATA) , DATA_TRANSMISSION_HANDSHAKE (DATA_TRANSMISSION_HANDSHAKE_DATA) , CAN_FILTER_MODIFY (CAN_FILTER_MODIFY_DATA) , LOCAL_POSITION_NED (LOCAL_POSITION_NED_DATA) , GPS_INJECT_DATA (GPS_INJECT_DATA_DATA) , HIL_STATE_QUATERNION (HIL_STATE_QUATERNION_DATA) , SAFETY_SET_ALLOWED_AREA (SAFETY_SET_ALLOWED_AREA_DATA) , FENCE_STATUS (FENCE_STATUS_DATA) , OPTICAL_FLOW (OPTICAL_FLOW_DATA) , RADIO_STATUS (RADIO_STATUS_DATA) , SET_POSITION_TARGET_LOCAL_NED (SET_POSITION_TARGET_LOCAL_NED_DATA) , RESOURCE_REQUEST (RESOURCE_REQUEST_DATA) , UAVIONIX_ADSB_OUT_DYNAMIC (UAVIONIX_ADSB_OUT_DYNAMIC_DATA) , TRAJECTORY_REPRESENTATION_BEZIER (TRAJECTORY_REPRESENTATION_BEZIER_DATA) , GPS_STATUS (GPS_STATUS_DATA) , MISSION_REQUEST_PARTIAL_LIST (MISSION_REQUEST_PARTIAL_LIST_DATA) , AUTOPILOT_VERSION (AUTOPILOT_VERSION_DATA) , TUNNEL (TUNNEL_DATA) , TERRAIN_DATA (TERRAIN_DATA_DATA) , UAVCAN_NODE_STATUS (UAVCAN_NODE_STATUS_DATA) , HEARTBEAT (HEARTBEAT_DATA) , REQUEST_EVENT (REQUEST_EVENT_DATA) , PARAM_EXT_SET (PARAM_EXT_SET_DATA) , VISION_POSITION_ESTIMATE (VISION_POSITION_ESTIMATE_DATA) , SUPPORTED_TUNES (SUPPORTED_TUNES_DATA) , PARAM_EXT_REQUEST_LIST (PARAM_EXT_REQUEST_LIST_DATA) , ISBD_LINK_STATUS (ISBD_LINK_STATUS_DATA) , PLAY_TUNE_V2 (PLAY_TUNE_V2_DATA) , VIDEO_STREAM_STATUS (VIDEO_STREAM_STATUS_DATA) , RAW_IMU (RAW_IMU_DATA) , OPEN_DRONE_ID_LOCATION (OPEN_DRONE_ID_LOCATION_DATA) , AIS_VESSEL (AIS_VESSEL_DATA) , RAW_RPM (RAW_RPM_DATA) , MISSION_REQUEST (MISSION_REQUEST_DATA) , FLIGHT_INFORMATION (FLIGHT_INFORMATION_DATA) , VICON_POSITION_ESTIMATE (VICON_POSITION_ESTIMATE_DATA) , HIL_SENSOR (HIL_SENSOR_DATA) , TIMESYNC (TIMESYNC_DATA) , OPEN_DRONE_ID_OPERATOR_ID (OPEN_DRONE_ID_OPERATOR_ID_DATA) , COMPONENT_METADATA (COMPONENT_METADATA_DATA) , SAFETY_ALLOWED_AREA (SAFETY_ALLOWED_AREA_DATA) , MANUAL_SETPOINT (MANUAL_SETPOINT_DATA) , CAMERA_TRACKING_IMAGE_STATUS (CAMERA_TRACKING_IMAGE_STATUS_DATA) , GLOBAL_POSITION_INT (GLOBAL_POSITION_INT_DATA) , EXTENDED_SYS_STATE (EXTENDED_SYS_STATE_DATA) , OPEN_DRONE_ID_BASIC_ID (OPEN_DRONE_ID_BASIC_ID_DATA) , SYS_STATUS (SYS_STATUS_DATA) , UAVCAN_NODE_INFO (UAVCAN_NODE_INFO_DATA) , VIBRATION (VIBRATION_DATA) , PARAM_REQUEST_READ (PARAM_REQUEST_READ_DATA) , POSITION_TARGET_GLOBAL_INT (POSITION_TARGET_GLOBAL_INT_DATA) , SET_ACTUATOR_CONTROL_TARGET (SET_ACTUATOR_CONTROL_TARGET_DATA) , SET_MODE (SET_MODE_DATA) , TRAJECTORY_REPRESENTATION_WAYPOINTS (TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA) , COMPONENT_INFORMATION (COMPONENT_INFORMATION_DATA) , PROTOCOL_VERSION (PROTOCOL_VERSION_DATA) , MESSAGE_INTERVAL (MESSAGE_INTERVAL_DATA) , OPEN_DRONE_ID_SYSTEM (OPEN_DRONE_ID_SYSTEM_DATA) , ORBIT_EXECUTION_STATUS (ORBIT_EXECUTION_STATUS_DATA) , SETUP_SIGNING (SETUP_SIGNING_DATA) , OBSTACLE_DISTANCE (OBSTACLE_DISTANCE_DATA) , CAMERA_FOV_STATUS (CAMERA_FOV_STATUS_DATA) , ATTITUDE_QUATERNION (ATTITUDE_QUATERNION_DATA) , GENERATOR_STATUS (GENERATOR_STATUS_DATA) , POSITION_TARGET_LOCAL_NED (POSITION_TARGET_LOCAL_NED_DATA) , HYGROMETER_SENSOR (HYGROMETER_SENSOR_DATA) , TIME_ESTIMATE_TO_TARGET (TIME_ESTIMATE_TO_TARGET_DATA) , MISSION_CURRENT (MISSION_CURRENT_DATA) , SYSTEM_TIME (SYSTEM_TIME_DATA) , HIGHRES_IMU (HIGHRES_IMU_DATA) , REQUEST_DATA_STREAM (REQUEST_DATA_STREAM_DATA) , GPS_RTK (GPS_RTK_DATA) , EFI_STATUS (EFI_STATUS_DATA) , MISSION_REQUEST_LIST (MISSION_REQUEST_LIST_DATA) , SMART_BATTERY_INFO (SMART_BATTERY_INFO_DATA) , CELLULAR_CONFIG (CELLULAR_CONFIG_DATA) , CHANGE_OPERATOR_CONTROL (CHANGE_OPERATOR_CONTROL_DATA) , UAVIONIX_ADSB_OUT_CFG (UAVIONIX_ADSB_OUT_CFG_DATA) , UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT (UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA) , PARAM_EXT_REQUEST_READ (PARAM_EXT_REQUEST_READ_DATA) , LANDING_TARGET (LANDING_TARGET_DATA) , EVENT (EVENT_DATA) , VFR_HUD (VFR_HUD_DATA) , HIL_RC_INPUTS_RAW (HIL_RC_INPUTS_RAW_DATA) , SCALED_PRESSURE3 (SCALED_PRESSURE3_DATA) , COMMAND_CANCEL (COMMAND_CANCEL_DATA) , GIMBAL_MANAGER_STATUS (GIMBAL_MANAGER_STATUS_DATA) , ATT_POS_MOCAP (ATT_POS_MOCAP_DATA) , HIL_CONTROLS (HIL_CONTROLS_DATA) , ATTITUDE_TARGET (ATTITUDE_TARGET_DATA) , PARAM_EXT_ACK (PARAM_EXT_ACK_DATA) , ACTUATOR_CONTROL_TARGET (ACTUATOR_CONTROL_TARGET_DATA) , GPS_GLOBAL_ORIGIN (GPS_GLOBAL_ORIGIN_DATA) , SCALED_PRESSURE (SCALED_PRESSURE_DATA) , POWER_STATUS (POWER_STATUS_DATA) , TERRAIN_REQUEST (TERRAIN_REQUEST_DATA) , OPEN_DRONE_ID_MESSAGE_PACK (OPEN_DRONE_ID_MESSAGE_PACK_DATA) , LOG_DATA (LOG_DATA_DATA) , GLOBAL_POSITION_INT_COV (GLOBAL_POSITION_INT_COV_DATA) , V2_EXTENSION (V2_EXTENSION_DATA) , LOG_REQUEST_END (LOG_REQUEST_END_DATA) , CAN_FRAME (CAN_FRAME_DATA) , ODOMETRY (ODOMETRY_DATA) , TERRAIN_REPORT (TERRAIN_REPORT_DATA) , GIMBAL_DEVICE_SET_ATTITUDE (GIMBAL_DEVICE_SET_ATTITUDE_DATA) , MISSION_SET_CURRENT (MISSION_SET_CURRENT_DATA) , DEBUG_FLOAT_ARRAY (DEBUG_FLOAT_ARRAY_DATA) , AUTH_KEY (AUTH_KEY_DATA) , GIMBAL_MANAGER_INFORMATION (GIMBAL_MANAGER_INFORMATION_DATA) , RAW_PRESSURE (RAW_PRESSURE_DATA) , MISSION_ACK (MISSION_ACK_DATA) , PARAM_REQUEST_LIST (PARAM_REQUEST_LIST_DATA) , SCALED_IMU (SCALED_IMU_DATA) , LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET (LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA) , DEBUG (DEBUG_DATA) , NAMED_VALUE_INT (NAMED_VALUE_INT_DATA) , CONTROL_SYSTEM_STATE (CONTROL_SYSTEM_STATE_DATA) , GPS_RAW_INT (GPS_RAW_INT_DATA) , COMMAND_ACK (COMMAND_ACK_DATA) , VIDEO_STREAM_INFORMATION (VIDEO_STREAM_INFORMATION_DATA) , PARAM_SET (PARAM_SET_DATA) , LOGGING_DATA_ACKED (LOGGING_DATA_ACKED_DATA) , NAMED_VALUE_FLOAT (NAMED_VALUE_FLOAT_DATA) , ADSB_VEHICLE (ADSB_VEHICLE_DATA) , COLLISION (COLLISION_DATA) , HIL_ACTUATOR_CONTROLS (HIL_ACTUATOR_CONTROLS_DATA) , LOG_REQUEST_LIST (LOG_REQUEST_LIST_DATA) , LINK_NODE_STATUS (LINK_NODE_STATUS_DATA) , BATTERY_STATUS (BATTERY_STATUS_DATA) , VISION_SPEED_ESTIMATE (VISION_SPEED_ESTIMATE_DATA) , RC_CHANNELS_RAW (RC_CHANNELS_RAW_DATA) , SCALED_IMU3 (SCALED_IMU3_DATA) , GIMBAL_DEVICE_INFORMATION (GIMBAL_DEVICE_INFORMATION_DATA) , ENCAPSULATED_DATA (ENCAPSULATED_DATA_DATA) , SET_ATTITUDE_TARGET (SET_ATTITUDE_TARGET_DATA) , CELLULAR_STATUS (CELLULAR_STATUS_DATA) , STATUSTEXT (STATUSTEXT_DATA) , GPS_INPUT (GPS_INPUT_DATA) , } impl Message for MavMessage { fn parse (version : MavlinkVersion , id : u32 , payload : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { match id { STORAGE_INFORMATION_DATA :: ID => STORAGE_INFORMATION_DATA :: deser (version , payload) . map (Self :: STORAGE_INFORMATION) , MOUNT_ORIENTATION_DATA :: ID => MOUNT_ORIENTATION_DATA :: deser (version , payload) . map (Self :: MOUNT_ORIENTATION) , SCALED_PRESSURE2_DATA :: ID => SCALED_PRESSURE2_DATA :: deser (version , payload) . map (Self :: SCALED_PRESSURE2) , HIL_STATE_DATA :: ID => HIL_STATE_DATA :: deser (version , payload) . map (Self :: HIL_STATE) , GPS_RTCM_DATA_DATA :: ID => GPS_RTCM_DATA_DATA :: deser (version , payload) . map (Self :: GPS_RTCM_DATA) , PARAM_EXT_VALUE_DATA :: ID => PARAM_EXT_VALUE_DATA :: deser (version , payload) . map (Self :: PARAM_EXT_VALUE) , MISSION_REQUEST_INT_DATA :: ID => MISSION_REQUEST_INT_DATA :: deser (version , payload) . map (Self :: MISSION_REQUEST_INT) , ALTITUDE_DATA :: ID => ALTITUDE_DATA :: deser (version , payload) . map (Self :: ALTITUDE) , CAMERA_TRIGGER_DATA :: ID => CAMERA_TRIGGER_DATA :: deser (version , payload) . map (Self :: CAMERA_TRIGGER) , LOCAL_POSITION_NED_COV_DATA :: ID => LOCAL_POSITION_NED_COV_DATA :: deser (version , payload) . map (Self :: LOCAL_POSITION_NED_COV) , LOG_ENTRY_DATA :: ID => LOG_ENTRY_DATA :: deser (version , payload) . map (Self :: LOG_ENTRY) , AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: ID => AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: deser (version , payload) . map (Self :: AUTOPILOT_STATE_FOR_GIMBAL_DEVICE) , WIFI_CONFIG_AP_DATA :: ID => WIFI_CONFIG_AP_DATA :: deser (version , payload) . map (Self :: WIFI_CONFIG_AP) , ONBOARD_COMPUTER_STATUS_DATA :: ID => ONBOARD_COMPUTER_STATUS_DATA :: deser (version , payload) . map (Self :: ONBOARD_COMPUTER_STATUS) , DATA_STREAM_DATA :: ID => DATA_STREAM_DATA :: deser (version , payload) . map (Self :: DATA_STREAM) , SERVO_OUTPUT_RAW_DATA :: ID => SERVO_OUTPUT_RAW_DATA :: deser (version , payload) . map (Self :: SERVO_OUTPUT_RAW) , GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: ID => GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: deser (version , payload) . map (Self :: GIMBAL_DEVICE_ATTITUDE_STATUS) , ESC_STATUS_DATA :: ID => ESC_STATUS_DATA :: deser (version , payload) . map (Self :: ESC_STATUS) , PLAY_TUNE_DATA :: ID => PLAY_TUNE_DATA :: deser (version , payload) . map (Self :: PLAY_TUNE) , FILE_TRANSFER_PROTOCOL_DATA :: ID => FILE_TRANSFER_PROTOCOL_DATA :: deser (version , payload) . map (Self :: FILE_TRANSFER_PROTOCOL) , SET_HOME_POSITION_DATA :: ID => SET_HOME_POSITION_DATA :: deser (version , payload) . map (Self :: SET_HOME_POSITION) , ATTITUDE_QUATERNION_COV_DATA :: ID => ATTITUDE_QUATERNION_COV_DATA :: deser (version , payload) . map (Self :: ATTITUDE_QUATERNION_COV) , GPS2_RAW_DATA :: ID => GPS2_RAW_DATA :: deser (version , payload) . map (Self :: GPS2_RAW) , SIM_STATE_DATA :: ID => SIM_STATE_DATA :: deser (version , payload) . map (Self :: SIM_STATE) , HOME_POSITION_DATA :: ID => HOME_POSITION_DATA :: deser (version , payload) . map (Self :: HOME_POSITION) , MANUAL_CONTROL_DATA :: ID => MANUAL_CONTROL_DATA :: deser (version , payload) . map (Self :: MANUAL_CONTROL) , SET_POSITION_TARGET_GLOBAL_INT_DATA :: ID => SET_POSITION_TARGET_GLOBAL_INT_DATA :: deser (version , payload) . map (Self :: SET_POSITION_TARGET_GLOBAL_INT) , GLOBAL_VISION_POSITION_ESTIMATE_DATA :: ID => GLOBAL_VISION_POSITION_ESTIMATE_DATA :: deser (version , payload) . map (Self :: GLOBAL_VISION_POSITION_ESTIMATE) , PING_DATA :: ID => PING_DATA :: deser (version , payload) . map (Self :: PING) , WHEEL_DISTANCE_DATA :: ID => WHEEL_DISTANCE_DATA :: deser (version , payload) . map (Self :: WHEEL_DISTANCE) , GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: ID => GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: deser (version , payload) . map (Self :: GIMBAL_MANAGER_SET_MANUAL_CONTROL) , RESPONSE_EVENT_ERROR_DATA :: ID => RESPONSE_EVENT_ERROR_DATA :: deser (version , payload) . map (Self :: RESPONSE_EVENT_ERROR) , TERRAIN_CHECK_DATA :: ID => TERRAIN_CHECK_DATA :: deser (version , payload) . map (Self :: TERRAIN_CHECK) , OPEN_DRONE_ID_AUTHENTICATION_DATA :: ID => OPEN_DRONE_ID_AUTHENTICATION_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_AUTHENTICATION) , OPEN_DRONE_ID_ARM_STATUS_DATA :: ID => OPEN_DRONE_ID_ARM_STATUS_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_ARM_STATUS) , OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: ID => OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_SYSTEM_UPDATE) , OPEN_DRONE_ID_SELF_ID_DATA :: ID => OPEN_DRONE_ID_SELF_ID_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_SELF_ID) , BUTTON_CHANGE_DATA :: ID => BUTTON_CHANGE_DATA :: deser (version , payload) . map (Self :: BUTTON_CHANGE) , CAMERA_SETTINGS_DATA :: ID => CAMERA_SETTINGS_DATA :: deser (version , payload) . map (Self :: CAMERA_SETTINGS) , ESC_INFO_DATA :: ID => ESC_INFO_DATA :: deser (version , payload) . map (Self :: ESC_INFO) , SERIAL_CONTROL_DATA :: ID => SERIAL_CONTROL_DATA :: deser (version , payload) . map (Self :: SERIAL_CONTROL) , CHANGE_OPERATOR_CONTROL_ACK_DATA :: ID => CHANGE_OPERATOR_CONTROL_ACK_DATA :: deser (version , payload) . map (Self :: CHANGE_OPERATOR_CONTROL_ACK) , ESTIMATOR_STATUS_DATA :: ID => ESTIMATOR_STATUS_DATA :: deser (version , payload) . map (Self :: ESTIMATOR_STATUS) , MISSION_ITEM_REACHED_DATA :: ID => MISSION_ITEM_REACHED_DATA :: deser (version , payload) . map (Self :: MISSION_ITEM_REACHED) , SCALED_IMU2_DATA :: ID => SCALED_IMU2_DATA :: deser (version , payload) . map (Self :: SCALED_IMU2) , OPTICAL_FLOW_RAD_DATA :: ID => OPTICAL_FLOW_RAD_DATA :: deser (version , payload) . map (Self :: OPTICAL_FLOW_RAD) , LOG_REQUEST_DATA_DATA :: ID => LOG_REQUEST_DATA_DATA :: deser (version , payload) . map (Self :: LOG_REQUEST_DATA) , FOLLOW_TARGET_DATA :: ID => FOLLOW_TARGET_DATA :: deser (version , payload) . map (Self :: FOLLOW_TARGET) , GIMBAL_MANAGER_SET_PITCHYAW_DATA :: ID => GIMBAL_MANAGER_SET_PITCHYAW_DATA :: deser (version , payload) . map (Self :: GIMBAL_MANAGER_SET_PITCHYAW) , HIGH_LATENCY_DATA :: ID => HIGH_LATENCY_DATA :: deser (version , payload) . map (Self :: HIGH_LATENCY) , PARAM_MAP_RC_DATA :: ID => PARAM_MAP_RC_DATA :: deser (version , payload) . map (Self :: PARAM_MAP_RC) , MISSION_COUNT_DATA :: ID => MISSION_COUNT_DATA :: deser (version , payload) . map (Self :: MISSION_COUNT) , PARAM_VALUE_DATA :: ID => PARAM_VALUE_DATA :: deser (version , payload) . map (Self :: PARAM_VALUE) , LOGGING_ACK_DATA :: ID => LOGGING_ACK_DATA :: deser (version , payload) . map (Self :: LOGGING_ACK) , HIL_OPTICAL_FLOW_DATA :: ID => HIL_OPTICAL_FLOW_DATA :: deser (version , payload) . map (Self :: HIL_OPTICAL_FLOW) , HIGH_LATENCY2_DATA :: ID => HIGH_LATENCY2_DATA :: deser (version , payload) . map (Self :: HIGH_LATENCY2) , CURRENT_EVENT_SEQUENCE_DATA :: ID => CURRENT_EVENT_SEQUENCE_DATA :: deser (version , payload) . map (Self :: CURRENT_EVENT_SEQUENCE) , CAMERA_TRACKING_GEO_STATUS_DATA :: ID => CAMERA_TRACKING_GEO_STATUS_DATA :: deser (version , payload) . map (Self :: CAMERA_TRACKING_GEO_STATUS) , RC_CHANNELS_SCALED_DATA :: ID => RC_CHANNELS_SCALED_DATA :: deser (version , payload) . map (Self :: RC_CHANNELS_SCALED) , GPS2_RTK_DATA :: ID => GPS2_RTK_DATA :: deser (version , payload) . map (Self :: GPS2_RTK) , RC_CHANNELS_DATA :: ID => RC_CHANNELS_DATA :: deser (version , payload) . map (Self :: RC_CHANNELS) , MISSION_WRITE_PARTIAL_LIST_DATA :: ID => MISSION_WRITE_PARTIAL_LIST_DATA :: deser (version , payload) . map (Self :: MISSION_WRITE_PARTIAL_LIST) , CAMERA_CAPTURE_STATUS_DATA :: ID => CAMERA_CAPTURE_STATUS_DATA :: deser (version , payload) . map (Self :: CAMERA_CAPTURE_STATUS) , RC_CHANNELS_OVERRIDE_DATA :: ID => RC_CHANNELS_OVERRIDE_DATA :: deser (version , payload) . map (Self :: RC_CHANNELS_OVERRIDE) , CAMERA_IMAGE_CAPTURED_DATA :: ID => CAMERA_IMAGE_CAPTURED_DATA :: deser (version , payload) . map (Self :: CAMERA_IMAGE_CAPTURED) , MISSION_ITEM_DATA :: ID => MISSION_ITEM_DATA :: deser (version , payload) . map (Self :: MISSION_ITEM) , MAG_CAL_REPORT_DATA :: ID => MAG_CAL_REPORT_DATA :: deser (version , payload) . map (Self :: MAG_CAL_REPORT) , COMMAND_INT_DATA :: ID => COMMAND_INT_DATA :: deser (version , payload) . map (Self :: COMMAND_INT) , CANFD_FRAME_DATA :: ID => CANFD_FRAME_DATA :: deser (version , payload) . map (Self :: CANFD_FRAME) , SET_GPS_GLOBAL_ORIGIN_DATA :: ID => SET_GPS_GLOBAL_ORIGIN_DATA :: deser (version , payload) . map (Self :: SET_GPS_GLOBAL_ORIGIN) , HIL_GPS_DATA :: ID => HIL_GPS_DATA :: deser (version , payload) . map (Self :: HIL_GPS) , WINCH_STATUS_DATA :: ID => WINCH_STATUS_DATA :: deser (version , payload) . map (Self :: WINCH_STATUS) , DEBUG_VECT_DATA :: ID => DEBUG_VECT_DATA :: deser (version , payload) . map (Self :: DEBUG_VECT) , LOGGING_DATA_DATA :: ID => LOGGING_DATA_DATA :: deser (version , payload) . map (Self :: LOGGING_DATA) , NAV_CONTROLLER_OUTPUT_DATA :: ID => NAV_CONTROLLER_OUTPUT_DATA :: deser (version , payload) . map (Self :: NAV_CONTROLLER_OUTPUT) , MISSION_ITEM_INT_DATA :: ID => MISSION_ITEM_INT_DATA :: deser (version , payload) . map (Self :: MISSION_ITEM_INT) , ACTUATOR_OUTPUT_STATUS_DATA :: ID => ACTUATOR_OUTPUT_STATUS_DATA :: deser (version , payload) . map (Self :: ACTUATOR_OUTPUT_STATUS) , LOG_ERASE_DATA :: ID => LOG_ERASE_DATA :: deser (version , payload) . map (Self :: LOG_ERASE) , COMMAND_LONG_DATA :: ID => COMMAND_LONG_DATA :: deser (version , payload) . map (Self :: COMMAND_LONG) , CAMERA_INFORMATION_DATA :: ID => CAMERA_INFORMATION_DATA :: deser (version , payload) . map (Self :: CAMERA_INFORMATION) , DISTANCE_SENSOR_DATA :: ID => DISTANCE_SENSOR_DATA :: deser (version , payload) . map (Self :: DISTANCE_SENSOR) , UTM_GLOBAL_POSITION_DATA :: ID => UTM_GLOBAL_POSITION_DATA :: deser (version , payload) . map (Self :: UTM_GLOBAL_POSITION) , ATTITUDE_DATA :: ID => ATTITUDE_DATA :: deser (version , payload) . map (Self :: ATTITUDE) , WIND_COV_DATA :: ID => WIND_COV_DATA :: deser (version , payload) . map (Self :: WIND_COV) , MEMORY_VECT_DATA :: ID => MEMORY_VECT_DATA :: deser (version , payload) . map (Self :: MEMORY_VECT) , GIMBAL_MANAGER_SET_ATTITUDE_DATA :: ID => GIMBAL_MANAGER_SET_ATTITUDE_DATA :: deser (version , payload) . map (Self :: GIMBAL_MANAGER_SET_ATTITUDE) , MISSION_CLEAR_ALL_DATA :: ID => MISSION_CLEAR_ALL_DATA :: deser (version , payload) . map (Self :: MISSION_CLEAR_ALL) , DATA_TRANSMISSION_HANDSHAKE_DATA :: ID => DATA_TRANSMISSION_HANDSHAKE_DATA :: deser (version , payload) . map (Self :: DATA_TRANSMISSION_HANDSHAKE) , CAN_FILTER_MODIFY_DATA :: ID => CAN_FILTER_MODIFY_DATA :: deser (version , payload) . map (Self :: CAN_FILTER_MODIFY) , LOCAL_POSITION_NED_DATA :: ID => LOCAL_POSITION_NED_DATA :: deser (version , payload) . map (Self :: LOCAL_POSITION_NED) , GPS_INJECT_DATA_DATA :: ID => GPS_INJECT_DATA_DATA :: deser (version , payload) . map (Self :: GPS_INJECT_DATA) , HIL_STATE_QUATERNION_DATA :: ID => HIL_STATE_QUATERNION_DATA :: deser (version , payload) . map (Self :: HIL_STATE_QUATERNION) , SAFETY_SET_ALLOWED_AREA_DATA :: ID => SAFETY_SET_ALLOWED_AREA_DATA :: deser (version , payload) . map (Self :: SAFETY_SET_ALLOWED_AREA) , FENCE_STATUS_DATA :: ID => FENCE_STATUS_DATA :: deser (version , payload) . map (Self :: FENCE_STATUS) , OPTICAL_FLOW_DATA :: ID => OPTICAL_FLOW_DATA :: deser (version , payload) . map (Self :: OPTICAL_FLOW) , RADIO_STATUS_DATA :: ID => RADIO_STATUS_DATA :: deser (version , payload) . map (Self :: RADIO_STATUS) , SET_POSITION_TARGET_LOCAL_NED_DATA :: ID => SET_POSITION_TARGET_LOCAL_NED_DATA :: deser (version , payload) . map (Self :: SET_POSITION_TARGET_LOCAL_NED) , RESOURCE_REQUEST_DATA :: ID => RESOURCE_REQUEST_DATA :: deser (version , payload) . map (Self :: RESOURCE_REQUEST) , UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: ID => UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: deser (version , payload) . map (Self :: UAVIONIX_ADSB_OUT_DYNAMIC) , TRAJECTORY_REPRESENTATION_BEZIER_DATA :: ID => TRAJECTORY_REPRESENTATION_BEZIER_DATA :: deser (version , payload) . map (Self :: TRAJECTORY_REPRESENTATION_BEZIER) , GPS_STATUS_DATA :: ID => GPS_STATUS_DATA :: deser (version , payload) . map (Self :: GPS_STATUS) , MISSION_REQUEST_PARTIAL_LIST_DATA :: ID => MISSION_REQUEST_PARTIAL_LIST_DATA :: deser (version , payload) . map (Self :: MISSION_REQUEST_PARTIAL_LIST) , AUTOPILOT_VERSION_DATA :: ID => AUTOPILOT_VERSION_DATA :: deser (version , payload) . map (Self :: AUTOPILOT_VERSION) , TUNNEL_DATA :: ID => TUNNEL_DATA :: deser (version , payload) . map (Self :: TUNNEL) , TERRAIN_DATA_DATA :: ID => TERRAIN_DATA_DATA :: deser (version , payload) . map (Self :: TERRAIN_DATA) , UAVCAN_NODE_STATUS_DATA :: ID => UAVCAN_NODE_STATUS_DATA :: deser (version , payload) . map (Self :: UAVCAN_NODE_STATUS) , HEARTBEAT_DATA :: ID => HEARTBEAT_DATA :: deser (version , payload) . map (Self :: HEARTBEAT) , REQUEST_EVENT_DATA :: ID => REQUEST_EVENT_DATA :: deser (version , payload) . map (Self :: REQUEST_EVENT) , PARAM_EXT_SET_DATA :: ID => PARAM_EXT_SET_DATA :: deser (version , payload) . map (Self :: PARAM_EXT_SET) , VISION_POSITION_ESTIMATE_DATA :: ID => VISION_POSITION_ESTIMATE_DATA :: deser (version , payload) . map (Self :: VISION_POSITION_ESTIMATE) , SUPPORTED_TUNES_DATA :: ID => SUPPORTED_TUNES_DATA :: deser (version , payload) . map (Self :: SUPPORTED_TUNES) , PARAM_EXT_REQUEST_LIST_DATA :: ID => PARAM_EXT_REQUEST_LIST_DATA :: deser (version , payload) . map (Self :: PARAM_EXT_REQUEST_LIST) , ISBD_LINK_STATUS_DATA :: ID => ISBD_LINK_STATUS_DATA :: deser (version , payload) . map (Self :: ISBD_LINK_STATUS) , PLAY_TUNE_V2_DATA :: ID => PLAY_TUNE_V2_DATA :: deser (version , payload) . map (Self :: PLAY_TUNE_V2) , VIDEO_STREAM_STATUS_DATA :: ID => VIDEO_STREAM_STATUS_DATA :: deser (version , payload) . map (Self :: VIDEO_STREAM_STATUS) , RAW_IMU_DATA :: ID => RAW_IMU_DATA :: deser (version , payload) . map (Self :: RAW_IMU) , OPEN_DRONE_ID_LOCATION_DATA :: ID => OPEN_DRONE_ID_LOCATION_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_LOCATION) , AIS_VESSEL_DATA :: ID => AIS_VESSEL_DATA :: deser (version , payload) . map (Self :: AIS_VESSEL) , RAW_RPM_DATA :: ID => RAW_RPM_DATA :: deser (version , payload) . map (Self :: RAW_RPM) , MISSION_REQUEST_DATA :: ID => MISSION_REQUEST_DATA :: deser (version , payload) . map (Self :: MISSION_REQUEST) , FLIGHT_INFORMATION_DATA :: ID => FLIGHT_INFORMATION_DATA :: deser (version , payload) . map (Self :: FLIGHT_INFORMATION) , VICON_POSITION_ESTIMATE_DATA :: ID => VICON_POSITION_ESTIMATE_DATA :: deser (version , payload) . map (Self :: VICON_POSITION_ESTIMATE) , HIL_SENSOR_DATA :: ID => HIL_SENSOR_DATA :: deser (version , payload) . map (Self :: HIL_SENSOR) , TIMESYNC_DATA :: ID => TIMESYNC_DATA :: deser (version , payload) . map (Self :: TIMESYNC) , OPEN_DRONE_ID_OPERATOR_ID_DATA :: ID => OPEN_DRONE_ID_OPERATOR_ID_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_OPERATOR_ID) , COMPONENT_METADATA_DATA :: ID => COMPONENT_METADATA_DATA :: deser (version , payload) . map (Self :: COMPONENT_METADATA) , SAFETY_ALLOWED_AREA_DATA :: ID => SAFETY_ALLOWED_AREA_DATA :: deser (version , payload) . map (Self :: SAFETY_ALLOWED_AREA) , MANUAL_SETPOINT_DATA :: ID => MANUAL_SETPOINT_DATA :: deser (version , payload) . map (Self :: MANUAL_SETPOINT) , CAMERA_TRACKING_IMAGE_STATUS_DATA :: ID => CAMERA_TRACKING_IMAGE_STATUS_DATA :: deser (version , payload) . map (Self :: CAMERA_TRACKING_IMAGE_STATUS) , GLOBAL_POSITION_INT_DATA :: ID => GLOBAL_POSITION_INT_DATA :: deser (version , payload) . map (Self :: GLOBAL_POSITION_INT) , EXTENDED_SYS_STATE_DATA :: ID => EXTENDED_SYS_STATE_DATA :: deser (version , payload) . map (Self :: EXTENDED_SYS_STATE) , OPEN_DRONE_ID_BASIC_ID_DATA :: ID => OPEN_DRONE_ID_BASIC_ID_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_BASIC_ID) , SYS_STATUS_DATA :: ID => SYS_STATUS_DATA :: deser (version , payload) . map (Self :: SYS_STATUS) , UAVCAN_NODE_INFO_DATA :: ID => UAVCAN_NODE_INFO_DATA :: deser (version , payload) . map (Self :: UAVCAN_NODE_INFO) , VIBRATION_DATA :: ID => VIBRATION_DATA :: deser (version , payload) . map (Self :: VIBRATION) , PARAM_REQUEST_READ_DATA :: ID => PARAM_REQUEST_READ_DATA :: deser (version , payload) . map (Self :: PARAM_REQUEST_READ) , POSITION_TARGET_GLOBAL_INT_DATA :: ID => POSITION_TARGET_GLOBAL_INT_DATA :: deser (version , payload) . map (Self :: POSITION_TARGET_GLOBAL_INT) , SET_ACTUATOR_CONTROL_TARGET_DATA :: ID => SET_ACTUATOR_CONTROL_TARGET_DATA :: deser (version , payload) . map (Self :: SET_ACTUATOR_CONTROL_TARGET) , SET_MODE_DATA :: ID => SET_MODE_DATA :: deser (version , payload) . map (Self :: SET_MODE) , TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: ID => TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: deser (version , payload) . map (Self :: TRAJECTORY_REPRESENTATION_WAYPOINTS) , COMPONENT_INFORMATION_DATA :: ID => COMPONENT_INFORMATION_DATA :: deser (version , payload) . map (Self :: COMPONENT_INFORMATION) , PROTOCOL_VERSION_DATA :: ID => PROTOCOL_VERSION_DATA :: deser (version , payload) . map (Self :: PROTOCOL_VERSION) , MESSAGE_INTERVAL_DATA :: ID => MESSAGE_INTERVAL_DATA :: deser (version , payload) . map (Self :: MESSAGE_INTERVAL) , OPEN_DRONE_ID_SYSTEM_DATA :: ID => OPEN_DRONE_ID_SYSTEM_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_SYSTEM) , ORBIT_EXECUTION_STATUS_DATA :: ID => ORBIT_EXECUTION_STATUS_DATA :: deser (version , payload) . map (Self :: ORBIT_EXECUTION_STATUS) , SETUP_SIGNING_DATA :: ID => SETUP_SIGNING_DATA :: deser (version , payload) . map (Self :: SETUP_SIGNING) , OBSTACLE_DISTANCE_DATA :: ID => OBSTACLE_DISTANCE_DATA :: deser (version , payload) . map (Self :: OBSTACLE_DISTANCE) , CAMERA_FOV_STATUS_DATA :: ID => CAMERA_FOV_STATUS_DATA :: deser (version , payload) . map (Self :: CAMERA_FOV_STATUS) , ATTITUDE_QUATERNION_DATA :: ID => ATTITUDE_QUATERNION_DATA :: deser (version , payload) . map (Self :: ATTITUDE_QUATERNION) , GENERATOR_STATUS_DATA :: ID => GENERATOR_STATUS_DATA :: deser (version , payload) . map (Self :: GENERATOR_STATUS) , POSITION_TARGET_LOCAL_NED_DATA :: ID => POSITION_TARGET_LOCAL_NED_DATA :: deser (version , payload) . map (Self :: POSITION_TARGET_LOCAL_NED) , HYGROMETER_SENSOR_DATA :: ID => HYGROMETER_SENSOR_DATA :: deser (version , payload) . map (Self :: HYGROMETER_SENSOR) , TIME_ESTIMATE_TO_TARGET_DATA :: ID => TIME_ESTIMATE_TO_TARGET_DATA :: deser (version , payload) . map (Self :: TIME_ESTIMATE_TO_TARGET) , MISSION_CURRENT_DATA :: ID => MISSION_CURRENT_DATA :: deser (version , payload) . map (Self :: MISSION_CURRENT) , SYSTEM_TIME_DATA :: ID => SYSTEM_TIME_DATA :: deser (version , payload) . map (Self :: SYSTEM_TIME) , HIGHRES_IMU_DATA :: ID => HIGHRES_IMU_DATA :: deser (version , payload) . map (Self :: HIGHRES_IMU) , REQUEST_DATA_STREAM_DATA :: ID => REQUEST_DATA_STREAM_DATA :: deser (version , payload) . map (Self :: REQUEST_DATA_STREAM) , GPS_RTK_DATA :: ID => GPS_RTK_DATA :: deser (version , payload) . map (Self :: GPS_RTK) , EFI_STATUS_DATA :: ID => EFI_STATUS_DATA :: deser (version , payload) . map (Self :: EFI_STATUS) , MISSION_REQUEST_LIST_DATA :: ID => MISSION_REQUEST_LIST_DATA :: deser (version , payload) . map (Self :: MISSION_REQUEST_LIST) , SMART_BATTERY_INFO_DATA :: ID => SMART_BATTERY_INFO_DATA :: deser (version , payload) . map (Self :: SMART_BATTERY_INFO) , CELLULAR_CONFIG_DATA :: ID => CELLULAR_CONFIG_DATA :: deser (version , payload) . map (Self :: CELLULAR_CONFIG) , CHANGE_OPERATOR_CONTROL_DATA :: ID => CHANGE_OPERATOR_CONTROL_DATA :: deser (version , payload) . map (Self :: CHANGE_OPERATOR_CONTROL) , UAVIONIX_ADSB_OUT_CFG_DATA :: ID => UAVIONIX_ADSB_OUT_CFG_DATA :: deser (version , payload) . map (Self :: UAVIONIX_ADSB_OUT_CFG) , UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: ID => UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: deser (version , payload) . map (Self :: UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT) , PARAM_EXT_REQUEST_READ_DATA :: ID => PARAM_EXT_REQUEST_READ_DATA :: deser (version , payload) . map (Self :: PARAM_EXT_REQUEST_READ) , LANDING_TARGET_DATA :: ID => LANDING_TARGET_DATA :: deser (version , payload) . map (Self :: LANDING_TARGET) , EVENT_DATA :: ID => EVENT_DATA :: deser (version , payload) . map (Self :: EVENT) , VFR_HUD_DATA :: ID => VFR_HUD_DATA :: deser (version , payload) . map (Self :: VFR_HUD) , HIL_RC_INPUTS_RAW_DATA :: ID => HIL_RC_INPUTS_RAW_DATA :: deser (version , payload) . map (Self :: HIL_RC_INPUTS_RAW) , SCALED_PRESSURE3_DATA :: ID => SCALED_PRESSURE3_DATA :: deser (version , payload) . map (Self :: SCALED_PRESSURE3) , COMMAND_CANCEL_DATA :: ID => COMMAND_CANCEL_DATA :: deser (version , payload) . map (Self :: COMMAND_CANCEL) , GIMBAL_MANAGER_STATUS_DATA :: ID => GIMBAL_MANAGER_STATUS_DATA :: deser (version , payload) . map (Self :: GIMBAL_MANAGER_STATUS) , ATT_POS_MOCAP_DATA :: ID => ATT_POS_MOCAP_DATA :: deser (version , payload) . map (Self :: ATT_POS_MOCAP) , HIL_CONTROLS_DATA :: ID => HIL_CONTROLS_DATA :: deser (version , payload) . map (Self :: HIL_CONTROLS) , ATTITUDE_TARGET_DATA :: ID => ATTITUDE_TARGET_DATA :: deser (version , payload) . map (Self :: ATTITUDE_TARGET) , PARAM_EXT_ACK_DATA :: ID => PARAM_EXT_ACK_DATA :: deser (version , payload) . map (Self :: PARAM_EXT_ACK) , ACTUATOR_CONTROL_TARGET_DATA :: ID => ACTUATOR_CONTROL_TARGET_DATA :: deser (version , payload) . map (Self :: ACTUATOR_CONTROL_TARGET) , GPS_GLOBAL_ORIGIN_DATA :: ID => GPS_GLOBAL_ORIGIN_DATA :: deser (version , payload) . map (Self :: GPS_GLOBAL_ORIGIN) , SCALED_PRESSURE_DATA :: ID => SCALED_PRESSURE_DATA :: deser (version , payload) . map (Self :: SCALED_PRESSURE) , POWER_STATUS_DATA :: ID => POWER_STATUS_DATA :: deser (version , payload) . map (Self :: POWER_STATUS) , TERRAIN_REQUEST_DATA :: ID => TERRAIN_REQUEST_DATA :: deser (version , payload) . map (Self :: TERRAIN_REQUEST) , OPEN_DRONE_ID_MESSAGE_PACK_DATA :: ID => OPEN_DRONE_ID_MESSAGE_PACK_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_MESSAGE_PACK) , LOG_DATA_DATA :: ID => LOG_DATA_DATA :: deser (version , payload) . map (Self :: LOG_DATA) , GLOBAL_POSITION_INT_COV_DATA :: ID => GLOBAL_POSITION_INT_COV_DATA :: deser (version , payload) . map (Self :: GLOBAL_POSITION_INT_COV) , V2_EXTENSION_DATA :: ID => V2_EXTENSION_DATA :: deser (version , payload) . map (Self :: V2_EXTENSION) , LOG_REQUEST_END_DATA :: ID => LOG_REQUEST_END_DATA :: deser (version , payload) . map (Self :: LOG_REQUEST_END) , CAN_FRAME_DATA :: ID => CAN_FRAME_DATA :: deser (version , payload) . map (Self :: CAN_FRAME) , ODOMETRY_DATA :: ID => ODOMETRY_DATA :: deser (version , payload) . map (Self :: ODOMETRY) , TERRAIN_REPORT_DATA :: ID => TERRAIN_REPORT_DATA :: deser (version , payload) . map (Self :: TERRAIN_REPORT) , GIMBAL_DEVICE_SET_ATTITUDE_DATA :: ID => GIMBAL_DEVICE_SET_ATTITUDE_DATA :: deser (version , payload) . map (Self :: GIMBAL_DEVICE_SET_ATTITUDE) , MISSION_SET_CURRENT_DATA :: ID => MISSION_SET_CURRENT_DATA :: deser (version , payload) . map (Self :: MISSION_SET_CURRENT) , DEBUG_FLOAT_ARRAY_DATA :: ID => DEBUG_FLOAT_ARRAY_DATA :: deser (version , payload) . map (Self :: DEBUG_FLOAT_ARRAY) , AUTH_KEY_DATA :: ID => AUTH_KEY_DATA :: deser (version , payload) . map (Self :: AUTH_KEY) , GIMBAL_MANAGER_INFORMATION_DATA :: ID => GIMBAL_MANAGER_INFORMATION_DATA :: deser (version , payload) . map (Self :: GIMBAL_MANAGER_INFORMATION) , RAW_PRESSURE_DATA :: ID => RAW_PRESSURE_DATA :: deser (version , payload) . map (Self :: RAW_PRESSURE) , MISSION_ACK_DATA :: ID => MISSION_ACK_DATA :: deser (version , payload) . map (Self :: MISSION_ACK) , PARAM_REQUEST_LIST_DATA :: ID => PARAM_REQUEST_LIST_DATA :: deser (version , payload) . map (Self :: PARAM_REQUEST_LIST) , SCALED_IMU_DATA :: ID => SCALED_IMU_DATA :: deser (version , payload) . map (Self :: SCALED_IMU) , LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: ID => LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: deser (version , payload) . map (Self :: LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET) , DEBUG_DATA :: ID => DEBUG_DATA :: deser (version , payload) . map (Self :: DEBUG) , NAMED_VALUE_INT_DATA :: ID => NAMED_VALUE_INT_DATA :: deser (version , payload) . map (Self :: NAMED_VALUE_INT) , CONTROL_SYSTEM_STATE_DATA :: ID => CONTROL_SYSTEM_STATE_DATA :: deser (version , payload) . map (Self :: CONTROL_SYSTEM_STATE) , GPS_RAW_INT_DATA :: ID => GPS_RAW_INT_DATA :: deser (version , payload) . map (Self :: GPS_RAW_INT) , COMMAND_ACK_DATA :: ID => COMMAND_ACK_DATA :: deser (version , payload) . map (Self :: COMMAND_ACK) , VIDEO_STREAM_INFORMATION_DATA :: ID => VIDEO_STREAM_INFORMATION_DATA :: deser (version , payload) . map (Self :: VIDEO_STREAM_INFORMATION) , PARAM_SET_DATA :: ID => PARAM_SET_DATA :: deser (version , payload) . map (Self :: PARAM_SET) , LOGGING_DATA_ACKED_DATA :: ID => LOGGING_DATA_ACKED_DATA :: deser (version , payload) . map (Self :: LOGGING_DATA_ACKED) , NAMED_VALUE_FLOAT_DATA :: ID => NAMED_VALUE_FLOAT_DATA :: deser (version , payload) . map (Self :: NAMED_VALUE_FLOAT) , ADSB_VEHICLE_DATA :: ID => ADSB_VEHICLE_DATA :: deser (version , payload) . map (Self :: ADSB_VEHICLE) , COLLISION_DATA :: ID => COLLISION_DATA :: deser (version , payload) . map (Self :: COLLISION) , HIL_ACTUATOR_CONTROLS_DATA :: ID => HIL_ACTUATOR_CONTROLS_DATA :: deser (version , payload) . map (Self :: HIL_ACTUATOR_CONTROLS) , LOG_REQUEST_LIST_DATA :: ID => LOG_REQUEST_LIST_DATA :: deser (version , payload) . map (Self :: LOG_REQUEST_LIST) , LINK_NODE_STATUS_DATA :: ID => LINK_NODE_STATUS_DATA :: deser (version , payload) . map (Self :: LINK_NODE_STATUS) , BATTERY_STATUS_DATA :: ID => BATTERY_STATUS_DATA :: deser (version , payload) . map (Self :: BATTERY_STATUS) , VISION_SPEED_ESTIMATE_DATA :: ID => VISION_SPEED_ESTIMATE_DATA :: deser (version , payload) . map (Self :: VISION_SPEED_ESTIMATE) , RC_CHANNELS_RAW_DATA :: ID => RC_CHANNELS_RAW_DATA :: deser (version , payload) . map (Self :: RC_CHANNELS_RAW) , SCALED_IMU3_DATA :: ID => SCALED_IMU3_DATA :: deser (version , payload) . map (Self :: SCALED_IMU3) , GIMBAL_DEVICE_INFORMATION_DATA :: ID => GIMBAL_DEVICE_INFORMATION_DATA :: deser (version , payload) . map (Self :: GIMBAL_DEVICE_INFORMATION) , ENCAPSULATED_DATA_DATA :: ID => ENCAPSULATED_DATA_DATA :: deser (version , payload) . map (Self :: ENCAPSULATED_DATA) , SET_ATTITUDE_TARGET_DATA :: ID => SET_ATTITUDE_TARGET_DATA :: deser (version , payload) . map (Self :: SET_ATTITUDE_TARGET) , CELLULAR_STATUS_DATA :: ID => CELLULAR_STATUS_DATA :: deser (version , payload) . map (Self :: CELLULAR_STATUS) , STATUSTEXT_DATA :: ID => STATUSTEXT_DATA :: deser (version , payload) . map (Self :: STATUSTEXT) , GPS_INPUT_DATA :: ID => GPS_INPUT_DATA :: deser (version , payload) . map (Self :: GPS_INPUT) , _ => { Err (:: mavlink_core :: error :: ParserError :: UnknownMessage { id }) } , } } fn message_name (& self) -> & 'static str { match self { Self :: STORAGE_INFORMATION (..) => STORAGE_INFORMATION_DATA :: NAME , Self :: MOUNT_ORIENTATION (..) => MOUNT_ORIENTATION_DATA :: NAME , Self :: SCALED_PRESSURE2 (..) => SCALED_PRESSURE2_DATA :: NAME , Self :: HIL_STATE (..) => HIL_STATE_DATA :: NAME , Self :: GPS_RTCM_DATA (..) => GPS_RTCM_DATA_DATA :: NAME , Self :: PARAM_EXT_VALUE (..) => PARAM_EXT_VALUE_DATA :: NAME , Self :: MISSION_REQUEST_INT (..) => MISSION_REQUEST_INT_DATA :: NAME , Self :: ALTITUDE (..) => ALTITUDE_DATA :: NAME , Self :: CAMERA_TRIGGER (..) => CAMERA_TRIGGER_DATA :: NAME , Self :: LOCAL_POSITION_NED_COV (..) => LOCAL_POSITION_NED_COV_DATA :: NAME , Self :: LOG_ENTRY (..) => LOG_ENTRY_DATA :: NAME , Self :: AUTOPILOT_STATE_FOR_GIMBAL_DEVICE (..) => AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: NAME , Self :: WIFI_CONFIG_AP (..) => WIFI_CONFIG_AP_DATA :: NAME , Self :: ONBOARD_COMPUTER_STATUS (..) => ONBOARD_COMPUTER_STATUS_DATA :: NAME , Self :: DATA_STREAM (..) => DATA_STREAM_DATA :: NAME , Self :: SERVO_OUTPUT_RAW (..) => SERVO_OUTPUT_RAW_DATA :: NAME , Self :: GIMBAL_DEVICE_ATTITUDE_STATUS (..) => GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: NAME , Self :: ESC_STATUS (..) => ESC_STATUS_DATA :: NAME , Self :: PLAY_TUNE (..) => PLAY_TUNE_DATA :: NAME , Self :: FILE_TRANSFER_PROTOCOL (..) => FILE_TRANSFER_PROTOCOL_DATA :: NAME , Self :: SET_HOME_POSITION (..) => SET_HOME_POSITION_DATA :: NAME , Self :: ATTITUDE_QUATERNION_COV (..) => ATTITUDE_QUATERNION_COV_DATA :: NAME , Self :: GPS2_RAW (..) => GPS2_RAW_DATA :: NAME , Self :: SIM_STATE (..) => SIM_STATE_DATA :: NAME , Self :: HOME_POSITION (..) => HOME_POSITION_DATA :: NAME , Self :: MANUAL_CONTROL (..) => MANUAL_CONTROL_DATA :: NAME , Self :: SET_POSITION_TARGET_GLOBAL_INT (..) => SET_POSITION_TARGET_GLOBAL_INT_DATA :: NAME , Self :: GLOBAL_VISION_POSITION_ESTIMATE (..) => GLOBAL_VISION_POSITION_ESTIMATE_DATA :: NAME , Self :: PING (..) => PING_DATA :: NAME , Self :: WHEEL_DISTANCE (..) => WHEEL_DISTANCE_DATA :: NAME , Self :: GIMBAL_MANAGER_SET_MANUAL_CONTROL (..) => GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: NAME , Self :: RESPONSE_EVENT_ERROR (..) => RESPONSE_EVENT_ERROR_DATA :: NAME , Self :: TERRAIN_CHECK (..) => TERRAIN_CHECK_DATA :: NAME , Self :: OPEN_DRONE_ID_AUTHENTICATION (..) => OPEN_DRONE_ID_AUTHENTICATION_DATA :: NAME , Self :: OPEN_DRONE_ID_ARM_STATUS (..) => OPEN_DRONE_ID_ARM_STATUS_DATA :: NAME , Self :: OPEN_DRONE_ID_SYSTEM_UPDATE (..) => OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: NAME , Self :: OPEN_DRONE_ID_SELF_ID (..) => OPEN_DRONE_ID_SELF_ID_DATA :: NAME , Self :: BUTTON_CHANGE (..) => BUTTON_CHANGE_DATA :: NAME , Self :: CAMERA_SETTINGS (..) => CAMERA_SETTINGS_DATA :: NAME , Self :: ESC_INFO (..) => ESC_INFO_DATA :: NAME , Self :: SERIAL_CONTROL (..) => SERIAL_CONTROL_DATA :: NAME , Self :: CHANGE_OPERATOR_CONTROL_ACK (..) => CHANGE_OPERATOR_CONTROL_ACK_DATA :: NAME , Self :: ESTIMATOR_STATUS (..) => ESTIMATOR_STATUS_DATA :: NAME , Self :: MISSION_ITEM_REACHED (..) => MISSION_ITEM_REACHED_DATA :: NAME , Self :: SCALED_IMU2 (..) => SCALED_IMU2_DATA :: NAME , Self :: OPTICAL_FLOW_RAD (..) => OPTICAL_FLOW_RAD_DATA :: NAME , Self :: LOG_REQUEST_DATA (..) => LOG_REQUEST_DATA_DATA :: NAME , Self :: FOLLOW_TARGET (..) => FOLLOW_TARGET_DATA :: NAME , Self :: GIMBAL_MANAGER_SET_PITCHYAW (..) => GIMBAL_MANAGER_SET_PITCHYAW_DATA :: NAME , Self :: HIGH_LATENCY (..) => HIGH_LATENCY_DATA :: NAME , Self :: PARAM_MAP_RC (..) => PARAM_MAP_RC_DATA :: NAME , Self :: MISSION_COUNT (..) => MISSION_COUNT_DATA :: NAME , Self :: PARAM_VALUE (..) => PARAM_VALUE_DATA :: NAME , Self :: LOGGING_ACK (..) => LOGGING_ACK_DATA :: NAME , Self :: HIL_OPTICAL_FLOW (..) => HIL_OPTICAL_FLOW_DATA :: NAME , Self :: HIGH_LATENCY2 (..) => HIGH_LATENCY2_DATA :: NAME , Self :: CURRENT_EVENT_SEQUENCE (..) => CURRENT_EVENT_SEQUENCE_DATA :: NAME , Self :: CAMERA_TRACKING_GEO_STATUS (..) => CAMERA_TRACKING_GEO_STATUS_DATA :: NAME , Self :: RC_CHANNELS_SCALED (..) => RC_CHANNELS_SCALED_DATA :: NAME , Self :: GPS2_RTK (..) => GPS2_RTK_DATA :: NAME , Self :: RC_CHANNELS (..) => RC_CHANNELS_DATA :: NAME , Self :: MISSION_WRITE_PARTIAL_LIST (..) => MISSION_WRITE_PARTIAL_LIST_DATA :: NAME , Self :: CAMERA_CAPTURE_STATUS (..) => CAMERA_CAPTURE_STATUS_DATA :: NAME , Self :: RC_CHANNELS_OVERRIDE (..) => RC_CHANNELS_OVERRIDE_DATA :: NAME , Self :: CAMERA_IMAGE_CAPTURED (..) => CAMERA_IMAGE_CAPTURED_DATA :: NAME , Self :: MISSION_ITEM (..) => MISSION_ITEM_DATA :: NAME , Self :: MAG_CAL_REPORT (..) => MAG_CAL_REPORT_DATA :: NAME , Self :: COMMAND_INT (..) => COMMAND_INT_DATA :: NAME , Self :: CANFD_FRAME (..) => CANFD_FRAME_DATA :: NAME , Self :: SET_GPS_GLOBAL_ORIGIN (..) => SET_GPS_GLOBAL_ORIGIN_DATA :: NAME , Self :: HIL_GPS (..) => HIL_GPS_DATA :: NAME , Self :: WINCH_STATUS (..) => WINCH_STATUS_DATA :: NAME , Self :: DEBUG_VECT (..) => DEBUG_VECT_DATA :: NAME , Self :: LOGGING_DATA (..) => LOGGING_DATA_DATA :: NAME , Self :: NAV_CONTROLLER_OUTPUT (..) => NAV_CONTROLLER_OUTPUT_DATA :: NAME , Self :: MISSION_ITEM_INT (..) => MISSION_ITEM_INT_DATA :: NAME , Self :: ACTUATOR_OUTPUT_STATUS (..) => ACTUATOR_OUTPUT_STATUS_DATA :: NAME , Self :: LOG_ERASE (..) => LOG_ERASE_DATA :: NAME , Self :: COMMAND_LONG (..) => COMMAND_LONG_DATA :: NAME , Self :: CAMERA_INFORMATION (..) => CAMERA_INFORMATION_DATA :: NAME , Self :: DISTANCE_SENSOR (..) => DISTANCE_SENSOR_DATA :: NAME , Self :: UTM_GLOBAL_POSITION (..) => UTM_GLOBAL_POSITION_DATA :: NAME , Self :: ATTITUDE (..) => ATTITUDE_DATA :: NAME , Self :: WIND_COV (..) => WIND_COV_DATA :: NAME , Self :: MEMORY_VECT (..) => MEMORY_VECT_DATA :: NAME , Self :: GIMBAL_MANAGER_SET_ATTITUDE (..) => GIMBAL_MANAGER_SET_ATTITUDE_DATA :: NAME , Self :: MISSION_CLEAR_ALL (..) => MISSION_CLEAR_ALL_DATA :: NAME , Self :: DATA_TRANSMISSION_HANDSHAKE (..) => DATA_TRANSMISSION_HANDSHAKE_DATA :: NAME , Self :: CAN_FILTER_MODIFY (..) => CAN_FILTER_MODIFY_DATA :: NAME , Self :: LOCAL_POSITION_NED (..) => LOCAL_POSITION_NED_DATA :: NAME , Self :: GPS_INJECT_DATA (..) => GPS_INJECT_DATA_DATA :: NAME , Self :: HIL_STATE_QUATERNION (..) => HIL_STATE_QUATERNION_DATA :: NAME , Self :: SAFETY_SET_ALLOWED_AREA (..) => SAFETY_SET_ALLOWED_AREA_DATA :: NAME , Self :: FENCE_STATUS (..) => FENCE_STATUS_DATA :: NAME , Self :: OPTICAL_FLOW (..) => OPTICAL_FLOW_DATA :: NAME , Self :: RADIO_STATUS (..) => RADIO_STATUS_DATA :: NAME , Self :: SET_POSITION_TARGET_LOCAL_NED (..) => SET_POSITION_TARGET_LOCAL_NED_DATA :: NAME , Self :: RESOURCE_REQUEST (..) => RESOURCE_REQUEST_DATA :: NAME , Self :: UAVIONIX_ADSB_OUT_DYNAMIC (..) => UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: NAME , Self :: TRAJECTORY_REPRESENTATION_BEZIER (..) => TRAJECTORY_REPRESENTATION_BEZIER_DATA :: NAME , Self :: GPS_STATUS (..) => GPS_STATUS_DATA :: NAME , Self :: MISSION_REQUEST_PARTIAL_LIST (..) => MISSION_REQUEST_PARTIAL_LIST_DATA :: NAME , Self :: AUTOPILOT_VERSION (..) => AUTOPILOT_VERSION_DATA :: NAME , Self :: TUNNEL (..) => TUNNEL_DATA :: NAME , Self :: TERRAIN_DATA (..) => TERRAIN_DATA_DATA :: NAME , Self :: UAVCAN_NODE_STATUS (..) => UAVCAN_NODE_STATUS_DATA :: NAME , Self :: HEARTBEAT (..) => HEARTBEAT_DATA :: NAME , Self :: REQUEST_EVENT (..) => REQUEST_EVENT_DATA :: NAME , Self :: PARAM_EXT_SET (..) => PARAM_EXT_SET_DATA :: NAME , Self :: VISION_POSITION_ESTIMATE (..) => VISION_POSITION_ESTIMATE_DATA :: NAME , Self :: SUPPORTED_TUNES (..) => SUPPORTED_TUNES_DATA :: NAME , Self :: PARAM_EXT_REQUEST_LIST (..) => PARAM_EXT_REQUEST_LIST_DATA :: NAME , Self :: ISBD_LINK_STATUS (..) => ISBD_LINK_STATUS_DATA :: NAME , Self :: PLAY_TUNE_V2 (..) => PLAY_TUNE_V2_DATA :: NAME , Self :: VIDEO_STREAM_STATUS (..) => VIDEO_STREAM_STATUS_DATA :: NAME , Self :: RAW_IMU (..) => RAW_IMU_DATA :: NAME , Self :: OPEN_DRONE_ID_LOCATION (..) => OPEN_DRONE_ID_LOCATION_DATA :: NAME , Self :: AIS_VESSEL (..) => AIS_VESSEL_DATA :: NAME , Self :: RAW_RPM (..) => RAW_RPM_DATA :: NAME , Self :: MISSION_REQUEST (..) => MISSION_REQUEST_DATA :: NAME , Self :: FLIGHT_INFORMATION (..) => FLIGHT_INFORMATION_DATA :: NAME , Self :: VICON_POSITION_ESTIMATE (..) => VICON_POSITION_ESTIMATE_DATA :: NAME , Self :: HIL_SENSOR (..) => HIL_SENSOR_DATA :: NAME , Self :: TIMESYNC (..) => TIMESYNC_DATA :: NAME , Self :: OPEN_DRONE_ID_OPERATOR_ID (..) => OPEN_DRONE_ID_OPERATOR_ID_DATA :: NAME , Self :: COMPONENT_METADATA (..) => COMPONENT_METADATA_DATA :: NAME , Self :: SAFETY_ALLOWED_AREA (..) => SAFETY_ALLOWED_AREA_DATA :: NAME , Self :: MANUAL_SETPOINT (..) => MANUAL_SETPOINT_DATA :: NAME , Self :: CAMERA_TRACKING_IMAGE_STATUS (..) => CAMERA_TRACKING_IMAGE_STATUS_DATA :: NAME , Self :: GLOBAL_POSITION_INT (..) => GLOBAL_POSITION_INT_DATA :: NAME , Self :: EXTENDED_SYS_STATE (..) => EXTENDED_SYS_STATE_DATA :: NAME , Self :: OPEN_DRONE_ID_BASIC_ID (..) => OPEN_DRONE_ID_BASIC_ID_DATA :: NAME , Self :: SYS_STATUS (..) => SYS_STATUS_DATA :: NAME , Self :: UAVCAN_NODE_INFO (..) => UAVCAN_NODE_INFO_DATA :: NAME , Self :: VIBRATION (..) => VIBRATION_DATA :: NAME , Self :: PARAM_REQUEST_READ (..) => PARAM_REQUEST_READ_DATA :: NAME , Self :: POSITION_TARGET_GLOBAL_INT (..) => POSITION_TARGET_GLOBAL_INT_DATA :: NAME , Self :: SET_ACTUATOR_CONTROL_TARGET (..) => SET_ACTUATOR_CONTROL_TARGET_DATA :: NAME , Self :: SET_MODE (..) => SET_MODE_DATA :: NAME , Self :: TRAJECTORY_REPRESENTATION_WAYPOINTS (..) => TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: NAME , Self :: COMPONENT_INFORMATION (..) => COMPONENT_INFORMATION_DATA :: NAME , Self :: PROTOCOL_VERSION (..) => PROTOCOL_VERSION_DATA :: NAME , Self :: MESSAGE_INTERVAL (..) => MESSAGE_INTERVAL_DATA :: NAME , Self :: OPEN_DRONE_ID_SYSTEM (..) => OPEN_DRONE_ID_SYSTEM_DATA :: NAME , Self :: ORBIT_EXECUTION_STATUS (..) => ORBIT_EXECUTION_STATUS_DATA :: NAME , Self :: SETUP_SIGNING (..) => SETUP_SIGNING_DATA :: NAME , Self :: OBSTACLE_DISTANCE (..) => OBSTACLE_DISTANCE_DATA :: NAME , Self :: CAMERA_FOV_STATUS (..) => CAMERA_FOV_STATUS_DATA :: NAME , Self :: ATTITUDE_QUATERNION (..) => ATTITUDE_QUATERNION_DATA :: NAME , Self :: GENERATOR_STATUS (..) => GENERATOR_STATUS_DATA :: NAME , Self :: POSITION_TARGET_LOCAL_NED (..) => POSITION_TARGET_LOCAL_NED_DATA :: NAME , Self :: HYGROMETER_SENSOR (..) => HYGROMETER_SENSOR_DATA :: NAME , Self :: TIME_ESTIMATE_TO_TARGET (..) => TIME_ESTIMATE_TO_TARGET_DATA :: NAME , Self :: MISSION_CURRENT (..) => MISSION_CURRENT_DATA :: NAME , Self :: SYSTEM_TIME (..) => SYSTEM_TIME_DATA :: NAME , Self :: HIGHRES_IMU (..) => HIGHRES_IMU_DATA :: NAME , Self :: REQUEST_DATA_STREAM (..) => REQUEST_DATA_STREAM_DATA :: NAME , Self :: GPS_RTK (..) => GPS_RTK_DATA :: NAME , Self :: EFI_STATUS (..) => EFI_STATUS_DATA :: NAME , Self :: MISSION_REQUEST_LIST (..) => MISSION_REQUEST_LIST_DATA :: NAME , Self :: SMART_BATTERY_INFO (..) => SMART_BATTERY_INFO_DATA :: NAME , Self :: CELLULAR_CONFIG (..) => CELLULAR_CONFIG_DATA :: NAME , Self :: CHANGE_OPERATOR_CONTROL (..) => CHANGE_OPERATOR_CONTROL_DATA :: NAME , Self :: UAVIONIX_ADSB_OUT_CFG (..) => UAVIONIX_ADSB_OUT_CFG_DATA :: NAME , Self :: UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT (..) => UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: NAME , Self :: PARAM_EXT_REQUEST_READ (..) => PARAM_EXT_REQUEST_READ_DATA :: NAME , Self :: LANDING_TARGET (..) => LANDING_TARGET_DATA :: NAME , Self :: EVENT (..) => EVENT_DATA :: NAME , Self :: VFR_HUD (..) => VFR_HUD_DATA :: NAME , Self :: HIL_RC_INPUTS_RAW (..) => HIL_RC_INPUTS_RAW_DATA :: NAME , Self :: SCALED_PRESSURE3 (..) => SCALED_PRESSURE3_DATA :: NAME , Self :: COMMAND_CANCEL (..) => COMMAND_CANCEL_DATA :: NAME , Self :: GIMBAL_MANAGER_STATUS (..) => GIMBAL_MANAGER_STATUS_DATA :: NAME , Self :: ATT_POS_MOCAP (..) => ATT_POS_MOCAP_DATA :: NAME , Self :: HIL_CONTROLS (..) => HIL_CONTROLS_DATA :: NAME , Self :: ATTITUDE_TARGET (..) => ATTITUDE_TARGET_DATA :: NAME , Self :: PARAM_EXT_ACK (..) => PARAM_EXT_ACK_DATA :: NAME , Self :: ACTUATOR_CONTROL_TARGET (..) => ACTUATOR_CONTROL_TARGET_DATA :: NAME , Self :: GPS_GLOBAL_ORIGIN (..) => GPS_GLOBAL_ORIGIN_DATA :: NAME , Self :: SCALED_PRESSURE (..) => SCALED_PRESSURE_DATA :: NAME , Self :: POWER_STATUS (..) => POWER_STATUS_DATA :: NAME , Self :: TERRAIN_REQUEST (..) => TERRAIN_REQUEST_DATA :: NAME , Self :: OPEN_DRONE_ID_MESSAGE_PACK (..) => OPEN_DRONE_ID_MESSAGE_PACK_DATA :: NAME , Self :: LOG_DATA (..) => LOG_DATA_DATA :: NAME , Self :: GLOBAL_POSITION_INT_COV (..) => GLOBAL_POSITION_INT_COV_DATA :: NAME , Self :: V2_EXTENSION (..) => V2_EXTENSION_DATA :: NAME , Self :: LOG_REQUEST_END (..) => LOG_REQUEST_END_DATA :: NAME , Self :: CAN_FRAME (..) => CAN_FRAME_DATA :: NAME , Self :: ODOMETRY (..) => ODOMETRY_DATA :: NAME , Self :: TERRAIN_REPORT (..) => TERRAIN_REPORT_DATA :: NAME , Self :: GIMBAL_DEVICE_SET_ATTITUDE (..) => GIMBAL_DEVICE_SET_ATTITUDE_DATA :: NAME , Self :: MISSION_SET_CURRENT (..) => MISSION_SET_CURRENT_DATA :: NAME , Self :: DEBUG_FLOAT_ARRAY (..) => DEBUG_FLOAT_ARRAY_DATA :: NAME , Self :: AUTH_KEY (..) => AUTH_KEY_DATA :: NAME , Self :: GIMBAL_MANAGER_INFORMATION (..) => GIMBAL_MANAGER_INFORMATION_DATA :: NAME , Self :: RAW_PRESSURE (..) => RAW_PRESSURE_DATA :: NAME , Self :: MISSION_ACK (..) => MISSION_ACK_DATA :: NAME , Self :: PARAM_REQUEST_LIST (..) => PARAM_REQUEST_LIST_DATA :: NAME , Self :: SCALED_IMU (..) => SCALED_IMU_DATA :: NAME , Self :: LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET (..) => LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: NAME , Self :: DEBUG (..) => DEBUG_DATA :: NAME , Self :: NAMED_VALUE_INT (..) => NAMED_VALUE_INT_DATA :: NAME , Self :: CONTROL_SYSTEM_STATE (..) => CONTROL_SYSTEM_STATE_DATA :: NAME , Self :: GPS_RAW_INT (..) => GPS_RAW_INT_DATA :: NAME , Self :: COMMAND_ACK (..) => COMMAND_ACK_DATA :: NAME , Self :: VIDEO_STREAM_INFORMATION (..) => VIDEO_STREAM_INFORMATION_DATA :: NAME , Self :: PARAM_SET (..) => PARAM_SET_DATA :: NAME , Self :: LOGGING_DATA_ACKED (..) => LOGGING_DATA_ACKED_DATA :: NAME , Self :: NAMED_VALUE_FLOAT (..) => NAMED_VALUE_FLOAT_DATA :: NAME , Self :: ADSB_VEHICLE (..) => ADSB_VEHICLE_DATA :: NAME , Self :: COLLISION (..) => COLLISION_DATA :: NAME , Self :: HIL_ACTUATOR_CONTROLS (..) => HIL_ACTUATOR_CONTROLS_DATA :: NAME , Self :: LOG_REQUEST_LIST (..) => LOG_REQUEST_LIST_DATA :: NAME , Self :: LINK_NODE_STATUS (..) => LINK_NODE_STATUS_DATA :: NAME , Self :: BATTERY_STATUS (..) => BATTERY_STATUS_DATA :: NAME , Self :: VISION_SPEED_ESTIMATE (..) => VISION_SPEED_ESTIMATE_DATA :: NAME , Self :: RC_CHANNELS_RAW (..) => RC_CHANNELS_RAW_DATA :: NAME , Self :: SCALED_IMU3 (..) => SCALED_IMU3_DATA :: NAME , Self :: GIMBAL_DEVICE_INFORMATION (..) => GIMBAL_DEVICE_INFORMATION_DATA :: NAME , Self :: ENCAPSULATED_DATA (..) => ENCAPSULATED_DATA_DATA :: NAME , Self :: SET_ATTITUDE_TARGET (..) => SET_ATTITUDE_TARGET_DATA :: NAME , Self :: CELLULAR_STATUS (..) => CELLULAR_STATUS_DATA :: NAME , Self :: STATUSTEXT (..) => STATUSTEXT_DATA :: NAME , Self :: GPS_INPUT (..) => GPS_INPUT_DATA :: NAME , } } fn message_id (& self) -> u32 { match self { Self :: STORAGE_INFORMATION (..) => STORAGE_INFORMATION_DATA :: ID , Self :: MOUNT_ORIENTATION (..) => MOUNT_ORIENTATION_DATA :: ID , Self :: SCALED_PRESSURE2 (..) => SCALED_PRESSURE2_DATA :: ID , Self :: HIL_STATE (..) => HIL_STATE_DATA :: ID , Self :: GPS_RTCM_DATA (..) => GPS_RTCM_DATA_DATA :: ID , Self :: PARAM_EXT_VALUE (..) => PARAM_EXT_VALUE_DATA :: ID , Self :: MISSION_REQUEST_INT (..) => MISSION_REQUEST_INT_DATA :: ID , Self :: ALTITUDE (..) => ALTITUDE_DATA :: ID , Self :: CAMERA_TRIGGER (..) => CAMERA_TRIGGER_DATA :: ID , Self :: LOCAL_POSITION_NED_COV (..) => LOCAL_POSITION_NED_COV_DATA :: ID , Self :: LOG_ENTRY (..) => LOG_ENTRY_DATA :: ID , Self :: AUTOPILOT_STATE_FOR_GIMBAL_DEVICE (..) => AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: ID , Self :: WIFI_CONFIG_AP (..) => WIFI_CONFIG_AP_DATA :: ID , Self :: ONBOARD_COMPUTER_STATUS (..) => ONBOARD_COMPUTER_STATUS_DATA :: ID , Self :: DATA_STREAM (..) => DATA_STREAM_DATA :: ID , Self :: SERVO_OUTPUT_RAW (..) => SERVO_OUTPUT_RAW_DATA :: ID , Self :: GIMBAL_DEVICE_ATTITUDE_STATUS (..) => GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: ID , Self :: ESC_STATUS (..) => ESC_STATUS_DATA :: ID , Self :: PLAY_TUNE (..) => PLAY_TUNE_DATA :: ID , Self :: FILE_TRANSFER_PROTOCOL (..) => FILE_TRANSFER_PROTOCOL_DATA :: ID , Self :: SET_HOME_POSITION (..) => SET_HOME_POSITION_DATA :: ID , Self :: ATTITUDE_QUATERNION_COV (..) => ATTITUDE_QUATERNION_COV_DATA :: ID , Self :: GPS2_RAW (..) => GPS2_RAW_DATA :: ID , Self :: SIM_STATE (..) => SIM_STATE_DATA :: ID , Self :: HOME_POSITION (..) => HOME_POSITION_DATA :: ID , Self :: MANUAL_CONTROL (..) => MANUAL_CONTROL_DATA :: ID , Self :: SET_POSITION_TARGET_GLOBAL_INT (..) => SET_POSITION_TARGET_GLOBAL_INT_DATA :: ID , Self :: GLOBAL_VISION_POSITION_ESTIMATE (..) => GLOBAL_VISION_POSITION_ESTIMATE_DATA :: ID , Self :: PING (..) => PING_DATA :: ID , Self :: WHEEL_DISTANCE (..) => WHEEL_DISTANCE_DATA :: ID , Self :: GIMBAL_MANAGER_SET_MANUAL_CONTROL (..) => GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: ID , Self :: RESPONSE_EVENT_ERROR (..) => RESPONSE_EVENT_ERROR_DATA :: ID , Self :: TERRAIN_CHECK (..) => TERRAIN_CHECK_DATA :: ID , Self :: OPEN_DRONE_ID_AUTHENTICATION (..) => OPEN_DRONE_ID_AUTHENTICATION_DATA :: ID , Self :: OPEN_DRONE_ID_ARM_STATUS (..) => OPEN_DRONE_ID_ARM_STATUS_DATA :: ID , Self :: OPEN_DRONE_ID_SYSTEM_UPDATE (..) => OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: ID , Self :: OPEN_DRONE_ID_SELF_ID (..) => OPEN_DRONE_ID_SELF_ID_DATA :: ID , Self :: BUTTON_CHANGE (..) => BUTTON_CHANGE_DATA :: ID , Self :: CAMERA_SETTINGS (..) => CAMERA_SETTINGS_DATA :: ID , Self :: ESC_INFO (..) => ESC_INFO_DATA :: ID , Self :: SERIAL_CONTROL (..) => SERIAL_CONTROL_DATA :: ID , Self :: CHANGE_OPERATOR_CONTROL_ACK (..) => CHANGE_OPERATOR_CONTROL_ACK_DATA :: ID , Self :: ESTIMATOR_STATUS (..) => ESTIMATOR_STATUS_DATA :: ID , Self :: MISSION_ITEM_REACHED (..) => MISSION_ITEM_REACHED_DATA :: ID , Self :: SCALED_IMU2 (..) => SCALED_IMU2_DATA :: ID , Self :: OPTICAL_FLOW_RAD (..) => OPTICAL_FLOW_RAD_DATA :: ID , Self :: LOG_REQUEST_DATA (..) => LOG_REQUEST_DATA_DATA :: ID , Self :: FOLLOW_TARGET (..) => FOLLOW_TARGET_DATA :: ID , Self :: GIMBAL_MANAGER_SET_PITCHYAW (..) => GIMBAL_MANAGER_SET_PITCHYAW_DATA :: ID , Self :: HIGH_LATENCY (..) => HIGH_LATENCY_DATA :: ID , Self :: PARAM_MAP_RC (..) => PARAM_MAP_RC_DATA :: ID , Self :: MISSION_COUNT (..) => MISSION_COUNT_DATA :: ID , Self :: PARAM_VALUE (..) => PARAM_VALUE_DATA :: ID , Self :: LOGGING_ACK (..) => LOGGING_ACK_DATA :: ID , Self :: HIL_OPTICAL_FLOW (..) => HIL_OPTICAL_FLOW_DATA :: ID , Self :: HIGH_LATENCY2 (..) => HIGH_LATENCY2_DATA :: ID , Self :: CURRENT_EVENT_SEQUENCE (..) => CURRENT_EVENT_SEQUENCE_DATA :: ID , Self :: CAMERA_TRACKING_GEO_STATUS (..) => CAMERA_TRACKING_GEO_STATUS_DATA :: ID , Self :: RC_CHANNELS_SCALED (..) => RC_CHANNELS_SCALED_DATA :: ID , Self :: GPS2_RTK (..) => GPS2_RTK_DATA :: ID , Self :: RC_CHANNELS (..) => RC_CHANNELS_DATA :: ID , Self :: MISSION_WRITE_PARTIAL_LIST (..) => MISSION_WRITE_PARTIAL_LIST_DATA :: ID , Self :: CAMERA_CAPTURE_STATUS (..) => CAMERA_CAPTURE_STATUS_DATA :: ID , Self :: RC_CHANNELS_OVERRIDE (..) => RC_CHANNELS_OVERRIDE_DATA :: ID , Self :: CAMERA_IMAGE_CAPTURED (..) => CAMERA_IMAGE_CAPTURED_DATA :: ID , Self :: MISSION_ITEM (..) => MISSION_ITEM_DATA :: ID , Self :: MAG_CAL_REPORT (..) => MAG_CAL_REPORT_DATA :: ID , Self :: COMMAND_INT (..) => COMMAND_INT_DATA :: ID , Self :: CANFD_FRAME (..) => CANFD_FRAME_DATA :: ID , Self :: SET_GPS_GLOBAL_ORIGIN (..) => SET_GPS_GLOBAL_ORIGIN_DATA :: ID , Self :: HIL_GPS (..) => HIL_GPS_DATA :: ID , Self :: WINCH_STATUS (..) => WINCH_STATUS_DATA :: ID , Self :: DEBUG_VECT (..) => DEBUG_VECT_DATA :: ID , Self :: LOGGING_DATA (..) => LOGGING_DATA_DATA :: ID , Self :: NAV_CONTROLLER_OUTPUT (..) => NAV_CONTROLLER_OUTPUT_DATA :: ID , Self :: MISSION_ITEM_INT (..) => MISSION_ITEM_INT_DATA :: ID , Self :: ACTUATOR_OUTPUT_STATUS (..) => ACTUATOR_OUTPUT_STATUS_DATA :: ID , Self :: LOG_ERASE (..) => LOG_ERASE_DATA :: ID , Self :: COMMAND_LONG (..) => COMMAND_LONG_DATA :: ID , Self :: CAMERA_INFORMATION (..) => CAMERA_INFORMATION_DATA :: ID , Self :: DISTANCE_SENSOR (..) => DISTANCE_SENSOR_DATA :: ID , Self :: UTM_GLOBAL_POSITION (..) => UTM_GLOBAL_POSITION_DATA :: ID , Self :: ATTITUDE (..) => ATTITUDE_DATA :: ID , Self :: WIND_COV (..) => WIND_COV_DATA :: ID , Self :: MEMORY_VECT (..) => MEMORY_VECT_DATA :: ID , Self :: GIMBAL_MANAGER_SET_ATTITUDE (..) => GIMBAL_MANAGER_SET_ATTITUDE_DATA :: ID , Self :: MISSION_CLEAR_ALL (..) => MISSION_CLEAR_ALL_DATA :: ID , Self :: DATA_TRANSMISSION_HANDSHAKE (..) => DATA_TRANSMISSION_HANDSHAKE_DATA :: ID , Self :: CAN_FILTER_MODIFY (..) => CAN_FILTER_MODIFY_DATA :: ID , Self :: LOCAL_POSITION_NED (..) => LOCAL_POSITION_NED_DATA :: ID , Self :: GPS_INJECT_DATA (..) => GPS_INJECT_DATA_DATA :: ID , Self :: HIL_STATE_QUATERNION (..) => HIL_STATE_QUATERNION_DATA :: ID , Self :: SAFETY_SET_ALLOWED_AREA (..) => SAFETY_SET_ALLOWED_AREA_DATA :: ID , Self :: FENCE_STATUS (..) => FENCE_STATUS_DATA :: ID , Self :: OPTICAL_FLOW (..) => OPTICAL_FLOW_DATA :: ID , Self :: RADIO_STATUS (..) => RADIO_STATUS_DATA :: ID , Self :: SET_POSITION_TARGET_LOCAL_NED (..) => SET_POSITION_TARGET_LOCAL_NED_DATA :: ID , Self :: RESOURCE_REQUEST (..) => RESOURCE_REQUEST_DATA :: ID , Self :: UAVIONIX_ADSB_OUT_DYNAMIC (..) => UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: ID , Self :: TRAJECTORY_REPRESENTATION_BEZIER (..) => TRAJECTORY_REPRESENTATION_BEZIER_DATA :: ID , Self :: GPS_STATUS (..) => GPS_STATUS_DATA :: ID , Self :: MISSION_REQUEST_PARTIAL_LIST (..) => MISSION_REQUEST_PARTIAL_LIST_DATA :: ID , Self :: AUTOPILOT_VERSION (..) => AUTOPILOT_VERSION_DATA :: ID , Self :: TUNNEL (..) => TUNNEL_DATA :: ID , Self :: TERRAIN_DATA (..) => TERRAIN_DATA_DATA :: ID , Self :: UAVCAN_NODE_STATUS (..) => UAVCAN_NODE_STATUS_DATA :: ID , Self :: HEARTBEAT (..) => HEARTBEAT_DATA :: ID , Self :: REQUEST_EVENT (..) => REQUEST_EVENT_DATA :: ID , Self :: PARAM_EXT_SET (..) => PARAM_EXT_SET_DATA :: ID , Self :: VISION_POSITION_ESTIMATE (..) => VISION_POSITION_ESTIMATE_DATA :: ID , Self :: SUPPORTED_TUNES (..) => SUPPORTED_TUNES_DATA :: ID , Self :: PARAM_EXT_REQUEST_LIST (..) => PARAM_EXT_REQUEST_LIST_DATA :: ID , Self :: ISBD_LINK_STATUS (..) => ISBD_LINK_STATUS_DATA :: ID , Self :: PLAY_TUNE_V2 (..) => PLAY_TUNE_V2_DATA :: ID , Self :: VIDEO_STREAM_STATUS (..) => VIDEO_STREAM_STATUS_DATA :: ID , Self :: RAW_IMU (..) => RAW_IMU_DATA :: ID , Self :: OPEN_DRONE_ID_LOCATION (..) => OPEN_DRONE_ID_LOCATION_DATA :: ID , Self :: AIS_VESSEL (..) => AIS_VESSEL_DATA :: ID , Self :: RAW_RPM (..) => RAW_RPM_DATA :: ID , Self :: MISSION_REQUEST (..) => MISSION_REQUEST_DATA :: ID , Self :: FLIGHT_INFORMATION (..) => FLIGHT_INFORMATION_DATA :: ID , Self :: VICON_POSITION_ESTIMATE (..) => VICON_POSITION_ESTIMATE_DATA :: ID , Self :: HIL_SENSOR (..) => HIL_SENSOR_DATA :: ID , Self :: TIMESYNC (..) => TIMESYNC_DATA :: ID , Self :: OPEN_DRONE_ID_OPERATOR_ID (..) => OPEN_DRONE_ID_OPERATOR_ID_DATA :: ID , Self :: COMPONENT_METADATA (..) => COMPONENT_METADATA_DATA :: ID , Self :: SAFETY_ALLOWED_AREA (..) => SAFETY_ALLOWED_AREA_DATA :: ID , Self :: MANUAL_SETPOINT (..) => MANUAL_SETPOINT_DATA :: ID , Self :: CAMERA_TRACKING_IMAGE_STATUS (..) => CAMERA_TRACKING_IMAGE_STATUS_DATA :: ID , Self :: GLOBAL_POSITION_INT (..) => GLOBAL_POSITION_INT_DATA :: ID , Self :: EXTENDED_SYS_STATE (..) => EXTENDED_SYS_STATE_DATA :: ID , Self :: OPEN_DRONE_ID_BASIC_ID (..) => OPEN_DRONE_ID_BASIC_ID_DATA :: ID , Self :: SYS_STATUS (..) => SYS_STATUS_DATA :: ID , Self :: UAVCAN_NODE_INFO (..) => UAVCAN_NODE_INFO_DATA :: ID , Self :: VIBRATION (..) => VIBRATION_DATA :: ID , Self :: PARAM_REQUEST_READ (..) => PARAM_REQUEST_READ_DATA :: ID , Self :: POSITION_TARGET_GLOBAL_INT (..) => POSITION_TARGET_GLOBAL_INT_DATA :: ID , Self :: SET_ACTUATOR_CONTROL_TARGET (..) => SET_ACTUATOR_CONTROL_TARGET_DATA :: ID , Self :: SET_MODE (..) => SET_MODE_DATA :: ID , Self :: TRAJECTORY_REPRESENTATION_WAYPOINTS (..) => TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: ID , Self :: COMPONENT_INFORMATION (..) => COMPONENT_INFORMATION_DATA :: ID , Self :: PROTOCOL_VERSION (..) => PROTOCOL_VERSION_DATA :: ID , Self :: MESSAGE_INTERVAL (..) => MESSAGE_INTERVAL_DATA :: ID , Self :: OPEN_DRONE_ID_SYSTEM (..) => OPEN_DRONE_ID_SYSTEM_DATA :: ID , Self :: ORBIT_EXECUTION_STATUS (..) => ORBIT_EXECUTION_STATUS_DATA :: ID , Self :: SETUP_SIGNING (..) => SETUP_SIGNING_DATA :: ID , Self :: OBSTACLE_DISTANCE (..) => OBSTACLE_DISTANCE_DATA :: ID , Self :: CAMERA_FOV_STATUS (..) => CAMERA_FOV_STATUS_DATA :: ID , Self :: ATTITUDE_QUATERNION (..) => ATTITUDE_QUATERNION_DATA :: ID , Self :: GENERATOR_STATUS (..) => GENERATOR_STATUS_DATA :: ID , Self :: POSITION_TARGET_LOCAL_NED (..) => POSITION_TARGET_LOCAL_NED_DATA :: ID , Self :: HYGROMETER_SENSOR (..) => HYGROMETER_SENSOR_DATA :: ID , Self :: TIME_ESTIMATE_TO_TARGET (..) => TIME_ESTIMATE_TO_TARGET_DATA :: ID , Self :: MISSION_CURRENT (..) => MISSION_CURRENT_DATA :: ID , Self :: SYSTEM_TIME (..) => SYSTEM_TIME_DATA :: ID , Self :: HIGHRES_IMU (..) => HIGHRES_IMU_DATA :: ID , Self :: REQUEST_DATA_STREAM (..) => REQUEST_DATA_STREAM_DATA :: ID , Self :: GPS_RTK (..) => GPS_RTK_DATA :: ID , Self :: EFI_STATUS (..) => EFI_STATUS_DATA :: ID , Self :: MISSION_REQUEST_LIST (..) => MISSION_REQUEST_LIST_DATA :: ID , Self :: SMART_BATTERY_INFO (..) => SMART_BATTERY_INFO_DATA :: ID , Self :: CELLULAR_CONFIG (..) => CELLULAR_CONFIG_DATA :: ID , Self :: CHANGE_OPERATOR_CONTROL (..) => CHANGE_OPERATOR_CONTROL_DATA :: ID , Self :: UAVIONIX_ADSB_OUT_CFG (..) => UAVIONIX_ADSB_OUT_CFG_DATA :: ID , Self :: UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT (..) => UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: ID , Self :: PARAM_EXT_REQUEST_READ (..) => PARAM_EXT_REQUEST_READ_DATA :: ID , Self :: LANDING_TARGET (..) => LANDING_TARGET_DATA :: ID , Self :: EVENT (..) => EVENT_DATA :: ID , Self :: VFR_HUD (..) => VFR_HUD_DATA :: ID , Self :: HIL_RC_INPUTS_RAW (..) => HIL_RC_INPUTS_RAW_DATA :: ID , Self :: SCALED_PRESSURE3 (..) => SCALED_PRESSURE3_DATA :: ID , Self :: COMMAND_CANCEL (..) => COMMAND_CANCEL_DATA :: ID , Self :: GIMBAL_MANAGER_STATUS (..) => GIMBAL_MANAGER_STATUS_DATA :: ID , Self :: ATT_POS_MOCAP (..) => ATT_POS_MOCAP_DATA :: ID , Self :: HIL_CONTROLS (..) => HIL_CONTROLS_DATA :: ID , Self :: ATTITUDE_TARGET (..) => ATTITUDE_TARGET_DATA :: ID , Self :: PARAM_EXT_ACK (..) => PARAM_EXT_ACK_DATA :: ID , Self :: ACTUATOR_CONTROL_TARGET (..) => ACTUATOR_CONTROL_TARGET_DATA :: ID , Self :: GPS_GLOBAL_ORIGIN (..) => GPS_GLOBAL_ORIGIN_DATA :: ID , Self :: SCALED_PRESSURE (..) => SCALED_PRESSURE_DATA :: ID , Self :: POWER_STATUS (..) => POWER_STATUS_DATA :: ID , Self :: TERRAIN_REQUEST (..) => TERRAIN_REQUEST_DATA :: ID , Self :: OPEN_DRONE_ID_MESSAGE_PACK (..) => OPEN_DRONE_ID_MESSAGE_PACK_DATA :: ID , Self :: LOG_DATA (..) => LOG_DATA_DATA :: ID , Self :: GLOBAL_POSITION_INT_COV (..) => GLOBAL_POSITION_INT_COV_DATA :: ID , Self :: V2_EXTENSION (..) => V2_EXTENSION_DATA :: ID , Self :: LOG_REQUEST_END (..) => LOG_REQUEST_END_DATA :: ID , Self :: CAN_FRAME (..) => CAN_FRAME_DATA :: ID , Self :: ODOMETRY (..) => ODOMETRY_DATA :: ID , Self :: TERRAIN_REPORT (..) => TERRAIN_REPORT_DATA :: ID , Self :: GIMBAL_DEVICE_SET_ATTITUDE (..) => GIMBAL_DEVICE_SET_ATTITUDE_DATA :: ID , Self :: MISSION_SET_CURRENT (..) => MISSION_SET_CURRENT_DATA :: ID , Self :: DEBUG_FLOAT_ARRAY (..) => DEBUG_FLOAT_ARRAY_DATA :: ID , Self :: AUTH_KEY (..) => AUTH_KEY_DATA :: ID , Self :: GIMBAL_MANAGER_INFORMATION (..) => GIMBAL_MANAGER_INFORMATION_DATA :: ID , Self :: RAW_PRESSURE (..) => RAW_PRESSURE_DATA :: ID , Self :: MISSION_ACK (..) => MISSION_ACK_DATA :: ID , Self :: PARAM_REQUEST_LIST (..) => PARAM_REQUEST_LIST_DATA :: ID , Self :: SCALED_IMU (..) => SCALED_IMU_DATA :: ID , Self :: LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET (..) => LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: ID , Self :: DEBUG (..) => DEBUG_DATA :: ID , Self :: NAMED_VALUE_INT (..) => NAMED_VALUE_INT_DATA :: ID , Self :: CONTROL_SYSTEM_STATE (..) => CONTROL_SYSTEM_STATE_DATA :: ID , Self :: GPS_RAW_INT (..) => GPS_RAW_INT_DATA :: ID , Self :: COMMAND_ACK (..) => COMMAND_ACK_DATA :: ID , Self :: VIDEO_STREAM_INFORMATION (..) => VIDEO_STREAM_INFORMATION_DATA :: ID , Self :: PARAM_SET (..) => PARAM_SET_DATA :: ID , Self :: LOGGING_DATA_ACKED (..) => LOGGING_DATA_ACKED_DATA :: ID , Self :: NAMED_VALUE_FLOAT (..) => NAMED_VALUE_FLOAT_DATA :: ID , Self :: ADSB_VEHICLE (..) => ADSB_VEHICLE_DATA :: ID , Self :: COLLISION (..) => COLLISION_DATA :: ID , Self :: HIL_ACTUATOR_CONTROLS (..) => HIL_ACTUATOR_CONTROLS_DATA :: ID , Self :: LOG_REQUEST_LIST (..) => LOG_REQUEST_LIST_DATA :: ID , Self :: LINK_NODE_STATUS (..) => LINK_NODE_STATUS_DATA :: ID , Self :: BATTERY_STATUS (..) => BATTERY_STATUS_DATA :: ID , Self :: VISION_SPEED_ESTIMATE (..) => VISION_SPEED_ESTIMATE_DATA :: ID , Self :: RC_CHANNELS_RAW (..) => RC_CHANNELS_RAW_DATA :: ID , Self :: SCALED_IMU3 (..) => SCALED_IMU3_DATA :: ID , Self :: GIMBAL_DEVICE_INFORMATION (..) => GIMBAL_DEVICE_INFORMATION_DATA :: ID , Self :: ENCAPSULATED_DATA (..) => ENCAPSULATED_DATA_DATA :: ID , Self :: SET_ATTITUDE_TARGET (..) => SET_ATTITUDE_TARGET_DATA :: ID , Self :: CELLULAR_STATUS (..) => CELLULAR_STATUS_DATA :: ID , Self :: STATUSTEXT (..) => STATUSTEXT_DATA :: ID , Self :: GPS_INPUT (..) => GPS_INPUT_DATA :: ID , } } fn message_id_from_name (name : & str) -> Result < u32 , & 'static str > { match name { STORAGE_INFORMATION_DATA :: NAME => Ok (STORAGE_INFORMATION_DATA :: ID) , MOUNT_ORIENTATION_DATA :: NAME => Ok (MOUNT_ORIENTATION_DATA :: ID) , SCALED_PRESSURE2_DATA :: NAME => Ok (SCALED_PRESSURE2_DATA :: ID) , HIL_STATE_DATA :: NAME => Ok (HIL_STATE_DATA :: ID) , GPS_RTCM_DATA_DATA :: NAME => Ok (GPS_RTCM_DATA_DATA :: ID) , PARAM_EXT_VALUE_DATA :: NAME => Ok (PARAM_EXT_VALUE_DATA :: ID) , MISSION_REQUEST_INT_DATA :: NAME => Ok (MISSION_REQUEST_INT_DATA :: ID) , ALTITUDE_DATA :: NAME => Ok (ALTITUDE_DATA :: ID) , CAMERA_TRIGGER_DATA :: NAME => Ok (CAMERA_TRIGGER_DATA :: ID) , LOCAL_POSITION_NED_COV_DATA :: NAME => Ok (LOCAL_POSITION_NED_COV_DATA :: ID) , LOG_ENTRY_DATA :: NAME => Ok (LOG_ENTRY_DATA :: ID) , AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: NAME => Ok (AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: ID) , WIFI_CONFIG_AP_DATA :: NAME => Ok (WIFI_CONFIG_AP_DATA :: ID) , ONBOARD_COMPUTER_STATUS_DATA :: NAME => Ok (ONBOARD_COMPUTER_STATUS_DATA :: ID) , DATA_STREAM_DATA :: NAME => Ok (DATA_STREAM_DATA :: ID) , SERVO_OUTPUT_RAW_DATA :: NAME => Ok (SERVO_OUTPUT_RAW_DATA :: ID) , GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: NAME => Ok (GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: ID) , ESC_STATUS_DATA :: NAME => Ok (ESC_STATUS_DATA :: ID) , PLAY_TUNE_DATA :: NAME => Ok (PLAY_TUNE_DATA :: ID) , FILE_TRANSFER_PROTOCOL_DATA :: NAME => Ok (FILE_TRANSFER_PROTOCOL_DATA :: ID) , SET_HOME_POSITION_DATA :: NAME => Ok (SET_HOME_POSITION_DATA :: ID) , ATTITUDE_QUATERNION_COV_DATA :: NAME => Ok (ATTITUDE_QUATERNION_COV_DATA :: ID) , GPS2_RAW_DATA :: NAME => Ok (GPS2_RAW_DATA :: ID) , SIM_STATE_DATA :: NAME => Ok (SIM_STATE_DATA :: ID) , HOME_POSITION_DATA :: NAME => Ok (HOME_POSITION_DATA :: ID) , MANUAL_CONTROL_DATA :: NAME => Ok (MANUAL_CONTROL_DATA :: ID) , SET_POSITION_TARGET_GLOBAL_INT_DATA :: NAME => Ok (SET_POSITION_TARGET_GLOBAL_INT_DATA :: ID) , GLOBAL_VISION_POSITION_ESTIMATE_DATA :: NAME => Ok (GLOBAL_VISION_POSITION_ESTIMATE_DATA :: ID) , PING_DATA :: NAME => Ok (PING_DATA :: ID) , WHEEL_DISTANCE_DATA :: NAME => Ok (WHEEL_DISTANCE_DATA :: ID) , GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: NAME => Ok (GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: ID) , RESPONSE_EVENT_ERROR_DATA :: NAME => Ok (RESPONSE_EVENT_ERROR_DATA :: ID) , TERRAIN_CHECK_DATA :: NAME => Ok (TERRAIN_CHECK_DATA :: ID) , OPEN_DRONE_ID_AUTHENTICATION_DATA :: NAME => Ok (OPEN_DRONE_ID_AUTHENTICATION_DATA :: ID) , OPEN_DRONE_ID_ARM_STATUS_DATA :: NAME => Ok (OPEN_DRONE_ID_ARM_STATUS_DATA :: ID) , OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: NAME => Ok (OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: ID) , OPEN_DRONE_ID_SELF_ID_DATA :: NAME => Ok (OPEN_DRONE_ID_SELF_ID_DATA :: ID) , BUTTON_CHANGE_DATA :: NAME => Ok (BUTTON_CHANGE_DATA :: ID) , CAMERA_SETTINGS_DATA :: NAME => Ok (CAMERA_SETTINGS_DATA :: ID) , ESC_INFO_DATA :: NAME => Ok (ESC_INFO_DATA :: ID) , SERIAL_CONTROL_DATA :: NAME => Ok (SERIAL_CONTROL_DATA :: ID) , CHANGE_OPERATOR_CONTROL_ACK_DATA :: NAME => Ok (CHANGE_OPERATOR_CONTROL_ACK_DATA :: ID) , ESTIMATOR_STATUS_DATA :: NAME => Ok (ESTIMATOR_STATUS_DATA :: ID) , MISSION_ITEM_REACHED_DATA :: NAME => Ok (MISSION_ITEM_REACHED_DATA :: ID) , SCALED_IMU2_DATA :: NAME => Ok (SCALED_IMU2_DATA :: ID) , OPTICAL_FLOW_RAD_DATA :: NAME => Ok (OPTICAL_FLOW_RAD_DATA :: ID) , LOG_REQUEST_DATA_DATA :: NAME => Ok (LOG_REQUEST_DATA_DATA :: ID) , FOLLOW_TARGET_DATA :: NAME => Ok (FOLLOW_TARGET_DATA :: ID) , GIMBAL_MANAGER_SET_PITCHYAW_DATA :: NAME => Ok (GIMBAL_MANAGER_SET_PITCHYAW_DATA :: ID) , HIGH_LATENCY_DATA :: NAME => Ok (HIGH_LATENCY_DATA :: ID) , PARAM_MAP_RC_DATA :: NAME => Ok (PARAM_MAP_RC_DATA :: ID) , MISSION_COUNT_DATA :: NAME => Ok (MISSION_COUNT_DATA :: ID) , PARAM_VALUE_DATA :: NAME => Ok (PARAM_VALUE_DATA :: ID) , LOGGING_ACK_DATA :: NAME => Ok (LOGGING_ACK_DATA :: ID) , HIL_OPTICAL_FLOW_DATA :: NAME => Ok (HIL_OPTICAL_FLOW_DATA :: ID) , HIGH_LATENCY2_DATA :: NAME => Ok (HIGH_LATENCY2_DATA :: ID) , CURRENT_EVENT_SEQUENCE_DATA :: NAME => Ok (CURRENT_EVENT_SEQUENCE_DATA :: ID) , CAMERA_TRACKING_GEO_STATUS_DATA :: NAME => Ok (CAMERA_TRACKING_GEO_STATUS_DATA :: ID) , RC_CHANNELS_SCALED_DATA :: NAME => Ok (RC_CHANNELS_SCALED_DATA :: ID) , GPS2_RTK_DATA :: NAME => Ok (GPS2_RTK_DATA :: ID) , RC_CHANNELS_DATA :: NAME => Ok (RC_CHANNELS_DATA :: ID) , MISSION_WRITE_PARTIAL_LIST_DATA :: NAME => Ok (MISSION_WRITE_PARTIAL_LIST_DATA :: ID) , CAMERA_CAPTURE_STATUS_DATA :: NAME => Ok (CAMERA_CAPTURE_STATUS_DATA :: ID) , RC_CHANNELS_OVERRIDE_DATA :: NAME => Ok (RC_CHANNELS_OVERRIDE_DATA :: ID) , CAMERA_IMAGE_CAPTURED_DATA :: NAME => Ok (CAMERA_IMAGE_CAPTURED_DATA :: ID) , MISSION_ITEM_DATA :: NAME => Ok (MISSION_ITEM_DATA :: ID) , MAG_CAL_REPORT_DATA :: NAME => Ok (MAG_CAL_REPORT_DATA :: ID) , COMMAND_INT_DATA :: NAME => Ok (COMMAND_INT_DATA :: ID) , CANFD_FRAME_DATA :: NAME => Ok (CANFD_FRAME_DATA :: ID) , SET_GPS_GLOBAL_ORIGIN_DATA :: NAME => Ok (SET_GPS_GLOBAL_ORIGIN_DATA :: ID) , HIL_GPS_DATA :: NAME => Ok (HIL_GPS_DATA :: ID) , WINCH_STATUS_DATA :: NAME => Ok (WINCH_STATUS_DATA :: ID) , DEBUG_VECT_DATA :: NAME => Ok (DEBUG_VECT_DATA :: ID) , LOGGING_DATA_DATA :: NAME => Ok (LOGGING_DATA_DATA :: ID) , NAV_CONTROLLER_OUTPUT_DATA :: NAME => Ok (NAV_CONTROLLER_OUTPUT_DATA :: ID) , MISSION_ITEM_INT_DATA :: NAME => Ok (MISSION_ITEM_INT_DATA :: ID) , ACTUATOR_OUTPUT_STATUS_DATA :: NAME => Ok (ACTUATOR_OUTPUT_STATUS_DATA :: ID) , LOG_ERASE_DATA :: NAME => Ok (LOG_ERASE_DATA :: ID) , COMMAND_LONG_DATA :: NAME => Ok (COMMAND_LONG_DATA :: ID) , CAMERA_INFORMATION_DATA :: NAME => Ok (CAMERA_INFORMATION_DATA :: ID) , DISTANCE_SENSOR_DATA :: NAME => Ok (DISTANCE_SENSOR_DATA :: ID) , UTM_GLOBAL_POSITION_DATA :: NAME => Ok (UTM_GLOBAL_POSITION_DATA :: ID) , ATTITUDE_DATA :: NAME => Ok (ATTITUDE_DATA :: ID) , WIND_COV_DATA :: NAME => Ok (WIND_COV_DATA :: ID) , MEMORY_VECT_DATA :: NAME => Ok (MEMORY_VECT_DATA :: ID) , GIMBAL_MANAGER_SET_ATTITUDE_DATA :: NAME => Ok (GIMBAL_MANAGER_SET_ATTITUDE_DATA :: ID) , MISSION_CLEAR_ALL_DATA :: NAME => Ok (MISSION_CLEAR_ALL_DATA :: ID) , DATA_TRANSMISSION_HANDSHAKE_DATA :: NAME => Ok (DATA_TRANSMISSION_HANDSHAKE_DATA :: ID) , CAN_FILTER_MODIFY_DATA :: NAME => Ok (CAN_FILTER_MODIFY_DATA :: ID) , LOCAL_POSITION_NED_DATA :: NAME => Ok (LOCAL_POSITION_NED_DATA :: ID) , GPS_INJECT_DATA_DATA :: NAME => Ok (GPS_INJECT_DATA_DATA :: ID) , HIL_STATE_QUATERNION_DATA :: NAME => Ok (HIL_STATE_QUATERNION_DATA :: ID) , SAFETY_SET_ALLOWED_AREA_DATA :: NAME => Ok (SAFETY_SET_ALLOWED_AREA_DATA :: ID) , FENCE_STATUS_DATA :: NAME => Ok (FENCE_STATUS_DATA :: ID) , OPTICAL_FLOW_DATA :: NAME => Ok (OPTICAL_FLOW_DATA :: ID) , RADIO_STATUS_DATA :: NAME => Ok (RADIO_STATUS_DATA :: ID) , SET_POSITION_TARGET_LOCAL_NED_DATA :: NAME => Ok (SET_POSITION_TARGET_LOCAL_NED_DATA :: ID) , RESOURCE_REQUEST_DATA :: NAME => Ok (RESOURCE_REQUEST_DATA :: ID) , UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: NAME => Ok (UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: ID) , TRAJECTORY_REPRESENTATION_BEZIER_DATA :: NAME => Ok (TRAJECTORY_REPRESENTATION_BEZIER_DATA :: ID) , GPS_STATUS_DATA :: NAME => Ok (GPS_STATUS_DATA :: ID) , MISSION_REQUEST_PARTIAL_LIST_DATA :: NAME => Ok (MISSION_REQUEST_PARTIAL_LIST_DATA :: ID) , AUTOPILOT_VERSION_DATA :: NAME => Ok (AUTOPILOT_VERSION_DATA :: ID) , TUNNEL_DATA :: NAME => Ok (TUNNEL_DATA :: ID) , TERRAIN_DATA_DATA :: NAME => Ok (TERRAIN_DATA_DATA :: ID) , UAVCAN_NODE_STATUS_DATA :: NAME => Ok (UAVCAN_NODE_STATUS_DATA :: ID) , HEARTBEAT_DATA :: NAME => Ok (HEARTBEAT_DATA :: ID) , REQUEST_EVENT_DATA :: NAME => Ok (REQUEST_EVENT_DATA :: ID) , PARAM_EXT_SET_DATA :: NAME => Ok (PARAM_EXT_SET_DATA :: ID) , VISION_POSITION_ESTIMATE_DATA :: NAME => Ok (VISION_POSITION_ESTIMATE_DATA :: ID) , SUPPORTED_TUNES_DATA :: NAME => Ok (SUPPORTED_TUNES_DATA :: ID) , PARAM_EXT_REQUEST_LIST_DATA :: NAME => Ok (PARAM_EXT_REQUEST_LIST_DATA :: ID) , ISBD_LINK_STATUS_DATA :: NAME => Ok (ISBD_LINK_STATUS_DATA :: ID) , PLAY_TUNE_V2_DATA :: NAME => Ok (PLAY_TUNE_V2_DATA :: ID) , VIDEO_STREAM_STATUS_DATA :: NAME => Ok (VIDEO_STREAM_STATUS_DATA :: ID) , RAW_IMU_DATA :: NAME => Ok (RAW_IMU_DATA :: ID) , OPEN_DRONE_ID_LOCATION_DATA :: NAME => Ok (OPEN_DRONE_ID_LOCATION_DATA :: ID) , AIS_VESSEL_DATA :: NAME => Ok (AIS_VESSEL_DATA :: ID) , RAW_RPM_DATA :: NAME => Ok (RAW_RPM_DATA :: ID) , MISSION_REQUEST_DATA :: NAME => Ok (MISSION_REQUEST_DATA :: ID) , FLIGHT_INFORMATION_DATA :: NAME => Ok (FLIGHT_INFORMATION_DATA :: ID) , VICON_POSITION_ESTIMATE_DATA :: NAME => Ok (VICON_POSITION_ESTIMATE_DATA :: ID) , HIL_SENSOR_DATA :: NAME => Ok (HIL_SENSOR_DATA :: ID) , TIMESYNC_DATA :: NAME => Ok (TIMESYNC_DATA :: ID) , OPEN_DRONE_ID_OPERATOR_ID_DATA :: NAME => Ok (OPEN_DRONE_ID_OPERATOR_ID_DATA :: ID) , COMPONENT_METADATA_DATA :: NAME => Ok (COMPONENT_METADATA_DATA :: ID) , SAFETY_ALLOWED_AREA_DATA :: NAME => Ok (SAFETY_ALLOWED_AREA_DATA :: ID) , MANUAL_SETPOINT_DATA :: NAME => Ok (MANUAL_SETPOINT_DATA :: ID) , CAMERA_TRACKING_IMAGE_STATUS_DATA :: NAME => Ok (CAMERA_TRACKING_IMAGE_STATUS_DATA :: ID) , GLOBAL_POSITION_INT_DATA :: NAME => Ok (GLOBAL_POSITION_INT_DATA :: ID) , EXTENDED_SYS_STATE_DATA :: NAME => Ok (EXTENDED_SYS_STATE_DATA :: ID) , OPEN_DRONE_ID_BASIC_ID_DATA :: NAME => Ok (OPEN_DRONE_ID_BASIC_ID_DATA :: ID) , SYS_STATUS_DATA :: NAME => Ok (SYS_STATUS_DATA :: ID) , UAVCAN_NODE_INFO_DATA :: NAME => Ok (UAVCAN_NODE_INFO_DATA :: ID) , VIBRATION_DATA :: NAME => Ok (VIBRATION_DATA :: ID) , PARAM_REQUEST_READ_DATA :: NAME => Ok (PARAM_REQUEST_READ_DATA :: ID) , POSITION_TARGET_GLOBAL_INT_DATA :: NAME => Ok (POSITION_TARGET_GLOBAL_INT_DATA :: ID) , SET_ACTUATOR_CONTROL_TARGET_DATA :: NAME => Ok (SET_ACTUATOR_CONTROL_TARGET_DATA :: ID) , SET_MODE_DATA :: NAME => Ok (SET_MODE_DATA :: ID) , TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: NAME => Ok (TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: ID) , COMPONENT_INFORMATION_DATA :: NAME => Ok (COMPONENT_INFORMATION_DATA :: ID) , PROTOCOL_VERSION_DATA :: NAME => Ok (PROTOCOL_VERSION_DATA :: ID) , MESSAGE_INTERVAL_DATA :: NAME => Ok (MESSAGE_INTERVAL_DATA :: ID) , OPEN_DRONE_ID_SYSTEM_DATA :: NAME => Ok (OPEN_DRONE_ID_SYSTEM_DATA :: ID) , ORBIT_EXECUTION_STATUS_DATA :: NAME => Ok (ORBIT_EXECUTION_STATUS_DATA :: ID) , SETUP_SIGNING_DATA :: NAME => Ok (SETUP_SIGNING_DATA :: ID) , OBSTACLE_DISTANCE_DATA :: NAME => Ok (OBSTACLE_DISTANCE_DATA :: ID) , CAMERA_FOV_STATUS_DATA :: NAME => Ok (CAMERA_FOV_STATUS_DATA :: ID) , ATTITUDE_QUATERNION_DATA :: NAME => Ok (ATTITUDE_QUATERNION_DATA :: ID) , GENERATOR_STATUS_DATA :: NAME => Ok (GENERATOR_STATUS_DATA :: ID) , POSITION_TARGET_LOCAL_NED_DATA :: NAME => Ok (POSITION_TARGET_LOCAL_NED_DATA :: ID) , HYGROMETER_SENSOR_DATA :: NAME => Ok (HYGROMETER_SENSOR_DATA :: ID) , TIME_ESTIMATE_TO_TARGET_DATA :: NAME => Ok (TIME_ESTIMATE_TO_TARGET_DATA :: ID) , MISSION_CURRENT_DATA :: NAME => Ok (MISSION_CURRENT_DATA :: ID) , SYSTEM_TIME_DATA :: NAME => Ok (SYSTEM_TIME_DATA :: ID) , HIGHRES_IMU_DATA :: NAME => Ok (HIGHRES_IMU_DATA :: ID) , REQUEST_DATA_STREAM_DATA :: NAME => Ok (REQUEST_DATA_STREAM_DATA :: ID) , GPS_RTK_DATA :: NAME => Ok (GPS_RTK_DATA :: ID) , EFI_STATUS_DATA :: NAME => Ok (EFI_STATUS_DATA :: ID) , MISSION_REQUEST_LIST_DATA :: NAME => Ok (MISSION_REQUEST_LIST_DATA :: ID) , SMART_BATTERY_INFO_DATA :: NAME => Ok (SMART_BATTERY_INFO_DATA :: ID) , CELLULAR_CONFIG_DATA :: NAME => Ok (CELLULAR_CONFIG_DATA :: ID) , CHANGE_OPERATOR_CONTROL_DATA :: NAME => Ok (CHANGE_OPERATOR_CONTROL_DATA :: ID) , UAVIONIX_ADSB_OUT_CFG_DATA :: NAME => Ok (UAVIONIX_ADSB_OUT_CFG_DATA :: ID) , UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: NAME => Ok (UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: ID) , PARAM_EXT_REQUEST_READ_DATA :: NAME => Ok (PARAM_EXT_REQUEST_READ_DATA :: ID) , LANDING_TARGET_DATA :: NAME => Ok (LANDING_TARGET_DATA :: ID) , EVENT_DATA :: NAME => Ok (EVENT_DATA :: ID) , VFR_HUD_DATA :: NAME => Ok (VFR_HUD_DATA :: ID) , HIL_RC_INPUTS_RAW_DATA :: NAME => Ok (HIL_RC_INPUTS_RAW_DATA :: ID) , SCALED_PRESSURE3_DATA :: NAME => Ok (SCALED_PRESSURE3_DATA :: ID) , COMMAND_CANCEL_DATA :: NAME => Ok (COMMAND_CANCEL_DATA :: ID) , GIMBAL_MANAGER_STATUS_DATA :: NAME => Ok (GIMBAL_MANAGER_STATUS_DATA :: ID) , ATT_POS_MOCAP_DATA :: NAME => Ok (ATT_POS_MOCAP_DATA :: ID) , HIL_CONTROLS_DATA :: NAME => Ok (HIL_CONTROLS_DATA :: ID) , ATTITUDE_TARGET_DATA :: NAME => Ok (ATTITUDE_TARGET_DATA :: ID) , PARAM_EXT_ACK_DATA :: NAME => Ok (PARAM_EXT_ACK_DATA :: ID) , ACTUATOR_CONTROL_TARGET_DATA :: NAME => Ok (ACTUATOR_CONTROL_TARGET_DATA :: ID) , GPS_GLOBAL_ORIGIN_DATA :: NAME => Ok (GPS_GLOBAL_ORIGIN_DATA :: ID) , SCALED_PRESSURE_DATA :: NAME => Ok (SCALED_PRESSURE_DATA :: ID) , POWER_STATUS_DATA :: NAME => Ok (POWER_STATUS_DATA :: ID) , TERRAIN_REQUEST_DATA :: NAME => Ok (TERRAIN_REQUEST_DATA :: ID) , OPEN_DRONE_ID_MESSAGE_PACK_DATA :: NAME => Ok (OPEN_DRONE_ID_MESSAGE_PACK_DATA :: ID) , LOG_DATA_DATA :: NAME => Ok (LOG_DATA_DATA :: ID) , GLOBAL_POSITION_INT_COV_DATA :: NAME => Ok (GLOBAL_POSITION_INT_COV_DATA :: ID) , V2_EXTENSION_DATA :: NAME => Ok (V2_EXTENSION_DATA :: ID) , LOG_REQUEST_END_DATA :: NAME => Ok (LOG_REQUEST_END_DATA :: ID) , CAN_FRAME_DATA :: NAME => Ok (CAN_FRAME_DATA :: ID) , ODOMETRY_DATA :: NAME => Ok (ODOMETRY_DATA :: ID) , TERRAIN_REPORT_DATA :: NAME => Ok (TERRAIN_REPORT_DATA :: ID) , GIMBAL_DEVICE_SET_ATTITUDE_DATA :: NAME => Ok (GIMBAL_DEVICE_SET_ATTITUDE_DATA :: ID) , MISSION_SET_CURRENT_DATA :: NAME => Ok (MISSION_SET_CURRENT_DATA :: ID) , DEBUG_FLOAT_ARRAY_DATA :: NAME => Ok (DEBUG_FLOAT_ARRAY_DATA :: ID) , AUTH_KEY_DATA :: NAME => Ok (AUTH_KEY_DATA :: ID) , GIMBAL_MANAGER_INFORMATION_DATA :: NAME => Ok (GIMBAL_MANAGER_INFORMATION_DATA :: ID) , RAW_PRESSURE_DATA :: NAME => Ok (RAW_PRESSURE_DATA :: ID) , MISSION_ACK_DATA :: NAME => Ok (MISSION_ACK_DATA :: ID) , PARAM_REQUEST_LIST_DATA :: NAME => Ok (PARAM_REQUEST_LIST_DATA :: ID) , SCALED_IMU_DATA :: NAME => Ok (SCALED_IMU_DATA :: ID) , LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: NAME => Ok (LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: ID) , DEBUG_DATA :: NAME => Ok (DEBUG_DATA :: ID) , NAMED_VALUE_INT_DATA :: NAME => Ok (NAMED_VALUE_INT_DATA :: ID) , CONTROL_SYSTEM_STATE_DATA :: NAME => Ok (CONTROL_SYSTEM_STATE_DATA :: ID) , GPS_RAW_INT_DATA :: NAME => Ok (GPS_RAW_INT_DATA :: ID) , COMMAND_ACK_DATA :: NAME => Ok (COMMAND_ACK_DATA :: ID) , VIDEO_STREAM_INFORMATION_DATA :: NAME => Ok (VIDEO_STREAM_INFORMATION_DATA :: ID) , PARAM_SET_DATA :: NAME => Ok (PARAM_SET_DATA :: ID) , LOGGING_DATA_ACKED_DATA :: NAME => Ok (LOGGING_DATA_ACKED_DATA :: ID) , NAMED_VALUE_FLOAT_DATA :: NAME => Ok (NAMED_VALUE_FLOAT_DATA :: ID) , ADSB_VEHICLE_DATA :: NAME => Ok (ADSB_VEHICLE_DATA :: ID) , COLLISION_DATA :: NAME => Ok (COLLISION_DATA :: ID) , HIL_ACTUATOR_CONTROLS_DATA :: NAME => Ok (HIL_ACTUATOR_CONTROLS_DATA :: ID) , LOG_REQUEST_LIST_DATA :: NAME => Ok (LOG_REQUEST_LIST_DATA :: ID) , LINK_NODE_STATUS_DATA :: NAME => Ok (LINK_NODE_STATUS_DATA :: ID) , BATTERY_STATUS_DATA :: NAME => Ok (BATTERY_STATUS_DATA :: ID) , VISION_SPEED_ESTIMATE_DATA :: NAME => Ok (VISION_SPEED_ESTIMATE_DATA :: ID) , RC_CHANNELS_RAW_DATA :: NAME => Ok (RC_CHANNELS_RAW_DATA :: ID) , SCALED_IMU3_DATA :: NAME => Ok (SCALED_IMU3_DATA :: ID) , GIMBAL_DEVICE_INFORMATION_DATA :: NAME => Ok (GIMBAL_DEVICE_INFORMATION_DATA :: ID) , ENCAPSULATED_DATA_DATA :: NAME => Ok (ENCAPSULATED_DATA_DATA :: ID) , SET_ATTITUDE_TARGET_DATA :: NAME => Ok (SET_ATTITUDE_TARGET_DATA :: ID) , CELLULAR_STATUS_DATA :: NAME => Ok (CELLULAR_STATUS_DATA :: ID) , STATUSTEXT_DATA :: NAME => Ok (STATUSTEXT_DATA :: ID) , GPS_INPUT_DATA :: NAME => Ok (GPS_INPUT_DATA :: ID) , _ => { Err ("Invalid message name.") } } } fn default_message_from_id (id : u32) -> Result < Self , & 'static str > { match id { STORAGE_INFORMATION_DATA :: ID => Ok (Self :: STORAGE_INFORMATION (STORAGE_INFORMATION_DATA :: default ())) , MOUNT_ORIENTATION_DATA :: ID => Ok (Self :: MOUNT_ORIENTATION (MOUNT_ORIENTATION_DATA :: default ())) , SCALED_PRESSURE2_DATA :: ID => Ok (Self :: SCALED_PRESSURE2 (SCALED_PRESSURE2_DATA :: default ())) , HIL_STATE_DATA :: ID => Ok (Self :: HIL_STATE (HIL_STATE_DATA :: default ())) , GPS_RTCM_DATA_DATA :: ID => Ok (Self :: GPS_RTCM_DATA (GPS_RTCM_DATA_DATA :: default ())) , PARAM_EXT_VALUE_DATA :: ID => Ok (Self :: PARAM_EXT_VALUE (PARAM_EXT_VALUE_DATA :: default ())) , MISSION_REQUEST_INT_DATA :: ID => Ok (Self :: MISSION_REQUEST_INT (MISSION_REQUEST_INT_DATA :: default ())) , ALTITUDE_DATA :: ID => Ok (Self :: ALTITUDE (ALTITUDE_DATA :: default ())) , CAMERA_TRIGGER_DATA :: ID => Ok (Self :: CAMERA_TRIGGER (CAMERA_TRIGGER_DATA :: default ())) , LOCAL_POSITION_NED_COV_DATA :: ID => Ok (Self :: LOCAL_POSITION_NED_COV (LOCAL_POSITION_NED_COV_DATA :: default ())) , LOG_ENTRY_DATA :: ID => Ok (Self :: LOG_ENTRY (LOG_ENTRY_DATA :: default ())) , AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: ID => Ok (Self :: AUTOPILOT_STATE_FOR_GIMBAL_DEVICE (AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: default ())) , WIFI_CONFIG_AP_DATA :: ID => Ok (Self :: WIFI_CONFIG_AP (WIFI_CONFIG_AP_DATA :: default ())) , ONBOARD_COMPUTER_STATUS_DATA :: ID => Ok (Self :: ONBOARD_COMPUTER_STATUS (ONBOARD_COMPUTER_STATUS_DATA :: default ())) , DATA_STREAM_DATA :: ID => Ok (Self :: DATA_STREAM (DATA_STREAM_DATA :: default ())) , SERVO_OUTPUT_RAW_DATA :: ID => Ok (Self :: SERVO_OUTPUT_RAW (SERVO_OUTPUT_RAW_DATA :: default ())) , GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: ID => Ok (Self :: GIMBAL_DEVICE_ATTITUDE_STATUS (GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: default ())) , ESC_STATUS_DATA :: ID => Ok (Self :: ESC_STATUS (ESC_STATUS_DATA :: default ())) , PLAY_TUNE_DATA :: ID => Ok (Self :: PLAY_TUNE (PLAY_TUNE_DATA :: default ())) , FILE_TRANSFER_PROTOCOL_DATA :: ID => Ok (Self :: FILE_TRANSFER_PROTOCOL (FILE_TRANSFER_PROTOCOL_DATA :: default ())) , SET_HOME_POSITION_DATA :: ID => Ok (Self :: SET_HOME_POSITION (SET_HOME_POSITION_DATA :: default ())) , ATTITUDE_QUATERNION_COV_DATA :: ID => Ok (Self :: ATTITUDE_QUATERNION_COV (ATTITUDE_QUATERNION_COV_DATA :: default ())) , GPS2_RAW_DATA :: ID => Ok (Self :: GPS2_RAW (GPS2_RAW_DATA :: default ())) , SIM_STATE_DATA :: ID => Ok (Self :: SIM_STATE (SIM_STATE_DATA :: default ())) , HOME_POSITION_DATA :: ID => Ok (Self :: HOME_POSITION (HOME_POSITION_DATA :: default ())) , MANUAL_CONTROL_DATA :: ID => Ok (Self :: MANUAL_CONTROL (MANUAL_CONTROL_DATA :: default ())) , SET_POSITION_TARGET_GLOBAL_INT_DATA :: ID => Ok (Self :: SET_POSITION_TARGET_GLOBAL_INT (SET_POSITION_TARGET_GLOBAL_INT_DATA :: default ())) , GLOBAL_VISION_POSITION_ESTIMATE_DATA :: ID => Ok (Self :: GLOBAL_VISION_POSITION_ESTIMATE (GLOBAL_VISION_POSITION_ESTIMATE_DATA :: default ())) , PING_DATA :: ID => Ok (Self :: PING (PING_DATA :: default ())) , WHEEL_DISTANCE_DATA :: ID => Ok (Self :: WHEEL_DISTANCE (WHEEL_DISTANCE_DATA :: default ())) , GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: ID => Ok (Self :: GIMBAL_MANAGER_SET_MANUAL_CONTROL (GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: default ())) , RESPONSE_EVENT_ERROR_DATA :: ID => Ok (Self :: RESPONSE_EVENT_ERROR (RESPONSE_EVENT_ERROR_DATA :: default ())) , TERRAIN_CHECK_DATA :: ID => Ok (Self :: TERRAIN_CHECK (TERRAIN_CHECK_DATA :: default ())) , OPEN_DRONE_ID_AUTHENTICATION_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_AUTHENTICATION (OPEN_DRONE_ID_AUTHENTICATION_DATA :: default ())) , OPEN_DRONE_ID_ARM_STATUS_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_ARM_STATUS (OPEN_DRONE_ID_ARM_STATUS_DATA :: default ())) , OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_SYSTEM_UPDATE (OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: default ())) , OPEN_DRONE_ID_SELF_ID_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_SELF_ID (OPEN_DRONE_ID_SELF_ID_DATA :: default ())) , BUTTON_CHANGE_DATA :: ID => Ok (Self :: BUTTON_CHANGE (BUTTON_CHANGE_DATA :: default ())) , CAMERA_SETTINGS_DATA :: ID => Ok (Self :: CAMERA_SETTINGS (CAMERA_SETTINGS_DATA :: default ())) , ESC_INFO_DATA :: ID => Ok (Self :: ESC_INFO (ESC_INFO_DATA :: default ())) , SERIAL_CONTROL_DATA :: ID => Ok (Self :: SERIAL_CONTROL (SERIAL_CONTROL_DATA :: default ())) , CHANGE_OPERATOR_CONTROL_ACK_DATA :: ID => Ok (Self :: CHANGE_OPERATOR_CONTROL_ACK (CHANGE_OPERATOR_CONTROL_ACK_DATA :: default ())) , ESTIMATOR_STATUS_DATA :: ID => Ok (Self :: ESTIMATOR_STATUS (ESTIMATOR_STATUS_DATA :: default ())) , MISSION_ITEM_REACHED_DATA :: ID => Ok (Self :: MISSION_ITEM_REACHED (MISSION_ITEM_REACHED_DATA :: default ())) , SCALED_IMU2_DATA :: ID => Ok (Self :: SCALED_IMU2 (SCALED_IMU2_DATA :: default ())) , OPTICAL_FLOW_RAD_DATA :: ID => Ok (Self :: OPTICAL_FLOW_RAD (OPTICAL_FLOW_RAD_DATA :: default ())) , LOG_REQUEST_DATA_DATA :: ID => Ok (Self :: LOG_REQUEST_DATA (LOG_REQUEST_DATA_DATA :: default ())) , FOLLOW_TARGET_DATA :: ID => Ok (Self :: FOLLOW_TARGET (FOLLOW_TARGET_DATA :: default ())) , GIMBAL_MANAGER_SET_PITCHYAW_DATA :: ID => Ok (Self :: GIMBAL_MANAGER_SET_PITCHYAW (GIMBAL_MANAGER_SET_PITCHYAW_DATA :: default ())) , HIGH_LATENCY_DATA :: ID => Ok (Self :: HIGH_LATENCY (HIGH_LATENCY_DATA :: default ())) , PARAM_MAP_RC_DATA :: ID => Ok (Self :: PARAM_MAP_RC (PARAM_MAP_RC_DATA :: default ())) , MISSION_COUNT_DATA :: ID => Ok (Self :: MISSION_COUNT (MISSION_COUNT_DATA :: default ())) , PARAM_VALUE_DATA :: ID => Ok (Self :: PARAM_VALUE (PARAM_VALUE_DATA :: default ())) , LOGGING_ACK_DATA :: ID => Ok (Self :: LOGGING_ACK (LOGGING_ACK_DATA :: default ())) , HIL_OPTICAL_FLOW_DATA :: ID => Ok (Self :: HIL_OPTICAL_FLOW (HIL_OPTICAL_FLOW_DATA :: default ())) , HIGH_LATENCY2_DATA :: ID => Ok (Self :: HIGH_LATENCY2 (HIGH_LATENCY2_DATA :: default ())) , CURRENT_EVENT_SEQUENCE_DATA :: ID => Ok (Self :: CURRENT_EVENT_SEQUENCE (CURRENT_EVENT_SEQUENCE_DATA :: default ())) , CAMERA_TRACKING_GEO_STATUS_DATA :: ID => Ok (Self :: CAMERA_TRACKING_GEO_STATUS (CAMERA_TRACKING_GEO_STATUS_DATA :: default ())) , RC_CHANNELS_SCALED_DATA :: ID => Ok (Self :: RC_CHANNELS_SCALED (RC_CHANNELS_SCALED_DATA :: default ())) , GPS2_RTK_DATA :: ID => Ok (Self :: GPS2_RTK (GPS2_RTK_DATA :: default ())) , RC_CHANNELS_DATA :: ID => Ok (Self :: RC_CHANNELS (RC_CHANNELS_DATA :: default ())) , MISSION_WRITE_PARTIAL_LIST_DATA :: ID => Ok (Self :: MISSION_WRITE_PARTIAL_LIST (MISSION_WRITE_PARTIAL_LIST_DATA :: default ())) , CAMERA_CAPTURE_STATUS_DATA :: ID => Ok (Self :: CAMERA_CAPTURE_STATUS (CAMERA_CAPTURE_STATUS_DATA :: default ())) , RC_CHANNELS_OVERRIDE_DATA :: ID => Ok (Self :: RC_CHANNELS_OVERRIDE (RC_CHANNELS_OVERRIDE_DATA :: default ())) , CAMERA_IMAGE_CAPTURED_DATA :: ID => Ok (Self :: CAMERA_IMAGE_CAPTURED (CAMERA_IMAGE_CAPTURED_DATA :: default ())) , MISSION_ITEM_DATA :: ID => Ok (Self :: MISSION_ITEM (MISSION_ITEM_DATA :: default ())) , MAG_CAL_REPORT_DATA :: ID => Ok (Self :: MAG_CAL_REPORT (MAG_CAL_REPORT_DATA :: default ())) , COMMAND_INT_DATA :: ID => Ok (Self :: COMMAND_INT (COMMAND_INT_DATA :: default ())) , CANFD_FRAME_DATA :: ID => Ok (Self :: CANFD_FRAME (CANFD_FRAME_DATA :: default ())) , SET_GPS_GLOBAL_ORIGIN_DATA :: ID => Ok (Self :: SET_GPS_GLOBAL_ORIGIN (SET_GPS_GLOBAL_ORIGIN_DATA :: default ())) , HIL_GPS_DATA :: ID => Ok (Self :: HIL_GPS (HIL_GPS_DATA :: default ())) , WINCH_STATUS_DATA :: ID => Ok (Self :: WINCH_STATUS (WINCH_STATUS_DATA :: default ())) , DEBUG_VECT_DATA :: ID => Ok (Self :: DEBUG_VECT (DEBUG_VECT_DATA :: default ())) , LOGGING_DATA_DATA :: ID => Ok (Self :: LOGGING_DATA (LOGGING_DATA_DATA :: default ())) , NAV_CONTROLLER_OUTPUT_DATA :: ID => Ok (Self :: NAV_CONTROLLER_OUTPUT (NAV_CONTROLLER_OUTPUT_DATA :: default ())) , MISSION_ITEM_INT_DATA :: ID => Ok (Self :: MISSION_ITEM_INT (MISSION_ITEM_INT_DATA :: default ())) , ACTUATOR_OUTPUT_STATUS_DATA :: ID => Ok (Self :: ACTUATOR_OUTPUT_STATUS (ACTUATOR_OUTPUT_STATUS_DATA :: default ())) , LOG_ERASE_DATA :: ID => Ok (Self :: LOG_ERASE (LOG_ERASE_DATA :: default ())) , COMMAND_LONG_DATA :: ID => Ok (Self :: COMMAND_LONG (COMMAND_LONG_DATA :: default ())) , CAMERA_INFORMATION_DATA :: ID => Ok (Self :: CAMERA_INFORMATION (CAMERA_INFORMATION_DATA :: default ())) , DISTANCE_SENSOR_DATA :: ID => Ok (Self :: DISTANCE_SENSOR (DISTANCE_SENSOR_DATA :: default ())) , UTM_GLOBAL_POSITION_DATA :: ID => Ok (Self :: UTM_GLOBAL_POSITION (UTM_GLOBAL_POSITION_DATA :: default ())) , ATTITUDE_DATA :: ID => Ok (Self :: ATTITUDE (ATTITUDE_DATA :: default ())) , WIND_COV_DATA :: ID => Ok (Self :: WIND_COV (WIND_COV_DATA :: default ())) , MEMORY_VECT_DATA :: ID => Ok (Self :: MEMORY_VECT (MEMORY_VECT_DATA :: default ())) , GIMBAL_MANAGER_SET_ATTITUDE_DATA :: ID => Ok (Self :: GIMBAL_MANAGER_SET_ATTITUDE (GIMBAL_MANAGER_SET_ATTITUDE_DATA :: default ())) , MISSION_CLEAR_ALL_DATA :: ID => Ok (Self :: MISSION_CLEAR_ALL (MISSION_CLEAR_ALL_DATA :: default ())) , DATA_TRANSMISSION_HANDSHAKE_DATA :: ID => Ok (Self :: DATA_TRANSMISSION_HANDSHAKE (DATA_TRANSMISSION_HANDSHAKE_DATA :: default ())) , CAN_FILTER_MODIFY_DATA :: ID => Ok (Self :: CAN_FILTER_MODIFY (CAN_FILTER_MODIFY_DATA :: default ())) , LOCAL_POSITION_NED_DATA :: ID => Ok (Self :: LOCAL_POSITION_NED (LOCAL_POSITION_NED_DATA :: default ())) , GPS_INJECT_DATA_DATA :: ID => Ok (Self :: GPS_INJECT_DATA (GPS_INJECT_DATA_DATA :: default ())) , HIL_STATE_QUATERNION_DATA :: ID => Ok (Self :: HIL_STATE_QUATERNION (HIL_STATE_QUATERNION_DATA :: default ())) , SAFETY_SET_ALLOWED_AREA_DATA :: ID => Ok (Self :: SAFETY_SET_ALLOWED_AREA (SAFETY_SET_ALLOWED_AREA_DATA :: default ())) , FENCE_STATUS_DATA :: ID => Ok (Self :: FENCE_STATUS (FENCE_STATUS_DATA :: default ())) , OPTICAL_FLOW_DATA :: ID => Ok (Self :: OPTICAL_FLOW (OPTICAL_FLOW_DATA :: default ())) , RADIO_STATUS_DATA :: ID => Ok (Self :: RADIO_STATUS (RADIO_STATUS_DATA :: default ())) , SET_POSITION_TARGET_LOCAL_NED_DATA :: ID => Ok (Self :: SET_POSITION_TARGET_LOCAL_NED (SET_POSITION_TARGET_LOCAL_NED_DATA :: default ())) , RESOURCE_REQUEST_DATA :: ID => Ok (Self :: RESOURCE_REQUEST (RESOURCE_REQUEST_DATA :: default ())) , UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: ID => Ok (Self :: UAVIONIX_ADSB_OUT_DYNAMIC (UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: default ())) , TRAJECTORY_REPRESENTATION_BEZIER_DATA :: ID => Ok (Self :: TRAJECTORY_REPRESENTATION_BEZIER (TRAJECTORY_REPRESENTATION_BEZIER_DATA :: default ())) , GPS_STATUS_DATA :: ID => Ok (Self :: GPS_STATUS (GPS_STATUS_DATA :: default ())) , MISSION_REQUEST_PARTIAL_LIST_DATA :: ID => Ok (Self :: MISSION_REQUEST_PARTIAL_LIST (MISSION_REQUEST_PARTIAL_LIST_DATA :: default ())) , AUTOPILOT_VERSION_DATA :: ID => Ok (Self :: AUTOPILOT_VERSION (AUTOPILOT_VERSION_DATA :: default ())) , TUNNEL_DATA :: ID => Ok (Self :: TUNNEL (TUNNEL_DATA :: default ())) , TERRAIN_DATA_DATA :: ID => Ok (Self :: TERRAIN_DATA (TERRAIN_DATA_DATA :: default ())) , UAVCAN_NODE_STATUS_DATA :: ID => Ok (Self :: UAVCAN_NODE_STATUS (UAVCAN_NODE_STATUS_DATA :: default ())) , HEARTBEAT_DATA :: ID => Ok (Self :: HEARTBEAT (HEARTBEAT_DATA :: default ())) , REQUEST_EVENT_DATA :: ID => Ok (Self :: REQUEST_EVENT (REQUEST_EVENT_DATA :: default ())) , PARAM_EXT_SET_DATA :: ID => Ok (Self :: PARAM_EXT_SET (PARAM_EXT_SET_DATA :: default ())) , VISION_POSITION_ESTIMATE_DATA :: ID => Ok (Self :: VISION_POSITION_ESTIMATE (VISION_POSITION_ESTIMATE_DATA :: default ())) , SUPPORTED_TUNES_DATA :: ID => Ok (Self :: SUPPORTED_TUNES (SUPPORTED_TUNES_DATA :: default ())) , PARAM_EXT_REQUEST_LIST_DATA :: ID => Ok (Self :: PARAM_EXT_REQUEST_LIST (PARAM_EXT_REQUEST_LIST_DATA :: default ())) , ISBD_LINK_STATUS_DATA :: ID => Ok (Self :: ISBD_LINK_STATUS (ISBD_LINK_STATUS_DATA :: default ())) , PLAY_TUNE_V2_DATA :: ID => Ok (Self :: PLAY_TUNE_V2 (PLAY_TUNE_V2_DATA :: default ())) , VIDEO_STREAM_STATUS_DATA :: ID => Ok (Self :: VIDEO_STREAM_STATUS (VIDEO_STREAM_STATUS_DATA :: default ())) , RAW_IMU_DATA :: ID => Ok (Self :: RAW_IMU (RAW_IMU_DATA :: default ())) , OPEN_DRONE_ID_LOCATION_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_LOCATION (OPEN_DRONE_ID_LOCATION_DATA :: default ())) , AIS_VESSEL_DATA :: ID => Ok (Self :: AIS_VESSEL (AIS_VESSEL_DATA :: default ())) , RAW_RPM_DATA :: ID => Ok (Self :: RAW_RPM (RAW_RPM_DATA :: default ())) , MISSION_REQUEST_DATA :: ID => Ok (Self :: MISSION_REQUEST (MISSION_REQUEST_DATA :: default ())) , FLIGHT_INFORMATION_DATA :: ID => Ok (Self :: FLIGHT_INFORMATION (FLIGHT_INFORMATION_DATA :: default ())) , VICON_POSITION_ESTIMATE_DATA :: ID => Ok (Self :: VICON_POSITION_ESTIMATE (VICON_POSITION_ESTIMATE_DATA :: default ())) , HIL_SENSOR_DATA :: ID => Ok (Self :: HIL_SENSOR (HIL_SENSOR_DATA :: default ())) , TIMESYNC_DATA :: ID => Ok (Self :: TIMESYNC (TIMESYNC_DATA :: default ())) , OPEN_DRONE_ID_OPERATOR_ID_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_OPERATOR_ID (OPEN_DRONE_ID_OPERATOR_ID_DATA :: default ())) , COMPONENT_METADATA_DATA :: ID => Ok (Self :: COMPONENT_METADATA (COMPONENT_METADATA_DATA :: default ())) , SAFETY_ALLOWED_AREA_DATA :: ID => Ok (Self :: SAFETY_ALLOWED_AREA (SAFETY_ALLOWED_AREA_DATA :: default ())) , MANUAL_SETPOINT_DATA :: ID => Ok (Self :: MANUAL_SETPOINT (MANUAL_SETPOINT_DATA :: default ())) , CAMERA_TRACKING_IMAGE_STATUS_DATA :: ID => Ok (Self :: CAMERA_TRACKING_IMAGE_STATUS (CAMERA_TRACKING_IMAGE_STATUS_DATA :: default ())) , GLOBAL_POSITION_INT_DATA :: ID => Ok (Self :: GLOBAL_POSITION_INT (GLOBAL_POSITION_INT_DATA :: default ())) , EXTENDED_SYS_STATE_DATA :: ID => Ok (Self :: EXTENDED_SYS_STATE (EXTENDED_SYS_STATE_DATA :: default ())) , OPEN_DRONE_ID_BASIC_ID_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_BASIC_ID (OPEN_DRONE_ID_BASIC_ID_DATA :: default ())) , SYS_STATUS_DATA :: ID => Ok (Self :: SYS_STATUS (SYS_STATUS_DATA :: default ())) , UAVCAN_NODE_INFO_DATA :: ID => Ok (Self :: UAVCAN_NODE_INFO (UAVCAN_NODE_INFO_DATA :: default ())) , VIBRATION_DATA :: ID => Ok (Self :: VIBRATION (VIBRATION_DATA :: default ())) , PARAM_REQUEST_READ_DATA :: ID => Ok (Self :: PARAM_REQUEST_READ (PARAM_REQUEST_READ_DATA :: default ())) , POSITION_TARGET_GLOBAL_INT_DATA :: ID => Ok (Self :: POSITION_TARGET_GLOBAL_INT (POSITION_TARGET_GLOBAL_INT_DATA :: default ())) , SET_ACTUATOR_CONTROL_TARGET_DATA :: ID => Ok (Self :: SET_ACTUATOR_CONTROL_TARGET (SET_ACTUATOR_CONTROL_TARGET_DATA :: default ())) , SET_MODE_DATA :: ID => Ok (Self :: SET_MODE (SET_MODE_DATA :: default ())) , TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: ID => Ok (Self :: TRAJECTORY_REPRESENTATION_WAYPOINTS (TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: default ())) , COMPONENT_INFORMATION_DATA :: ID => Ok (Self :: COMPONENT_INFORMATION (COMPONENT_INFORMATION_DATA :: default ())) , PROTOCOL_VERSION_DATA :: ID => Ok (Self :: PROTOCOL_VERSION (PROTOCOL_VERSION_DATA :: default ())) , MESSAGE_INTERVAL_DATA :: ID => Ok (Self :: MESSAGE_INTERVAL (MESSAGE_INTERVAL_DATA :: default ())) , OPEN_DRONE_ID_SYSTEM_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_SYSTEM (OPEN_DRONE_ID_SYSTEM_DATA :: default ())) , ORBIT_EXECUTION_STATUS_DATA :: ID => Ok (Self :: ORBIT_EXECUTION_STATUS (ORBIT_EXECUTION_STATUS_DATA :: default ())) , SETUP_SIGNING_DATA :: ID => Ok (Self :: SETUP_SIGNING (SETUP_SIGNING_DATA :: default ())) , OBSTACLE_DISTANCE_DATA :: ID => Ok (Self :: OBSTACLE_DISTANCE (OBSTACLE_DISTANCE_DATA :: default ())) , CAMERA_FOV_STATUS_DATA :: ID => Ok (Self :: CAMERA_FOV_STATUS (CAMERA_FOV_STATUS_DATA :: default ())) , ATTITUDE_QUATERNION_DATA :: ID => Ok (Self :: ATTITUDE_QUATERNION (ATTITUDE_QUATERNION_DATA :: default ())) , GENERATOR_STATUS_DATA :: ID => Ok (Self :: GENERATOR_STATUS (GENERATOR_STATUS_DATA :: default ())) , POSITION_TARGET_LOCAL_NED_DATA :: ID => Ok (Self :: POSITION_TARGET_LOCAL_NED (POSITION_TARGET_LOCAL_NED_DATA :: default ())) , HYGROMETER_SENSOR_DATA :: ID => Ok (Self :: HYGROMETER_SENSOR (HYGROMETER_SENSOR_DATA :: default ())) , TIME_ESTIMATE_TO_TARGET_DATA :: ID => Ok (Self :: TIME_ESTIMATE_TO_TARGET (TIME_ESTIMATE_TO_TARGET_DATA :: default ())) , MISSION_CURRENT_DATA :: ID => Ok (Self :: MISSION_CURRENT (MISSION_CURRENT_DATA :: default ())) , SYSTEM_TIME_DATA :: ID => Ok (Self :: SYSTEM_TIME (SYSTEM_TIME_DATA :: default ())) , HIGHRES_IMU_DATA :: ID => Ok (Self :: HIGHRES_IMU (HIGHRES_IMU_DATA :: default ())) , REQUEST_DATA_STREAM_DATA :: ID => Ok (Self :: REQUEST_DATA_STREAM (REQUEST_DATA_STREAM_DATA :: default ())) , GPS_RTK_DATA :: ID => Ok (Self :: GPS_RTK (GPS_RTK_DATA :: default ())) , EFI_STATUS_DATA :: ID => Ok (Self :: EFI_STATUS (EFI_STATUS_DATA :: default ())) , MISSION_REQUEST_LIST_DATA :: ID => Ok (Self :: MISSION_REQUEST_LIST (MISSION_REQUEST_LIST_DATA :: default ())) , SMART_BATTERY_INFO_DATA :: ID => Ok (Self :: SMART_BATTERY_INFO (SMART_BATTERY_INFO_DATA :: default ())) , CELLULAR_CONFIG_DATA :: ID => Ok (Self :: CELLULAR_CONFIG (CELLULAR_CONFIG_DATA :: default ())) , CHANGE_OPERATOR_CONTROL_DATA :: ID => Ok (Self :: CHANGE_OPERATOR_CONTROL (CHANGE_OPERATOR_CONTROL_DATA :: default ())) , UAVIONIX_ADSB_OUT_CFG_DATA :: ID => Ok (Self :: UAVIONIX_ADSB_OUT_CFG (UAVIONIX_ADSB_OUT_CFG_DATA :: default ())) , UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: ID => Ok (Self :: UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT (UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: default ())) , PARAM_EXT_REQUEST_READ_DATA :: ID => Ok (Self :: PARAM_EXT_REQUEST_READ (PARAM_EXT_REQUEST_READ_DATA :: default ())) , LANDING_TARGET_DATA :: ID => Ok (Self :: LANDING_TARGET (LANDING_TARGET_DATA :: default ())) , EVENT_DATA :: ID => Ok (Self :: EVENT (EVENT_DATA :: default ())) , VFR_HUD_DATA :: ID => Ok (Self :: VFR_HUD (VFR_HUD_DATA :: default ())) , HIL_RC_INPUTS_RAW_DATA :: ID => Ok (Self :: HIL_RC_INPUTS_RAW (HIL_RC_INPUTS_RAW_DATA :: default ())) , SCALED_PRESSURE3_DATA :: ID => Ok (Self :: SCALED_PRESSURE3 (SCALED_PRESSURE3_DATA :: default ())) , COMMAND_CANCEL_DATA :: ID => Ok (Self :: COMMAND_CANCEL (COMMAND_CANCEL_DATA :: default ())) , GIMBAL_MANAGER_STATUS_DATA :: ID => Ok (Self :: GIMBAL_MANAGER_STATUS (GIMBAL_MANAGER_STATUS_DATA :: default ())) , ATT_POS_MOCAP_DATA :: ID => Ok (Self :: ATT_POS_MOCAP (ATT_POS_MOCAP_DATA :: default ())) , HIL_CONTROLS_DATA :: ID => Ok (Self :: HIL_CONTROLS (HIL_CONTROLS_DATA :: default ())) , ATTITUDE_TARGET_DATA :: ID => Ok (Self :: ATTITUDE_TARGET (ATTITUDE_TARGET_DATA :: default ())) , PARAM_EXT_ACK_DATA :: ID => Ok (Self :: PARAM_EXT_ACK (PARAM_EXT_ACK_DATA :: default ())) , ACTUATOR_CONTROL_TARGET_DATA :: ID => Ok (Self :: ACTUATOR_CONTROL_TARGET (ACTUATOR_CONTROL_TARGET_DATA :: default ())) , GPS_GLOBAL_ORIGIN_DATA :: ID => Ok (Self :: GPS_GLOBAL_ORIGIN (GPS_GLOBAL_ORIGIN_DATA :: default ())) , SCALED_PRESSURE_DATA :: ID => Ok (Self :: SCALED_PRESSURE (SCALED_PRESSURE_DATA :: default ())) , POWER_STATUS_DATA :: ID => Ok (Self :: POWER_STATUS (POWER_STATUS_DATA :: default ())) , TERRAIN_REQUEST_DATA :: ID => Ok (Self :: TERRAIN_REQUEST (TERRAIN_REQUEST_DATA :: default ())) , OPEN_DRONE_ID_MESSAGE_PACK_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_MESSAGE_PACK (OPEN_DRONE_ID_MESSAGE_PACK_DATA :: default ())) , LOG_DATA_DATA :: ID => Ok (Self :: LOG_DATA (LOG_DATA_DATA :: default ())) , GLOBAL_POSITION_INT_COV_DATA :: ID => Ok (Self :: GLOBAL_POSITION_INT_COV (GLOBAL_POSITION_INT_COV_DATA :: default ())) , V2_EXTENSION_DATA :: ID => Ok (Self :: V2_EXTENSION (V2_EXTENSION_DATA :: default ())) , LOG_REQUEST_END_DATA :: ID => Ok (Self :: LOG_REQUEST_END (LOG_REQUEST_END_DATA :: default ())) , CAN_FRAME_DATA :: ID => Ok (Self :: CAN_FRAME (CAN_FRAME_DATA :: default ())) , ODOMETRY_DATA :: ID => Ok (Self :: ODOMETRY (ODOMETRY_DATA :: default ())) , TERRAIN_REPORT_DATA :: ID => Ok (Self :: TERRAIN_REPORT (TERRAIN_REPORT_DATA :: default ())) , GIMBAL_DEVICE_SET_ATTITUDE_DATA :: ID => Ok (Self :: GIMBAL_DEVICE_SET_ATTITUDE (GIMBAL_DEVICE_SET_ATTITUDE_DATA :: default ())) , MISSION_SET_CURRENT_DATA :: ID => Ok (Self :: MISSION_SET_CURRENT (MISSION_SET_CURRENT_DATA :: default ())) , DEBUG_FLOAT_ARRAY_DATA :: ID => Ok (Self :: DEBUG_FLOAT_ARRAY (DEBUG_FLOAT_ARRAY_DATA :: default ())) , AUTH_KEY_DATA :: ID => Ok (Self :: AUTH_KEY (AUTH_KEY_DATA :: default ())) , GIMBAL_MANAGER_INFORMATION_DATA :: ID => Ok (Self :: GIMBAL_MANAGER_INFORMATION (GIMBAL_MANAGER_INFORMATION_DATA :: default ())) , RAW_PRESSURE_DATA :: ID => Ok (Self :: RAW_PRESSURE (RAW_PRESSURE_DATA :: default ())) , MISSION_ACK_DATA :: ID => Ok (Self :: MISSION_ACK (MISSION_ACK_DATA :: default ())) , PARAM_REQUEST_LIST_DATA :: ID => Ok (Self :: PARAM_REQUEST_LIST (PARAM_REQUEST_LIST_DATA :: default ())) , SCALED_IMU_DATA :: ID => Ok (Self :: SCALED_IMU (SCALED_IMU_DATA :: default ())) , LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: ID => Ok (Self :: LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET (LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: default ())) , DEBUG_DATA :: ID => Ok (Self :: DEBUG (DEBUG_DATA :: default ())) , NAMED_VALUE_INT_DATA :: ID => Ok (Self :: NAMED_VALUE_INT (NAMED_VALUE_INT_DATA :: default ())) , CONTROL_SYSTEM_STATE_DATA :: ID => Ok (Self :: CONTROL_SYSTEM_STATE (CONTROL_SYSTEM_STATE_DATA :: default ())) , GPS_RAW_INT_DATA :: ID => Ok (Self :: GPS_RAW_INT (GPS_RAW_INT_DATA :: default ())) , COMMAND_ACK_DATA :: ID => Ok (Self :: COMMAND_ACK (COMMAND_ACK_DATA :: default ())) , VIDEO_STREAM_INFORMATION_DATA :: ID => Ok (Self :: VIDEO_STREAM_INFORMATION (VIDEO_STREAM_INFORMATION_DATA :: default ())) , PARAM_SET_DATA :: ID => Ok (Self :: PARAM_SET (PARAM_SET_DATA :: default ())) , LOGGING_DATA_ACKED_DATA :: ID => Ok (Self :: LOGGING_DATA_ACKED (LOGGING_DATA_ACKED_DATA :: default ())) , NAMED_VALUE_FLOAT_DATA :: ID => Ok (Self :: NAMED_VALUE_FLOAT (NAMED_VALUE_FLOAT_DATA :: default ())) , ADSB_VEHICLE_DATA :: ID => Ok (Self :: ADSB_VEHICLE (ADSB_VEHICLE_DATA :: default ())) , COLLISION_DATA :: ID => Ok (Self :: COLLISION (COLLISION_DATA :: default ())) , HIL_ACTUATOR_CONTROLS_DATA :: ID => Ok (Self :: HIL_ACTUATOR_CONTROLS (HIL_ACTUATOR_CONTROLS_DATA :: default ())) , LOG_REQUEST_LIST_DATA :: ID => Ok (Self :: LOG_REQUEST_LIST (LOG_REQUEST_LIST_DATA :: default ())) , LINK_NODE_STATUS_DATA :: ID => Ok (Self :: LINK_NODE_STATUS (LINK_NODE_STATUS_DATA :: default ())) , BATTERY_STATUS_DATA :: ID => Ok (Self :: BATTERY_STATUS (BATTERY_STATUS_DATA :: default ())) , VISION_SPEED_ESTIMATE_DATA :: ID => Ok (Self :: VISION_SPEED_ESTIMATE (VISION_SPEED_ESTIMATE_DATA :: default ())) , RC_CHANNELS_RAW_DATA :: ID => Ok (Self :: RC_CHANNELS_RAW (RC_CHANNELS_RAW_DATA :: default ())) , SCALED_IMU3_DATA :: ID => Ok (Self :: SCALED_IMU3 (SCALED_IMU3_DATA :: default ())) , GIMBAL_DEVICE_INFORMATION_DATA :: ID => Ok (Self :: GIMBAL_DEVICE_INFORMATION (GIMBAL_DEVICE_INFORMATION_DATA :: default ())) , ENCAPSULATED_DATA_DATA :: ID => Ok (Self :: ENCAPSULATED_DATA (ENCAPSULATED_DATA_DATA :: default ())) , SET_ATTITUDE_TARGET_DATA :: ID => Ok (Self :: SET_ATTITUDE_TARGET (SET_ATTITUDE_TARGET_DATA :: default ())) , CELLULAR_STATUS_DATA :: ID => Ok (Self :: CELLULAR_STATUS (CELLULAR_STATUS_DATA :: default ())) , STATUSTEXT_DATA :: ID => Ok (Self :: STATUSTEXT (STATUSTEXT_DATA :: default ())) , GPS_INPUT_DATA :: ID => Ok (Self :: GPS_INPUT (GPS_INPUT_DATA :: default ())) , _ => { Err ("Invalid message id.") } } } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { match self { Self :: STORAGE_INFORMATION (body) => body . ser (version , bytes) , Self :: MOUNT_ORIENTATION (body) => body . ser (version , bytes) , Self :: SCALED_PRESSURE2 (body) => body . ser (version , bytes) , Self :: HIL_STATE (body) => body . ser (version , bytes) , Self :: GPS_RTCM_DATA (body) => body . ser (version , bytes) , Self :: PARAM_EXT_VALUE (body) => body . ser (version , bytes) , Self :: MISSION_REQUEST_INT (body) => body . ser (version , bytes) , Self :: ALTITUDE (body) => body . ser (version , bytes) , Self :: CAMERA_TRIGGER (body) => body . ser (version , bytes) , Self :: LOCAL_POSITION_NED_COV (body) => body . ser (version , bytes) , Self :: LOG_ENTRY (body) => body . ser (version , bytes) , Self :: AUTOPILOT_STATE_FOR_GIMBAL_DEVICE (body) => body . ser (version , bytes) , Self :: WIFI_CONFIG_AP (body) => body . ser (version , bytes) , Self :: ONBOARD_COMPUTER_STATUS (body) => body . ser (version , bytes) , Self :: DATA_STREAM (body) => body . ser (version , bytes) , Self :: SERVO_OUTPUT_RAW (body) => body . ser (version , bytes) , Self :: GIMBAL_DEVICE_ATTITUDE_STATUS (body) => body . ser (version , bytes) , Self :: ESC_STATUS (body) => body . ser (version , bytes) , Self :: PLAY_TUNE (body) => body . ser (version , bytes) , Self :: FILE_TRANSFER_PROTOCOL (body) => body . ser (version , bytes) , Self :: SET_HOME_POSITION (body) => body . ser (version , bytes) , Self :: ATTITUDE_QUATERNION_COV (body) => body . ser (version , bytes) , Self :: GPS2_RAW (body) => body . ser (version , bytes) , Self :: SIM_STATE (body) => body . ser (version , bytes) , Self :: HOME_POSITION (body) => body . ser (version , bytes) , Self :: MANUAL_CONTROL (body) => body . ser (version , bytes) , Self :: SET_POSITION_TARGET_GLOBAL_INT (body) => body . ser (version , bytes) , Self :: GLOBAL_VISION_POSITION_ESTIMATE (body) => body . ser (version , bytes) , Self :: PING (body) => body . ser (version , bytes) , Self :: WHEEL_DISTANCE (body) => body . ser (version , bytes) , Self :: GIMBAL_MANAGER_SET_MANUAL_CONTROL (body) => body . ser (version , bytes) , Self :: RESPONSE_EVENT_ERROR (body) => body . ser (version , bytes) , Self :: TERRAIN_CHECK (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_AUTHENTICATION (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_ARM_STATUS (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_SYSTEM_UPDATE (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_SELF_ID (body) => body . ser (version , bytes) , Self :: BUTTON_CHANGE (body) => body . ser (version , bytes) , Self :: CAMERA_SETTINGS (body) => body . ser (version , bytes) , Self :: ESC_INFO (body) => body . ser (version , bytes) , Self :: SERIAL_CONTROL (body) => body . ser (version , bytes) , Self :: CHANGE_OPERATOR_CONTROL_ACK (body) => body . ser (version , bytes) , Self :: ESTIMATOR_STATUS (body) => body . ser (version , bytes) , Self :: MISSION_ITEM_REACHED (body) => body . ser (version , bytes) , Self :: SCALED_IMU2 (body) => body . ser (version , bytes) , Self :: OPTICAL_FLOW_RAD (body) => body . ser (version , bytes) , Self :: LOG_REQUEST_DATA (body) => body . ser (version , bytes) , Self :: FOLLOW_TARGET (body) => body . ser (version , bytes) , Self :: GIMBAL_MANAGER_SET_PITCHYAW (body) => body . ser (version , bytes) , Self :: HIGH_LATENCY (body) => body . ser (version , bytes) , Self :: PARAM_MAP_RC (body) => body . ser (version , bytes) , Self :: MISSION_COUNT (body) => body . ser (version , bytes) , Self :: PARAM_VALUE (body) => body . ser (version , bytes) , Self :: LOGGING_ACK (body) => body . ser (version , bytes) , Self :: HIL_OPTICAL_FLOW (body) => body . ser (version , bytes) , Self :: HIGH_LATENCY2 (body) => body . ser (version , bytes) , Self :: CURRENT_EVENT_SEQUENCE (body) => body . ser (version , bytes) , Self :: CAMERA_TRACKING_GEO_STATUS (body) => body . ser (version , bytes) , Self :: RC_CHANNELS_SCALED (body) => body . ser (version , bytes) , Self :: GPS2_RTK (body) => body . ser (version , bytes) , Self :: RC_CHANNELS (body) => body . ser (version , bytes) , Self :: MISSION_WRITE_PARTIAL_LIST (body) => body . ser (version , bytes) , Self :: CAMERA_CAPTURE_STATUS (body) => body . ser (version , bytes) , Self :: RC_CHANNELS_OVERRIDE (body) => body . ser (version , bytes) , Self :: CAMERA_IMAGE_CAPTURED (body) => body . ser (version , bytes) , Self :: MISSION_ITEM (body) => body . ser (version , bytes) , Self :: MAG_CAL_REPORT (body) => body . ser (version , bytes) , Self :: COMMAND_INT (body) => body . ser (version , bytes) , Self :: CANFD_FRAME (body) => body . ser (version , bytes) , Self :: SET_GPS_GLOBAL_ORIGIN (body) => body . ser (version , bytes) , Self :: HIL_GPS (body) => body . ser (version , bytes) , Self :: WINCH_STATUS (body) => body . ser (version , bytes) , Self :: DEBUG_VECT (body) => body . ser (version , bytes) , Self :: LOGGING_DATA (body) => body . ser (version , bytes) , Self :: NAV_CONTROLLER_OUTPUT (body) => body . ser (version , bytes) , Self :: MISSION_ITEM_INT (body) => body . ser (version , bytes) , Self :: ACTUATOR_OUTPUT_STATUS (body) => body . ser (version , bytes) , Self :: LOG_ERASE (body) => body . ser (version , bytes) , Self :: COMMAND_LONG (body) => body . ser (version , bytes) , Self :: CAMERA_INFORMATION (body) => body . ser (version , bytes) , Self :: DISTANCE_SENSOR (body) => body . ser (version , bytes) , Self :: UTM_GLOBAL_POSITION (body) => body . ser (version , bytes) , Self :: ATTITUDE (body) => body . ser (version , bytes) , Self :: WIND_COV (body) => body . ser (version , bytes) , Self :: MEMORY_VECT (body) => body . ser (version , bytes) , Self :: GIMBAL_MANAGER_SET_ATTITUDE (body) => body . ser (version , bytes) , Self :: MISSION_CLEAR_ALL (body) => body . ser (version , bytes) , Self :: DATA_TRANSMISSION_HANDSHAKE (body) => body . ser (version , bytes) , Self :: CAN_FILTER_MODIFY (body) => body . ser (version , bytes) , Self :: LOCAL_POSITION_NED (body) => body . ser (version , bytes) , Self :: GPS_INJECT_DATA (body) => body . ser (version , bytes) , Self :: HIL_STATE_QUATERNION (body) => body . ser (version , bytes) , Self :: SAFETY_SET_ALLOWED_AREA (body) => body . ser (version , bytes) , Self :: FENCE_STATUS (body) => body . ser (version , bytes) , Self :: OPTICAL_FLOW (body) => body . ser (version , bytes) , Self :: RADIO_STATUS (body) => body . ser (version , bytes) , Self :: SET_POSITION_TARGET_LOCAL_NED (body) => body . ser (version , bytes) , Self :: RESOURCE_REQUEST (body) => body . ser (version , bytes) , Self :: UAVIONIX_ADSB_OUT_DYNAMIC (body) => body . ser (version , bytes) , Self :: TRAJECTORY_REPRESENTATION_BEZIER (body) => body . ser (version , bytes) , Self :: GPS_STATUS (body) => body . ser (version , bytes) , Self :: MISSION_REQUEST_PARTIAL_LIST (body) => body . ser (version , bytes) , Self :: AUTOPILOT_VERSION (body) => body . ser (version , bytes) , Self :: TUNNEL (body) => body . ser (version , bytes) , Self :: TERRAIN_DATA (body) => body . ser (version , bytes) , Self :: UAVCAN_NODE_STATUS (body) => body . ser (version , bytes) , Self :: HEARTBEAT (body) => body . ser (version , bytes) , Self :: REQUEST_EVENT (body) => body . ser (version , bytes) , Self :: PARAM_EXT_SET (body) => body . ser (version , bytes) , Self :: VISION_POSITION_ESTIMATE (body) => body . ser (version , bytes) , Self :: SUPPORTED_TUNES (body) => body . ser (version , bytes) , Self :: PARAM_EXT_REQUEST_LIST (body) => body . ser (version , bytes) , Self :: ISBD_LINK_STATUS (body) => body . ser (version , bytes) , Self :: PLAY_TUNE_V2 (body) => body . ser (version , bytes) , Self :: VIDEO_STREAM_STATUS (body) => body . ser (version , bytes) , Self :: RAW_IMU (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_LOCATION (body) => body . ser (version , bytes) , Self :: AIS_VESSEL (body) => body . ser (version , bytes) , Self :: RAW_RPM (body) => body . ser (version , bytes) , Self :: MISSION_REQUEST (body) => body . ser (version , bytes) , Self :: FLIGHT_INFORMATION (body) => body . ser (version , bytes) , Self :: VICON_POSITION_ESTIMATE (body) => body . ser (version , bytes) , Self :: HIL_SENSOR (body) => body . ser (version , bytes) , Self :: TIMESYNC (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_OPERATOR_ID (body) => body . ser (version , bytes) , Self :: COMPONENT_METADATA (body) => body . ser (version , bytes) , Self :: SAFETY_ALLOWED_AREA (body) => body . ser (version , bytes) , Self :: MANUAL_SETPOINT (body) => body . ser (version , bytes) , Self :: CAMERA_TRACKING_IMAGE_STATUS (body) => body . ser (version , bytes) , Self :: GLOBAL_POSITION_INT (body) => body . ser (version , bytes) , Self :: EXTENDED_SYS_STATE (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_BASIC_ID (body) => body . ser (version , bytes) , Self :: SYS_STATUS (body) => body . ser (version , bytes) , Self :: UAVCAN_NODE_INFO (body) => body . ser (version , bytes) , Self :: VIBRATION (body) => body . ser (version , bytes) , Self :: PARAM_REQUEST_READ (body) => body . ser (version , bytes) , Self :: POSITION_TARGET_GLOBAL_INT (body) => body . ser (version , bytes) , Self :: SET_ACTUATOR_CONTROL_TARGET (body) => body . ser (version , bytes) , Self :: SET_MODE (body) => body . ser (version , bytes) , Self :: TRAJECTORY_REPRESENTATION_WAYPOINTS (body) => body . ser (version , bytes) , Self :: COMPONENT_INFORMATION (body) => body . ser (version , bytes) , Self :: PROTOCOL_VERSION (body) => body . ser (version , bytes) , Self :: MESSAGE_INTERVAL (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_SYSTEM (body) => body . ser (version , bytes) , Self :: ORBIT_EXECUTION_STATUS (body) => body . ser (version , bytes) , Self :: SETUP_SIGNING (body) => body . ser (version , bytes) , Self :: OBSTACLE_DISTANCE (body) => body . ser (version , bytes) , Self :: CAMERA_FOV_STATUS (body) => body . ser (version , bytes) , Self :: ATTITUDE_QUATERNION (body) => body . ser (version , bytes) , Self :: GENERATOR_STATUS (body) => body . ser (version , bytes) , Self :: POSITION_TARGET_LOCAL_NED (body) => body . ser (version , bytes) , Self :: HYGROMETER_SENSOR (body) => body . ser (version , bytes) , Self :: TIME_ESTIMATE_TO_TARGET (body) => body . ser (version , bytes) , Self :: MISSION_CURRENT (body) => body . ser (version , bytes) , Self :: SYSTEM_TIME (body) => body . ser (version , bytes) , Self :: HIGHRES_IMU (body) => body . ser (version , bytes) , Self :: REQUEST_DATA_STREAM (body) => body . ser (version , bytes) , Self :: GPS_RTK (body) => body . ser (version , bytes) , Self :: EFI_STATUS (body) => body . ser (version , bytes) , Self :: MISSION_REQUEST_LIST (body) => body . ser (version , bytes) , Self :: SMART_BATTERY_INFO (body) => body . ser (version , bytes) , Self :: CELLULAR_CONFIG (body) => body . ser (version , bytes) , Self :: CHANGE_OPERATOR_CONTROL (body) => body . ser (version , bytes) , Self :: UAVIONIX_ADSB_OUT_CFG (body) => body . ser (version , bytes) , Self :: UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT (body) => body . ser (version , bytes) , Self :: PARAM_EXT_REQUEST_READ (body) => body . ser (version , bytes) , Self :: LANDING_TARGET (body) => body . ser (version , bytes) , Self :: EVENT (body) => body . ser (version , bytes) , Self :: VFR_HUD (body) => body . ser (version , bytes) , Self :: HIL_RC_INPUTS_RAW (body) => body . ser (version , bytes) , Self :: SCALED_PRESSURE3 (body) => body . ser (version , bytes) , Self :: COMMAND_CANCEL (body) => body . ser (version , bytes) , Self :: GIMBAL_MANAGER_STATUS (body) => body . ser (version , bytes) , Self :: ATT_POS_MOCAP (body) => body . ser (version , bytes) , Self :: HIL_CONTROLS (body) => body . ser (version , bytes) , Self :: ATTITUDE_TARGET (body) => body . ser (version , bytes) , Self :: PARAM_EXT_ACK (body) => body . ser (version , bytes) , Self :: ACTUATOR_CONTROL_TARGET (body) => body . ser (version , bytes) , Self :: GPS_GLOBAL_ORIGIN (body) => body . ser (version , bytes) , Self :: SCALED_PRESSURE (body) => body . ser (version , bytes) , Self :: POWER_STATUS (body) => body . ser (version , bytes) , Self :: TERRAIN_REQUEST (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_MESSAGE_PACK (body) => body . ser (version , bytes) , Self :: LOG_DATA (body) => body . ser (version , bytes) , Self :: GLOBAL_POSITION_INT_COV (body) => body . ser (version , bytes) , Self :: V2_EXTENSION (body) => body . ser (version , bytes) , Self :: LOG_REQUEST_END (body) => body . ser (version , bytes) , Self :: CAN_FRAME (body) => body . ser (version , bytes) , Self :: ODOMETRY (body) => body . ser (version , bytes) , Self :: TERRAIN_REPORT (body) => body . ser (version , bytes) , Self :: GIMBAL_DEVICE_SET_ATTITUDE (body) => body . ser (version , bytes) , Self :: MISSION_SET_CURRENT (body) => body . ser (version , bytes) , Self :: DEBUG_FLOAT_ARRAY (body) => body . ser (version , bytes) , Self :: AUTH_KEY (body) => body . ser (version , bytes) , Self :: GIMBAL_MANAGER_INFORMATION (body) => body . ser (version , bytes) , Self :: RAW_PRESSURE (body) => body . ser (version , bytes) , Self :: MISSION_ACK (body) => body . ser (version , bytes) , Self :: PARAM_REQUEST_LIST (body) => body . ser (version , bytes) , Self :: SCALED_IMU (body) => body . ser (version , bytes) , Self :: LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET (body) => body . ser (version , bytes) , Self :: DEBUG (body) => body . ser (version , bytes) , Self :: NAMED_VALUE_INT (body) => body . ser (version , bytes) , Self :: CONTROL_SYSTEM_STATE (body) => body . ser (version , bytes) , Self :: GPS_RAW_INT (body) => body . ser (version , bytes) , Self :: COMMAND_ACK (body) => body . ser (version , bytes) , Self :: VIDEO_STREAM_INFORMATION (body) => body . ser (version , bytes) , Self :: PARAM_SET (body) => body . ser (version , bytes) , Self :: LOGGING_DATA_ACKED (body) => body . ser (version , bytes) , Self :: NAMED_VALUE_FLOAT (body) => body . ser (version , bytes) , Self :: ADSB_VEHICLE (body) => body . ser (version , bytes) , Self :: COLLISION (body) => body . ser (version , bytes) , Self :: HIL_ACTUATOR_CONTROLS (body) => body . ser (version , bytes) , Self :: LOG_REQUEST_LIST (body) => body . ser (version , bytes) , Self :: LINK_NODE_STATUS (body) => body . ser (version , bytes) , Self :: BATTERY_STATUS (body) => body . ser (version , bytes) , Self :: VISION_SPEED_ESTIMATE (body) => body . ser (version , bytes) , Self :: RC_CHANNELS_RAW (body) => body . ser (version , bytes) , Self :: SCALED_IMU3 (body) => body . ser (version , bytes) , Self :: GIMBAL_DEVICE_INFORMATION (body) => body . ser (version , bytes) , Self :: ENCAPSULATED_DATA (body) => body . ser (version , bytes) , Self :: SET_ATTITUDE_TARGET (body) => body . ser (version , bytes) , Self :: CELLULAR_STATUS (body) => body . ser (version , bytes) , Self :: STATUSTEXT (body) => body . ser (version , bytes) , Self :: GPS_INPUT (body) => body . ser (version , bytes) , } } fn extra_crc (id : u32) -> u8 { match id { STORAGE_INFORMATION_DATA :: ID => STORAGE_INFORMATION_DATA :: EXTRA_CRC , MOUNT_ORIENTATION_DATA :: ID => MOUNT_ORIENTATION_DATA :: EXTRA_CRC , SCALED_PRESSURE2_DATA :: ID => SCALED_PRESSURE2_DATA :: EXTRA_CRC , HIL_STATE_DATA :: ID => HIL_STATE_DATA :: EXTRA_CRC , GPS_RTCM_DATA_DATA :: ID => GPS_RTCM_DATA_DATA :: EXTRA_CRC , PARAM_EXT_VALUE_DATA :: ID => PARAM_EXT_VALUE_DATA :: EXTRA_CRC , MISSION_REQUEST_INT_DATA :: ID => MISSION_REQUEST_INT_DATA :: EXTRA_CRC , ALTITUDE_DATA :: ID => ALTITUDE_DATA :: EXTRA_CRC , CAMERA_TRIGGER_DATA :: ID => CAMERA_TRIGGER_DATA :: EXTRA_CRC , LOCAL_POSITION_NED_COV_DATA :: ID => LOCAL_POSITION_NED_COV_DATA :: EXTRA_CRC , LOG_ENTRY_DATA :: ID => LOG_ENTRY_DATA :: EXTRA_CRC , AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: ID => AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: EXTRA_CRC , WIFI_CONFIG_AP_DATA :: ID => WIFI_CONFIG_AP_DATA :: EXTRA_CRC , ONBOARD_COMPUTER_STATUS_DATA :: ID => ONBOARD_COMPUTER_STATUS_DATA :: EXTRA_CRC , DATA_STREAM_DATA :: ID => DATA_STREAM_DATA :: EXTRA_CRC , SERVO_OUTPUT_RAW_DATA :: ID => SERVO_OUTPUT_RAW_DATA :: EXTRA_CRC , GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: ID => GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: EXTRA_CRC , ESC_STATUS_DATA :: ID => ESC_STATUS_DATA :: EXTRA_CRC , PLAY_TUNE_DATA :: ID => PLAY_TUNE_DATA :: EXTRA_CRC , FILE_TRANSFER_PROTOCOL_DATA :: ID => FILE_TRANSFER_PROTOCOL_DATA :: EXTRA_CRC , SET_HOME_POSITION_DATA :: ID => SET_HOME_POSITION_DATA :: EXTRA_CRC , ATTITUDE_QUATERNION_COV_DATA :: ID => ATTITUDE_QUATERNION_COV_DATA :: EXTRA_CRC , GPS2_RAW_DATA :: ID => GPS2_RAW_DATA :: EXTRA_CRC , SIM_STATE_DATA :: ID => SIM_STATE_DATA :: EXTRA_CRC , HOME_POSITION_DATA :: ID => HOME_POSITION_DATA :: EXTRA_CRC , MANUAL_CONTROL_DATA :: ID => MANUAL_CONTROL_DATA :: EXTRA_CRC , SET_POSITION_TARGET_GLOBAL_INT_DATA :: ID => SET_POSITION_TARGET_GLOBAL_INT_DATA :: EXTRA_CRC , GLOBAL_VISION_POSITION_ESTIMATE_DATA :: ID => GLOBAL_VISION_POSITION_ESTIMATE_DATA :: EXTRA_CRC , PING_DATA :: ID => PING_DATA :: EXTRA_CRC , WHEEL_DISTANCE_DATA :: ID => WHEEL_DISTANCE_DATA :: EXTRA_CRC , GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: ID => GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: EXTRA_CRC , RESPONSE_EVENT_ERROR_DATA :: ID => RESPONSE_EVENT_ERROR_DATA :: EXTRA_CRC , TERRAIN_CHECK_DATA :: ID => TERRAIN_CHECK_DATA :: EXTRA_CRC , OPEN_DRONE_ID_AUTHENTICATION_DATA :: ID => OPEN_DRONE_ID_AUTHENTICATION_DATA :: EXTRA_CRC , OPEN_DRONE_ID_ARM_STATUS_DATA :: ID => OPEN_DRONE_ID_ARM_STATUS_DATA :: EXTRA_CRC , OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: ID => OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: EXTRA_CRC , OPEN_DRONE_ID_SELF_ID_DATA :: ID => OPEN_DRONE_ID_SELF_ID_DATA :: EXTRA_CRC , BUTTON_CHANGE_DATA :: ID => BUTTON_CHANGE_DATA :: EXTRA_CRC , CAMERA_SETTINGS_DATA :: ID => CAMERA_SETTINGS_DATA :: EXTRA_CRC , ESC_INFO_DATA :: ID => ESC_INFO_DATA :: EXTRA_CRC , SERIAL_CONTROL_DATA :: ID => SERIAL_CONTROL_DATA :: EXTRA_CRC , CHANGE_OPERATOR_CONTROL_ACK_DATA :: ID => CHANGE_OPERATOR_CONTROL_ACK_DATA :: EXTRA_CRC , ESTIMATOR_STATUS_DATA :: ID => ESTIMATOR_STATUS_DATA :: EXTRA_CRC , MISSION_ITEM_REACHED_DATA :: ID => MISSION_ITEM_REACHED_DATA :: EXTRA_CRC , SCALED_IMU2_DATA :: ID => SCALED_IMU2_DATA :: EXTRA_CRC , OPTICAL_FLOW_RAD_DATA :: ID => OPTICAL_FLOW_RAD_DATA :: EXTRA_CRC , LOG_REQUEST_DATA_DATA :: ID => LOG_REQUEST_DATA_DATA :: EXTRA_CRC , FOLLOW_TARGET_DATA :: ID => FOLLOW_TARGET_DATA :: EXTRA_CRC , GIMBAL_MANAGER_SET_PITCHYAW_DATA :: ID => GIMBAL_MANAGER_SET_PITCHYAW_DATA :: EXTRA_CRC , HIGH_LATENCY_DATA :: ID => HIGH_LATENCY_DATA :: EXTRA_CRC , PARAM_MAP_RC_DATA :: ID => PARAM_MAP_RC_DATA :: EXTRA_CRC , MISSION_COUNT_DATA :: ID => MISSION_COUNT_DATA :: EXTRA_CRC , PARAM_VALUE_DATA :: ID => PARAM_VALUE_DATA :: EXTRA_CRC , LOGGING_ACK_DATA :: ID => LOGGING_ACK_DATA :: EXTRA_CRC , HIL_OPTICAL_FLOW_DATA :: ID => HIL_OPTICAL_FLOW_DATA :: EXTRA_CRC , HIGH_LATENCY2_DATA :: ID => HIGH_LATENCY2_DATA :: EXTRA_CRC , CURRENT_EVENT_SEQUENCE_DATA :: ID => CURRENT_EVENT_SEQUENCE_DATA :: EXTRA_CRC , CAMERA_TRACKING_GEO_STATUS_DATA :: ID => CAMERA_TRACKING_GEO_STATUS_DATA :: EXTRA_CRC , RC_CHANNELS_SCALED_DATA :: ID => RC_CHANNELS_SCALED_DATA :: EXTRA_CRC , GPS2_RTK_DATA :: ID => GPS2_RTK_DATA :: EXTRA_CRC , RC_CHANNELS_DATA :: ID => RC_CHANNELS_DATA :: EXTRA_CRC , MISSION_WRITE_PARTIAL_LIST_DATA :: ID => MISSION_WRITE_PARTIAL_LIST_DATA :: EXTRA_CRC , CAMERA_CAPTURE_STATUS_DATA :: ID => CAMERA_CAPTURE_STATUS_DATA :: EXTRA_CRC , RC_CHANNELS_OVERRIDE_DATA :: ID => RC_CHANNELS_OVERRIDE_DATA :: EXTRA_CRC , CAMERA_IMAGE_CAPTURED_DATA :: ID => CAMERA_IMAGE_CAPTURED_DATA :: EXTRA_CRC , MISSION_ITEM_DATA :: ID => MISSION_ITEM_DATA :: EXTRA_CRC , MAG_CAL_REPORT_DATA :: ID => MAG_CAL_REPORT_DATA :: EXTRA_CRC , COMMAND_INT_DATA :: ID => COMMAND_INT_DATA :: EXTRA_CRC , CANFD_FRAME_DATA :: ID => CANFD_FRAME_DATA :: EXTRA_CRC , SET_GPS_GLOBAL_ORIGIN_DATA :: ID => SET_GPS_GLOBAL_ORIGIN_DATA :: EXTRA_CRC , HIL_GPS_DATA :: ID => HIL_GPS_DATA :: EXTRA_CRC , WINCH_STATUS_DATA :: ID => WINCH_STATUS_DATA :: EXTRA_CRC , DEBUG_VECT_DATA :: ID => DEBUG_VECT_DATA :: EXTRA_CRC , LOGGING_DATA_DATA :: ID => LOGGING_DATA_DATA :: EXTRA_CRC , NAV_CONTROLLER_OUTPUT_DATA :: ID => NAV_CONTROLLER_OUTPUT_DATA :: EXTRA_CRC , MISSION_ITEM_INT_DATA :: ID => MISSION_ITEM_INT_DATA :: EXTRA_CRC , ACTUATOR_OUTPUT_STATUS_DATA :: ID => ACTUATOR_OUTPUT_STATUS_DATA :: EXTRA_CRC , LOG_ERASE_DATA :: ID => LOG_ERASE_DATA :: EXTRA_CRC , COMMAND_LONG_DATA :: ID => COMMAND_LONG_DATA :: EXTRA_CRC , CAMERA_INFORMATION_DATA :: ID => CAMERA_INFORMATION_DATA :: EXTRA_CRC , DISTANCE_SENSOR_DATA :: ID => DISTANCE_SENSOR_DATA :: EXTRA_CRC , UTM_GLOBAL_POSITION_DATA :: ID => UTM_GLOBAL_POSITION_DATA :: EXTRA_CRC , ATTITUDE_DATA :: ID => ATTITUDE_DATA :: EXTRA_CRC , WIND_COV_DATA :: ID => WIND_COV_DATA :: EXTRA_CRC , MEMORY_VECT_DATA :: ID => MEMORY_VECT_DATA :: EXTRA_CRC , GIMBAL_MANAGER_SET_ATTITUDE_DATA :: ID => GIMBAL_MANAGER_SET_ATTITUDE_DATA :: EXTRA_CRC , MISSION_CLEAR_ALL_DATA :: ID => MISSION_CLEAR_ALL_DATA :: EXTRA_CRC , DATA_TRANSMISSION_HANDSHAKE_DATA :: ID => DATA_TRANSMISSION_HANDSHAKE_DATA :: EXTRA_CRC , CAN_FILTER_MODIFY_DATA :: ID => CAN_FILTER_MODIFY_DATA :: EXTRA_CRC , LOCAL_POSITION_NED_DATA :: ID => LOCAL_POSITION_NED_DATA :: EXTRA_CRC , GPS_INJECT_DATA_DATA :: ID => GPS_INJECT_DATA_DATA :: EXTRA_CRC , HIL_STATE_QUATERNION_DATA :: ID => HIL_STATE_QUATERNION_DATA :: EXTRA_CRC , SAFETY_SET_ALLOWED_AREA_DATA :: ID => SAFETY_SET_ALLOWED_AREA_DATA :: EXTRA_CRC , FENCE_STATUS_DATA :: ID => FENCE_STATUS_DATA :: EXTRA_CRC , OPTICAL_FLOW_DATA :: ID => OPTICAL_FLOW_DATA :: EXTRA_CRC , RADIO_STATUS_DATA :: ID => RADIO_STATUS_DATA :: EXTRA_CRC , SET_POSITION_TARGET_LOCAL_NED_DATA :: ID => SET_POSITION_TARGET_LOCAL_NED_DATA :: EXTRA_CRC , RESOURCE_REQUEST_DATA :: ID => RESOURCE_REQUEST_DATA :: EXTRA_CRC , UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: ID => UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: EXTRA_CRC , TRAJECTORY_REPRESENTATION_BEZIER_DATA :: ID => TRAJECTORY_REPRESENTATION_BEZIER_DATA :: EXTRA_CRC , GPS_STATUS_DATA :: ID => GPS_STATUS_DATA :: EXTRA_CRC , MISSION_REQUEST_PARTIAL_LIST_DATA :: ID => MISSION_REQUEST_PARTIAL_LIST_DATA :: EXTRA_CRC , AUTOPILOT_VERSION_DATA :: ID => AUTOPILOT_VERSION_DATA :: EXTRA_CRC , TUNNEL_DATA :: ID => TUNNEL_DATA :: EXTRA_CRC , TERRAIN_DATA_DATA :: ID => TERRAIN_DATA_DATA :: EXTRA_CRC , UAVCAN_NODE_STATUS_DATA :: ID => UAVCAN_NODE_STATUS_DATA :: EXTRA_CRC , HEARTBEAT_DATA :: ID => HEARTBEAT_DATA :: EXTRA_CRC , REQUEST_EVENT_DATA :: ID => REQUEST_EVENT_DATA :: EXTRA_CRC , PARAM_EXT_SET_DATA :: ID => PARAM_EXT_SET_DATA :: EXTRA_CRC , VISION_POSITION_ESTIMATE_DATA :: ID => VISION_POSITION_ESTIMATE_DATA :: EXTRA_CRC , SUPPORTED_TUNES_DATA :: ID => SUPPORTED_TUNES_DATA :: EXTRA_CRC , PARAM_EXT_REQUEST_LIST_DATA :: ID => PARAM_EXT_REQUEST_LIST_DATA :: EXTRA_CRC , ISBD_LINK_STATUS_DATA :: ID => ISBD_LINK_STATUS_DATA :: EXTRA_CRC , PLAY_TUNE_V2_DATA :: ID => PLAY_TUNE_V2_DATA :: EXTRA_CRC , VIDEO_STREAM_STATUS_DATA :: ID => VIDEO_STREAM_STATUS_DATA :: EXTRA_CRC , RAW_IMU_DATA :: ID => RAW_IMU_DATA :: EXTRA_CRC , OPEN_DRONE_ID_LOCATION_DATA :: ID => OPEN_DRONE_ID_LOCATION_DATA :: EXTRA_CRC , AIS_VESSEL_DATA :: ID => AIS_VESSEL_DATA :: EXTRA_CRC , RAW_RPM_DATA :: ID => RAW_RPM_DATA :: EXTRA_CRC , MISSION_REQUEST_DATA :: ID => MISSION_REQUEST_DATA :: EXTRA_CRC , FLIGHT_INFORMATION_DATA :: ID => FLIGHT_INFORMATION_DATA :: EXTRA_CRC , VICON_POSITION_ESTIMATE_DATA :: ID => VICON_POSITION_ESTIMATE_DATA :: EXTRA_CRC , HIL_SENSOR_DATA :: ID => HIL_SENSOR_DATA :: EXTRA_CRC , TIMESYNC_DATA :: ID => TIMESYNC_DATA :: EXTRA_CRC , OPEN_DRONE_ID_OPERATOR_ID_DATA :: ID => OPEN_DRONE_ID_OPERATOR_ID_DATA :: EXTRA_CRC , COMPONENT_METADATA_DATA :: ID => COMPONENT_METADATA_DATA :: EXTRA_CRC , SAFETY_ALLOWED_AREA_DATA :: ID => SAFETY_ALLOWED_AREA_DATA :: EXTRA_CRC , MANUAL_SETPOINT_DATA :: ID => MANUAL_SETPOINT_DATA :: EXTRA_CRC , CAMERA_TRACKING_IMAGE_STATUS_DATA :: ID => CAMERA_TRACKING_IMAGE_STATUS_DATA :: EXTRA_CRC , GLOBAL_POSITION_INT_DATA :: ID => GLOBAL_POSITION_INT_DATA :: EXTRA_CRC , EXTENDED_SYS_STATE_DATA :: ID => EXTENDED_SYS_STATE_DATA :: EXTRA_CRC , OPEN_DRONE_ID_BASIC_ID_DATA :: ID => OPEN_DRONE_ID_BASIC_ID_DATA :: EXTRA_CRC , SYS_STATUS_DATA :: ID => SYS_STATUS_DATA :: EXTRA_CRC , UAVCAN_NODE_INFO_DATA :: ID => UAVCAN_NODE_INFO_DATA :: EXTRA_CRC , VIBRATION_DATA :: ID => VIBRATION_DATA :: EXTRA_CRC , PARAM_REQUEST_READ_DATA :: ID => PARAM_REQUEST_READ_DATA :: EXTRA_CRC , POSITION_TARGET_GLOBAL_INT_DATA :: ID => POSITION_TARGET_GLOBAL_INT_DATA :: EXTRA_CRC , SET_ACTUATOR_CONTROL_TARGET_DATA :: ID => SET_ACTUATOR_CONTROL_TARGET_DATA :: EXTRA_CRC , SET_MODE_DATA :: ID => SET_MODE_DATA :: EXTRA_CRC , TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: ID => TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: EXTRA_CRC , COMPONENT_INFORMATION_DATA :: ID => COMPONENT_INFORMATION_DATA :: EXTRA_CRC , PROTOCOL_VERSION_DATA :: ID => PROTOCOL_VERSION_DATA :: EXTRA_CRC , MESSAGE_INTERVAL_DATA :: ID => MESSAGE_INTERVAL_DATA :: EXTRA_CRC , OPEN_DRONE_ID_SYSTEM_DATA :: ID => OPEN_DRONE_ID_SYSTEM_DATA :: EXTRA_CRC , ORBIT_EXECUTION_STATUS_DATA :: ID => ORBIT_EXECUTION_STATUS_DATA :: EXTRA_CRC , SETUP_SIGNING_DATA :: ID => SETUP_SIGNING_DATA :: EXTRA_CRC , OBSTACLE_DISTANCE_DATA :: ID => OBSTACLE_DISTANCE_DATA :: EXTRA_CRC , CAMERA_FOV_STATUS_DATA :: ID => CAMERA_FOV_STATUS_DATA :: EXTRA_CRC , ATTITUDE_QUATERNION_DATA :: ID => ATTITUDE_QUATERNION_DATA :: EXTRA_CRC , GENERATOR_STATUS_DATA :: ID => GENERATOR_STATUS_DATA :: EXTRA_CRC , POSITION_TARGET_LOCAL_NED_DATA :: ID => POSITION_TARGET_LOCAL_NED_DATA :: EXTRA_CRC , HYGROMETER_SENSOR_DATA :: ID => HYGROMETER_SENSOR_DATA :: EXTRA_CRC , TIME_ESTIMATE_TO_TARGET_DATA :: ID => TIME_ESTIMATE_TO_TARGET_DATA :: EXTRA_CRC , MISSION_CURRENT_DATA :: ID => MISSION_CURRENT_DATA :: EXTRA_CRC , SYSTEM_TIME_DATA :: ID => SYSTEM_TIME_DATA :: EXTRA_CRC , HIGHRES_IMU_DATA :: ID => HIGHRES_IMU_DATA :: EXTRA_CRC , REQUEST_DATA_STREAM_DATA :: ID => REQUEST_DATA_STREAM_DATA :: EXTRA_CRC , GPS_RTK_DATA :: ID => GPS_RTK_DATA :: EXTRA_CRC , EFI_STATUS_DATA :: ID => EFI_STATUS_DATA :: EXTRA_CRC , MISSION_REQUEST_LIST_DATA :: ID => MISSION_REQUEST_LIST_DATA :: EXTRA_CRC , SMART_BATTERY_INFO_DATA :: ID => SMART_BATTERY_INFO_DATA :: EXTRA_CRC , CELLULAR_CONFIG_DATA :: ID => CELLULAR_CONFIG_DATA :: EXTRA_CRC , CHANGE_OPERATOR_CONTROL_DATA :: ID => CHANGE_OPERATOR_CONTROL_DATA :: EXTRA_CRC , UAVIONIX_ADSB_OUT_CFG_DATA :: ID => UAVIONIX_ADSB_OUT_CFG_DATA :: EXTRA_CRC , UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: ID => UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: EXTRA_CRC , PARAM_EXT_REQUEST_READ_DATA :: ID => PARAM_EXT_REQUEST_READ_DATA :: EXTRA_CRC , LANDING_TARGET_DATA :: ID => LANDING_TARGET_DATA :: EXTRA_CRC , EVENT_DATA :: ID => EVENT_DATA :: EXTRA_CRC , VFR_HUD_DATA :: ID => VFR_HUD_DATA :: EXTRA_CRC , HIL_RC_INPUTS_RAW_DATA :: ID => HIL_RC_INPUTS_RAW_DATA :: EXTRA_CRC , SCALED_PRESSURE3_DATA :: ID => SCALED_PRESSURE3_DATA :: EXTRA_CRC , COMMAND_CANCEL_DATA :: ID => COMMAND_CANCEL_DATA :: EXTRA_CRC , GIMBAL_MANAGER_STATUS_DATA :: ID => GIMBAL_MANAGER_STATUS_DATA :: EXTRA_CRC , ATT_POS_MOCAP_DATA :: ID => ATT_POS_MOCAP_DATA :: EXTRA_CRC , HIL_CONTROLS_DATA :: ID => HIL_CONTROLS_DATA :: EXTRA_CRC , ATTITUDE_TARGET_DATA :: ID => ATTITUDE_TARGET_DATA :: EXTRA_CRC , PARAM_EXT_ACK_DATA :: ID => PARAM_EXT_ACK_DATA :: EXTRA_CRC , ACTUATOR_CONTROL_TARGET_DATA :: ID => ACTUATOR_CONTROL_TARGET_DATA :: EXTRA_CRC , GPS_GLOBAL_ORIGIN_DATA :: ID => GPS_GLOBAL_ORIGIN_DATA :: EXTRA_CRC , SCALED_PRESSURE_DATA :: ID => SCALED_PRESSURE_DATA :: EXTRA_CRC , POWER_STATUS_DATA :: ID => POWER_STATUS_DATA :: EXTRA_CRC , TERRAIN_REQUEST_DATA :: ID => TERRAIN_REQUEST_DATA :: EXTRA_CRC , OPEN_DRONE_ID_MESSAGE_PACK_DATA :: ID => OPEN_DRONE_ID_MESSAGE_PACK_DATA :: EXTRA_CRC , LOG_DATA_DATA :: ID => LOG_DATA_DATA :: EXTRA_CRC , GLOBAL_POSITION_INT_COV_DATA :: ID => GLOBAL_POSITION_INT_COV_DATA :: EXTRA_CRC , V2_EXTENSION_DATA :: ID => V2_EXTENSION_DATA :: EXTRA_CRC , LOG_REQUEST_END_DATA :: ID => LOG_REQUEST_END_DATA :: EXTRA_CRC , CAN_FRAME_DATA :: ID => CAN_FRAME_DATA :: EXTRA_CRC , ODOMETRY_DATA :: ID => ODOMETRY_DATA :: EXTRA_CRC , TERRAIN_REPORT_DATA :: ID => TERRAIN_REPORT_DATA :: EXTRA_CRC , GIMBAL_DEVICE_SET_ATTITUDE_DATA :: ID => GIMBAL_DEVICE_SET_ATTITUDE_DATA :: EXTRA_CRC , MISSION_SET_CURRENT_DATA :: ID => MISSION_SET_CURRENT_DATA :: EXTRA_CRC , DEBUG_FLOAT_ARRAY_DATA :: ID => DEBUG_FLOAT_ARRAY_DATA :: EXTRA_CRC , AUTH_KEY_DATA :: ID => AUTH_KEY_DATA :: EXTRA_CRC , GIMBAL_MANAGER_INFORMATION_DATA :: ID => GIMBAL_MANAGER_INFORMATION_DATA :: EXTRA_CRC , RAW_PRESSURE_DATA :: ID => RAW_PRESSURE_DATA :: EXTRA_CRC , MISSION_ACK_DATA :: ID => MISSION_ACK_DATA :: EXTRA_CRC , PARAM_REQUEST_LIST_DATA :: ID => PARAM_REQUEST_LIST_DATA :: EXTRA_CRC , SCALED_IMU_DATA :: ID => SCALED_IMU_DATA :: EXTRA_CRC , LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: ID => LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: EXTRA_CRC , DEBUG_DATA :: ID => DEBUG_DATA :: EXTRA_CRC , NAMED_VALUE_INT_DATA :: ID => NAMED_VALUE_INT_DATA :: EXTRA_CRC , CONTROL_SYSTEM_STATE_DATA :: ID => CONTROL_SYSTEM_STATE_DATA :: EXTRA_CRC , GPS_RAW_INT_DATA :: ID => GPS_RAW_INT_DATA :: EXTRA_CRC , COMMAND_ACK_DATA :: ID => COMMAND_ACK_DATA :: EXTRA_CRC , VIDEO_STREAM_INFORMATION_DATA :: ID => VIDEO_STREAM_INFORMATION_DATA :: EXTRA_CRC , PARAM_SET_DATA :: ID => PARAM_SET_DATA :: EXTRA_CRC , LOGGING_DATA_ACKED_DATA :: ID => LOGGING_DATA_ACKED_DATA :: EXTRA_CRC , NAMED_VALUE_FLOAT_DATA :: ID => NAMED_VALUE_FLOAT_DATA :: EXTRA_CRC , ADSB_VEHICLE_DATA :: ID => ADSB_VEHICLE_DATA :: EXTRA_CRC , COLLISION_DATA :: ID => COLLISION_DATA :: EXTRA_CRC , HIL_ACTUATOR_CONTROLS_DATA :: ID => HIL_ACTUATOR_CONTROLS_DATA :: EXTRA_CRC , LOG_REQUEST_LIST_DATA :: ID => LOG_REQUEST_LIST_DATA :: EXTRA_CRC , LINK_NODE_STATUS_DATA :: ID => LINK_NODE_STATUS_DATA :: EXTRA_CRC , BATTERY_STATUS_DATA :: ID => BATTERY_STATUS_DATA :: EXTRA_CRC , VISION_SPEED_ESTIMATE_DATA :: ID => VISION_SPEED_ESTIMATE_DATA :: EXTRA_CRC , RC_CHANNELS_RAW_DATA :: ID => RC_CHANNELS_RAW_DATA :: EXTRA_CRC , SCALED_IMU3_DATA :: ID => SCALED_IMU3_DATA :: EXTRA_CRC , GIMBAL_DEVICE_INFORMATION_DATA :: ID => GIMBAL_DEVICE_INFORMATION_DATA :: EXTRA_CRC , ENCAPSULATED_DATA_DATA :: ID => ENCAPSULATED_DATA_DATA :: EXTRA_CRC , SET_ATTITUDE_TARGET_DATA :: ID => SET_ATTITUDE_TARGET_DATA :: EXTRA_CRC , CELLULAR_STATUS_DATA :: ID => CELLULAR_STATUS_DATA :: EXTRA_CRC , STATUSTEXT_DATA :: ID => STATUSTEXT_DATA :: EXTRA_CRC , GPS_INPUT_DATA :: ID => GPS_INPUT_DATA :: EXTRA_CRC , _ => { 0 } , } } }
+
# ! [doc = "This file was automatically generated, do not edit"] # [allow (unused_imports)] use num_derive :: FromPrimitive ; # [allow (unused_imports)] use num_traits :: FromPrimitive ; # [allow (unused_imports)] use num_derive :: ToPrimitive ; # [allow (unused_imports)] use num_traits :: ToPrimitive ; # [allow (unused_imports)] use bitflags :: bitflags ; use mavlink_core :: { MavlinkVersion , Message , MessageData , bytes :: Bytes , bytes_mut :: BytesMut } ; # [cfg (feature = "serde")] use serde :: { Serialize , Deserialize } ; # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum VideoStreamType { VIDEO_STREAM_TYPE_RTSP = 0 , VIDEO_STREAM_TYPE_RTPUDP = 1 , VIDEO_STREAM_TYPE_TCP_MPEG = 2 , VIDEO_STREAM_TYPE_MPEG_TS_H264 = 3 , } impl VideoStreamType { pub const DEFAULT : Self = Self :: VIDEO_STREAM_TYPE_RTSP ; } impl Default for VideoStreamType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum NavVtolLandOptions { NAV_VTOL_LAND_OPTIONS_DEFAULT = 0 , NAV_VTOL_LAND_OPTIONS_FW_DESCENT = 1 , NAV_VTOL_LAND_OPTIONS_HOVER_DESCENT = 2 , } impl NavVtolLandOptions { pub const DEFAULT : Self = Self :: NAV_VTOL_LAND_OPTIONS_DEFAULT ; } impl Default for NavVtolLandOptions { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum PreflightStorageMissionAction { MISSION_READ_PERSISTENT = 0 , MISSION_WRITE_PERSISTENT = 1 , MISSION_RESET_DEFAULT = 2 , } impl PreflightStorageMissionAction { pub const DEFAULT : Self = Self :: MISSION_READ_PERSISTENT ; } impl Default for PreflightStorageMissionAction { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavCmdAck { MAV_CMD_ACK_OK = 0 , MAV_CMD_ACK_ERR_FAIL = 1 , MAV_CMD_ACK_ERR_ACCESS_DENIED = 2 , MAV_CMD_ACK_ERR_NOT_SUPPORTED = 3 , MAV_CMD_ACK_ERR_COORDINATE_FRAME_NOT_SUPPORTED = 4 , MAV_CMD_ACK_ERR_COORDINATES_OUT_OF_RANGE = 5 , MAV_CMD_ACK_ERR_X_LAT_OUT_OF_RANGE = 6 , MAV_CMD_ACK_ERR_Y_LON_OUT_OF_RANGE = 7 , MAV_CMD_ACK_ERR_Z_ALT_OUT_OF_RANGE = 8 , } impl MavCmdAck { pub const DEFAULT : Self = Self :: MAV_CMD_ACK_OK ; } impl Default for MavCmdAck { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum CanFilterOp { CAN_FILTER_REPLACE = 0 , CAN_FILTER_ADD = 1 , CAN_FILTER_REMOVE = 2 , } impl CanFilterOp { pub const DEFAULT : Self = Self :: CAN_FILTER_REPLACE ; } impl Default for CanFilterOp { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct UavionixAdsbOutRfSelect : u8 { const UAVIONIX_ADSB_OUT_RF_SELECT_STANDBY = 0 ; const UAVIONIX_ADSB_OUT_RF_SELECT_RX_ENABLED = 1 ; const UAVIONIX_ADSB_OUT_RF_SELECT_TX_ENABLED = 2 ; } } impl UavionixAdsbOutRfSelect { pub const DEFAULT : Self = Self :: UAVIONIX_ADSB_OUT_RF_SELECT_STANDBY ; } impl Default for UavionixAdsbOutRfSelect { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum PrecisionLandMode { PRECISION_LAND_MODE_DISABLED = 0 , PRECISION_LAND_MODE_OPPORTUNISTIC = 1 , PRECISION_LAND_MODE_REQUIRED = 2 , } impl PrecisionLandMode { pub const DEFAULT : Self = Self :: PRECISION_LAND_MODE_DISABLED ; } impl Default for PrecisionLandMode { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidArmStatus { MAV_ODID_ARM_STATUS_GOOD_TO_ARM = 0 , MAV_ODID_ARM_STATUS_PRE_ARM_FAIL_GENERIC = 1 , } impl MavOdidArmStatus { pub const DEFAULT : Self = Self :: MAV_ODID_ARM_STATUS_GOOD_TO_ARM ; } impl Default for MavOdidArmStatus { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavCollisionAction { MAV_COLLISION_ACTION_NONE = 0 , MAV_COLLISION_ACTION_REPORT = 1 , MAV_COLLISION_ACTION_ASCEND_OR_DESCEND = 2 , MAV_COLLISION_ACTION_MOVE_HORIZONTALLY = 3 , MAV_COLLISION_ACTION_MOVE_PERPENDICULAR = 4 , MAV_COLLISION_ACTION_RTL = 5 , MAV_COLLISION_ACTION_HOVER = 6 , } impl MavCollisionAction { pub const DEFAULT : Self = Self :: MAV_COLLISION_ACTION_NONE ; } impl Default for MavCollisionAction { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum CellularNetworkFailedReason { CELLULAR_NETWORK_FAILED_REASON_NONE = 0 , CELLULAR_NETWORK_FAILED_REASON_UNKNOWN = 1 , CELLULAR_NETWORK_FAILED_REASON_SIM_MISSING = 2 , CELLULAR_NETWORK_FAILED_REASON_SIM_ERROR = 3 , } impl CellularNetworkFailedReason { pub const DEFAULT : Self = Self :: CELLULAR_NETWORK_FAILED_REASON_NONE ; } impl Default for CellularNetworkFailedReason { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum UavcanNodeHealth { UAVCAN_NODE_HEALTH_OK = 0 , UAVCAN_NODE_HEALTH_WARNING = 1 , UAVCAN_NODE_HEALTH_ERROR = 2 , UAVCAN_NODE_HEALTH_CRITICAL = 3 , } impl UavcanNodeHealth { pub const DEFAULT : Self = Self :: UAVCAN_NODE_HEALTH_OK ; } impl Default for UavcanNodeHealth { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum GripperActions { GRIPPER_ACTION_RELEASE = 0 , GRIPPER_ACTION_GRAB = 1 , } impl GripperActions { pub const DEFAULT : Self = Self :: GRIPPER_ACTION_RELEASE ; } impl Default for GripperActions { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidClassEu { MAV_ODID_CLASS_EU_UNDECLARED = 0 , MAV_ODID_CLASS_EU_CLASS_0 = 1 , MAV_ODID_CLASS_EU_CLASS_1 = 2 , MAV_ODID_CLASS_EU_CLASS_2 = 3 , MAV_ODID_CLASS_EU_CLASS_3 = 4 , MAV_ODID_CLASS_EU_CLASS_4 = 5 , MAV_ODID_CLASS_EU_CLASS_5 = 6 , MAV_ODID_CLASS_EU_CLASS_6 = 7 , } impl MavOdidClassEu { pub const DEFAULT : Self = Self :: MAV_ODID_CLASS_EU_UNDECLARED ; } impl Default for MavOdidClassEu { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum FailureType { FAILURE_TYPE_OK = 0 , FAILURE_TYPE_OFF = 1 , FAILURE_TYPE_STUCK = 2 , FAILURE_TYPE_GARBAGE = 3 , FAILURE_TYPE_WRONG = 4 , FAILURE_TYPE_SLOW = 5 , FAILURE_TYPE_DELAYED = 6 , FAILURE_TYPE_INTERMITTENT = 7 , } impl FailureType { pub const DEFAULT : Self = Self :: FAILURE_TYPE_OK ; } impl Default for FailureType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavRoi { MAV_ROI_NONE = 0 , MAV_ROI_WPNEXT = 1 , MAV_ROI_WPINDEX = 2 , MAV_ROI_LOCATION = 3 , MAV_ROI_TARGET = 4 , } impl MavRoi { pub const DEFAULT : Self = Self :: MAV_ROI_NONE ; } impl Default for MavRoi { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavMissionResult { MAV_MISSION_ACCEPTED = 0 , MAV_MISSION_ERROR = 1 , MAV_MISSION_UNSUPPORTED_FRAME = 2 , MAV_MISSION_UNSUPPORTED = 3 , MAV_MISSION_NO_SPACE = 4 , MAV_MISSION_INVALID = 5 , MAV_MISSION_INVALID_PARAM1 = 6 , MAV_MISSION_INVALID_PARAM2 = 7 , MAV_MISSION_INVALID_PARAM3 = 8 , MAV_MISSION_INVALID_PARAM4 = 9 , MAV_MISSION_INVALID_PARAM5_X = 10 , MAV_MISSION_INVALID_PARAM6_Y = 11 , MAV_MISSION_INVALID_PARAM7 = 12 , MAV_MISSION_INVALID_SEQUENCE = 13 , MAV_MISSION_DENIED = 14 , MAV_MISSION_OPERATION_CANCELLED = 15 , } impl MavMissionResult { pub const DEFAULT : Self = Self :: MAV_MISSION_ACCEPTED ; } impl Default for MavMissionResult { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum StorageType { STORAGE_TYPE_UNKNOWN = 0 , STORAGE_TYPE_USB_STICK = 1 , STORAGE_TYPE_SD = 2 , STORAGE_TYPE_MICROSD = 3 , STORAGE_TYPE_CF = 4 , STORAGE_TYPE_CFE = 5 , STORAGE_TYPE_XQD = 6 , STORAGE_TYPE_HD = 7 , STORAGE_TYPE_OTHER = 254 , } impl StorageType { pub const DEFAULT : Self = Self :: STORAGE_TYPE_UNKNOWN ; } impl Default for StorageType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidCategoryEu { MAV_ODID_CATEGORY_EU_UNDECLARED = 0 , MAV_ODID_CATEGORY_EU_OPEN = 1 , MAV_ODID_CATEGORY_EU_SPECIFIC = 2 , MAV_ODID_CATEGORY_EU_CERTIFIED = 3 , } impl MavOdidCategoryEu { pub const DEFAULT : Self = Self :: MAV_ODID_CATEGORY_EU_UNDECLARED ; } impl Default for MavOdidCategoryEu { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavMissionType { MAV_MISSION_TYPE_MISSION = 0 , MAV_MISSION_TYPE_FENCE = 1 , MAV_MISSION_TYPE_RALLY = 2 , MAV_MISSION_TYPE_ALL = 255 , } impl MavMissionType { pub const DEFAULT : Self = Self :: MAV_MISSION_TYPE_MISSION ; } impl Default for MavMissionType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidTimeAcc { MAV_ODID_TIME_ACC_UNKNOWN = 0 , MAV_ODID_TIME_ACC_0_1_SECOND = 1 , MAV_ODID_TIME_ACC_0_2_SECOND = 2 , MAV_ODID_TIME_ACC_0_3_SECOND = 3 , MAV_ODID_TIME_ACC_0_4_SECOND = 4 , MAV_ODID_TIME_ACC_0_5_SECOND = 5 , MAV_ODID_TIME_ACC_0_6_SECOND = 6 , MAV_ODID_TIME_ACC_0_7_SECOND = 7 , MAV_ODID_TIME_ACC_0_8_SECOND = 8 , MAV_ODID_TIME_ACC_0_9_SECOND = 9 , MAV_ODID_TIME_ACC_1_0_SECOND = 10 , MAV_ODID_TIME_ACC_1_1_SECOND = 11 , MAV_ODID_TIME_ACC_1_2_SECOND = 12 , MAV_ODID_TIME_ACC_1_3_SECOND = 13 , MAV_ODID_TIME_ACC_1_4_SECOND = 14 , MAV_ODID_TIME_ACC_1_5_SECOND = 15 , } impl MavOdidTimeAcc { pub const DEFAULT : Self = Self :: MAV_ODID_TIME_ACC_UNKNOWN ; } impl Default for MavOdidTimeAcc { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavDataStream { MAV_DATA_STREAM_ALL = 0 , MAV_DATA_STREAM_RAW_SENSORS = 1 , MAV_DATA_STREAM_EXTENDED_STATUS = 2 , MAV_DATA_STREAM_RC_CHANNELS = 3 , MAV_DATA_STREAM_RAW_CONTROLLER = 4 , MAV_DATA_STREAM_POSITION = 6 , MAV_DATA_STREAM_EXTRA1 = 10 , MAV_DATA_STREAM_EXTRA2 = 11 , MAV_DATA_STREAM_EXTRA3 = 12 , } impl MavDataStream { pub const DEFAULT : Self = Self :: MAV_DATA_STREAM_ALL ; } impl Default for MavDataStream { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidHorAcc { MAV_ODID_HOR_ACC_UNKNOWN = 0 , MAV_ODID_HOR_ACC_10NM = 1 , MAV_ODID_HOR_ACC_4NM = 2 , MAV_ODID_HOR_ACC_2NM = 3 , MAV_ODID_HOR_ACC_1NM = 4 , MAV_ODID_HOR_ACC_0_5NM = 5 , MAV_ODID_HOR_ACC_0_3NM = 6 , MAV_ODID_HOR_ACC_0_1NM = 7 , MAV_ODID_HOR_ACC_0_05NM = 8 , MAV_ODID_HOR_ACC_30_METER = 9 , MAV_ODID_HOR_ACC_10_METER = 10 , MAV_ODID_HOR_ACC_3_METER = 11 , MAV_ODID_HOR_ACC_1_METER = 12 , } impl MavOdidHorAcc { pub const DEFAULT : Self = Self :: MAV_ODID_HOR_ACC_UNKNOWN ; } impl Default for MavOdidHorAcc { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavCollisionThreatLevel { MAV_COLLISION_THREAT_LEVEL_NONE = 0 , MAV_COLLISION_THREAT_LEVEL_LOW = 1 , MAV_COLLISION_THREAT_LEVEL_HIGH = 2 , } impl MavCollisionThreatLevel { pub const DEFAULT : Self = Self :: MAV_COLLISION_THREAT_LEVEL_NONE ; } impl Default for MavCollisionThreatLevel { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidUaType { MAV_ODID_UA_TYPE_NONE = 0 , MAV_ODID_UA_TYPE_AEROPLANE = 1 , MAV_ODID_UA_TYPE_HELICOPTER_OR_MULTIROTOR = 2 , MAV_ODID_UA_TYPE_GYROPLANE = 3 , MAV_ODID_UA_TYPE_HYBRID_LIFT = 4 , MAV_ODID_UA_TYPE_ORNITHOPTER = 5 , MAV_ODID_UA_TYPE_GLIDER = 6 , MAV_ODID_UA_TYPE_KITE = 7 , MAV_ODID_UA_TYPE_FREE_BALLOON = 8 , MAV_ODID_UA_TYPE_CAPTIVE_BALLOON = 9 , MAV_ODID_UA_TYPE_AIRSHIP = 10 , MAV_ODID_UA_TYPE_FREE_FALL_PARACHUTE = 11 , MAV_ODID_UA_TYPE_ROCKET = 12 , MAV_ODID_UA_TYPE_TETHERED_POWERED_AIRCRAFT = 13 , MAV_ODID_UA_TYPE_GROUND_OBSTACLE = 14 , MAV_ODID_UA_TYPE_OTHER = 15 , } impl MavOdidUaType { pub const DEFAULT : Self = Self :: MAV_ODID_UA_TYPE_NONE ; } impl Default for MavOdidUaType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum CellularNetworkRadioType { CELLULAR_NETWORK_RADIO_TYPE_NONE = 0 , CELLULAR_NETWORK_RADIO_TYPE_GSM = 1 , CELLULAR_NETWORK_RADIO_TYPE_CDMA = 2 , CELLULAR_NETWORK_RADIO_TYPE_WCDMA = 3 , CELLULAR_NETWORK_RADIO_TYPE_LTE = 4 , } impl CellularNetworkRadioType { pub const DEFAULT : Self = Self :: CELLULAR_NETWORK_RADIO_TYPE_NONE ; } impl Default for CellularNetworkRadioType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum UavionixAdsbOutCfgGpsOffsetLon { UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LON_NO_DATA = 0 , UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LON_APPLIED_BY_SENSOR = 1 , } impl UavionixAdsbOutCfgGpsOffsetLon { pub const DEFAULT : Self = Self :: UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LON_NO_DATA ; } impl Default for UavionixAdsbOutCfgGpsOffsetLon { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum VtolTransitionHeading { VTOL_TRANSITION_HEADING_VEHICLE_DEFAULT = 0 , VTOL_TRANSITION_HEADING_NEXT_WAYPOINT = 1 , VTOL_TRANSITION_HEADING_TAKEOFF = 2 , VTOL_TRANSITION_HEADING_SPECIFIED = 3 , VTOL_TRANSITION_HEADING_ANY = 4 , } impl VtolTransitionHeading { pub const DEFAULT : Self = Self :: VTOL_TRANSITION_HEADING_VEHICLE_DEFAULT ; } impl Default for VtolTransitionHeading { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MavModeFlag : u8 { const MAV_MODE_FLAG_SAFETY_ARMED = 128 ; const MAV_MODE_FLAG_MANUAL_INPUT_ENABLED = 64 ; const MAV_MODE_FLAG_HIL_ENABLED = 32 ; const MAV_MODE_FLAG_STABILIZE_ENABLED = 16 ; const MAV_MODE_FLAG_GUIDED_ENABLED = 8 ; const MAV_MODE_FLAG_AUTO_ENABLED = 4 ; const MAV_MODE_FLAG_TEST_ENABLED = 2 ; const MAV_MODE_FLAG_CUSTOM_MODE_ENABLED = 1 ; } } impl MavModeFlag { pub const DEFAULT : Self = Self :: MAV_MODE_FLAG_SAFETY_ARMED ; } impl Default for MavModeFlag { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum RtkBaselineCoordinateSystem { RTK_BASELINE_COORDINATE_SYSTEM_ECEF = 0 , RTK_BASELINE_COORDINATE_SYSTEM_NED = 1 , } impl RtkBaselineCoordinateSystem { pub const DEFAULT : Self = Self :: RTK_BASELINE_COORDINATE_SYSTEM_ECEF ; } impl Default for RtkBaselineCoordinateSystem { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavResult { MAV_RESULT_ACCEPTED = 0 , MAV_RESULT_TEMPORARILY_REJECTED = 1 , MAV_RESULT_DENIED = 2 , MAV_RESULT_UNSUPPORTED = 3 , MAV_RESULT_FAILED = 4 , MAV_RESULT_IN_PROGRESS = 5 , MAV_RESULT_CANCELLED = 6 , } impl MavResult { pub const DEFAULT : Self = Self :: MAV_RESULT_ACCEPTED ; } impl Default for MavResult { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavEventErrorReason { MAV_EVENT_ERROR_REASON_UNAVAILABLE = 0 , } impl MavEventErrorReason { pub const DEFAULT : Self = Self :: MAV_EVENT_ERROR_REASON_UNAVAILABLE ; } impl Default for MavEventErrorReason { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavModeFlagDecodePosition { MAV_MODE_FLAG_DECODE_POSITION_SAFETY = 128 , MAV_MODE_FLAG_DECODE_POSITION_MANUAL = 64 , MAV_MODE_FLAG_DECODE_POSITION_HIL = 32 , MAV_MODE_FLAG_DECODE_POSITION_STABILIZE = 16 , MAV_MODE_FLAG_DECODE_POSITION_GUIDED = 8 , MAV_MODE_FLAG_DECODE_POSITION_AUTO = 4 , MAV_MODE_FLAG_DECODE_POSITION_TEST = 2 , MAV_MODE_FLAG_DECODE_POSITION_CUSTOM_MODE = 1 , } impl MavModeFlagDecodePosition { pub const DEFAULT : Self = Self :: MAV_MODE_FLAG_DECODE_POSITION_SAFETY ; } impl Default for MavModeFlagDecodePosition { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavState { MAV_STATE_UNINIT = 0 , MAV_STATE_BOOT = 1 , MAV_STATE_CALIBRATING = 2 , MAV_STATE_STANDBY = 3 , MAV_STATE_ACTIVE = 4 , MAV_STATE_CRITICAL = 5 , MAV_STATE_EMERGENCY = 6 , MAV_STATE_POWEROFF = 7 , MAV_STATE_FLIGHT_TERMINATION = 8 , } impl MavState { pub const DEFAULT : Self = Self :: MAV_STATE_UNINIT ; } impl Default for MavState { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavParamExtType { MAV_PARAM_EXT_TYPE_UINT8 = 1 , MAV_PARAM_EXT_TYPE_INT8 = 2 , MAV_PARAM_EXT_TYPE_UINT16 = 3 , MAV_PARAM_EXT_TYPE_INT16 = 4 , MAV_PARAM_EXT_TYPE_UINT32 = 5 , MAV_PARAM_EXT_TYPE_INT32 = 6 , MAV_PARAM_EXT_TYPE_UINT64 = 7 , MAV_PARAM_EXT_TYPE_INT64 = 8 , MAV_PARAM_EXT_TYPE_REAL32 = 9 , MAV_PARAM_EXT_TYPE_REAL64 = 10 , MAV_PARAM_EXT_TYPE_CUSTOM = 11 , } impl MavParamExtType { pub const DEFAULT : Self = Self :: MAV_PARAM_EXT_TYPE_UINT8 ; } impl Default for MavParamExtType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavParamType { MAV_PARAM_TYPE_UINT8 = 1 , MAV_PARAM_TYPE_INT8 = 2 , MAV_PARAM_TYPE_UINT16 = 3 , MAV_PARAM_TYPE_INT16 = 4 , MAV_PARAM_TYPE_UINT32 = 5 , MAV_PARAM_TYPE_INT32 = 6 , MAV_PARAM_TYPE_UINT64 = 7 , MAV_PARAM_TYPE_INT64 = 8 , MAV_PARAM_TYPE_REAL32 = 9 , MAV_PARAM_TYPE_REAL64 = 10 , } impl MavParamType { pub const DEFAULT : Self = Self :: MAV_PARAM_TYPE_UINT8 ; } impl Default for MavParamType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum FenceMitigate { FENCE_MITIGATE_UNKNOWN = 0 , FENCE_MITIGATE_NONE = 1 , FENCE_MITIGATE_VEL_LIMIT = 2 , } impl FenceMitigate { pub const DEFAULT : Self = Self :: FENCE_MITIGATE_UNKNOWN ; } impl Default for FenceMitigate { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidOperatorLocationType { MAV_ODID_OPERATOR_LOCATION_TYPE_TAKEOFF = 0 , MAV_ODID_OPERATOR_LOCATION_TYPE_LIVE_GNSS = 1 , MAV_ODID_OPERATOR_LOCATION_TYPE_FIXED = 2 , } impl MavOdidOperatorLocationType { pub const DEFAULT : Self = Self :: MAV_ODID_OPERATOR_LOCATION_TYPE_TAKEOFF ; } impl Default for MavOdidOperatorLocationType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavBatteryMode { MAV_BATTERY_MODE_UNKNOWN = 0 , MAV_BATTERY_MODE_AUTO_DISCHARGING = 1 , MAV_BATTERY_MODE_HOT_SWAP = 2 , } impl MavBatteryMode { pub const DEFAULT : Self = Self :: MAV_BATTERY_MODE_UNKNOWN ; } impl Default for MavBatteryMode { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum CameraZoomType { ZOOM_TYPE_STEP = 0 , ZOOM_TYPE_CONTINUOUS = 1 , ZOOM_TYPE_RANGE = 2 , ZOOM_TYPE_FOCAL_LENGTH = 3 , } impl CameraZoomType { pub const DEFAULT : Self = Self :: ZOOM_TYPE_STEP ; } impl Default for CameraZoomType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum AisNavStatus { UNDER_WAY = 0 , AIS_NAV_ANCHORED = 1 , AIS_NAV_UN_COMMANDED = 2 , AIS_NAV_RESTRICTED_MANOEUVERABILITY = 3 , AIS_NAV_DRAUGHT_CONSTRAINED = 4 , AIS_NAV_MOORED = 5 , AIS_NAV_AGROUND = 6 , AIS_NAV_FISHING = 7 , AIS_NAV_SAILING = 8 , AIS_NAV_RESERVED_HSC = 9 , AIS_NAV_RESERVED_WIG = 10 , AIS_NAV_RESERVED_1 = 11 , AIS_NAV_RESERVED_2 = 12 , AIS_NAV_RESERVED_3 = 13 , AIS_NAV_AIS_SART = 14 , AIS_NAV_UNKNOWN = 15 , } impl AisNavStatus { pub const DEFAULT : Self = Self :: UNDER_WAY ; } impl Default for AisNavStatus { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidIdType { MAV_ODID_ID_TYPE_NONE = 0 , MAV_ODID_ID_TYPE_SERIAL_NUMBER = 1 , MAV_ODID_ID_TYPE_CAA_REGISTRATION_ID = 2 , MAV_ODID_ID_TYPE_UTM_ASSIGNED_UUID = 3 , MAV_ODID_ID_TYPE_SPECIFIC_SESSION_ID = 4 , } impl MavOdidIdType { pub const DEFAULT : Self = Self :: MAV_ODID_ID_TYPE_NONE ; } impl Default for MavOdidIdType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavComponent { MAV_COMP_ID_ALL = 0 , MAV_COMP_ID_AUTOPILOT1 = 1 , MAV_COMP_ID_USER1 = 25 , MAV_COMP_ID_USER2 = 26 , MAV_COMP_ID_USER3 = 27 , MAV_COMP_ID_USER4 = 28 , MAV_COMP_ID_USER5 = 29 , MAV_COMP_ID_USER6 = 30 , MAV_COMP_ID_USER7 = 31 , MAV_COMP_ID_USER8 = 32 , MAV_COMP_ID_USER9 = 33 , MAV_COMP_ID_USER10 = 34 , MAV_COMP_ID_USER11 = 35 , MAV_COMP_ID_USER12 = 36 , MAV_COMP_ID_USER13 = 37 , MAV_COMP_ID_USER14 = 38 , MAV_COMP_ID_USER15 = 39 , MAV_COMP_ID_USER16 = 40 , MAV_COMP_ID_USER17 = 41 , MAV_COMP_ID_USER18 = 42 , MAV_COMP_ID_USER19 = 43 , MAV_COMP_ID_USER20 = 44 , MAV_COMP_ID_USER21 = 45 , MAV_COMP_ID_USER22 = 46 , MAV_COMP_ID_USER23 = 47 , MAV_COMP_ID_USER24 = 48 , MAV_COMP_ID_USER25 = 49 , MAV_COMP_ID_USER26 = 50 , MAV_COMP_ID_USER27 = 51 , MAV_COMP_ID_USER28 = 52 , MAV_COMP_ID_USER29 = 53 , MAV_COMP_ID_USER30 = 54 , MAV_COMP_ID_USER31 = 55 , MAV_COMP_ID_USER32 = 56 , MAV_COMP_ID_USER33 = 57 , MAV_COMP_ID_USER34 = 58 , MAV_COMP_ID_USER35 = 59 , MAV_COMP_ID_USER36 = 60 , MAV_COMP_ID_USER37 = 61 , MAV_COMP_ID_USER38 = 62 , MAV_COMP_ID_USER39 = 63 , MAV_COMP_ID_USER40 = 64 , MAV_COMP_ID_USER41 = 65 , MAV_COMP_ID_USER42 = 66 , MAV_COMP_ID_USER43 = 67 , MAV_COMP_ID_TELEMETRY_RADIO = 68 , MAV_COMP_ID_USER45 = 69 , MAV_COMP_ID_USER46 = 70 , MAV_COMP_ID_USER47 = 71 , MAV_COMP_ID_USER48 = 72 , MAV_COMP_ID_USER49 = 73 , MAV_COMP_ID_USER50 = 74 , MAV_COMP_ID_USER51 = 75 , MAV_COMP_ID_USER52 = 76 , MAV_COMP_ID_USER53 = 77 , MAV_COMP_ID_USER54 = 78 , MAV_COMP_ID_USER55 = 79 , MAV_COMP_ID_USER56 = 80 , MAV_COMP_ID_USER57 = 81 , MAV_COMP_ID_USER58 = 82 , MAV_COMP_ID_USER59 = 83 , MAV_COMP_ID_USER60 = 84 , MAV_COMP_ID_USER61 = 85 , MAV_COMP_ID_USER62 = 86 , MAV_COMP_ID_USER63 = 87 , MAV_COMP_ID_USER64 = 88 , MAV_COMP_ID_USER65 = 89 , MAV_COMP_ID_USER66 = 90 , MAV_COMP_ID_USER67 = 91 , MAV_COMP_ID_USER68 = 92 , MAV_COMP_ID_USER69 = 93 , MAV_COMP_ID_USER70 = 94 , MAV_COMP_ID_USER71 = 95 , MAV_COMP_ID_USER72 = 96 , MAV_COMP_ID_USER73 = 97 , MAV_COMP_ID_USER74 = 98 , MAV_COMP_ID_USER75 = 99 , MAV_COMP_ID_CAMERA = 100 , MAV_COMP_ID_CAMERA2 = 101 , MAV_COMP_ID_CAMERA3 = 102 , MAV_COMP_ID_CAMERA4 = 103 , MAV_COMP_ID_CAMERA5 = 104 , MAV_COMP_ID_CAMERA6 = 105 , MAV_COMP_ID_SERVO1 = 140 , MAV_COMP_ID_SERVO2 = 141 , MAV_COMP_ID_SERVO3 = 142 , MAV_COMP_ID_SERVO4 = 143 , MAV_COMP_ID_SERVO5 = 144 , MAV_COMP_ID_SERVO6 = 145 , MAV_COMP_ID_SERVO7 = 146 , MAV_COMP_ID_SERVO8 = 147 , MAV_COMP_ID_SERVO9 = 148 , MAV_COMP_ID_SERVO10 = 149 , MAV_COMP_ID_SERVO11 = 150 , MAV_COMP_ID_SERVO12 = 151 , MAV_COMP_ID_SERVO13 = 152 , MAV_COMP_ID_SERVO14 = 153 , MAV_COMP_ID_GIMBAL = 154 , MAV_COMP_ID_LOG = 155 , MAV_COMP_ID_ADSB = 156 , MAV_COMP_ID_OSD = 157 , MAV_COMP_ID_PERIPHERAL = 158 , MAV_COMP_ID_QX1_GIMBAL = 159 , MAV_COMP_ID_FLARM = 160 , MAV_COMP_ID_PARACHUTE = 161 , MAV_COMP_ID_WINCH = 169 , MAV_COMP_ID_GIMBAL2 = 171 , MAV_COMP_ID_GIMBAL3 = 172 , MAV_COMP_ID_GIMBAL4 = 173 , MAV_COMP_ID_GIMBAL5 = 174 , MAV_COMP_ID_GIMBAL6 = 175 , MAV_COMP_ID_BATTERY = 180 , MAV_COMP_ID_BATTERY2 = 181 , MAV_COMP_ID_MAVCAN = 189 , MAV_COMP_ID_MISSIONPLANNER = 190 , MAV_COMP_ID_ONBOARD_COMPUTER = 191 , MAV_COMP_ID_ONBOARD_COMPUTER2 = 192 , MAV_COMP_ID_ONBOARD_COMPUTER3 = 193 , MAV_COMP_ID_ONBOARD_COMPUTER4 = 194 , MAV_COMP_ID_PATHPLANNER = 195 , MAV_COMP_ID_OBSTACLE_AVOIDANCE = 196 , MAV_COMP_ID_VISUAL_INERTIAL_ODOMETRY = 197 , MAV_COMP_ID_PAIRING_MANAGER = 198 , MAV_COMP_ID_IMU = 200 , MAV_COMP_ID_IMU_2 = 201 , MAV_COMP_ID_IMU_3 = 202 , MAV_COMP_ID_GPS = 220 , MAV_COMP_ID_GPS2 = 221 , MAV_COMP_ID_ODID_TXRX_1 = 236 , MAV_COMP_ID_ODID_TXRX_2 = 237 , MAV_COMP_ID_ODID_TXRX_3 = 238 , MAV_COMP_ID_UDP_BRIDGE = 240 , MAV_COMP_ID_UART_BRIDGE = 241 , MAV_COMP_ID_TUNNEL_NODE = 242 , MAV_COMP_ID_SYSTEM_CONTROL = 250 , } impl MavComponent { pub const DEFAULT : Self = Self :: MAV_COMP_ID_ALL ; } impl Default for MavComponent { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum RcType { RC_TYPE_SPEKTRUM_DSM2 = 0 , RC_TYPE_SPEKTRUM_DSMX = 1 , } impl RcType { pub const DEFAULT : Self = Self :: RC_TYPE_SPEKTRUM_DSM2 ; } impl Default for RcType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum WifiConfigApResponse { WIFI_CONFIG_AP_RESPONSE_UNDEFINED = 0 , WIFI_CONFIG_AP_RESPONSE_ACCEPTED = 1 , WIFI_CONFIG_AP_RESPONSE_REJECTED = 2 , WIFI_CONFIG_AP_RESPONSE_MODE_ERROR = 3 , WIFI_CONFIG_AP_RESPONSE_SSID_ERROR = 4 , WIFI_CONFIG_AP_RESPONSE_PASSWORD_ERROR = 5 , } impl WifiConfigApResponse { pub const DEFAULT : Self = Self :: WIFI_CONFIG_AP_RESPONSE_UNDEFINED ; } impl Default for WifiConfigApResponse { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum FenceBreach { FENCE_BREACH_NONE = 0 , FENCE_BREACH_MINALT = 1 , FENCE_BREACH_MAXALT = 2 , FENCE_BREACH_BOUNDARY = 3 , } impl FenceBreach { pub const DEFAULT : Self = Self :: FENCE_BREACH_NONE ; } impl Default for FenceBreach { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidVerAcc { MAV_ODID_VER_ACC_UNKNOWN = 0 , MAV_ODID_VER_ACC_150_METER = 1 , MAV_ODID_VER_ACC_45_METER = 2 , MAV_ODID_VER_ACC_25_METER = 3 , MAV_ODID_VER_ACC_10_METER = 4 , MAV_ODID_VER_ACC_3_METER = 5 , MAV_ODID_VER_ACC_1_METER = 6 , } impl MavOdidVerAcc { pub const DEFAULT : Self = Self :: MAV_ODID_VER_ACC_UNKNOWN ; } impl Default for MavOdidVerAcc { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum UavionixAdsbOutCfgAircraftSize { UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_NO_DATA = 0 , UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L15M_W23M = 1 , UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L25M_W28P5M = 2 , UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L25_34M = 3 , UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L35_33M = 4 , UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L35_38M = 5 , UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L45_39P5M = 6 , UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L45_45M = 7 , UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L55_45M = 8 , UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L55_52M = 9 , UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L65_59P5M = 10 , UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L65_67M = 11 , UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L75_W72P5M = 12 , UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L75_W80M = 13 , UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L85_W80M = 14 , UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_L85_W90M = 15 , } impl UavionixAdsbOutCfgAircraftSize { pub const DEFAULT : Self = Self :: UAVIONIX_ADSB_OUT_CFG_AIRCRAFT_SIZE_NO_DATA ; } impl Default for UavionixAdsbOutCfgAircraftSize { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum CompMetadataType { COMP_METADATA_TYPE_GENERAL = 0 , COMP_METADATA_TYPE_PARAMETER = 1 , COMP_METADATA_TYPE_COMMANDS = 2 , COMP_METADATA_TYPE_PERIPHERALS = 3 , COMP_METADATA_TYPE_EVENTS = 4 , COMP_METADATA_TYPE_ACTUATORS = 5 , } impl CompMetadataType { pub const DEFAULT : Self = Self :: COMP_METADATA_TYPE_GENERAL ; } impl Default for CompMetadataType { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct AttitudeTargetTypemask : u8 { const ATTITUDE_TARGET_TYPEMASK_BODY_ROLL_RATE_IGNORE = 1 ; const ATTITUDE_TARGET_TYPEMASK_BODY_PITCH_RATE_IGNORE = 2 ; const ATTITUDE_TARGET_TYPEMASK_BODY_YAW_RATE_IGNORE = 4 ; const ATTITUDE_TARGET_TYPEMASK_THRUST_BODY_SET = 32 ; const ATTITUDE_TARGET_TYPEMASK_THROTTLE_IGNORE = 64 ; const ATTITUDE_TARGET_TYPEMASK_ATTITUDE_IGNORE = 128 ; } } impl AttitudeTargetTypemask { pub const DEFAULT : Self = Self :: ATTITUDE_TARGET_TYPEMASK_BODY_ROLL_RATE_IGNORE ; } impl Default for AttitudeTargetTypemask { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GimbalManagerCapFlags : u32 { const GIMBAL_MANAGER_CAP_FLAGS_HAS_RETRACT = 1 ; const GIMBAL_MANAGER_CAP_FLAGS_HAS_NEUTRAL = 2 ; const GIMBAL_MANAGER_CAP_FLAGS_HAS_ROLL_AXIS = 4 ; const GIMBAL_MANAGER_CAP_FLAGS_HAS_ROLL_FOLLOW = 8 ; const GIMBAL_MANAGER_CAP_FLAGS_HAS_ROLL_LOCK = 16 ; const GIMBAL_MANAGER_CAP_FLAGS_HAS_PITCH_AXIS = 32 ; const GIMBAL_MANAGER_CAP_FLAGS_HAS_PITCH_FOLLOW = 64 ; const GIMBAL_MANAGER_CAP_FLAGS_HAS_PITCH_LOCK = 128 ; const GIMBAL_MANAGER_CAP_FLAGS_HAS_YAW_AXIS = 256 ; const GIMBAL_MANAGER_CAP_FLAGS_HAS_YAW_FOLLOW = 512 ; const GIMBAL_MANAGER_CAP_FLAGS_HAS_YAW_LOCK = 1024 ; const GIMBAL_MANAGER_CAP_FLAGS_SUPPORTS_INFINITE_YAW = 2048 ; const GIMBAL_MANAGER_CAP_FLAGS_SUPPORTS_YAW_IN_EARTH_FRAME = 4096 ; const GIMBAL_MANAGER_CAP_FLAGS_HAS_RC_INPUTS = 8192 ; const GIMBAL_MANAGER_CAP_FLAGS_CAN_POINT_LOCATION_LOCAL = 65536 ; const GIMBAL_MANAGER_CAP_FLAGS_CAN_POINT_LOCATION_GLOBAL = 131072 ; } } impl GimbalManagerCapFlags { pub const DEFAULT : Self = Self :: GIMBAL_MANAGER_CAP_FLAGS_HAS_RETRACT ; } impl Default for GimbalManagerCapFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum CellularConfigResponse { CELLULAR_CONFIG_RESPONSE_ACCEPTED = 0 , CELLULAR_CONFIG_RESPONSE_APN_ERROR = 1 , CELLULAR_CONFIG_RESPONSE_PIN_ERROR = 2 , CELLULAR_CONFIG_RESPONSE_REJECTED = 3 , CELLULAR_CONFIG_BLOCKED_PUK_REQUIRED = 4 , } impl CellularConfigResponse { pub const DEFAULT : Self = Self :: CELLULAR_CONFIG_RESPONSE_ACCEPTED ; } impl Default for CellularConfigResponse { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum LandingTargetType { LANDING_TARGET_TYPE_LIGHT_BEACON = 0 , LANDING_TARGET_TYPE_RADIO_BEACON = 1 , LANDING_TARGET_TYPE_VISION_FIDUCIAL = 2 , LANDING_TARGET_TYPE_VISION_OTHER = 3 , } impl LandingTargetType { pub const DEFAULT : Self = Self :: LANDING_TARGET_TYPE_LIGHT_BEACON ; } impl Default for LandingTargetType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavDistanceSensor { MAV_DISTANCE_SENSOR_LASER = 0 , MAV_DISTANCE_SENSOR_ULTRASOUND = 1 , MAV_DISTANCE_SENSOR_INFRARED = 2 , MAV_DISTANCE_SENSOR_RADAR = 3 , MAV_DISTANCE_SENSOR_UNKNOWN = 4 , } impl MavDistanceSensor { pub const DEFAULT : Self = Self :: MAV_DISTANCE_SENSOR_LASER ; } impl Default for MavDistanceSensor { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum SetFocusType { FOCUS_TYPE_STEP = 0 , FOCUS_TYPE_CONTINUOUS = 1 , FOCUS_TYPE_RANGE = 2 , FOCUS_TYPE_METERS = 3 , FOCUS_TYPE_AUTO = 4 , FOCUS_TYPE_AUTO_SINGLE = 5 , FOCUS_TYPE_AUTO_CONTINUOUS = 6 , } impl SetFocusType { pub const DEFAULT : Self = Self :: FOCUS_TYPE_STEP ; } impl Default for SetFocusType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum CameraMode { CAMERA_MODE_IMAGE = 0 , CAMERA_MODE_VIDEO = 1 , CAMERA_MODE_IMAGE_SURVEY = 2 , } impl CameraMode { pub const DEFAULT : Self = Self :: CAMERA_MODE_IMAGE ; } impl Default for CameraMode { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct EscFailureFlags : u16 { const ESC_FAILURE_NONE = 0 ; const ESC_FAILURE_OVER_CURRENT = 1 ; const ESC_FAILURE_OVER_VOLTAGE = 2 ; const ESC_FAILURE_OVER_TEMPERATURE = 4 ; const ESC_FAILURE_OVER_RPM = 8 ; const ESC_FAILURE_INCONSISTENT_CMD = 16 ; const ESC_FAILURE_MOTOR_STUCK = 32 ; const ESC_FAILURE_GENERIC = 64 ; } } impl EscFailureFlags { pub const DEFAULT : Self = Self :: ESC_FAILURE_NONE ; } impl Default for EscFailureFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum CellularStatusFlag { CELLULAR_STATUS_FLAG_UNKNOWN = 0 , CELLULAR_STATUS_FLAG_FAILED = 1 , CELLULAR_STATUS_FLAG_INITIALIZING = 2 , CELLULAR_STATUS_FLAG_LOCKED = 3 , CELLULAR_STATUS_FLAG_DISABLED = 4 , CELLULAR_STATUS_FLAG_DISABLING = 5 , CELLULAR_STATUS_FLAG_ENABLING = 6 , CELLULAR_STATUS_FLAG_ENABLED = 7 , CELLULAR_STATUS_FLAG_SEARCHING = 8 , CELLULAR_STATUS_FLAG_REGISTERED = 9 , CELLULAR_STATUS_FLAG_DISCONNECTING = 10 , CELLULAR_STATUS_FLAG_CONNECTING = 11 , CELLULAR_STATUS_FLAG_CONNECTED = 12 , } impl CellularStatusFlag { pub const DEFAULT : Self = Self :: CELLULAR_STATUS_FLAG_UNKNOWN ; } impl Default for CellularStatusFlag { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct TuneFormat : u32 { const TUNE_FORMAT_QBASIC1_1 = 1 ; const TUNE_FORMAT_MML_MODERN = 2 ; } } impl TuneFormat { pub const DEFAULT : Self = Self :: TUNE_FORMAT_QBASIC1_1 ; } impl Default for TuneFormat { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavFrame { MAV_FRAME_GLOBAL = 0 , MAV_FRAME_LOCAL_NED = 1 , MAV_FRAME_MISSION = 2 , MAV_FRAME_GLOBAL_RELATIVE_ALT = 3 , MAV_FRAME_LOCAL_ENU = 4 , MAV_FRAME_GLOBAL_INT = 5 , MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6 , MAV_FRAME_LOCAL_OFFSET_NED = 7 , MAV_FRAME_BODY_NED = 8 , MAV_FRAME_BODY_OFFSET_NED = 9 , MAV_FRAME_GLOBAL_TERRAIN_ALT = 10 , MAV_FRAME_GLOBAL_TERRAIN_ALT_INT = 11 , MAV_FRAME_BODY_FRD = 12 , MAV_FRAME_RESERVED_13 = 13 , MAV_FRAME_RESERVED_14 = 14 , MAV_FRAME_RESERVED_15 = 15 , MAV_FRAME_RESERVED_16 = 16 , MAV_FRAME_RESERVED_17 = 17 , MAV_FRAME_RESERVED_18 = 18 , MAV_FRAME_RESERVED_19 = 19 , MAV_FRAME_LOCAL_FRD = 20 , MAV_FRAME_LOCAL_FLU = 21 , } impl MavFrame { pub const DEFAULT : Self = Self :: MAV_FRAME_GLOBAL ; } impl Default for MavFrame { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum CameraTrackingStatusFlags { CAMERA_TRACKING_STATUS_FLAGS_IDLE = 0 , CAMERA_TRACKING_STATUS_FLAGS_ACTIVE = 1 , CAMERA_TRACKING_STATUS_FLAGS_ERROR = 2 , } impl CameraTrackingStatusFlags { pub const DEFAULT : Self = Self :: CAMERA_TRACKING_STATUS_FLAGS_IDLE ; } impl Default for CameraTrackingStatusFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum AutotuneAxis { AUTOTUNE_AXIS_DEFAULT = 0 , AUTOTUNE_AXIS_ROLL = 1 , AUTOTUNE_AXIS_PITCH = 2 , AUTOTUNE_AXIS_YAW = 4 , } impl AutotuneAxis { pub const DEFAULT : Self = Self :: AUTOTUNE_AXIS_DEFAULT ; } impl Default for AutotuneAxis { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavTunnelPayloadType { MAV_TUNNEL_PAYLOAD_TYPE_UNKNOWN = 0 , MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED0 = 200 , MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED1 = 201 , MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED2 = 202 , MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED3 = 203 , MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED4 = 204 , MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED5 = 205 , MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED6 = 206 , MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED7 = 207 , MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED8 = 208 , MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED9 = 209 , } impl MavTunnelPayloadType { pub const DEFAULT : Self = Self :: MAV_TUNNEL_PAYLOAD_TYPE_UNKNOWN ; } impl Default for MavTunnelPayloadType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidSpeedAcc { MAV_ODID_SPEED_ACC_UNKNOWN = 0 , MAV_ODID_SPEED_ACC_10_METERS_PER_SECOND = 1 , MAV_ODID_SPEED_ACC_3_METERS_PER_SECOND = 2 , MAV_ODID_SPEED_ACC_1_METERS_PER_SECOND = 3 , MAV_ODID_SPEED_ACC_0_3_METERS_PER_SECOND = 4 , } impl MavOdidSpeedAcc { pub const DEFAULT : Self = Self :: MAV_ODID_SPEED_ACC_UNKNOWN ; } impl Default for MavOdidSpeedAcc { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavGoto { MAV_GOTO_DO_HOLD = 0 , MAV_GOTO_DO_CONTINUE = 1 , MAV_GOTO_HOLD_AT_CURRENT_POSITION = 2 , MAV_GOTO_HOLD_AT_SPECIFIED_POSITION = 3 , } impl MavGoto { pub const DEFAULT : Self = Self :: MAV_GOTO_DO_HOLD ; } impl Default for MavGoto { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum ParamAck { PARAM_ACK_ACCEPTED = 0 , PARAM_ACK_VALUE_UNSUPPORTED = 1 , PARAM_ACK_FAILED = 2 , PARAM_ACK_IN_PROGRESS = 3 , } impl ParamAck { pub const DEFAULT : Self = Self :: PARAM_ACK_ACCEPTED ; } impl Default for ParamAck { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct AisFlags : u16 { const AIS_FLAGS_POSITION_ACCURACY = 1 ; const AIS_FLAGS_VALID_COG = 2 ; const AIS_FLAGS_VALID_VELOCITY = 4 ; const AIS_FLAGS_HIGH_VELOCITY = 8 ; const AIS_FLAGS_VALID_TURN_RATE = 16 ; const AIS_FLAGS_TURN_RATE_SIGN_ONLY = 32 ; const AIS_FLAGS_VALID_DIMENSIONS = 64 ; const AIS_FLAGS_LARGE_BOW_DIMENSION = 128 ; const AIS_FLAGS_LARGE_STERN_DIMENSION = 256 ; const AIS_FLAGS_LARGE_PORT_DIMENSION = 512 ; const AIS_FLAGS_LARGE_STARBOARD_DIMENSION = 1024 ; const AIS_FLAGS_VALID_CALLSIGN = 2048 ; const AIS_FLAGS_VALID_NAME = 4096 ; } } impl AisFlags { pub const DEFAULT : Self = Self :: AIS_FLAGS_POSITION_ACCURACY ; } impl Default for AisFlags { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CameraCapFlags : u32 { const CAMERA_CAP_FLAGS_CAPTURE_VIDEO = 1 ; const CAMERA_CAP_FLAGS_CAPTURE_IMAGE = 2 ; const CAMERA_CAP_FLAGS_HAS_MODES = 4 ; const CAMERA_CAP_FLAGS_CAN_CAPTURE_IMAGE_IN_VIDEO_MODE = 8 ; const CAMERA_CAP_FLAGS_CAN_CAPTURE_VIDEO_IN_IMAGE_MODE = 16 ; const CAMERA_CAP_FLAGS_HAS_IMAGE_SURVEY_MODE = 32 ; const CAMERA_CAP_FLAGS_HAS_BASIC_ZOOM = 64 ; const CAMERA_CAP_FLAGS_HAS_BASIC_FOCUS = 128 ; const CAMERA_CAP_FLAGS_HAS_VIDEO_STREAM = 256 ; const CAMERA_CAP_FLAGS_HAS_TRACKING_POINT = 512 ; const CAMERA_CAP_FLAGS_HAS_TRACKING_RECTANGLE = 1024 ; const CAMERA_CAP_FLAGS_HAS_TRACKING_GEO_STATUS = 2048 ; } } impl CameraCapFlags { pub const DEFAULT : Self = Self :: CAMERA_CAP_FLAGS_CAPTURE_VIDEO ; } impl Default for CameraCapFlags { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HlFailureFlag : u16 { const HL_FAILURE_FLAG_GPS = 1 ; const HL_FAILURE_FLAG_DIFFERENTIAL_PRESSURE = 2 ; const HL_FAILURE_FLAG_ABSOLUTE_PRESSURE = 4 ; const HL_FAILURE_FLAG_3D_ACCEL = 8 ; const HL_FAILURE_FLAG_3D_GYRO = 16 ; const HL_FAILURE_FLAG_3D_MAG = 32 ; const HL_FAILURE_FLAG_TERRAIN = 64 ; const HL_FAILURE_FLAG_BATTERY = 128 ; const HL_FAILURE_FLAG_RC_RECEIVER = 256 ; const HL_FAILURE_FLAG_OFFBOARD_LINK = 512 ; const HL_FAILURE_FLAG_ENGINE = 1024 ; const HL_FAILURE_FLAG_GEOFENCE = 2048 ; const HL_FAILURE_FLAG_ESTIMATOR = 4096 ; const HL_FAILURE_FLAG_MISSION = 8192 ; } } impl HlFailureFlag { pub const DEFAULT : Self = Self :: HL_FAILURE_FLAG_GPS ; } impl Default for HlFailureFlag { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavCollisionSrc { MAV_COLLISION_SRC_ADSB = 0 , MAV_COLLISION_SRC_MAVLINK_GPS_GLOBAL_INT = 1 , } impl MavCollisionSrc { pub const DEFAULT : Self = Self :: MAV_COLLISION_SRC_ADSB ; } impl Default for MavCollisionSrc { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavFtpErr { MAV_FTP_ERR_NONE = 0 , MAV_FTP_ERR_FAIL = 1 , MAV_FTP_ERR_FAILERRNO = 2 , MAV_FTP_ERR_INVALIDDATASIZE = 3 , MAV_FTP_ERR_INVALIDSESSION = 4 , MAV_FTP_ERR_NOSESSIONSAVAILABLE = 5 , MAV_FTP_ERR_EOF = 6 , MAV_FTP_ERR_UNKNOWNCOMMAND = 7 , MAV_FTP_ERR_FILEEXISTS = 8 , MAV_FTP_ERR_FILEPROTECTED = 9 , MAV_FTP_ERR_FILENOTFOUND = 10 , } impl MavFtpErr { pub const DEFAULT : Self = Self :: MAV_FTP_ERR_NONE ; } impl Default for MavFtpErr { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum ParachuteAction { PARACHUTE_DISABLE = 0 , PARACHUTE_ENABLE = 1 , PARACHUTE_RELEASE = 2 , } impl ParachuteAction { pub const DEFAULT : Self = Self :: PARACHUTE_DISABLE ; } impl Default for ParachuteAction { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidDescType { MAV_ODID_DESC_TYPE_TEXT = 0 , MAV_ODID_DESC_TYPE_EMERGENCY = 1 , MAV_ODID_DESC_TYPE_EXTENDED_STATUS = 2 , } impl MavOdidDescType { pub const DEFAULT : Self = Self :: MAV_ODID_DESC_TYPE_TEXT ; } impl Default for MavOdidDescType { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct UavionixAdsbOutDynamicState : u16 { const UAVIONIX_ADSB_OUT_DYNAMIC_STATE_INTENT_CHANGE = 1 ; const UAVIONIX_ADSB_OUT_DYNAMIC_STATE_AUTOPILOT_ENABLED = 2 ; const UAVIONIX_ADSB_OUT_DYNAMIC_STATE_NICBARO_CROSSCHECKED = 4 ; const UAVIONIX_ADSB_OUT_DYNAMIC_STATE_ON_GROUND = 8 ; const UAVIONIX_ADSB_OUT_DYNAMIC_STATE_IDENT = 16 ; } } impl UavionixAdsbOutDynamicState { pub const DEFAULT : Self = Self :: UAVIONIX_ADSB_OUT_DYNAMIC_STATE_INTENT_CHANGE ; } impl Default for UavionixAdsbOutDynamicState { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavMountMode { MAV_MOUNT_MODE_RETRACT = 0 , MAV_MOUNT_MODE_NEUTRAL = 1 , MAV_MOUNT_MODE_MAVLINK_TARGETING = 2 , MAV_MOUNT_MODE_RC_TARGETING = 3 , MAV_MOUNT_MODE_GPS_POINT = 4 , MAV_MOUNT_MODE_SYSID_TARGET = 5 , MAV_MOUNT_MODE_HOME_LOCATION = 6 , } impl MavMountMode { pub const DEFAULT : Self = Self :: MAV_MOUNT_MODE_RETRACT ; } impl Default for MavMountMode { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavBatteryChargeState { MAV_BATTERY_CHARGE_STATE_UNDEFINED = 0 , MAV_BATTERY_CHARGE_STATE_OK = 1 , MAV_BATTERY_CHARGE_STATE_LOW = 2 , MAV_BATTERY_CHARGE_STATE_CRITICAL = 3 , MAV_BATTERY_CHARGE_STATE_EMERGENCY = 4 , MAV_BATTERY_CHARGE_STATE_FAILED = 5 , MAV_BATTERY_CHARGE_STATE_UNHEALTHY = 6 , MAV_BATTERY_CHARGE_STATE_CHARGING = 7 , } impl MavBatteryChargeState { pub const DEFAULT : Self = Self :: MAV_BATTERY_CHARGE_STATE_UNDEFINED ; } impl Default for MavBatteryChargeState { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavArmAuthDeniedReason { MAV_ARM_AUTH_DENIED_REASON_GENERIC = 0 , MAV_ARM_AUTH_DENIED_REASON_NONE = 1 , MAV_ARM_AUTH_DENIED_REASON_INVALID_WAYPOINT = 2 , MAV_ARM_AUTH_DENIED_REASON_TIMEOUT = 3 , MAV_ARM_AUTH_DENIED_REASON_AIRSPACE_IN_USE = 4 , MAV_ARM_AUTH_DENIED_REASON_BAD_WEATHER = 5 , } impl MavArmAuthDeniedReason { pub const DEFAULT : Self = Self :: MAV_ARM_AUTH_DENIED_REASON_GENERIC ; } impl Default for MavArmAuthDeniedReason { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MavProtocolCapability : u64 { const MAV_PROTOCOL_CAPABILITY_MISSION_FLOAT = 1 ; const MAV_PROTOCOL_CAPABILITY_PARAM_FLOAT = 2 ; const MAV_PROTOCOL_CAPABILITY_MISSION_INT = 4 ; const MAV_PROTOCOL_CAPABILITY_COMMAND_INT = 8 ; const MAV_PROTOCOL_CAPABILITY_PARAM_ENCODE_BYTEWISE = 16 ; const MAV_PROTOCOL_CAPABILITY_FTP = 32 ; const MAV_PROTOCOL_CAPABILITY_SET_ATTITUDE_TARGET = 64 ; const MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_LOCAL_NED = 128 ; const MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_GLOBAL_INT = 256 ; const MAV_PROTOCOL_CAPABILITY_TERRAIN = 512 ; const MAV_PROTOCOL_CAPABILITY_SET_ACTUATOR_TARGET = 1024 ; const MAV_PROTOCOL_CAPABILITY_FLIGHT_TERMINATION = 2048 ; const MAV_PROTOCOL_CAPABILITY_COMPASS_CALIBRATION = 4096 ; const MAV_PROTOCOL_CAPABILITY_MAVLINK2 = 8192 ; const MAV_PROTOCOL_CAPABILITY_MISSION_FENCE = 16384 ; const MAV_PROTOCOL_CAPABILITY_MISSION_RALLY = 32768 ; const MAV_PROTOCOL_CAPABILITY_RESERVED2 = 65536 ; const MAV_PROTOCOL_CAPABILITY_PARAM_ENCODE_C_CAST = 131072 ; } } impl MavProtocolCapability { pub const DEFAULT : Self = Self :: MAV_PROTOCOL_CAPABILITY_MISSION_FLOAT ; } impl Default for MavProtocolCapability { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidClassificationType { MAV_ODID_CLASSIFICATION_TYPE_UNDECLARED = 0 , MAV_ODID_CLASSIFICATION_TYPE_EU = 1 , } impl MavOdidClassificationType { pub const DEFAULT : Self = Self :: MAV_ODID_CLASSIFICATION_TYPE_UNDECLARED ; } impl Default for MavOdidClassificationType { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct AdsbFlags : u16 { const ADSB_FLAGS_VALID_COORDS = 1 ; const ADSB_FLAGS_VALID_ALTITUDE = 2 ; const ADSB_FLAGS_VALID_HEADING = 4 ; const ADSB_FLAGS_VALID_VELOCITY = 8 ; const ADSB_FLAGS_VALID_CALLSIGN = 16 ; const ADSB_FLAGS_VALID_SQUAWK = 32 ; const ADSB_FLAGS_SIMULATED = 64 ; const ADSB_FLAGS_VERTICAL_VELOCITY_VALID = 128 ; const ADSB_FLAGS_BARO_VALID = 256 ; const ADSB_FLAGS_SOURCE_UAT = 32768 ; } } impl AdsbFlags { pub const DEFAULT : Self = Self :: ADSB_FLAGS_VALID_COORDS ; } impl Default for AdsbFlags { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct UavionixAdsbRfHealth : u8 { const UAVIONIX_ADSB_RF_HEALTH_INITIALIZING = 0 ; const UAVIONIX_ADSB_RF_HEALTH_OK = 1 ; const UAVIONIX_ADSB_RF_HEALTH_FAIL_TX = 2 ; const UAVIONIX_ADSB_RF_HEALTH_FAIL_RX = 16 ; } } impl UavionixAdsbRfHealth { pub const DEFAULT : Self = Self :: UAVIONIX_ADSB_RF_HEALTH_INITIALIZING ; } impl Default for UavionixAdsbRfHealth { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum OrbitYawBehaviour { ORBIT_YAW_BEHAVIOUR_HOLD_FRONT_TO_CIRCLE_CENTER = 0 , ORBIT_YAW_BEHAVIOUR_HOLD_INITIAL_HEADING = 1 , ORBIT_YAW_BEHAVIOUR_UNCONTROLLED = 2 , ORBIT_YAW_BEHAVIOUR_HOLD_FRONT_TANGENT_TO_CIRCLE = 3 , ORBIT_YAW_BEHAVIOUR_RC_CONTROLLED = 4 , } impl OrbitYawBehaviour { pub const DEFAULT : Self = Self :: ORBIT_YAW_BEHAVIOUR_HOLD_FRONT_TO_CIRCLE_CENTER ; } impl Default for OrbitYawBehaviour { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HilSensorUpdatedFlags : u32 { const HIL_SENSOR_UPDATED_NONE = 0 ; const HIL_SENSOR_UPDATED_XACC = 1 ; const HIL_SENSOR_UPDATED_YACC = 2 ; const HIL_SENSOR_UPDATED_ZACC = 4 ; const HIL_SENSOR_UPDATED_XGYRO = 8 ; const HIL_SENSOR_UPDATED_YGYRO = 16 ; const HIL_SENSOR_UPDATED_ZGYRO = 32 ; const HIL_SENSOR_UPDATED_XMAG = 64 ; const HIL_SENSOR_UPDATED_YMAG = 128 ; const HIL_SENSOR_UPDATED_ZMAG = 256 ; const HIL_SENSOR_UPDATED_ABS_PRESSURE = 512 ; const HIL_SENSOR_UPDATED_DIFF_PRESSURE = 1024 ; const HIL_SENSOR_UPDATED_PRESSURE_ALT = 2048 ; const HIL_SENSOR_UPDATED_TEMPERATURE = 4096 ; const HIL_SENSOR_UPDATED_RESET = 2147483648 ; } } impl HilSensorUpdatedFlags { pub const DEFAULT : Self = Self :: HIL_SENSOR_UPDATED_NONE ; } impl Default for HilSensorUpdatedFlags { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MavEventCurrentSequenceFlags : u8 { const MAV_EVENT_CURRENT_SEQUENCE_FLAGS_RESET = 1 ; } } impl MavEventCurrentSequenceFlags { pub const DEFAULT : Self = Self :: MAV_EVENT_CURRENT_SEQUENCE_FLAGS_RESET ; } impl Default for MavEventCurrentSequenceFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavlinkDataStreamType { MAVLINK_DATA_STREAM_IMG_JPEG = 0 , MAVLINK_DATA_STREAM_IMG_BMP = 1 , MAVLINK_DATA_STREAM_IMG_RAW8U = 2 , MAVLINK_DATA_STREAM_IMG_RAW32U = 3 , MAVLINK_DATA_STREAM_IMG_PGM = 4 , MAVLINK_DATA_STREAM_IMG_PNG = 5 , } impl MavlinkDataStreamType { pub const DEFAULT : Self = Self :: MAVLINK_DATA_STREAM_IMG_JPEG ; } impl Default for MavlinkDataStreamType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavLandedState { MAV_LANDED_STATE_UNDEFINED = 0 , MAV_LANDED_STATE_ON_GROUND = 1 , MAV_LANDED_STATE_IN_AIR = 2 , MAV_LANDED_STATE_TAKEOFF = 3 , MAV_LANDED_STATE_LANDING = 4 , } impl MavLandedState { pub const DEFAULT : Self = Self :: MAV_LANDED_STATE_UNDEFINED ; } impl Default for MavLandedState { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum CameraTrackingTargetData { CAMERA_TRACKING_TARGET_DATA_NONE = 0 , CAMERA_TRACKING_TARGET_DATA_EMBEDDED = 1 , CAMERA_TRACKING_TARGET_DATA_RENDERED = 2 , CAMERA_TRACKING_TARGET_DATA_IN_STATUS = 4 , } impl CameraTrackingTargetData { pub const DEFAULT : Self = Self :: CAMERA_TRACKING_TARGET_DATA_NONE ; } impl Default for CameraTrackingTargetData { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavBatteryFault { MAV_BATTERY_FAULT_DEEP_DISCHARGE = 1 , MAV_BATTERY_FAULT_SPIKES = 2 , MAV_BATTERY_FAULT_CELL_FAIL = 4 , MAV_BATTERY_FAULT_OVER_CURRENT = 8 , MAV_BATTERY_FAULT_OVER_TEMPERATURE = 16 , MAV_BATTERY_FAULT_UNDER_TEMPERATURE = 32 , MAV_BATTERY_FAULT_INCOMPATIBLE_VOLTAGE = 64 , MAV_BATTERY_FAULT_INCOMPATIBLE_FIRMWARE = 128 , BATTERY_FAULT_INCOMPATIBLE_CELLS_CONFIGURATION = 256 , } impl MavBatteryFault { pub const DEFAULT : Self = Self :: MAV_BATTERY_FAULT_DEEP_DISCHARGE ; } impl Default for MavBatteryFault { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum SerialControlDev { SERIAL_CONTROL_DEV_TELEM1 = 0 , SERIAL_CONTROL_DEV_TELEM2 = 1 , SERIAL_CONTROL_DEV_GPS1 = 2 , SERIAL_CONTROL_DEV_GPS2 = 3 , SERIAL_CONTROL_DEV_SHELL = 10 , SERIAL_CONTROL_SERIAL0 = 100 , SERIAL_CONTROL_SERIAL1 = 101 , SERIAL_CONTROL_SERIAL2 = 102 , SERIAL_CONTROL_SERIAL3 = 103 , SERIAL_CONTROL_SERIAL4 = 104 , SERIAL_CONTROL_SERIAL5 = 105 , SERIAL_CONTROL_SERIAL6 = 106 , SERIAL_CONTROL_SERIAL7 = 107 , SERIAL_CONTROL_SERIAL8 = 108 , SERIAL_CONTROL_SERIAL9 = 109 , } impl SerialControlDev { pub const DEFAULT : Self = Self :: SERIAL_CONTROL_DEV_TELEM1 ; } impl Default for SerialControlDev { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PositionTargetTypemask : u16 { const POSITION_TARGET_TYPEMASK_X_IGNORE = 1 ; const POSITION_TARGET_TYPEMASK_Y_IGNORE = 2 ; const POSITION_TARGET_TYPEMASK_Z_IGNORE = 4 ; const POSITION_TARGET_TYPEMASK_VX_IGNORE = 8 ; const POSITION_TARGET_TYPEMASK_VY_IGNORE = 16 ; const POSITION_TARGET_TYPEMASK_VZ_IGNORE = 32 ; const POSITION_TARGET_TYPEMASK_AX_IGNORE = 64 ; const POSITION_TARGET_TYPEMASK_AY_IGNORE = 128 ; const POSITION_TARGET_TYPEMASK_AZ_IGNORE = 256 ; const POSITION_TARGET_TYPEMASK_FORCE_SET = 512 ; const POSITION_TARGET_TYPEMASK_YAW_IGNORE = 1024 ; const POSITION_TARGET_TYPEMASK_YAW_RATE_IGNORE = 2048 ; } } impl PositionTargetTypemask { pub const DEFAULT : Self = Self :: POSITION_TARGET_TYPEMASK_X_IGNORE ; } impl Default for PositionTargetTypemask { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidAuthType { MAV_ODID_AUTH_TYPE_NONE = 0 , MAV_ODID_AUTH_TYPE_UAS_ID_SIGNATURE = 1 , MAV_ODID_AUTH_TYPE_OPERATOR_ID_SIGNATURE = 2 , MAV_ODID_AUTH_TYPE_MESSAGE_SET_SIGNATURE = 3 , MAV_ODID_AUTH_TYPE_NETWORK_REMOTE_ID = 4 , MAV_ODID_AUTH_TYPE_SPECIFIC_AUTHENTICATION = 5 , } impl MavOdidAuthType { pub const DEFAULT : Self = Self :: MAV_ODID_AUTH_TYPE_NONE ; } impl Default for MavOdidAuthType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum GpsFixType { GPS_FIX_TYPE_NO_GPS = 0 , GPS_FIX_TYPE_NO_FIX = 1 , GPS_FIX_TYPE_2D_FIX = 2 , GPS_FIX_TYPE_3D_FIX = 3 , GPS_FIX_TYPE_DGPS = 4 , GPS_FIX_TYPE_RTK_FLOAT = 5 , GPS_FIX_TYPE_RTK_FIXED = 6 , GPS_FIX_TYPE_STATIC = 7 , GPS_FIX_TYPE_PPP = 8 , } impl GpsFixType { pub const DEFAULT : Self = Self :: GPS_FIX_TYPE_NO_GPS ; } impl Default for GpsFixType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum VideoStreamStatusFlags { VIDEO_STREAM_STATUS_FLAGS_RUNNING = 1 , VIDEO_STREAM_STATUS_FLAGS_THERMAL = 2 , } impl VideoStreamStatusFlags { pub const DEFAULT : Self = Self :: VIDEO_STREAM_STATUS_FLAGS_RUNNING ; } impl Default for VideoStreamStatusFlags { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GimbalDeviceFlags : u16 { const GIMBAL_DEVICE_FLAGS_RETRACT = 1 ; const GIMBAL_DEVICE_FLAGS_NEUTRAL = 2 ; const GIMBAL_DEVICE_FLAGS_ROLL_LOCK = 4 ; const GIMBAL_DEVICE_FLAGS_PITCH_LOCK = 8 ; const GIMBAL_DEVICE_FLAGS_YAW_LOCK = 16 ; const GIMBAL_DEVICE_FLAGS_YAW_IN_VEHICLE_FRAME = 32 ; const GIMBAL_DEVICE_FLAGS_YAW_IN_EARTH_FRAME = 64 ; const GIMBAL_DEVICE_FLAGS_ACCEPTS_YAW_IN_EARTH_FRAME = 128 ; const GIMBAL_DEVICE_FLAGS_RC_EXCLUSIVE = 256 ; const GIMBAL_DEVICE_FLAGS_RC_MIXED = 512 ; } } impl GimbalDeviceFlags { pub const DEFAULT : Self = Self :: GIMBAL_DEVICE_FLAGS_RETRACT ; } impl Default for GimbalDeviceFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MotorTestThrottleType { MOTOR_TEST_THROTTLE_PERCENT = 0 , MOTOR_TEST_THROTTLE_PWM = 1 , MOTOR_TEST_THROTTLE_PILOT = 2 , MOTOR_TEST_COMPASS_CAL = 3 , } impl MotorTestThrottleType { pub const DEFAULT : Self = Self :: MOTOR_TEST_THROTTLE_PERCENT ; } impl Default for MotorTestThrottleType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MotorTestOrder { MOTOR_TEST_ORDER_DEFAULT = 0 , MOTOR_TEST_ORDER_SEQUENCE = 1 , MOTOR_TEST_ORDER_BOARD = 2 , } impl MotorTestOrder { pub const DEFAULT : Self = Self :: MOTOR_TEST_ORDER_DEFAULT ; } impl Default for MotorTestOrder { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum EscConnectionType { ESC_CONNECTION_TYPE_PPM = 0 , ESC_CONNECTION_TYPE_SERIAL = 1 , ESC_CONNECTION_TYPE_ONESHOT = 2 , ESC_CONNECTION_TYPE_I2C = 3 , ESC_CONNECTION_TYPE_CAN = 4 , ESC_CONNECTION_TYPE_DSHOT = 5 , } impl EscConnectionType { pub const DEFAULT : Self = Self :: ESC_CONNECTION_TYPE_PPM ; } impl Default for EscConnectionType { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct UtmDataAvailFlags : u8 { const UTM_DATA_AVAIL_FLAGS_TIME_VALID = 1 ; const UTM_DATA_AVAIL_FLAGS_UAS_ID_AVAILABLE = 2 ; const UTM_DATA_AVAIL_FLAGS_POSITION_AVAILABLE = 4 ; const UTM_DATA_AVAIL_FLAGS_ALTITUDE_AVAILABLE = 8 ; const UTM_DATA_AVAIL_FLAGS_RELATIVE_ALTITUDE_AVAILABLE = 16 ; const UTM_DATA_AVAIL_FLAGS_HORIZONTAL_VELO_AVAILABLE = 32 ; const UTM_DATA_AVAIL_FLAGS_VERTICAL_VELO_AVAILABLE = 64 ; const UTM_DATA_AVAIL_FLAGS_NEXT_WAYPOINT_AVAILABLE = 128 ; } } impl UtmDataAvailFlags { pub const DEFAULT : Self = Self :: UTM_DATA_AVAIL_FLAGS_TIME_VALID ; } impl Default for UtmDataAvailFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum PreflightStorageParameterAction { PARAM_READ_PERSISTENT = 0 , PARAM_WRITE_PERSISTENT = 1 , PARAM_RESET_CONFIG_DEFAULT = 2 , PARAM_RESET_SENSOR_DEFAULT = 3 , PARAM_RESET_ALL_DEFAULT = 4 , } impl PreflightStorageParameterAction { pub const DEFAULT : Self = Self :: PARAM_READ_PERSISTENT ; } impl Default for PreflightStorageParameterAction { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavType { MAV_TYPE_GENERIC = 0 , MAV_TYPE_FIXED_WING = 1 , MAV_TYPE_QUADROTOR = 2 , MAV_TYPE_COAXIAL = 3 , MAV_TYPE_HELICOPTER = 4 , MAV_TYPE_ANTENNA_TRACKER = 5 , MAV_TYPE_GCS = 6 , MAV_TYPE_AIRSHIP = 7 , MAV_TYPE_FREE_BALLOON = 8 , MAV_TYPE_ROCKET = 9 , MAV_TYPE_GROUND_ROVER = 10 , MAV_TYPE_SURFACE_BOAT = 11 , MAV_TYPE_SUBMARINE = 12 , MAV_TYPE_HEXAROTOR = 13 , MAV_TYPE_OCTOROTOR = 14 , MAV_TYPE_TRICOPTER = 15 , MAV_TYPE_FLAPPING_WING = 16 , MAV_TYPE_KITE = 17 , MAV_TYPE_ONBOARD_CONTROLLER = 18 , MAV_TYPE_VTOL_TAILSITTER_DUOROTOR = 19 , MAV_TYPE_VTOL_TAILSITTER_QUADROTOR = 20 , MAV_TYPE_VTOL_TILTROTOR = 21 , MAV_TYPE_VTOL_FIXEDROTOR = 22 , MAV_TYPE_VTOL_TAILSITTER = 23 , MAV_TYPE_VTOL_TILTWING = 24 , MAV_TYPE_VTOL_RESERVED5 = 25 , MAV_TYPE_GIMBAL = 26 , MAV_TYPE_ADSB = 27 , MAV_TYPE_PARAFOIL = 28 , MAV_TYPE_DODECAROTOR = 29 , MAV_TYPE_CAMERA = 30 , MAV_TYPE_CHARGING_STATION = 31 , MAV_TYPE_FLARM = 32 , MAV_TYPE_SERVO = 33 , MAV_TYPE_ODID = 34 , MAV_TYPE_DECAROTOR = 35 , MAV_TYPE_BATTERY = 36 , MAV_TYPE_PARACHUTE = 37 , MAV_TYPE_LOG = 38 , MAV_TYPE_OSD = 39 , MAV_TYPE_IMU = 40 , MAV_TYPE_GPS = 41 , MAV_TYPE_WINCH = 42 , } impl MavType { pub const DEFAULT : Self = Self :: MAV_TYPE_GENERIC ; } impl Default for MavType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum FailureUnit { FAILURE_UNIT_SENSOR_GYRO = 0 , FAILURE_UNIT_SENSOR_ACCEL = 1 , FAILURE_UNIT_SENSOR_MAG = 2 , FAILURE_UNIT_SENSOR_BARO = 3 , FAILURE_UNIT_SENSOR_GPS = 4 , FAILURE_UNIT_SENSOR_OPTICAL_FLOW = 5 , FAILURE_UNIT_SENSOR_VIO = 6 , FAILURE_UNIT_SENSOR_DISTANCE_SENSOR = 7 , FAILURE_UNIT_SENSOR_AIRSPEED = 8 , FAILURE_UNIT_SYSTEM_BATTERY = 100 , FAILURE_UNIT_SYSTEM_MOTOR = 101 , FAILURE_UNIT_SYSTEM_SERVO = 102 , FAILURE_UNIT_SYSTEM_AVOIDANCE = 103 , FAILURE_UNIT_SYSTEM_RC_SIGNAL = 104 , FAILURE_UNIT_SYSTEM_MAVLINK_SIGNAL = 105 , } impl FailureUnit { pub const DEFAULT : Self = Self :: FAILURE_UNIT_SENSOR_GYRO ; } impl Default for FailureUnit { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavCmd { MAV_CMD_NAV_WAYPOINT = 16 , MAV_CMD_NAV_LOITER_UNLIM = 17 , MAV_CMD_NAV_LOITER_TURNS = 18 , MAV_CMD_NAV_LOITER_TIME = 19 , MAV_CMD_NAV_RETURN_TO_LAUNCH = 20 , MAV_CMD_NAV_LAND = 21 , MAV_CMD_NAV_TAKEOFF = 22 , MAV_CMD_NAV_LAND_LOCAL = 23 , MAV_CMD_NAV_TAKEOFF_LOCAL = 24 , MAV_CMD_NAV_FOLLOW = 25 , MAV_CMD_NAV_CONTINUE_AND_CHANGE_ALT = 30 , MAV_CMD_NAV_LOITER_TO_ALT = 31 , MAV_CMD_DO_FOLLOW = 32 , MAV_CMD_DO_FOLLOW_REPOSITION = 33 , MAV_CMD_DO_ORBIT = 34 , MAV_CMD_NAV_ROI = 80 , MAV_CMD_NAV_PATHPLANNING = 81 , MAV_CMD_NAV_SPLINE_WAYPOINT = 82 , MAV_CMD_NAV_VTOL_TAKEOFF = 84 , MAV_CMD_NAV_VTOL_LAND = 85 , MAV_CMD_NAV_GUIDED_ENABLE = 92 , MAV_CMD_NAV_DELAY = 93 , MAV_CMD_NAV_PAYLOAD_PLACE = 94 , MAV_CMD_NAV_LAST = 95 , MAV_CMD_CONDITION_DELAY = 112 , MAV_CMD_CONDITION_CHANGE_ALT = 113 , MAV_CMD_CONDITION_DISTANCE = 114 , MAV_CMD_CONDITION_YAW = 115 , MAV_CMD_CONDITION_LAST = 159 , MAV_CMD_DO_SET_MODE = 176 , MAV_CMD_DO_JUMP = 177 , MAV_CMD_DO_CHANGE_SPEED = 178 , MAV_CMD_DO_SET_HOME = 179 , MAV_CMD_DO_SET_PARAMETER = 180 , MAV_CMD_DO_SET_RELAY = 181 , MAV_CMD_DO_REPEAT_RELAY = 182 , MAV_CMD_DO_SET_SERVO = 183 , MAV_CMD_DO_REPEAT_SERVO = 184 , MAV_CMD_DO_FLIGHTTERMINATION = 185 , MAV_CMD_DO_CHANGE_ALTITUDE = 186 , MAV_CMD_DO_SET_ACTUATOR = 187 , MAV_CMD_DO_LAND_START = 189 , MAV_CMD_DO_RALLY_LAND = 190 , MAV_CMD_DO_GO_AROUND = 191 , MAV_CMD_DO_REPOSITION = 192 , MAV_CMD_DO_PAUSE_CONTINUE = 193 , MAV_CMD_DO_SET_REVERSE = 194 , MAV_CMD_DO_SET_ROI_LOCATION = 195 , MAV_CMD_DO_SET_ROI_WPNEXT_OFFSET = 196 , MAV_CMD_DO_SET_ROI_NONE = 197 , MAV_CMD_DO_SET_ROI_SYSID = 198 , MAV_CMD_DO_CONTROL_VIDEO = 200 , MAV_CMD_DO_SET_ROI = 201 , MAV_CMD_DO_DIGICAM_CONFIGURE = 202 , MAV_CMD_DO_DIGICAM_CONTROL = 203 , MAV_CMD_DO_MOUNT_CONFIGURE = 204 , MAV_CMD_DO_MOUNT_CONTROL = 205 , MAV_CMD_DO_SET_CAM_TRIGG_DIST = 206 , MAV_CMD_DO_FENCE_ENABLE = 207 , MAV_CMD_DO_PARACHUTE = 208 , MAV_CMD_DO_MOTOR_TEST = 209 , MAV_CMD_DO_INVERTED_FLIGHT = 210 , MAV_CMD_DO_GRIPPER = 211 , MAV_CMD_DO_AUTOTUNE_ENABLE = 212 , MAV_CMD_NAV_SET_YAW_SPEED = 213 , MAV_CMD_DO_SET_CAM_TRIGG_INTERVAL = 214 , MAV_CMD_DO_MOUNT_CONTROL_QUAT = 220 , MAV_CMD_DO_GUIDED_MASTER = 221 , MAV_CMD_DO_GUIDED_LIMITS = 222 , MAV_CMD_DO_ENGINE_CONTROL = 223 , MAV_CMD_DO_SET_MISSION_CURRENT = 224 , MAV_CMD_DO_LAST = 240 , MAV_CMD_PREFLIGHT_CALIBRATION = 241 , MAV_CMD_PREFLIGHT_SET_SENSOR_OFFSETS = 242 , MAV_CMD_PREFLIGHT_UAVCAN = 243 , MAV_CMD_PREFLIGHT_STORAGE = 245 , MAV_CMD_PREFLIGHT_REBOOT_SHUTDOWN = 246 , MAV_CMD_OVERRIDE_GOTO = 252 , MAV_CMD_OBLIQUE_SURVEY = 260 , MAV_CMD_MISSION_START = 300 , MAV_CMD_ACTUATOR_TEST = 310 , MAV_CMD_CONFIGURE_ACTUATOR = 311 , MAV_CMD_COMPONENT_ARM_DISARM = 400 , MAV_CMD_RUN_PREARM_CHECKS = 401 , MAV_CMD_ILLUMINATOR_ON_OFF = 405 , MAV_CMD_GET_HOME_POSITION = 410 , MAV_CMD_INJECT_FAILURE = 420 , MAV_CMD_START_RX_PAIR = 500 , MAV_CMD_GET_MESSAGE_INTERVAL = 510 , MAV_CMD_SET_MESSAGE_INTERVAL = 511 , MAV_CMD_REQUEST_MESSAGE = 512 , MAV_CMD_REQUEST_PROTOCOL_VERSION = 519 , MAV_CMD_REQUEST_AUTOPILOT_CAPABILITIES = 520 , MAV_CMD_REQUEST_CAMERA_INFORMATION = 521 , MAV_CMD_REQUEST_CAMERA_SETTINGS = 522 , MAV_CMD_REQUEST_STORAGE_INFORMATION = 525 , MAV_CMD_STORAGE_FORMAT = 526 , MAV_CMD_REQUEST_CAMERA_CAPTURE_STATUS = 527 , MAV_CMD_REQUEST_FLIGHT_INFORMATION = 528 , MAV_CMD_RESET_CAMERA_SETTINGS = 529 , MAV_CMD_SET_CAMERA_MODE = 530 , MAV_CMD_SET_CAMERA_ZOOM = 531 , MAV_CMD_SET_CAMERA_FOCUS = 532 , MAV_CMD_SET_STORAGE_USAGE = 533 , MAV_CMD_JUMP_TAG = 600 , MAV_CMD_DO_JUMP_TAG = 601 , MAV_CMD_DO_GIMBAL_MANAGER_PITCHYAW = 1000 , MAV_CMD_DO_GIMBAL_MANAGER_CONFIGURE = 1001 , MAV_CMD_IMAGE_START_CAPTURE = 2000 , MAV_CMD_IMAGE_STOP_CAPTURE = 2001 , MAV_CMD_REQUEST_CAMERA_IMAGE_CAPTURE = 2002 , MAV_CMD_DO_TRIGGER_CONTROL = 2003 , MAV_CMD_CAMERA_TRACK_POINT = 2004 , MAV_CMD_CAMERA_TRACK_RECTANGLE = 2005 , MAV_CMD_CAMERA_STOP_TRACKING = 2010 , MAV_CMD_VIDEO_START_CAPTURE = 2500 , MAV_CMD_VIDEO_STOP_CAPTURE = 2501 , MAV_CMD_VIDEO_START_STREAMING = 2502 , MAV_CMD_VIDEO_STOP_STREAMING = 2503 , MAV_CMD_REQUEST_VIDEO_STREAM_INFORMATION = 2504 , MAV_CMD_REQUEST_VIDEO_STREAM_STATUS = 2505 , MAV_CMD_LOGGING_START = 2510 , MAV_CMD_LOGGING_STOP = 2511 , MAV_CMD_AIRFRAME_CONFIGURATION = 2520 , MAV_CMD_CONTROL_HIGH_LATENCY = 2600 , MAV_CMD_PANORAMA_CREATE = 2800 , MAV_CMD_DO_VTOL_TRANSITION = 3000 , MAV_CMD_ARM_AUTHORIZATION_REQUEST = 3001 , MAV_CMD_SET_GUIDED_SUBMODE_STANDARD = 4000 , MAV_CMD_SET_GUIDED_SUBMODE_CIRCLE = 4001 , MAV_CMD_CONDITION_GATE = 4501 , MAV_CMD_NAV_FENCE_RETURN_POINT = 5000 , MAV_CMD_NAV_FENCE_POLYGON_VERTEX_INCLUSION = 5001 , MAV_CMD_NAV_FENCE_POLYGON_VERTEX_EXCLUSION = 5002 , MAV_CMD_NAV_FENCE_CIRCLE_INCLUSION = 5003 , MAV_CMD_NAV_FENCE_CIRCLE_EXCLUSION = 5004 , MAV_CMD_NAV_RALLY_POINT = 5100 , MAV_CMD_UAVCAN_GET_NODE_INFO = 5200 , MAV_CMD_DO_ADSB_OUT_IDENT = 10001 , MAV_CMD_PAYLOAD_PREPARE_DEPLOY = 30001 , MAV_CMD_PAYLOAD_CONTROL_DEPLOY = 30002 , MAV_CMD_FIXED_MAG_CAL_YAW = 42006 , MAV_CMD_DO_WINCH = 42600 , MAV_CMD_WAYPOINT_USER_1 = 31000 , MAV_CMD_WAYPOINT_USER_2 = 31001 , MAV_CMD_WAYPOINT_USER_3 = 31002 , MAV_CMD_WAYPOINT_USER_4 = 31003 , MAV_CMD_WAYPOINT_USER_5 = 31004 , MAV_CMD_SPATIAL_USER_1 = 31005 , MAV_CMD_SPATIAL_USER_2 = 31006 , MAV_CMD_SPATIAL_USER_3 = 31007 , MAV_CMD_SPATIAL_USER_4 = 31008 , MAV_CMD_SPATIAL_USER_5 = 31009 , MAV_CMD_USER_1 = 31010 , MAV_CMD_USER_2 = 31011 , MAV_CMD_USER_3 = 31012 , MAV_CMD_USER_4 = 31013 , MAV_CMD_USER_5 = 31014 , MAV_CMD_CAN_FORWARD = 32000 , } impl MavCmd { pub const DEFAULT : Self = Self :: MAV_CMD_NAV_WAYPOINT ; } impl Default for MavCmd { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavVtolState { MAV_VTOL_STATE_UNDEFINED = 0 , MAV_VTOL_STATE_TRANSITION_TO_FW = 1 , MAV_VTOL_STATE_TRANSITION_TO_MC = 2 , MAV_VTOL_STATE_MC = 3 , MAV_VTOL_STATE_FW = 4 , } impl MavVtolState { pub const DEFAULT : Self = Self :: MAV_VTOL_STATE_UNDEFINED ; } impl Default for MavVtolState { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SerialControlFlag : u8 { const SERIAL_CONTROL_FLAG_REPLY = 1 ; const SERIAL_CONTROL_FLAG_RESPOND = 2 ; const SERIAL_CONTROL_FLAG_EXCLUSIVE = 4 ; const SERIAL_CONTROL_FLAG_BLOCKING = 8 ; const SERIAL_CONTROL_FLAG_MULTI = 16 ; } } impl SerialControlFlag { pub const DEFAULT : Self = Self :: SERIAL_CONTROL_FLAG_REPLY ; } impl Default for SerialControlFlag { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MavWinchStatusFlag : u32 { const MAV_WINCH_STATUS_HEALTHY = 1 ; const MAV_WINCH_STATUS_FULLY_RETRACTED = 2 ; const MAV_WINCH_STATUS_MOVING = 4 ; const MAV_WINCH_STATUS_CLUTCH_ENGAGED = 8 ; const MAV_WINCH_STATUS_LOCKED = 16 ; const MAV_WINCH_STATUS_DROPPING = 32 ; const MAV_WINCH_STATUS_ARRESTING = 64 ; const MAV_WINCH_STATUS_GROUND_SENSE = 128 ; const MAV_WINCH_STATUS_RETRACTING = 256 ; const MAV_WINCH_STATUS_REDELIVER = 512 ; const MAV_WINCH_STATUS_ABANDON_LINE = 1024 ; const MAV_WINCH_STATUS_LOCKING = 2048 ; const MAV_WINCH_STATUS_LOAD_LINE = 4096 ; const MAV_WINCH_STATUS_LOAD_PAYLOAD = 8192 ; } } impl MavWinchStatusFlag { pub const DEFAULT : Self = Self :: MAV_WINCH_STATUS_HEALTHY ; } impl Default for MavWinchStatusFlag { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum AdsbEmitterType { ADSB_EMITTER_TYPE_NO_INFO = 0 , ADSB_EMITTER_TYPE_LIGHT = 1 , ADSB_EMITTER_TYPE_SMALL = 2 , ADSB_EMITTER_TYPE_LARGE = 3 , ADSB_EMITTER_TYPE_HIGH_VORTEX_LARGE = 4 , ADSB_EMITTER_TYPE_HEAVY = 5 , ADSB_EMITTER_TYPE_HIGHLY_MANUV = 6 , ADSB_EMITTER_TYPE_ROTOCRAFT = 7 , ADSB_EMITTER_TYPE_UNASSIGNED = 8 , ADSB_EMITTER_TYPE_GLIDER = 9 , ADSB_EMITTER_TYPE_LIGHTER_AIR = 10 , ADSB_EMITTER_TYPE_PARACHUTE = 11 , ADSB_EMITTER_TYPE_ULTRA_LIGHT = 12 , ADSB_EMITTER_TYPE_UNASSIGNED2 = 13 , ADSB_EMITTER_TYPE_UAV = 14 , ADSB_EMITTER_TYPE_SPACE = 15 , ADSB_EMITTER_TYPE_UNASSGINED3 = 16 , ADSB_EMITTER_TYPE_EMERGENCY_SURFACE = 17 , ADSB_EMITTER_TYPE_SERVICE_SURFACE = 18 , ADSB_EMITTER_TYPE_POINT_OBSTACLE = 19 , } impl AdsbEmitterType { pub const DEFAULT : Self = Self :: ADSB_EMITTER_TYPE_NO_INFO ; } impl Default for AdsbEmitterType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum AisType { AIS_TYPE_UNKNOWN = 0 , AIS_TYPE_RESERVED_1 = 1 , AIS_TYPE_RESERVED_2 = 2 , AIS_TYPE_RESERVED_3 = 3 , AIS_TYPE_RESERVED_4 = 4 , AIS_TYPE_RESERVED_5 = 5 , AIS_TYPE_RESERVED_6 = 6 , AIS_TYPE_RESERVED_7 = 7 , AIS_TYPE_RESERVED_8 = 8 , AIS_TYPE_RESERVED_9 = 9 , AIS_TYPE_RESERVED_10 = 10 , AIS_TYPE_RESERVED_11 = 11 , AIS_TYPE_RESERVED_12 = 12 , AIS_TYPE_RESERVED_13 = 13 , AIS_TYPE_RESERVED_14 = 14 , AIS_TYPE_RESERVED_15 = 15 , AIS_TYPE_RESERVED_16 = 16 , AIS_TYPE_RESERVED_17 = 17 , AIS_TYPE_RESERVED_18 = 18 , AIS_TYPE_RESERVED_19 = 19 , AIS_TYPE_WIG = 20 , AIS_TYPE_WIG_HAZARDOUS_A = 21 , AIS_TYPE_WIG_HAZARDOUS_B = 22 , AIS_TYPE_WIG_HAZARDOUS_C = 23 , AIS_TYPE_WIG_HAZARDOUS_D = 24 , AIS_TYPE_WIG_RESERVED_1 = 25 , AIS_TYPE_WIG_RESERVED_2 = 26 , AIS_TYPE_WIG_RESERVED_3 = 27 , AIS_TYPE_WIG_RESERVED_4 = 28 , AIS_TYPE_WIG_RESERVED_5 = 29 , AIS_TYPE_FISHING = 30 , AIS_TYPE_TOWING = 31 , AIS_TYPE_TOWING_LARGE = 32 , AIS_TYPE_DREDGING = 33 , AIS_TYPE_DIVING = 34 , AIS_TYPE_MILITARY = 35 , AIS_TYPE_SAILING = 36 , AIS_TYPE_PLEASURE = 37 , AIS_TYPE_RESERVED_20 = 38 , AIS_TYPE_RESERVED_21 = 39 , AIS_TYPE_HSC = 40 , AIS_TYPE_HSC_HAZARDOUS_A = 41 , AIS_TYPE_HSC_HAZARDOUS_B = 42 , AIS_TYPE_HSC_HAZARDOUS_C = 43 , AIS_TYPE_HSC_HAZARDOUS_D = 44 , AIS_TYPE_HSC_RESERVED_1 = 45 , AIS_TYPE_HSC_RESERVED_2 = 46 , AIS_TYPE_HSC_RESERVED_3 = 47 , AIS_TYPE_HSC_RESERVED_4 = 48 , AIS_TYPE_HSC_UNKNOWN = 49 , AIS_TYPE_PILOT = 50 , AIS_TYPE_SAR = 51 , AIS_TYPE_TUG = 52 , AIS_TYPE_PORT_TENDER = 53 , AIS_TYPE_ANTI_POLLUTION = 54 , AIS_TYPE_LAW_ENFORCEMENT = 55 , AIS_TYPE_SPARE_LOCAL_1 = 56 , AIS_TYPE_SPARE_LOCAL_2 = 57 , AIS_TYPE_MEDICAL_TRANSPORT = 58 , AIS_TYPE_NONECOMBATANT = 59 , AIS_TYPE_PASSENGER = 60 , AIS_TYPE_PASSENGER_HAZARDOUS_A = 61 , AIS_TYPE_PASSENGER_HAZARDOUS_B = 62 , AIS_TYPE_PASSENGER_HAZARDOUS_C = 63 , AIS_TYPE_PASSENGER_HAZARDOUS_D = 64 , AIS_TYPE_PASSENGER_RESERVED_1 = 65 , AIS_TYPE_PASSENGER_RESERVED_2 = 66 , AIS_TYPE_PASSENGER_RESERVED_3 = 67 , AIS_TYPE_PASSENGER_RESERVED_4 = 68 , AIS_TYPE_PASSENGER_UNKNOWN = 69 , AIS_TYPE_CARGO = 70 , AIS_TYPE_CARGO_HAZARDOUS_A = 71 , AIS_TYPE_CARGO_HAZARDOUS_B = 72 , AIS_TYPE_CARGO_HAZARDOUS_C = 73 , AIS_TYPE_CARGO_HAZARDOUS_D = 74 , AIS_TYPE_CARGO_RESERVED_1 = 75 , AIS_TYPE_CARGO_RESERVED_2 = 76 , AIS_TYPE_CARGO_RESERVED_3 = 77 , AIS_TYPE_CARGO_RESERVED_4 = 78 , AIS_TYPE_CARGO_UNKNOWN = 79 , AIS_TYPE_TANKER = 80 , AIS_TYPE_TANKER_HAZARDOUS_A = 81 , AIS_TYPE_TANKER_HAZARDOUS_B = 82 , AIS_TYPE_TANKER_HAZARDOUS_C = 83 , AIS_TYPE_TANKER_HAZARDOUS_D = 84 , AIS_TYPE_TANKER_RESERVED_1 = 85 , AIS_TYPE_TANKER_RESERVED_2 = 86 , AIS_TYPE_TANKER_RESERVED_3 = 87 , AIS_TYPE_TANKER_RESERVED_4 = 88 , AIS_TYPE_TANKER_UNKNOWN = 89 , AIS_TYPE_OTHER = 90 , AIS_TYPE_OTHER_HAZARDOUS_A = 91 , AIS_TYPE_OTHER_HAZARDOUS_B = 92 , AIS_TYPE_OTHER_HAZARDOUS_C = 93 , AIS_TYPE_OTHER_HAZARDOUS_D = 94 , AIS_TYPE_OTHER_RESERVED_1 = 95 , AIS_TYPE_OTHER_RESERVED_2 = 96 , AIS_TYPE_OTHER_RESERVED_3 = 97 , AIS_TYPE_OTHER_RESERVED_4 = 98 , AIS_TYPE_OTHER_UNKNOWN = 99 , } impl AisType { pub const DEFAULT : Self = Self :: AIS_TYPE_UNKNOWN ; } impl Default for AisType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum ActuatorConfiguration { ACTUATOR_CONFIGURATION_NONE = 0 , ACTUATOR_CONFIGURATION_BEEP = 1 , ACTUATOR_CONFIGURATION_3D_MODE_ON = 2 , ACTUATOR_CONFIGURATION_3D_MODE_OFF = 3 , ACTUATOR_CONFIGURATION_SPIN_DIRECTION1 = 4 , ACTUATOR_CONFIGURATION_SPIN_DIRECTION2 = 5 , } impl ActuatorConfiguration { pub const DEFAULT : Self = Self :: ACTUATOR_CONFIGURATION_NONE ; } impl Default for ActuatorConfiguration { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum UavcanNodeMode { UAVCAN_NODE_MODE_OPERATIONAL = 0 , UAVCAN_NODE_MODE_INITIALIZATION = 1 , UAVCAN_NODE_MODE_MAINTENANCE = 2 , UAVCAN_NODE_MODE_SOFTWARE_UPDATE = 3 , UAVCAN_NODE_MODE_OFFLINE = 7 , } impl UavcanNodeMode { pub const DEFAULT : Self = Self :: UAVCAN_NODE_MODE_OPERATIONAL ; } impl Default for UavcanNodeMode { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavDoRepositionFlags { MAV_DO_REPOSITION_FLAGS_CHANGE_MODE = 1 , } impl MavDoRepositionFlags { pub const DEFAULT : Self = Self :: MAV_DO_REPOSITION_FLAGS_CHANGE_MODE ; } impl Default for MavDoRepositionFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavSensorOrientation { MAV_SENSOR_ROTATION_NONE = 0 , MAV_SENSOR_ROTATION_YAW_45 = 1 , MAV_SENSOR_ROTATION_YAW_90 = 2 , MAV_SENSOR_ROTATION_YAW_135 = 3 , MAV_SENSOR_ROTATION_YAW_180 = 4 , MAV_SENSOR_ROTATION_YAW_225 = 5 , MAV_SENSOR_ROTATION_YAW_270 = 6 , MAV_SENSOR_ROTATION_YAW_315 = 7 , MAV_SENSOR_ROTATION_ROLL_180 = 8 , MAV_SENSOR_ROTATION_ROLL_180_YAW_45 = 9 , MAV_SENSOR_ROTATION_ROLL_180_YAW_90 = 10 , MAV_SENSOR_ROTATION_ROLL_180_YAW_135 = 11 , MAV_SENSOR_ROTATION_PITCH_180 = 12 , MAV_SENSOR_ROTATION_ROLL_180_YAW_225 = 13 , MAV_SENSOR_ROTATION_ROLL_180_YAW_270 = 14 , MAV_SENSOR_ROTATION_ROLL_180_YAW_315 = 15 , MAV_SENSOR_ROTATION_ROLL_90 = 16 , MAV_SENSOR_ROTATION_ROLL_90_YAW_45 = 17 , MAV_SENSOR_ROTATION_ROLL_90_YAW_90 = 18 , MAV_SENSOR_ROTATION_ROLL_90_YAW_135 = 19 , MAV_SENSOR_ROTATION_ROLL_270 = 20 , MAV_SENSOR_ROTATION_ROLL_270_YAW_45 = 21 , MAV_SENSOR_ROTATION_ROLL_270_YAW_90 = 22 , MAV_SENSOR_ROTATION_ROLL_270_YAW_135 = 23 , MAV_SENSOR_ROTATION_PITCH_90 = 24 , MAV_SENSOR_ROTATION_PITCH_270 = 25 , MAV_SENSOR_ROTATION_PITCH_180_YAW_90 = 26 , MAV_SENSOR_ROTATION_PITCH_180_YAW_270 = 27 , MAV_SENSOR_ROTATION_ROLL_90_PITCH_90 = 28 , MAV_SENSOR_ROTATION_ROLL_180_PITCH_90 = 29 , MAV_SENSOR_ROTATION_ROLL_270_PITCH_90 = 30 , MAV_SENSOR_ROTATION_ROLL_90_PITCH_180 = 31 , MAV_SENSOR_ROTATION_ROLL_270_PITCH_180 = 32 , MAV_SENSOR_ROTATION_ROLL_90_PITCH_270 = 33 , MAV_SENSOR_ROTATION_ROLL_180_PITCH_270 = 34 , MAV_SENSOR_ROTATION_ROLL_270_PITCH_270 = 35 , MAV_SENSOR_ROTATION_ROLL_90_PITCH_180_YAW_90 = 36 , MAV_SENSOR_ROTATION_ROLL_90_YAW_270 = 37 , MAV_SENSOR_ROTATION_ROLL_90_PITCH_68_YAW_293 = 38 , MAV_SENSOR_ROTATION_PITCH_315 = 39 , MAV_SENSOR_ROTATION_ROLL_90_PITCH_315 = 40 , MAV_SENSOR_ROTATION_CUSTOM = 100 , } impl MavSensorOrientation { pub const DEFAULT : Self = Self :: MAV_SENSOR_ROTATION_NONE ; } impl Default for MavSensorOrientation { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MissionState { MISSION_STATE_UNKNOWN = 0 , MISSION_STATE_NO_MISSION = 1 , MISSION_STATE_NOT_STARTED = 2 , MISSION_STATE_ACTIVE = 3 , MISSION_STATE_PAUSED = 4 , MISSION_STATE_COMPLETE = 5 , } impl MissionState { pub const DEFAULT : Self = Self :: MISSION_STATE_UNKNOWN ; } impl Default for MissionState { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MavPowerStatus : u16 { const MAV_POWER_STATUS_BRICK_VALID = 1 ; const MAV_POWER_STATUS_SERVO_VALID = 2 ; const MAV_POWER_STATUS_USB_CONNECTED = 4 ; const MAV_POWER_STATUS_PERIPH_OVERCURRENT = 8 ; const MAV_POWER_STATUS_PERIPH_HIPOWER_OVERCURRENT = 16 ; const MAV_POWER_STATUS_CHANGED = 32 ; } } impl MavPowerStatus { pub const DEFAULT : Self = Self :: MAV_POWER_STATUS_BRICK_VALID ; } impl Default for MavPowerStatus { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavSysStatusSensorExtended { MAV_SYS_STATUS_RECOVERY_SYSTEM = 1 , } impl MavSysStatusSensorExtended { pub const DEFAULT : Self = Self :: MAV_SYS_STATUS_RECOVERY_SYSTEM ; } impl Default for MavSysStatusSensorExtended { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum FirmwareVersionType { FIRMWARE_VERSION_TYPE_DEV = 0 , FIRMWARE_VERSION_TYPE_ALPHA = 64 , FIRMWARE_VERSION_TYPE_BETA = 128 , FIRMWARE_VERSION_TYPE_RC = 192 , FIRMWARE_VERSION_TYPE_OFFICIAL = 255 , } impl FirmwareVersionType { pub const DEFAULT : Self = Self :: FIRMWARE_VERSION_TYPE_DEV ; } impl Default for FirmwareVersionType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum StorageUsageFlag { STORAGE_USAGE_FLAG_SET = 1 , STORAGE_USAGE_FLAG_PHOTO = 2 , STORAGE_USAGE_FLAG_VIDEO = 4 , STORAGE_USAGE_FLAG_LOGS = 8 , } impl StorageUsageFlag { pub const DEFAULT : Self = Self :: STORAGE_USAGE_FLAG_SET ; } impl Default for StorageUsageFlag { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum StorageStatus { STORAGE_STATUS_EMPTY = 0 , STORAGE_STATUS_UNFORMATTED = 1 , STORAGE_STATUS_READY = 2 , STORAGE_STATUS_NOT_SUPPORTED = 3 , } impl StorageStatus { pub const DEFAULT : Self = Self :: STORAGE_STATUS_EMPTY ; } impl Default for StorageStatus { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GimbalDeviceErrorFlags : u32 { const GIMBAL_DEVICE_ERROR_FLAGS_AT_ROLL_LIMIT = 1 ; const GIMBAL_DEVICE_ERROR_FLAGS_AT_PITCH_LIMIT = 2 ; const GIMBAL_DEVICE_ERROR_FLAGS_AT_YAW_LIMIT = 4 ; const GIMBAL_DEVICE_ERROR_FLAGS_ENCODER_ERROR = 8 ; const GIMBAL_DEVICE_ERROR_FLAGS_POWER_ERROR = 16 ; const GIMBAL_DEVICE_ERROR_FLAGS_MOTOR_ERROR = 32 ; const GIMBAL_DEVICE_ERROR_FLAGS_SOFTWARE_ERROR = 64 ; const GIMBAL_DEVICE_ERROR_FLAGS_COMMS_ERROR = 128 ; const GIMBAL_DEVICE_ERROR_FLAGS_CALIBRATION_RUNNING = 256 ; const GIMBAL_DEVICE_ERROR_FLAGS_NO_MANAGER = 512 ; } } impl GimbalDeviceErrorFlags { pub const DEFAULT : Self = Self :: GIMBAL_DEVICE_ERROR_FLAGS_AT_ROLL_LIMIT ; } impl Default for GimbalDeviceErrorFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum GimbalManagerFlags { GIMBAL_MANAGER_FLAGS_RETRACT = 1 , GIMBAL_MANAGER_FLAGS_NEUTRAL = 2 , GIMBAL_MANAGER_FLAGS_ROLL_LOCK = 4 , GIMBAL_MANAGER_FLAGS_PITCH_LOCK = 8 , GIMBAL_MANAGER_FLAGS_YAW_LOCK = 16 , GIMBAL_MANAGER_FLAGS_YAW_IN_VEHICLE_FRAME = 32 , GIMBAL_MANAGER_FLAGS_YAW_IN_EARTH_FRAME = 64 , GIMBAL_MANAGER_FLAGS_ACCEPTS_YAW_IN_EARTH_FRAME = 128 , GIMBAL_MANAGER_FLAGS_RC_EXCLUSIVE = 256 , GIMBAL_MANAGER_FLAGS_RC_MIXED = 512 , } impl GimbalManagerFlags { pub const DEFAULT : Self = Self :: GIMBAL_MANAGER_FLAGS_RETRACT ; } impl Default for GimbalManagerFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavAutopilot { MAV_AUTOPILOT_GENERIC = 0 , MAV_AUTOPILOT_RESERVED = 1 , MAV_AUTOPILOT_SLUGS = 2 , MAV_AUTOPILOT_ARDUPILOTMEGA = 3 , MAV_AUTOPILOT_OPENPILOT = 4 , MAV_AUTOPILOT_GENERIC_WAYPOINTS_ONLY = 5 , MAV_AUTOPILOT_GENERIC_WAYPOINTS_AND_SIMPLE_NAVIGATION_ONLY = 6 , MAV_AUTOPILOT_GENERIC_MISSION_FULL = 7 , MAV_AUTOPILOT_INVALID = 8 , MAV_AUTOPILOT_PPZ = 9 , MAV_AUTOPILOT_UDB = 10 , MAV_AUTOPILOT_FP = 11 , MAV_AUTOPILOT_PX4 = 12 , MAV_AUTOPILOT_SMACCMPILOT = 13 , MAV_AUTOPILOT_AUTOQUAD = 14 , MAV_AUTOPILOT_ARMAZILA = 15 , MAV_AUTOPILOT_AEROB = 16 , MAV_AUTOPILOT_ASLUAV = 17 , MAV_AUTOPILOT_SMARTAP = 18 , MAV_AUTOPILOT_AIRRAILS = 19 , MAV_AUTOPILOT_REFLEX = 20 , } impl MavAutopilot { pub const DEFAULT : Self = Self :: MAV_AUTOPILOT_GENERIC ; } impl Default for MavAutopilot { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavBatteryType { MAV_BATTERY_TYPE_UNKNOWN = 0 , MAV_BATTERY_TYPE_LIPO = 1 , MAV_BATTERY_TYPE_LIFE = 2 , MAV_BATTERY_TYPE_LION = 3 , MAV_BATTERY_TYPE_NIMH = 4 , } impl MavBatteryType { pub const DEFAULT : Self = Self :: MAV_BATTERY_TYPE_UNKNOWN ; } impl Default for MavBatteryType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidOperatorIdType { MAV_ODID_OPERATOR_ID_TYPE_CAA = 0 , } impl MavOdidOperatorIdType { pub const DEFAULT : Self = Self :: MAV_ODID_OPERATOR_ID_TYPE_CAA ; } impl Default for MavOdidOperatorIdType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum UtmFlightState { UTM_FLIGHT_STATE_UNKNOWN = 1 , UTM_FLIGHT_STATE_GROUND = 2 , UTM_FLIGHT_STATE_AIRBORNE = 3 , UTM_FLIGHT_STATE_EMERGENCY = 16 , UTM_FLIGHT_STATE_NOCTRL = 32 , } impl UtmFlightState { pub const DEFAULT : Self = Self :: UTM_FLIGHT_STATE_UNKNOWN ; } impl Default for UtmFlightState { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum ActuatorOutputFunction { ACTUATOR_OUTPUT_FUNCTION_NONE = 0 , ACTUATOR_OUTPUT_FUNCTION_MOTOR1 = 1 , ACTUATOR_OUTPUT_FUNCTION_MOTOR2 = 2 , ACTUATOR_OUTPUT_FUNCTION_MOTOR3 = 3 , ACTUATOR_OUTPUT_FUNCTION_MOTOR4 = 4 , ACTUATOR_OUTPUT_FUNCTION_MOTOR5 = 5 , ACTUATOR_OUTPUT_FUNCTION_MOTOR6 = 6 , ACTUATOR_OUTPUT_FUNCTION_MOTOR7 = 7 , ACTUATOR_OUTPUT_FUNCTION_MOTOR8 = 8 , ACTUATOR_OUTPUT_FUNCTION_MOTOR9 = 9 , ACTUATOR_OUTPUT_FUNCTION_MOTOR10 = 10 , ACTUATOR_OUTPUT_FUNCTION_MOTOR11 = 11 , ACTUATOR_OUTPUT_FUNCTION_MOTOR12 = 12 , ACTUATOR_OUTPUT_FUNCTION_MOTOR13 = 13 , ACTUATOR_OUTPUT_FUNCTION_MOTOR14 = 14 , ACTUATOR_OUTPUT_FUNCTION_MOTOR15 = 15 , ACTUATOR_OUTPUT_FUNCTION_MOTOR16 = 16 , ACTUATOR_OUTPUT_FUNCTION_SERVO1 = 33 , ACTUATOR_OUTPUT_FUNCTION_SERVO2 = 34 , ACTUATOR_OUTPUT_FUNCTION_SERVO3 = 35 , ACTUATOR_OUTPUT_FUNCTION_SERVO4 = 36 , ACTUATOR_OUTPUT_FUNCTION_SERVO5 = 37 , ACTUATOR_OUTPUT_FUNCTION_SERVO6 = 38 , ACTUATOR_OUTPUT_FUNCTION_SERVO7 = 39 , ACTUATOR_OUTPUT_FUNCTION_SERVO8 = 40 , ACTUATOR_OUTPUT_FUNCTION_SERVO9 = 41 , ACTUATOR_OUTPUT_FUNCTION_SERVO10 = 42 , ACTUATOR_OUTPUT_FUNCTION_SERVO11 = 43 , ACTUATOR_OUTPUT_FUNCTION_SERVO12 = 44 , ACTUATOR_OUTPUT_FUNCTION_SERVO13 = 45 , ACTUATOR_OUTPUT_FUNCTION_SERVO14 = 46 , ACTUATOR_OUTPUT_FUNCTION_SERVO15 = 47 , ACTUATOR_OUTPUT_FUNCTION_SERVO16 = 48 , } impl ActuatorOutputFunction { pub const DEFAULT : Self = Self :: ACTUATOR_OUTPUT_FUNCTION_NONE ; } impl Default for ActuatorOutputFunction { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GimbalDeviceCapFlags : u16 { const GIMBAL_DEVICE_CAP_FLAGS_HAS_RETRACT = 1 ; const GIMBAL_DEVICE_CAP_FLAGS_HAS_NEUTRAL = 2 ; const GIMBAL_DEVICE_CAP_FLAGS_HAS_ROLL_AXIS = 4 ; const GIMBAL_DEVICE_CAP_FLAGS_HAS_ROLL_FOLLOW = 8 ; const GIMBAL_DEVICE_CAP_FLAGS_HAS_ROLL_LOCK = 16 ; const GIMBAL_DEVICE_CAP_FLAGS_HAS_PITCH_AXIS = 32 ; const GIMBAL_DEVICE_CAP_FLAGS_HAS_PITCH_FOLLOW = 64 ; const GIMBAL_DEVICE_CAP_FLAGS_HAS_PITCH_LOCK = 128 ; const GIMBAL_DEVICE_CAP_FLAGS_HAS_YAW_AXIS = 256 ; const GIMBAL_DEVICE_CAP_FLAGS_HAS_YAW_FOLLOW = 512 ; const GIMBAL_DEVICE_CAP_FLAGS_HAS_YAW_LOCK = 1024 ; const GIMBAL_DEVICE_CAP_FLAGS_SUPPORTS_INFINITE_YAW = 2048 ; const GIMBAL_DEVICE_CAP_FLAGS_SUPPORTS_YAW_IN_EARTH_FRAME = 4096 ; const GIMBAL_DEVICE_CAP_FLAGS_HAS_RC_INPUTS = 8192 ; } } impl GimbalDeviceCapFlags { pub const DEFAULT : Self = Self :: GIMBAL_DEVICE_CAP_FLAGS_HAS_RETRACT ; } impl Default for GimbalDeviceCapFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum AdsbAltitudeType { ADSB_ALTITUDE_TYPE_PRESSURE_QNH = 0 , ADSB_ALTITUDE_TYPE_GEOMETRIC = 1 , } impl AdsbAltitudeType { pub const DEFAULT : Self = Self :: ADSB_ALTITUDE_TYPE_PRESSURE_QNH ; } impl Default for AdsbAltitudeType { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavEstimatorType { MAV_ESTIMATOR_TYPE_UNKNOWN = 0 , MAV_ESTIMATOR_TYPE_NAIVE = 1 , MAV_ESTIMATOR_TYPE_VISION = 2 , MAV_ESTIMATOR_TYPE_VIO = 3 , MAV_ESTIMATOR_TYPE_GPS = 4 , MAV_ESTIMATOR_TYPE_GPS_INS = 5 , MAV_ESTIMATOR_TYPE_MOCAP = 6 , MAV_ESTIMATOR_TYPE_LIDAR = 7 , MAV_ESTIMATOR_TYPE_AUTOPILOT = 8 , } impl MavEstimatorType { pub const DEFAULT : Self = Self :: MAV_ESTIMATOR_TYPE_UNKNOWN ; } impl Default for MavEstimatorType { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GpsInputIgnoreFlags : u16 { const GPS_INPUT_IGNORE_FLAG_ALT = 1 ; const GPS_INPUT_IGNORE_FLAG_HDOP = 2 ; const GPS_INPUT_IGNORE_FLAG_VDOP = 4 ; const GPS_INPUT_IGNORE_FLAG_VEL_HORIZ = 8 ; const GPS_INPUT_IGNORE_FLAG_VEL_VERT = 16 ; const GPS_INPUT_IGNORE_FLAG_SPEED_ACCURACY = 32 ; const GPS_INPUT_IGNORE_FLAG_HORIZONTAL_ACCURACY = 64 ; const GPS_INPUT_IGNORE_FLAG_VERTICAL_ACCURACY = 128 ; } } impl GpsInputIgnoreFlags { pub const DEFAULT : Self = Self :: GPS_INPUT_IGNORE_FLAG_ALT ; } impl Default for GpsInputIgnoreFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavBatteryFunction { MAV_BATTERY_FUNCTION_UNKNOWN = 0 , MAV_BATTERY_FUNCTION_ALL = 1 , MAV_BATTERY_FUNCTION_PROPULSION = 2 , MAV_BATTERY_FUNCTION_AVIONICS = 3 , MAV_BATTERY_FUNCTION_PAYLOAD = 4 , } impl MavBatteryFunction { pub const DEFAULT : Self = Self :: MAV_BATTERY_FUNCTION_UNKNOWN ; } impl Default for MavBatteryFunction { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HighresImuUpdatedFlags : u16 { const HIGHRES_IMU_UPDATED_NONE = 0 ; const HIGHRES_IMU_UPDATED_XACC = 1 ; const HIGHRES_IMU_UPDATED_YACC = 2 ; const HIGHRES_IMU_UPDATED_ZACC = 4 ; const HIGHRES_IMU_UPDATED_XGYRO = 8 ; const HIGHRES_IMU_UPDATED_YGYRO = 16 ; const HIGHRES_IMU_UPDATED_ZGYRO = 32 ; const HIGHRES_IMU_UPDATED_XMAG = 64 ; const HIGHRES_IMU_UPDATED_YMAG = 128 ; const HIGHRES_IMU_UPDATED_ZMAG = 256 ; const HIGHRES_IMU_UPDATED_ABS_PRESSURE = 512 ; const HIGHRES_IMU_UPDATED_DIFF_PRESSURE = 1024 ; const HIGHRES_IMU_UPDATED_PRESSURE_ALT = 2048 ; const HIGHRES_IMU_UPDATED_TEMPERATURE = 4096 ; const HIGHRES_IMU_UPDATED_ALL = 65535 ; } } impl HighresImuUpdatedFlags { pub const DEFAULT : Self = Self :: HIGHRES_IMU_UPDATED_NONE ; } impl Default for HighresImuUpdatedFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidStatus { MAV_ODID_STATUS_UNDECLARED = 0 , MAV_ODID_STATUS_GROUND = 1 , MAV_ODID_STATUS_AIRBORNE = 2 , MAV_ODID_STATUS_EMERGENCY = 3 , MAV_ODID_STATUS_REMOTE_ID_SYSTEM_FAILURE = 4 , } impl MavOdidStatus { pub const DEFAULT : Self = Self :: MAV_ODID_STATUS_UNDECLARED ; } impl Default for MavOdidStatus { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavOdidHeightRef { MAV_ODID_HEIGHT_REF_OVER_TAKEOFF = 0 , MAV_ODID_HEIGHT_REF_OVER_GROUND = 1 , } impl MavOdidHeightRef { pub const DEFAULT : Self = Self :: MAV_ODID_HEIGHT_REF_OVER_TAKEOFF ; } impl Default for MavOdidHeightRef { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavSeverity { MAV_SEVERITY_EMERGENCY = 0 , MAV_SEVERITY_ALERT = 1 , MAV_SEVERITY_CRITICAL = 2 , MAV_SEVERITY_ERROR = 3 , MAV_SEVERITY_WARNING = 4 , MAV_SEVERITY_NOTICE = 5 , MAV_SEVERITY_INFO = 6 , MAV_SEVERITY_DEBUG = 7 , } impl MavSeverity { pub const DEFAULT : Self = Self :: MAV_SEVERITY_EMERGENCY ; } impl Default for MavSeverity { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MagCalStatus { MAG_CAL_NOT_STARTED = 0 , MAG_CAL_WAITING_TO_START = 1 , MAG_CAL_RUNNING_STEP_ONE = 2 , MAG_CAL_RUNNING_STEP_TWO = 3 , MAG_CAL_SUCCESS = 4 , MAG_CAL_FAILED = 5 , MAG_CAL_BAD_ORIENTATION = 6 , MAG_CAL_BAD_RADIUS = 7 , } impl MagCalStatus { pub const DEFAULT : Self = Self :: MAG_CAL_NOT_STARTED ; } impl Default for MagCalStatus { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum UavionixAdsbOutDynamicGpsFix { UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX_NONE_0 = 0 , UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX_NONE_1 = 1 , UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX_2D = 2 , UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX_3D = 3 , UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX_DGPS = 4 , UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX_RTK = 5 , } impl UavionixAdsbOutDynamicGpsFix { pub const DEFAULT : Self = Self :: UAVIONIX_ADSB_OUT_DYNAMIC_GPS_FIX_NONE_0 ; } impl Default for UavionixAdsbOutDynamicGpsFix { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum WifiConfigApMode { WIFI_CONFIG_AP_MODE_UNDEFINED = 0 , WIFI_CONFIG_AP_MODE_AP = 1 , WIFI_CONFIG_AP_MODE_STATION = 2 , WIFI_CONFIG_AP_MODE_DISABLED = 3 , } impl WifiConfigApMode { pub const DEFAULT : Self = Self :: WIFI_CONFIG_AP_MODE_UNDEFINED ; } impl Default for WifiConfigApMode { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MavGeneratorStatusFlag : u64 { const MAV_GENERATOR_STATUS_FLAG_OFF = 1 ; const MAV_GENERATOR_STATUS_FLAG_READY = 2 ; const MAV_GENERATOR_STATUS_FLAG_GENERATING = 4 ; const MAV_GENERATOR_STATUS_FLAG_CHARGING = 8 ; const MAV_GENERATOR_STATUS_FLAG_REDUCED_POWER = 16 ; const MAV_GENERATOR_STATUS_FLAG_MAXPOWER = 32 ; const MAV_GENERATOR_STATUS_FLAG_OVERTEMP_WARNING = 64 ; const MAV_GENERATOR_STATUS_FLAG_OVERTEMP_FAULT = 128 ; const MAV_GENERATOR_STATUS_FLAG_ELECTRONICS_OVERTEMP_WARNING = 256 ; const MAV_GENERATOR_STATUS_FLAG_ELECTRONICS_OVERTEMP_FAULT = 512 ; const MAV_GENERATOR_STATUS_FLAG_ELECTRONICS_FAULT = 1024 ; const MAV_GENERATOR_STATUS_FLAG_POWERSOURCE_FAULT = 2048 ; const MAV_GENERATOR_STATUS_FLAG_COMMUNICATION_WARNING = 4096 ; const MAV_GENERATOR_STATUS_FLAG_COOLING_WARNING = 8192 ; const MAV_GENERATOR_STATUS_FLAG_POWER_RAIL_FAULT = 16384 ; const MAV_GENERATOR_STATUS_FLAG_OVERCURRENT_FAULT = 32768 ; const MAV_GENERATOR_STATUS_FLAG_BATTERY_OVERCHARGE_CURRENT_FAULT = 65536 ; const MAV_GENERATOR_STATUS_FLAG_OVERVOLTAGE_FAULT = 131072 ; const MAV_GENERATOR_STATUS_FLAG_BATTERY_UNDERVOLT_FAULT = 262144 ; const MAV_GENERATOR_STATUS_FLAG_START_INHIBITED = 524288 ; const MAV_GENERATOR_STATUS_FLAG_MAINTENANCE_REQUIRED = 1048576 ; const MAV_GENERATOR_STATUS_FLAG_WARMING_UP = 2097152 ; const MAV_GENERATOR_STATUS_FLAG_IDLE = 4194304 ; } } impl MavGeneratorStatusFlag { pub const DEFAULT : Self = Self :: MAV_GENERATOR_STATUS_FLAG_OFF ; } impl Default for MavGeneratorStatusFlag { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MavSysStatusSensor : u32 { const MAV_SYS_STATUS_SENSOR_3D_GYRO = 1 ; const MAV_SYS_STATUS_SENSOR_3D_ACCEL = 2 ; const MAV_SYS_STATUS_SENSOR_3D_MAG = 4 ; const MAV_SYS_STATUS_SENSOR_ABSOLUTE_PRESSURE = 8 ; const MAV_SYS_STATUS_SENSOR_DIFFERENTIAL_PRESSURE = 16 ; const MAV_SYS_STATUS_SENSOR_GPS = 32 ; const MAV_SYS_STATUS_SENSOR_OPTICAL_FLOW = 64 ; const MAV_SYS_STATUS_SENSOR_VISION_POSITION = 128 ; const MAV_SYS_STATUS_SENSOR_LASER_POSITION = 256 ; const MAV_SYS_STATUS_SENSOR_EXTERNAL_GROUND_TRUTH = 512 ; const MAV_SYS_STATUS_SENSOR_ANGULAR_RATE_CONTROL = 1024 ; const MAV_SYS_STATUS_SENSOR_ATTITUDE_STABILIZATION = 2048 ; const MAV_SYS_STATUS_SENSOR_YAW_POSITION = 4096 ; const MAV_SYS_STATUS_SENSOR_Z_ALTITUDE_CONTROL = 8192 ; const MAV_SYS_STATUS_SENSOR_XY_POSITION_CONTROL = 16384 ; const MAV_SYS_STATUS_SENSOR_MOTOR_OUTPUTS = 32768 ; const MAV_SYS_STATUS_SENSOR_RC_RECEIVER = 65536 ; const MAV_SYS_STATUS_SENSOR_3D_GYRO2 = 131072 ; const MAV_SYS_STATUS_SENSOR_3D_ACCEL2 = 262144 ; const MAV_SYS_STATUS_SENSOR_3D_MAG2 = 524288 ; const MAV_SYS_STATUS_GEOFENCE = 1048576 ; const MAV_SYS_STATUS_AHRS = 2097152 ; const MAV_SYS_STATUS_TERRAIN = 4194304 ; const MAV_SYS_STATUS_REVERSE_MOTOR = 8388608 ; const MAV_SYS_STATUS_LOGGING = 16777216 ; const MAV_SYS_STATUS_SENSOR_BATTERY = 33554432 ; const MAV_SYS_STATUS_SENSOR_PROXIMITY = 67108864 ; const MAV_SYS_STATUS_SENSOR_SATCOM = 134217728 ; const MAV_SYS_STATUS_PREARM_CHECK = 268435456 ; const MAV_SYS_STATUS_OBSTACLE_AVOIDANCE = 536870912 ; const MAV_SYS_STATUS_SENSOR_PROPULSION = 1073741824 ; const MAV_SYS_STATUS_EXTENSION_USED = 2147483648 ; } } impl MavSysStatusSensor { pub const DEFAULT : Self = Self :: MAV_SYS_STATUS_SENSOR_3D_GYRO ; } impl Default for MavSysStatusSensor { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavFtpOpcode { MAV_FTP_OPCODE_NONE = 0 , MAV_FTP_OPCODE_TERMINATESESSION = 1 , MAV_FTP_OPCODE_RESETSESSION = 2 , MAV_FTP_OPCODE_LISTDIRECTORY = 3 , MAV_FTP_OPCODE_OPENFILERO = 4 , MAV_FTP_OPCODE_READFILE = 5 , MAV_FTP_OPCODE_CREATEFILE = 6 , MAV_FTP_OPCODE_WRITEFILE = 7 , MAV_FTP_OPCODE_REMOVEFILE = 8 , MAV_FTP_OPCODE_CREATEDIRECTORY = 9 , MAV_FTP_OPCODE_REMOVEDIRECTORY = 10 , MAV_FTP_OPCODE_OPENFILEWO = 11 , MAV_FTP_OPCODE_TRUNCATEFILE = 12 , MAV_FTP_OPCODE_RENAME = 13 , MAV_FTP_OPCODE_CALCFILECRC = 14 , MAV_FTP_OPCODE_BURSTREADFILE = 15 , MAV_FTP_OPCODE_ACK = 128 , MAV_FTP_OPCODE_NAK = 129 , } impl MavFtpOpcode { pub const DEFAULT : Self = Self :: MAV_FTP_OPCODE_NONE ; } impl Default for MavFtpOpcode { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavMode { MAV_MODE_PREFLIGHT = 0 , MAV_MODE_STABILIZE_DISARMED = 80 , MAV_MODE_STABILIZE_ARMED = 208 , MAV_MODE_MANUAL_DISARMED = 64 , MAV_MODE_MANUAL_ARMED = 192 , MAV_MODE_GUIDED_DISARMED = 88 , MAV_MODE_GUIDED_ARMED = 216 , MAV_MODE_AUTO_DISARMED = 92 , MAV_MODE_AUTO_ARMED = 220 , MAV_MODE_TEST_DISARMED = 66 , MAV_MODE_TEST_ARMED = 194 , } impl MavMode { pub const DEFAULT : Self = Self :: MAV_MODE_PREFLIGHT ; } impl Default for MavMode { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum WinchActions { WINCH_RELAXED = 0 , WINCH_RELATIVE_LENGTH_CONTROL = 1 , WINCH_RATE_CONTROL = 2 , WINCH_LOCK = 3 , WINCH_DELIVER = 4 , WINCH_HOLD = 5 , WINCH_RETRACT = 6 , WINCH_LOAD_LINE = 7 , WINCH_ABANDON_LINE = 8 , WINCH_LOAD_PAYLOAD = 9 , } impl WinchActions { pub const DEFAULT : Self = Self :: WINCH_RELAXED ; } impl Default for WinchActions { fn default () -> Self { Self :: DEFAULT } } bitflags ! { # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct EstimatorStatusFlags : u16 { const ESTIMATOR_ATTITUDE = 1 ; const ESTIMATOR_VELOCITY_HORIZ = 2 ; const ESTIMATOR_VELOCITY_VERT = 4 ; const ESTIMATOR_POS_HORIZ_REL = 8 ; const ESTIMATOR_POS_HORIZ_ABS = 16 ; const ESTIMATOR_POS_VERT_ABS = 32 ; const ESTIMATOR_POS_VERT_AGL = 64 ; const ESTIMATOR_CONST_POS_MODE = 128 ; const ESTIMATOR_PRED_POS_HORIZ_REL = 256 ; const ESTIMATOR_PRED_POS_HORIZ_ABS = 512 ; const ESTIMATOR_GPS_GLITCH = 1024 ; const ESTIMATOR_ACCEL_ERROR = 2048 ; } } impl EstimatorStatusFlags { pub const DEFAULT : Self = Self :: ESTIMATOR_ATTITUDE ; } impl Default for EstimatorStatusFlags { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum UavionixAdsbEmergencyStatus { UAVIONIX_ADSB_OUT_NO_EMERGENCY = 0 , UAVIONIX_ADSB_OUT_GENERAL_EMERGENCY = 1 , UAVIONIX_ADSB_OUT_LIFEGUARD_EMERGENCY = 2 , UAVIONIX_ADSB_OUT_MINIMUM_FUEL_EMERGENCY = 3 , UAVIONIX_ADSB_OUT_NO_COMM_EMERGENCY = 4 , UAVIONIX_ADSB_OUT_UNLAWFUL_INTERFERANCE_EMERGENCY = 5 , UAVIONIX_ADSB_OUT_DOWNED_AIRCRAFT_EMERGENCY = 6 , UAVIONIX_ADSB_OUT_RESERVED = 7 , } impl UavionixAdsbEmergencyStatus { pub const DEFAULT : Self = Self :: UAVIONIX_ADSB_OUT_NO_EMERGENCY ; } impl Default for UavionixAdsbEmergencyStatus { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum CameraTrackingMode { CAMERA_TRACKING_MODE_NONE = 0 , CAMERA_TRACKING_MODE_POINT = 1 , CAMERA_TRACKING_MODE_RECTANGLE = 2 , } impl CameraTrackingMode { pub const DEFAULT : Self = Self :: CAMERA_TRACKING_MODE_NONE ; } impl Default for CameraTrackingMode { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum UavionixAdsbOutCfgGpsOffsetLat { UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_NO_DATA = 0 , UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_LEFT_2M = 1 , UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_LEFT_4M = 2 , UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_LEFT_6M = 3 , UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_RIGHT_0M = 4 , UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_RIGHT_2M = 5 , UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_RIGHT_4M = 6 , UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_RIGHT_6M = 7 , } impl UavionixAdsbOutCfgGpsOffsetLat { pub const DEFAULT : Self = Self :: UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_NO_DATA ; } impl Default for UavionixAdsbOutCfgGpsOffsetLat { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Copy , Clone , PartialEq , FromPrimitive , ToPrimitive)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum FenceAction { FENCE_ACTION_NONE = 0 , FENCE_ACTION_GUIDED = 1 , FENCE_ACTION_REPORT = 2 , FENCE_ACTION_GUIDED_THR_PASS = 3 , FENCE_ACTION_RTL = 4 , FENCE_ACTION_HOLD = 5 , FENCE_ACTION_TERMINATE = 6 , FENCE_ACTION_LAND = 7 , } impl FenceAction { pub const DEFAULT : Self = Self :: FENCE_ACTION_NONE ; } impl Default for FenceAction { fn default () -> Self { Self :: DEFAULT } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct UAVIONIX_ADSB_OUT_CFG_DATA { pub ICAO : u32 , pub stallSpeed : u16 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub callsign : [u8 ; 9] , pub emitterType : AdsbEmitterType , pub aircraftSize : UavionixAdsbOutCfgAircraftSize , pub gpsOffsetLat : UavionixAdsbOutCfgGpsOffsetLat , pub gpsOffsetLon : UavionixAdsbOutCfgGpsOffsetLon , pub rfSelect : UavionixAdsbOutRfSelect , } impl UAVIONIX_ADSB_OUT_CFG_DATA { pub const ENCODED_LEN : usize = 20usize ; pub const DEFAULT : Self = Self { ICAO : 0_u32 , stallSpeed : 0_u16 , callsign : [0_u8 ; 9usize] , emitterType : AdsbEmitterType :: DEFAULT , aircraftSize : UavionixAdsbOutCfgAircraftSize :: DEFAULT , gpsOffsetLat : UavionixAdsbOutCfgGpsOffsetLat :: DEFAULT , gpsOffsetLon : UavionixAdsbOutCfgGpsOffsetLon :: DEFAULT , rfSelect : UavionixAdsbOutRfSelect :: DEFAULT , } ; } impl Default for UAVIONIX_ADSB_OUT_CFG_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for UAVIONIX_ADSB_OUT_CFG_DATA { type Message = MavMessage ; const ID : u32 = 10001u32 ; const NAME : & 'static str = "UAVIONIX_ADSB_OUT_CFG" ; const EXTRA_CRC : u8 = 209u8 ; const ENCODED_LEN : usize = 20usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . ICAO = buf . get_u32_le () ; __struct . stallSpeed = buf . get_u16_le () ; for v in & mut __struct . callsign { let val = buf . get_u8 () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . emitterType = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "AdsbEmitterType" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . aircraftSize = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "UavionixAdsbOutCfgAircraftSize" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . gpsOffsetLat = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "UavionixAdsbOutCfgGpsOffsetLat" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . gpsOffsetLon = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "UavionixAdsbOutCfgGpsOffsetLon" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . rfSelect = UavionixAdsbOutRfSelect :: from_bits (tmp & UavionixAdsbOutRfSelect :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "UavionixAdsbOutRfSelect" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . ICAO) ; __tmp . put_u16_le (self . stallSpeed) ; for val in & self . callsign { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . emitterType as u8) ; __tmp . put_u8 (self . aircraftSize as u8) ; __tmp . put_u8 (self . gpsOffsetLat as u8) ; __tmp . put_u8 (self . gpsOffsetLon as u8) ; __tmp . put_u8 (self . rfSelect . bits ()) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ADSB_VEHICLE_DATA { pub ICAO_address : u32 , pub lat : i32 , pub lon : i32 , pub altitude : i32 , pub heading : u16 , pub hor_velocity : u16 , pub ver_velocity : i16 , pub flags : AdsbFlags , pub squawk : u16 , pub altitude_type : AdsbAltitudeType , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub callsign : [u8 ; 9] , pub emitter_type : AdsbEmitterType , pub tslc : u8 , } impl ADSB_VEHICLE_DATA { pub const ENCODED_LEN : usize = 38usize ; pub const DEFAULT : Self = Self { ICAO_address : 0_u32 , lat : 0_i32 , lon : 0_i32 , altitude : 0_i32 , heading : 0_u16 , hor_velocity : 0_u16 , ver_velocity : 0_i16 , flags : AdsbFlags :: DEFAULT , squawk : 0_u16 , altitude_type : AdsbAltitudeType :: DEFAULT , callsign : [0_u8 ; 9usize] , emitter_type : AdsbEmitterType :: DEFAULT , tslc : 0_u8 , } ; } impl Default for ADSB_VEHICLE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ADSB_VEHICLE_DATA { type Message = MavMessage ; const ID : u32 = 246u32 ; const NAME : & 'static str = "ADSB_VEHICLE" ; const EXTRA_CRC : u8 = 184u8 ; const ENCODED_LEN : usize = 38usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . ICAO_address = buf . get_u32_le () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . altitude = buf . get_i32_le () ; __struct . heading = buf . get_u16_le () ; __struct . hor_velocity = buf . get_u16_le () ; __struct . ver_velocity = buf . get_i16_le () ; let tmp = buf . get_u16_le () ; __struct . flags = AdsbFlags :: from_bits (tmp & AdsbFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "AdsbFlags" , value : tmp as u32 }) ? ; __struct . squawk = buf . get_u16_le () ; let tmp = buf . get_u8 () ; __struct . altitude_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "AdsbAltitudeType" , value : tmp as u32 }) ? ; for v in & mut __struct . callsign { let val = buf . get_u8 () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . emitter_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "AdsbEmitterType" , value : tmp as u32 }) ? ; __struct . tslc = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . ICAO_address) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_i32_le (self . altitude) ; __tmp . put_u16_le (self . heading) ; __tmp . put_u16_le (self . hor_velocity) ; __tmp . put_i16_le (self . ver_velocity) ; __tmp . put_u16_le (self . flags . bits ()) ; __tmp . put_u16_le (self . squawk) ; __tmp . put_u8 (self . altitude_type as u8) ; for val in & self . callsign { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . emitter_type as u8) ; __tmp . put_u8 (self . tslc) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MISSION_ITEM_DATA { pub param1 : f32 , pub param2 : f32 , pub param3 : f32 , pub param4 : f32 , pub x : f32 , pub y : f32 , pub z : f32 , pub seq : u16 , pub command : MavCmd , pub target_system : u8 , pub target_component : u8 , pub frame : MavFrame , pub current : u8 , pub autocontinue : u8 , } impl MISSION_ITEM_DATA { pub const ENCODED_LEN : usize = 37usize ; pub const DEFAULT : Self = Self { param1 : 0.0_f32 , param2 : 0.0_f32 , param3 : 0.0_f32 , param4 : 0.0_f32 , x : 0.0_f32 , y : 0.0_f32 , z : 0.0_f32 , seq : 0_u16 , command : MavCmd :: DEFAULT , target_system : 0_u8 , target_component : 0_u8 , frame : MavFrame :: DEFAULT , current : 0_u8 , autocontinue : 0_u8 , } ; } impl Default for MISSION_ITEM_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MISSION_ITEM_DATA { type Message = MavMessage ; const ID : u32 = 39u32 ; const NAME : & 'static str = "MISSION_ITEM" ; const EXTRA_CRC : u8 = 254u8 ; const ENCODED_LEN : usize = 37usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . param1 = buf . get_f32_le () ; __struct . param2 = buf . get_f32_le () ; __struct . param3 = buf . get_f32_le () ; __struct . param4 = buf . get_f32_le () ; __struct . x = buf . get_f32_le () ; __struct . y = buf . get_f32_le () ; __struct . z = buf . get_f32_le () ; __struct . seq = buf . get_u16_le () ; let tmp = buf . get_u16_le () ; __struct . command = FromPrimitive :: from_u16 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavCmd" , value : tmp as u32 }) ? ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . frame = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavFrame" , value : tmp as u32 }) ? ; __struct . current = buf . get_u8 () ; __struct . autocontinue = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . param1) ; __tmp . put_f32_le (self . param2) ; __tmp . put_f32_le (self . param3) ; __tmp . put_f32_le (self . param4) ; __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; __tmp . put_u16_le (self . seq) ; __tmp . put_u16_le (self . command as u16) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . frame as u8) ; __tmp . put_u8 (self . current) ; __tmp . put_u8 (self . autocontinue) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CAMERA_TRIGGER_DATA { pub time_usec : u64 , pub seq : u32 , } impl CAMERA_TRIGGER_DATA { pub const ENCODED_LEN : usize = 12usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , seq : 0_u32 , } ; } impl Default for CAMERA_TRIGGER_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CAMERA_TRIGGER_DATA { type Message = MavMessage ; const ID : u32 = 112u32 ; const NAME : & 'static str = "CAMERA_TRIGGER" ; const EXTRA_CRC : u8 = 174u8 ; const ENCODED_LEN : usize = 12usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . seq = buf . get_u32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_u32_le (self . seq) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ONBOARD_COMPUTER_STATUS_DATA { pub time_usec : u64 , pub uptime : u32 , pub ram_usage : u32 , pub ram_total : u32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub storage_type : [u32 ; 4] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub storage_usage : [u32 ; 4] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub storage_total : [u32 ; 4] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub link_type : [u32 ; 6] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub link_tx_rate : [u32 ; 6] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub link_rx_rate : [u32 ; 6] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub link_tx_max : [u32 ; 6] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub link_rx_max : [u32 ; 6] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub fan_speed : [i16 ; 4] , pub mavtype : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub cpu_cores : [u8 ; 8] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub cpu_combined : [u8 ; 10] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub gpu_cores : [u8 ; 4] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub gpu_combined : [u8 ; 10] , pub temperature_board : i8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub temperature_core : [i8 ; 8] , } impl ONBOARD_COMPUTER_STATUS_DATA { pub const ENCODED_LEN : usize = 238usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , uptime : 0_u32 , ram_usage : 0_u32 , ram_total : 0_u32 , storage_type : [0_u32 ; 4usize] , storage_usage : [0_u32 ; 4usize] , storage_total : [0_u32 ; 4usize] , link_type : [0_u32 ; 6usize] , link_tx_rate : [0_u32 ; 6usize] , link_rx_rate : [0_u32 ; 6usize] , link_tx_max : [0_u32 ; 6usize] , link_rx_max : [0_u32 ; 6usize] , fan_speed : [0_i16 ; 4usize] , mavtype : 0_u8 , cpu_cores : [0_u8 ; 8usize] , cpu_combined : [0_u8 ; 10usize] , gpu_cores : [0_u8 ; 4usize] , gpu_combined : [0_u8 ; 10usize] , temperature_board : 0_i8 , temperature_core : [0_i8 ; 8usize] , } ; } impl Default for ONBOARD_COMPUTER_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ONBOARD_COMPUTER_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 390u32 ; const NAME : & 'static str = "ONBOARD_COMPUTER_STATUS" ; const EXTRA_CRC : u8 = 156u8 ; const ENCODED_LEN : usize = 238usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . uptime = buf . get_u32_le () ; __struct . ram_usage = buf . get_u32_le () ; __struct . ram_total = buf . get_u32_le () ; for v in & mut __struct . storage_type { let val = buf . get_u32_le () ; * v = val ; } for v in & mut __struct . storage_usage { let val = buf . get_u32_le () ; * v = val ; } for v in & mut __struct . storage_total { let val = buf . get_u32_le () ; * v = val ; } for v in & mut __struct . link_type { let val = buf . get_u32_le () ; * v = val ; } for v in & mut __struct . link_tx_rate { let val = buf . get_u32_le () ; * v = val ; } for v in & mut __struct . link_rx_rate { let val = buf . get_u32_le () ; * v = val ; } for v in & mut __struct . link_tx_max { let val = buf . get_u32_le () ; * v = val ; } for v in & mut __struct . link_rx_max { let val = buf . get_u32_le () ; * v = val ; } for v in & mut __struct . fan_speed { let val = buf . get_i16_le () ; * v = val ; } __struct . mavtype = buf . get_u8 () ; for v in & mut __struct . cpu_cores { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . cpu_combined { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . gpu_cores { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . gpu_combined { let val = buf . get_u8 () ; * v = val ; } __struct . temperature_board = buf . get_i8 () ; for v in & mut __struct . temperature_core { let val = buf . get_i8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_u32_le (self . uptime) ; __tmp . put_u32_le (self . ram_usage) ; __tmp . put_u32_le (self . ram_total) ; for val in & self . storage_type { __tmp . put_u32_le (* val) ; } for val in & self . storage_usage { __tmp . put_u32_le (* val) ; } for val in & self . storage_total { __tmp . put_u32_le (* val) ; } for val in & self . link_type { __tmp . put_u32_le (* val) ; } for val in & self . link_tx_rate { __tmp . put_u32_le (* val) ; } for val in & self . link_rx_rate { __tmp . put_u32_le (* val) ; } for val in & self . link_tx_max { __tmp . put_u32_le (* val) ; } for val in & self . link_rx_max { __tmp . put_u32_le (* val) ; } for val in & self . fan_speed { __tmp . put_i16_le (* val) ; } __tmp . put_u8 (self . mavtype) ; for val in & self . cpu_cores { __tmp . put_u8 (* val) ; } for val in & self . cpu_combined { __tmp . put_u8 (* val) ; } for val in & self . gpu_cores { __tmp . put_u8 (* val) ; } for val in & self . gpu_combined { __tmp . put_u8 (* val) ; } __tmp . put_i8 (self . temperature_board) ; for val in & self . temperature_core { __tmp . put_i8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ATTITUDE_TARGET_DATA { pub time_boot_ms : u32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub q : [f32 ; 4] , pub body_roll_rate : f32 , pub body_pitch_rate : f32 , pub body_yaw_rate : f32 , pub thrust : f32 , pub type_mask : AttitudeTargetTypemask , } impl ATTITUDE_TARGET_DATA { pub const ENCODED_LEN : usize = 37usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , q : [0.0_f32 ; 4usize] , body_roll_rate : 0.0_f32 , body_pitch_rate : 0.0_f32 , body_yaw_rate : 0.0_f32 , thrust : 0.0_f32 , type_mask : AttitudeTargetTypemask :: DEFAULT , } ; } impl Default for ATTITUDE_TARGET_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ATTITUDE_TARGET_DATA { type Message = MavMessage ; const ID : u32 = 83u32 ; const NAME : & 'static str = "ATTITUDE_TARGET" ; const EXTRA_CRC : u8 = 22u8 ; const ENCODED_LEN : usize = 37usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; for v in & mut __struct . q { let val = buf . get_f32_le () ; * v = val ; } __struct . body_roll_rate = buf . get_f32_le () ; __struct . body_pitch_rate = buf . get_f32_le () ; __struct . body_yaw_rate = buf . get_f32_le () ; __struct . thrust = buf . get_f32_le () ; let tmp = buf . get_u8 () ; __struct . type_mask = AttitudeTargetTypemask :: from_bits (tmp & AttitudeTargetTypemask :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "AttitudeTargetTypemask" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; for val in & self . q { __tmp . put_f32_le (* val) ; } __tmp . put_f32_le (self . body_roll_rate) ; __tmp . put_f32_le (self . body_pitch_rate) ; __tmp . put_f32_le (self . body_yaw_rate) ; __tmp . put_f32_le (self . thrust) ; __tmp . put_u8 (self . type_mask . bits ()) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HIGH_LATENCY2_DATA { pub timestamp : u32 , pub latitude : i32 , pub longitude : i32 , pub custom_mode : u16 , pub altitude : i16 , pub target_altitude : i16 , pub target_distance : u16 , pub wp_num : u16 , pub failure_flags : HlFailureFlag , pub mavtype : MavType , pub autopilot : MavAutopilot , pub heading : u8 , pub target_heading : u8 , pub throttle : u8 , pub airspeed : u8 , pub airspeed_sp : u8 , pub groundspeed : u8 , pub windspeed : u8 , pub wind_heading : u8 , pub eph : u8 , pub epv : u8 , pub temperature_air : i8 , pub climb_rate : i8 , pub battery : i8 , pub custom0 : i8 , pub custom1 : i8 , pub custom2 : i8 , } impl HIGH_LATENCY2_DATA { pub const ENCODED_LEN : usize = 42usize ; pub const DEFAULT : Self = Self { timestamp : 0_u32 , latitude : 0_i32 , longitude : 0_i32 , custom_mode : 0_u16 , altitude : 0_i16 , target_altitude : 0_i16 , target_distance : 0_u16 , wp_num : 0_u16 , failure_flags : HlFailureFlag :: DEFAULT , mavtype : MavType :: DEFAULT , autopilot : MavAutopilot :: DEFAULT , heading : 0_u8 , target_heading : 0_u8 , throttle : 0_u8 , airspeed : 0_u8 , airspeed_sp : 0_u8 , groundspeed : 0_u8 , windspeed : 0_u8 , wind_heading : 0_u8 , eph : 0_u8 , epv : 0_u8 , temperature_air : 0_i8 , climb_rate : 0_i8 , battery : 0_i8 , custom0 : 0_i8 , custom1 : 0_i8 , custom2 : 0_i8 , } ; } impl Default for HIGH_LATENCY2_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for HIGH_LATENCY2_DATA { type Message = MavMessage ; const ID : u32 = 235u32 ; const NAME : & 'static str = "HIGH_LATENCY2" ; const EXTRA_CRC : u8 = 179u8 ; const ENCODED_LEN : usize = 42usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . timestamp = buf . get_u32_le () ; __struct . latitude = buf . get_i32_le () ; __struct . longitude = buf . get_i32_le () ; __struct . custom_mode = buf . get_u16_le () ; __struct . altitude = buf . get_i16_le () ; __struct . target_altitude = buf . get_i16_le () ; __struct . target_distance = buf . get_u16_le () ; __struct . wp_num = buf . get_u16_le () ; let tmp = buf . get_u16_le () ; __struct . failure_flags = HlFailureFlag :: from_bits (tmp & HlFailureFlag :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "HlFailureFlag" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . mavtype = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavType" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . autopilot = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavAutopilot" , value : tmp as u32 }) ? ; __struct . heading = buf . get_u8 () ; __struct . target_heading = buf . get_u8 () ; __struct . throttle = buf . get_u8 () ; __struct . airspeed = buf . get_u8 () ; __struct . airspeed_sp = buf . get_u8 () ; __struct . groundspeed = buf . get_u8 () ; __struct . windspeed = buf . get_u8 () ; __struct . wind_heading = buf . get_u8 () ; __struct . eph = buf . get_u8 () ; __struct . epv = buf . get_u8 () ; __struct . temperature_air = buf . get_i8 () ; __struct . climb_rate = buf . get_i8 () ; __struct . battery = buf . get_i8 () ; __struct . custom0 = buf . get_i8 () ; __struct . custom1 = buf . get_i8 () ; __struct . custom2 = buf . get_i8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . timestamp) ; __tmp . put_i32_le (self . latitude) ; __tmp . put_i32_le (self . longitude) ; __tmp . put_u16_le (self . custom_mode) ; __tmp . put_i16_le (self . altitude) ; __tmp . put_i16_le (self . target_altitude) ; __tmp . put_u16_le (self . target_distance) ; __tmp . put_u16_le (self . wp_num) ; __tmp . put_u16_le (self . failure_flags . bits ()) ; __tmp . put_u8 (self . mavtype as u8) ; __tmp . put_u8 (self . autopilot as u8) ; __tmp . put_u8 (self . heading) ; __tmp . put_u8 (self . target_heading) ; __tmp . put_u8 (self . throttle) ; __tmp . put_u8 (self . airspeed) ; __tmp . put_u8 (self . airspeed_sp) ; __tmp . put_u8 (self . groundspeed) ; __tmp . put_u8 (self . windspeed) ; __tmp . put_u8 (self . wind_heading) ; __tmp . put_u8 (self . eph) ; __tmp . put_u8 (self . epv) ; __tmp . put_i8 (self . temperature_air) ; __tmp . put_i8 (self . climb_rate) ; __tmp . put_i8 (self . battery) ; __tmp . put_i8 (self . custom0) ; __tmp . put_i8 (self . custom1) ; __tmp . put_i8 (self . custom2) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct DEBUG_VECT_DATA { pub time_usec : u64 , pub x : f32 , pub y : f32 , pub z : f32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub name : [u8 ; 10] , } impl DEBUG_VECT_DATA { pub const ENCODED_LEN : usize = 30usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , x : 0.0_f32 , y : 0.0_f32 , z : 0.0_f32 , name : [0_u8 ; 10usize] , } ; } impl Default for DEBUG_VECT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for DEBUG_VECT_DATA { type Message = MavMessage ; const ID : u32 = 250u32 ; const NAME : & 'static str = "DEBUG_VECT" ; const EXTRA_CRC : u8 = 49u8 ; const ENCODED_LEN : usize = 30usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . x = buf . get_f32_le () ; __struct . y = buf . get_f32_le () ; __struct . z = buf . get_f32_le () ; for v in & mut __struct . name { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; for val in & self . name { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LOG_REQUEST_END_DATA { pub target_system : u8 , pub target_component : u8 , } impl LOG_REQUEST_END_DATA { pub const ENCODED_LEN : usize = 2usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for LOG_REQUEST_END_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for LOG_REQUEST_END_DATA { type Message = MavMessage ; const ID : u32 = 122u32 ; const NAME : & 'static str = "LOG_REQUEST_END" ; const EXTRA_CRC : u8 = 203u8 ; const ENCODED_LEN : usize = 2usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct NAV_CONTROLLER_OUTPUT_DATA { pub nav_roll : f32 , pub nav_pitch : f32 , pub alt_error : f32 , pub aspd_error : f32 , pub xtrack_error : f32 , pub nav_bearing : i16 , pub target_bearing : i16 , pub wp_dist : u16 , } impl NAV_CONTROLLER_OUTPUT_DATA { pub const ENCODED_LEN : usize = 26usize ; pub const DEFAULT : Self = Self { nav_roll : 0.0_f32 , nav_pitch : 0.0_f32 , alt_error : 0.0_f32 , aspd_error : 0.0_f32 , xtrack_error : 0.0_f32 , nav_bearing : 0_i16 , target_bearing : 0_i16 , wp_dist : 0_u16 , } ; } impl Default for NAV_CONTROLLER_OUTPUT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for NAV_CONTROLLER_OUTPUT_DATA { type Message = MavMessage ; const ID : u32 = 62u32 ; const NAME : & 'static str = "NAV_CONTROLLER_OUTPUT" ; const EXTRA_CRC : u8 = 183u8 ; const ENCODED_LEN : usize = 26usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . nav_roll = buf . get_f32_le () ; __struct . nav_pitch = buf . get_f32_le () ; __struct . alt_error = buf . get_f32_le () ; __struct . aspd_error = buf . get_f32_le () ; __struct . xtrack_error = buf . get_f32_le () ; __struct . nav_bearing = buf . get_i16_le () ; __struct . target_bearing = buf . get_i16_le () ; __struct . wp_dist = buf . get_u16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . nav_roll) ; __tmp . put_f32_le (self . nav_pitch) ; __tmp . put_f32_le (self . alt_error) ; __tmp . put_f32_le (self . aspd_error) ; __tmp . put_f32_le (self . xtrack_error) ; __tmp . put_i16_le (self . nav_bearing) ; __tmp . put_i16_le (self . target_bearing) ; __tmp . put_u16_le (self . wp_dist) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct UTM_GLOBAL_POSITION_DATA { pub time : u64 , pub lat : i32 , pub lon : i32 , pub alt : i32 , pub relative_alt : i32 , pub next_lat : i32 , pub next_lon : i32 , pub next_alt : i32 , pub vx : i16 , pub vy : i16 , pub vz : i16 , pub h_acc : u16 , pub v_acc : u16 , pub vel_acc : u16 , pub update_rate : u16 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub uas_id : [u8 ; 18] , pub flight_state : UtmFlightState , pub flags : UtmDataAvailFlags , } impl UTM_GLOBAL_POSITION_DATA { pub const ENCODED_LEN : usize = 70usize ; pub const DEFAULT : Self = Self { time : 0_u64 , lat : 0_i32 , lon : 0_i32 , alt : 0_i32 , relative_alt : 0_i32 , next_lat : 0_i32 , next_lon : 0_i32 , next_alt : 0_i32 , vx : 0_i16 , vy : 0_i16 , vz : 0_i16 , h_acc : 0_u16 , v_acc : 0_u16 , vel_acc : 0_u16 , update_rate : 0_u16 , uas_id : [0_u8 ; 18usize] , flight_state : UtmFlightState :: DEFAULT , flags : UtmDataAvailFlags :: DEFAULT , } ; } impl Default for UTM_GLOBAL_POSITION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for UTM_GLOBAL_POSITION_DATA { type Message = MavMessage ; const ID : u32 = 340u32 ; const NAME : & 'static str = "UTM_GLOBAL_POSITION" ; const EXTRA_CRC : u8 = 99u8 ; const ENCODED_LEN : usize = 70usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time = buf . get_u64_le () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . alt = buf . get_i32_le () ; __struct . relative_alt = buf . get_i32_le () ; __struct . next_lat = buf . get_i32_le () ; __struct . next_lon = buf . get_i32_le () ; __struct . next_alt = buf . get_i32_le () ; __struct . vx = buf . get_i16_le () ; __struct . vy = buf . get_i16_le () ; __struct . vz = buf . get_i16_le () ; __struct . h_acc = buf . get_u16_le () ; __struct . v_acc = buf . get_u16_le () ; __struct . vel_acc = buf . get_u16_le () ; __struct . update_rate = buf . get_u16_le () ; for v in & mut __struct . uas_id { let val = buf . get_u8 () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . flight_state = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "UtmFlightState" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . flags = UtmDataAvailFlags :: from_bits (tmp & UtmDataAvailFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "UtmDataAvailFlags" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_i32_le (self . alt) ; __tmp . put_i32_le (self . relative_alt) ; __tmp . put_i32_le (self . next_lat) ; __tmp . put_i32_le (self . next_lon) ; __tmp . put_i32_le (self . next_alt) ; __tmp . put_i16_le (self . vx) ; __tmp . put_i16_le (self . vy) ; __tmp . put_i16_le (self . vz) ; __tmp . put_u16_le (self . h_acc) ; __tmp . put_u16_le (self . v_acc) ; __tmp . put_u16_le (self . vel_acc) ; __tmp . put_u16_le (self . update_rate) ; for val in & self . uas_id { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . flight_state as u8) ; __tmp . put_u8 (self . flags . bits ()) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GPS_INPUT_DATA { pub time_usec : u64 , pub time_week_ms : u32 , pub lat : i32 , pub lon : i32 , pub alt : f32 , pub hdop : f32 , pub vdop : f32 , pub vn : f32 , pub ve : f32 , pub vd : f32 , pub speed_accuracy : f32 , pub horiz_accuracy : f32 , pub vert_accuracy : f32 , pub ignore_flags : GpsInputIgnoreFlags , pub time_week : u16 , pub gps_id : u8 , pub fix_type : u8 , pub satellites_visible : u8 , } impl GPS_INPUT_DATA { pub const ENCODED_LEN : usize = 63usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , time_week_ms : 0_u32 , lat : 0_i32 , lon : 0_i32 , alt : 0.0_f32 , hdop : 0.0_f32 , vdop : 0.0_f32 , vn : 0.0_f32 , ve : 0.0_f32 , vd : 0.0_f32 , speed_accuracy : 0.0_f32 , horiz_accuracy : 0.0_f32 , vert_accuracy : 0.0_f32 , ignore_flags : GpsInputIgnoreFlags :: DEFAULT , time_week : 0_u16 , gps_id : 0_u8 , fix_type : 0_u8 , satellites_visible : 0_u8 , } ; } impl Default for GPS_INPUT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GPS_INPUT_DATA { type Message = MavMessage ; const ID : u32 = 232u32 ; const NAME : & 'static str = "GPS_INPUT" ; const EXTRA_CRC : u8 = 151u8 ; const ENCODED_LEN : usize = 63usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . time_week_ms = buf . get_u32_le () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . alt = buf . get_f32_le () ; __struct . hdop = buf . get_f32_le () ; __struct . vdop = buf . get_f32_le () ; __struct . vn = buf . get_f32_le () ; __struct . ve = buf . get_f32_le () ; __struct . vd = buf . get_f32_le () ; __struct . speed_accuracy = buf . get_f32_le () ; __struct . horiz_accuracy = buf . get_f32_le () ; __struct . vert_accuracy = buf . get_f32_le () ; let tmp = buf . get_u16_le () ; __struct . ignore_flags = GpsInputIgnoreFlags :: from_bits (tmp & GpsInputIgnoreFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "GpsInputIgnoreFlags" , value : tmp as u32 }) ? ; __struct . time_week = buf . get_u16_le () ; __struct . gps_id = buf . get_u8 () ; __struct . fix_type = buf . get_u8 () ; __struct . satellites_visible = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_u32_le (self . time_week_ms) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_f32_le (self . alt) ; __tmp . put_f32_le (self . hdop) ; __tmp . put_f32_le (self . vdop) ; __tmp . put_f32_le (self . vn) ; __tmp . put_f32_le (self . ve) ; __tmp . put_f32_le (self . vd) ; __tmp . put_f32_le (self . speed_accuracy) ; __tmp . put_f32_le (self . horiz_accuracy) ; __tmp . put_f32_le (self . vert_accuracy) ; __tmp . put_u16_le (self . ignore_flags . bits ()) ; __tmp . put_u16_le (self . time_week) ; __tmp . put_u8 (self . gps_id) ; __tmp . put_u8 (self . fix_type) ; __tmp . put_u8 (self . satellites_visible) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct UAVCAN_NODE_STATUS_DATA { pub time_usec : u64 , pub uptime_sec : u32 , pub vendor_specific_status_code : u16 , pub health : UavcanNodeHealth , pub mode : UavcanNodeMode , pub sub_mode : u8 , } impl UAVCAN_NODE_STATUS_DATA { pub const ENCODED_LEN : usize = 17usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , uptime_sec : 0_u32 , vendor_specific_status_code : 0_u16 , health : UavcanNodeHealth :: DEFAULT , mode : UavcanNodeMode :: DEFAULT , sub_mode : 0_u8 , } ; } impl Default for UAVCAN_NODE_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for UAVCAN_NODE_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 310u32 ; const NAME : & 'static str = "UAVCAN_NODE_STATUS" ; const EXTRA_CRC : u8 = 28u8 ; const ENCODED_LEN : usize = 17usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . uptime_sec = buf . get_u32_le () ; __struct . vendor_specific_status_code = buf . get_u16_le () ; let tmp = buf . get_u8 () ; __struct . health = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "UavcanNodeHealth" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . mode = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "UavcanNodeMode" , value : tmp as u32 }) ? ; __struct . sub_mode = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_u32_le (self . uptime_sec) ; __tmp . put_u16_le (self . vendor_specific_status_code) ; __tmp . put_u8 (self . health as u8) ; __tmp . put_u8 (self . mode as u8) ; __tmp . put_u8 (self . sub_mode) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LOGGING_DATA_ACKED_DATA { pub sequence : u16 , pub target_system : u8 , pub target_component : u8 , pub length : u8 , pub first_message_offset : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub data : [u8 ; 249] , } impl LOGGING_DATA_ACKED_DATA { pub const ENCODED_LEN : usize = 255usize ; pub const DEFAULT : Self = Self { sequence : 0_u16 , target_system : 0_u8 , target_component : 0_u8 , length : 0_u8 , first_message_offset : 0_u8 , data : [0_u8 ; 249usize] , } ; } impl Default for LOGGING_DATA_ACKED_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for LOGGING_DATA_ACKED_DATA { type Message = MavMessage ; const ID : u32 = 267u32 ; const NAME : & 'static str = "LOGGING_DATA_ACKED" ; const EXTRA_CRC : u8 = 35u8 ; const ENCODED_LEN : usize = 255usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . sequence = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . length = buf . get_u8 () ; __struct . first_message_offset = buf . get_u8 () ; for v in & mut __struct . data { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . sequence) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . length) ; __tmp . put_u8 (self . first_message_offset) ; for val in & self . data { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct RAW_RPM_DATA { pub frequency : f32 , pub index : u8 , } impl RAW_RPM_DATA { pub const ENCODED_LEN : usize = 5usize ; pub const DEFAULT : Self = Self { frequency : 0.0_f32 , index : 0_u8 , } ; } impl Default for RAW_RPM_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for RAW_RPM_DATA { type Message = MavMessage ; const ID : u32 = 339u32 ; const NAME : & 'static str = "RAW_RPM" ; const EXTRA_CRC : u8 = 199u8 ; const ENCODED_LEN : usize = 5usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . frequency = buf . get_f32_le () ; __struct . index = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . frequency) ; __tmp . put_u8 (self . index) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MISSION_REQUEST_DATA { pub seq : u16 , pub target_system : u8 , pub target_component : u8 , } impl MISSION_REQUEST_DATA { pub const ENCODED_LEN : usize = 4usize ; pub const DEFAULT : Self = Self { seq : 0_u16 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for MISSION_REQUEST_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MISSION_REQUEST_DATA { type Message = MavMessage ; const ID : u32 = 40u32 ; const NAME : & 'static str = "MISSION_REQUEST" ; const EXTRA_CRC : u8 = 230u8 ; const ENCODED_LEN : usize = 4usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . seq = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . seq) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HIL_ACTUATOR_CONTROLS_DATA { pub time_usec : u64 , pub flags : u64 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub controls : [f32 ; 16] , pub mode : MavModeFlag , } impl HIL_ACTUATOR_CONTROLS_DATA { pub const ENCODED_LEN : usize = 81usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , flags : 0_u64 , controls : [0.0_f32 ; 16usize] , mode : MavModeFlag :: DEFAULT , } ; } impl Default for HIL_ACTUATOR_CONTROLS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for HIL_ACTUATOR_CONTROLS_DATA { type Message = MavMessage ; const ID : u32 = 93u32 ; const NAME : & 'static str = "HIL_ACTUATOR_CONTROLS" ; const EXTRA_CRC : u8 = 47u8 ; const ENCODED_LEN : usize = 81usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . flags = buf . get_u64_le () ; for v in & mut __struct . controls { let val = buf . get_f32_le () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . mode = MavModeFlag :: from_bits (tmp & MavModeFlag :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "MavModeFlag" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_u64_le (self . flags) ; for val in & self . controls { __tmp . put_f32_le (* val) ; } __tmp . put_u8 (self . mode . bits ()) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PARAM_REQUEST_LIST_DATA { pub target_system : u8 , pub target_component : u8 , } impl PARAM_REQUEST_LIST_DATA { pub const ENCODED_LEN : usize = 2usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for PARAM_REQUEST_LIST_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for PARAM_REQUEST_LIST_DATA { type Message = MavMessage ; const ID : u32 = 21u32 ; const NAME : & 'static str = "PARAM_REQUEST_LIST" ; const EXTRA_CRC : u8 = 159u8 ; const ENCODED_LEN : usize = 2usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MISSION_ITEM_INT_DATA { pub param1 : f32 , pub param2 : f32 , pub param3 : f32 , pub param4 : f32 , pub x : i32 , pub y : i32 , pub z : f32 , pub seq : u16 , pub command : MavCmd , pub target_system : u8 , pub target_component : u8 , pub frame : MavFrame , pub current : u8 , pub autocontinue : u8 , } impl MISSION_ITEM_INT_DATA { pub const ENCODED_LEN : usize = 37usize ; pub const DEFAULT : Self = Self { param1 : 0.0_f32 , param2 : 0.0_f32 , param3 : 0.0_f32 , param4 : 0.0_f32 , x : 0_i32 , y : 0_i32 , z : 0.0_f32 , seq : 0_u16 , command : MavCmd :: DEFAULT , target_system : 0_u8 , target_component : 0_u8 , frame : MavFrame :: DEFAULT , current : 0_u8 , autocontinue : 0_u8 , } ; } impl Default for MISSION_ITEM_INT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MISSION_ITEM_INT_DATA { type Message = MavMessage ; const ID : u32 = 73u32 ; const NAME : & 'static str = "MISSION_ITEM_INT" ; const EXTRA_CRC : u8 = 38u8 ; const ENCODED_LEN : usize = 37usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . param1 = buf . get_f32_le () ; __struct . param2 = buf . get_f32_le () ; __struct . param3 = buf . get_f32_le () ; __struct . param4 = buf . get_f32_le () ; __struct . x = buf . get_i32_le () ; __struct . y = buf . get_i32_le () ; __struct . z = buf . get_f32_le () ; __struct . seq = buf . get_u16_le () ; let tmp = buf . get_u16_le () ; __struct . command = FromPrimitive :: from_u16 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavCmd" , value : tmp as u32 }) ? ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . frame = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavFrame" , value : tmp as u32 }) ? ; __struct . current = buf . get_u8 () ; __struct . autocontinue = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . param1) ; __tmp . put_f32_le (self . param2) ; __tmp . put_f32_le (self . param3) ; __tmp . put_f32_le (self . param4) ; __tmp . put_i32_le (self . x) ; __tmp . put_i32_le (self . y) ; __tmp . put_f32_le (self . z) ; __tmp . put_u16_le (self . seq) ; __tmp . put_u16_le (self . command as u16) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . frame as u8) ; __tmp . put_u8 (self . current) ; __tmp . put_u8 (self . autocontinue) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA { pub time_boot_ms : u32 , pub x : f32 , pub y : f32 , pub z : f32 , pub roll : f32 , pub pitch : f32 , pub yaw : f32 , } impl LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA { pub const ENCODED_LEN : usize = 28usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , x : 0.0_f32 , y : 0.0_f32 , z : 0.0_f32 , roll : 0.0_f32 , pitch : 0.0_f32 , yaw : 0.0_f32 , } ; } impl Default for LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA { type Message = MavMessage ; const ID : u32 = 89u32 ; const NAME : & 'static str = "LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET" ; const EXTRA_CRC : u8 = 231u8 ; const ENCODED_LEN : usize = 28usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . x = buf . get_f32_le () ; __struct . y = buf . get_f32_le () ; __struct . z = buf . get_f32_le () ; __struct . roll = buf . get_f32_le () ; __struct . pitch = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; __tmp . put_f32_le (self . roll) ; __tmp . put_f32_le (self . pitch) ; __tmp . put_f32_le (self . yaw) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct EFI_STATUS_DATA { pub ecu_index : f32 , pub rpm : f32 , pub fuel_consumed : f32 , pub fuel_flow : f32 , pub engine_load : f32 , pub throttle_position : f32 , pub spark_dwell_time : f32 , pub barometric_pressure : f32 , pub intake_manifold_pressure : f32 , pub intake_manifold_temperature : f32 , pub cylinder_head_temperature : f32 , pub ignition_timing : f32 , pub injection_time : f32 , pub exhaust_gas_temperature : f32 , pub throttle_out : f32 , pub pt_compensation : f32 , pub health : u8 , } impl EFI_STATUS_DATA { pub const ENCODED_LEN : usize = 65usize ; pub const DEFAULT : Self = Self { ecu_index : 0.0_f32 , rpm : 0.0_f32 , fuel_consumed : 0.0_f32 , fuel_flow : 0.0_f32 , engine_load : 0.0_f32 , throttle_position : 0.0_f32 , spark_dwell_time : 0.0_f32 , barometric_pressure : 0.0_f32 , intake_manifold_pressure : 0.0_f32 , intake_manifold_temperature : 0.0_f32 , cylinder_head_temperature : 0.0_f32 , ignition_timing : 0.0_f32 , injection_time : 0.0_f32 , exhaust_gas_temperature : 0.0_f32 , throttle_out : 0.0_f32 , pt_compensation : 0.0_f32 , health : 0_u8 , } ; } impl Default for EFI_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for EFI_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 225u32 ; const NAME : & 'static str = "EFI_STATUS" ; const EXTRA_CRC : u8 = 208u8 ; const ENCODED_LEN : usize = 65usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . ecu_index = buf . get_f32_le () ; __struct . rpm = buf . get_f32_le () ; __struct . fuel_consumed = buf . get_f32_le () ; __struct . fuel_flow = buf . get_f32_le () ; __struct . engine_load = buf . get_f32_le () ; __struct . throttle_position = buf . get_f32_le () ; __struct . spark_dwell_time = buf . get_f32_le () ; __struct . barometric_pressure = buf . get_f32_le () ; __struct . intake_manifold_pressure = buf . get_f32_le () ; __struct . intake_manifold_temperature = buf . get_f32_le () ; __struct . cylinder_head_temperature = buf . get_f32_le () ; __struct . ignition_timing = buf . get_f32_le () ; __struct . injection_time = buf . get_f32_le () ; __struct . exhaust_gas_temperature = buf . get_f32_le () ; __struct . throttle_out = buf . get_f32_le () ; __struct . pt_compensation = buf . get_f32_le () ; __struct . health = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . ecu_index) ; __tmp . put_f32_le (self . rpm) ; __tmp . put_f32_le (self . fuel_consumed) ; __tmp . put_f32_le (self . fuel_flow) ; __tmp . put_f32_le (self . engine_load) ; __tmp . put_f32_le (self . throttle_position) ; __tmp . put_f32_le (self . spark_dwell_time) ; __tmp . put_f32_le (self . barometric_pressure) ; __tmp . put_f32_le (self . intake_manifold_pressure) ; __tmp . put_f32_le (self . intake_manifold_temperature) ; __tmp . put_f32_le (self . cylinder_head_temperature) ; __tmp . put_f32_le (self . ignition_timing) ; __tmp . put_f32_le (self . injection_time) ; __tmp . put_f32_le (self . exhaust_gas_temperature) ; __tmp . put_f32_le (self . throttle_out) ; __tmp . put_f32_le (self . pt_compensation) ; __tmp . put_u8 (self . health) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MISSION_ITEM_REACHED_DATA { pub seq : u16 , } impl MISSION_ITEM_REACHED_DATA { pub const ENCODED_LEN : usize = 2usize ; pub const DEFAULT : Self = Self { seq : 0_u16 , } ; } impl Default for MISSION_ITEM_REACHED_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MISSION_ITEM_REACHED_DATA { type Message = MavMessage ; const ID : u32 = 46u32 ; const NAME : & 'static str = "MISSION_ITEM_REACHED" ; const EXTRA_CRC : u8 = 11u8 ; const ENCODED_LEN : usize = 2usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . seq = buf . get_u16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . seq) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct REQUEST_DATA_STREAM_DATA { pub req_message_rate : u16 , pub target_system : u8 , pub target_component : u8 , pub req_stream_id : u8 , pub start_stop : u8 , } impl REQUEST_DATA_STREAM_DATA { pub const ENCODED_LEN : usize = 6usize ; pub const DEFAULT : Self = Self { req_message_rate : 0_u16 , target_system : 0_u8 , target_component : 0_u8 , req_stream_id : 0_u8 , start_stop : 0_u8 , } ; } impl Default for REQUEST_DATA_STREAM_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for REQUEST_DATA_STREAM_DATA { type Message = MavMessage ; const ID : u32 = 66u32 ; const NAME : & 'static str = "REQUEST_DATA_STREAM" ; const EXTRA_CRC : u8 = 148u8 ; const ENCODED_LEN : usize = 6usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . req_message_rate = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . req_stream_id = buf . get_u8 () ; __struct . start_stop = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . req_message_rate) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . req_stream_id) ; __tmp . put_u8 (self . start_stop) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct UAVIONIX_ADSB_OUT_DYNAMIC_DATA { pub utcTime : u32 , pub gpsLat : i32 , pub gpsLon : i32 , pub gpsAlt : i32 , pub baroAltMSL : i32 , pub accuracyHor : u32 , pub accuracyVert : u16 , pub accuracyVel : u16 , pub velVert : i16 , pub velNS : i16 , pub VelEW : i16 , pub state : UavionixAdsbOutDynamicState , pub squawk : u16 , pub gpsFix : UavionixAdsbOutDynamicGpsFix , pub numSats : u8 , pub emergencyStatus : UavionixAdsbEmergencyStatus , } impl UAVIONIX_ADSB_OUT_DYNAMIC_DATA { pub const ENCODED_LEN : usize = 41usize ; pub const DEFAULT : Self = Self { utcTime : 0_u32 , gpsLat : 0_i32 , gpsLon : 0_i32 , gpsAlt : 0_i32 , baroAltMSL : 0_i32 , accuracyHor : 0_u32 , accuracyVert : 0_u16 , accuracyVel : 0_u16 , velVert : 0_i16 , velNS : 0_i16 , VelEW : 0_i16 , state : UavionixAdsbOutDynamicState :: DEFAULT , squawk : 0_u16 , gpsFix : UavionixAdsbOutDynamicGpsFix :: DEFAULT , numSats : 0_u8 , emergencyStatus : UavionixAdsbEmergencyStatus :: DEFAULT , } ; } impl Default for UAVIONIX_ADSB_OUT_DYNAMIC_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for UAVIONIX_ADSB_OUT_DYNAMIC_DATA { type Message = MavMessage ; const ID : u32 = 10002u32 ; const NAME : & 'static str = "UAVIONIX_ADSB_OUT_DYNAMIC" ; const EXTRA_CRC : u8 = 186u8 ; const ENCODED_LEN : usize = 41usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . utcTime = buf . get_u32_le () ; __struct . gpsLat = buf . get_i32_le () ; __struct . gpsLon = buf . get_i32_le () ; __struct . gpsAlt = buf . get_i32_le () ; __struct . baroAltMSL = buf . get_i32_le () ; __struct . accuracyHor = buf . get_u32_le () ; __struct . accuracyVert = buf . get_u16_le () ; __struct . accuracyVel = buf . get_u16_le () ; __struct . velVert = buf . get_i16_le () ; __struct . velNS = buf . get_i16_le () ; __struct . VelEW = buf . get_i16_le () ; let tmp = buf . get_u16_le () ; __struct . state = UavionixAdsbOutDynamicState :: from_bits (tmp & UavionixAdsbOutDynamicState :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "UavionixAdsbOutDynamicState" , value : tmp as u32 }) ? ; __struct . squawk = buf . get_u16_le () ; let tmp = buf . get_u8 () ; __struct . gpsFix = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "UavionixAdsbOutDynamicGpsFix" , value : tmp as u32 }) ? ; __struct . numSats = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . emergencyStatus = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "UavionixAdsbEmergencyStatus" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . utcTime) ; __tmp . put_i32_le (self . gpsLat) ; __tmp . put_i32_le (self . gpsLon) ; __tmp . put_i32_le (self . gpsAlt) ; __tmp . put_i32_le (self . baroAltMSL) ; __tmp . put_u32_le (self . accuracyHor) ; __tmp . put_u16_le (self . accuracyVert) ; __tmp . put_u16_le (self . accuracyVel) ; __tmp . put_i16_le (self . velVert) ; __tmp . put_i16_le (self . velNS) ; __tmp . put_i16_le (self . VelEW) ; __tmp . put_u16_le (self . state . bits ()) ; __tmp . put_u16_le (self . squawk) ; __tmp . put_u8 (self . gpsFix as u8) ; __tmp . put_u8 (self . numSats) ; __tmp . put_u8 (self . emergencyStatus as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CAMERA_CAPTURE_STATUS_DATA { pub time_boot_ms : u32 , pub image_interval : f32 , pub recording_time_ms : u32 , pub available_capacity : f32 , pub image_status : u8 , pub video_status : u8 , } impl CAMERA_CAPTURE_STATUS_DATA { pub const ENCODED_LEN : usize = 18usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , image_interval : 0.0_f32 , recording_time_ms : 0_u32 , available_capacity : 0.0_f32 , image_status : 0_u8 , video_status : 0_u8 , } ; } impl Default for CAMERA_CAPTURE_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CAMERA_CAPTURE_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 262u32 ; const NAME : & 'static str = "CAMERA_CAPTURE_STATUS" ; const EXTRA_CRC : u8 = 12u8 ; const ENCODED_LEN : usize = 18usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . image_interval = buf . get_f32_le () ; __struct . recording_time_ms = buf . get_u32_le () ; __struct . available_capacity = buf . get_f32_le () ; __struct . image_status = buf . get_u8 () ; __struct . video_status = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . image_interval) ; __tmp . put_u32_le (self . recording_time_ms) ; __tmp . put_f32_le (self . available_capacity) ; __tmp . put_u8 (self . image_status) ; __tmp . put_u8 (self . video_status) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MANUAL_CONTROL_DATA { pub x : i16 , pub y : i16 , pub z : i16 , pub r : i16 , pub buttons : u16 , pub target : u8 , } impl MANUAL_CONTROL_DATA { pub const ENCODED_LEN : usize = 11usize ; pub const DEFAULT : Self = Self { x : 0_i16 , y : 0_i16 , z : 0_i16 , r : 0_i16 , buttons : 0_u16 , target : 0_u8 , } ; } impl Default for MANUAL_CONTROL_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MANUAL_CONTROL_DATA { type Message = MavMessage ; const ID : u32 = 69u32 ; const NAME : & 'static str = "MANUAL_CONTROL" ; const EXTRA_CRC : u8 = 243u8 ; const ENCODED_LEN : usize = 11usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . x = buf . get_i16_le () ; __struct . y = buf . get_i16_le () ; __struct . z = buf . get_i16_le () ; __struct . r = buf . get_i16_le () ; __struct . buttons = buf . get_u16_le () ; __struct . target = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i16_le (self . x) ; __tmp . put_i16_le (self . y) ; __tmp . put_i16_le (self . z) ; __tmp . put_i16_le (self . r) ; __tmp . put_u16_le (self . buttons) ; __tmp . put_u8 (self . target) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GIMBAL_MANAGER_SET_PITCHYAW_DATA { pub flags : GimbalManagerFlags , pub pitch : f32 , pub yaw : f32 , pub pitch_rate : f32 , pub yaw_rate : f32 , pub target_system : u8 , pub target_component : u8 , pub gimbal_device_id : u8 , } impl GIMBAL_MANAGER_SET_PITCHYAW_DATA { pub const ENCODED_LEN : usize = 23usize ; pub const DEFAULT : Self = Self { flags : GimbalManagerFlags :: DEFAULT , pitch : 0.0_f32 , yaw : 0.0_f32 , pitch_rate : 0.0_f32 , yaw_rate : 0.0_f32 , target_system : 0_u8 , target_component : 0_u8 , gimbal_device_id : 0_u8 , } ; } impl Default for GIMBAL_MANAGER_SET_PITCHYAW_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GIMBAL_MANAGER_SET_PITCHYAW_DATA { type Message = MavMessage ; const ID : u32 = 287u32 ; const NAME : & 'static str = "GIMBAL_MANAGER_SET_PITCHYAW" ; const EXTRA_CRC : u8 = 1u8 ; const ENCODED_LEN : usize = 23usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u32_le () ; __struct . flags = FromPrimitive :: from_u32 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "GimbalManagerFlags" , value : tmp as u32 }) ? ; __struct . pitch = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; __struct . pitch_rate = buf . get_f32_le () ; __struct . yaw_rate = buf . get_f32_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . gimbal_device_id = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . flags as u32) ; __tmp . put_f32_le (self . pitch) ; __tmp . put_f32_le (self . yaw) ; __tmp . put_f32_le (self . pitch_rate) ; __tmp . put_f32_le (self . yaw_rate) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . gimbal_device_id) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GPS_GLOBAL_ORIGIN_DATA { pub latitude : i32 , pub longitude : i32 , pub altitude : i32 , } impl GPS_GLOBAL_ORIGIN_DATA { pub const ENCODED_LEN : usize = 12usize ; pub const DEFAULT : Self = Self { latitude : 0_i32 , longitude : 0_i32 , altitude : 0_i32 , } ; } impl Default for GPS_GLOBAL_ORIGIN_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GPS_GLOBAL_ORIGIN_DATA { type Message = MavMessage ; const ID : u32 = 49u32 ; const NAME : & 'static str = "GPS_GLOBAL_ORIGIN" ; const EXTRA_CRC : u8 = 39u8 ; const ENCODED_LEN : usize = 12usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . latitude = buf . get_i32_le () ; __struct . longitude = buf . get_i32_le () ; __struct . altitude = buf . get_i32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . latitude) ; __tmp . put_i32_le (self . longitude) ; __tmp . put_i32_le (self . altitude) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HIL_CONTROLS_DATA { pub time_usec : u64 , pub roll_ailerons : f32 , pub pitch_elevator : f32 , pub yaw_rudder : f32 , pub throttle : f32 , pub aux1 : f32 , pub aux2 : f32 , pub aux3 : f32 , pub aux4 : f32 , pub mode : MavMode , pub nav_mode : u8 , } impl HIL_CONTROLS_DATA { pub const ENCODED_LEN : usize = 42usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , roll_ailerons : 0.0_f32 , pitch_elevator : 0.0_f32 , yaw_rudder : 0.0_f32 , throttle : 0.0_f32 , aux1 : 0.0_f32 , aux2 : 0.0_f32 , aux3 : 0.0_f32 , aux4 : 0.0_f32 , mode : MavMode :: DEFAULT , nav_mode : 0_u8 , } ; } impl Default for HIL_CONTROLS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for HIL_CONTROLS_DATA { type Message = MavMessage ; const ID : u32 = 91u32 ; const NAME : & 'static str = "HIL_CONTROLS" ; const EXTRA_CRC : u8 = 63u8 ; const ENCODED_LEN : usize = 42usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . roll_ailerons = buf . get_f32_le () ; __struct . pitch_elevator = buf . get_f32_le () ; __struct . yaw_rudder = buf . get_f32_le () ; __struct . throttle = buf . get_f32_le () ; __struct . aux1 = buf . get_f32_le () ; __struct . aux2 = buf . get_f32_le () ; __struct . aux3 = buf . get_f32_le () ; __struct . aux4 = buf . get_f32_le () ; let tmp = buf . get_u8 () ; __struct . mode = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavMode" , value : tmp as u32 }) ? ; __struct . nav_mode = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . roll_ailerons) ; __tmp . put_f32_le (self . pitch_elevator) ; __tmp . put_f32_le (self . yaw_rudder) ; __tmp . put_f32_le (self . throttle) ; __tmp . put_f32_le (self . aux1) ; __tmp . put_f32_le (self . aux2) ; __tmp . put_f32_le (self . aux3) ; __tmp . put_f32_le (self . aux4) ; __tmp . put_u8 (self . mode as u8) ; __tmp . put_u8 (self . nav_mode) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct OPTICAL_FLOW_DATA { pub time_usec : u64 , pub flow_comp_m_x : f32 , pub flow_comp_m_y : f32 , pub ground_distance : f32 , pub flow_x : i16 , pub flow_y : i16 , pub sensor_id : u8 , pub quality : u8 , } impl OPTICAL_FLOW_DATA { pub const ENCODED_LEN : usize = 26usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , flow_comp_m_x : 0.0_f32 , flow_comp_m_y : 0.0_f32 , ground_distance : 0.0_f32 , flow_x : 0_i16 , flow_y : 0_i16 , sensor_id : 0_u8 , quality : 0_u8 , } ; } impl Default for OPTICAL_FLOW_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for OPTICAL_FLOW_DATA { type Message = MavMessage ; const ID : u32 = 100u32 ; const NAME : & 'static str = "OPTICAL_FLOW" ; const EXTRA_CRC : u8 = 175u8 ; const ENCODED_LEN : usize = 26usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . flow_comp_m_x = buf . get_f32_le () ; __struct . flow_comp_m_y = buf . get_f32_le () ; __struct . ground_distance = buf . get_f32_le () ; __struct . flow_x = buf . get_i16_le () ; __struct . flow_y = buf . get_i16_le () ; __struct . sensor_id = buf . get_u8 () ; __struct . quality = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . flow_comp_m_x) ; __tmp . put_f32_le (self . flow_comp_m_y) ; __tmp . put_f32_le (self . ground_distance) ; __tmp . put_i16_le (self . flow_x) ; __tmp . put_i16_le (self . flow_y) ; __tmp . put_u8 (self . sensor_id) ; __tmp . put_u8 (self . quality) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct OPEN_DRONE_ID_SELF_ID_DATA { pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub id_or_mac : [u8 ; 20] , pub description_type : MavOdidDescType , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub description : [u8 ; 23] , } impl OPEN_DRONE_ID_SELF_ID_DATA { pub const ENCODED_LEN : usize = 46usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , id_or_mac : [0_u8 ; 20usize] , description_type : MavOdidDescType :: DEFAULT , description : [0_u8 ; 23usize] , } ; } impl Default for OPEN_DRONE_ID_SELF_ID_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for OPEN_DRONE_ID_SELF_ID_DATA { type Message = MavMessage ; const ID : u32 = 12903u32 ; const NAME : & 'static str = "OPEN_DRONE_ID_SELF_ID" ; const EXTRA_CRC : u8 = 249u8 ; const ENCODED_LEN : usize = 46usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . id_or_mac { let val = buf . get_u8 () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . description_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidDescType" , value : tmp as u32 }) ? ; for v in & mut __struct . description { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . id_or_mac { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . description_type as u8) ; for val in & self . description { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct TIME_ESTIMATE_TO_TARGET_DATA { pub safe_return : i32 , pub land : i32 , pub mission_next_item : i32 , pub mission_end : i32 , pub commanded_action : i32 , } impl TIME_ESTIMATE_TO_TARGET_DATA { pub const ENCODED_LEN : usize = 20usize ; pub const DEFAULT : Self = Self { safe_return : 0_i32 , land : 0_i32 , mission_next_item : 0_i32 , mission_end : 0_i32 , commanded_action : 0_i32 , } ; } impl Default for TIME_ESTIMATE_TO_TARGET_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for TIME_ESTIMATE_TO_TARGET_DATA { type Message = MavMessage ; const ID : u32 = 380u32 ; const NAME : & 'static str = "TIME_ESTIMATE_TO_TARGET" ; const EXTRA_CRC : u8 = 232u8 ; const ENCODED_LEN : usize = 20usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . safe_return = buf . get_i32_le () ; __struct . land = buf . get_i32_le () ; __struct . mission_next_item = buf . get_i32_le () ; __struct . mission_end = buf . get_i32_le () ; __struct . commanded_action = buf . get_i32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . safe_return) ; __tmp . put_i32_le (self . land) ; __tmp . put_i32_le (self . mission_next_item) ; __tmp . put_i32_le (self . mission_end) ; __tmp . put_i32_le (self . commanded_action) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PARAM_VALUE_DATA { pub param_value : f32 , pub param_count : u16 , pub param_index : u16 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub param_id : [u8 ; 16] , pub param_type : MavParamType , } impl PARAM_VALUE_DATA { pub const ENCODED_LEN : usize = 25usize ; pub const DEFAULT : Self = Self { param_value : 0.0_f32 , param_count : 0_u16 , param_index : 0_u16 , param_id : [0_u8 ; 16usize] , param_type : MavParamType :: DEFAULT , } ; } impl Default for PARAM_VALUE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for PARAM_VALUE_DATA { type Message = MavMessage ; const ID : u32 = 22u32 ; const NAME : & 'static str = "PARAM_VALUE" ; const EXTRA_CRC : u8 = 220u8 ; const ENCODED_LEN : usize = 25usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . param_value = buf . get_f32_le () ; __struct . param_count = buf . get_u16_le () ; __struct . param_index = buf . get_u16_le () ; for v in & mut __struct . param_id { let val = buf . get_u8 () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . param_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavParamType" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . param_value) ; __tmp . put_u16_le (self . param_count) ; __tmp . put_u16_le (self . param_index) ; for val in & self . param_id { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . param_type as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct DEBUG_FLOAT_ARRAY_DATA { pub time_usec : u64 , pub array_id : u16 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub name : [u8 ; 10] , } impl DEBUG_FLOAT_ARRAY_DATA { pub const ENCODED_LEN : usize = 20usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , array_id : 0_u16 , name : [0_u8 ; 10usize] , } ; } impl Default for DEBUG_FLOAT_ARRAY_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for DEBUG_FLOAT_ARRAY_DATA { type Message = MavMessage ; const ID : u32 = 350u32 ; const NAME : & 'static str = "DEBUG_FLOAT_ARRAY" ; const EXTRA_CRC : u8 = 232u8 ; const ENCODED_LEN : usize = 20usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . array_id = buf . get_u16_le () ; for v in & mut __struct . name { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_u16_le (self . array_id) ; for val in & self . name { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct AIS_VESSEL_DATA { pub MMSI : u32 , pub lat : i32 , pub lon : i32 , pub COG : u16 , pub heading : u16 , pub velocity : u16 , pub dimension_bow : u16 , pub dimension_stern : u16 , pub tslc : u16 , pub flags : AisFlags , pub turn_rate : i8 , pub navigational_status : AisNavStatus , pub mavtype : AisType , pub dimension_port : u8 , pub dimension_starboard : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub callsign : [u8 ; 7] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub name : [u8 ; 20] , } impl AIS_VESSEL_DATA { pub const ENCODED_LEN : usize = 58usize ; pub const DEFAULT : Self = Self { MMSI : 0_u32 , lat : 0_i32 , lon : 0_i32 , COG : 0_u16 , heading : 0_u16 , velocity : 0_u16 , dimension_bow : 0_u16 , dimension_stern : 0_u16 , tslc : 0_u16 , flags : AisFlags :: DEFAULT , turn_rate : 0_i8 , navigational_status : AisNavStatus :: DEFAULT , mavtype : AisType :: DEFAULT , dimension_port : 0_u8 , dimension_starboard : 0_u8 , callsign : [0_u8 ; 7usize] , name : [0_u8 ; 20usize] , } ; } impl Default for AIS_VESSEL_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for AIS_VESSEL_DATA { type Message = MavMessage ; const ID : u32 = 301u32 ; const NAME : & 'static str = "AIS_VESSEL" ; const EXTRA_CRC : u8 = 243u8 ; const ENCODED_LEN : usize = 58usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . MMSI = buf . get_u32_le () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . COG = buf . get_u16_le () ; __struct . heading = buf . get_u16_le () ; __struct . velocity = buf . get_u16_le () ; __struct . dimension_bow = buf . get_u16_le () ; __struct . dimension_stern = buf . get_u16_le () ; __struct . tslc = buf . get_u16_le () ; let tmp = buf . get_u16_le () ; __struct . flags = AisFlags :: from_bits (tmp & AisFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "AisFlags" , value : tmp as u32 }) ? ; __struct . turn_rate = buf . get_i8 () ; let tmp = buf . get_u8 () ; __struct . navigational_status = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "AisNavStatus" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . mavtype = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "AisType" , value : tmp as u32 }) ? ; __struct . dimension_port = buf . get_u8 () ; __struct . dimension_starboard = buf . get_u8 () ; for v in & mut __struct . callsign { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . name { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . MMSI) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_u16_le (self . COG) ; __tmp . put_u16_le (self . heading) ; __tmp . put_u16_le (self . velocity) ; __tmp . put_u16_le (self . dimension_bow) ; __tmp . put_u16_le (self . dimension_stern) ; __tmp . put_u16_le (self . tslc) ; __tmp . put_u16_le (self . flags . bits ()) ; __tmp . put_i8 (self . turn_rate) ; __tmp . put_u8 (self . navigational_status as u8) ; __tmp . put_u8 (self . mavtype as u8) ; __tmp . put_u8 (self . dimension_port) ; __tmp . put_u8 (self . dimension_starboard) ; for val in & self . callsign { __tmp . put_u8 (* val) ; } for val in & self . name { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ATTITUDE_QUATERNION_COV_DATA { pub time_usec : u64 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub q : [f32 ; 4] , pub rollspeed : f32 , pub pitchspeed : f32 , pub yawspeed : f32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub covariance : [f32 ; 9] , } impl ATTITUDE_QUATERNION_COV_DATA { pub const ENCODED_LEN : usize = 72usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , q : [0.0_f32 ; 4usize] , rollspeed : 0.0_f32 , pitchspeed : 0.0_f32 , yawspeed : 0.0_f32 , covariance : [0.0_f32 ; 9usize] , } ; } impl Default for ATTITUDE_QUATERNION_COV_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ATTITUDE_QUATERNION_COV_DATA { type Message = MavMessage ; const ID : u32 = 61u32 ; const NAME : & 'static str = "ATTITUDE_QUATERNION_COV" ; const EXTRA_CRC : u8 = 167u8 ; const ENCODED_LEN : usize = 72usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; for v in & mut __struct . q { let val = buf . get_f32_le () ; * v = val ; } __struct . rollspeed = buf . get_f32_le () ; __struct . pitchspeed = buf . get_f32_le () ; __struct . yawspeed = buf . get_f32_le () ; for v in & mut __struct . covariance { let val = buf . get_f32_le () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; for val in & self . q { __tmp . put_f32_le (* val) ; } __tmp . put_f32_le (self . rollspeed) ; __tmp . put_f32_le (self . pitchspeed) ; __tmp . put_f32_le (self . yawspeed) ; for val in & self . covariance { __tmp . put_f32_le (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GLOBAL_POSITION_INT_DATA { pub time_boot_ms : u32 , pub lat : i32 , pub lon : i32 , pub alt : i32 , pub relative_alt : i32 , pub vx : i16 , pub vy : i16 , pub vz : i16 , pub hdg : u16 , } impl GLOBAL_POSITION_INT_DATA { pub const ENCODED_LEN : usize = 28usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , lat : 0_i32 , lon : 0_i32 , alt : 0_i32 , relative_alt : 0_i32 , vx : 0_i16 , vy : 0_i16 , vz : 0_i16 , hdg : 0_u16 , } ; } impl Default for GLOBAL_POSITION_INT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GLOBAL_POSITION_INT_DATA { type Message = MavMessage ; const ID : u32 = 33u32 ; const NAME : & 'static str = "GLOBAL_POSITION_INT" ; const EXTRA_CRC : u8 = 104u8 ; const ENCODED_LEN : usize = 28usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . alt = buf . get_i32_le () ; __struct . relative_alt = buf . get_i32_le () ; __struct . vx = buf . get_i16_le () ; __struct . vy = buf . get_i16_le () ; __struct . vz = buf . get_i16_le () ; __struct . hdg = buf . get_u16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_i32_le (self . alt) ; __tmp . put_i32_le (self . relative_alt) ; __tmp . put_i16_le (self . vx) ; __tmp . put_i16_le (self . vy) ; __tmp . put_i16_le (self . vz) ; __tmp . put_u16_le (self . hdg) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LOG_ENTRY_DATA { pub time_utc : u32 , pub size : u32 , pub id : u16 , pub num_logs : u16 , pub last_log_num : u16 , } impl LOG_ENTRY_DATA { pub const ENCODED_LEN : usize = 14usize ; pub const DEFAULT : Self = Self { time_utc : 0_u32 , size : 0_u32 , id : 0_u16 , num_logs : 0_u16 , last_log_num : 0_u16 , } ; } impl Default for LOG_ENTRY_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for LOG_ENTRY_DATA { type Message = MavMessage ; const ID : u32 = 118u32 ; const NAME : & 'static str = "LOG_ENTRY" ; const EXTRA_CRC : u8 = 56u8 ; const ENCODED_LEN : usize = 14usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_utc = buf . get_u32_le () ; __struct . size = buf . get_u32_le () ; __struct . id = buf . get_u16_le () ; __struct . num_logs = buf . get_u16_le () ; __struct . last_log_num = buf . get_u16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_utc) ; __tmp . put_u32_le (self . size) ; __tmp . put_u16_le (self . id) ; __tmp . put_u16_le (self . num_logs) ; __tmp . put_u16_le (self . last_log_num) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct OBSTACLE_DISTANCE_DATA { pub time_usec : u64 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub distances : [u16 ; 72] , pub min_distance : u16 , pub max_distance : u16 , pub sensor_type : MavDistanceSensor , pub increment : u8 , } impl OBSTACLE_DISTANCE_DATA { pub const ENCODED_LEN : usize = 158usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , distances : [0_u16 ; 72usize] , min_distance : 0_u16 , max_distance : 0_u16 , sensor_type : MavDistanceSensor :: DEFAULT , increment : 0_u8 , } ; } impl Default for OBSTACLE_DISTANCE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for OBSTACLE_DISTANCE_DATA { type Message = MavMessage ; const ID : u32 = 330u32 ; const NAME : & 'static str = "OBSTACLE_DISTANCE" ; const EXTRA_CRC : u8 = 23u8 ; const ENCODED_LEN : usize = 158usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; for v in & mut __struct . distances { let val = buf . get_u16_le () ; * v = val ; } __struct . min_distance = buf . get_u16_le () ; __struct . max_distance = buf . get_u16_le () ; let tmp = buf . get_u8 () ; __struct . sensor_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavDistanceSensor" , value : tmp as u32 }) ? ; __struct . increment = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; for val in & self . distances { __tmp . put_u16_le (* val) ; } __tmp . put_u16_le (self . min_distance) ; __tmp . put_u16_le (self . max_distance) ; __tmp . put_u8 (self . sensor_type as u8) ; __tmp . put_u8 (self . increment) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MISSION_COUNT_DATA { pub count : u16 , pub target_system : u8 , pub target_component : u8 , } impl MISSION_COUNT_DATA { pub const ENCODED_LEN : usize = 4usize ; pub const DEFAULT : Self = Self { count : 0_u16 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for MISSION_COUNT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MISSION_COUNT_DATA { type Message = MavMessage ; const ID : u32 = 44u32 ; const NAME : & 'static str = "MISSION_COUNT" ; const EXTRA_CRC : u8 = 221u8 ; const ENCODED_LEN : usize = 4usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . count = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . count) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct FENCE_STATUS_DATA { pub breach_time : u32 , pub breach_count : u16 , pub breach_status : u8 , pub breach_type : FenceBreach , } impl FENCE_STATUS_DATA { pub const ENCODED_LEN : usize = 8usize ; pub const DEFAULT : Self = Self { breach_time : 0_u32 , breach_count : 0_u16 , breach_status : 0_u8 , breach_type : FenceBreach :: DEFAULT , } ; } impl Default for FENCE_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for FENCE_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 162u32 ; const NAME : & 'static str = "FENCE_STATUS" ; const EXTRA_CRC : u8 = 189u8 ; const ENCODED_LEN : usize = 8usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . breach_time = buf . get_u32_le () ; __struct . breach_count = buf . get_u16_le () ; __struct . breach_status = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . breach_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "FenceBreach" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . breach_time) ; __tmp . put_u16_le (self . breach_count) ; __tmp . put_u8 (self . breach_status) ; __tmp . put_u8 (self . breach_type as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct EVENT_DATA { pub id : u32 , pub event_time_boot_ms : u32 , pub sequence : u16 , pub destination_component : u8 , pub destination_system : u8 , pub log_levels : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub arguments : [u8 ; 40] , } impl EVENT_DATA { pub const ENCODED_LEN : usize = 53usize ; pub const DEFAULT : Self = Self { id : 0_u32 , event_time_boot_ms : 0_u32 , sequence : 0_u16 , destination_component : 0_u8 , destination_system : 0_u8 , log_levels : 0_u8 , arguments : [0_u8 ; 40usize] , } ; } impl Default for EVENT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for EVENT_DATA { type Message = MavMessage ; const ID : u32 = 410u32 ; const NAME : & 'static str = "EVENT" ; const EXTRA_CRC : u8 = 160u8 ; const ENCODED_LEN : usize = 53usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . id = buf . get_u32_le () ; __struct . event_time_boot_ms = buf . get_u32_le () ; __struct . sequence = buf . get_u16_le () ; __struct . destination_component = buf . get_u8 () ; __struct . destination_system = buf . get_u8 () ; __struct . log_levels = buf . get_u8 () ; for v in & mut __struct . arguments { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . id) ; __tmp . put_u32_le (self . event_time_boot_ms) ; __tmp . put_u16_le (self . sequence) ; __tmp . put_u8 (self . destination_component) ; __tmp . put_u8 (self . destination_system) ; __tmp . put_u8 (self . log_levels) ; for val in & self . arguments { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HIL_SENSOR_DATA { pub time_usec : u64 , pub xacc : f32 , pub yacc : f32 , pub zacc : f32 , pub xgyro : f32 , pub ygyro : f32 , pub zgyro : f32 , pub xmag : f32 , pub ymag : f32 , pub zmag : f32 , pub abs_pressure : f32 , pub diff_pressure : f32 , pub pressure_alt : f32 , pub temperature : f32 , pub fields_updated : HilSensorUpdatedFlags , } impl HIL_SENSOR_DATA { pub const ENCODED_LEN : usize = 64usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , xacc : 0.0_f32 , yacc : 0.0_f32 , zacc : 0.0_f32 , xgyro : 0.0_f32 , ygyro : 0.0_f32 , zgyro : 0.0_f32 , xmag : 0.0_f32 , ymag : 0.0_f32 , zmag : 0.0_f32 , abs_pressure : 0.0_f32 , diff_pressure : 0.0_f32 , pressure_alt : 0.0_f32 , temperature : 0.0_f32 , fields_updated : HilSensorUpdatedFlags :: DEFAULT , } ; } impl Default for HIL_SENSOR_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for HIL_SENSOR_DATA { type Message = MavMessage ; const ID : u32 = 107u32 ; const NAME : & 'static str = "HIL_SENSOR" ; const EXTRA_CRC : u8 = 108u8 ; const ENCODED_LEN : usize = 64usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . xacc = buf . get_f32_le () ; __struct . yacc = buf . get_f32_le () ; __struct . zacc = buf . get_f32_le () ; __struct . xgyro = buf . get_f32_le () ; __struct . ygyro = buf . get_f32_le () ; __struct . zgyro = buf . get_f32_le () ; __struct . xmag = buf . get_f32_le () ; __struct . ymag = buf . get_f32_le () ; __struct . zmag = buf . get_f32_le () ; __struct . abs_pressure = buf . get_f32_le () ; __struct . diff_pressure = buf . get_f32_le () ; __struct . pressure_alt = buf . get_f32_le () ; __struct . temperature = buf . get_f32_le () ; let tmp = buf . get_u32_le () ; __struct . fields_updated = HilSensorUpdatedFlags :: from_bits (tmp & HilSensorUpdatedFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "HilSensorUpdatedFlags" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . xacc) ; __tmp . put_f32_le (self . yacc) ; __tmp . put_f32_le (self . zacc) ; __tmp . put_f32_le (self . xgyro) ; __tmp . put_f32_le (self . ygyro) ; __tmp . put_f32_le (self . zgyro) ; __tmp . put_f32_le (self . xmag) ; __tmp . put_f32_le (self . ymag) ; __tmp . put_f32_le (self . zmag) ; __tmp . put_f32_le (self . abs_pressure) ; __tmp . put_f32_le (self . diff_pressure) ; __tmp . put_f32_le (self . pressure_alt) ; __tmp . put_f32_le (self . temperature) ; __tmp . put_u32_le (self . fields_updated . bits ()) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct RAW_IMU_DATA { pub time_usec : u64 , pub xacc : i16 , pub yacc : i16 , pub zacc : i16 , pub xgyro : i16 , pub ygyro : i16 , pub zgyro : i16 , pub xmag : i16 , pub ymag : i16 , pub zmag : i16 , } impl RAW_IMU_DATA { pub const ENCODED_LEN : usize = 26usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , xacc : 0_i16 , yacc : 0_i16 , zacc : 0_i16 , xgyro : 0_i16 , ygyro : 0_i16 , zgyro : 0_i16 , xmag : 0_i16 , ymag : 0_i16 , zmag : 0_i16 , } ; } impl Default for RAW_IMU_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for RAW_IMU_DATA { type Message = MavMessage ; const ID : u32 = 27u32 ; const NAME : & 'static str = "RAW_IMU" ; const EXTRA_CRC : u8 = 144u8 ; const ENCODED_LEN : usize = 26usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . xacc = buf . get_i16_le () ; __struct . yacc = buf . get_i16_le () ; __struct . zacc = buf . get_i16_le () ; __struct . xgyro = buf . get_i16_le () ; __struct . ygyro = buf . get_i16_le () ; __struct . zgyro = buf . get_i16_le () ; __struct . xmag = buf . get_i16_le () ; __struct . ymag = buf . get_i16_le () ; __struct . zmag = buf . get_i16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_i16_le (self . xacc) ; __tmp . put_i16_le (self . yacc) ; __tmp . put_i16_le (self . zacc) ; __tmp . put_i16_le (self . xgyro) ; __tmp . put_i16_le (self . ygyro) ; __tmp . put_i16_le (self . zgyro) ; __tmp . put_i16_le (self . xmag) ; __tmp . put_i16_le (self . ymag) ; __tmp . put_i16_le (self . zmag) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct V2_EXTENSION_DATA { pub message_type : u16 , pub target_network : u8 , pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub payload : [u8 ; 249] , } impl V2_EXTENSION_DATA { pub const ENCODED_LEN : usize = 254usize ; pub const DEFAULT : Self = Self { message_type : 0_u16 , target_network : 0_u8 , target_system : 0_u8 , target_component : 0_u8 , payload : [0_u8 ; 249usize] , } ; } impl Default for V2_EXTENSION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for V2_EXTENSION_DATA { type Message = MavMessage ; const ID : u32 = 248u32 ; const NAME : & 'static str = "V2_EXTENSION" ; const EXTRA_CRC : u8 = 8u8 ; const ENCODED_LEN : usize = 254usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . message_type = buf . get_u16_le () ; __struct . target_network = buf . get_u8 () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . payload { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . message_type) ; __tmp . put_u8 (self . target_network) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . payload { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SMART_BATTERY_INFO_DATA { pub capacity_full_specification : i32 , pub capacity_full : i32 , pub cycle_count : u16 , pub weight : u16 , pub discharge_minimum_voltage : u16 , pub charging_minimum_voltage : u16 , pub resting_minimum_voltage : u16 , pub id : u8 , pub battery_function : MavBatteryFunction , pub mavtype : MavBatteryType , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub serial_number : [u8 ; 16] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub device_name : [u8 ; 50] , } impl SMART_BATTERY_INFO_DATA { pub const ENCODED_LEN : usize = 87usize ; pub const DEFAULT : Self = Self { capacity_full_specification : 0_i32 , capacity_full : 0_i32 , cycle_count : 0_u16 , weight : 0_u16 , discharge_minimum_voltage : 0_u16 , charging_minimum_voltage : 0_u16 , resting_minimum_voltage : 0_u16 , id : 0_u8 , battery_function : MavBatteryFunction :: DEFAULT , mavtype : MavBatteryType :: DEFAULT , serial_number : [0_u8 ; 16usize] , device_name : [0_u8 ; 50usize] , } ; } impl Default for SMART_BATTERY_INFO_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SMART_BATTERY_INFO_DATA { type Message = MavMessage ; const ID : u32 = 370u32 ; const NAME : & 'static str = "SMART_BATTERY_INFO" ; const EXTRA_CRC : u8 = 75u8 ; const ENCODED_LEN : usize = 87usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . capacity_full_specification = buf . get_i32_le () ; __struct . capacity_full = buf . get_i32_le () ; __struct . cycle_count = buf . get_u16_le () ; __struct . weight = buf . get_u16_le () ; __struct . discharge_minimum_voltage = buf . get_u16_le () ; __struct . charging_minimum_voltage = buf . get_u16_le () ; __struct . resting_minimum_voltage = buf . get_u16_le () ; __struct . id = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . battery_function = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavBatteryFunction" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . mavtype = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavBatteryType" , value : tmp as u32 }) ? ; for v in & mut __struct . serial_number { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . device_name { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . capacity_full_specification) ; __tmp . put_i32_le (self . capacity_full) ; __tmp . put_u16_le (self . cycle_count) ; __tmp . put_u16_le (self . weight) ; __tmp . put_u16_le (self . discharge_minimum_voltage) ; __tmp . put_u16_le (self . charging_minimum_voltage) ; __tmp . put_u16_le (self . resting_minimum_voltage) ; __tmp . put_u8 (self . id) ; __tmp . put_u8 (self . battery_function as u8) ; __tmp . put_u8 (self . mavtype as u8) ; for val in & self . serial_number { __tmp . put_u8 (* val) ; } for val in & self . device_name { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PARAM_EXT_SET_DATA { pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub param_id : [u8 ; 16] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub param_value : [u8 ; 128] , pub param_type : MavParamExtType , } impl PARAM_EXT_SET_DATA { pub const ENCODED_LEN : usize = 147usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , param_id : [0_u8 ; 16usize] , param_value : [0_u8 ; 128usize] , param_type : MavParamExtType :: DEFAULT , } ; } impl Default for PARAM_EXT_SET_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for PARAM_EXT_SET_DATA { type Message = MavMessage ; const ID : u32 = 323u32 ; const NAME : & 'static str = "PARAM_EXT_SET" ; const EXTRA_CRC : u8 = 78u8 ; const ENCODED_LEN : usize = 147usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . param_id { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . param_value { let val = buf . get_u8 () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . param_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavParamExtType" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . param_id { __tmp . put_u8 (* val) ; } for val in & self . param_value { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . param_type as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct TERRAIN_CHECK_DATA { pub lat : i32 , pub lon : i32 , } impl TERRAIN_CHECK_DATA { pub const ENCODED_LEN : usize = 8usize ; pub const DEFAULT : Self = Self { lat : 0_i32 , lon : 0_i32 , } ; } impl Default for TERRAIN_CHECK_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for TERRAIN_CHECK_DATA { type Message = MavMessage ; const ID : u32 = 135u32 ; const NAME : & 'static str = "TERRAIN_CHECK" ; const EXTRA_CRC : u8 = 203u8 ; const ENCODED_LEN : usize = 8usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA { pub time_usec : u64 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub pos_x : [f32 ; 5] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub pos_y : [f32 ; 5] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub pos_z : [f32 ; 5] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub vel_x : [f32 ; 5] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub vel_y : [f32 ; 5] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub vel_z : [f32 ; 5] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub acc_x : [f32 ; 5] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub acc_y : [f32 ; 5] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub acc_z : [f32 ; 5] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub pos_yaw : [f32 ; 5] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub vel_yaw : [f32 ; 5] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub command : [u16 ; 5] , pub valid_points : u8 , } impl TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA { pub const ENCODED_LEN : usize = 239usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , pos_x : [0.0_f32 ; 5usize] , pos_y : [0.0_f32 ; 5usize] , pos_z : [0.0_f32 ; 5usize] , vel_x : [0.0_f32 ; 5usize] , vel_y : [0.0_f32 ; 5usize] , vel_z : [0.0_f32 ; 5usize] , acc_x : [0.0_f32 ; 5usize] , acc_y : [0.0_f32 ; 5usize] , acc_z : [0.0_f32 ; 5usize] , pos_yaw : [0.0_f32 ; 5usize] , vel_yaw : [0.0_f32 ; 5usize] , command : [0_u16 ; 5usize] , valid_points : 0_u8 , } ; } impl Default for TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA { type Message = MavMessage ; const ID : u32 = 332u32 ; const NAME : & 'static str = "TRAJECTORY_REPRESENTATION_WAYPOINTS" ; const EXTRA_CRC : u8 = 236u8 ; const ENCODED_LEN : usize = 239usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; for v in & mut __struct . pos_x { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . pos_y { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . pos_z { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . vel_x { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . vel_y { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . vel_z { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . acc_x { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . acc_y { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . acc_z { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . pos_yaw { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . vel_yaw { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . command { let val = buf . get_u16_le () ; * v = val ; } __struct . valid_points = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; for val in & self . pos_x { __tmp . put_f32_le (* val) ; } for val in & self . pos_y { __tmp . put_f32_le (* val) ; } for val in & self . pos_z { __tmp . put_f32_le (* val) ; } for val in & self . vel_x { __tmp . put_f32_le (* val) ; } for val in & self . vel_y { __tmp . put_f32_le (* val) ; } for val in & self . vel_z { __tmp . put_f32_le (* val) ; } for val in & self . acc_x { __tmp . put_f32_le (* val) ; } for val in & self . acc_y { __tmp . put_f32_le (* val) ; } for val in & self . acc_z { __tmp . put_f32_le (* val) ; } for val in & self . pos_yaw { __tmp . put_f32_le (* val) ; } for val in & self . vel_yaw { __tmp . put_f32_le (* val) ; } for val in & self . command { __tmp . put_u16_le (* val) ; } __tmp . put_u8 (self . valid_points) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CAMERA_IMAGE_CAPTURED_DATA { pub time_utc : u64 , pub time_boot_ms : u32 , pub lat : i32 , pub lon : i32 , pub alt : i32 , pub relative_alt : i32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub q : [f32 ; 4] , pub image_index : i32 , pub camera_id : u8 , pub capture_result : i8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub file_url : [u8 ; 205] , } impl CAMERA_IMAGE_CAPTURED_DATA { pub const ENCODED_LEN : usize = 255usize ; pub const DEFAULT : Self = Self { time_utc : 0_u64 , time_boot_ms : 0_u32 , lat : 0_i32 , lon : 0_i32 , alt : 0_i32 , relative_alt : 0_i32 , q : [0.0_f32 ; 4usize] , image_index : 0_i32 , camera_id : 0_u8 , capture_result : 0_i8 , file_url : [0_u8 ; 205usize] , } ; } impl Default for CAMERA_IMAGE_CAPTURED_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CAMERA_IMAGE_CAPTURED_DATA { type Message = MavMessage ; const ID : u32 = 263u32 ; const NAME : & 'static str = "CAMERA_IMAGE_CAPTURED" ; const EXTRA_CRC : u8 = 133u8 ; const ENCODED_LEN : usize = 255usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_utc = buf . get_u64_le () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . alt = buf . get_i32_le () ; __struct . relative_alt = buf . get_i32_le () ; for v in & mut __struct . q { let val = buf . get_f32_le () ; * v = val ; } __struct . image_index = buf . get_i32_le () ; __struct . camera_id = buf . get_u8 () ; __struct . capture_result = buf . get_i8 () ; for v in & mut __struct . file_url { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_utc) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_i32_le (self . alt) ; __tmp . put_i32_le (self . relative_alt) ; for val in & self . q { __tmp . put_f32_le (* val) ; } __tmp . put_i32_le (self . image_index) ; __tmp . put_u8 (self . camera_id) ; __tmp . put_i8 (self . capture_result) ; for val in & self . file_url { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HEARTBEAT_DATA { pub custom_mode : u32 , pub mavtype : MavType , pub autopilot : MavAutopilot , pub base_mode : MavModeFlag , pub system_status : MavState , pub mavlink_version : u8 , } impl HEARTBEAT_DATA { pub const ENCODED_LEN : usize = 9usize ; pub const DEFAULT : Self = Self { custom_mode : 0_u32 , mavtype : MavType :: DEFAULT , autopilot : MavAutopilot :: DEFAULT , base_mode : MavModeFlag :: DEFAULT , system_status : MavState :: DEFAULT , mavlink_version : 0_u8 , } ; } impl Default for HEARTBEAT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for HEARTBEAT_DATA { type Message = MavMessage ; const ID : u32 = 0u32 ; const NAME : & 'static str = "HEARTBEAT" ; const EXTRA_CRC : u8 = 50u8 ; const ENCODED_LEN : usize = 9usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . custom_mode = buf . get_u32_le () ; let tmp = buf . get_u8 () ; __struct . mavtype = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavType" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . autopilot = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavAutopilot" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . base_mode = MavModeFlag :: from_bits (tmp & MavModeFlag :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "MavModeFlag" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . system_status = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavState" , value : tmp as u32 }) ? ; __struct . mavlink_version = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . custom_mode) ; __tmp . put_u8 (self . mavtype as u8) ; __tmp . put_u8 (self . autopilot as u8) ; __tmp . put_u8 (self . base_mode . bits ()) ; __tmp . put_u8 (self . system_status as u8) ; __tmp . put_u8 (self . mavlink_version) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LOG_ERASE_DATA { pub target_system : u8 , pub target_component : u8 , } impl LOG_ERASE_DATA { pub const ENCODED_LEN : usize = 2usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for LOG_ERASE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for LOG_ERASE_DATA { type Message = MavMessage ; const ID : u32 = 121u32 ; const NAME : & 'static str = "LOG_ERASE" ; const EXTRA_CRC : u8 = 237u8 ; const ENCODED_LEN : usize = 2usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MANUAL_SETPOINT_DATA { pub time_boot_ms : u32 , pub roll : f32 , pub pitch : f32 , pub yaw : f32 , pub thrust : f32 , pub mode_switch : u8 , pub manual_override_switch : u8 , } impl MANUAL_SETPOINT_DATA { pub const ENCODED_LEN : usize = 22usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , roll : 0.0_f32 , pitch : 0.0_f32 , yaw : 0.0_f32 , thrust : 0.0_f32 , mode_switch : 0_u8 , manual_override_switch : 0_u8 , } ; } impl Default for MANUAL_SETPOINT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MANUAL_SETPOINT_DATA { type Message = MavMessage ; const ID : u32 = 81u32 ; const NAME : & 'static str = "MANUAL_SETPOINT" ; const EXTRA_CRC : u8 = 106u8 ; const ENCODED_LEN : usize = 22usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . roll = buf . get_f32_le () ; __struct . pitch = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; __struct . thrust = buf . get_f32_le () ; __struct . mode_switch = buf . get_u8 () ; __struct . manual_override_switch = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . roll) ; __tmp . put_f32_le (self . pitch) ; __tmp . put_f32_le (self . yaw) ; __tmp . put_f32_le (self . thrust) ; __tmp . put_u8 (self . mode_switch) ; __tmp . put_u8 (self . manual_override_switch) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SYSTEM_TIME_DATA { pub time_unix_usec : u64 , pub time_boot_ms : u32 , } impl SYSTEM_TIME_DATA { pub const ENCODED_LEN : usize = 12usize ; pub const DEFAULT : Self = Self { time_unix_usec : 0_u64 , time_boot_ms : 0_u32 , } ; } impl Default for SYSTEM_TIME_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SYSTEM_TIME_DATA { type Message = MavMessage ; const ID : u32 = 2u32 ; const NAME : & 'static str = "SYSTEM_TIME" ; const EXTRA_CRC : u8 = 137u8 ; const ENCODED_LEN : usize = 12usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_unix_usec = buf . get_u64_le () ; __struct . time_boot_ms = buf . get_u32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_unix_usec) ; __tmp . put_u32_le (self . time_boot_ms) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HIL_GPS_DATA { pub time_usec : u64 , pub lat : i32 , pub lon : i32 , pub alt : i32 , pub eph : u16 , pub epv : u16 , pub vel : u16 , pub vn : i16 , pub ve : i16 , pub vd : i16 , pub cog : u16 , pub fix_type : u8 , pub satellites_visible : u8 , } impl HIL_GPS_DATA { pub const ENCODED_LEN : usize = 36usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , lat : 0_i32 , lon : 0_i32 , alt : 0_i32 , eph : 0_u16 , epv : 0_u16 , vel : 0_u16 , vn : 0_i16 , ve : 0_i16 , vd : 0_i16 , cog : 0_u16 , fix_type : 0_u8 , satellites_visible : 0_u8 , } ; } impl Default for HIL_GPS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for HIL_GPS_DATA { type Message = MavMessage ; const ID : u32 = 113u32 ; const NAME : & 'static str = "HIL_GPS" ; const EXTRA_CRC : u8 = 124u8 ; const ENCODED_LEN : usize = 36usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . alt = buf . get_i32_le () ; __struct . eph = buf . get_u16_le () ; __struct . epv = buf . get_u16_le () ; __struct . vel = buf . get_u16_le () ; __struct . vn = buf . get_i16_le () ; __struct . ve = buf . get_i16_le () ; __struct . vd = buf . get_i16_le () ; __struct . cog = buf . get_u16_le () ; __struct . fix_type = buf . get_u8 () ; __struct . satellites_visible = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_i32_le (self . alt) ; __tmp . put_u16_le (self . eph) ; __tmp . put_u16_le (self . epv) ; __tmp . put_u16_le (self . vel) ; __tmp . put_i16_le (self . vn) ; __tmp . put_i16_le (self . ve) ; __tmp . put_i16_le (self . vd) ; __tmp . put_u16_le (self . cog) ; __tmp . put_u8 (self . fix_type) ; __tmp . put_u8 (self . satellites_visible) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ESC_STATUS_DATA { pub time_usec : u64 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub rpm : [i32 ; 4] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub voltage : [f32 ; 4] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub current : [f32 ; 4] , pub index : u8 , } impl ESC_STATUS_DATA { pub const ENCODED_LEN : usize = 57usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , rpm : [0_i32 ; 4usize] , voltage : [0.0_f32 ; 4usize] , current : [0.0_f32 ; 4usize] , index : 0_u8 , } ; } impl Default for ESC_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ESC_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 291u32 ; const NAME : & 'static str = "ESC_STATUS" ; const EXTRA_CRC : u8 = 10u8 ; const ENCODED_LEN : usize = 57usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; for v in & mut __struct . rpm { let val = buf . get_i32_le () ; * v = val ; } for v in & mut __struct . voltage { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . current { let val = buf . get_f32_le () ; * v = val ; } __struct . index = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; for val in & self . rpm { __tmp . put_i32_le (* val) ; } for val in & self . voltage { __tmp . put_f32_le (* val) ; } for val in & self . current { __tmp . put_f32_le (* val) ; } __tmp . put_u8 (self . index) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CAMERA_TRACKING_GEO_STATUS_DATA { pub lat : i32 , pub lon : i32 , pub alt : f32 , pub h_acc : f32 , pub v_acc : f32 , pub vel_n : f32 , pub vel_e : f32 , pub vel_d : f32 , pub vel_acc : f32 , pub dist : f32 , pub hdg : f32 , pub hdg_acc : f32 , pub tracking_status : CameraTrackingStatusFlags , } impl CAMERA_TRACKING_GEO_STATUS_DATA { pub const ENCODED_LEN : usize = 49usize ; pub const DEFAULT : Self = Self { lat : 0_i32 , lon : 0_i32 , alt : 0.0_f32 , h_acc : 0.0_f32 , v_acc : 0.0_f32 , vel_n : 0.0_f32 , vel_e : 0.0_f32 , vel_d : 0.0_f32 , vel_acc : 0.0_f32 , dist : 0.0_f32 , hdg : 0.0_f32 , hdg_acc : 0.0_f32 , tracking_status : CameraTrackingStatusFlags :: DEFAULT , } ; } impl Default for CAMERA_TRACKING_GEO_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CAMERA_TRACKING_GEO_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 276u32 ; const NAME : & 'static str = "CAMERA_TRACKING_GEO_STATUS" ; const EXTRA_CRC : u8 = 18u8 ; const ENCODED_LEN : usize = 49usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . alt = buf . get_f32_le () ; __struct . h_acc = buf . get_f32_le () ; __struct . v_acc = buf . get_f32_le () ; __struct . vel_n = buf . get_f32_le () ; __struct . vel_e = buf . get_f32_le () ; __struct . vel_d = buf . get_f32_le () ; __struct . vel_acc = buf . get_f32_le () ; __struct . dist = buf . get_f32_le () ; __struct . hdg = buf . get_f32_le () ; __struct . hdg_acc = buf . get_f32_le () ; let tmp = buf . get_u8 () ; __struct . tracking_status = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "CameraTrackingStatusFlags" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_f32_le (self . alt) ; __tmp . put_f32_le (self . h_acc) ; __tmp . put_f32_le (self . v_acc) ; __tmp . put_f32_le (self . vel_n) ; __tmp . put_f32_le (self . vel_e) ; __tmp . put_f32_le (self . vel_d) ; __tmp . put_f32_le (self . vel_acc) ; __tmp . put_f32_le (self . dist) ; __tmp . put_f32_le (self . hdg) ; __tmp . put_f32_le (self . hdg_acc) ; __tmp . put_u8 (self . tracking_status as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct COMMAND_INT_DATA { pub param1 : f32 , pub param2 : f32 , pub param3 : f32 , pub param4 : f32 , pub x : i32 , pub y : i32 , pub z : f32 , pub command : MavCmd , pub target_system : u8 , pub target_component : u8 , pub frame : MavFrame , pub current : u8 , pub autocontinue : u8 , } impl COMMAND_INT_DATA { pub const ENCODED_LEN : usize = 35usize ; pub const DEFAULT : Self = Self { param1 : 0.0_f32 , param2 : 0.0_f32 , param3 : 0.0_f32 , param4 : 0.0_f32 , x : 0_i32 , y : 0_i32 , z : 0.0_f32 , command : MavCmd :: DEFAULT , target_system : 0_u8 , target_component : 0_u8 , frame : MavFrame :: DEFAULT , current : 0_u8 , autocontinue : 0_u8 , } ; } impl Default for COMMAND_INT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for COMMAND_INT_DATA { type Message = MavMessage ; const ID : u32 = 75u32 ; const NAME : & 'static str = "COMMAND_INT" ; const EXTRA_CRC : u8 = 158u8 ; const ENCODED_LEN : usize = 35usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . param1 = buf . get_f32_le () ; __struct . param2 = buf . get_f32_le () ; __struct . param3 = buf . get_f32_le () ; __struct . param4 = buf . get_f32_le () ; __struct . x = buf . get_i32_le () ; __struct . y = buf . get_i32_le () ; __struct . z = buf . get_f32_le () ; let tmp = buf . get_u16_le () ; __struct . command = FromPrimitive :: from_u16 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavCmd" , value : tmp as u32 }) ? ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . frame = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavFrame" , value : tmp as u32 }) ? ; __struct . current = buf . get_u8 () ; __struct . autocontinue = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . param1) ; __tmp . put_f32_le (self . param2) ; __tmp . put_f32_le (self . param3) ; __tmp . put_f32_le (self . param4) ; __tmp . put_i32_le (self . x) ; __tmp . put_i32_le (self . y) ; __tmp . put_f32_le (self . z) ; __tmp . put_u16_le (self . command as u16) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . frame as u8) ; __tmp . put_u8 (self . current) ; __tmp . put_u8 (self . autocontinue) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HIL_RC_INPUTS_RAW_DATA { pub time_usec : u64 , pub chan1_raw : u16 , pub chan2_raw : u16 , pub chan3_raw : u16 , pub chan4_raw : u16 , pub chan5_raw : u16 , pub chan6_raw : u16 , pub chan7_raw : u16 , pub chan8_raw : u16 , pub chan9_raw : u16 , pub chan10_raw : u16 , pub chan11_raw : u16 , pub chan12_raw : u16 , pub rssi : u8 , } impl HIL_RC_INPUTS_RAW_DATA { pub const ENCODED_LEN : usize = 33usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , chan1_raw : 0_u16 , chan2_raw : 0_u16 , chan3_raw : 0_u16 , chan4_raw : 0_u16 , chan5_raw : 0_u16 , chan6_raw : 0_u16 , chan7_raw : 0_u16 , chan8_raw : 0_u16 , chan9_raw : 0_u16 , chan10_raw : 0_u16 , chan11_raw : 0_u16 , chan12_raw : 0_u16 , rssi : 0_u8 , } ; } impl Default for HIL_RC_INPUTS_RAW_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for HIL_RC_INPUTS_RAW_DATA { type Message = MavMessage ; const ID : u32 = 92u32 ; const NAME : & 'static str = "HIL_RC_INPUTS_RAW" ; const EXTRA_CRC : u8 = 54u8 ; const ENCODED_LEN : usize = 33usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . chan1_raw = buf . get_u16_le () ; __struct . chan2_raw = buf . get_u16_le () ; __struct . chan3_raw = buf . get_u16_le () ; __struct . chan4_raw = buf . get_u16_le () ; __struct . chan5_raw = buf . get_u16_le () ; __struct . chan6_raw = buf . get_u16_le () ; __struct . chan7_raw = buf . get_u16_le () ; __struct . chan8_raw = buf . get_u16_le () ; __struct . chan9_raw = buf . get_u16_le () ; __struct . chan10_raw = buf . get_u16_le () ; __struct . chan11_raw = buf . get_u16_le () ; __struct . chan12_raw = buf . get_u16_le () ; __struct . rssi = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_u16_le (self . chan1_raw) ; __tmp . put_u16_le (self . chan2_raw) ; __tmp . put_u16_le (self . chan3_raw) ; __tmp . put_u16_le (self . chan4_raw) ; __tmp . put_u16_le (self . chan5_raw) ; __tmp . put_u16_le (self . chan6_raw) ; __tmp . put_u16_le (self . chan7_raw) ; __tmp . put_u16_le (self . chan8_raw) ; __tmp . put_u16_le (self . chan9_raw) ; __tmp . put_u16_le (self . chan10_raw) ; __tmp . put_u16_le (self . chan11_raw) ; __tmp . put_u16_le (self . chan12_raw) ; __tmp . put_u8 (self . rssi) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct COMMAND_CANCEL_DATA { pub command : MavCmd , pub target_system : u8 , pub target_component : u8 , } impl COMMAND_CANCEL_DATA { pub const ENCODED_LEN : usize = 4usize ; pub const DEFAULT : Self = Self { command : MavCmd :: DEFAULT , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for COMMAND_CANCEL_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for COMMAND_CANCEL_DATA { type Message = MavMessage ; const ID : u32 = 80u32 ; const NAME : & 'static str = "COMMAND_CANCEL" ; const EXTRA_CRC : u8 = 14u8 ; const ENCODED_LEN : usize = 4usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u16_le () ; __struct . command = FromPrimitive :: from_u16 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavCmd" , value : tmp as u32 }) ? ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . command as u16) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct TRAJECTORY_REPRESENTATION_BEZIER_DATA { pub time_usec : u64 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub pos_x : [f32 ; 5] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub pos_y : [f32 ; 5] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub pos_z : [f32 ; 5] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub delta : [f32 ; 5] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub pos_yaw : [f32 ; 5] , pub valid_points : u8 , } impl TRAJECTORY_REPRESENTATION_BEZIER_DATA { pub const ENCODED_LEN : usize = 109usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , pos_x : [0.0_f32 ; 5usize] , pos_y : [0.0_f32 ; 5usize] , pos_z : [0.0_f32 ; 5usize] , delta : [0.0_f32 ; 5usize] , pos_yaw : [0.0_f32 ; 5usize] , valid_points : 0_u8 , } ; } impl Default for TRAJECTORY_REPRESENTATION_BEZIER_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for TRAJECTORY_REPRESENTATION_BEZIER_DATA { type Message = MavMessage ; const ID : u32 = 333u32 ; const NAME : & 'static str = "TRAJECTORY_REPRESENTATION_BEZIER" ; const EXTRA_CRC : u8 = 231u8 ; const ENCODED_LEN : usize = 109usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; for v in & mut __struct . pos_x { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . pos_y { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . pos_z { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . delta { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . pos_yaw { let val = buf . get_f32_le () ; * v = val ; } __struct . valid_points = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; for val in & self . pos_x { __tmp . put_f32_le (* val) ; } for val in & self . pos_y { __tmp . put_f32_le (* val) ; } for val in & self . pos_z { __tmp . put_f32_le (* val) ; } for val in & self . delta { __tmp . put_f32_le (* val) ; } for val in & self . pos_yaw { __tmp . put_f32_le (* val) ; } __tmp . put_u8 (self . valid_points) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MISSION_CURRENT_DATA { pub seq : u16 , } impl MISSION_CURRENT_DATA { pub const ENCODED_LEN : usize = 2usize ; pub const DEFAULT : Self = Self { seq : 0_u16 , } ; } impl Default for MISSION_CURRENT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MISSION_CURRENT_DATA { type Message = MavMessage ; const ID : u32 = 42u32 ; const NAME : & 'static str = "MISSION_CURRENT" ; const EXTRA_CRC : u8 = 28u8 ; const ENCODED_LEN : usize = 2usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . seq = buf . get_u16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . seq) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA { pub rfHealth : UavionixAdsbRfHealth , } impl UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA { pub const ENCODED_LEN : usize = 1usize ; pub const DEFAULT : Self = Self { rfHealth : UavionixAdsbRfHealth :: DEFAULT , } ; } impl Default for UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA { type Message = MavMessage ; const ID : u32 = 10003u32 ; const NAME : & 'static str = "UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT" ; const EXTRA_CRC : u8 = 4u8 ; const ENCODED_LEN : usize = 1usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u8 () ; __struct . rfHealth = UavionixAdsbRfHealth :: from_bits (tmp & UavionixAdsbRfHealth :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "UavionixAdsbRfHealth" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . rfHealth . bits ()) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct FLIGHT_INFORMATION_DATA { pub arming_time_utc : u64 , pub takeoff_time_utc : u64 , pub flight_uuid : u64 , pub time_boot_ms : u32 , } impl FLIGHT_INFORMATION_DATA { pub const ENCODED_LEN : usize = 28usize ; pub const DEFAULT : Self = Self { arming_time_utc : 0_u64 , takeoff_time_utc : 0_u64 , flight_uuid : 0_u64 , time_boot_ms : 0_u32 , } ; } impl Default for FLIGHT_INFORMATION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for FLIGHT_INFORMATION_DATA { type Message = MavMessage ; const ID : u32 = 264u32 ; const NAME : & 'static str = "FLIGHT_INFORMATION" ; const EXTRA_CRC : u8 = 49u8 ; const ENCODED_LEN : usize = 28usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . arming_time_utc = buf . get_u64_le () ; __struct . takeoff_time_utc = buf . get_u64_le () ; __struct . flight_uuid = buf . get_u64_le () ; __struct . time_boot_ms = buf . get_u32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . arming_time_utc) ; __tmp . put_u64_le (self . takeoff_time_utc) ; __tmp . put_u64_le (self . flight_uuid) ; __tmp . put_u32_le (self . time_boot_ms) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SCALED_PRESSURE3_DATA { pub time_boot_ms : u32 , pub press_abs : f32 , pub press_diff : f32 , pub temperature : i16 , } impl SCALED_PRESSURE3_DATA { pub const ENCODED_LEN : usize = 14usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , press_abs : 0.0_f32 , press_diff : 0.0_f32 , temperature : 0_i16 , } ; } impl Default for SCALED_PRESSURE3_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SCALED_PRESSURE3_DATA { type Message = MavMessage ; const ID : u32 = 143u32 ; const NAME : & 'static str = "SCALED_PRESSURE3" ; const EXTRA_CRC : u8 = 131u8 ; const ENCODED_LEN : usize = 14usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . press_abs = buf . get_f32_le () ; __struct . press_diff = buf . get_f32_le () ; __struct . temperature = buf . get_i16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . press_abs) ; __tmp . put_f32_le (self . press_diff) ; __tmp . put_i16_le (self . temperature) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LOGGING_DATA_DATA { pub sequence : u16 , pub target_system : u8 , pub target_component : u8 , pub length : u8 , pub first_message_offset : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub data : [u8 ; 249] , } impl LOGGING_DATA_DATA { pub const ENCODED_LEN : usize = 255usize ; pub const DEFAULT : Self = Self { sequence : 0_u16 , target_system : 0_u8 , target_component : 0_u8 , length : 0_u8 , first_message_offset : 0_u8 , data : [0_u8 ; 249usize] , } ; } impl Default for LOGGING_DATA_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for LOGGING_DATA_DATA { type Message = MavMessage ; const ID : u32 = 266u32 ; const NAME : & 'static str = "LOGGING_DATA" ; const EXTRA_CRC : u8 = 193u8 ; const ENCODED_LEN : usize = 255usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . sequence = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . length = buf . get_u8 () ; __struct . first_message_offset = buf . get_u8 () ; for v in & mut __struct . data { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . sequence) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . length) ; __tmp . put_u8 (self . first_message_offset) ; for val in & self . data { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ESTIMATOR_STATUS_DATA { pub time_usec : u64 , pub vel_ratio : f32 , pub pos_horiz_ratio : f32 , pub pos_vert_ratio : f32 , pub mag_ratio : f32 , pub hagl_ratio : f32 , pub tas_ratio : f32 , pub pos_horiz_accuracy : f32 , pub pos_vert_accuracy : f32 , pub flags : EstimatorStatusFlags , } impl ESTIMATOR_STATUS_DATA { pub const ENCODED_LEN : usize = 42usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , vel_ratio : 0.0_f32 , pos_horiz_ratio : 0.0_f32 , pos_vert_ratio : 0.0_f32 , mag_ratio : 0.0_f32 , hagl_ratio : 0.0_f32 , tas_ratio : 0.0_f32 , pos_horiz_accuracy : 0.0_f32 , pos_vert_accuracy : 0.0_f32 , flags : EstimatorStatusFlags :: DEFAULT , } ; } impl Default for ESTIMATOR_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ESTIMATOR_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 230u32 ; const NAME : & 'static str = "ESTIMATOR_STATUS" ; const EXTRA_CRC : u8 = 163u8 ; const ENCODED_LEN : usize = 42usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . vel_ratio = buf . get_f32_le () ; __struct . pos_horiz_ratio = buf . get_f32_le () ; __struct . pos_vert_ratio = buf . get_f32_le () ; __struct . mag_ratio = buf . get_f32_le () ; __struct . hagl_ratio = buf . get_f32_le () ; __struct . tas_ratio = buf . get_f32_le () ; __struct . pos_horiz_accuracy = buf . get_f32_le () ; __struct . pos_vert_accuracy = buf . get_f32_le () ; let tmp = buf . get_u16_le () ; __struct . flags = EstimatorStatusFlags :: from_bits (tmp & EstimatorStatusFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "EstimatorStatusFlags" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . vel_ratio) ; __tmp . put_f32_le (self . pos_horiz_ratio) ; __tmp . put_f32_le (self . pos_vert_ratio) ; __tmp . put_f32_le (self . mag_ratio) ; __tmp . put_f32_le (self . hagl_ratio) ; __tmp . put_f32_le (self . tas_ratio) ; __tmp . put_f32_le (self . pos_horiz_accuracy) ; __tmp . put_f32_le (self . pos_vert_accuracy) ; __tmp . put_u16_le (self . flags . bits ()) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SET_GPS_GLOBAL_ORIGIN_DATA { pub latitude : i32 , pub longitude : i32 , pub altitude : i32 , pub target_system : u8 , } impl SET_GPS_GLOBAL_ORIGIN_DATA { pub const ENCODED_LEN : usize = 13usize ; pub const DEFAULT : Self = Self { latitude : 0_i32 , longitude : 0_i32 , altitude : 0_i32 , target_system : 0_u8 , } ; } impl Default for SET_GPS_GLOBAL_ORIGIN_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SET_GPS_GLOBAL_ORIGIN_DATA { type Message = MavMessage ; const ID : u32 = 48u32 ; const NAME : & 'static str = "SET_GPS_GLOBAL_ORIGIN" ; const EXTRA_CRC : u8 = 41u8 ; const ENCODED_LEN : usize = 13usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . latitude = buf . get_i32_le () ; __struct . longitude = buf . get_i32_le () ; __struct . altitude = buf . get_i32_le () ; __struct . target_system = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . latitude) ; __tmp . put_i32_le (self . longitude) ; __tmp . put_i32_le (self . altitude) ; __tmp . put_u8 (self . target_system) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct DEBUG_DATA { pub time_boot_ms : u32 , pub value : f32 , pub ind : u8 , } impl DEBUG_DATA { pub const ENCODED_LEN : usize = 9usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , value : 0.0_f32 , ind : 0_u8 , } ; } impl Default for DEBUG_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for DEBUG_DATA { type Message = MavMessage ; const ID : u32 = 254u32 ; const NAME : & 'static str = "DEBUG" ; const EXTRA_CRC : u8 = 46u8 ; const ENCODED_LEN : usize = 9usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . value = buf . get_f32_le () ; __struct . ind = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . value) ; __tmp . put_u8 (self . ind) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LOG_DATA_DATA { pub ofs : u32 , pub id : u16 , pub count : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub data : [u8 ; 90] , } impl LOG_DATA_DATA { pub const ENCODED_LEN : usize = 97usize ; pub const DEFAULT : Self = Self { ofs : 0_u32 , id : 0_u16 , count : 0_u8 , data : [0_u8 ; 90usize] , } ; } impl Default for LOG_DATA_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for LOG_DATA_DATA { type Message = MavMessage ; const ID : u32 = 120u32 ; const NAME : & 'static str = "LOG_DATA" ; const EXTRA_CRC : u8 = 134u8 ; const ENCODED_LEN : usize = 97usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . ofs = buf . get_u32_le () ; __struct . id = buf . get_u16_le () ; __struct . count = buf . get_u8 () ; for v in & mut __struct . data { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . ofs) ; __tmp . put_u16_le (self . id) ; __tmp . put_u8 (self . count) ; for val in & self . data { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LOCAL_POSITION_NED_DATA { pub time_boot_ms : u32 , pub x : f32 , pub y : f32 , pub z : f32 , pub vx : f32 , pub vy : f32 , pub vz : f32 , } impl LOCAL_POSITION_NED_DATA { pub const ENCODED_LEN : usize = 28usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , x : 0.0_f32 , y : 0.0_f32 , z : 0.0_f32 , vx : 0.0_f32 , vy : 0.0_f32 , vz : 0.0_f32 , } ; } impl Default for LOCAL_POSITION_NED_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for LOCAL_POSITION_NED_DATA { type Message = MavMessage ; const ID : u32 = 32u32 ; const NAME : & 'static str = "LOCAL_POSITION_NED" ; const EXTRA_CRC : u8 = 185u8 ; const ENCODED_LEN : usize = 28usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . x = buf . get_f32_le () ; __struct . y = buf . get_f32_le () ; __struct . z = buf . get_f32_le () ; __struct . vx = buf . get_f32_le () ; __struct . vy = buf . get_f32_le () ; __struct . vz = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; __tmp . put_f32_le (self . vx) ; __tmp . put_f32_le (self . vy) ; __tmp . put_f32_le (self . vz) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CANFD_FRAME_DATA { pub id : u32 , pub target_system : u8 , pub target_component : u8 , pub bus : u8 , pub len : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub data : [u8 ; 64] , } impl CANFD_FRAME_DATA { pub const ENCODED_LEN : usize = 72usize ; pub const DEFAULT : Self = Self { id : 0_u32 , target_system : 0_u8 , target_component : 0_u8 , bus : 0_u8 , len : 0_u8 , data : [0_u8 ; 64usize] , } ; } impl Default for CANFD_FRAME_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CANFD_FRAME_DATA { type Message = MavMessage ; const ID : u32 = 387u32 ; const NAME : & 'static str = "CANFD_FRAME" ; const EXTRA_CRC : u8 = 4u8 ; const ENCODED_LEN : usize = 72usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . id = buf . get_u32_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . bus = buf . get_u8 () ; __struct . len = buf . get_u8 () ; for v in & mut __struct . data { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . id) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . bus) ; __tmp . put_u8 (self . len) ; for val in & self . data { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MISSION_REQUEST_INT_DATA { pub seq : u16 , pub target_system : u8 , pub target_component : u8 , } impl MISSION_REQUEST_INT_DATA { pub const ENCODED_LEN : usize = 4usize ; pub const DEFAULT : Self = Self { seq : 0_u16 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for MISSION_REQUEST_INT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MISSION_REQUEST_INT_DATA { type Message = MavMessage ; const ID : u32 = 51u32 ; const NAME : & 'static str = "MISSION_REQUEST_INT" ; const EXTRA_CRC : u8 = 196u8 ; const ENCODED_LEN : usize = 4usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . seq = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . seq) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct COMMAND_LONG_DATA { pub param1 : f32 , pub param2 : f32 , pub param3 : f32 , pub param4 : f32 , pub param5 : f32 , pub param6 : f32 , pub param7 : f32 , pub command : MavCmd , pub target_system : u8 , pub target_component : u8 , pub confirmation : u8 , } impl COMMAND_LONG_DATA { pub const ENCODED_LEN : usize = 33usize ; pub const DEFAULT : Self = Self { param1 : 0.0_f32 , param2 : 0.0_f32 , param3 : 0.0_f32 , param4 : 0.0_f32 , param5 : 0.0_f32 , param6 : 0.0_f32 , param7 : 0.0_f32 , command : MavCmd :: DEFAULT , target_system : 0_u8 , target_component : 0_u8 , confirmation : 0_u8 , } ; } impl Default for COMMAND_LONG_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for COMMAND_LONG_DATA { type Message = MavMessage ; const ID : u32 = 76u32 ; const NAME : & 'static str = "COMMAND_LONG" ; const EXTRA_CRC : u8 = 152u8 ; const ENCODED_LEN : usize = 33usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . param1 = buf . get_f32_le () ; __struct . param2 = buf . get_f32_le () ; __struct . param3 = buf . get_f32_le () ; __struct . param4 = buf . get_f32_le () ; __struct . param5 = buf . get_f32_le () ; __struct . param6 = buf . get_f32_le () ; __struct . param7 = buf . get_f32_le () ; let tmp = buf . get_u16_le () ; __struct . command = FromPrimitive :: from_u16 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavCmd" , value : tmp as u32 }) ? ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . confirmation = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . param1) ; __tmp . put_f32_le (self . param2) ; __tmp . put_f32_le (self . param3) ; __tmp . put_f32_le (self . param4) ; __tmp . put_f32_le (self . param5) ; __tmp . put_f32_le (self . param6) ; __tmp . put_f32_le (self . param7) ; __tmp . put_u16_le (self . command as u16) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . confirmation) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HIL_STATE_QUATERNION_DATA { pub time_usec : u64 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub attitude_quaternion : [f32 ; 4] , pub rollspeed : f32 , pub pitchspeed : f32 , pub yawspeed : f32 , pub lat : i32 , pub lon : i32 , pub alt : i32 , pub vx : i16 , pub vy : i16 , pub vz : i16 , pub ind_airspeed : u16 , pub true_airspeed : u16 , pub xacc : i16 , pub yacc : i16 , pub zacc : i16 , } impl HIL_STATE_QUATERNION_DATA { pub const ENCODED_LEN : usize = 64usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , attitude_quaternion : [0.0_f32 ; 4usize] , rollspeed : 0.0_f32 , pitchspeed : 0.0_f32 , yawspeed : 0.0_f32 , lat : 0_i32 , lon : 0_i32 , alt : 0_i32 , vx : 0_i16 , vy : 0_i16 , vz : 0_i16 , ind_airspeed : 0_u16 , true_airspeed : 0_u16 , xacc : 0_i16 , yacc : 0_i16 , zacc : 0_i16 , } ; } impl Default for HIL_STATE_QUATERNION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for HIL_STATE_QUATERNION_DATA { type Message = MavMessage ; const ID : u32 = 115u32 ; const NAME : & 'static str = "HIL_STATE_QUATERNION" ; const EXTRA_CRC : u8 = 4u8 ; const ENCODED_LEN : usize = 64usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; for v in & mut __struct . attitude_quaternion { let val = buf . get_f32_le () ; * v = val ; } __struct . rollspeed = buf . get_f32_le () ; __struct . pitchspeed = buf . get_f32_le () ; __struct . yawspeed = buf . get_f32_le () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . alt = buf . get_i32_le () ; __struct . vx = buf . get_i16_le () ; __struct . vy = buf . get_i16_le () ; __struct . vz = buf . get_i16_le () ; __struct . ind_airspeed = buf . get_u16_le () ; __struct . true_airspeed = buf . get_u16_le () ; __struct . xacc = buf . get_i16_le () ; __struct . yacc = buf . get_i16_le () ; __struct . zacc = buf . get_i16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; for val in & self . attitude_quaternion { __tmp . put_f32_le (* val) ; } __tmp . put_f32_le (self . rollspeed) ; __tmp . put_f32_le (self . pitchspeed) ; __tmp . put_f32_le (self . yawspeed) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_i32_le (self . alt) ; __tmp . put_i16_le (self . vx) ; __tmp . put_i16_le (self . vy) ; __tmp . put_i16_le (self . vz) ; __tmp . put_u16_le (self . ind_airspeed) ; __tmp . put_u16_le (self . true_airspeed) ; __tmp . put_i16_le (self . xacc) ; __tmp . put_i16_le (self . yacc) ; __tmp . put_i16_le (self . zacc) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct RC_CHANNELS_RAW_DATA { pub time_boot_ms : u32 , pub chan1_raw : u16 , pub chan2_raw : u16 , pub chan3_raw : u16 , pub chan4_raw : u16 , pub chan5_raw : u16 , pub chan6_raw : u16 , pub chan7_raw : u16 , pub chan8_raw : u16 , pub port : u8 , pub rssi : u8 , } impl RC_CHANNELS_RAW_DATA { pub const ENCODED_LEN : usize = 22usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , chan1_raw : 0_u16 , chan2_raw : 0_u16 , chan3_raw : 0_u16 , chan4_raw : 0_u16 , chan5_raw : 0_u16 , chan6_raw : 0_u16 , chan7_raw : 0_u16 , chan8_raw : 0_u16 , port : 0_u8 , rssi : 0_u8 , } ; } impl Default for RC_CHANNELS_RAW_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for RC_CHANNELS_RAW_DATA { type Message = MavMessage ; const ID : u32 = 35u32 ; const NAME : & 'static str = "RC_CHANNELS_RAW" ; const EXTRA_CRC : u8 = 244u8 ; const ENCODED_LEN : usize = 22usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . chan1_raw = buf . get_u16_le () ; __struct . chan2_raw = buf . get_u16_le () ; __struct . chan3_raw = buf . get_u16_le () ; __struct . chan4_raw = buf . get_u16_le () ; __struct . chan5_raw = buf . get_u16_le () ; __struct . chan6_raw = buf . get_u16_le () ; __struct . chan7_raw = buf . get_u16_le () ; __struct . chan8_raw = buf . get_u16_le () ; __struct . port = buf . get_u8 () ; __struct . rssi = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_u16_le (self . chan1_raw) ; __tmp . put_u16_le (self . chan2_raw) ; __tmp . put_u16_le (self . chan3_raw) ; __tmp . put_u16_le (self . chan4_raw) ; __tmp . put_u16_le (self . chan5_raw) ; __tmp . put_u16_le (self . chan6_raw) ; __tmp . put_u16_le (self . chan7_raw) ; __tmp . put_u16_le (self . chan8_raw) ; __tmp . put_u8 (self . port) ; __tmp . put_u8 (self . rssi) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct DISTANCE_SENSOR_DATA { pub time_boot_ms : u32 , pub min_distance : u16 , pub max_distance : u16 , pub current_distance : u16 , pub mavtype : MavDistanceSensor , pub id : u8 , pub orientation : MavSensorOrientation , pub covariance : u8 , } impl DISTANCE_SENSOR_DATA { pub const ENCODED_LEN : usize = 14usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , min_distance : 0_u16 , max_distance : 0_u16 , current_distance : 0_u16 , mavtype : MavDistanceSensor :: DEFAULT , id : 0_u8 , orientation : MavSensorOrientation :: DEFAULT , covariance : 0_u8 , } ; } impl Default for DISTANCE_SENSOR_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for DISTANCE_SENSOR_DATA { type Message = MavMessage ; const ID : u32 = 132u32 ; const NAME : & 'static str = "DISTANCE_SENSOR" ; const EXTRA_CRC : u8 = 85u8 ; const ENCODED_LEN : usize = 14usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . min_distance = buf . get_u16_le () ; __struct . max_distance = buf . get_u16_le () ; __struct . current_distance = buf . get_u16_le () ; let tmp = buf . get_u8 () ; __struct . mavtype = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavDistanceSensor" , value : tmp as u32 }) ? ; __struct . id = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . orientation = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavSensorOrientation" , value : tmp as u32 }) ? ; __struct . covariance = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_u16_le (self . min_distance) ; __tmp . put_u16_le (self . max_distance) ; __tmp . put_u16_le (self . current_distance) ; __tmp . put_u8 (self . mavtype as u8) ; __tmp . put_u8 (self . id) ; __tmp . put_u8 (self . orientation as u8) ; __tmp . put_u8 (self . covariance) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PARAM_EXT_REQUEST_LIST_DATA { pub target_system : u8 , pub target_component : u8 , } impl PARAM_EXT_REQUEST_LIST_DATA { pub const ENCODED_LEN : usize = 2usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for PARAM_EXT_REQUEST_LIST_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for PARAM_EXT_REQUEST_LIST_DATA { type Message = MavMessage ; const ID : u32 = 321u32 ; const NAME : & 'static str = "PARAM_EXT_REQUEST_LIST" ; const EXTRA_CRC : u8 = 88u8 ; const ENCODED_LEN : usize = 2usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct AUTH_KEY_DATA { # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub key : [u8 ; 32] , } impl AUTH_KEY_DATA { pub const ENCODED_LEN : usize = 32usize ; pub const DEFAULT : Self = Self { key : [0_u8 ; 32usize] , } ; } impl Default for AUTH_KEY_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for AUTH_KEY_DATA { type Message = MavMessage ; const ID : u32 = 7u32 ; const NAME : & 'static str = "AUTH_KEY" ; const EXTRA_CRC : u8 = 119u8 ; const ENCODED_LEN : usize = 32usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; for v in & mut __struct . key { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; for val in & self . key { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MISSION_ACK_DATA { pub target_system : u8 , pub target_component : u8 , pub mavtype : MavMissionResult , } impl MISSION_ACK_DATA { pub const ENCODED_LEN : usize = 3usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , mavtype : MavMissionResult :: DEFAULT , } ; } impl Default for MISSION_ACK_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MISSION_ACK_DATA { type Message = MavMessage ; const ID : u32 = 47u32 ; const NAME : & 'static str = "MISSION_ACK" ; const EXTRA_CRC : u8 = 153u8 ; const ENCODED_LEN : usize = 3usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . mavtype = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavMissionResult" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . mavtype as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct RESOURCE_REQUEST_DATA { pub request_id : u8 , pub uri_type : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub uri : [u8 ; 120] , pub transfer_type : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub storage : [u8 ; 120] , } impl RESOURCE_REQUEST_DATA { pub const ENCODED_LEN : usize = 243usize ; pub const DEFAULT : Self = Self { request_id : 0_u8 , uri_type : 0_u8 , uri : [0_u8 ; 120usize] , transfer_type : 0_u8 , storage : [0_u8 ; 120usize] , } ; } impl Default for RESOURCE_REQUEST_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for RESOURCE_REQUEST_DATA { type Message = MavMessage ; const ID : u32 = 142u32 ; const NAME : & 'static str = "RESOURCE_REQUEST" ; const EXTRA_CRC : u8 = 72u8 ; const ENCODED_LEN : usize = 243usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . request_id = buf . get_u8 () ; __struct . uri_type = buf . get_u8 () ; for v in & mut __struct . uri { let val = buf . get_u8 () ; * v = val ; } __struct . transfer_type = buf . get_u8 () ; for v in & mut __struct . storage { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . request_id) ; __tmp . put_u8 (self . uri_type) ; for val in & self . uri { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . transfer_type) ; for val in & self . storage { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SAFETY_ALLOWED_AREA_DATA { pub p1x : f32 , pub p1y : f32 , pub p1z : f32 , pub p2x : f32 , pub p2y : f32 , pub p2z : f32 , pub frame : MavFrame , } impl SAFETY_ALLOWED_AREA_DATA { pub const ENCODED_LEN : usize = 25usize ; pub const DEFAULT : Self = Self { p1x : 0.0_f32 , p1y : 0.0_f32 , p1z : 0.0_f32 , p2x : 0.0_f32 , p2y : 0.0_f32 , p2z : 0.0_f32 , frame : MavFrame :: DEFAULT , } ; } impl Default for SAFETY_ALLOWED_AREA_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SAFETY_ALLOWED_AREA_DATA { type Message = MavMessage ; const ID : u32 = 55u32 ; const NAME : & 'static str = "SAFETY_ALLOWED_AREA" ; const EXTRA_CRC : u8 = 3u8 ; const ENCODED_LEN : usize = 25usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . p1x = buf . get_f32_le () ; __struct . p1y = buf . get_f32_le () ; __struct . p1z = buf . get_f32_le () ; __struct . p2x = buf . get_f32_le () ; __struct . p2y = buf . get_f32_le () ; __struct . p2z = buf . get_f32_le () ; let tmp = buf . get_u8 () ; __struct . frame = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavFrame" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . p1x) ; __tmp . put_f32_le (self . p1y) ; __tmp . put_f32_le (self . p1z) ; __tmp . put_f32_le (self . p2x) ; __tmp . put_f32_le (self . p2y) ; __tmp . put_f32_le (self . p2z) ; __tmp . put_u8 (self . frame as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CAMERA_SETTINGS_DATA { pub time_boot_ms : u32 , pub mode_id : CameraMode , } impl CAMERA_SETTINGS_DATA { pub const ENCODED_LEN : usize = 5usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , mode_id : CameraMode :: DEFAULT , } ; } impl Default for CAMERA_SETTINGS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CAMERA_SETTINGS_DATA { type Message = MavMessage ; const ID : u32 = 260u32 ; const NAME : & 'static str = "CAMERA_SETTINGS" ; const EXTRA_CRC : u8 = 146u8 ; const ENCODED_LEN : usize = 5usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; let tmp = buf . get_u8 () ; __struct . mode_id = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "CameraMode" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_u8 (self . mode_id as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GIMBAL_MANAGER_SET_ATTITUDE_DATA { pub flags : GimbalManagerFlags , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub q : [f32 ; 4] , pub angular_velocity_x : f32 , pub angular_velocity_y : f32 , pub angular_velocity_z : f32 , pub target_system : u8 , pub target_component : u8 , pub gimbal_device_id : u8 , } impl GIMBAL_MANAGER_SET_ATTITUDE_DATA { pub const ENCODED_LEN : usize = 35usize ; pub const DEFAULT : Self = Self { flags : GimbalManagerFlags :: DEFAULT , q : [0.0_f32 ; 4usize] , angular_velocity_x : 0.0_f32 , angular_velocity_y : 0.0_f32 , angular_velocity_z : 0.0_f32 , target_system : 0_u8 , target_component : 0_u8 , gimbal_device_id : 0_u8 , } ; } impl Default for GIMBAL_MANAGER_SET_ATTITUDE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GIMBAL_MANAGER_SET_ATTITUDE_DATA { type Message = MavMessage ; const ID : u32 = 282u32 ; const NAME : & 'static str = "GIMBAL_MANAGER_SET_ATTITUDE" ; const EXTRA_CRC : u8 = 123u8 ; const ENCODED_LEN : usize = 35usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u32_le () ; __struct . flags = FromPrimitive :: from_u32 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "GimbalManagerFlags" , value : tmp as u32 }) ? ; for v in & mut __struct . q { let val = buf . get_f32_le () ; * v = val ; } __struct . angular_velocity_x = buf . get_f32_le () ; __struct . angular_velocity_y = buf . get_f32_le () ; __struct . angular_velocity_z = buf . get_f32_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . gimbal_device_id = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . flags as u32) ; for val in & self . q { __tmp . put_f32_le (* val) ; } __tmp . put_f32_le (self . angular_velocity_x) ; __tmp . put_f32_le (self . angular_velocity_y) ; __tmp . put_f32_le (self . angular_velocity_z) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . gimbal_device_id) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GPS_RTK_DATA { pub time_last_baseline_ms : u32 , pub tow : u32 , pub baseline_a_mm : i32 , pub baseline_b_mm : i32 , pub baseline_c_mm : i32 , pub accuracy : u32 , pub iar_num_hypotheses : i32 , pub wn : u16 , pub rtk_receiver_id : u8 , pub rtk_health : u8 , pub rtk_rate : u8 , pub nsats : u8 , pub baseline_coords_type : RtkBaselineCoordinateSystem , } impl GPS_RTK_DATA { pub const ENCODED_LEN : usize = 35usize ; pub const DEFAULT : Self = Self { time_last_baseline_ms : 0_u32 , tow : 0_u32 , baseline_a_mm : 0_i32 , baseline_b_mm : 0_i32 , baseline_c_mm : 0_i32 , accuracy : 0_u32 , iar_num_hypotheses : 0_i32 , wn : 0_u16 , rtk_receiver_id : 0_u8 , rtk_health : 0_u8 , rtk_rate : 0_u8 , nsats : 0_u8 , baseline_coords_type : RtkBaselineCoordinateSystem :: DEFAULT , } ; } impl Default for GPS_RTK_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GPS_RTK_DATA { type Message = MavMessage ; const ID : u32 = 127u32 ; const NAME : & 'static str = "GPS_RTK" ; const EXTRA_CRC : u8 = 25u8 ; const ENCODED_LEN : usize = 35usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_last_baseline_ms = buf . get_u32_le () ; __struct . tow = buf . get_u32_le () ; __struct . baseline_a_mm = buf . get_i32_le () ; __struct . baseline_b_mm = buf . get_i32_le () ; __struct . baseline_c_mm = buf . get_i32_le () ; __struct . accuracy = buf . get_u32_le () ; __struct . iar_num_hypotheses = buf . get_i32_le () ; __struct . wn = buf . get_u16_le () ; __struct . rtk_receiver_id = buf . get_u8 () ; __struct . rtk_health = buf . get_u8 () ; __struct . rtk_rate = buf . get_u8 () ; __struct . nsats = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . baseline_coords_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "RtkBaselineCoordinateSystem" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_last_baseline_ms) ; __tmp . put_u32_le (self . tow) ; __tmp . put_i32_le (self . baseline_a_mm) ; __tmp . put_i32_le (self . baseline_b_mm) ; __tmp . put_i32_le (self . baseline_c_mm) ; __tmp . put_u32_le (self . accuracy) ; __tmp . put_i32_le (self . iar_num_hypotheses) ; __tmp . put_u16_le (self . wn) ; __tmp . put_u8 (self . rtk_receiver_id) ; __tmp . put_u8 (self . rtk_health) ; __tmp . put_u8 (self . rtk_rate) ; __tmp . put_u8 (self . nsats) ; __tmp . put_u8 (self . baseline_coords_type as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PROTOCOL_VERSION_DATA { pub version : u16 , pub min_version : u16 , pub max_version : u16 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub spec_version_hash : [u8 ; 8] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub library_version_hash : [u8 ; 8] , } impl PROTOCOL_VERSION_DATA { pub const ENCODED_LEN : usize = 22usize ; pub const DEFAULT : Self = Self { version : 0_u16 , min_version : 0_u16 , max_version : 0_u16 , spec_version_hash : [0_u8 ; 8usize] , library_version_hash : [0_u8 ; 8usize] , } ; } impl Default for PROTOCOL_VERSION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for PROTOCOL_VERSION_DATA { type Message = MavMessage ; const ID : u32 = 300u32 ; const NAME : & 'static str = "PROTOCOL_VERSION" ; const EXTRA_CRC : u8 = 217u8 ; const ENCODED_LEN : usize = 22usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . version = buf . get_u16_le () ; __struct . min_version = buf . get_u16_le () ; __struct . max_version = buf . get_u16_le () ; for v in & mut __struct . spec_version_hash { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . library_version_hash { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . version) ; __tmp . put_u16_le (self . min_version) ; __tmp . put_u16_le (self . max_version) ; for val in & self . spec_version_hash { __tmp . put_u8 (* val) ; } for val in & self . library_version_hash { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct TERRAIN_REQUEST_DATA { pub mask : u64 , pub lat : i32 , pub lon : i32 , pub grid_spacing : u16 , } impl TERRAIN_REQUEST_DATA { pub const ENCODED_LEN : usize = 18usize ; pub const DEFAULT : Self = Self { mask : 0_u64 , lat : 0_i32 , lon : 0_i32 , grid_spacing : 0_u16 , } ; } impl Default for TERRAIN_REQUEST_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for TERRAIN_REQUEST_DATA { type Message = MavMessage ; const ID : u32 = 133u32 ; const NAME : & 'static str = "TERRAIN_REQUEST" ; const EXTRA_CRC : u8 = 6u8 ; const ENCODED_LEN : usize = 18usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . mask = buf . get_u64_le () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . grid_spacing = buf . get_u16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . mask) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_u16_le (self . grid_spacing) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct POSITION_TARGET_LOCAL_NED_DATA { pub time_boot_ms : u32 , pub x : f32 , pub y : f32 , pub z : f32 , pub vx : f32 , pub vy : f32 , pub vz : f32 , pub afx : f32 , pub afy : f32 , pub afz : f32 , pub yaw : f32 , pub yaw_rate : f32 , pub type_mask : PositionTargetTypemask , pub coordinate_frame : MavFrame , } impl POSITION_TARGET_LOCAL_NED_DATA { pub const ENCODED_LEN : usize = 51usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , x : 0.0_f32 , y : 0.0_f32 , z : 0.0_f32 , vx : 0.0_f32 , vy : 0.0_f32 , vz : 0.0_f32 , afx : 0.0_f32 , afy : 0.0_f32 , afz : 0.0_f32 , yaw : 0.0_f32 , yaw_rate : 0.0_f32 , type_mask : PositionTargetTypemask :: DEFAULT , coordinate_frame : MavFrame :: DEFAULT , } ; } impl Default for POSITION_TARGET_LOCAL_NED_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for POSITION_TARGET_LOCAL_NED_DATA { type Message = MavMessage ; const ID : u32 = 85u32 ; const NAME : & 'static str = "POSITION_TARGET_LOCAL_NED" ; const EXTRA_CRC : u8 = 140u8 ; const ENCODED_LEN : usize = 51usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . x = buf . get_f32_le () ; __struct . y = buf . get_f32_le () ; __struct . z = buf . get_f32_le () ; __struct . vx = buf . get_f32_le () ; __struct . vy = buf . get_f32_le () ; __struct . vz = buf . get_f32_le () ; __struct . afx = buf . get_f32_le () ; __struct . afy = buf . get_f32_le () ; __struct . afz = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; __struct . yaw_rate = buf . get_f32_le () ; let tmp = buf . get_u16_le () ; __struct . type_mask = PositionTargetTypemask :: from_bits (tmp & PositionTargetTypemask :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "PositionTargetTypemask" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . coordinate_frame = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavFrame" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; __tmp . put_f32_le (self . vx) ; __tmp . put_f32_le (self . vy) ; __tmp . put_f32_le (self . vz) ; __tmp . put_f32_le (self . afx) ; __tmp . put_f32_le (self . afy) ; __tmp . put_f32_le (self . afz) ; __tmp . put_f32_le (self . yaw) ; __tmp . put_f32_le (self . yaw_rate) ; __tmp . put_u16_le (self . type_mask . bits ()) ; __tmp . put_u8 (self . coordinate_frame as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct WIND_COV_DATA { pub time_usec : u64 , pub wind_x : f32 , pub wind_y : f32 , pub wind_z : f32 , pub var_horiz : f32 , pub var_vert : f32 , pub wind_alt : f32 , pub horiz_accuracy : f32 , pub vert_accuracy : f32 , } impl WIND_COV_DATA { pub const ENCODED_LEN : usize = 40usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , wind_x : 0.0_f32 , wind_y : 0.0_f32 , wind_z : 0.0_f32 , var_horiz : 0.0_f32 , var_vert : 0.0_f32 , wind_alt : 0.0_f32 , horiz_accuracy : 0.0_f32 , vert_accuracy : 0.0_f32 , } ; } impl Default for WIND_COV_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for WIND_COV_DATA { type Message = MavMessage ; const ID : u32 = 231u32 ; const NAME : & 'static str = "WIND_COV" ; const EXTRA_CRC : u8 = 105u8 ; const ENCODED_LEN : usize = 40usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . wind_x = buf . get_f32_le () ; __struct . wind_y = buf . get_f32_le () ; __struct . wind_z = buf . get_f32_le () ; __struct . var_horiz = buf . get_f32_le () ; __struct . var_vert = buf . get_f32_le () ; __struct . wind_alt = buf . get_f32_le () ; __struct . horiz_accuracy = buf . get_f32_le () ; __struct . vert_accuracy = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . wind_x) ; __tmp . put_f32_le (self . wind_y) ; __tmp . put_f32_le (self . wind_z) ; __tmp . put_f32_le (self . var_horiz) ; __tmp . put_f32_le (self . var_vert) ; __tmp . put_f32_le (self . wind_alt) ; __tmp . put_f32_le (self . horiz_accuracy) ; __tmp . put_f32_le (self . vert_accuracy) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct COLLISION_DATA { pub id : u32 , pub time_to_minimum_delta : f32 , pub altitude_minimum_delta : f32 , pub horizontal_minimum_delta : f32 , pub src : MavCollisionSrc , pub action : MavCollisionAction , pub threat_level : MavCollisionThreatLevel , } impl COLLISION_DATA { pub const ENCODED_LEN : usize = 19usize ; pub const DEFAULT : Self = Self { id : 0_u32 , time_to_minimum_delta : 0.0_f32 , altitude_minimum_delta : 0.0_f32 , horizontal_minimum_delta : 0.0_f32 , src : MavCollisionSrc :: DEFAULT , action : MavCollisionAction :: DEFAULT , threat_level : MavCollisionThreatLevel :: DEFAULT , } ; } impl Default for COLLISION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for COLLISION_DATA { type Message = MavMessage ; const ID : u32 = 247u32 ; const NAME : & 'static str = "COLLISION" ; const EXTRA_CRC : u8 = 81u8 ; const ENCODED_LEN : usize = 19usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . id = buf . get_u32_le () ; __struct . time_to_minimum_delta = buf . get_f32_le () ; __struct . altitude_minimum_delta = buf . get_f32_le () ; __struct . horizontal_minimum_delta = buf . get_f32_le () ; let tmp = buf . get_u8 () ; __struct . src = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavCollisionSrc" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . action = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavCollisionAction" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . threat_level = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavCollisionThreatLevel" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . id) ; __tmp . put_f32_le (self . time_to_minimum_delta) ; __tmp . put_f32_le (self . altitude_minimum_delta) ; __tmp . put_f32_le (self . horizontal_minimum_delta) ; __tmp . put_u8 (self . src as u8) ; __tmp . put_u8 (self . action as u8) ; __tmp . put_u8 (self . threat_level as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CELLULAR_CONFIG_DATA { pub enable_lte : u8 , pub enable_pin : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub pin : [u8 ; 16] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub new_pin : [u8 ; 16] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub apn : [u8 ; 32] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub puk : [u8 ; 16] , pub roaming : u8 , pub response : CellularConfigResponse , } impl CELLULAR_CONFIG_DATA { pub const ENCODED_LEN : usize = 84usize ; pub const DEFAULT : Self = Self { enable_lte : 0_u8 , enable_pin : 0_u8 , pin : [0_u8 ; 16usize] , new_pin : [0_u8 ; 16usize] , apn : [0_u8 ; 32usize] , puk : [0_u8 ; 16usize] , roaming : 0_u8 , response : CellularConfigResponse :: DEFAULT , } ; } impl Default for CELLULAR_CONFIG_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CELLULAR_CONFIG_DATA { type Message = MavMessage ; const ID : u32 = 336u32 ; const NAME : & 'static str = "CELLULAR_CONFIG" ; const EXTRA_CRC : u8 = 245u8 ; const ENCODED_LEN : usize = 84usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . enable_lte = buf . get_u8 () ; __struct . enable_pin = buf . get_u8 () ; for v in & mut __struct . pin { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . new_pin { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . apn { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . puk { let val = buf . get_u8 () ; * v = val ; } __struct . roaming = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . response = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "CellularConfigResponse" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . enable_lte) ; __tmp . put_u8 (self . enable_pin) ; for val in & self . pin { __tmp . put_u8 (* val) ; } for val in & self . new_pin { __tmp . put_u8 (* val) ; } for val in & self . apn { __tmp . put_u8 (* val) ; } for val in & self . puk { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . roaming) ; __tmp . put_u8 (self . response as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CHANGE_OPERATOR_CONTROL_ACK_DATA { pub gcs_system_id : u8 , pub control_request : u8 , pub ack : u8 , } impl CHANGE_OPERATOR_CONTROL_ACK_DATA { pub const ENCODED_LEN : usize = 3usize ; pub const DEFAULT : Self = Self { gcs_system_id : 0_u8 , control_request : 0_u8 , ack : 0_u8 , } ; } impl Default for CHANGE_OPERATOR_CONTROL_ACK_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CHANGE_OPERATOR_CONTROL_ACK_DATA { type Message = MavMessage ; const ID : u32 = 6u32 ; const NAME : & 'static str = "CHANGE_OPERATOR_CONTROL_ACK" ; const EXTRA_CRC : u8 = 104u8 ; const ENCODED_LEN : usize = 3usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . gcs_system_id = buf . get_u8 () ; __struct . control_request = buf . get_u8 () ; __struct . ack = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . gcs_system_id) ; __tmp . put_u8 (self . control_request) ; __tmp . put_u8 (self . ack) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CONTROL_SYSTEM_STATE_DATA { pub time_usec : u64 , pub x_acc : f32 , pub y_acc : f32 , pub z_acc : f32 , pub x_vel : f32 , pub y_vel : f32 , pub z_vel : f32 , pub x_pos : f32 , pub y_pos : f32 , pub z_pos : f32 , pub airspeed : f32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub vel_variance : [f32 ; 3] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub pos_variance : [f32 ; 3] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub q : [f32 ; 4] , pub roll_rate : f32 , pub pitch_rate : f32 , pub yaw_rate : f32 , } impl CONTROL_SYSTEM_STATE_DATA { pub const ENCODED_LEN : usize = 100usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , x_acc : 0.0_f32 , y_acc : 0.0_f32 , z_acc : 0.0_f32 , x_vel : 0.0_f32 , y_vel : 0.0_f32 , z_vel : 0.0_f32 , x_pos : 0.0_f32 , y_pos : 0.0_f32 , z_pos : 0.0_f32 , airspeed : 0.0_f32 , vel_variance : [0.0_f32 ; 3usize] , pos_variance : [0.0_f32 ; 3usize] , q : [0.0_f32 ; 4usize] , roll_rate : 0.0_f32 , pitch_rate : 0.0_f32 , yaw_rate : 0.0_f32 , } ; } impl Default for CONTROL_SYSTEM_STATE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CONTROL_SYSTEM_STATE_DATA { type Message = MavMessage ; const ID : u32 = 146u32 ; const NAME : & 'static str = "CONTROL_SYSTEM_STATE" ; const EXTRA_CRC : u8 = 103u8 ; const ENCODED_LEN : usize = 100usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . x_acc = buf . get_f32_le () ; __struct . y_acc = buf . get_f32_le () ; __struct . z_acc = buf . get_f32_le () ; __struct . x_vel = buf . get_f32_le () ; __struct . y_vel = buf . get_f32_le () ; __struct . z_vel = buf . get_f32_le () ; __struct . x_pos = buf . get_f32_le () ; __struct . y_pos = buf . get_f32_le () ; __struct . z_pos = buf . get_f32_le () ; __struct . airspeed = buf . get_f32_le () ; for v in & mut __struct . vel_variance { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . pos_variance { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . q { let val = buf . get_f32_le () ; * v = val ; } __struct . roll_rate = buf . get_f32_le () ; __struct . pitch_rate = buf . get_f32_le () ; __struct . yaw_rate = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . x_acc) ; __tmp . put_f32_le (self . y_acc) ; __tmp . put_f32_le (self . z_acc) ; __tmp . put_f32_le (self . x_vel) ; __tmp . put_f32_le (self . y_vel) ; __tmp . put_f32_le (self . z_vel) ; __tmp . put_f32_le (self . x_pos) ; __tmp . put_f32_le (self . y_pos) ; __tmp . put_f32_le (self . z_pos) ; __tmp . put_f32_le (self . airspeed) ; for val in & self . vel_variance { __tmp . put_f32_le (* val) ; } for val in & self . pos_variance { __tmp . put_f32_le (* val) ; } for val in & self . q { __tmp . put_f32_le (* val) ; } __tmp . put_f32_le (self . roll_rate) ; __tmp . put_f32_le (self . pitch_rate) ; __tmp . put_f32_le (self . yaw_rate) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct RC_CHANNELS_SCALED_DATA { pub time_boot_ms : u32 , pub chan1_scaled : i16 , pub chan2_scaled : i16 , pub chan3_scaled : i16 , pub chan4_scaled : i16 , pub chan5_scaled : i16 , pub chan6_scaled : i16 , pub chan7_scaled : i16 , pub chan8_scaled : i16 , pub port : u8 , pub rssi : u8 , } impl RC_CHANNELS_SCALED_DATA { pub const ENCODED_LEN : usize = 22usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , chan1_scaled : 0_i16 , chan2_scaled : 0_i16 , chan3_scaled : 0_i16 , chan4_scaled : 0_i16 , chan5_scaled : 0_i16 , chan6_scaled : 0_i16 , chan7_scaled : 0_i16 , chan8_scaled : 0_i16 , port : 0_u8 , rssi : 0_u8 , } ; } impl Default for RC_CHANNELS_SCALED_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for RC_CHANNELS_SCALED_DATA { type Message = MavMessage ; const ID : u32 = 34u32 ; const NAME : & 'static str = "RC_CHANNELS_SCALED" ; const EXTRA_CRC : u8 = 237u8 ; const ENCODED_LEN : usize = 22usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . chan1_scaled = buf . get_i16_le () ; __struct . chan2_scaled = buf . get_i16_le () ; __struct . chan3_scaled = buf . get_i16_le () ; __struct . chan4_scaled = buf . get_i16_le () ; __struct . chan5_scaled = buf . get_i16_le () ; __struct . chan6_scaled = buf . get_i16_le () ; __struct . chan7_scaled = buf . get_i16_le () ; __struct . chan8_scaled = buf . get_i16_le () ; __struct . port = buf . get_u8 () ; __struct . rssi = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_i16_le (self . chan1_scaled) ; __tmp . put_i16_le (self . chan2_scaled) ; __tmp . put_i16_le (self . chan3_scaled) ; __tmp . put_i16_le (self . chan4_scaled) ; __tmp . put_i16_le (self . chan5_scaled) ; __tmp . put_i16_le (self . chan6_scaled) ; __tmp . put_i16_le (self . chan7_scaled) ; __tmp . put_i16_le (self . chan8_scaled) ; __tmp . put_u8 (self . port) ; __tmp . put_u8 (self . rssi) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CAN_FRAME_DATA { pub id : u32 , pub target_system : u8 , pub target_component : u8 , pub bus : u8 , pub len : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub data : [u8 ; 8] , } impl CAN_FRAME_DATA { pub const ENCODED_LEN : usize = 16usize ; pub const DEFAULT : Self = Self { id : 0_u32 , target_system : 0_u8 , target_component : 0_u8 , bus : 0_u8 , len : 0_u8 , data : [0_u8 ; 8usize] , } ; } impl Default for CAN_FRAME_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CAN_FRAME_DATA { type Message = MavMessage ; const ID : u32 = 386u32 ; const NAME : & 'static str = "CAN_FRAME" ; const EXTRA_CRC : u8 = 132u8 ; const ENCODED_LEN : usize = 16usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . id = buf . get_u32_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . bus = buf . get_u8 () ; __struct . len = buf . get_u8 () ; for v in & mut __struct . data { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . id) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . bus) ; __tmp . put_u8 (self . len) ; for val in & self . data { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct VICON_POSITION_ESTIMATE_DATA { pub usec : u64 , pub x : f32 , pub y : f32 , pub z : f32 , pub roll : f32 , pub pitch : f32 , pub yaw : f32 , } impl VICON_POSITION_ESTIMATE_DATA { pub const ENCODED_LEN : usize = 32usize ; pub const DEFAULT : Self = Self { usec : 0_u64 , x : 0.0_f32 , y : 0.0_f32 , z : 0.0_f32 , roll : 0.0_f32 , pitch : 0.0_f32 , yaw : 0.0_f32 , } ; } impl Default for VICON_POSITION_ESTIMATE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for VICON_POSITION_ESTIMATE_DATA { type Message = MavMessage ; const ID : u32 = 104u32 ; const NAME : & 'static str = "VICON_POSITION_ESTIMATE" ; const EXTRA_CRC : u8 = 56u8 ; const ENCODED_LEN : usize = 32usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . usec = buf . get_u64_le () ; __struct . x = buf . get_f32_le () ; __struct . y = buf . get_f32_le () ; __struct . z = buf . get_f32_le () ; __struct . roll = buf . get_f32_le () ; __struct . pitch = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . usec) ; __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; __tmp . put_f32_le (self . roll) ; __tmp . put_f32_le (self . pitch) ; __tmp . put_f32_le (self . yaw) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GIMBAL_MANAGER_STATUS_DATA { pub time_boot_ms : u32 , pub flags : GimbalManagerFlags , pub gimbal_device_id : u8 , pub primary_control_sysid : u8 , pub primary_control_compid : u8 , pub secondary_control_sysid : u8 , pub secondary_control_compid : u8 , } impl GIMBAL_MANAGER_STATUS_DATA { pub const ENCODED_LEN : usize = 13usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , flags : GimbalManagerFlags :: DEFAULT , gimbal_device_id : 0_u8 , primary_control_sysid : 0_u8 , primary_control_compid : 0_u8 , secondary_control_sysid : 0_u8 , secondary_control_compid : 0_u8 , } ; } impl Default for GIMBAL_MANAGER_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GIMBAL_MANAGER_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 281u32 ; const NAME : & 'static str = "GIMBAL_MANAGER_STATUS" ; const EXTRA_CRC : u8 = 48u8 ; const ENCODED_LEN : usize = 13usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; let tmp = buf . get_u32_le () ; __struct . flags = FromPrimitive :: from_u32 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "GimbalManagerFlags" , value : tmp as u32 }) ? ; __struct . gimbal_device_id = buf . get_u8 () ; __struct . primary_control_sysid = buf . get_u8 () ; __struct . primary_control_compid = buf . get_u8 () ; __struct . secondary_control_sysid = buf . get_u8 () ; __struct . secondary_control_compid = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_u32_le (self . flags as u32) ; __tmp . put_u8 (self . gimbal_device_id) ; __tmp . put_u8 (self . primary_control_sysid) ; __tmp . put_u8 (self . primary_control_compid) ; __tmp . put_u8 (self . secondary_control_sysid) ; __tmp . put_u8 (self . secondary_control_compid) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SET_MODE_DATA { pub custom_mode : u32 , pub target_system : u8 , pub base_mode : MavMode , } impl SET_MODE_DATA { pub const ENCODED_LEN : usize = 6usize ; pub const DEFAULT : Self = Self { custom_mode : 0_u32 , target_system : 0_u8 , base_mode : MavMode :: DEFAULT , } ; } impl Default for SET_MODE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SET_MODE_DATA { type Message = MavMessage ; const ID : u32 = 11u32 ; const NAME : & 'static str = "SET_MODE" ; const EXTRA_CRC : u8 = 89u8 ; const ENCODED_LEN : usize = 6usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . custom_mode = buf . get_u32_le () ; __struct . target_system = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . base_mode = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavMode" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . custom_mode) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . base_mode as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct TERRAIN_DATA_DATA { pub lat : i32 , pub lon : i32 , pub grid_spacing : u16 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub data : [i16 ; 16] , pub gridbit : u8 , } impl TERRAIN_DATA_DATA { pub const ENCODED_LEN : usize = 43usize ; pub const DEFAULT : Self = Self { lat : 0_i32 , lon : 0_i32 , grid_spacing : 0_u16 , data : [0_i16 ; 16usize] , gridbit : 0_u8 , } ; } impl Default for TERRAIN_DATA_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for TERRAIN_DATA_DATA { type Message = MavMessage ; const ID : u32 = 134u32 ; const NAME : & 'static str = "TERRAIN_DATA" ; const EXTRA_CRC : u8 = 229u8 ; const ENCODED_LEN : usize = 43usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . grid_spacing = buf . get_u16_le () ; for v in & mut __struct . data { let val = buf . get_i16_le () ; * v = val ; } __struct . gridbit = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_u16_le (self . grid_spacing) ; for val in & self . data { __tmp . put_i16_le (* val) ; } __tmp . put_u8 (self . gridbit) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CHANGE_OPERATOR_CONTROL_DATA { pub target_system : u8 , pub control_request : u8 , pub version : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub passkey : [u8 ; 25] , } impl CHANGE_OPERATOR_CONTROL_DATA { pub const ENCODED_LEN : usize = 28usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , control_request : 0_u8 , version : 0_u8 , passkey : [0_u8 ; 25usize] , } ; } impl Default for CHANGE_OPERATOR_CONTROL_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CHANGE_OPERATOR_CONTROL_DATA { type Message = MavMessage ; const ID : u32 = 5u32 ; const NAME : & 'static str = "CHANGE_OPERATOR_CONTROL" ; const EXTRA_CRC : u8 = 217u8 ; const ENCODED_LEN : usize = 28usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . control_request = buf . get_u8 () ; __struct . version = buf . get_u8 () ; for v in & mut __struct . passkey { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . control_request) ; __tmp . put_u8 (self . version) ; for val in & self . passkey { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PARAM_MAP_RC_DATA { pub param_value0 : f32 , pub scale : f32 , pub param_value_min : f32 , pub param_value_max : f32 , pub param_index : i16 , pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub param_id : [u8 ; 16] , pub parameter_rc_channel_index : u8 , } impl PARAM_MAP_RC_DATA { pub const ENCODED_LEN : usize = 37usize ; pub const DEFAULT : Self = Self { param_value0 : 0.0_f32 , scale : 0.0_f32 , param_value_min : 0.0_f32 , param_value_max : 0.0_f32 , param_index : 0_i16 , target_system : 0_u8 , target_component : 0_u8 , param_id : [0_u8 ; 16usize] , parameter_rc_channel_index : 0_u8 , } ; } impl Default for PARAM_MAP_RC_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for PARAM_MAP_RC_DATA { type Message = MavMessage ; const ID : u32 = 50u32 ; const NAME : & 'static str = "PARAM_MAP_RC" ; const EXTRA_CRC : u8 = 78u8 ; const ENCODED_LEN : usize = 37usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . param_value0 = buf . get_f32_le () ; __struct . scale = buf . get_f32_le () ; __struct . param_value_min = buf . get_f32_le () ; __struct . param_value_max = buf . get_f32_le () ; __struct . param_index = buf . get_i16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . param_id { let val = buf . get_u8 () ; * v = val ; } __struct . parameter_rc_channel_index = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . param_value0) ; __tmp . put_f32_le (self . scale) ; __tmp . put_f32_le (self . param_value_min) ; __tmp . put_f32_le (self . param_value_max) ; __tmp . put_i16_le (self . param_index) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . param_id { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . parameter_rc_channel_index) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct VIBRATION_DATA { pub time_usec : u64 , pub vibration_x : f32 , pub vibration_y : f32 , pub vibration_z : f32 , pub clipping_0 : u32 , pub clipping_1 : u32 , pub clipping_2 : u32 , } impl VIBRATION_DATA { pub const ENCODED_LEN : usize = 32usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , vibration_x : 0.0_f32 , vibration_y : 0.0_f32 , vibration_z : 0.0_f32 , clipping_0 : 0_u32 , clipping_1 : 0_u32 , clipping_2 : 0_u32 , } ; } impl Default for VIBRATION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for VIBRATION_DATA { type Message = MavMessage ; const ID : u32 = 241u32 ; const NAME : & 'static str = "VIBRATION" ; const EXTRA_CRC : u8 = 90u8 ; const ENCODED_LEN : usize = 32usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . vibration_x = buf . get_f32_le () ; __struct . vibration_y = buf . get_f32_le () ; __struct . vibration_z = buf . get_f32_le () ; __struct . clipping_0 = buf . get_u32_le () ; __struct . clipping_1 = buf . get_u32_le () ; __struct . clipping_2 = buf . get_u32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . vibration_x) ; __tmp . put_f32_le (self . vibration_y) ; __tmp . put_f32_le (self . vibration_z) ; __tmp . put_u32_le (self . clipping_0) ; __tmp . put_u32_le (self . clipping_1) ; __tmp . put_u32_le (self . clipping_2) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct VISION_POSITION_ESTIMATE_DATA { pub usec : u64 , pub x : f32 , pub y : f32 , pub z : f32 , pub roll : f32 , pub pitch : f32 , pub yaw : f32 , } impl VISION_POSITION_ESTIMATE_DATA { pub const ENCODED_LEN : usize = 32usize ; pub const DEFAULT : Self = Self { usec : 0_u64 , x : 0.0_f32 , y : 0.0_f32 , z : 0.0_f32 , roll : 0.0_f32 , pitch : 0.0_f32 , yaw : 0.0_f32 , } ; } impl Default for VISION_POSITION_ESTIMATE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for VISION_POSITION_ESTIMATE_DATA { type Message = MavMessage ; const ID : u32 = 102u32 ; const NAME : & 'static str = "VISION_POSITION_ESTIMATE" ; const EXTRA_CRC : u8 = 158u8 ; const ENCODED_LEN : usize = 32usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . usec = buf . get_u64_le () ; __struct . x = buf . get_f32_le () ; __struct . y = buf . get_f32_le () ; __struct . z = buf . get_f32_le () ; __struct . roll = buf . get_f32_le () ; __struct . pitch = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . usec) ; __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; __tmp . put_f32_le (self . roll) ; __tmp . put_f32_le (self . pitch) ; __tmp . put_f32_le (self . yaw) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GPS2_RTK_DATA { pub time_last_baseline_ms : u32 , pub tow : u32 , pub baseline_a_mm : i32 , pub baseline_b_mm : i32 , pub baseline_c_mm : i32 , pub accuracy : u32 , pub iar_num_hypotheses : i32 , pub wn : u16 , pub rtk_receiver_id : u8 , pub rtk_health : u8 , pub rtk_rate : u8 , pub nsats : u8 , pub baseline_coords_type : RtkBaselineCoordinateSystem , } impl GPS2_RTK_DATA { pub const ENCODED_LEN : usize = 35usize ; pub const DEFAULT : Self = Self { time_last_baseline_ms : 0_u32 , tow : 0_u32 , baseline_a_mm : 0_i32 , baseline_b_mm : 0_i32 , baseline_c_mm : 0_i32 , accuracy : 0_u32 , iar_num_hypotheses : 0_i32 , wn : 0_u16 , rtk_receiver_id : 0_u8 , rtk_health : 0_u8 , rtk_rate : 0_u8 , nsats : 0_u8 , baseline_coords_type : RtkBaselineCoordinateSystem :: DEFAULT , } ; } impl Default for GPS2_RTK_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GPS2_RTK_DATA { type Message = MavMessage ; const ID : u32 = 128u32 ; const NAME : & 'static str = "GPS2_RTK" ; const EXTRA_CRC : u8 = 226u8 ; const ENCODED_LEN : usize = 35usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_last_baseline_ms = buf . get_u32_le () ; __struct . tow = buf . get_u32_le () ; __struct . baseline_a_mm = buf . get_i32_le () ; __struct . baseline_b_mm = buf . get_i32_le () ; __struct . baseline_c_mm = buf . get_i32_le () ; __struct . accuracy = buf . get_u32_le () ; __struct . iar_num_hypotheses = buf . get_i32_le () ; __struct . wn = buf . get_u16_le () ; __struct . rtk_receiver_id = buf . get_u8 () ; __struct . rtk_health = buf . get_u8 () ; __struct . rtk_rate = buf . get_u8 () ; __struct . nsats = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . baseline_coords_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "RtkBaselineCoordinateSystem" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_last_baseline_ms) ; __tmp . put_u32_le (self . tow) ; __tmp . put_i32_le (self . baseline_a_mm) ; __tmp . put_i32_le (self . baseline_b_mm) ; __tmp . put_i32_le (self . baseline_c_mm) ; __tmp . put_u32_le (self . accuracy) ; __tmp . put_i32_le (self . iar_num_hypotheses) ; __tmp . put_u16_le (self . wn) ; __tmp . put_u8 (self . rtk_receiver_id) ; __tmp . put_u8 (self . rtk_health) ; __tmp . put_u8 (self . rtk_rate) ; __tmp . put_u8 (self . nsats) ; __tmp . put_u8 (self . baseline_coords_type as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PLAY_TUNE_V2_DATA { pub format : TuneFormat , pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub tune : [u8 ; 248] , } impl PLAY_TUNE_V2_DATA { pub const ENCODED_LEN : usize = 254usize ; pub const DEFAULT : Self = Self { format : TuneFormat :: DEFAULT , target_system : 0_u8 , target_component : 0_u8 , tune : [0_u8 ; 248usize] , } ; } impl Default for PLAY_TUNE_V2_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for PLAY_TUNE_V2_DATA { type Message = MavMessage ; const ID : u32 = 400u32 ; const NAME : & 'static str = "PLAY_TUNE_V2" ; const EXTRA_CRC : u8 = 110u8 ; const ENCODED_LEN : usize = 254usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u32_le () ; __struct . format = TuneFormat :: from_bits (tmp & TuneFormat :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "TuneFormat" , value : tmp as u32 }) ? ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . tune { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . format . bits ()) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . tune { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CELLULAR_STATUS_DATA { pub mcc : u16 , pub mnc : u16 , pub lac : u16 , pub status : CellularStatusFlag , pub failure_reason : CellularNetworkFailedReason , pub mavtype : CellularNetworkRadioType , pub quality : u8 , } impl CELLULAR_STATUS_DATA { pub const ENCODED_LEN : usize = 10usize ; pub const DEFAULT : Self = Self { mcc : 0_u16 , mnc : 0_u16 , lac : 0_u16 , status : CellularStatusFlag :: DEFAULT , failure_reason : CellularNetworkFailedReason :: DEFAULT , mavtype : CellularNetworkRadioType :: DEFAULT , quality : 0_u8 , } ; } impl Default for CELLULAR_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CELLULAR_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 334u32 ; const NAME : & 'static str = "CELLULAR_STATUS" ; const EXTRA_CRC : u8 = 72u8 ; const ENCODED_LEN : usize = 10usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . mcc = buf . get_u16_le () ; __struct . mnc = buf . get_u16_le () ; __struct . lac = buf . get_u16_le () ; let tmp = buf . get_u8 () ; __struct . status = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "CellularStatusFlag" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . failure_reason = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "CellularNetworkFailedReason" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . mavtype = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "CellularNetworkRadioType" , value : tmp as u32 }) ? ; __struct . quality = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . mcc) ; __tmp . put_u16_le (self . mnc) ; __tmp . put_u16_le (self . lac) ; __tmp . put_u8 (self . status as u8) ; __tmp . put_u8 (self . failure_reason as u8) ; __tmp . put_u8 (self . mavtype as u8) ; __tmp . put_u8 (self . quality) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct OPEN_DRONE_ID_AUTHENTICATION_DATA { pub timestamp : u32 , pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub id_or_mac : [u8 ; 20] , pub authentication_type : MavOdidAuthType , pub data_page : u8 , pub last_page_index : u8 , pub length : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub authentication_data : [u8 ; 23] , } impl OPEN_DRONE_ID_AUTHENTICATION_DATA { pub const ENCODED_LEN : usize = 53usize ; pub const DEFAULT : Self = Self { timestamp : 0_u32 , target_system : 0_u8 , target_component : 0_u8 , id_or_mac : [0_u8 ; 20usize] , authentication_type : MavOdidAuthType :: DEFAULT , data_page : 0_u8 , last_page_index : 0_u8 , length : 0_u8 , authentication_data : [0_u8 ; 23usize] , } ; } impl Default for OPEN_DRONE_ID_AUTHENTICATION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for OPEN_DRONE_ID_AUTHENTICATION_DATA { type Message = MavMessage ; const ID : u32 = 12902u32 ; const NAME : & 'static str = "OPEN_DRONE_ID_AUTHENTICATION" ; const EXTRA_CRC : u8 = 140u8 ; const ENCODED_LEN : usize = 53usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . timestamp = buf . get_u32_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . id_or_mac { let val = buf . get_u8 () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . authentication_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidAuthType" , value : tmp as u32 }) ? ; __struct . data_page = buf . get_u8 () ; __struct . last_page_index = buf . get_u8 () ; __struct . length = buf . get_u8 () ; for v in & mut __struct . authentication_data { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . timestamp) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . id_or_mac { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . authentication_type as u8) ; __tmp . put_u8 (self . data_page) ; __tmp . put_u8 (self . last_page_index) ; __tmp . put_u8 (self . length) ; for val in & self . authentication_data { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct RESPONSE_EVENT_ERROR_DATA { pub sequence : u16 , pub sequence_oldest_available : u16 , pub target_system : u8 , pub target_component : u8 , pub reason : MavEventErrorReason , } impl RESPONSE_EVENT_ERROR_DATA { pub const ENCODED_LEN : usize = 7usize ; pub const DEFAULT : Self = Self { sequence : 0_u16 , sequence_oldest_available : 0_u16 , target_system : 0_u8 , target_component : 0_u8 , reason : MavEventErrorReason :: DEFAULT , } ; } impl Default for RESPONSE_EVENT_ERROR_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for RESPONSE_EVENT_ERROR_DATA { type Message = MavMessage ; const ID : u32 = 413u32 ; const NAME : & 'static str = "RESPONSE_EVENT_ERROR" ; const EXTRA_CRC : u8 = 77u8 ; const ENCODED_LEN : usize = 7usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . sequence = buf . get_u16_le () ; __struct . sequence_oldest_available = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . reason = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavEventErrorReason" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . sequence) ; __tmp . put_u16_le (self . sequence_oldest_available) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . reason as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SCALED_PRESSURE2_DATA { pub time_boot_ms : u32 , pub press_abs : f32 , pub press_diff : f32 , pub temperature : i16 , } impl SCALED_PRESSURE2_DATA { pub const ENCODED_LEN : usize = 14usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , press_abs : 0.0_f32 , press_diff : 0.0_f32 , temperature : 0_i16 , } ; } impl Default for SCALED_PRESSURE2_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SCALED_PRESSURE2_DATA { type Message = MavMessage ; const ID : u32 = 137u32 ; const NAME : & 'static str = "SCALED_PRESSURE2" ; const EXTRA_CRC : u8 = 195u8 ; const ENCODED_LEN : usize = 14usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . press_abs = buf . get_f32_le () ; __struct . press_diff = buf . get_f32_le () ; __struct . temperature = buf . get_i16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . press_abs) ; __tmp . put_f32_le (self . press_diff) ; __tmp . put_i16_le (self . temperature) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct NAMED_VALUE_FLOAT_DATA { pub time_boot_ms : u32 , pub value : f32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub name : [u8 ; 10] , } impl NAMED_VALUE_FLOAT_DATA { pub const ENCODED_LEN : usize = 18usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , value : 0.0_f32 , name : [0_u8 ; 10usize] , } ; } impl Default for NAMED_VALUE_FLOAT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for NAMED_VALUE_FLOAT_DATA { type Message = MavMessage ; const ID : u32 = 251u32 ; const NAME : & 'static str = "NAMED_VALUE_FLOAT" ; const EXTRA_CRC : u8 = 170u8 ; const ENCODED_LEN : usize = 18usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . value = buf . get_f32_le () ; for v in & mut __struct . name { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . value) ; for val in & self . name { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ATTITUDE_QUATERNION_DATA { pub time_boot_ms : u32 , pub q1 : f32 , pub q2 : f32 , pub q3 : f32 , pub q4 : f32 , pub rollspeed : f32 , pub pitchspeed : f32 , pub yawspeed : f32 , } impl ATTITUDE_QUATERNION_DATA { pub const ENCODED_LEN : usize = 32usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , q1 : 0.0_f32 , q2 : 0.0_f32 , q3 : 0.0_f32 , q4 : 0.0_f32 , rollspeed : 0.0_f32 , pitchspeed : 0.0_f32 , yawspeed : 0.0_f32 , } ; } impl Default for ATTITUDE_QUATERNION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ATTITUDE_QUATERNION_DATA { type Message = MavMessage ; const ID : u32 = 31u32 ; const NAME : & 'static str = "ATTITUDE_QUATERNION" ; const EXTRA_CRC : u8 = 246u8 ; const ENCODED_LEN : usize = 32usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . q1 = buf . get_f32_le () ; __struct . q2 = buf . get_f32_le () ; __struct . q3 = buf . get_f32_le () ; __struct . q4 = buf . get_f32_le () ; __struct . rollspeed = buf . get_f32_le () ; __struct . pitchspeed = buf . get_f32_le () ; __struct . yawspeed = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . q1) ; __tmp . put_f32_le (self . q2) ; __tmp . put_f32_le (self . q3) ; __tmp . put_f32_le (self . q4) ; __tmp . put_f32_le (self . rollspeed) ; __tmp . put_f32_le (self . pitchspeed) ; __tmp . put_f32_le (self . yawspeed) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct TIMESYNC_DATA { pub tc1 : i64 , pub ts1 : i64 , } impl TIMESYNC_DATA { pub const ENCODED_LEN : usize = 16usize ; pub const DEFAULT : Self = Self { tc1 : 0_i64 , ts1 : 0_i64 , } ; } impl Default for TIMESYNC_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for TIMESYNC_DATA { type Message = MavMessage ; const ID : u32 = 111u32 ; const NAME : & 'static str = "TIMESYNC" ; const EXTRA_CRC : u8 = 34u8 ; const ENCODED_LEN : usize = 16usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . tc1 = buf . get_i64_le () ; __struct . ts1 = buf . get_i64_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i64_le (self . tc1) ; __tmp . put_i64_le (self . ts1) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct AUTOPILOT_VERSION_DATA { pub capabilities : MavProtocolCapability , pub uid : u64 , pub flight_sw_version : u32 , pub middleware_sw_version : u32 , pub os_sw_version : u32 , pub board_version : u32 , pub vendor_id : u16 , pub product_id : u16 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub flight_custom_version : [u8 ; 8] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub middleware_custom_version : [u8 ; 8] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub os_custom_version : [u8 ; 8] , } impl AUTOPILOT_VERSION_DATA { pub const ENCODED_LEN : usize = 60usize ; pub const DEFAULT : Self = Self { capabilities : MavProtocolCapability :: DEFAULT , uid : 0_u64 , flight_sw_version : 0_u32 , middleware_sw_version : 0_u32 , os_sw_version : 0_u32 , board_version : 0_u32 , vendor_id : 0_u16 , product_id : 0_u16 , flight_custom_version : [0_u8 ; 8usize] , middleware_custom_version : [0_u8 ; 8usize] , os_custom_version : [0_u8 ; 8usize] , } ; } impl Default for AUTOPILOT_VERSION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for AUTOPILOT_VERSION_DATA { type Message = MavMessage ; const ID : u32 = 148u32 ; const NAME : & 'static str = "AUTOPILOT_VERSION" ; const EXTRA_CRC : u8 = 178u8 ; const ENCODED_LEN : usize = 60usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u64_le () ; __struct . capabilities = MavProtocolCapability :: from_bits (tmp & MavProtocolCapability :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "MavProtocolCapability" , value : tmp as u32 }) ? ; __struct . uid = buf . get_u64_le () ; __struct . flight_sw_version = buf . get_u32_le () ; __struct . middleware_sw_version = buf . get_u32_le () ; __struct . os_sw_version = buf . get_u32_le () ; __struct . board_version = buf . get_u32_le () ; __struct . vendor_id = buf . get_u16_le () ; __struct . product_id = buf . get_u16_le () ; for v in & mut __struct . flight_custom_version { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . middleware_custom_version { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . os_custom_version { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . capabilities . bits ()) ; __tmp . put_u64_le (self . uid) ; __tmp . put_u32_le (self . flight_sw_version) ; __tmp . put_u32_le (self . middleware_sw_version) ; __tmp . put_u32_le (self . os_sw_version) ; __tmp . put_u32_le (self . board_version) ; __tmp . put_u16_le (self . vendor_id) ; __tmp . put_u16_le (self . product_id) ; for val in & self . flight_custom_version { __tmp . put_u8 (* val) ; } for val in & self . middleware_custom_version { __tmp . put_u8 (* val) ; } for val in & self . os_custom_version { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MISSION_REQUEST_PARTIAL_LIST_DATA { pub start_index : i16 , pub end_index : i16 , pub target_system : u8 , pub target_component : u8 , } impl MISSION_REQUEST_PARTIAL_LIST_DATA { pub const ENCODED_LEN : usize = 6usize ; pub const DEFAULT : Self = Self { start_index : 0_i16 , end_index : 0_i16 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for MISSION_REQUEST_PARTIAL_LIST_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MISSION_REQUEST_PARTIAL_LIST_DATA { type Message = MavMessage ; const ID : u32 = 37u32 ; const NAME : & 'static str = "MISSION_REQUEST_PARTIAL_LIST" ; const EXTRA_CRC : u8 = 212u8 ; const ENCODED_LEN : usize = 6usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . start_index = buf . get_i16_le () ; __struct . end_index = buf . get_i16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i16_le (self . start_index) ; __tmp . put_i16_le (self . end_index) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct VISION_SPEED_ESTIMATE_DATA { pub usec : u64 , pub x : f32 , pub y : f32 , pub z : f32 , } impl VISION_SPEED_ESTIMATE_DATA { pub const ENCODED_LEN : usize = 20usize ; pub const DEFAULT : Self = Self { usec : 0_u64 , x : 0.0_f32 , y : 0.0_f32 , z : 0.0_f32 , } ; } impl Default for VISION_SPEED_ESTIMATE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for VISION_SPEED_ESTIMATE_DATA { type Message = MavMessage ; const ID : u32 = 103u32 ; const NAME : & 'static str = "VISION_SPEED_ESTIMATE" ; const EXTRA_CRC : u8 = 208u8 ; const ENCODED_LEN : usize = 20usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . usec = buf . get_u64_le () ; __struct . x = buf . get_f32_le () ; __struct . y = buf . get_f32_le () ; __struct . z = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . usec) ; __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SCALED_PRESSURE_DATA { pub time_boot_ms : u32 , pub press_abs : f32 , pub press_diff : f32 , pub temperature : i16 , } impl SCALED_PRESSURE_DATA { pub const ENCODED_LEN : usize = 14usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , press_abs : 0.0_f32 , press_diff : 0.0_f32 , temperature : 0_i16 , } ; } impl Default for SCALED_PRESSURE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SCALED_PRESSURE_DATA { type Message = MavMessage ; const ID : u32 = 29u32 ; const NAME : & 'static str = "SCALED_PRESSURE" ; const EXTRA_CRC : u8 = 115u8 ; const ENCODED_LEN : usize = 14usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . press_abs = buf . get_f32_le () ; __struct . press_diff = buf . get_f32_le () ; __struct . temperature = buf . get_i16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . press_abs) ; __tmp . put_f32_le (self . press_diff) ; __tmp . put_i16_le (self . temperature) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PARAM_REQUEST_READ_DATA { pub param_index : i16 , pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub param_id : [u8 ; 16] , } impl PARAM_REQUEST_READ_DATA { pub const ENCODED_LEN : usize = 20usize ; pub const DEFAULT : Self = Self { param_index : 0_i16 , target_system : 0_u8 , target_component : 0_u8 , param_id : [0_u8 ; 16usize] , } ; } impl Default for PARAM_REQUEST_READ_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for PARAM_REQUEST_READ_DATA { type Message = MavMessage ; const ID : u32 = 20u32 ; const NAME : & 'static str = "PARAM_REQUEST_READ" ; const EXTRA_CRC : u8 = 214u8 ; const ENCODED_LEN : usize = 20usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . param_index = buf . get_i16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . param_id { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i16_le (self . param_index) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . param_id { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PARAM_EXT_ACK_DATA { # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub param_id : [u8 ; 16] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub param_value : [u8 ; 128] , pub param_type : MavParamExtType , pub param_result : ParamAck , } impl PARAM_EXT_ACK_DATA { pub const ENCODED_LEN : usize = 146usize ; pub const DEFAULT : Self = Self { param_id : [0_u8 ; 16usize] , param_value : [0_u8 ; 128usize] , param_type : MavParamExtType :: DEFAULT , param_result : ParamAck :: DEFAULT , } ; } impl Default for PARAM_EXT_ACK_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for PARAM_EXT_ACK_DATA { type Message = MavMessage ; const ID : u32 = 324u32 ; const NAME : & 'static str = "PARAM_EXT_ACK" ; const EXTRA_CRC : u8 = 132u8 ; const ENCODED_LEN : usize = 146usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; for v in & mut __struct . param_id { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . param_value { let val = buf . get_u8 () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . param_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavParamExtType" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . param_result = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "ParamAck" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; for val in & self . param_id { __tmp . put_u8 (* val) ; } for val in & self . param_value { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . param_type as u8) ; __tmp . put_u8 (self . param_result as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct WIFI_CONFIG_AP_DATA { # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub ssid : [u8 ; 32] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub password : [u8 ; 64] , } impl WIFI_CONFIG_AP_DATA { pub const ENCODED_LEN : usize = 96usize ; pub const DEFAULT : Self = Self { ssid : [0_u8 ; 32usize] , password : [0_u8 ; 64usize] , } ; } impl Default for WIFI_CONFIG_AP_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for WIFI_CONFIG_AP_DATA { type Message = MavMessage ; const ID : u32 = 299u32 ; const NAME : & 'static str = "WIFI_CONFIG_AP" ; const EXTRA_CRC : u8 = 19u8 ; const ENCODED_LEN : usize = 96usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; for v in & mut __struct . ssid { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . password { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; for val in & self . ssid { __tmp . put_u8 (* val) ; } for val in & self . password { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct EXTENDED_SYS_STATE_DATA { pub vtol_state : MavVtolState , pub landed_state : MavLandedState , } impl EXTENDED_SYS_STATE_DATA { pub const ENCODED_LEN : usize = 2usize ; pub const DEFAULT : Self = Self { vtol_state : MavVtolState :: DEFAULT , landed_state : MavLandedState :: DEFAULT , } ; } impl Default for EXTENDED_SYS_STATE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for EXTENDED_SYS_STATE_DATA { type Message = MavMessage ; const ID : u32 = 245u32 ; const NAME : & 'static str = "EXTENDED_SYS_STATE" ; const EXTRA_CRC : u8 = 130u8 ; const ENCODED_LEN : usize = 2usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u8 () ; __struct . vtol_state = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavVtolState" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . landed_state = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavLandedState" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . vtol_state as u8) ; __tmp . put_u8 (self . landed_state as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct OPEN_DRONE_ID_OPERATOR_ID_DATA { pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub id_or_mac : [u8 ; 20] , pub operator_id_type : MavOdidOperatorIdType , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub operator_id : [u8 ; 20] , } impl OPEN_DRONE_ID_OPERATOR_ID_DATA { pub const ENCODED_LEN : usize = 43usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , id_or_mac : [0_u8 ; 20usize] , operator_id_type : MavOdidOperatorIdType :: DEFAULT , operator_id : [0_u8 ; 20usize] , } ; } impl Default for OPEN_DRONE_ID_OPERATOR_ID_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for OPEN_DRONE_ID_OPERATOR_ID_DATA { type Message = MavMessage ; const ID : u32 = 12905u32 ; const NAME : & 'static str = "OPEN_DRONE_ID_OPERATOR_ID" ; const EXTRA_CRC : u8 = 49u8 ; const ENCODED_LEN : usize = 43usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . id_or_mac { let val = buf . get_u8 () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . operator_id_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidOperatorIdType" , value : tmp as u32 }) ? ; for v in & mut __struct . operator_id { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . id_or_mac { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . operator_id_type as u8) ; for val in & self . operator_id { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GIMBAL_DEVICE_SET_ATTITUDE_DATA { # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub q : [f32 ; 4] , pub angular_velocity_x : f32 , pub angular_velocity_y : f32 , pub angular_velocity_z : f32 , pub flags : GimbalDeviceFlags , pub target_system : u8 , pub target_component : u8 , } impl GIMBAL_DEVICE_SET_ATTITUDE_DATA { pub const ENCODED_LEN : usize = 32usize ; pub const DEFAULT : Self = Self { q : [0.0_f32 ; 4usize] , angular_velocity_x : 0.0_f32 , angular_velocity_y : 0.0_f32 , angular_velocity_z : 0.0_f32 , flags : GimbalDeviceFlags :: DEFAULT , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for GIMBAL_DEVICE_SET_ATTITUDE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GIMBAL_DEVICE_SET_ATTITUDE_DATA { type Message = MavMessage ; const ID : u32 = 284u32 ; const NAME : & 'static str = "GIMBAL_DEVICE_SET_ATTITUDE" ; const EXTRA_CRC : u8 = 99u8 ; const ENCODED_LEN : usize = 32usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; for v in & mut __struct . q { let val = buf . get_f32_le () ; * v = val ; } __struct . angular_velocity_x = buf . get_f32_le () ; __struct . angular_velocity_y = buf . get_f32_le () ; __struct . angular_velocity_z = buf . get_f32_le () ; let tmp = buf . get_u16_le () ; __struct . flags = GimbalDeviceFlags :: from_bits (tmp & GimbalDeviceFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "GimbalDeviceFlags" , value : tmp as u32 }) ? ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; for val in & self . q { __tmp . put_f32_le (* val) ; } __tmp . put_f32_le (self . angular_velocity_x) ; __tmp . put_f32_le (self . angular_velocity_y) ; __tmp . put_f32_le (self . angular_velocity_z) ; __tmp . put_u16_le (self . flags . bits ()) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct VIDEO_STREAM_STATUS_DATA { pub framerate : f32 , pub bitrate : u32 , pub flags : VideoStreamStatusFlags , pub resolution_h : u16 , pub resolution_v : u16 , pub rotation : u16 , pub hfov : u16 , pub stream_id : u8 , } impl VIDEO_STREAM_STATUS_DATA { pub const ENCODED_LEN : usize = 19usize ; pub const DEFAULT : Self = Self { framerate : 0.0_f32 , bitrate : 0_u32 , flags : VideoStreamStatusFlags :: DEFAULT , resolution_h : 0_u16 , resolution_v : 0_u16 , rotation : 0_u16 , hfov : 0_u16 , stream_id : 0_u8 , } ; } impl Default for VIDEO_STREAM_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for VIDEO_STREAM_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 270u32 ; const NAME : & 'static str = "VIDEO_STREAM_STATUS" ; const EXTRA_CRC : u8 = 59u8 ; const ENCODED_LEN : usize = 19usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . framerate = buf . get_f32_le () ; __struct . bitrate = buf . get_u32_le () ; let tmp = buf . get_u16_le () ; __struct . flags = FromPrimitive :: from_u16 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "VideoStreamStatusFlags" , value : tmp as u32 }) ? ; __struct . resolution_h = buf . get_u16_le () ; __struct . resolution_v = buf . get_u16_le () ; __struct . rotation = buf . get_u16_le () ; __struct . hfov = buf . get_u16_le () ; __struct . stream_id = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . framerate) ; __tmp . put_u32_le (self . bitrate) ; __tmp . put_u16_le (self . flags as u16) ; __tmp . put_u16_le (self . resolution_h) ; __tmp . put_u16_le (self . resolution_v) ; __tmp . put_u16_le (self . rotation) ; __tmp . put_u16_le (self . hfov) ; __tmp . put_u8 (self . stream_id) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct UAVCAN_NODE_INFO_DATA { pub time_usec : u64 , pub uptime_sec : u32 , pub sw_vcs_commit : u32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub name : [u8 ; 80] , pub hw_version_major : u8 , pub hw_version_minor : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub hw_unique_id : [u8 ; 16] , pub sw_version_major : u8 , pub sw_version_minor : u8 , } impl UAVCAN_NODE_INFO_DATA { pub const ENCODED_LEN : usize = 116usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , uptime_sec : 0_u32 , sw_vcs_commit : 0_u32 , name : [0_u8 ; 80usize] , hw_version_major : 0_u8 , hw_version_minor : 0_u8 , hw_unique_id : [0_u8 ; 16usize] , sw_version_major : 0_u8 , sw_version_minor : 0_u8 , } ; } impl Default for UAVCAN_NODE_INFO_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for UAVCAN_NODE_INFO_DATA { type Message = MavMessage ; const ID : u32 = 311u32 ; const NAME : & 'static str = "UAVCAN_NODE_INFO" ; const EXTRA_CRC : u8 = 95u8 ; const ENCODED_LEN : usize = 116usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . uptime_sec = buf . get_u32_le () ; __struct . sw_vcs_commit = buf . get_u32_le () ; for v in & mut __struct . name { let val = buf . get_u8 () ; * v = val ; } __struct . hw_version_major = buf . get_u8 () ; __struct . hw_version_minor = buf . get_u8 () ; for v in & mut __struct . hw_unique_id { let val = buf . get_u8 () ; * v = val ; } __struct . sw_version_major = buf . get_u8 () ; __struct . sw_version_minor = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_u32_le (self . uptime_sec) ; __tmp . put_u32_le (self . sw_vcs_commit) ; for val in & self . name { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . hw_version_major) ; __tmp . put_u8 (self . hw_version_minor) ; for val in & self . hw_unique_id { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . sw_version_major) ; __tmp . put_u8 (self . sw_version_minor) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SAFETY_SET_ALLOWED_AREA_DATA { pub p1x : f32 , pub p1y : f32 , pub p1z : f32 , pub p2x : f32 , pub p2y : f32 , pub p2z : f32 , pub target_system : u8 , pub target_component : u8 , pub frame : MavFrame , } impl SAFETY_SET_ALLOWED_AREA_DATA { pub const ENCODED_LEN : usize = 27usize ; pub const DEFAULT : Self = Self { p1x : 0.0_f32 , p1y : 0.0_f32 , p1z : 0.0_f32 , p2x : 0.0_f32 , p2y : 0.0_f32 , p2z : 0.0_f32 , target_system : 0_u8 , target_component : 0_u8 , frame : MavFrame :: DEFAULT , } ; } impl Default for SAFETY_SET_ALLOWED_AREA_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SAFETY_SET_ALLOWED_AREA_DATA { type Message = MavMessage ; const ID : u32 = 54u32 ; const NAME : & 'static str = "SAFETY_SET_ALLOWED_AREA" ; const EXTRA_CRC : u8 = 15u8 ; const ENCODED_LEN : usize = 27usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . p1x = buf . get_f32_le () ; __struct . p1y = buf . get_f32_le () ; __struct . p1z = buf . get_f32_le () ; __struct . p2x = buf . get_f32_le () ; __struct . p2y = buf . get_f32_le () ; __struct . p2z = buf . get_f32_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . frame = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavFrame" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . p1x) ; __tmp . put_f32_le (self . p1y) ; __tmp . put_f32_le (self . p1z) ; __tmp . put_f32_le (self . p2x) ; __tmp . put_f32_le (self . p2y) ; __tmp . put_f32_le (self . p2z) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . frame as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GLOBAL_POSITION_INT_COV_DATA { pub time_usec : u64 , pub lat : i32 , pub lon : i32 , pub alt : i32 , pub relative_alt : i32 , pub vx : f32 , pub vy : f32 , pub vz : f32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub covariance : [f32 ; 36] , pub estimator_type : MavEstimatorType , } impl GLOBAL_POSITION_INT_COV_DATA { pub const ENCODED_LEN : usize = 181usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , lat : 0_i32 , lon : 0_i32 , alt : 0_i32 , relative_alt : 0_i32 , vx : 0.0_f32 , vy : 0.0_f32 , vz : 0.0_f32 , covariance : [0.0_f32 ; 36usize] , estimator_type : MavEstimatorType :: DEFAULT , } ; } impl Default for GLOBAL_POSITION_INT_COV_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GLOBAL_POSITION_INT_COV_DATA { type Message = MavMessage ; const ID : u32 = 63u32 ; const NAME : & 'static str = "GLOBAL_POSITION_INT_COV" ; const EXTRA_CRC : u8 = 119u8 ; const ENCODED_LEN : usize = 181usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . alt = buf . get_i32_le () ; __struct . relative_alt = buf . get_i32_le () ; __struct . vx = buf . get_f32_le () ; __struct . vy = buf . get_f32_le () ; __struct . vz = buf . get_f32_le () ; for v in & mut __struct . covariance { let val = buf . get_f32_le () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . estimator_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavEstimatorType" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_i32_le (self . alt) ; __tmp . put_i32_le (self . relative_alt) ; __tmp . put_f32_le (self . vx) ; __tmp . put_f32_le (self . vy) ; __tmp . put_f32_le (self . vz) ; for val in & self . covariance { __tmp . put_f32_le (* val) ; } __tmp . put_u8 (self . estimator_type as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SYS_STATUS_DATA { pub onboard_control_sensors_present : MavSysStatusSensor , pub onboard_control_sensors_enabled : MavSysStatusSensor , pub onboard_control_sensors_health : MavSysStatusSensor , pub load : u16 , pub voltage_battery : u16 , pub current_battery : i16 , pub drop_rate_comm : u16 , pub errors_comm : u16 , pub errors_count1 : u16 , pub errors_count2 : u16 , pub errors_count3 : u16 , pub errors_count4 : u16 , pub battery_remaining : i8 , } impl SYS_STATUS_DATA { pub const ENCODED_LEN : usize = 31usize ; pub const DEFAULT : Self = Self { onboard_control_sensors_present : MavSysStatusSensor :: DEFAULT , onboard_control_sensors_enabled : MavSysStatusSensor :: DEFAULT , onboard_control_sensors_health : MavSysStatusSensor :: DEFAULT , load : 0_u16 , voltage_battery : 0_u16 , current_battery : 0_i16 , drop_rate_comm : 0_u16 , errors_comm : 0_u16 , errors_count1 : 0_u16 , errors_count2 : 0_u16 , errors_count3 : 0_u16 , errors_count4 : 0_u16 , battery_remaining : 0_i8 , } ; } impl Default for SYS_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SYS_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 1u32 ; const NAME : & 'static str = "SYS_STATUS" ; const EXTRA_CRC : u8 = 124u8 ; const ENCODED_LEN : usize = 31usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u32_le () ; __struct . onboard_control_sensors_present = MavSysStatusSensor :: from_bits (tmp & MavSysStatusSensor :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "MavSysStatusSensor" , value : tmp as u32 }) ? ; let tmp = buf . get_u32_le () ; __struct . onboard_control_sensors_enabled = MavSysStatusSensor :: from_bits (tmp & MavSysStatusSensor :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "MavSysStatusSensor" , value : tmp as u32 }) ? ; let tmp = buf . get_u32_le () ; __struct . onboard_control_sensors_health = MavSysStatusSensor :: from_bits (tmp & MavSysStatusSensor :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "MavSysStatusSensor" , value : tmp as u32 }) ? ; __struct . load = buf . get_u16_le () ; __struct . voltage_battery = buf . get_u16_le () ; __struct . current_battery = buf . get_i16_le () ; __struct . drop_rate_comm = buf . get_u16_le () ; __struct . errors_comm = buf . get_u16_le () ; __struct . errors_count1 = buf . get_u16_le () ; __struct . errors_count2 = buf . get_u16_le () ; __struct . errors_count3 = buf . get_u16_le () ; __struct . errors_count4 = buf . get_u16_le () ; __struct . battery_remaining = buf . get_i8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . onboard_control_sensors_present . bits ()) ; __tmp . put_u32_le (self . onboard_control_sensors_enabled . bits ()) ; __tmp . put_u32_le (self . onboard_control_sensors_health . bits ()) ; __tmp . put_u16_le (self . load) ; __tmp . put_u16_le (self . voltage_battery) ; __tmp . put_i16_le (self . current_battery) ; __tmp . put_u16_le (self . drop_rate_comm) ; __tmp . put_u16_le (self . errors_comm) ; __tmp . put_u16_le (self . errors_count1) ; __tmp . put_u16_le (self . errors_count2) ; __tmp . put_u16_le (self . errors_count3) ; __tmp . put_u16_le (self . errors_count4) ; __tmp . put_i8 (self . battery_remaining) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ODOMETRY_DATA { pub time_usec : u64 , pub x : f32 , pub y : f32 , pub z : f32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub q : [f32 ; 4] , pub vx : f32 , pub vy : f32 , pub vz : f32 , pub rollspeed : f32 , pub pitchspeed : f32 , pub yawspeed : f32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub pose_covariance : [f32 ; 21] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub velocity_covariance : [f32 ; 21] , pub frame_id : MavFrame , pub child_frame_id : MavFrame , } impl ODOMETRY_DATA { pub const ENCODED_LEN : usize = 230usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , x : 0.0_f32 , y : 0.0_f32 , z : 0.0_f32 , q : [0.0_f32 ; 4usize] , vx : 0.0_f32 , vy : 0.0_f32 , vz : 0.0_f32 , rollspeed : 0.0_f32 , pitchspeed : 0.0_f32 , yawspeed : 0.0_f32 , pose_covariance : [0.0_f32 ; 21usize] , velocity_covariance : [0.0_f32 ; 21usize] , frame_id : MavFrame :: DEFAULT , child_frame_id : MavFrame :: DEFAULT , } ; } impl Default for ODOMETRY_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ODOMETRY_DATA { type Message = MavMessage ; const ID : u32 = 331u32 ; const NAME : & 'static str = "ODOMETRY" ; const EXTRA_CRC : u8 = 91u8 ; const ENCODED_LEN : usize = 230usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . x = buf . get_f32_le () ; __struct . y = buf . get_f32_le () ; __struct . z = buf . get_f32_le () ; for v in & mut __struct . q { let val = buf . get_f32_le () ; * v = val ; } __struct . vx = buf . get_f32_le () ; __struct . vy = buf . get_f32_le () ; __struct . vz = buf . get_f32_le () ; __struct . rollspeed = buf . get_f32_le () ; __struct . pitchspeed = buf . get_f32_le () ; __struct . yawspeed = buf . get_f32_le () ; for v in & mut __struct . pose_covariance { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . velocity_covariance { let val = buf . get_f32_le () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . frame_id = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavFrame" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . child_frame_id = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavFrame" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; for val in & self . q { __tmp . put_f32_le (* val) ; } __tmp . put_f32_le (self . vx) ; __tmp . put_f32_le (self . vy) ; __tmp . put_f32_le (self . vz) ; __tmp . put_f32_le (self . rollspeed) ; __tmp . put_f32_le (self . pitchspeed) ; __tmp . put_f32_le (self . yawspeed) ; for val in & self . pose_covariance { __tmp . put_f32_le (* val) ; } for val in & self . velocity_covariance { __tmp . put_f32_le (* val) ; } __tmp . put_u8 (self . frame_id as u8) ; __tmp . put_u8 (self . child_frame_id as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CAMERA_INFORMATION_DATA { pub time_boot_ms : u32 , pub firmware_version : u32 , pub focal_length : f32 , pub sensor_size_h : f32 , pub sensor_size_v : f32 , pub flags : CameraCapFlags , pub resolution_h : u16 , pub resolution_v : u16 , pub cam_definition_version : u16 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub vendor_name : [u8 ; 32] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub model_name : [u8 ; 32] , pub lens_id : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub cam_definition_uri : [u8 ; 140] , } impl CAMERA_INFORMATION_DATA { pub const ENCODED_LEN : usize = 235usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , firmware_version : 0_u32 , focal_length : 0.0_f32 , sensor_size_h : 0.0_f32 , sensor_size_v : 0.0_f32 , flags : CameraCapFlags :: DEFAULT , resolution_h : 0_u16 , resolution_v : 0_u16 , cam_definition_version : 0_u16 , vendor_name : [0_u8 ; 32usize] , model_name : [0_u8 ; 32usize] , lens_id : 0_u8 , cam_definition_uri : [0_u8 ; 140usize] , } ; } impl Default for CAMERA_INFORMATION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CAMERA_INFORMATION_DATA { type Message = MavMessage ; const ID : u32 = 259u32 ; const NAME : & 'static str = "CAMERA_INFORMATION" ; const EXTRA_CRC : u8 = 92u8 ; const ENCODED_LEN : usize = 235usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . firmware_version = buf . get_u32_le () ; __struct . focal_length = buf . get_f32_le () ; __struct . sensor_size_h = buf . get_f32_le () ; __struct . sensor_size_v = buf . get_f32_le () ; let tmp = buf . get_u32_le () ; __struct . flags = CameraCapFlags :: from_bits (tmp & CameraCapFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "CameraCapFlags" , value : tmp as u32 }) ? ; __struct . resolution_h = buf . get_u16_le () ; __struct . resolution_v = buf . get_u16_le () ; __struct . cam_definition_version = buf . get_u16_le () ; for v in & mut __struct . vendor_name { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . model_name { let val = buf . get_u8 () ; * v = val ; } __struct . lens_id = buf . get_u8 () ; for v in & mut __struct . cam_definition_uri { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_u32_le (self . firmware_version) ; __tmp . put_f32_le (self . focal_length) ; __tmp . put_f32_le (self . sensor_size_h) ; __tmp . put_f32_le (self . sensor_size_v) ; __tmp . put_u32_le (self . flags . bits ()) ; __tmp . put_u16_le (self . resolution_h) ; __tmp . put_u16_le (self . resolution_v) ; __tmp . put_u16_le (self . cam_definition_version) ; for val in & self . vendor_name { __tmp . put_u8 (* val) ; } for val in & self . model_name { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . lens_id) ; for val in & self . cam_definition_uri { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HIL_STATE_DATA { pub time_usec : u64 , pub roll : f32 , pub pitch : f32 , pub yaw : f32 , pub rollspeed : f32 , pub pitchspeed : f32 , pub yawspeed : f32 , pub lat : i32 , pub lon : i32 , pub alt : i32 , pub vx : i16 , pub vy : i16 , pub vz : i16 , pub xacc : i16 , pub yacc : i16 , pub zacc : i16 , } impl HIL_STATE_DATA { pub const ENCODED_LEN : usize = 56usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , roll : 0.0_f32 , pitch : 0.0_f32 , yaw : 0.0_f32 , rollspeed : 0.0_f32 , pitchspeed : 0.0_f32 , yawspeed : 0.0_f32 , lat : 0_i32 , lon : 0_i32 , alt : 0_i32 , vx : 0_i16 , vy : 0_i16 , vz : 0_i16 , xacc : 0_i16 , yacc : 0_i16 , zacc : 0_i16 , } ; } impl Default for HIL_STATE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for HIL_STATE_DATA { type Message = MavMessage ; const ID : u32 = 90u32 ; const NAME : & 'static str = "HIL_STATE" ; const EXTRA_CRC : u8 = 183u8 ; const ENCODED_LEN : usize = 56usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . roll = buf . get_f32_le () ; __struct . pitch = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; __struct . rollspeed = buf . get_f32_le () ; __struct . pitchspeed = buf . get_f32_le () ; __struct . yawspeed = buf . get_f32_le () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . alt = buf . get_i32_le () ; __struct . vx = buf . get_i16_le () ; __struct . vy = buf . get_i16_le () ; __struct . vz = buf . get_i16_le () ; __struct . xacc = buf . get_i16_le () ; __struct . yacc = buf . get_i16_le () ; __struct . zacc = buf . get_i16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . roll) ; __tmp . put_f32_le (self . pitch) ; __tmp . put_f32_le (self . yaw) ; __tmp . put_f32_le (self . rollspeed) ; __tmp . put_f32_le (self . pitchspeed) ; __tmp . put_f32_le (self . yawspeed) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_i32_le (self . alt) ; __tmp . put_i16_le (self . vx) ; __tmp . put_i16_le (self . vy) ; __tmp . put_i16_le (self . vz) ; __tmp . put_i16_le (self . xacc) ; __tmp . put_i16_le (self . yacc) ; __tmp . put_i16_le (self . zacc) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CAMERA_TRACKING_IMAGE_STATUS_DATA { pub point_x : f32 , pub point_y : f32 , pub radius : f32 , pub rec_top_x : f32 , pub rec_top_y : f32 , pub rec_bottom_x : f32 , pub rec_bottom_y : f32 , pub tracking_status : CameraTrackingStatusFlags , pub tracking_mode : CameraTrackingMode , pub target_data : CameraTrackingTargetData , } impl CAMERA_TRACKING_IMAGE_STATUS_DATA { pub const ENCODED_LEN : usize = 31usize ; pub const DEFAULT : Self = Self { point_x : 0.0_f32 , point_y : 0.0_f32 , radius : 0.0_f32 , rec_top_x : 0.0_f32 , rec_top_y : 0.0_f32 , rec_bottom_x : 0.0_f32 , rec_bottom_y : 0.0_f32 , tracking_status : CameraTrackingStatusFlags :: DEFAULT , tracking_mode : CameraTrackingMode :: DEFAULT , target_data : CameraTrackingTargetData :: DEFAULT , } ; } impl Default for CAMERA_TRACKING_IMAGE_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CAMERA_TRACKING_IMAGE_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 275u32 ; const NAME : & 'static str = "CAMERA_TRACKING_IMAGE_STATUS" ; const EXTRA_CRC : u8 = 126u8 ; const ENCODED_LEN : usize = 31usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . point_x = buf . get_f32_le () ; __struct . point_y = buf . get_f32_le () ; __struct . radius = buf . get_f32_le () ; __struct . rec_top_x = buf . get_f32_le () ; __struct . rec_top_y = buf . get_f32_le () ; __struct . rec_bottom_x = buf . get_f32_le () ; __struct . rec_bottom_y = buf . get_f32_le () ; let tmp = buf . get_u8 () ; __struct . tracking_status = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "CameraTrackingStatusFlags" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . tracking_mode = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "CameraTrackingMode" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . target_data = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "CameraTrackingTargetData" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . point_x) ; __tmp . put_f32_le (self . point_y) ; __tmp . put_f32_le (self . radius) ; __tmp . put_f32_le (self . rec_top_x) ; __tmp . put_f32_le (self . rec_top_y) ; __tmp . put_f32_le (self . rec_bottom_x) ; __tmp . put_f32_le (self . rec_bottom_y) ; __tmp . put_u8 (self . tracking_status as u8) ; __tmp . put_u8 (self . tracking_mode as u8) ; __tmp . put_u8 (self . target_data as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SET_ACTUATOR_CONTROL_TARGET_DATA { pub time_usec : u64 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub controls : [f32 ; 8] , pub group_mlx : u8 , pub target_system : u8 , pub target_component : u8 , } impl SET_ACTUATOR_CONTROL_TARGET_DATA { pub const ENCODED_LEN : usize = 43usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , controls : [0.0_f32 ; 8usize] , group_mlx : 0_u8 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for SET_ACTUATOR_CONTROL_TARGET_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SET_ACTUATOR_CONTROL_TARGET_DATA { type Message = MavMessage ; const ID : u32 = 139u32 ; const NAME : & 'static str = "SET_ACTUATOR_CONTROL_TARGET" ; const EXTRA_CRC : u8 = 168u8 ; const ENCODED_LEN : usize = 43usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; for v in & mut __struct . controls { let val = buf . get_f32_le () ; * v = val ; } __struct . group_mlx = buf . get_u8 () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; for val in & self . controls { __tmp . put_f32_le (* val) ; } __tmp . put_u8 (self . group_mlx) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct TERRAIN_REPORT_DATA { pub lat : i32 , pub lon : i32 , pub terrain_height : f32 , pub current_height : f32 , pub spacing : u16 , pub pending : u16 , pub loaded : u16 , } impl TERRAIN_REPORT_DATA { pub const ENCODED_LEN : usize = 22usize ; pub const DEFAULT : Self = Self { lat : 0_i32 , lon : 0_i32 , terrain_height : 0.0_f32 , current_height : 0.0_f32 , spacing : 0_u16 , pending : 0_u16 , loaded : 0_u16 , } ; } impl Default for TERRAIN_REPORT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for TERRAIN_REPORT_DATA { type Message = MavMessage ; const ID : u32 = 136u32 ; const NAME : & 'static str = "TERRAIN_REPORT" ; const EXTRA_CRC : u8 = 1u8 ; const ENCODED_LEN : usize = 22usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . terrain_height = buf . get_f32_le () ; __struct . current_height = buf . get_f32_le () ; __struct . spacing = buf . get_u16_le () ; __struct . pending = buf . get_u16_le () ; __struct . loaded = buf . get_u16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_f32_le (self . terrain_height) ; __tmp . put_f32_le (self . current_height) ; __tmp . put_u16_le (self . spacing) ; __tmp . put_u16_le (self . pending) ; __tmp . put_u16_le (self . loaded) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ACTUATOR_OUTPUT_STATUS_DATA { pub time_usec : u64 , pub active : u32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub actuator : [f32 ; 32] , } impl ACTUATOR_OUTPUT_STATUS_DATA { pub const ENCODED_LEN : usize = 140usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , active : 0_u32 , actuator : [0.0_f32 ; 32usize] , } ; } impl Default for ACTUATOR_OUTPUT_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ACTUATOR_OUTPUT_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 375u32 ; const NAME : & 'static str = "ACTUATOR_OUTPUT_STATUS" ; const EXTRA_CRC : u8 = 251u8 ; const ENCODED_LEN : usize = 140usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . active = buf . get_u32_le () ; for v in & mut __struct . actuator { let val = buf . get_f32_le () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_u32_le (self . active) ; for val in & self . actuator { __tmp . put_f32_le (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PARAM_EXT_REQUEST_READ_DATA { pub param_index : i16 , pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub param_id : [u8 ; 16] , } impl PARAM_EXT_REQUEST_READ_DATA { pub const ENCODED_LEN : usize = 20usize ; pub const DEFAULT : Self = Self { param_index : 0_i16 , target_system : 0_u8 , target_component : 0_u8 , param_id : [0_u8 ; 16usize] , } ; } impl Default for PARAM_EXT_REQUEST_READ_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for PARAM_EXT_REQUEST_READ_DATA { type Message = MavMessage ; const ID : u32 = 320u32 ; const NAME : & 'static str = "PARAM_EXT_REQUEST_READ" ; const EXTRA_CRC : u8 = 243u8 ; const ENCODED_LEN : usize = 20usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . param_index = buf . get_i16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . param_id { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i16_le (self . param_index) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . param_id { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SUPPORTED_TUNES_DATA { pub format : TuneFormat , pub target_system : u8 , pub target_component : u8 , } impl SUPPORTED_TUNES_DATA { pub const ENCODED_LEN : usize = 6usize ; pub const DEFAULT : Self = Self { format : TuneFormat :: DEFAULT , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for SUPPORTED_TUNES_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SUPPORTED_TUNES_DATA { type Message = MavMessage ; const ID : u32 = 401u32 ; const NAME : & 'static str = "SUPPORTED_TUNES" ; const EXTRA_CRC : u8 = 183u8 ; const ENCODED_LEN : usize = 6usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u32_le () ; __struct . format = TuneFormat :: from_bits (tmp & TuneFormat :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "TuneFormat" , value : tmp as u32 }) ? ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . format . bits ()) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CURRENT_EVENT_SEQUENCE_DATA { pub sequence : u16 , pub flags : MavEventCurrentSequenceFlags , } impl CURRENT_EVENT_SEQUENCE_DATA { pub const ENCODED_LEN : usize = 3usize ; pub const DEFAULT : Self = Self { sequence : 0_u16 , flags : MavEventCurrentSequenceFlags :: DEFAULT , } ; } impl Default for CURRENT_EVENT_SEQUENCE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CURRENT_EVENT_SEQUENCE_DATA { type Message = MavMessage ; const ID : u32 = 411u32 ; const NAME : & 'static str = "CURRENT_EVENT_SEQUENCE" ; const EXTRA_CRC : u8 = 106u8 ; const ENCODED_LEN : usize = 3usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . sequence = buf . get_u16_le () ; let tmp = buf . get_u8 () ; __struct . flags = MavEventCurrentSequenceFlags :: from_bits (tmp & MavEventCurrentSequenceFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "MavEventCurrentSequenceFlags" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . sequence) ; __tmp . put_u8 (self . flags . bits ()) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PARAM_SET_DATA { pub param_value : f32 , pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub param_id : [u8 ; 16] , pub param_type : MavParamType , } impl PARAM_SET_DATA { pub const ENCODED_LEN : usize = 23usize ; pub const DEFAULT : Self = Self { param_value : 0.0_f32 , target_system : 0_u8 , target_component : 0_u8 , param_id : [0_u8 ; 16usize] , param_type : MavParamType :: DEFAULT , } ; } impl Default for PARAM_SET_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for PARAM_SET_DATA { type Message = MavMessage ; const ID : u32 = 23u32 ; const NAME : & 'static str = "PARAM_SET" ; const EXTRA_CRC : u8 = 168u8 ; const ENCODED_LEN : usize = 23usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . param_value = buf . get_f32_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . param_id { let val = buf . get_u8 () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . param_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavParamType" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . param_value) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . param_id { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . param_type as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct BATTERY_STATUS_DATA { pub current_consumed : i32 , pub energy_consumed : i32 , pub temperature : i16 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub voltages : [u16 ; 10] , pub current_battery : i16 , pub id : u8 , pub battery_function : MavBatteryFunction , pub mavtype : MavBatteryType , pub battery_remaining : i8 , } impl BATTERY_STATUS_DATA { pub const ENCODED_LEN : usize = 36usize ; pub const DEFAULT : Self = Self { current_consumed : 0_i32 , energy_consumed : 0_i32 , temperature : 0_i16 , voltages : [0_u16 ; 10usize] , current_battery : 0_i16 , id : 0_u8 , battery_function : MavBatteryFunction :: DEFAULT , mavtype : MavBatteryType :: DEFAULT , battery_remaining : 0_i8 , } ; } impl Default for BATTERY_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for BATTERY_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 147u32 ; const NAME : & 'static str = "BATTERY_STATUS" ; const EXTRA_CRC : u8 = 154u8 ; const ENCODED_LEN : usize = 36usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . current_consumed = buf . get_i32_le () ; __struct . energy_consumed = buf . get_i32_le () ; __struct . temperature = buf . get_i16_le () ; for v in & mut __struct . voltages { let val = buf . get_u16_le () ; * v = val ; } __struct . current_battery = buf . get_i16_le () ; __struct . id = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . battery_function = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavBatteryFunction" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . mavtype = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavBatteryType" , value : tmp as u32 }) ? ; __struct . battery_remaining = buf . get_i8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . current_consumed) ; __tmp . put_i32_le (self . energy_consumed) ; __tmp . put_i16_le (self . temperature) ; for val in & self . voltages { __tmp . put_u16_le (* val) ; } __tmp . put_i16_le (self . current_battery) ; __tmp . put_u8 (self . id) ; __tmp . put_u8 (self . battery_function as u8) ; __tmp . put_u8 (self . mavtype as u8) ; __tmp . put_i8 (self . battery_remaining) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MAG_CAL_REPORT_DATA { pub fitness : f32 , pub ofs_x : f32 , pub ofs_y : f32 , pub ofs_z : f32 , pub diag_x : f32 , pub diag_y : f32 , pub diag_z : f32 , pub offdiag_x : f32 , pub offdiag_y : f32 , pub offdiag_z : f32 , pub compass_id : u8 , pub cal_mask : u8 , pub cal_status : MagCalStatus , pub autosaved : u8 , } impl MAG_CAL_REPORT_DATA { pub const ENCODED_LEN : usize = 44usize ; pub const DEFAULT : Self = Self { fitness : 0.0_f32 , ofs_x : 0.0_f32 , ofs_y : 0.0_f32 , ofs_z : 0.0_f32 , diag_x : 0.0_f32 , diag_y : 0.0_f32 , diag_z : 0.0_f32 , offdiag_x : 0.0_f32 , offdiag_y : 0.0_f32 , offdiag_z : 0.0_f32 , compass_id : 0_u8 , cal_mask : 0_u8 , cal_status : MagCalStatus :: DEFAULT , autosaved : 0_u8 , } ; } impl Default for MAG_CAL_REPORT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MAG_CAL_REPORT_DATA { type Message = MavMessage ; const ID : u32 = 192u32 ; const NAME : & 'static str = "MAG_CAL_REPORT" ; const EXTRA_CRC : u8 = 36u8 ; const ENCODED_LEN : usize = 44usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . fitness = buf . get_f32_le () ; __struct . ofs_x = buf . get_f32_le () ; __struct . ofs_y = buf . get_f32_le () ; __struct . ofs_z = buf . get_f32_le () ; __struct . diag_x = buf . get_f32_le () ; __struct . diag_y = buf . get_f32_le () ; __struct . diag_z = buf . get_f32_le () ; __struct . offdiag_x = buf . get_f32_le () ; __struct . offdiag_y = buf . get_f32_le () ; __struct . offdiag_z = buf . get_f32_le () ; __struct . compass_id = buf . get_u8 () ; __struct . cal_mask = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . cal_status = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MagCalStatus" , value : tmp as u32 }) ? ; __struct . autosaved = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . fitness) ; __tmp . put_f32_le (self . ofs_x) ; __tmp . put_f32_le (self . ofs_y) ; __tmp . put_f32_le (self . ofs_z) ; __tmp . put_f32_le (self . diag_x) ; __tmp . put_f32_le (self . diag_y) ; __tmp . put_f32_le (self . diag_z) ; __tmp . put_f32_le (self . offdiag_x) ; __tmp . put_f32_le (self . offdiag_y) ; __tmp . put_f32_le (self . offdiag_z) ; __tmp . put_u8 (self . compass_id) ; __tmp . put_u8 (self . cal_mask) ; __tmp . put_u8 (self . cal_status as u8) ; __tmp . put_u8 (self . autosaved) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct STORAGE_INFORMATION_DATA { pub time_boot_ms : u32 , pub total_capacity : f32 , pub used_capacity : f32 , pub available_capacity : f32 , pub read_speed : f32 , pub write_speed : f32 , pub storage_id : u8 , pub storage_count : u8 , pub status : StorageStatus , } impl STORAGE_INFORMATION_DATA { pub const ENCODED_LEN : usize = 27usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , total_capacity : 0.0_f32 , used_capacity : 0.0_f32 , available_capacity : 0.0_f32 , read_speed : 0.0_f32 , write_speed : 0.0_f32 , storage_id : 0_u8 , storage_count : 0_u8 , status : StorageStatus :: DEFAULT , } ; } impl Default for STORAGE_INFORMATION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for STORAGE_INFORMATION_DATA { type Message = MavMessage ; const ID : u32 = 261u32 ; const NAME : & 'static str = "STORAGE_INFORMATION" ; const EXTRA_CRC : u8 = 179u8 ; const ENCODED_LEN : usize = 27usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . total_capacity = buf . get_f32_le () ; __struct . used_capacity = buf . get_f32_le () ; __struct . available_capacity = buf . get_f32_le () ; __struct . read_speed = buf . get_f32_le () ; __struct . write_speed = buf . get_f32_le () ; __struct . storage_id = buf . get_u8 () ; __struct . storage_count = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . status = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "StorageStatus" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . total_capacity) ; __tmp . put_f32_le (self . used_capacity) ; __tmp . put_f32_le (self . available_capacity) ; __tmp . put_f32_le (self . read_speed) ; __tmp . put_f32_le (self . write_speed) ; __tmp . put_u8 (self . storage_id) ; __tmp . put_u8 (self . storage_count) ; __tmp . put_u8 (self . status as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SETUP_SIGNING_DATA { pub initial_timestamp : u64 , pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub secret_key : [u8 ; 32] , } impl SETUP_SIGNING_DATA { pub const ENCODED_LEN : usize = 42usize ; pub const DEFAULT : Self = Self { initial_timestamp : 0_u64 , target_system : 0_u8 , target_component : 0_u8 , secret_key : [0_u8 ; 32usize] , } ; } impl Default for SETUP_SIGNING_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SETUP_SIGNING_DATA { type Message = MavMessage ; const ID : u32 = 256u32 ; const NAME : & 'static str = "SETUP_SIGNING" ; const EXTRA_CRC : u8 = 71u8 ; const ENCODED_LEN : usize = 42usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . initial_timestamp = buf . get_u64_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . secret_key { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . initial_timestamp) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . secret_key { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MOUNT_ORIENTATION_DATA { pub time_boot_ms : u32 , pub roll : f32 , pub pitch : f32 , pub yaw : f32 , } impl MOUNT_ORIENTATION_DATA { pub const ENCODED_LEN : usize = 16usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , roll : 0.0_f32 , pitch : 0.0_f32 , yaw : 0.0_f32 , } ; } impl Default for MOUNT_ORIENTATION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MOUNT_ORIENTATION_DATA { type Message = MavMessage ; const ID : u32 = 265u32 ; const NAME : & 'static str = "MOUNT_ORIENTATION" ; const EXTRA_CRC : u8 = 26u8 ; const ENCODED_LEN : usize = 16usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . roll = buf . get_f32_le () ; __struct . pitch = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . roll) ; __tmp . put_f32_le (self . pitch) ; __tmp . put_f32_le (self . yaw) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct OPTICAL_FLOW_RAD_DATA { pub time_usec : u64 , pub integration_time_us : u32 , pub integrated_x : f32 , pub integrated_y : f32 , pub integrated_xgyro : f32 , pub integrated_ygyro : f32 , pub integrated_zgyro : f32 , pub time_delta_distance_us : u32 , pub distance : f32 , pub temperature : i16 , pub sensor_id : u8 , pub quality : u8 , } impl OPTICAL_FLOW_RAD_DATA { pub const ENCODED_LEN : usize = 44usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , integration_time_us : 0_u32 , integrated_x : 0.0_f32 , integrated_y : 0.0_f32 , integrated_xgyro : 0.0_f32 , integrated_ygyro : 0.0_f32 , integrated_zgyro : 0.0_f32 , time_delta_distance_us : 0_u32 , distance : 0.0_f32 , temperature : 0_i16 , sensor_id : 0_u8 , quality : 0_u8 , } ; } impl Default for OPTICAL_FLOW_RAD_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for OPTICAL_FLOW_RAD_DATA { type Message = MavMessage ; const ID : u32 = 106u32 ; const NAME : & 'static str = "OPTICAL_FLOW_RAD" ; const EXTRA_CRC : u8 = 138u8 ; const ENCODED_LEN : usize = 44usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . integration_time_us = buf . get_u32_le () ; __struct . integrated_x = buf . get_f32_le () ; __struct . integrated_y = buf . get_f32_le () ; __struct . integrated_xgyro = buf . get_f32_le () ; __struct . integrated_ygyro = buf . get_f32_le () ; __struct . integrated_zgyro = buf . get_f32_le () ; __struct . time_delta_distance_us = buf . get_u32_le () ; __struct . distance = buf . get_f32_le () ; __struct . temperature = buf . get_i16_le () ; __struct . sensor_id = buf . get_u8 () ; __struct . quality = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_u32_le (self . integration_time_us) ; __tmp . put_f32_le (self . integrated_x) ; __tmp . put_f32_le (self . integrated_y) ; __tmp . put_f32_le (self . integrated_xgyro) ; __tmp . put_f32_le (self . integrated_ygyro) ; __tmp . put_f32_le (self . integrated_zgyro) ; __tmp . put_u32_le (self . time_delta_distance_us) ; __tmp . put_f32_le (self . distance) ; __tmp . put_i16_le (self . temperature) ; __tmp . put_u8 (self . sensor_id) ; __tmp . put_u8 (self . quality) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct RC_CHANNELS_DATA { pub time_boot_ms : u32 , pub chan1_raw : u16 , pub chan2_raw : u16 , pub chan3_raw : u16 , pub chan4_raw : u16 , pub chan5_raw : u16 , pub chan6_raw : u16 , pub chan7_raw : u16 , pub chan8_raw : u16 , pub chan9_raw : u16 , pub chan10_raw : u16 , pub chan11_raw : u16 , pub chan12_raw : u16 , pub chan13_raw : u16 , pub chan14_raw : u16 , pub chan15_raw : u16 , pub chan16_raw : u16 , pub chan17_raw : u16 , pub chan18_raw : u16 , pub chancount : u8 , pub rssi : u8 , } impl RC_CHANNELS_DATA { pub const ENCODED_LEN : usize = 42usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , chan1_raw : 0_u16 , chan2_raw : 0_u16 , chan3_raw : 0_u16 , chan4_raw : 0_u16 , chan5_raw : 0_u16 , chan6_raw : 0_u16 , chan7_raw : 0_u16 , chan8_raw : 0_u16 , chan9_raw : 0_u16 , chan10_raw : 0_u16 , chan11_raw : 0_u16 , chan12_raw : 0_u16 , chan13_raw : 0_u16 , chan14_raw : 0_u16 , chan15_raw : 0_u16 , chan16_raw : 0_u16 , chan17_raw : 0_u16 , chan18_raw : 0_u16 , chancount : 0_u8 , rssi : 0_u8 , } ; } impl Default for RC_CHANNELS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for RC_CHANNELS_DATA { type Message = MavMessage ; const ID : u32 = 65u32 ; const NAME : & 'static str = "RC_CHANNELS" ; const EXTRA_CRC : u8 = 118u8 ; const ENCODED_LEN : usize = 42usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . chan1_raw = buf . get_u16_le () ; __struct . chan2_raw = buf . get_u16_le () ; __struct . chan3_raw = buf . get_u16_le () ; __struct . chan4_raw = buf . get_u16_le () ; __struct . chan5_raw = buf . get_u16_le () ; __struct . chan6_raw = buf . get_u16_le () ; __struct . chan7_raw = buf . get_u16_le () ; __struct . chan8_raw = buf . get_u16_le () ; __struct . chan9_raw = buf . get_u16_le () ; __struct . chan10_raw = buf . get_u16_le () ; __struct . chan11_raw = buf . get_u16_le () ; __struct . chan12_raw = buf . get_u16_le () ; __struct . chan13_raw = buf . get_u16_le () ; __struct . chan14_raw = buf . get_u16_le () ; __struct . chan15_raw = buf . get_u16_le () ; __struct . chan16_raw = buf . get_u16_le () ; __struct . chan17_raw = buf . get_u16_le () ; __struct . chan18_raw = buf . get_u16_le () ; __struct . chancount = buf . get_u8 () ; __struct . rssi = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_u16_le (self . chan1_raw) ; __tmp . put_u16_le (self . chan2_raw) ; __tmp . put_u16_le (self . chan3_raw) ; __tmp . put_u16_le (self . chan4_raw) ; __tmp . put_u16_le (self . chan5_raw) ; __tmp . put_u16_le (self . chan6_raw) ; __tmp . put_u16_le (self . chan7_raw) ; __tmp . put_u16_le (self . chan8_raw) ; __tmp . put_u16_le (self . chan9_raw) ; __tmp . put_u16_le (self . chan10_raw) ; __tmp . put_u16_le (self . chan11_raw) ; __tmp . put_u16_le (self . chan12_raw) ; __tmp . put_u16_le (self . chan13_raw) ; __tmp . put_u16_le (self . chan14_raw) ; __tmp . put_u16_le (self . chan15_raw) ; __tmp . put_u16_le (self . chan16_raw) ; __tmp . put_u16_le (self . chan17_raw) ; __tmp . put_u16_le (self . chan18_raw) ; __tmp . put_u8 (self . chancount) ; __tmp . put_u8 (self . rssi) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GPS_RTCM_DATA_DATA { pub flags : u8 , pub len : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub data : [u8 ; 180] , } impl GPS_RTCM_DATA_DATA { pub const ENCODED_LEN : usize = 182usize ; pub const DEFAULT : Self = Self { flags : 0_u8 , len : 0_u8 , data : [0_u8 ; 180usize] , } ; } impl Default for GPS_RTCM_DATA_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GPS_RTCM_DATA_DATA { type Message = MavMessage ; const ID : u32 = 233u32 ; const NAME : & 'static str = "GPS_RTCM_DATA" ; const EXTRA_CRC : u8 = 35u8 ; const ENCODED_LEN : usize = 182usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . flags = buf . get_u8 () ; __struct . len = buf . get_u8 () ; for v in & mut __struct . data { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . flags) ; __tmp . put_u8 (self . len) ; for val in & self . data { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ACTUATOR_CONTROL_TARGET_DATA { pub time_usec : u64 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub controls : [f32 ; 8] , pub group_mlx : u8 , } impl ACTUATOR_CONTROL_TARGET_DATA { pub const ENCODED_LEN : usize = 41usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , controls : [0.0_f32 ; 8usize] , group_mlx : 0_u8 , } ; } impl Default for ACTUATOR_CONTROL_TARGET_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ACTUATOR_CONTROL_TARGET_DATA { type Message = MavMessage ; const ID : u32 = 140u32 ; const NAME : & 'static str = "ACTUATOR_CONTROL_TARGET" ; const EXTRA_CRC : u8 = 181u8 ; const ENCODED_LEN : usize = 41usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; for v in & mut __struct . controls { let val = buf . get_f32_le () ; * v = val ; } __struct . group_mlx = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; for val in & self . controls { __tmp . put_f32_le (* val) ; } __tmp . put_u8 (self . group_mlx) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ORBIT_EXECUTION_STATUS_DATA { pub time_usec : u64 , pub radius : f32 , pub x : i32 , pub y : i32 , pub z : f32 , pub frame : MavFrame , } impl ORBIT_EXECUTION_STATUS_DATA { pub const ENCODED_LEN : usize = 25usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , radius : 0.0_f32 , x : 0_i32 , y : 0_i32 , z : 0.0_f32 , frame : MavFrame :: DEFAULT , } ; } impl Default for ORBIT_EXECUTION_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ORBIT_EXECUTION_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 360u32 ; const NAME : & 'static str = "ORBIT_EXECUTION_STATUS" ; const EXTRA_CRC : u8 = 11u8 ; const ENCODED_LEN : usize = 25usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . radius = buf . get_f32_le () ; __struct . x = buf . get_i32_le () ; __struct . y = buf . get_i32_le () ; __struct . z = buf . get_f32_le () ; let tmp = buf . get_u8 () ; __struct . frame = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavFrame" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . radius) ; __tmp . put_i32_le (self . x) ; __tmp . put_i32_le (self . y) ; __tmp . put_f32_le (self . z) ; __tmp . put_u8 (self . frame as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GIMBAL_DEVICE_ATTITUDE_STATUS_DATA { pub time_boot_ms : u32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub q : [f32 ; 4] , pub angular_velocity_x : f32 , pub angular_velocity_y : f32 , pub angular_velocity_z : f32 , pub failure_flags : GimbalDeviceErrorFlags , pub flags : GimbalDeviceFlags , pub target_system : u8 , pub target_component : u8 , } impl GIMBAL_DEVICE_ATTITUDE_STATUS_DATA { pub const ENCODED_LEN : usize = 40usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , q : [0.0_f32 ; 4usize] , angular_velocity_x : 0.0_f32 , angular_velocity_y : 0.0_f32 , angular_velocity_z : 0.0_f32 , failure_flags : GimbalDeviceErrorFlags :: DEFAULT , flags : GimbalDeviceFlags :: DEFAULT , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for GIMBAL_DEVICE_ATTITUDE_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GIMBAL_DEVICE_ATTITUDE_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 285u32 ; const NAME : & 'static str = "GIMBAL_DEVICE_ATTITUDE_STATUS" ; const EXTRA_CRC : u8 = 137u8 ; const ENCODED_LEN : usize = 40usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; for v in & mut __struct . q { let val = buf . get_f32_le () ; * v = val ; } __struct . angular_velocity_x = buf . get_f32_le () ; __struct . angular_velocity_y = buf . get_f32_le () ; __struct . angular_velocity_z = buf . get_f32_le () ; let tmp = buf . get_u32_le () ; __struct . failure_flags = GimbalDeviceErrorFlags :: from_bits (tmp & GimbalDeviceErrorFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "GimbalDeviceErrorFlags" , value : tmp as u32 }) ? ; let tmp = buf . get_u16_le () ; __struct . flags = GimbalDeviceFlags :: from_bits (tmp & GimbalDeviceFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "GimbalDeviceFlags" , value : tmp as u32 }) ? ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; for val in & self . q { __tmp . put_f32_le (* val) ; } __tmp . put_f32_le (self . angular_velocity_x) ; __tmp . put_f32_le (self . angular_velocity_y) ; __tmp . put_f32_le (self . angular_velocity_z) ; __tmp . put_u32_le (self . failure_flags . bits ()) ; __tmp . put_u16_le (self . flags . bits ()) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PING_DATA { pub time_usec : u64 , pub seq : u32 , pub target_system : u8 , pub target_component : u8 , } impl PING_DATA { pub const ENCODED_LEN : usize = 14usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , seq : 0_u32 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for PING_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for PING_DATA { type Message = MavMessage ; const ID : u32 = 4u32 ; const NAME : & 'static str = "PING" ; const EXTRA_CRC : u8 = 237u8 ; const ENCODED_LEN : usize = 14usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . seq = buf . get_u32_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_u32_le (self . seq) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ATTITUDE_DATA { pub time_boot_ms : u32 , pub roll : f32 , pub pitch : f32 , pub yaw : f32 , pub rollspeed : f32 , pub pitchspeed : f32 , pub yawspeed : f32 , } impl ATTITUDE_DATA { pub const ENCODED_LEN : usize = 28usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , roll : 0.0_f32 , pitch : 0.0_f32 , yaw : 0.0_f32 , rollspeed : 0.0_f32 , pitchspeed : 0.0_f32 , yawspeed : 0.0_f32 , } ; } impl Default for ATTITUDE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ATTITUDE_DATA { type Message = MavMessage ; const ID : u32 = 30u32 ; const NAME : & 'static str = "ATTITUDE" ; const EXTRA_CRC : u8 = 39u8 ; const ENCODED_LEN : usize = 28usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . roll = buf . get_f32_le () ; __struct . pitch = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; __struct . rollspeed = buf . get_f32_le () ; __struct . pitchspeed = buf . get_f32_le () ; __struct . yawspeed = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . roll) ; __tmp . put_f32_le (self . pitch) ; __tmp . put_f32_le (self . yaw) ; __tmp . put_f32_le (self . rollspeed) ; __tmp . put_f32_le (self . pitchspeed) ; __tmp . put_f32_le (self . yawspeed) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct OPEN_DRONE_ID_ARM_STATUS_DATA { pub status : MavOdidArmStatus , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub error : [u8 ; 50] , } impl OPEN_DRONE_ID_ARM_STATUS_DATA { pub const ENCODED_LEN : usize = 51usize ; pub const DEFAULT : Self = Self { status : MavOdidArmStatus :: DEFAULT , error : [0_u8 ; 50usize] , } ; } impl Default for OPEN_DRONE_ID_ARM_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for OPEN_DRONE_ID_ARM_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 12918u32 ; const NAME : & 'static str = "OPEN_DRONE_ID_ARM_STATUS" ; const EXTRA_CRC : u8 = 139u8 ; const ENCODED_LEN : usize = 51usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u8 () ; __struct . status = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidArmStatus" , value : tmp as u32 }) ? ; for v in & mut __struct . error { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . status as u8) ; for val in & self . error { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LOGGING_ACK_DATA { pub sequence : u16 , pub target_system : u8 , pub target_component : u8 , } impl LOGGING_ACK_DATA { pub const ENCODED_LEN : usize = 4usize ; pub const DEFAULT : Self = Self { sequence : 0_u16 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for LOGGING_ACK_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for LOGGING_ACK_DATA { type Message = MavMessage ; const ID : u32 = 268u32 ; const NAME : & 'static str = "LOGGING_ACK" ; const EXTRA_CRC : u8 = 14u8 ; const ENCODED_LEN : usize = 4usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . sequence = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . sequence) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ATT_POS_MOCAP_DATA { pub time_usec : u64 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub q : [f32 ; 4] , pub x : f32 , pub y : f32 , pub z : f32 , } impl ATT_POS_MOCAP_DATA { pub const ENCODED_LEN : usize = 36usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , q : [0.0_f32 ; 4usize] , x : 0.0_f32 , y : 0.0_f32 , z : 0.0_f32 , } ; } impl Default for ATT_POS_MOCAP_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ATT_POS_MOCAP_DATA { type Message = MavMessage ; const ID : u32 = 138u32 ; const NAME : & 'static str = "ATT_POS_MOCAP" ; const EXTRA_CRC : u8 = 109u8 ; const ENCODED_LEN : usize = 36usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; for v in & mut __struct . q { let val = buf . get_f32_le () ; * v = val ; } __struct . x = buf . get_f32_le () ; __struct . y = buf . get_f32_le () ; __struct . z = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; for val in & self . q { __tmp . put_f32_le (* val) ; } __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LINK_NODE_STATUS_DATA { pub timestamp : u64 , pub tx_rate : u32 , pub rx_rate : u32 , pub messages_sent : u32 , pub messages_received : u32 , pub messages_lost : u32 , pub rx_parse_err : u16 , pub tx_overflows : u16 , pub rx_overflows : u16 , pub tx_buf : u8 , pub rx_buf : u8 , } impl LINK_NODE_STATUS_DATA { pub const ENCODED_LEN : usize = 36usize ; pub const DEFAULT : Self = Self { timestamp : 0_u64 , tx_rate : 0_u32 , rx_rate : 0_u32 , messages_sent : 0_u32 , messages_received : 0_u32 , messages_lost : 0_u32 , rx_parse_err : 0_u16 , tx_overflows : 0_u16 , rx_overflows : 0_u16 , tx_buf : 0_u8 , rx_buf : 0_u8 , } ; } impl Default for LINK_NODE_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for LINK_NODE_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 8u32 ; const NAME : & 'static str = "LINK_NODE_STATUS" ; const EXTRA_CRC : u8 = 117u8 ; const ENCODED_LEN : usize = 36usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . timestamp = buf . get_u64_le () ; __struct . tx_rate = buf . get_u32_le () ; __struct . rx_rate = buf . get_u32_le () ; __struct . messages_sent = buf . get_u32_le () ; __struct . messages_received = buf . get_u32_le () ; __struct . messages_lost = buf . get_u32_le () ; __struct . rx_parse_err = buf . get_u16_le () ; __struct . tx_overflows = buf . get_u16_le () ; __struct . rx_overflows = buf . get_u16_le () ; __struct . tx_buf = buf . get_u8 () ; __struct . rx_buf = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . timestamp) ; __tmp . put_u32_le (self . tx_rate) ; __tmp . put_u32_le (self . rx_rate) ; __tmp . put_u32_le (self . messages_sent) ; __tmp . put_u32_le (self . messages_received) ; __tmp . put_u32_le (self . messages_lost) ; __tmp . put_u16_le (self . rx_parse_err) ; __tmp . put_u16_le (self . tx_overflows) ; __tmp . put_u16_le (self . rx_overflows) ; __tmp . put_u8 (self . tx_buf) ; __tmp . put_u8 (self . rx_buf) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MEMORY_VECT_DATA { pub address : u16 , pub ver : u8 , pub mavtype : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub value : [i8 ; 32] , } impl MEMORY_VECT_DATA { pub const ENCODED_LEN : usize = 36usize ; pub const DEFAULT : Self = Self { address : 0_u16 , ver : 0_u8 , mavtype : 0_u8 , value : [0_i8 ; 32usize] , } ; } impl Default for MEMORY_VECT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MEMORY_VECT_DATA { type Message = MavMessage ; const ID : u32 = 249u32 ; const NAME : & 'static str = "MEMORY_VECT" ; const EXTRA_CRC : u8 = 204u8 ; const ENCODED_LEN : usize = 36usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . address = buf . get_u16_le () ; __struct . ver = buf . get_u8 () ; __struct . mavtype = buf . get_u8 () ; for v in & mut __struct . value { let val = buf . get_i8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . address) ; __tmp . put_u8 (self . ver) ; __tmp . put_u8 (self . mavtype) ; for val in & self . value { __tmp . put_i8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GPS_STATUS_DATA { pub satellites_visible : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub satellite_prn : [u8 ; 20] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub satellite_used : [u8 ; 20] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub satellite_elevation : [u8 ; 20] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub satellite_azimuth : [u8 ; 20] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub satellite_snr : [u8 ; 20] , } impl GPS_STATUS_DATA { pub const ENCODED_LEN : usize = 101usize ; pub const DEFAULT : Self = Self { satellites_visible : 0_u8 , satellite_prn : [0_u8 ; 20usize] , satellite_used : [0_u8 ; 20usize] , satellite_elevation : [0_u8 ; 20usize] , satellite_azimuth : [0_u8 ; 20usize] , satellite_snr : [0_u8 ; 20usize] , } ; } impl Default for GPS_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GPS_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 25u32 ; const NAME : & 'static str = "GPS_STATUS" ; const EXTRA_CRC : u8 = 23u8 ; const ENCODED_LEN : usize = 101usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . satellites_visible = buf . get_u8 () ; for v in & mut __struct . satellite_prn { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . satellite_used { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . satellite_elevation { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . satellite_azimuth { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . satellite_snr { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . satellites_visible) ; for val in & self . satellite_prn { __tmp . put_u8 (* val) ; } for val in & self . satellite_used { __tmp . put_u8 (* val) ; } for val in & self . satellite_elevation { __tmp . put_u8 (* val) ; } for val in & self . satellite_azimuth { __tmp . put_u8 (* val) ; } for val in & self . satellite_snr { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HIL_OPTICAL_FLOW_DATA { pub time_usec : u64 , pub integration_time_us : u32 , pub integrated_x : f32 , pub integrated_y : f32 , pub integrated_xgyro : f32 , pub integrated_ygyro : f32 , pub integrated_zgyro : f32 , pub time_delta_distance_us : u32 , pub distance : f32 , pub temperature : i16 , pub sensor_id : u8 , pub quality : u8 , } impl HIL_OPTICAL_FLOW_DATA { pub const ENCODED_LEN : usize = 44usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , integration_time_us : 0_u32 , integrated_x : 0.0_f32 , integrated_y : 0.0_f32 , integrated_xgyro : 0.0_f32 , integrated_ygyro : 0.0_f32 , integrated_zgyro : 0.0_f32 , time_delta_distance_us : 0_u32 , distance : 0.0_f32 , temperature : 0_i16 , sensor_id : 0_u8 , quality : 0_u8 , } ; } impl Default for HIL_OPTICAL_FLOW_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for HIL_OPTICAL_FLOW_DATA { type Message = MavMessage ; const ID : u32 = 114u32 ; const NAME : & 'static str = "HIL_OPTICAL_FLOW" ; const EXTRA_CRC : u8 = 237u8 ; const ENCODED_LEN : usize = 44usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . integration_time_us = buf . get_u32_le () ; __struct . integrated_x = buf . get_f32_le () ; __struct . integrated_y = buf . get_f32_le () ; __struct . integrated_xgyro = buf . get_f32_le () ; __struct . integrated_ygyro = buf . get_f32_le () ; __struct . integrated_zgyro = buf . get_f32_le () ; __struct . time_delta_distance_us = buf . get_u32_le () ; __struct . distance = buf . get_f32_le () ; __struct . temperature = buf . get_i16_le () ; __struct . sensor_id = buf . get_u8 () ; __struct . quality = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_u32_le (self . integration_time_us) ; __tmp . put_f32_le (self . integrated_x) ; __tmp . put_f32_le (self . integrated_y) ; __tmp . put_f32_le (self . integrated_xgyro) ; __tmp . put_f32_le (self . integrated_ygyro) ; __tmp . put_f32_le (self . integrated_zgyro) ; __tmp . put_u32_le (self . time_delta_distance_us) ; __tmp . put_f32_le (self . distance) ; __tmp . put_i16_le (self . temperature) ; __tmp . put_u8 (self . sensor_id) ; __tmp . put_u8 (self . quality) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SERIAL_CONTROL_DATA { pub baudrate : u32 , pub timeout : u16 , pub device : SerialControlDev , pub flags : SerialControlFlag , pub count : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub data : [u8 ; 70] , } impl SERIAL_CONTROL_DATA { pub const ENCODED_LEN : usize = 79usize ; pub const DEFAULT : Self = Self { baudrate : 0_u32 , timeout : 0_u16 , device : SerialControlDev :: DEFAULT , flags : SerialControlFlag :: DEFAULT , count : 0_u8 , data : [0_u8 ; 70usize] , } ; } impl Default for SERIAL_CONTROL_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SERIAL_CONTROL_DATA { type Message = MavMessage ; const ID : u32 = 126u32 ; const NAME : & 'static str = "SERIAL_CONTROL" ; const EXTRA_CRC : u8 = 220u8 ; const ENCODED_LEN : usize = 79usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . baudrate = buf . get_u32_le () ; __struct . timeout = buf . get_u16_le () ; let tmp = buf . get_u8 () ; __struct . device = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "SerialControlDev" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . flags = SerialControlFlag :: from_bits (tmp & SerialControlFlag :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "SerialControlFlag" , value : tmp as u32 }) ? ; __struct . count = buf . get_u8 () ; for v in & mut __struct . data { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . baudrate) ; __tmp . put_u16_le (self . timeout) ; __tmp . put_u8 (self . device as u8) ; __tmp . put_u8 (self . flags . bits ()) ; __tmp . put_u8 (self . count) ; for val in & self . data { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct DATA_TRANSMISSION_HANDSHAKE_DATA { pub size : u32 , pub width : u16 , pub height : u16 , pub packets : u16 , pub mavtype : MavlinkDataStreamType , pub payload : u8 , pub jpg_quality : u8 , } impl DATA_TRANSMISSION_HANDSHAKE_DATA { pub const ENCODED_LEN : usize = 13usize ; pub const DEFAULT : Self = Self { size : 0_u32 , width : 0_u16 , height : 0_u16 , packets : 0_u16 , mavtype : MavlinkDataStreamType :: DEFAULT , payload : 0_u8 , jpg_quality : 0_u8 , } ; } impl Default for DATA_TRANSMISSION_HANDSHAKE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for DATA_TRANSMISSION_HANDSHAKE_DATA { type Message = MavMessage ; const ID : u32 = 130u32 ; const NAME : & 'static str = "DATA_TRANSMISSION_HANDSHAKE" ; const EXTRA_CRC : u8 = 29u8 ; const ENCODED_LEN : usize = 13usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . size = buf . get_u32_le () ; __struct . width = buf . get_u16_le () ; __struct . height = buf . get_u16_le () ; __struct . packets = buf . get_u16_le () ; let tmp = buf . get_u8 () ; __struct . mavtype = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavlinkDataStreamType" , value : tmp as u32 }) ? ; __struct . payload = buf . get_u8 () ; __struct . jpg_quality = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . size) ; __tmp . put_u16_le (self . width) ; __tmp . put_u16_le (self . height) ; __tmp . put_u16_le (self . packets) ; __tmp . put_u8 (self . mavtype as u8) ; __tmp . put_u8 (self . payload) ; __tmp . put_u8 (self . jpg_quality) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct COMMAND_ACK_DATA { pub command : MavCmd , pub result : MavResult , } impl COMMAND_ACK_DATA { pub const ENCODED_LEN : usize = 3usize ; pub const DEFAULT : Self = Self { command : MavCmd :: DEFAULT , result : MavResult :: DEFAULT , } ; } impl Default for COMMAND_ACK_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for COMMAND_ACK_DATA { type Message = MavMessage ; const ID : u32 = 77u32 ; const NAME : & 'static str = "COMMAND_ACK" ; const EXTRA_CRC : u8 = 143u8 ; const ENCODED_LEN : usize = 3usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u16_le () ; __struct . command = FromPrimitive :: from_u16 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavCmd" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . result = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavResult" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . command as u16) ; __tmp . put_u8 (self . result as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct OPEN_DRONE_ID_SYSTEM_DATA { pub operator_latitude : i32 , pub operator_longitude : i32 , pub area_ceiling : f32 , pub area_floor : f32 , pub operator_altitude_geo : f32 , pub timestamp : u32 , pub area_count : u16 , pub area_radius : u16 , pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub id_or_mac : [u8 ; 20] , pub operator_location_type : MavOdidOperatorLocationType , pub classification_type : MavOdidClassificationType , pub category_eu : MavOdidCategoryEu , pub class_eu : MavOdidClassEu , } impl OPEN_DRONE_ID_SYSTEM_DATA { pub const ENCODED_LEN : usize = 54usize ; pub const DEFAULT : Self = Self { operator_latitude : 0_i32 , operator_longitude : 0_i32 , area_ceiling : 0.0_f32 , area_floor : 0.0_f32 , operator_altitude_geo : 0.0_f32 , timestamp : 0_u32 , area_count : 0_u16 , area_radius : 0_u16 , target_system : 0_u8 , target_component : 0_u8 , id_or_mac : [0_u8 ; 20usize] , operator_location_type : MavOdidOperatorLocationType :: DEFAULT , classification_type : MavOdidClassificationType :: DEFAULT , category_eu : MavOdidCategoryEu :: DEFAULT , class_eu : MavOdidClassEu :: DEFAULT , } ; } impl Default for OPEN_DRONE_ID_SYSTEM_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for OPEN_DRONE_ID_SYSTEM_DATA { type Message = MavMessage ; const ID : u32 = 12904u32 ; const NAME : & 'static str = "OPEN_DRONE_ID_SYSTEM" ; const EXTRA_CRC : u8 = 77u8 ; const ENCODED_LEN : usize = 54usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . operator_latitude = buf . get_i32_le () ; __struct . operator_longitude = buf . get_i32_le () ; __struct . area_ceiling = buf . get_f32_le () ; __struct . area_floor = buf . get_f32_le () ; __struct . operator_altitude_geo = buf . get_f32_le () ; __struct . timestamp = buf . get_u32_le () ; __struct . area_count = buf . get_u16_le () ; __struct . area_radius = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . id_or_mac { let val = buf . get_u8 () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . operator_location_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidOperatorLocationType" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . classification_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidClassificationType" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . category_eu = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidCategoryEu" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . class_eu = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidClassEu" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . operator_latitude) ; __tmp . put_i32_le (self . operator_longitude) ; __tmp . put_f32_le (self . area_ceiling) ; __tmp . put_f32_le (self . area_floor) ; __tmp . put_f32_le (self . operator_altitude_geo) ; __tmp . put_u32_le (self . timestamp) ; __tmp . put_u16_le (self . area_count) ; __tmp . put_u16_le (self . area_radius) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . id_or_mac { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . operator_location_type as u8) ; __tmp . put_u8 (self . classification_type as u8) ; __tmp . put_u8 (self . category_eu as u8) ; __tmp . put_u8 (self . class_eu as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PARAM_EXT_VALUE_DATA { pub param_count : u16 , pub param_index : u16 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub param_id : [u8 ; 16] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub param_value : [u8 ; 128] , pub param_type : MavParamExtType , } impl PARAM_EXT_VALUE_DATA { pub const ENCODED_LEN : usize = 149usize ; pub const DEFAULT : Self = Self { param_count : 0_u16 , param_index : 0_u16 , param_id : [0_u8 ; 16usize] , param_value : [0_u8 ; 128usize] , param_type : MavParamExtType :: DEFAULT , } ; } impl Default for PARAM_EXT_VALUE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for PARAM_EXT_VALUE_DATA { type Message = MavMessage ; const ID : u32 = 322u32 ; const NAME : & 'static str = "PARAM_EXT_VALUE" ; const EXTRA_CRC : u8 = 243u8 ; const ENCODED_LEN : usize = 149usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . param_count = buf . get_u16_le () ; __struct . param_index = buf . get_u16_le () ; for v in & mut __struct . param_id { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . param_value { let val = buf . get_u8 () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . param_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavParamExtType" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . param_count) ; __tmp . put_u16_le (self . param_index) ; for val in & self . param_id { __tmp . put_u8 (* val) ; } for val in & self . param_value { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . param_type as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GIMBAL_MANAGER_INFORMATION_DATA { pub time_boot_ms : u32 , pub cap_flags : GimbalManagerCapFlags , pub roll_min : f32 , pub roll_max : f32 , pub pitch_min : f32 , pub pitch_max : f32 , pub yaw_min : f32 , pub yaw_max : f32 , pub gimbal_device_id : u8 , } impl GIMBAL_MANAGER_INFORMATION_DATA { pub const ENCODED_LEN : usize = 33usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , cap_flags : GimbalManagerCapFlags :: DEFAULT , roll_min : 0.0_f32 , roll_max : 0.0_f32 , pitch_min : 0.0_f32 , pitch_max : 0.0_f32 , yaw_min : 0.0_f32 , yaw_max : 0.0_f32 , gimbal_device_id : 0_u8 , } ; } impl Default for GIMBAL_MANAGER_INFORMATION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GIMBAL_MANAGER_INFORMATION_DATA { type Message = MavMessage ; const ID : u32 = 280u32 ; const NAME : & 'static str = "GIMBAL_MANAGER_INFORMATION" ; const EXTRA_CRC : u8 = 70u8 ; const ENCODED_LEN : usize = 33usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; let tmp = buf . get_u32_le () ; __struct . cap_flags = GimbalManagerCapFlags :: from_bits (tmp & GimbalManagerCapFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "GimbalManagerCapFlags" , value : tmp as u32 }) ? ; __struct . roll_min = buf . get_f32_le () ; __struct . roll_max = buf . get_f32_le () ; __struct . pitch_min = buf . get_f32_le () ; __struct . pitch_max = buf . get_f32_le () ; __struct . yaw_min = buf . get_f32_le () ; __struct . yaw_max = buf . get_f32_le () ; __struct . gimbal_device_id = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_u32_le (self . cap_flags . bits ()) ; __tmp . put_f32_le (self . roll_min) ; __tmp . put_f32_le (self . roll_max) ; __tmp . put_f32_le (self . pitch_min) ; __tmp . put_f32_le (self . pitch_max) ; __tmp . put_f32_le (self . yaw_min) ; __tmp . put_f32_le (self . yaw_max) ; __tmp . put_u8 (self . gimbal_device_id) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HYGROMETER_SENSOR_DATA { pub temperature : i16 , pub humidity : u16 , pub id : u8 , } impl HYGROMETER_SENSOR_DATA { pub const ENCODED_LEN : usize = 5usize ; pub const DEFAULT : Self = Self { temperature : 0_i16 , humidity : 0_u16 , id : 0_u8 , } ; } impl Default for HYGROMETER_SENSOR_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for HYGROMETER_SENSOR_DATA { type Message = MavMessage ; const ID : u32 = 12920u32 ; const NAME : & 'static str = "HYGROMETER_SENSOR" ; const EXTRA_CRC : u8 = 20u8 ; const ENCODED_LEN : usize = 5usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . temperature = buf . get_i16_le () ; __struct . humidity = buf . get_u16_le () ; __struct . id = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i16_le (self . temperature) ; __tmp . put_u16_le (self . humidity) ; __tmp . put_u8 (self . id) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct POSITION_TARGET_GLOBAL_INT_DATA { pub time_boot_ms : u32 , pub lat_int : i32 , pub lon_int : i32 , pub alt : f32 , pub vx : f32 , pub vy : f32 , pub vz : f32 , pub afx : f32 , pub afy : f32 , pub afz : f32 , pub yaw : f32 , pub yaw_rate : f32 , pub type_mask : PositionTargetTypemask , pub coordinate_frame : MavFrame , } impl POSITION_TARGET_GLOBAL_INT_DATA { pub const ENCODED_LEN : usize = 51usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , lat_int : 0_i32 , lon_int : 0_i32 , alt : 0.0_f32 , vx : 0.0_f32 , vy : 0.0_f32 , vz : 0.0_f32 , afx : 0.0_f32 , afy : 0.0_f32 , afz : 0.0_f32 , yaw : 0.0_f32 , yaw_rate : 0.0_f32 , type_mask : PositionTargetTypemask :: DEFAULT , coordinate_frame : MavFrame :: DEFAULT , } ; } impl Default for POSITION_TARGET_GLOBAL_INT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for POSITION_TARGET_GLOBAL_INT_DATA { type Message = MavMessage ; const ID : u32 = 87u32 ; const NAME : & 'static str = "POSITION_TARGET_GLOBAL_INT" ; const EXTRA_CRC : u8 = 150u8 ; const ENCODED_LEN : usize = 51usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . lat_int = buf . get_i32_le () ; __struct . lon_int = buf . get_i32_le () ; __struct . alt = buf . get_f32_le () ; __struct . vx = buf . get_f32_le () ; __struct . vy = buf . get_f32_le () ; __struct . vz = buf . get_f32_le () ; __struct . afx = buf . get_f32_le () ; __struct . afy = buf . get_f32_le () ; __struct . afz = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; __struct . yaw_rate = buf . get_f32_le () ; let tmp = buf . get_u16_le () ; __struct . type_mask = PositionTargetTypemask :: from_bits (tmp & PositionTargetTypemask :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "PositionTargetTypemask" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . coordinate_frame = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavFrame" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_i32_le (self . lat_int) ; __tmp . put_i32_le (self . lon_int) ; __tmp . put_f32_le (self . alt) ; __tmp . put_f32_le (self . vx) ; __tmp . put_f32_le (self . vy) ; __tmp . put_f32_le (self . vz) ; __tmp . put_f32_le (self . afx) ; __tmp . put_f32_le (self . afy) ; __tmp . put_f32_le (self . afz) ; __tmp . put_f32_le (self . yaw) ; __tmp . put_f32_le (self . yaw_rate) ; __tmp . put_u16_le (self . type_mask . bits ()) ; __tmp . put_u8 (self . coordinate_frame as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA { pub time_boot_us : u64 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub q : [f32 ; 4] , pub q_estimated_delay_us : u32 , pub vx : f32 , pub vy : f32 , pub vz : f32 , pub v_estimated_delay_us : u32 , pub feed_forward_angular_velocity_z : f32 , pub estimator_status : EstimatorStatusFlags , pub target_system : u8 , pub target_component : u8 , pub landed_state : MavLandedState , } impl AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA { pub const ENCODED_LEN : usize = 53usize ; pub const DEFAULT : Self = Self { time_boot_us : 0_u64 , q : [0.0_f32 ; 4usize] , q_estimated_delay_us : 0_u32 , vx : 0.0_f32 , vy : 0.0_f32 , vz : 0.0_f32 , v_estimated_delay_us : 0_u32 , feed_forward_angular_velocity_z : 0.0_f32 , estimator_status : EstimatorStatusFlags :: DEFAULT , target_system : 0_u8 , target_component : 0_u8 , landed_state : MavLandedState :: DEFAULT , } ; } impl Default for AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA { type Message = MavMessage ; const ID : u32 = 286u32 ; const NAME : & 'static str = "AUTOPILOT_STATE_FOR_GIMBAL_DEVICE" ; const EXTRA_CRC : u8 = 210u8 ; const ENCODED_LEN : usize = 53usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_us = buf . get_u64_le () ; for v in & mut __struct . q { let val = buf . get_f32_le () ; * v = val ; } __struct . q_estimated_delay_us = buf . get_u32_le () ; __struct . vx = buf . get_f32_le () ; __struct . vy = buf . get_f32_le () ; __struct . vz = buf . get_f32_le () ; __struct . v_estimated_delay_us = buf . get_u32_le () ; __struct . feed_forward_angular_velocity_z = buf . get_f32_le () ; let tmp = buf . get_u16_le () ; __struct . estimator_status = EstimatorStatusFlags :: from_bits (tmp & EstimatorStatusFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "EstimatorStatusFlags" , value : tmp as u32 }) ? ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . landed_state = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavLandedState" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_boot_us) ; for val in & self . q { __tmp . put_f32_le (* val) ; } __tmp . put_u32_le (self . q_estimated_delay_us) ; __tmp . put_f32_le (self . vx) ; __tmp . put_f32_le (self . vy) ; __tmp . put_f32_le (self . vz) ; __tmp . put_u32_le (self . v_estimated_delay_us) ; __tmp . put_f32_le (self . feed_forward_angular_velocity_z) ; __tmp . put_u16_le (self . estimator_status . bits ()) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . landed_state as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct DATA_STREAM_DATA { pub message_rate : u16 , pub stream_id : u8 , pub on_off : u8 , } impl DATA_STREAM_DATA { pub const ENCODED_LEN : usize = 4usize ; pub const DEFAULT : Self = Self { message_rate : 0_u16 , stream_id : 0_u8 , on_off : 0_u8 , } ; } impl Default for DATA_STREAM_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for DATA_STREAM_DATA { type Message = MavMessage ; const ID : u32 = 67u32 ; const NAME : & 'static str = "DATA_STREAM" ; const EXTRA_CRC : u8 = 21u8 ; const ENCODED_LEN : usize = 4usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . message_rate = buf . get_u16_le () ; __struct . stream_id = buf . get_u8 () ; __struct . on_off = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . message_rate) ; __tmp . put_u8 (self . stream_id) ; __tmp . put_u8 (self . on_off) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct POWER_STATUS_DATA { pub Vcc : u16 , pub Vservo : u16 , pub flags : MavPowerStatus , } impl POWER_STATUS_DATA { pub const ENCODED_LEN : usize = 6usize ; pub const DEFAULT : Self = Self { Vcc : 0_u16 , Vservo : 0_u16 , flags : MavPowerStatus :: DEFAULT , } ; } impl Default for POWER_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for POWER_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 125u32 ; const NAME : & 'static str = "POWER_STATUS" ; const EXTRA_CRC : u8 = 203u8 ; const ENCODED_LEN : usize = 6usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . Vcc = buf . get_u16_le () ; __struct . Vservo = buf . get_u16_le () ; let tmp = buf . get_u16_le () ; __struct . flags = MavPowerStatus :: from_bits (tmp & MavPowerStatus :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "MavPowerStatus" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . Vcc) ; __tmp . put_u16_le (self . Vservo) ; __tmp . put_u16_le (self . flags . bits ()) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct BUTTON_CHANGE_DATA { pub time_boot_ms : u32 , pub last_change_ms : u32 , pub state : u8 , } impl BUTTON_CHANGE_DATA { pub const ENCODED_LEN : usize = 9usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , last_change_ms : 0_u32 , state : 0_u8 , } ; } impl Default for BUTTON_CHANGE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for BUTTON_CHANGE_DATA { type Message = MavMessage ; const ID : u32 = 257u32 ; const NAME : & 'static str = "BUTTON_CHANGE" ; const EXTRA_CRC : u8 = 131u8 ; const ENCODED_LEN : usize = 9usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . last_change_ms = buf . get_u32_le () ; __struct . state = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_u32_le (self . last_change_ms) ; __tmp . put_u8 (self . state) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct STATUSTEXT_DATA { pub severity : MavSeverity , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub text : [u8 ; 50] , } impl STATUSTEXT_DATA { pub const ENCODED_LEN : usize = 51usize ; pub const DEFAULT : Self = Self { severity : MavSeverity :: DEFAULT , text : [0_u8 ; 50usize] , } ; } impl Default for STATUSTEXT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for STATUSTEXT_DATA { type Message = MavMessage ; const ID : u32 = 253u32 ; const NAME : & 'static str = "STATUSTEXT" ; const EXTRA_CRC : u8 = 83u8 ; const ENCODED_LEN : usize = 51usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u8 () ; __struct . severity = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavSeverity" , value : tmp as u32 }) ? ; for v in & mut __struct . text { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . severity as u8) ; for val in & self . text { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HIGHRES_IMU_DATA { pub time_usec : u64 , pub xacc : f32 , pub yacc : f32 , pub zacc : f32 , pub xgyro : f32 , pub ygyro : f32 , pub zgyro : f32 , pub xmag : f32 , pub ymag : f32 , pub zmag : f32 , pub abs_pressure : f32 , pub diff_pressure : f32 , pub pressure_alt : f32 , pub temperature : f32 , pub fields_updated : HighresImuUpdatedFlags , } impl HIGHRES_IMU_DATA { pub const ENCODED_LEN : usize = 62usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , xacc : 0.0_f32 , yacc : 0.0_f32 , zacc : 0.0_f32 , xgyro : 0.0_f32 , ygyro : 0.0_f32 , zgyro : 0.0_f32 , xmag : 0.0_f32 , ymag : 0.0_f32 , zmag : 0.0_f32 , abs_pressure : 0.0_f32 , diff_pressure : 0.0_f32 , pressure_alt : 0.0_f32 , temperature : 0.0_f32 , fields_updated : HighresImuUpdatedFlags :: DEFAULT , } ; } impl Default for HIGHRES_IMU_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for HIGHRES_IMU_DATA { type Message = MavMessage ; const ID : u32 = 105u32 ; const NAME : & 'static str = "HIGHRES_IMU" ; const EXTRA_CRC : u8 = 93u8 ; const ENCODED_LEN : usize = 62usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . xacc = buf . get_f32_le () ; __struct . yacc = buf . get_f32_le () ; __struct . zacc = buf . get_f32_le () ; __struct . xgyro = buf . get_f32_le () ; __struct . ygyro = buf . get_f32_le () ; __struct . zgyro = buf . get_f32_le () ; __struct . xmag = buf . get_f32_le () ; __struct . ymag = buf . get_f32_le () ; __struct . zmag = buf . get_f32_le () ; __struct . abs_pressure = buf . get_f32_le () ; __struct . diff_pressure = buf . get_f32_le () ; __struct . pressure_alt = buf . get_f32_le () ; __struct . temperature = buf . get_f32_le () ; let tmp = buf . get_u16_le () ; __struct . fields_updated = HighresImuUpdatedFlags :: from_bits (tmp & HighresImuUpdatedFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "HighresImuUpdatedFlags" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . xacc) ; __tmp . put_f32_le (self . yacc) ; __tmp . put_f32_le (self . zacc) ; __tmp . put_f32_le (self . xgyro) ; __tmp . put_f32_le (self . ygyro) ; __tmp . put_f32_le (self . zgyro) ; __tmp . put_f32_le (self . xmag) ; __tmp . put_f32_le (self . ymag) ; __tmp . put_f32_le (self . zmag) ; __tmp . put_f32_le (self . abs_pressure) ; __tmp . put_f32_le (self . diff_pressure) ; __tmp . put_f32_le (self . pressure_alt) ; __tmp . put_f32_le (self . temperature) ; __tmp . put_u16_le (self . fields_updated . bits ()) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ESC_INFO_DATA { pub time_usec : u64 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub error_count : [u32 ; 4] , pub counter : u16 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub failure_flags : [u16 ; 4] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub temperature : [i16 ; 4] , pub index : u8 , pub count : u8 , pub connection_type : EscConnectionType , pub info : u8 , } impl ESC_INFO_DATA { pub const ENCODED_LEN : usize = 46usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , error_count : [0_u32 ; 4usize] , counter : 0_u16 , failure_flags : [0_u16 ; 4usize] , temperature : [0_i16 ; 4usize] , index : 0_u8 , count : 0_u8 , connection_type : EscConnectionType :: DEFAULT , info : 0_u8 , } ; } impl Default for ESC_INFO_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ESC_INFO_DATA { type Message = MavMessage ; const ID : u32 = 290u32 ; const NAME : & 'static str = "ESC_INFO" ; const EXTRA_CRC : u8 = 251u8 ; const ENCODED_LEN : usize = 46usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; for v in & mut __struct . error_count { let val = buf . get_u32_le () ; * v = val ; } __struct . counter = buf . get_u16_le () ; for v in & mut __struct . failure_flags { let val = buf . get_u16_le () ; * v = val ; } for v in & mut __struct . temperature { let val = buf . get_i16_le () ; * v = val ; } __struct . index = buf . get_u8 () ; __struct . count = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . connection_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "EscConnectionType" , value : tmp as u32 }) ? ; __struct . info = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; for val in & self . error_count { __tmp . put_u32_le (* val) ; } __tmp . put_u16_le (self . counter) ; for val in & self . failure_flags { __tmp . put_u16_le (* val) ; } for val in & self . temperature { __tmp . put_i16_le (* val) ; } __tmp . put_u8 (self . index) ; __tmp . put_u8 (self . count) ; __tmp . put_u8 (self . connection_type as u8) ; __tmp . put_u8 (self . info) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SCALED_IMU_DATA { pub time_boot_ms : u32 , pub xacc : i16 , pub yacc : i16 , pub zacc : i16 , pub xgyro : i16 , pub ygyro : i16 , pub zgyro : i16 , pub xmag : i16 , pub ymag : i16 , pub zmag : i16 , } impl SCALED_IMU_DATA { pub const ENCODED_LEN : usize = 22usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , xacc : 0_i16 , yacc : 0_i16 , zacc : 0_i16 , xgyro : 0_i16 , ygyro : 0_i16 , zgyro : 0_i16 , xmag : 0_i16 , ymag : 0_i16 , zmag : 0_i16 , } ; } impl Default for SCALED_IMU_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SCALED_IMU_DATA { type Message = MavMessage ; const ID : u32 = 26u32 ; const NAME : & 'static str = "SCALED_IMU" ; const EXTRA_CRC : u8 = 170u8 ; const ENCODED_LEN : usize = 22usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . xacc = buf . get_i16_le () ; __struct . yacc = buf . get_i16_le () ; __struct . zacc = buf . get_i16_le () ; __struct . xgyro = buf . get_i16_le () ; __struct . ygyro = buf . get_i16_le () ; __struct . zgyro = buf . get_i16_le () ; __struct . xmag = buf . get_i16_le () ; __struct . ymag = buf . get_i16_le () ; __struct . zmag = buf . get_i16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_i16_le (self . xacc) ; __tmp . put_i16_le (self . yacc) ; __tmp . put_i16_le (self . zacc) ; __tmp . put_i16_le (self . xgyro) ; __tmp . put_i16_le (self . ygyro) ; __tmp . put_i16_le (self . zgyro) ; __tmp . put_i16_le (self . xmag) ; __tmp . put_i16_le (self . ymag) ; __tmp . put_i16_le (self . zmag) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MISSION_SET_CURRENT_DATA { pub seq : u16 , pub target_system : u8 , pub target_component : u8 , } impl MISSION_SET_CURRENT_DATA { pub const ENCODED_LEN : usize = 4usize ; pub const DEFAULT : Self = Self { seq : 0_u16 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for MISSION_SET_CURRENT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MISSION_SET_CURRENT_DATA { type Message = MavMessage ; const ID : u32 = 41u32 ; const NAME : & 'static str = "MISSION_SET_CURRENT" ; const EXTRA_CRC : u8 = 28u8 ; const ENCODED_LEN : usize = 4usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . seq = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . seq) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct VIDEO_STREAM_INFORMATION_DATA { pub framerate : f32 , pub bitrate : u32 , pub flags : VideoStreamStatusFlags , pub resolution_h : u16 , pub resolution_v : u16 , pub rotation : u16 , pub hfov : u16 , pub stream_id : u8 , pub count : u8 , pub mavtype : VideoStreamType , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub name : [u8 ; 32] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub uri : [u8 ; 160] , } impl VIDEO_STREAM_INFORMATION_DATA { pub const ENCODED_LEN : usize = 213usize ; pub const DEFAULT : Self = Self { framerate : 0.0_f32 , bitrate : 0_u32 , flags : VideoStreamStatusFlags :: DEFAULT , resolution_h : 0_u16 , resolution_v : 0_u16 , rotation : 0_u16 , hfov : 0_u16 , stream_id : 0_u8 , count : 0_u8 , mavtype : VideoStreamType :: DEFAULT , name : [0_u8 ; 32usize] , uri : [0_u8 ; 160usize] , } ; } impl Default for VIDEO_STREAM_INFORMATION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for VIDEO_STREAM_INFORMATION_DATA { type Message = MavMessage ; const ID : u32 = 269u32 ; const NAME : & 'static str = "VIDEO_STREAM_INFORMATION" ; const EXTRA_CRC : u8 = 109u8 ; const ENCODED_LEN : usize = 213usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . framerate = buf . get_f32_le () ; __struct . bitrate = buf . get_u32_le () ; let tmp = buf . get_u16_le () ; __struct . flags = FromPrimitive :: from_u16 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "VideoStreamStatusFlags" , value : tmp as u32 }) ? ; __struct . resolution_h = buf . get_u16_le () ; __struct . resolution_v = buf . get_u16_le () ; __struct . rotation = buf . get_u16_le () ; __struct . hfov = buf . get_u16_le () ; __struct . stream_id = buf . get_u8 () ; __struct . count = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . mavtype = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "VideoStreamType" , value : tmp as u32 }) ? ; for v in & mut __struct . name { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . uri { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . framerate) ; __tmp . put_u32_le (self . bitrate) ; __tmp . put_u16_le (self . flags as u16) ; __tmp . put_u16_le (self . resolution_h) ; __tmp . put_u16_le (self . resolution_v) ; __tmp . put_u16_le (self . rotation) ; __tmp . put_u16_le (self . hfov) ; __tmp . put_u8 (self . stream_id) ; __tmp . put_u8 (self . count) ; __tmp . put_u8 (self . mavtype as u8) ; for val in & self . name { __tmp . put_u8 (* val) ; } for val in & self . uri { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MISSION_WRITE_PARTIAL_LIST_DATA { pub start_index : i16 , pub end_index : i16 , pub target_system : u8 , pub target_component : u8 , } impl MISSION_WRITE_PARTIAL_LIST_DATA { pub const ENCODED_LEN : usize = 6usize ; pub const DEFAULT : Self = Self { start_index : 0_i16 , end_index : 0_i16 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for MISSION_WRITE_PARTIAL_LIST_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MISSION_WRITE_PARTIAL_LIST_DATA { type Message = MavMessage ; const ID : u32 = 38u32 ; const NAME : & 'static str = "MISSION_WRITE_PARTIAL_LIST" ; const EXTRA_CRC : u8 = 9u8 ; const ENCODED_LEN : usize = 6usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . start_index = buf . get_i16_le () ; __struct . end_index = buf . get_i16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i16_le (self . start_index) ; __tmp . put_i16_le (self . end_index) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SET_ATTITUDE_TARGET_DATA { pub time_boot_ms : u32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub q : [f32 ; 4] , pub body_roll_rate : f32 , pub body_pitch_rate : f32 , pub body_yaw_rate : f32 , pub thrust : f32 , pub target_system : u8 , pub target_component : u8 , pub type_mask : AttitudeTargetTypemask , } impl SET_ATTITUDE_TARGET_DATA { pub const ENCODED_LEN : usize = 39usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , q : [0.0_f32 ; 4usize] , body_roll_rate : 0.0_f32 , body_pitch_rate : 0.0_f32 , body_yaw_rate : 0.0_f32 , thrust : 0.0_f32 , target_system : 0_u8 , target_component : 0_u8 , type_mask : AttitudeTargetTypemask :: DEFAULT , } ; } impl Default for SET_ATTITUDE_TARGET_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SET_ATTITUDE_TARGET_DATA { type Message = MavMessage ; const ID : u32 = 82u32 ; const NAME : & 'static str = "SET_ATTITUDE_TARGET" ; const EXTRA_CRC : u8 = 49u8 ; const ENCODED_LEN : usize = 39usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; for v in & mut __struct . q { let val = buf . get_f32_le () ; * v = val ; } __struct . body_roll_rate = buf . get_f32_le () ; __struct . body_pitch_rate = buf . get_f32_le () ; __struct . body_yaw_rate = buf . get_f32_le () ; __struct . thrust = buf . get_f32_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . type_mask = AttitudeTargetTypemask :: from_bits (tmp & AttitudeTargetTypemask :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "AttitudeTargetTypemask" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; for val in & self . q { __tmp . put_f32_le (* val) ; } __tmp . put_f32_le (self . body_roll_rate) ; __tmp . put_f32_le (self . body_pitch_rate) ; __tmp . put_f32_le (self . body_yaw_rate) ; __tmp . put_f32_le (self . thrust) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . type_mask . bits ()) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct WHEEL_DISTANCE_DATA { pub time_usec : u64 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub distance : [f64 ; 16] , pub count : u8 , } impl WHEEL_DISTANCE_DATA { pub const ENCODED_LEN : usize = 137usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , distance : [0.0_f64 ; 16usize] , count : 0_u8 , } ; } impl Default for WHEEL_DISTANCE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for WHEEL_DISTANCE_DATA { type Message = MavMessage ; const ID : u32 = 9000u32 ; const NAME : & 'static str = "WHEEL_DISTANCE" ; const EXTRA_CRC : u8 = 113u8 ; const ENCODED_LEN : usize = 137usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; for v in & mut __struct . distance { let val = buf . get_f64_le () ; * v = val ; } __struct . count = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; for val in & self . distance { __tmp . put_f64_le (* val) ; } __tmp . put_u8 (self . count) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GLOBAL_VISION_POSITION_ESTIMATE_DATA { pub usec : u64 , pub x : f32 , pub y : f32 , pub z : f32 , pub roll : f32 , pub pitch : f32 , pub yaw : f32 , } impl GLOBAL_VISION_POSITION_ESTIMATE_DATA { pub const ENCODED_LEN : usize = 32usize ; pub const DEFAULT : Self = Self { usec : 0_u64 , x : 0.0_f32 , y : 0.0_f32 , z : 0.0_f32 , roll : 0.0_f32 , pitch : 0.0_f32 , yaw : 0.0_f32 , } ; } impl Default for GLOBAL_VISION_POSITION_ESTIMATE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GLOBAL_VISION_POSITION_ESTIMATE_DATA { type Message = MavMessage ; const ID : u32 = 101u32 ; const NAME : & 'static str = "GLOBAL_VISION_POSITION_ESTIMATE" ; const EXTRA_CRC : u8 = 102u8 ; const ENCODED_LEN : usize = 32usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . usec = buf . get_u64_le () ; __struct . x = buf . get_f32_le () ; __struct . y = buf . get_f32_le () ; __struct . z = buf . get_f32_le () ; __struct . roll = buf . get_f32_le () ; __struct . pitch = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . usec) ; __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; __tmp . put_f32_le (self . roll) ; __tmp . put_f32_le (self . pitch) ; __tmp . put_f32_le (self . yaw) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct WINCH_STATUS_DATA { pub time_usec : u64 , pub line_length : f32 , pub speed : f32 , pub tension : f32 , pub voltage : f32 , pub current : f32 , pub status : MavWinchStatusFlag , pub temperature : i16 , } impl WINCH_STATUS_DATA { pub const ENCODED_LEN : usize = 34usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , line_length : 0.0_f32 , speed : 0.0_f32 , tension : 0.0_f32 , voltage : 0.0_f32 , current : 0.0_f32 , status : MavWinchStatusFlag :: DEFAULT , temperature : 0_i16 , } ; } impl Default for WINCH_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for WINCH_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 9005u32 ; const NAME : & 'static str = "WINCH_STATUS" ; const EXTRA_CRC : u8 = 117u8 ; const ENCODED_LEN : usize = 34usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . line_length = buf . get_f32_le () ; __struct . speed = buf . get_f32_le () ; __struct . tension = buf . get_f32_le () ; __struct . voltage = buf . get_f32_le () ; __struct . current = buf . get_f32_le () ; let tmp = buf . get_u32_le () ; __struct . status = MavWinchStatusFlag :: from_bits (tmp & MavWinchStatusFlag :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "MavWinchStatusFlag" , value : tmp as u32 }) ? ; __struct . temperature = buf . get_i16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . line_length) ; __tmp . put_f32_le (self . speed) ; __tmp . put_f32_le (self . tension) ; __tmp . put_f32_le (self . voltage) ; __tmp . put_f32_le (self . current) ; __tmp . put_u32_le (self . status . bits ()) ; __tmp . put_i16_le (self . temperature) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct PLAY_TUNE_DATA { pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub tune : [u8 ; 30] , } impl PLAY_TUNE_DATA { pub const ENCODED_LEN : usize = 32usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , tune : [0_u8 ; 30usize] , } ; } impl Default for PLAY_TUNE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for PLAY_TUNE_DATA { type Message = MavMessage ; const ID : u32 = 258u32 ; const NAME : & 'static str = "PLAY_TUNE" ; const EXTRA_CRC : u8 = 187u8 ; const ENCODED_LEN : usize = 32usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . tune { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . tune { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct TUNNEL_DATA { pub payload_type : MavTunnelPayloadType , pub target_system : u8 , pub target_component : u8 , pub payload_length : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub payload : [u8 ; 128] , } impl TUNNEL_DATA { pub const ENCODED_LEN : usize = 133usize ; pub const DEFAULT : Self = Self { payload_type : MavTunnelPayloadType :: DEFAULT , target_system : 0_u8 , target_component : 0_u8 , payload_length : 0_u8 , payload : [0_u8 ; 128usize] , } ; } impl Default for TUNNEL_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for TUNNEL_DATA { type Message = MavMessage ; const ID : u32 = 385u32 ; const NAME : & 'static str = "TUNNEL" ; const EXTRA_CRC : u8 = 147u8 ; const ENCODED_LEN : usize = 133usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u16_le () ; __struct . payload_type = FromPrimitive :: from_u16 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavTunnelPayloadType" , value : tmp as u32 }) ? ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . payload_length = buf . get_u8 () ; for v in & mut __struct . payload { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . payload_type as u16) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . payload_length) ; for val in & self . payload { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MISSION_REQUEST_LIST_DATA { pub target_system : u8 , pub target_component : u8 , } impl MISSION_REQUEST_LIST_DATA { pub const ENCODED_LEN : usize = 2usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for MISSION_REQUEST_LIST_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MISSION_REQUEST_LIST_DATA { type Message = MavMessage ; const ID : u32 = 43u32 ; const NAME : & 'static str = "MISSION_REQUEST_LIST" ; const EXTRA_CRC : u8 = 132u8 ; const ENCODED_LEN : usize = 2usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SET_POSITION_TARGET_GLOBAL_INT_DATA { pub time_boot_ms : u32 , pub lat_int : i32 , pub lon_int : i32 , pub alt : f32 , pub vx : f32 , pub vy : f32 , pub vz : f32 , pub afx : f32 , pub afy : f32 , pub afz : f32 , pub yaw : f32 , pub yaw_rate : f32 , pub type_mask : PositionTargetTypemask , pub target_system : u8 , pub target_component : u8 , pub coordinate_frame : MavFrame , } impl SET_POSITION_TARGET_GLOBAL_INT_DATA { pub const ENCODED_LEN : usize = 53usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , lat_int : 0_i32 , lon_int : 0_i32 , alt : 0.0_f32 , vx : 0.0_f32 , vy : 0.0_f32 , vz : 0.0_f32 , afx : 0.0_f32 , afy : 0.0_f32 , afz : 0.0_f32 , yaw : 0.0_f32 , yaw_rate : 0.0_f32 , type_mask : PositionTargetTypemask :: DEFAULT , target_system : 0_u8 , target_component : 0_u8 , coordinate_frame : MavFrame :: DEFAULT , } ; } impl Default for SET_POSITION_TARGET_GLOBAL_INT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SET_POSITION_TARGET_GLOBAL_INT_DATA { type Message = MavMessage ; const ID : u32 = 86u32 ; const NAME : & 'static str = "SET_POSITION_TARGET_GLOBAL_INT" ; const EXTRA_CRC : u8 = 5u8 ; const ENCODED_LEN : usize = 53usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . lat_int = buf . get_i32_le () ; __struct . lon_int = buf . get_i32_le () ; __struct . alt = buf . get_f32_le () ; __struct . vx = buf . get_f32_le () ; __struct . vy = buf . get_f32_le () ; __struct . vz = buf . get_f32_le () ; __struct . afx = buf . get_f32_le () ; __struct . afy = buf . get_f32_le () ; __struct . afz = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; __struct . yaw_rate = buf . get_f32_le () ; let tmp = buf . get_u16_le () ; __struct . type_mask = PositionTargetTypemask :: from_bits (tmp & PositionTargetTypemask :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "PositionTargetTypemask" , value : tmp as u32 }) ? ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . coordinate_frame = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavFrame" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_i32_le (self . lat_int) ; __tmp . put_i32_le (self . lon_int) ; __tmp . put_f32_le (self . alt) ; __tmp . put_f32_le (self . vx) ; __tmp . put_f32_le (self . vy) ; __tmp . put_f32_le (self . vz) ; __tmp . put_f32_le (self . afx) ; __tmp . put_f32_le (self . afy) ; __tmp . put_f32_le (self . afz) ; __tmp . put_f32_le (self . yaw) ; __tmp . put_f32_le (self . yaw_rate) ; __tmp . put_u16_le (self . type_mask . bits ()) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . coordinate_frame as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct FOLLOW_TARGET_DATA { pub timestamp : u64 , pub custom_state : u64 , pub lat : i32 , pub lon : i32 , pub alt : f32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub vel : [f32 ; 3] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub acc : [f32 ; 3] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub attitude_q : [f32 ; 4] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub rates : [f32 ; 3] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub position_cov : [f32 ; 3] , pub est_capabilities : u8 , } impl FOLLOW_TARGET_DATA { pub const ENCODED_LEN : usize = 93usize ; pub const DEFAULT : Self = Self { timestamp : 0_u64 , custom_state : 0_u64 , lat : 0_i32 , lon : 0_i32 , alt : 0.0_f32 , vel : [0.0_f32 ; 3usize] , acc : [0.0_f32 ; 3usize] , attitude_q : [0.0_f32 ; 4usize] , rates : [0.0_f32 ; 3usize] , position_cov : [0.0_f32 ; 3usize] , est_capabilities : 0_u8 , } ; } impl Default for FOLLOW_TARGET_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for FOLLOW_TARGET_DATA { type Message = MavMessage ; const ID : u32 = 144u32 ; const NAME : & 'static str = "FOLLOW_TARGET" ; const EXTRA_CRC : u8 = 127u8 ; const ENCODED_LEN : usize = 93usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . timestamp = buf . get_u64_le () ; __struct . custom_state = buf . get_u64_le () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . alt = buf . get_f32_le () ; for v in & mut __struct . vel { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . acc { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . attitude_q { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . rates { let val = buf . get_f32_le () ; * v = val ; } for v in & mut __struct . position_cov { let val = buf . get_f32_le () ; * v = val ; } __struct . est_capabilities = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . timestamp) ; __tmp . put_u64_le (self . custom_state) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_f32_le (self . alt) ; for val in & self . vel { __tmp . put_f32_le (* val) ; } for val in & self . acc { __tmp . put_f32_le (* val) ; } for val in & self . attitude_q { __tmp . put_f32_le (* val) ; } for val in & self . rates { __tmp . put_f32_le (* val) ; } for val in & self . position_cov { __tmp . put_f32_le (* val) ; } __tmp . put_u8 (self . est_capabilities) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct REQUEST_EVENT_DATA { pub first_sequence : u16 , pub last_sequence : u16 , pub target_system : u8 , pub target_component : u8 , } impl REQUEST_EVENT_DATA { pub const ENCODED_LEN : usize = 6usize ; pub const DEFAULT : Self = Self { first_sequence : 0_u16 , last_sequence : 0_u16 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for REQUEST_EVENT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for REQUEST_EVENT_DATA { type Message = MavMessage ; const ID : u32 = 412u32 ; const NAME : & 'static str = "REQUEST_EVENT" ; const EXTRA_CRC : u8 = 33u8 ; const ENCODED_LEN : usize = 6usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . first_sequence = buf . get_u16_le () ; __struct . last_sequence = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . first_sequence) ; __tmp . put_u16_le (self . last_sequence) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct NAMED_VALUE_INT_DATA { pub time_boot_ms : u32 , pub value : i32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub name : [u8 ; 10] , } impl NAMED_VALUE_INT_DATA { pub const ENCODED_LEN : usize = 18usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , value : 0_i32 , name : [0_u8 ; 10usize] , } ; } impl Default for NAMED_VALUE_INT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for NAMED_VALUE_INT_DATA { type Message = MavMessage ; const ID : u32 = 252u32 ; const NAME : & 'static str = "NAMED_VALUE_INT" ; const EXTRA_CRC : u8 = 44u8 ; const ENCODED_LEN : usize = 18usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . value = buf . get_i32_le () ; for v in & mut __struct . name { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_i32_le (self . value) ; for val in & self . name { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct VFR_HUD_DATA { pub airspeed : f32 , pub groundspeed : f32 , pub alt : f32 , pub climb : f32 , pub heading : i16 , pub throttle : u16 , } impl VFR_HUD_DATA { pub const ENCODED_LEN : usize = 20usize ; pub const DEFAULT : Self = Self { airspeed : 0.0_f32 , groundspeed : 0.0_f32 , alt : 0.0_f32 , climb : 0.0_f32 , heading : 0_i16 , throttle : 0_u16 , } ; } impl Default for VFR_HUD_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for VFR_HUD_DATA { type Message = MavMessage ; const ID : u32 = 74u32 ; const NAME : & 'static str = "VFR_HUD" ; const EXTRA_CRC : u8 = 20u8 ; const ENCODED_LEN : usize = 20usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . airspeed = buf . get_f32_le () ; __struct . groundspeed = buf . get_f32_le () ; __struct . alt = buf . get_f32_le () ; __struct . climb = buf . get_f32_le () ; __struct . heading = buf . get_i16_le () ; __struct . throttle = buf . get_u16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . airspeed) ; __tmp . put_f32_le (self . groundspeed) ; __tmp . put_f32_le (self . alt) ; __tmp . put_f32_le (self . climb) ; __tmp . put_i16_le (self . heading) ; __tmp . put_u16_le (self . throttle) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LOG_REQUEST_DATA_DATA { pub ofs : u32 , pub count : u32 , pub id : u16 , pub target_system : u8 , pub target_component : u8 , } impl LOG_REQUEST_DATA_DATA { pub const ENCODED_LEN : usize = 12usize ; pub const DEFAULT : Self = Self { ofs : 0_u32 , count : 0_u32 , id : 0_u16 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for LOG_REQUEST_DATA_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for LOG_REQUEST_DATA_DATA { type Message = MavMessage ; const ID : u32 = 119u32 ; const NAME : & 'static str = "LOG_REQUEST_DATA" ; const EXTRA_CRC : u8 = 116u8 ; const ENCODED_LEN : usize = 12usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . ofs = buf . get_u32_le () ; __struct . count = buf . get_u32_le () ; __struct . id = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . ofs) ; __tmp . put_u32_le (self . count) ; __tmp . put_u16_le (self . id) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GPS2_RAW_DATA { pub time_usec : u64 , pub lat : i32 , pub lon : i32 , pub alt : i32 , pub dgps_age : u32 , pub eph : u16 , pub epv : u16 , pub vel : u16 , pub cog : u16 , pub fix_type : GpsFixType , pub satellites_visible : u8 , pub dgps_numch : u8 , } impl GPS2_RAW_DATA { pub const ENCODED_LEN : usize = 35usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , lat : 0_i32 , lon : 0_i32 , alt : 0_i32 , dgps_age : 0_u32 , eph : 0_u16 , epv : 0_u16 , vel : 0_u16 , cog : 0_u16 , fix_type : GpsFixType :: DEFAULT , satellites_visible : 0_u8 , dgps_numch : 0_u8 , } ; } impl Default for GPS2_RAW_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GPS2_RAW_DATA { type Message = MavMessage ; const ID : u32 = 124u32 ; const NAME : & 'static str = "GPS2_RAW" ; const EXTRA_CRC : u8 = 87u8 ; const ENCODED_LEN : usize = 35usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . alt = buf . get_i32_le () ; __struct . dgps_age = buf . get_u32_le () ; __struct . eph = buf . get_u16_le () ; __struct . epv = buf . get_u16_le () ; __struct . vel = buf . get_u16_le () ; __struct . cog = buf . get_u16_le () ; let tmp = buf . get_u8 () ; __struct . fix_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "GpsFixType" , value : tmp as u32 }) ? ; __struct . satellites_visible = buf . get_u8 () ; __struct . dgps_numch = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_i32_le (self . alt) ; __tmp . put_u32_le (self . dgps_age) ; __tmp . put_u16_le (self . eph) ; __tmp . put_u16_le (self . epv) ; __tmp . put_u16_le (self . vel) ; __tmp . put_u16_le (self . cog) ; __tmp . put_u8 (self . fix_type as u8) ; __tmp . put_u8 (self . satellites_visible) ; __tmp . put_u8 (self . dgps_numch) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HIGH_LATENCY_DATA { pub custom_mode : u32 , pub latitude : i32 , pub longitude : i32 , pub roll : i16 , pub pitch : i16 , pub heading : u16 , pub heading_sp : i16 , pub altitude_amsl : i16 , pub altitude_sp : i16 , pub wp_distance : u16 , pub base_mode : MavModeFlag , pub landed_state : MavLandedState , pub throttle : i8 , pub airspeed : u8 , pub airspeed_sp : u8 , pub groundspeed : u8 , pub climb_rate : i8 , pub gps_nsat : u8 , pub gps_fix_type : GpsFixType , pub battery_remaining : u8 , pub temperature : i8 , pub temperature_air : i8 , pub failsafe : u8 , pub wp_num : u8 , } impl HIGH_LATENCY_DATA { pub const ENCODED_LEN : usize = 40usize ; pub const DEFAULT : Self = Self { custom_mode : 0_u32 , latitude : 0_i32 , longitude : 0_i32 , roll : 0_i16 , pitch : 0_i16 , heading : 0_u16 , heading_sp : 0_i16 , altitude_amsl : 0_i16 , altitude_sp : 0_i16 , wp_distance : 0_u16 , base_mode : MavModeFlag :: DEFAULT , landed_state : MavLandedState :: DEFAULT , throttle : 0_i8 , airspeed : 0_u8 , airspeed_sp : 0_u8 , groundspeed : 0_u8 , climb_rate : 0_i8 , gps_nsat : 0_u8 , gps_fix_type : GpsFixType :: DEFAULT , battery_remaining : 0_u8 , temperature : 0_i8 , temperature_air : 0_i8 , failsafe : 0_u8 , wp_num : 0_u8 , } ; } impl Default for HIGH_LATENCY_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for HIGH_LATENCY_DATA { type Message = MavMessage ; const ID : u32 = 234u32 ; const NAME : & 'static str = "HIGH_LATENCY" ; const EXTRA_CRC : u8 = 150u8 ; const ENCODED_LEN : usize = 40usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . custom_mode = buf . get_u32_le () ; __struct . latitude = buf . get_i32_le () ; __struct . longitude = buf . get_i32_le () ; __struct . roll = buf . get_i16_le () ; __struct . pitch = buf . get_i16_le () ; __struct . heading = buf . get_u16_le () ; __struct . heading_sp = buf . get_i16_le () ; __struct . altitude_amsl = buf . get_i16_le () ; __struct . altitude_sp = buf . get_i16_le () ; __struct . wp_distance = buf . get_u16_le () ; let tmp = buf . get_u8 () ; __struct . base_mode = MavModeFlag :: from_bits (tmp & MavModeFlag :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "MavModeFlag" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . landed_state = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavLandedState" , value : tmp as u32 }) ? ; __struct . throttle = buf . get_i8 () ; __struct . airspeed = buf . get_u8 () ; __struct . airspeed_sp = buf . get_u8 () ; __struct . groundspeed = buf . get_u8 () ; __struct . climb_rate = buf . get_i8 () ; __struct . gps_nsat = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . gps_fix_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "GpsFixType" , value : tmp as u32 }) ? ; __struct . battery_remaining = buf . get_u8 () ; __struct . temperature = buf . get_i8 () ; __struct . temperature_air = buf . get_i8 () ; __struct . failsafe = buf . get_u8 () ; __struct . wp_num = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . custom_mode) ; __tmp . put_i32_le (self . latitude) ; __tmp . put_i32_le (self . longitude) ; __tmp . put_i16_le (self . roll) ; __tmp . put_i16_le (self . pitch) ; __tmp . put_u16_le (self . heading) ; __tmp . put_i16_le (self . heading_sp) ; __tmp . put_i16_le (self . altitude_amsl) ; __tmp . put_i16_le (self . altitude_sp) ; __tmp . put_u16_le (self . wp_distance) ; __tmp . put_u8 (self . base_mode . bits ()) ; __tmp . put_u8 (self . landed_state as u8) ; __tmp . put_i8 (self . throttle) ; __tmp . put_u8 (self . airspeed) ; __tmp . put_u8 (self . airspeed_sp) ; __tmp . put_u8 (self . groundspeed) ; __tmp . put_i8 (self . climb_rate) ; __tmp . put_u8 (self . gps_nsat) ; __tmp . put_u8 (self . gps_fix_type as u8) ; __tmp . put_u8 (self . battery_remaining) ; __tmp . put_i8 (self . temperature) ; __tmp . put_i8 (self . temperature_air) ; __tmp . put_u8 (self . failsafe) ; __tmp . put_u8 (self . wp_num) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct RADIO_STATUS_DATA { pub rxerrors : u16 , pub fixed : u16 , pub rssi : u8 , pub remrssi : u8 , pub txbuf : u8 , pub noise : u8 , pub remnoise : u8 , } impl RADIO_STATUS_DATA { pub const ENCODED_LEN : usize = 9usize ; pub const DEFAULT : Self = Self { rxerrors : 0_u16 , fixed : 0_u16 , rssi : 0_u8 , remrssi : 0_u8 , txbuf : 0_u8 , noise : 0_u8 , remnoise : 0_u8 , } ; } impl Default for RADIO_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for RADIO_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 109u32 ; const NAME : & 'static str = "RADIO_STATUS" ; const EXTRA_CRC : u8 = 185u8 ; const ENCODED_LEN : usize = 9usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . rxerrors = buf . get_u16_le () ; __struct . fixed = buf . get_u16_le () ; __struct . rssi = buf . get_u8 () ; __struct . remrssi = buf . get_u8 () ; __struct . txbuf = buf . get_u8 () ; __struct . noise = buf . get_u8 () ; __struct . remnoise = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . rxerrors) ; __tmp . put_u16_le (self . fixed) ; __tmp . put_u8 (self . rssi) ; __tmp . put_u8 (self . remrssi) ; __tmp . put_u8 (self . txbuf) ; __tmp . put_u8 (self . noise) ; __tmp . put_u8 (self . remnoise) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct RAW_PRESSURE_DATA { pub time_usec : u64 , pub press_abs : i16 , pub press_diff1 : i16 , pub press_diff2 : i16 , pub temperature : i16 , } impl RAW_PRESSURE_DATA { pub const ENCODED_LEN : usize = 16usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , press_abs : 0_i16 , press_diff1 : 0_i16 , press_diff2 : 0_i16 , temperature : 0_i16 , } ; } impl Default for RAW_PRESSURE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for RAW_PRESSURE_DATA { type Message = MavMessage ; const ID : u32 = 28u32 ; const NAME : & 'static str = "RAW_PRESSURE" ; const EXTRA_CRC : u8 = 67u8 ; const ENCODED_LEN : usize = 16usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . press_abs = buf . get_i16_le () ; __struct . press_diff1 = buf . get_i16_le () ; __struct . press_diff2 = buf . get_i16_le () ; __struct . temperature = buf . get_i16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_i16_le (self . press_abs) ; __tmp . put_i16_le (self . press_diff1) ; __tmp . put_i16_le (self . press_diff2) ; __tmp . put_i16_le (self . temperature) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ALTITUDE_DATA { pub time_usec : u64 , pub altitude_monotonic : f32 , pub altitude_amsl : f32 , pub altitude_local : f32 , pub altitude_relative : f32 , pub altitude_terrain : f32 , pub bottom_clearance : f32 , } impl ALTITUDE_DATA { pub const ENCODED_LEN : usize = 32usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , altitude_monotonic : 0.0_f32 , altitude_amsl : 0.0_f32 , altitude_local : 0.0_f32 , altitude_relative : 0.0_f32 , altitude_terrain : 0.0_f32 , bottom_clearance : 0.0_f32 , } ; } impl Default for ALTITUDE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ALTITUDE_DATA { type Message = MavMessage ; const ID : u32 = 141u32 ; const NAME : & 'static str = "ALTITUDE" ; const EXTRA_CRC : u8 = 47u8 ; const ENCODED_LEN : usize = 32usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . altitude_monotonic = buf . get_f32_le () ; __struct . altitude_amsl = buf . get_f32_le () ; __struct . altitude_local = buf . get_f32_le () ; __struct . altitude_relative = buf . get_f32_le () ; __struct . altitude_terrain = buf . get_f32_le () ; __struct . bottom_clearance = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . altitude_monotonic) ; __tmp . put_f32_le (self . altitude_amsl) ; __tmp . put_f32_le (self . altitude_local) ; __tmp . put_f32_le (self . altitude_relative) ; __tmp . put_f32_le (self . altitude_terrain) ; __tmp . put_f32_le (self . bottom_clearance) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SET_POSITION_TARGET_LOCAL_NED_DATA { pub time_boot_ms : u32 , pub x : f32 , pub y : f32 , pub z : f32 , pub vx : f32 , pub vy : f32 , pub vz : f32 , pub afx : f32 , pub afy : f32 , pub afz : f32 , pub yaw : f32 , pub yaw_rate : f32 , pub type_mask : PositionTargetTypemask , pub target_system : u8 , pub target_component : u8 , pub coordinate_frame : MavFrame , } impl SET_POSITION_TARGET_LOCAL_NED_DATA { pub const ENCODED_LEN : usize = 53usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , x : 0.0_f32 , y : 0.0_f32 , z : 0.0_f32 , vx : 0.0_f32 , vy : 0.0_f32 , vz : 0.0_f32 , afx : 0.0_f32 , afy : 0.0_f32 , afz : 0.0_f32 , yaw : 0.0_f32 , yaw_rate : 0.0_f32 , type_mask : PositionTargetTypemask :: DEFAULT , target_system : 0_u8 , target_component : 0_u8 , coordinate_frame : MavFrame :: DEFAULT , } ; } impl Default for SET_POSITION_TARGET_LOCAL_NED_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SET_POSITION_TARGET_LOCAL_NED_DATA { type Message = MavMessage ; const ID : u32 = 84u32 ; const NAME : & 'static str = "SET_POSITION_TARGET_LOCAL_NED" ; const EXTRA_CRC : u8 = 143u8 ; const ENCODED_LEN : usize = 53usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . x = buf . get_f32_le () ; __struct . y = buf . get_f32_le () ; __struct . z = buf . get_f32_le () ; __struct . vx = buf . get_f32_le () ; __struct . vy = buf . get_f32_le () ; __struct . vz = buf . get_f32_le () ; __struct . afx = buf . get_f32_le () ; __struct . afy = buf . get_f32_le () ; __struct . afz = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; __struct . yaw_rate = buf . get_f32_le () ; let tmp = buf . get_u16_le () ; __struct . type_mask = PositionTargetTypemask :: from_bits (tmp & PositionTargetTypemask :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "PositionTargetTypemask" , value : tmp as u32 }) ? ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . coordinate_frame = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavFrame" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; __tmp . put_f32_le (self . vx) ; __tmp . put_f32_le (self . vy) ; __tmp . put_f32_le (self . vz) ; __tmp . put_f32_le (self . afx) ; __tmp . put_f32_le (self . afy) ; __tmp . put_f32_le (self . afz) ; __tmp . put_f32_le (self . yaw) ; __tmp . put_f32_le (self . yaw_rate) ; __tmp . put_u16_le (self . type_mask . bits ()) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . coordinate_frame as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA { pub flags : GimbalManagerFlags , pub pitch : f32 , pub yaw : f32 , pub pitch_rate : f32 , pub yaw_rate : f32 , pub target_system : u8 , pub target_component : u8 , pub gimbal_device_id : u8 , } impl GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA { pub const ENCODED_LEN : usize = 23usize ; pub const DEFAULT : Self = Self { flags : GimbalManagerFlags :: DEFAULT , pitch : 0.0_f32 , yaw : 0.0_f32 , pitch_rate : 0.0_f32 , yaw_rate : 0.0_f32 , target_system : 0_u8 , target_component : 0_u8 , gimbal_device_id : 0_u8 , } ; } impl Default for GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA { type Message = MavMessage ; const ID : u32 = 288u32 ; const NAME : & 'static str = "GIMBAL_MANAGER_SET_MANUAL_CONTROL" ; const EXTRA_CRC : u8 = 20u8 ; const ENCODED_LEN : usize = 23usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u32_le () ; __struct . flags = FromPrimitive :: from_u32 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "GimbalManagerFlags" , value : tmp as u32 }) ? ; __struct . pitch = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; __struct . pitch_rate = buf . get_f32_le () ; __struct . yaw_rate = buf . get_f32_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . gimbal_device_id = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . flags as u32) ; __tmp . put_f32_le (self . pitch) ; __tmp . put_f32_le (self . yaw) ; __tmp . put_f32_le (self . pitch_rate) ; __tmp . put_f32_le (self . yaw_rate) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . gimbal_device_id) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SCALED_IMU2_DATA { pub time_boot_ms : u32 , pub xacc : i16 , pub yacc : i16 , pub zacc : i16 , pub xgyro : i16 , pub ygyro : i16 , pub zgyro : i16 , pub xmag : i16 , pub ymag : i16 , pub zmag : i16 , } impl SCALED_IMU2_DATA { pub const ENCODED_LEN : usize = 22usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , xacc : 0_i16 , yacc : 0_i16 , zacc : 0_i16 , xgyro : 0_i16 , ygyro : 0_i16 , zgyro : 0_i16 , xmag : 0_i16 , ymag : 0_i16 , zmag : 0_i16 , } ; } impl Default for SCALED_IMU2_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SCALED_IMU2_DATA { type Message = MavMessage ; const ID : u32 = 116u32 ; const NAME : & 'static str = "SCALED_IMU2" ; const EXTRA_CRC : u8 = 76u8 ; const ENCODED_LEN : usize = 22usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . xacc = buf . get_i16_le () ; __struct . yacc = buf . get_i16_le () ; __struct . zacc = buf . get_i16_le () ; __struct . xgyro = buf . get_i16_le () ; __struct . ygyro = buf . get_i16_le () ; __struct . zgyro = buf . get_i16_le () ; __struct . xmag = buf . get_i16_le () ; __struct . ymag = buf . get_i16_le () ; __struct . zmag = buf . get_i16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_i16_le (self . xacc) ; __tmp . put_i16_le (self . yacc) ; __tmp . put_i16_le (self . zacc) ; __tmp . put_i16_le (self . xgyro) ; __tmp . put_i16_le (self . ygyro) ; __tmp . put_i16_le (self . zgyro) ; __tmp . put_i16_le (self . xmag) ; __tmp . put_i16_le (self . ymag) ; __tmp . put_i16_le (self . zmag) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GPS_RAW_INT_DATA { pub time_usec : u64 , pub lat : i32 , pub lon : i32 , pub alt : i32 , pub eph : u16 , pub epv : u16 , pub vel : u16 , pub cog : u16 , pub fix_type : GpsFixType , pub satellites_visible : u8 , } impl GPS_RAW_INT_DATA { pub const ENCODED_LEN : usize = 30usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , lat : 0_i32 , lon : 0_i32 , alt : 0_i32 , eph : 0_u16 , epv : 0_u16 , vel : 0_u16 , cog : 0_u16 , fix_type : GpsFixType :: DEFAULT , satellites_visible : 0_u8 , } ; } impl Default for GPS_RAW_INT_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GPS_RAW_INT_DATA { type Message = MavMessage ; const ID : u32 = 24u32 ; const NAME : & 'static str = "GPS_RAW_INT" ; const EXTRA_CRC : u8 = 24u8 ; const ENCODED_LEN : usize = 30usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . lat = buf . get_i32_le () ; __struct . lon = buf . get_i32_le () ; __struct . alt = buf . get_i32_le () ; __struct . eph = buf . get_u16_le () ; __struct . epv = buf . get_u16_le () ; __struct . vel = buf . get_u16_le () ; __struct . cog = buf . get_u16_le () ; let tmp = buf . get_u8 () ; __struct . fix_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "GpsFixType" , value : tmp as u32 }) ? ; __struct . satellites_visible = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_i32_le (self . lat) ; __tmp . put_i32_le (self . lon) ; __tmp . put_i32_le (self . alt) ; __tmp . put_u16_le (self . eph) ; __tmp . put_u16_le (self . epv) ; __tmp . put_u16_le (self . vel) ; __tmp . put_u16_le (self . cog) ; __tmp . put_u8 (self . fix_type as u8) ; __tmp . put_u8 (self . satellites_visible) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MISSION_CLEAR_ALL_DATA { pub target_system : u8 , pub target_component : u8 , } impl MISSION_CLEAR_ALL_DATA { pub const ENCODED_LEN : usize = 2usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for MISSION_CLEAR_ALL_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MISSION_CLEAR_ALL_DATA { type Message = MavMessage ; const ID : u32 = 45u32 ; const NAME : & 'static str = "MISSION_CLEAR_ALL" ; const EXTRA_CRC : u8 = 232u8 ; const ENCODED_LEN : usize = 2usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SCALED_IMU3_DATA { pub time_boot_ms : u32 , pub xacc : i16 , pub yacc : i16 , pub zacc : i16 , pub xgyro : i16 , pub ygyro : i16 , pub zgyro : i16 , pub xmag : i16 , pub ymag : i16 , pub zmag : i16 , } impl SCALED_IMU3_DATA { pub const ENCODED_LEN : usize = 22usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , xacc : 0_i16 , yacc : 0_i16 , zacc : 0_i16 , xgyro : 0_i16 , ygyro : 0_i16 , zgyro : 0_i16 , xmag : 0_i16 , ymag : 0_i16 , zmag : 0_i16 , } ; } impl Default for SCALED_IMU3_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SCALED_IMU3_DATA { type Message = MavMessage ; const ID : u32 = 129u32 ; const NAME : & 'static str = "SCALED_IMU3" ; const EXTRA_CRC : u8 = 46u8 ; const ENCODED_LEN : usize = 22usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . xacc = buf . get_i16_le () ; __struct . yacc = buf . get_i16_le () ; __struct . zacc = buf . get_i16_le () ; __struct . xgyro = buf . get_i16_le () ; __struct . ygyro = buf . get_i16_le () ; __struct . zgyro = buf . get_i16_le () ; __struct . xmag = buf . get_i16_le () ; __struct . ymag = buf . get_i16_le () ; __struct . zmag = buf . get_i16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_i16_le (self . xacc) ; __tmp . put_i16_le (self . yacc) ; __tmp . put_i16_le (self . zacc) ; __tmp . put_i16_le (self . xgyro) ; __tmp . put_i16_le (self . ygyro) ; __tmp . put_i16_le (self . zgyro) ; __tmp . put_i16_le (self . xmag) ; __tmp . put_i16_le (self . ymag) ; __tmp . put_i16_le (self . zmag) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct OPEN_DRONE_ID_LOCATION_DATA { pub latitude : i32 , pub longitude : i32 , pub altitude_barometric : f32 , pub altitude_geodetic : f32 , pub height : f32 , pub timestamp : f32 , pub direction : u16 , pub speed_horizontal : u16 , pub speed_vertical : i16 , pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub id_or_mac : [u8 ; 20] , pub status : MavOdidStatus , pub height_reference : MavOdidHeightRef , pub horizontal_accuracy : MavOdidHorAcc , pub vertical_accuracy : MavOdidVerAcc , pub barometer_accuracy : MavOdidVerAcc , pub speed_accuracy : MavOdidSpeedAcc , pub timestamp_accuracy : MavOdidTimeAcc , } impl OPEN_DRONE_ID_LOCATION_DATA { pub const ENCODED_LEN : usize = 59usize ; pub const DEFAULT : Self = Self { latitude : 0_i32 , longitude : 0_i32 , altitude_barometric : 0.0_f32 , altitude_geodetic : 0.0_f32 , height : 0.0_f32 , timestamp : 0.0_f32 , direction : 0_u16 , speed_horizontal : 0_u16 , speed_vertical : 0_i16 , target_system : 0_u8 , target_component : 0_u8 , id_or_mac : [0_u8 ; 20usize] , status : MavOdidStatus :: DEFAULT , height_reference : MavOdidHeightRef :: DEFAULT , horizontal_accuracy : MavOdidHorAcc :: DEFAULT , vertical_accuracy : MavOdidVerAcc :: DEFAULT , barometer_accuracy : MavOdidVerAcc :: DEFAULT , speed_accuracy : MavOdidSpeedAcc :: DEFAULT , timestamp_accuracy : MavOdidTimeAcc :: DEFAULT , } ; } impl Default for OPEN_DRONE_ID_LOCATION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for OPEN_DRONE_ID_LOCATION_DATA { type Message = MavMessage ; const ID : u32 = 12901u32 ; const NAME : & 'static str = "OPEN_DRONE_ID_LOCATION" ; const EXTRA_CRC : u8 = 254u8 ; const ENCODED_LEN : usize = 59usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . latitude = buf . get_i32_le () ; __struct . longitude = buf . get_i32_le () ; __struct . altitude_barometric = buf . get_f32_le () ; __struct . altitude_geodetic = buf . get_f32_le () ; __struct . height = buf . get_f32_le () ; __struct . timestamp = buf . get_f32_le () ; __struct . direction = buf . get_u16_le () ; __struct . speed_horizontal = buf . get_u16_le () ; __struct . speed_vertical = buf . get_i16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . id_or_mac { let val = buf . get_u8 () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . status = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidStatus" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . height_reference = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidHeightRef" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . horizontal_accuracy = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidHorAcc" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . vertical_accuracy = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidVerAcc" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . barometer_accuracy = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidVerAcc" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . speed_accuracy = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidSpeedAcc" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . timestamp_accuracy = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidTimeAcc" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . latitude) ; __tmp . put_i32_le (self . longitude) ; __tmp . put_f32_le (self . altitude_barometric) ; __tmp . put_f32_le (self . altitude_geodetic) ; __tmp . put_f32_le (self . height) ; __tmp . put_f32_le (self . timestamp) ; __tmp . put_u16_le (self . direction) ; __tmp . put_u16_le (self . speed_horizontal) ; __tmp . put_i16_le (self . speed_vertical) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . id_or_mac { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . status as u8) ; __tmp . put_u8 (self . height_reference as u8) ; __tmp . put_u8 (self . horizontal_accuracy as u8) ; __tmp . put_u8 (self . vertical_accuracy as u8) ; __tmp . put_u8 (self . barometer_accuracy as u8) ; __tmp . put_u8 (self . speed_accuracy as u8) ; __tmp . put_u8 (self . timestamp_accuracy as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GPS_INJECT_DATA_DATA { pub target_system : u8 , pub target_component : u8 , pub len : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub data : [u8 ; 110] , } impl GPS_INJECT_DATA_DATA { pub const ENCODED_LEN : usize = 113usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , len : 0_u8 , data : [0_u8 ; 110usize] , } ; } impl Default for GPS_INJECT_DATA_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GPS_INJECT_DATA_DATA { type Message = MavMessage ; const ID : u32 = 123u32 ; const NAME : & 'static str = "GPS_INJECT_DATA" ; const EXTRA_CRC : u8 = 250u8 ; const ENCODED_LEN : usize = 113usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . len = buf . get_u8 () ; for v in & mut __struct . data { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . len) ; for val in & self . data { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct FILE_TRANSFER_PROTOCOL_DATA { pub target_network : u8 , pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub payload : [u8 ; 251] , } impl FILE_TRANSFER_PROTOCOL_DATA { pub const ENCODED_LEN : usize = 254usize ; pub const DEFAULT : Self = Self { target_network : 0_u8 , target_system : 0_u8 , target_component : 0_u8 , payload : [0_u8 ; 251usize] , } ; } impl Default for FILE_TRANSFER_PROTOCOL_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for FILE_TRANSFER_PROTOCOL_DATA { type Message = MavMessage ; const ID : u32 = 110u32 ; const NAME : & 'static str = "FILE_TRANSFER_PROTOCOL" ; const EXTRA_CRC : u8 = 84u8 ; const ENCODED_LEN : usize = 254usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_network = buf . get_u8 () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . payload { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_network) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . payload { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CAMERA_FOV_STATUS_DATA { pub time_boot_ms : u32 , pub lat_camera : i32 , pub lon_camera : i32 , pub alt_camera : i32 , pub lat_image : i32 , pub lon_image : i32 , pub alt_image : i32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub q : [f32 ; 4] , pub hfov : f32 , pub vfov : f32 , } impl CAMERA_FOV_STATUS_DATA { pub const ENCODED_LEN : usize = 52usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , lat_camera : 0_i32 , lon_camera : 0_i32 , alt_camera : 0_i32 , lat_image : 0_i32 , lon_image : 0_i32 , alt_image : 0_i32 , q : [0.0_f32 ; 4usize] , hfov : 0.0_f32 , vfov : 0.0_f32 , } ; } impl Default for CAMERA_FOV_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CAMERA_FOV_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 271u32 ; const NAME : & 'static str = "CAMERA_FOV_STATUS" ; const EXTRA_CRC : u8 = 22u8 ; const ENCODED_LEN : usize = 52usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . lat_camera = buf . get_i32_le () ; __struct . lon_camera = buf . get_i32_le () ; __struct . alt_camera = buf . get_i32_le () ; __struct . lat_image = buf . get_i32_le () ; __struct . lon_image = buf . get_i32_le () ; __struct . alt_image = buf . get_i32_le () ; for v in & mut __struct . q { let val = buf . get_f32_le () ; * v = val ; } __struct . hfov = buf . get_f32_le () ; __struct . vfov = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_i32_le (self . lat_camera) ; __tmp . put_i32_le (self . lon_camera) ; __tmp . put_i32_le (self . alt_camera) ; __tmp . put_i32_le (self . lat_image) ; __tmp . put_i32_le (self . lon_image) ; __tmp . put_i32_le (self . alt_image) ; for val in & self . q { __tmp . put_f32_le (* val) ; } __tmp . put_f32_le (self . hfov) ; __tmp . put_f32_le (self . vfov) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct RC_CHANNELS_OVERRIDE_DATA { pub chan1_raw : u16 , pub chan2_raw : u16 , pub chan3_raw : u16 , pub chan4_raw : u16 , pub chan5_raw : u16 , pub chan6_raw : u16 , pub chan7_raw : u16 , pub chan8_raw : u16 , pub target_system : u8 , pub target_component : u8 , } impl RC_CHANNELS_OVERRIDE_DATA { pub const ENCODED_LEN : usize = 18usize ; pub const DEFAULT : Self = Self { chan1_raw : 0_u16 , chan2_raw : 0_u16 , chan3_raw : 0_u16 , chan4_raw : 0_u16 , chan5_raw : 0_u16 , chan6_raw : 0_u16 , chan7_raw : 0_u16 , chan8_raw : 0_u16 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for RC_CHANNELS_OVERRIDE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for RC_CHANNELS_OVERRIDE_DATA { type Message = MavMessage ; const ID : u32 = 70u32 ; const NAME : & 'static str = "RC_CHANNELS_OVERRIDE" ; const EXTRA_CRC : u8 = 124u8 ; const ENCODED_LEN : usize = 18usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . chan1_raw = buf . get_u16_le () ; __struct . chan2_raw = buf . get_u16_le () ; __struct . chan3_raw = buf . get_u16_le () ; __struct . chan4_raw = buf . get_u16_le () ; __struct . chan5_raw = buf . get_u16_le () ; __struct . chan6_raw = buf . get_u16_le () ; __struct . chan7_raw = buf . get_u16_le () ; __struct . chan8_raw = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . chan1_raw) ; __tmp . put_u16_le (self . chan2_raw) ; __tmp . put_u16_le (self . chan3_raw) ; __tmp . put_u16_le (self . chan4_raw) ; __tmp . put_u16_le (self . chan5_raw) ; __tmp . put_u16_le (self . chan6_raw) ; __tmp . put_u16_le (self . chan7_raw) ; __tmp . put_u16_le (self . chan8_raw) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LANDING_TARGET_DATA { pub time_usec : u64 , pub angle_x : f32 , pub angle_y : f32 , pub distance : f32 , pub size_x : f32 , pub size_y : f32 , pub target_num : u8 , pub frame : MavFrame , } impl LANDING_TARGET_DATA { pub const ENCODED_LEN : usize = 30usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , angle_x : 0.0_f32 , angle_y : 0.0_f32 , distance : 0.0_f32 , size_x : 0.0_f32 , size_y : 0.0_f32 , target_num : 0_u8 , frame : MavFrame :: DEFAULT , } ; } impl Default for LANDING_TARGET_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for LANDING_TARGET_DATA { type Message = MavMessage ; const ID : u32 = 149u32 ; const NAME : & 'static str = "LANDING_TARGET" ; const EXTRA_CRC : u8 = 200u8 ; const ENCODED_LEN : usize = 30usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . angle_x = buf . get_f32_le () ; __struct . angle_y = buf . get_f32_le () ; __struct . distance = buf . get_f32_le () ; __struct . size_x = buf . get_f32_le () ; __struct . size_y = buf . get_f32_le () ; __struct . target_num = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . frame = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavFrame" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . angle_x) ; __tmp . put_f32_le (self . angle_y) ; __tmp . put_f32_le (self . distance) ; __tmp . put_f32_le (self . size_x) ; __tmp . put_f32_le (self . size_y) ; __tmp . put_u8 (self . target_num) ; __tmp . put_u8 (self . frame as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ISBD_LINK_STATUS_DATA { pub timestamp : u64 , pub last_heartbeat : u64 , pub failed_sessions : u16 , pub successful_sessions : u16 , pub signal_quality : u8 , pub ring_pending : u8 , pub tx_session_pending : u8 , pub rx_session_pending : u8 , } impl ISBD_LINK_STATUS_DATA { pub const ENCODED_LEN : usize = 24usize ; pub const DEFAULT : Self = Self { timestamp : 0_u64 , last_heartbeat : 0_u64 , failed_sessions : 0_u16 , successful_sessions : 0_u16 , signal_quality : 0_u8 , ring_pending : 0_u8 , tx_session_pending : 0_u8 , rx_session_pending : 0_u8 , } ; } impl Default for ISBD_LINK_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ISBD_LINK_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 335u32 ; const NAME : & 'static str = "ISBD_LINK_STATUS" ; const EXTRA_CRC : u8 = 225u8 ; const ENCODED_LEN : usize = 24usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . timestamp = buf . get_u64_le () ; __struct . last_heartbeat = buf . get_u64_le () ; __struct . failed_sessions = buf . get_u16_le () ; __struct . successful_sessions = buf . get_u16_le () ; __struct . signal_quality = buf . get_u8 () ; __struct . ring_pending = buf . get_u8 () ; __struct . tx_session_pending = buf . get_u8 () ; __struct . rx_session_pending = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . timestamp) ; __tmp . put_u64_le (self . last_heartbeat) ; __tmp . put_u16_le (self . failed_sessions) ; __tmp . put_u16_le (self . successful_sessions) ; __tmp . put_u8 (self . signal_quality) ; __tmp . put_u8 (self . ring_pending) ; __tmp . put_u8 (self . tx_session_pending) ; __tmp . put_u8 (self . rx_session_pending) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GIMBAL_DEVICE_INFORMATION_DATA { pub uid : u64 , pub time_boot_ms : u32 , pub firmware_version : u32 , pub hardware_version : u32 , pub roll_min : f32 , pub roll_max : f32 , pub pitch_min : f32 , pub pitch_max : f32 , pub yaw_min : f32 , pub yaw_max : f32 , pub cap_flags : GimbalDeviceCapFlags , pub custom_cap_flags : u16 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub vendor_name : [u8 ; 32] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub model_name : [u8 ; 32] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub custom_name : [u8 ; 32] , } impl GIMBAL_DEVICE_INFORMATION_DATA { pub const ENCODED_LEN : usize = 144usize ; pub const DEFAULT : Self = Self { uid : 0_u64 , time_boot_ms : 0_u32 , firmware_version : 0_u32 , hardware_version : 0_u32 , roll_min : 0.0_f32 , roll_max : 0.0_f32 , pitch_min : 0.0_f32 , pitch_max : 0.0_f32 , yaw_min : 0.0_f32 , yaw_max : 0.0_f32 , cap_flags : GimbalDeviceCapFlags :: DEFAULT , custom_cap_flags : 0_u16 , vendor_name : [0_u8 ; 32usize] , model_name : [0_u8 ; 32usize] , custom_name : [0_u8 ; 32usize] , } ; } impl Default for GIMBAL_DEVICE_INFORMATION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GIMBAL_DEVICE_INFORMATION_DATA { type Message = MavMessage ; const ID : u32 = 283u32 ; const NAME : & 'static str = "GIMBAL_DEVICE_INFORMATION" ; const EXTRA_CRC : u8 = 74u8 ; const ENCODED_LEN : usize = 144usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . uid = buf . get_u64_le () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . firmware_version = buf . get_u32_le () ; __struct . hardware_version = buf . get_u32_le () ; __struct . roll_min = buf . get_f32_le () ; __struct . roll_max = buf . get_f32_le () ; __struct . pitch_min = buf . get_f32_le () ; __struct . pitch_max = buf . get_f32_le () ; __struct . yaw_min = buf . get_f32_le () ; __struct . yaw_max = buf . get_f32_le () ; let tmp = buf . get_u16_le () ; __struct . cap_flags = GimbalDeviceCapFlags :: from_bits (tmp & GimbalDeviceCapFlags :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "GimbalDeviceCapFlags" , value : tmp as u32 }) ? ; __struct . custom_cap_flags = buf . get_u16_le () ; for v in & mut __struct . vendor_name { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . model_name { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . custom_name { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . uid) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_u32_le (self . firmware_version) ; __tmp . put_u32_le (self . hardware_version) ; __tmp . put_f32_le (self . roll_min) ; __tmp . put_f32_le (self . roll_max) ; __tmp . put_f32_le (self . pitch_min) ; __tmp . put_f32_le (self . pitch_max) ; __tmp . put_f32_le (self . yaw_min) ; __tmp . put_f32_le (self . yaw_max) ; __tmp . put_u16_le (self . cap_flags . bits ()) ; __tmp . put_u16_le (self . custom_cap_flags) ; for val in & self . vendor_name { __tmp . put_u8 (* val) ; } for val in & self . model_name { __tmp . put_u8 (* val) ; } for val in & self . custom_name { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SET_HOME_POSITION_DATA { pub latitude : i32 , pub longitude : i32 , pub altitude : i32 , pub x : f32 , pub y : f32 , pub z : f32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub q : [f32 ; 4] , pub approach_x : f32 , pub approach_y : f32 , pub approach_z : f32 , pub target_system : u8 , } impl SET_HOME_POSITION_DATA { pub const ENCODED_LEN : usize = 53usize ; pub const DEFAULT : Self = Self { latitude : 0_i32 , longitude : 0_i32 , altitude : 0_i32 , x : 0.0_f32 , y : 0.0_f32 , z : 0.0_f32 , q : [0.0_f32 ; 4usize] , approach_x : 0.0_f32 , approach_y : 0.0_f32 , approach_z : 0.0_f32 , target_system : 0_u8 , } ; } impl Default for SET_HOME_POSITION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SET_HOME_POSITION_DATA { type Message = MavMessage ; const ID : u32 = 243u32 ; const NAME : & 'static str = "SET_HOME_POSITION" ; const EXTRA_CRC : u8 = 85u8 ; const ENCODED_LEN : usize = 53usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . latitude = buf . get_i32_le () ; __struct . longitude = buf . get_i32_le () ; __struct . altitude = buf . get_i32_le () ; __struct . x = buf . get_f32_le () ; __struct . y = buf . get_f32_le () ; __struct . z = buf . get_f32_le () ; for v in & mut __struct . q { let val = buf . get_f32_le () ; * v = val ; } __struct . approach_x = buf . get_f32_le () ; __struct . approach_y = buf . get_f32_le () ; __struct . approach_z = buf . get_f32_le () ; __struct . target_system = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . latitude) ; __tmp . put_i32_le (self . longitude) ; __tmp . put_i32_le (self . altitude) ; __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; for val in & self . q { __tmp . put_f32_le (* val) ; } __tmp . put_f32_le (self . approach_x) ; __tmp . put_f32_le (self . approach_y) ; __tmp . put_f32_le (self . approach_z) ; __tmp . put_u8 (self . target_system) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct COMPONENT_INFORMATION_DATA { pub time_boot_ms : u32 , pub general_metadata_file_crc : u32 , pub peripherals_metadata_file_crc : u32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub general_metadata_uri : [u8 ; 100] , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub peripherals_metadata_uri : [u8 ; 100] , } impl COMPONENT_INFORMATION_DATA { pub const ENCODED_LEN : usize = 212usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , general_metadata_file_crc : 0_u32 , peripherals_metadata_file_crc : 0_u32 , general_metadata_uri : [0_u8 ; 100usize] , peripherals_metadata_uri : [0_u8 ; 100usize] , } ; } impl Default for COMPONENT_INFORMATION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for COMPONENT_INFORMATION_DATA { type Message = MavMessage ; const ID : u32 = 395u32 ; const NAME : & 'static str = "COMPONENT_INFORMATION" ; const EXTRA_CRC : u8 = 0u8 ; const ENCODED_LEN : usize = 212usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . general_metadata_file_crc = buf . get_u32_le () ; __struct . peripherals_metadata_file_crc = buf . get_u32_le () ; for v in & mut __struct . general_metadata_uri { let val = buf . get_u8 () ; * v = val ; } for v in & mut __struct . peripherals_metadata_uri { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_u32_le (self . general_metadata_file_crc) ; __tmp . put_u32_le (self . peripherals_metadata_file_crc) ; for val in & self . general_metadata_uri { __tmp . put_u8 (* val) ; } for val in & self . peripherals_metadata_uri { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct HOME_POSITION_DATA { pub latitude : i32 , pub longitude : i32 , pub altitude : i32 , pub x : f32 , pub y : f32 , pub z : f32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub q : [f32 ; 4] , pub approach_x : f32 , pub approach_y : f32 , pub approach_z : f32 , } impl HOME_POSITION_DATA { pub const ENCODED_LEN : usize = 52usize ; pub const DEFAULT : Self = Self { latitude : 0_i32 , longitude : 0_i32 , altitude : 0_i32 , x : 0.0_f32 , y : 0.0_f32 , z : 0.0_f32 , q : [0.0_f32 ; 4usize] , approach_x : 0.0_f32 , approach_y : 0.0_f32 , approach_z : 0.0_f32 , } ; } impl Default for HOME_POSITION_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for HOME_POSITION_DATA { type Message = MavMessage ; const ID : u32 = 242u32 ; const NAME : & 'static str = "HOME_POSITION" ; const EXTRA_CRC : u8 = 104u8 ; const ENCODED_LEN : usize = 52usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . latitude = buf . get_i32_le () ; __struct . longitude = buf . get_i32_le () ; __struct . altitude = buf . get_i32_le () ; __struct . x = buf . get_f32_le () ; __struct . y = buf . get_f32_le () ; __struct . z = buf . get_f32_le () ; for v in & mut __struct . q { let val = buf . get_f32_le () ; * v = val ; } __struct . approach_x = buf . get_f32_le () ; __struct . approach_y = buf . get_f32_le () ; __struct . approach_z = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . latitude) ; __tmp . put_i32_le (self . longitude) ; __tmp . put_i32_le (self . altitude) ; __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; for val in & self . q { __tmp . put_f32_le (* val) ; } __tmp . put_f32_le (self . approach_x) ; __tmp . put_f32_le (self . approach_y) ; __tmp . put_f32_le (self . approach_z) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct CAN_FILTER_MODIFY_DATA { # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub ids : [u16 ; 16] , pub target_system : u8 , pub target_component : u8 , pub bus : u8 , pub operation : CanFilterOp , pub num_ids : u8 , } impl CAN_FILTER_MODIFY_DATA { pub const ENCODED_LEN : usize = 37usize ; pub const DEFAULT : Self = Self { ids : [0_u16 ; 16usize] , target_system : 0_u8 , target_component : 0_u8 , bus : 0_u8 , operation : CanFilterOp :: DEFAULT , num_ids : 0_u8 , } ; } impl Default for CAN_FILTER_MODIFY_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for CAN_FILTER_MODIFY_DATA { type Message = MavMessage ; const ID : u32 = 388u32 ; const NAME : & 'static str = "CAN_FILTER_MODIFY" ; const EXTRA_CRC : u8 = 8u8 ; const ENCODED_LEN : usize = 37usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; for v in & mut __struct . ids { let val = buf . get_u16_le () ; * v = val ; } __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; __struct . bus = buf . get_u8 () ; let tmp = buf . get_u8 () ; __struct . operation = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "CanFilterOp" , value : tmp as u32 }) ? ; __struct . num_ids = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; for val in & self . ids { __tmp . put_u16_le (* val) ; } __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; __tmp . put_u8 (self . bus) ; __tmp . put_u8 (self . operation as u8) ; __tmp . put_u8 (self . num_ids) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct ENCAPSULATED_DATA_DATA { pub seqnr : u16 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub data : [u8 ; 253] , } impl ENCAPSULATED_DATA_DATA { pub const ENCODED_LEN : usize = 255usize ; pub const DEFAULT : Self = Self { seqnr : 0_u16 , data : [0_u8 ; 253usize] , } ; } impl Default for ENCAPSULATED_DATA_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for ENCAPSULATED_DATA_DATA { type Message = MavMessage ; const ID : u32 = 131u32 ; const NAME : & 'static str = "ENCAPSULATED_DATA" ; const EXTRA_CRC : u8 = 223u8 ; const ENCODED_LEN : usize = 255usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . seqnr = buf . get_u16_le () ; for v in & mut __struct . data { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . seqnr) ; for val in & self . data { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct GENERATOR_STATUS_DATA { pub status : MavGeneratorStatusFlag , pub battery_current : f32 , pub load_current : f32 , pub power_generated : f32 , pub bus_voltage : f32 , pub bat_current_setpoint : f32 , pub runtime : u32 , pub time_until_maintenance : i32 , pub generator_speed : u16 , pub rectifier_temperature : i16 , pub generator_temperature : i16 , } impl GENERATOR_STATUS_DATA { pub const ENCODED_LEN : usize = 42usize ; pub const DEFAULT : Self = Self { status : MavGeneratorStatusFlag :: DEFAULT , battery_current : 0.0_f32 , load_current : 0.0_f32 , power_generated : 0.0_f32 , bus_voltage : 0.0_f32 , bat_current_setpoint : 0.0_f32 , runtime : 0_u32 , time_until_maintenance : 0_i32 , generator_speed : 0_u16 , rectifier_temperature : 0_i16 , generator_temperature : 0_i16 , } ; } impl Default for GENERATOR_STATUS_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for GENERATOR_STATUS_DATA { type Message = MavMessage ; const ID : u32 = 373u32 ; const NAME : & 'static str = "GENERATOR_STATUS" ; const EXTRA_CRC : u8 = 117u8 ; const ENCODED_LEN : usize = 42usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; let tmp = buf . get_u64_le () ; __struct . status = MavGeneratorStatusFlag :: from_bits (tmp & MavGeneratorStatusFlag :: all () . bits ()) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidFlag { flag_type : "MavGeneratorStatusFlag" , value : tmp as u32 }) ? ; __struct . battery_current = buf . get_f32_le () ; __struct . load_current = buf . get_f32_le () ; __struct . power_generated = buf . get_f32_le () ; __struct . bus_voltage = buf . get_f32_le () ; __struct . bat_current_setpoint = buf . get_f32_le () ; __struct . runtime = buf . get_u32_le () ; __struct . time_until_maintenance = buf . get_i32_le () ; __struct . generator_speed = buf . get_u16_le () ; __struct . rectifier_temperature = buf . get_i16_le () ; __struct . generator_temperature = buf . get_i16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . status . bits ()) ; __tmp . put_f32_le (self . battery_current) ; __tmp . put_f32_le (self . load_current) ; __tmp . put_f32_le (self . power_generated) ; __tmp . put_f32_le (self . bus_voltage) ; __tmp . put_f32_le (self . bat_current_setpoint) ; __tmp . put_u32_le (self . runtime) ; __tmp . put_i32_le (self . time_until_maintenance) ; __tmp . put_u16_le (self . generator_speed) ; __tmp . put_i16_le (self . rectifier_temperature) ; __tmp . put_i16_le (self . generator_temperature) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct MESSAGE_INTERVAL_DATA { pub interval_us : i32 , pub message_id : u16 , } impl MESSAGE_INTERVAL_DATA { pub const ENCODED_LEN : usize = 6usize ; pub const DEFAULT : Self = Self { interval_us : 0_i32 , message_id : 0_u16 , } ; } impl Default for MESSAGE_INTERVAL_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for MESSAGE_INTERVAL_DATA { type Message = MavMessage ; const ID : u32 = 244u32 ; const NAME : & 'static str = "MESSAGE_INTERVAL" ; const EXTRA_CRC : u8 = 95u8 ; const ENCODED_LEN : usize = 6usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . interval_us = buf . get_i32_le () ; __struct . message_id = buf . get_u16_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . interval_us) ; __tmp . put_u16_le (self . message_id) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct OPEN_DRONE_ID_MESSAGE_PACK_DATA { pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub id_or_mac : [u8 ; 20] , pub single_message_size : u8 , pub msg_pack_size : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub messages : [u8 ; 225] , } impl OPEN_DRONE_ID_MESSAGE_PACK_DATA { pub const ENCODED_LEN : usize = 249usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , id_or_mac : [0_u8 ; 20usize] , single_message_size : 0_u8 , msg_pack_size : 0_u8 , messages : [0_u8 ; 225usize] , } ; } impl Default for OPEN_DRONE_ID_MESSAGE_PACK_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for OPEN_DRONE_ID_MESSAGE_PACK_DATA { type Message = MavMessage ; const ID : u32 = 12915u32 ; const NAME : & 'static str = "OPEN_DRONE_ID_MESSAGE_PACK" ; const EXTRA_CRC : u8 = 94u8 ; const ENCODED_LEN : usize = 249usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . id_or_mac { let val = buf . get_u8 () ; * v = val ; } __struct . single_message_size = buf . get_u8 () ; __struct . msg_pack_size = buf . get_u8 () ; for v in & mut __struct . messages { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . id_or_mac { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . single_message_size) ; __tmp . put_u8 (self . msg_pack_size) ; for val in & self . messages { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LOCAL_POSITION_NED_COV_DATA { pub time_usec : u64 , pub x : f32 , pub y : f32 , pub z : f32 , pub vx : f32 , pub vy : f32 , pub vz : f32 , pub ax : f32 , pub ay : f32 , pub az : f32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub covariance : [f32 ; 45] , pub estimator_type : MavEstimatorType , } impl LOCAL_POSITION_NED_COV_DATA { pub const ENCODED_LEN : usize = 225usize ; pub const DEFAULT : Self = Self { time_usec : 0_u64 , x : 0.0_f32 , y : 0.0_f32 , z : 0.0_f32 , vx : 0.0_f32 , vy : 0.0_f32 , vz : 0.0_f32 , ax : 0.0_f32 , ay : 0.0_f32 , az : 0.0_f32 , covariance : [0.0_f32 ; 45usize] , estimator_type : MavEstimatorType :: DEFAULT , } ; } impl Default for LOCAL_POSITION_NED_COV_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for LOCAL_POSITION_NED_COV_DATA { type Message = MavMessage ; const ID : u32 = 64u32 ; const NAME : & 'static str = "LOCAL_POSITION_NED_COV" ; const EXTRA_CRC : u8 = 191u8 ; const ENCODED_LEN : usize = 225usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u64_le () ; __struct . x = buf . get_f32_le () ; __struct . y = buf . get_f32_le () ; __struct . z = buf . get_f32_le () ; __struct . vx = buf . get_f32_le () ; __struct . vy = buf . get_f32_le () ; __struct . vz = buf . get_f32_le () ; __struct . ax = buf . get_f32_le () ; __struct . ay = buf . get_f32_le () ; __struct . az = buf . get_f32_le () ; for v in & mut __struct . covariance { let val = buf . get_f32_le () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . estimator_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavEstimatorType" , value : tmp as u32 }) ? ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u64_le (self . time_usec) ; __tmp . put_f32_le (self . x) ; __tmp . put_f32_le (self . y) ; __tmp . put_f32_le (self . z) ; __tmp . put_f32_le (self . vx) ; __tmp . put_f32_le (self . vy) ; __tmp . put_f32_le (self . vz) ; __tmp . put_f32_le (self . ax) ; __tmp . put_f32_le (self . ay) ; __tmp . put_f32_le (self . az) ; for val in & self . covariance { __tmp . put_f32_le (* val) ; } __tmp . put_u8 (self . estimator_type as u8) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct COMPONENT_METADATA_DATA { pub time_boot_ms : u32 , pub file_crc : u32 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub uri : [u8 ; 100] , } impl COMPONENT_METADATA_DATA { pub const ENCODED_LEN : usize = 108usize ; pub const DEFAULT : Self = Self { time_boot_ms : 0_u32 , file_crc : 0_u32 , uri : [0_u8 ; 100usize] , } ; } impl Default for COMPONENT_METADATA_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for COMPONENT_METADATA_DATA { type Message = MavMessage ; const ID : u32 = 397u32 ; const NAME : & 'static str = "COMPONENT_METADATA" ; const EXTRA_CRC : u8 = 182u8 ; const ENCODED_LEN : usize = 108usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_boot_ms = buf . get_u32_le () ; __struct . file_crc = buf . get_u32_le () ; for v in & mut __struct . uri { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_boot_ms) ; __tmp . put_u32_le (self . file_crc) ; for val in & self . uri { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SIM_STATE_DATA { pub q1 : f32 , pub q2 : f32 , pub q3 : f32 , pub q4 : f32 , pub roll : f32 , pub pitch : f32 , pub yaw : f32 , pub xacc : f32 , pub yacc : f32 , pub zacc : f32 , pub xgyro : f32 , pub ygyro : f32 , pub zgyro : f32 , pub lat : f32 , pub lon : f32 , pub alt : f32 , pub std_dev_horz : f32 , pub std_dev_vert : f32 , pub vn : f32 , pub ve : f32 , pub vd : f32 , } impl SIM_STATE_DATA { pub const ENCODED_LEN : usize = 84usize ; pub const DEFAULT : Self = Self { q1 : 0.0_f32 , q2 : 0.0_f32 , q3 : 0.0_f32 , q4 : 0.0_f32 , roll : 0.0_f32 , pitch : 0.0_f32 , yaw : 0.0_f32 , xacc : 0.0_f32 , yacc : 0.0_f32 , zacc : 0.0_f32 , xgyro : 0.0_f32 , ygyro : 0.0_f32 , zgyro : 0.0_f32 , lat : 0.0_f32 , lon : 0.0_f32 , alt : 0.0_f32 , std_dev_horz : 0.0_f32 , std_dev_vert : 0.0_f32 , vn : 0.0_f32 , ve : 0.0_f32 , vd : 0.0_f32 , } ; } impl Default for SIM_STATE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SIM_STATE_DATA { type Message = MavMessage ; const ID : u32 = 108u32 ; const NAME : & 'static str = "SIM_STATE" ; const EXTRA_CRC : u8 = 32u8 ; const ENCODED_LEN : usize = 84usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . q1 = buf . get_f32_le () ; __struct . q2 = buf . get_f32_le () ; __struct . q3 = buf . get_f32_le () ; __struct . q4 = buf . get_f32_le () ; __struct . roll = buf . get_f32_le () ; __struct . pitch = buf . get_f32_le () ; __struct . yaw = buf . get_f32_le () ; __struct . xacc = buf . get_f32_le () ; __struct . yacc = buf . get_f32_le () ; __struct . zacc = buf . get_f32_le () ; __struct . xgyro = buf . get_f32_le () ; __struct . ygyro = buf . get_f32_le () ; __struct . zgyro = buf . get_f32_le () ; __struct . lat = buf . get_f32_le () ; __struct . lon = buf . get_f32_le () ; __struct . alt = buf . get_f32_le () ; __struct . std_dev_horz = buf . get_f32_le () ; __struct . std_dev_vert = buf . get_f32_le () ; __struct . vn = buf . get_f32_le () ; __struct . ve = buf . get_f32_le () ; __struct . vd = buf . get_f32_le () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_f32_le (self . q1) ; __tmp . put_f32_le (self . q2) ; __tmp . put_f32_le (self . q3) ; __tmp . put_f32_le (self . q4) ; __tmp . put_f32_le (self . roll) ; __tmp . put_f32_le (self . pitch) ; __tmp . put_f32_le (self . yaw) ; __tmp . put_f32_le (self . xacc) ; __tmp . put_f32_le (self . yacc) ; __tmp . put_f32_le (self . zacc) ; __tmp . put_f32_le (self . xgyro) ; __tmp . put_f32_le (self . ygyro) ; __tmp . put_f32_le (self . zgyro) ; __tmp . put_f32_le (self . lat) ; __tmp . put_f32_le (self . lon) ; __tmp . put_f32_le (self . alt) ; __tmp . put_f32_le (self . std_dev_horz) ; __tmp . put_f32_le (self . std_dev_vert) ; __tmp . put_f32_le (self . vn) ; __tmp . put_f32_le (self . ve) ; __tmp . put_f32_le (self . vd) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct SERVO_OUTPUT_RAW_DATA { pub time_usec : u32 , pub servo1_raw : u16 , pub servo2_raw : u16 , pub servo3_raw : u16 , pub servo4_raw : u16 , pub servo5_raw : u16 , pub servo6_raw : u16 , pub servo7_raw : u16 , pub servo8_raw : u16 , pub port : u8 , } impl SERVO_OUTPUT_RAW_DATA { pub const ENCODED_LEN : usize = 21usize ; pub const DEFAULT : Self = Self { time_usec : 0_u32 , servo1_raw : 0_u16 , servo2_raw : 0_u16 , servo3_raw : 0_u16 , servo4_raw : 0_u16 , servo5_raw : 0_u16 , servo6_raw : 0_u16 , servo7_raw : 0_u16 , servo8_raw : 0_u16 , port : 0_u8 , } ; } impl Default for SERVO_OUTPUT_RAW_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for SERVO_OUTPUT_RAW_DATA { type Message = MavMessage ; const ID : u32 = 36u32 ; const NAME : & 'static str = "SERVO_OUTPUT_RAW" ; const EXTRA_CRC : u8 = 222u8 ; const ENCODED_LEN : usize = 21usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . time_usec = buf . get_u32_le () ; __struct . servo1_raw = buf . get_u16_le () ; __struct . servo2_raw = buf . get_u16_le () ; __struct . servo3_raw = buf . get_u16_le () ; __struct . servo4_raw = buf . get_u16_le () ; __struct . servo5_raw = buf . get_u16_le () ; __struct . servo6_raw = buf . get_u16_le () ; __struct . servo7_raw = buf . get_u16_le () ; __struct . servo8_raw = buf . get_u16_le () ; __struct . port = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u32_le (self . time_usec) ; __tmp . put_u16_le (self . servo1_raw) ; __tmp . put_u16_le (self . servo2_raw) ; __tmp . put_u16_le (self . servo3_raw) ; __tmp . put_u16_le (self . servo4_raw) ; __tmp . put_u16_le (self . servo5_raw) ; __tmp . put_u16_le (self . servo6_raw) ; __tmp . put_u16_le (self . servo7_raw) ; __tmp . put_u16_le (self . servo8_raw) ; __tmp . put_u8 (self . port) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct OPEN_DRONE_ID_BASIC_ID_DATA { pub target_system : u8 , pub target_component : u8 , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub id_or_mac : [u8 ; 20] , pub id_type : MavOdidIdType , pub ua_type : MavOdidUaType , # [cfg_attr (feature = "serde" , serde (with = "serde_arrays"))] pub uas_id : [u8 ; 20] , } impl OPEN_DRONE_ID_BASIC_ID_DATA { pub const ENCODED_LEN : usize = 44usize ; pub const DEFAULT : Self = Self { target_system : 0_u8 , target_component : 0_u8 , id_or_mac : [0_u8 ; 20usize] , id_type : MavOdidIdType :: DEFAULT , ua_type : MavOdidUaType :: DEFAULT , uas_id : [0_u8 ; 20usize] , } ; } impl Default for OPEN_DRONE_ID_BASIC_ID_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for OPEN_DRONE_ID_BASIC_ID_DATA { type Message = MavMessage ; const ID : u32 = 12900u32 ; const NAME : & 'static str = "OPEN_DRONE_ID_BASIC_ID" ; const EXTRA_CRC : u8 = 114u8 ; const ENCODED_LEN : usize = 44usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; for v in & mut __struct . id_or_mac { let val = buf . get_u8 () ; * v = val ; } let tmp = buf . get_u8 () ; __struct . id_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidIdType" , value : tmp as u32 }) ? ; let tmp = buf . get_u8 () ; __struct . ua_type = FromPrimitive :: from_u8 (tmp) . ok_or (:: mavlink_core :: error :: ParserError :: InvalidEnum { enum_type : "MavOdidUaType" , value : tmp as u32 }) ? ; for v in & mut __struct . uas_id { let val = buf . get_u8 () ; * v = val ; } Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; for val in & self . id_or_mac { __tmp . put_u8 (* val) ; } __tmp . put_u8 (self . id_type as u8) ; __tmp . put_u8 (self . ua_type as u8) ; for val in & self . uas_id { __tmp . put_u8 (* val) ; } if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct LOG_REQUEST_LIST_DATA { pub start : u16 , pub end : u16 , pub target_system : u8 , pub target_component : u8 , } impl LOG_REQUEST_LIST_DATA { pub const ENCODED_LEN : usize = 6usize ; pub const DEFAULT : Self = Self { start : 0_u16 , end : 0_u16 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for LOG_REQUEST_LIST_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for LOG_REQUEST_LIST_DATA { type Message = MavMessage ; const ID : u32 = 117u32 ; const NAME : & 'static str = "LOG_REQUEST_LIST" ; const EXTRA_CRC : u8 = 128u8 ; const ENCODED_LEN : usize = 6usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . start = buf . get_u16_le () ; __struct . end = buf . get_u16_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_u16_le (self . start) ; __tmp . put_u16_le (self . end) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Debug , Clone , PartialEq)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] pub struct OPEN_DRONE_ID_SYSTEM_UPDATE_DATA { pub operator_latitude : i32 , pub operator_longitude : i32 , pub operator_altitude_geo : f32 , pub timestamp : u32 , pub target_system : u8 , pub target_component : u8 , } impl OPEN_DRONE_ID_SYSTEM_UPDATE_DATA { pub const ENCODED_LEN : usize = 18usize ; pub const DEFAULT : Self = Self { operator_latitude : 0_i32 , operator_longitude : 0_i32 , operator_altitude_geo : 0.0_f32 , timestamp : 0_u32 , target_system : 0_u8 , target_component : 0_u8 , } ; } impl Default for OPEN_DRONE_ID_SYSTEM_UPDATE_DATA { fn default () -> Self { Self :: DEFAULT . clone () } } impl MessageData for OPEN_DRONE_ID_SYSTEM_UPDATE_DATA { type Message = MavMessage ; const ID : u32 = 12919u32 ; const NAME : & 'static str = "OPEN_DRONE_ID_SYSTEM_UPDATE" ; const EXTRA_CRC : u8 = 7u8 ; const ENCODED_LEN : usize = 18usize ; fn deser (_version : MavlinkVersion , __input : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { let avail_len = __input . len () ; let mut payload_buf = [0 ; Self :: ENCODED_LEN] ; let mut buf = if avail_len < Self :: ENCODED_LEN { payload_buf [0 .. avail_len] . copy_from_slice (__input) ; Bytes :: new (& payload_buf) } else { Bytes :: new (__input) } ; let mut __struct = Self :: default () ; __struct . operator_latitude = buf . get_i32_le () ; __struct . operator_longitude = buf . get_i32_le () ; __struct . operator_altitude_geo = buf . get_f32_le () ; __struct . timestamp = buf . get_u32_le () ; __struct . target_system = buf . get_u8 () ; __struct . target_component = buf . get_u8 () ; Ok (__struct) } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { let mut __tmp = BytesMut :: new (bytes) ; __tmp . put_i32_le (self . operator_latitude) ; __tmp . put_i32_le (self . operator_longitude) ; __tmp . put_f32_le (self . operator_altitude_geo) ; __tmp . put_u32_le (self . timestamp) ; __tmp . put_u8 (self . target_system) ; __tmp . put_u8 (self . target_component) ; if matches ! (version , MavlinkVersion :: V2) { let len = __tmp . len () ; :: mavlink_core :: utils :: remove_trailing_zeroes (& bytes [.. len]) } else { __tmp . len () } } } # [derive (Clone , PartialEq , Debug)] # [cfg_attr (feature = "serde" , derive (Serialize , Deserialize))] # [cfg_attr (feature = "serde" , serde (tag = "type"))] # [repr (u32)] pub enum MavMessage { UAVIONIX_ADSB_OUT_CFG (UAVIONIX_ADSB_OUT_CFG_DATA) , ADSB_VEHICLE (ADSB_VEHICLE_DATA) , MISSION_ITEM (MISSION_ITEM_DATA) , CAMERA_TRIGGER (CAMERA_TRIGGER_DATA) , ONBOARD_COMPUTER_STATUS (ONBOARD_COMPUTER_STATUS_DATA) , ATTITUDE_TARGET (ATTITUDE_TARGET_DATA) , HIGH_LATENCY2 (HIGH_LATENCY2_DATA) , DEBUG_VECT (DEBUG_VECT_DATA) , LOG_REQUEST_END (LOG_REQUEST_END_DATA) , NAV_CONTROLLER_OUTPUT (NAV_CONTROLLER_OUTPUT_DATA) , UTM_GLOBAL_POSITION (UTM_GLOBAL_POSITION_DATA) , GPS_INPUT (GPS_INPUT_DATA) , UAVCAN_NODE_STATUS (UAVCAN_NODE_STATUS_DATA) , LOGGING_DATA_ACKED (LOGGING_DATA_ACKED_DATA) , RAW_RPM (RAW_RPM_DATA) , MISSION_REQUEST (MISSION_REQUEST_DATA) , HIL_ACTUATOR_CONTROLS (HIL_ACTUATOR_CONTROLS_DATA) , PARAM_REQUEST_LIST (PARAM_REQUEST_LIST_DATA) , MISSION_ITEM_INT (MISSION_ITEM_INT_DATA) , LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET (LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA) , EFI_STATUS (EFI_STATUS_DATA) , MISSION_ITEM_REACHED (MISSION_ITEM_REACHED_DATA) , REQUEST_DATA_STREAM (REQUEST_DATA_STREAM_DATA) , UAVIONIX_ADSB_OUT_DYNAMIC (UAVIONIX_ADSB_OUT_DYNAMIC_DATA) , CAMERA_CAPTURE_STATUS (CAMERA_CAPTURE_STATUS_DATA) , MANUAL_CONTROL (MANUAL_CONTROL_DATA) , GIMBAL_MANAGER_SET_PITCHYAW (GIMBAL_MANAGER_SET_PITCHYAW_DATA) , GPS_GLOBAL_ORIGIN (GPS_GLOBAL_ORIGIN_DATA) , HIL_CONTROLS (HIL_CONTROLS_DATA) , OPTICAL_FLOW (OPTICAL_FLOW_DATA) , OPEN_DRONE_ID_SELF_ID (OPEN_DRONE_ID_SELF_ID_DATA) , TIME_ESTIMATE_TO_TARGET (TIME_ESTIMATE_TO_TARGET_DATA) , PARAM_VALUE (PARAM_VALUE_DATA) , DEBUG_FLOAT_ARRAY (DEBUG_FLOAT_ARRAY_DATA) , AIS_VESSEL (AIS_VESSEL_DATA) , ATTITUDE_QUATERNION_COV (ATTITUDE_QUATERNION_COV_DATA) , GLOBAL_POSITION_INT (GLOBAL_POSITION_INT_DATA) , LOG_ENTRY (LOG_ENTRY_DATA) , OBSTACLE_DISTANCE (OBSTACLE_DISTANCE_DATA) , MISSION_COUNT (MISSION_COUNT_DATA) , FENCE_STATUS (FENCE_STATUS_DATA) , EVENT (EVENT_DATA) , HIL_SENSOR (HIL_SENSOR_DATA) , RAW_IMU (RAW_IMU_DATA) , V2_EXTENSION (V2_EXTENSION_DATA) , SMART_BATTERY_INFO (SMART_BATTERY_INFO_DATA) , PARAM_EXT_SET (PARAM_EXT_SET_DATA) , TERRAIN_CHECK (TERRAIN_CHECK_DATA) , TRAJECTORY_REPRESENTATION_WAYPOINTS (TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA) , CAMERA_IMAGE_CAPTURED (CAMERA_IMAGE_CAPTURED_DATA) , HEARTBEAT (HEARTBEAT_DATA) , LOG_ERASE (LOG_ERASE_DATA) , MANUAL_SETPOINT (MANUAL_SETPOINT_DATA) , SYSTEM_TIME (SYSTEM_TIME_DATA) , HIL_GPS (HIL_GPS_DATA) , ESC_STATUS (ESC_STATUS_DATA) , CAMERA_TRACKING_GEO_STATUS (CAMERA_TRACKING_GEO_STATUS_DATA) , COMMAND_INT (COMMAND_INT_DATA) , HIL_RC_INPUTS_RAW (HIL_RC_INPUTS_RAW_DATA) , COMMAND_CANCEL (COMMAND_CANCEL_DATA) , TRAJECTORY_REPRESENTATION_BEZIER (TRAJECTORY_REPRESENTATION_BEZIER_DATA) , MISSION_CURRENT (MISSION_CURRENT_DATA) , UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT (UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA) , FLIGHT_INFORMATION (FLIGHT_INFORMATION_DATA) , SCALED_PRESSURE3 (SCALED_PRESSURE3_DATA) , LOGGING_DATA (LOGGING_DATA_DATA) , ESTIMATOR_STATUS (ESTIMATOR_STATUS_DATA) , SET_GPS_GLOBAL_ORIGIN (SET_GPS_GLOBAL_ORIGIN_DATA) , DEBUG (DEBUG_DATA) , LOG_DATA (LOG_DATA_DATA) , LOCAL_POSITION_NED (LOCAL_POSITION_NED_DATA) , CANFD_FRAME (CANFD_FRAME_DATA) , MISSION_REQUEST_INT (MISSION_REQUEST_INT_DATA) , COMMAND_LONG (COMMAND_LONG_DATA) , HIL_STATE_QUATERNION (HIL_STATE_QUATERNION_DATA) , RC_CHANNELS_RAW (RC_CHANNELS_RAW_DATA) , DISTANCE_SENSOR (DISTANCE_SENSOR_DATA) , PARAM_EXT_REQUEST_LIST (PARAM_EXT_REQUEST_LIST_DATA) , AUTH_KEY (AUTH_KEY_DATA) , MISSION_ACK (MISSION_ACK_DATA) , RESOURCE_REQUEST (RESOURCE_REQUEST_DATA) , SAFETY_ALLOWED_AREA (SAFETY_ALLOWED_AREA_DATA) , CAMERA_SETTINGS (CAMERA_SETTINGS_DATA) , GIMBAL_MANAGER_SET_ATTITUDE (GIMBAL_MANAGER_SET_ATTITUDE_DATA) , GPS_RTK (GPS_RTK_DATA) , PROTOCOL_VERSION (PROTOCOL_VERSION_DATA) , TERRAIN_REQUEST (TERRAIN_REQUEST_DATA) , POSITION_TARGET_LOCAL_NED (POSITION_TARGET_LOCAL_NED_DATA) , WIND_COV (WIND_COV_DATA) , COLLISION (COLLISION_DATA) , CELLULAR_CONFIG (CELLULAR_CONFIG_DATA) , CHANGE_OPERATOR_CONTROL_ACK (CHANGE_OPERATOR_CONTROL_ACK_DATA) , CONTROL_SYSTEM_STATE (CONTROL_SYSTEM_STATE_DATA) , RC_CHANNELS_SCALED (RC_CHANNELS_SCALED_DATA) , CAN_FRAME (CAN_FRAME_DATA) , VICON_POSITION_ESTIMATE (VICON_POSITION_ESTIMATE_DATA) , GIMBAL_MANAGER_STATUS (GIMBAL_MANAGER_STATUS_DATA) , SET_MODE (SET_MODE_DATA) , TERRAIN_DATA (TERRAIN_DATA_DATA) , CHANGE_OPERATOR_CONTROL (CHANGE_OPERATOR_CONTROL_DATA) , PARAM_MAP_RC (PARAM_MAP_RC_DATA) , VIBRATION (VIBRATION_DATA) , VISION_POSITION_ESTIMATE (VISION_POSITION_ESTIMATE_DATA) , GPS2_RTK (GPS2_RTK_DATA) , PLAY_TUNE_V2 (PLAY_TUNE_V2_DATA) , CELLULAR_STATUS (CELLULAR_STATUS_DATA) , OPEN_DRONE_ID_AUTHENTICATION (OPEN_DRONE_ID_AUTHENTICATION_DATA) , RESPONSE_EVENT_ERROR (RESPONSE_EVENT_ERROR_DATA) , SCALED_PRESSURE2 (SCALED_PRESSURE2_DATA) , NAMED_VALUE_FLOAT (NAMED_VALUE_FLOAT_DATA) , ATTITUDE_QUATERNION (ATTITUDE_QUATERNION_DATA) , TIMESYNC (TIMESYNC_DATA) , AUTOPILOT_VERSION (AUTOPILOT_VERSION_DATA) , MISSION_REQUEST_PARTIAL_LIST (MISSION_REQUEST_PARTIAL_LIST_DATA) , VISION_SPEED_ESTIMATE (VISION_SPEED_ESTIMATE_DATA) , SCALED_PRESSURE (SCALED_PRESSURE_DATA) , PARAM_REQUEST_READ (PARAM_REQUEST_READ_DATA) , PARAM_EXT_ACK (PARAM_EXT_ACK_DATA) , WIFI_CONFIG_AP (WIFI_CONFIG_AP_DATA) , EXTENDED_SYS_STATE (EXTENDED_SYS_STATE_DATA) , OPEN_DRONE_ID_OPERATOR_ID (OPEN_DRONE_ID_OPERATOR_ID_DATA) , GIMBAL_DEVICE_SET_ATTITUDE (GIMBAL_DEVICE_SET_ATTITUDE_DATA) , VIDEO_STREAM_STATUS (VIDEO_STREAM_STATUS_DATA) , UAVCAN_NODE_INFO (UAVCAN_NODE_INFO_DATA) , SAFETY_SET_ALLOWED_AREA (SAFETY_SET_ALLOWED_AREA_DATA) , GLOBAL_POSITION_INT_COV (GLOBAL_POSITION_INT_COV_DATA) , SYS_STATUS (SYS_STATUS_DATA) , ODOMETRY (ODOMETRY_DATA) , CAMERA_INFORMATION (CAMERA_INFORMATION_DATA) , HIL_STATE (HIL_STATE_DATA) , CAMERA_TRACKING_IMAGE_STATUS (CAMERA_TRACKING_IMAGE_STATUS_DATA) , SET_ACTUATOR_CONTROL_TARGET (SET_ACTUATOR_CONTROL_TARGET_DATA) , TERRAIN_REPORT (TERRAIN_REPORT_DATA) , ACTUATOR_OUTPUT_STATUS (ACTUATOR_OUTPUT_STATUS_DATA) , PARAM_EXT_REQUEST_READ (PARAM_EXT_REQUEST_READ_DATA) , SUPPORTED_TUNES (SUPPORTED_TUNES_DATA) , CURRENT_EVENT_SEQUENCE (CURRENT_EVENT_SEQUENCE_DATA) , PARAM_SET (PARAM_SET_DATA) , BATTERY_STATUS (BATTERY_STATUS_DATA) , MAG_CAL_REPORT (MAG_CAL_REPORT_DATA) , STORAGE_INFORMATION (STORAGE_INFORMATION_DATA) , SETUP_SIGNING (SETUP_SIGNING_DATA) , MOUNT_ORIENTATION (MOUNT_ORIENTATION_DATA) , OPTICAL_FLOW_RAD (OPTICAL_FLOW_RAD_DATA) , RC_CHANNELS (RC_CHANNELS_DATA) , GPS_RTCM_DATA (GPS_RTCM_DATA_DATA) , ACTUATOR_CONTROL_TARGET (ACTUATOR_CONTROL_TARGET_DATA) , ORBIT_EXECUTION_STATUS (ORBIT_EXECUTION_STATUS_DATA) , GIMBAL_DEVICE_ATTITUDE_STATUS (GIMBAL_DEVICE_ATTITUDE_STATUS_DATA) , PING (PING_DATA) , ATTITUDE (ATTITUDE_DATA) , OPEN_DRONE_ID_ARM_STATUS (OPEN_DRONE_ID_ARM_STATUS_DATA) , LOGGING_ACK (LOGGING_ACK_DATA) , ATT_POS_MOCAP (ATT_POS_MOCAP_DATA) , LINK_NODE_STATUS (LINK_NODE_STATUS_DATA) , MEMORY_VECT (MEMORY_VECT_DATA) , GPS_STATUS (GPS_STATUS_DATA) , HIL_OPTICAL_FLOW (HIL_OPTICAL_FLOW_DATA) , SERIAL_CONTROL (SERIAL_CONTROL_DATA) , DATA_TRANSMISSION_HANDSHAKE (DATA_TRANSMISSION_HANDSHAKE_DATA) , COMMAND_ACK (COMMAND_ACK_DATA) , OPEN_DRONE_ID_SYSTEM (OPEN_DRONE_ID_SYSTEM_DATA) , PARAM_EXT_VALUE (PARAM_EXT_VALUE_DATA) , GIMBAL_MANAGER_INFORMATION (GIMBAL_MANAGER_INFORMATION_DATA) , HYGROMETER_SENSOR (HYGROMETER_SENSOR_DATA) , POSITION_TARGET_GLOBAL_INT (POSITION_TARGET_GLOBAL_INT_DATA) , AUTOPILOT_STATE_FOR_GIMBAL_DEVICE (AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA) , DATA_STREAM (DATA_STREAM_DATA) , POWER_STATUS (POWER_STATUS_DATA) , BUTTON_CHANGE (BUTTON_CHANGE_DATA) , STATUSTEXT (STATUSTEXT_DATA) , HIGHRES_IMU (HIGHRES_IMU_DATA) , ESC_INFO (ESC_INFO_DATA) , SCALED_IMU (SCALED_IMU_DATA) , MISSION_SET_CURRENT (MISSION_SET_CURRENT_DATA) , VIDEO_STREAM_INFORMATION (VIDEO_STREAM_INFORMATION_DATA) , MISSION_WRITE_PARTIAL_LIST (MISSION_WRITE_PARTIAL_LIST_DATA) , SET_ATTITUDE_TARGET (SET_ATTITUDE_TARGET_DATA) , WHEEL_DISTANCE (WHEEL_DISTANCE_DATA) , GLOBAL_VISION_POSITION_ESTIMATE (GLOBAL_VISION_POSITION_ESTIMATE_DATA) , WINCH_STATUS (WINCH_STATUS_DATA) , PLAY_TUNE (PLAY_TUNE_DATA) , TUNNEL (TUNNEL_DATA) , MISSION_REQUEST_LIST (MISSION_REQUEST_LIST_DATA) , SET_POSITION_TARGET_GLOBAL_INT (SET_POSITION_TARGET_GLOBAL_INT_DATA) , FOLLOW_TARGET (FOLLOW_TARGET_DATA) , REQUEST_EVENT (REQUEST_EVENT_DATA) , NAMED_VALUE_INT (NAMED_VALUE_INT_DATA) , VFR_HUD (VFR_HUD_DATA) , LOG_REQUEST_DATA (LOG_REQUEST_DATA_DATA) , GPS2_RAW (GPS2_RAW_DATA) , HIGH_LATENCY (HIGH_LATENCY_DATA) , RADIO_STATUS (RADIO_STATUS_DATA) , RAW_PRESSURE (RAW_PRESSURE_DATA) , ALTITUDE (ALTITUDE_DATA) , SET_POSITION_TARGET_LOCAL_NED (SET_POSITION_TARGET_LOCAL_NED_DATA) , GIMBAL_MANAGER_SET_MANUAL_CONTROL (GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA) , SCALED_IMU2 (SCALED_IMU2_DATA) , GPS_RAW_INT (GPS_RAW_INT_DATA) , MISSION_CLEAR_ALL (MISSION_CLEAR_ALL_DATA) , SCALED_IMU3 (SCALED_IMU3_DATA) , OPEN_DRONE_ID_LOCATION (OPEN_DRONE_ID_LOCATION_DATA) , GPS_INJECT_DATA (GPS_INJECT_DATA_DATA) , FILE_TRANSFER_PROTOCOL (FILE_TRANSFER_PROTOCOL_DATA) , CAMERA_FOV_STATUS (CAMERA_FOV_STATUS_DATA) , RC_CHANNELS_OVERRIDE (RC_CHANNELS_OVERRIDE_DATA) , LANDING_TARGET (LANDING_TARGET_DATA) , ISBD_LINK_STATUS (ISBD_LINK_STATUS_DATA) , GIMBAL_DEVICE_INFORMATION (GIMBAL_DEVICE_INFORMATION_DATA) , SET_HOME_POSITION (SET_HOME_POSITION_DATA) , COMPONENT_INFORMATION (COMPONENT_INFORMATION_DATA) , HOME_POSITION (HOME_POSITION_DATA) , CAN_FILTER_MODIFY (CAN_FILTER_MODIFY_DATA) , ENCAPSULATED_DATA (ENCAPSULATED_DATA_DATA) , GENERATOR_STATUS (GENERATOR_STATUS_DATA) , MESSAGE_INTERVAL (MESSAGE_INTERVAL_DATA) , OPEN_DRONE_ID_MESSAGE_PACK (OPEN_DRONE_ID_MESSAGE_PACK_DATA) , LOCAL_POSITION_NED_COV (LOCAL_POSITION_NED_COV_DATA) , COMPONENT_METADATA (COMPONENT_METADATA_DATA) , SIM_STATE (SIM_STATE_DATA) , SERVO_OUTPUT_RAW (SERVO_OUTPUT_RAW_DATA) , OPEN_DRONE_ID_BASIC_ID (OPEN_DRONE_ID_BASIC_ID_DATA) , LOG_REQUEST_LIST (LOG_REQUEST_LIST_DATA) , OPEN_DRONE_ID_SYSTEM_UPDATE (OPEN_DRONE_ID_SYSTEM_UPDATE_DATA) , } impl Message for MavMessage { fn parse (version : MavlinkVersion , id : u32 , payload : & [u8]) -> Result < Self , :: mavlink_core :: error :: ParserError > { match id { UAVIONIX_ADSB_OUT_CFG_DATA :: ID => UAVIONIX_ADSB_OUT_CFG_DATA :: deser (version , payload) . map (Self :: UAVIONIX_ADSB_OUT_CFG) , ADSB_VEHICLE_DATA :: ID => ADSB_VEHICLE_DATA :: deser (version , payload) . map (Self :: ADSB_VEHICLE) , MISSION_ITEM_DATA :: ID => MISSION_ITEM_DATA :: deser (version , payload) . map (Self :: MISSION_ITEM) , CAMERA_TRIGGER_DATA :: ID => CAMERA_TRIGGER_DATA :: deser (version , payload) . map (Self :: CAMERA_TRIGGER) , ONBOARD_COMPUTER_STATUS_DATA :: ID => ONBOARD_COMPUTER_STATUS_DATA :: deser (version , payload) . map (Self :: ONBOARD_COMPUTER_STATUS) , ATTITUDE_TARGET_DATA :: ID => ATTITUDE_TARGET_DATA :: deser (version , payload) . map (Self :: ATTITUDE_TARGET) , HIGH_LATENCY2_DATA :: ID => HIGH_LATENCY2_DATA :: deser (version , payload) . map (Self :: HIGH_LATENCY2) , DEBUG_VECT_DATA :: ID => DEBUG_VECT_DATA :: deser (version , payload) . map (Self :: DEBUG_VECT) , LOG_REQUEST_END_DATA :: ID => LOG_REQUEST_END_DATA :: deser (version , payload) . map (Self :: LOG_REQUEST_END) , NAV_CONTROLLER_OUTPUT_DATA :: ID => NAV_CONTROLLER_OUTPUT_DATA :: deser (version , payload) . map (Self :: NAV_CONTROLLER_OUTPUT) , UTM_GLOBAL_POSITION_DATA :: ID => UTM_GLOBAL_POSITION_DATA :: deser (version , payload) . map (Self :: UTM_GLOBAL_POSITION) , GPS_INPUT_DATA :: ID => GPS_INPUT_DATA :: deser (version , payload) . map (Self :: GPS_INPUT) , UAVCAN_NODE_STATUS_DATA :: ID => UAVCAN_NODE_STATUS_DATA :: deser (version , payload) . map (Self :: UAVCAN_NODE_STATUS) , LOGGING_DATA_ACKED_DATA :: ID => LOGGING_DATA_ACKED_DATA :: deser (version , payload) . map (Self :: LOGGING_DATA_ACKED) , RAW_RPM_DATA :: ID => RAW_RPM_DATA :: deser (version , payload) . map (Self :: RAW_RPM) , MISSION_REQUEST_DATA :: ID => MISSION_REQUEST_DATA :: deser (version , payload) . map (Self :: MISSION_REQUEST) , HIL_ACTUATOR_CONTROLS_DATA :: ID => HIL_ACTUATOR_CONTROLS_DATA :: deser (version , payload) . map (Self :: HIL_ACTUATOR_CONTROLS) , PARAM_REQUEST_LIST_DATA :: ID => PARAM_REQUEST_LIST_DATA :: deser (version , payload) . map (Self :: PARAM_REQUEST_LIST) , MISSION_ITEM_INT_DATA :: ID => MISSION_ITEM_INT_DATA :: deser (version , payload) . map (Self :: MISSION_ITEM_INT) , LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: ID => LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: deser (version , payload) . map (Self :: LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET) , EFI_STATUS_DATA :: ID => EFI_STATUS_DATA :: deser (version , payload) . map (Self :: EFI_STATUS) , MISSION_ITEM_REACHED_DATA :: ID => MISSION_ITEM_REACHED_DATA :: deser (version , payload) . map (Self :: MISSION_ITEM_REACHED) , REQUEST_DATA_STREAM_DATA :: ID => REQUEST_DATA_STREAM_DATA :: deser (version , payload) . map (Self :: REQUEST_DATA_STREAM) , UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: ID => UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: deser (version , payload) . map (Self :: UAVIONIX_ADSB_OUT_DYNAMIC) , CAMERA_CAPTURE_STATUS_DATA :: ID => CAMERA_CAPTURE_STATUS_DATA :: deser (version , payload) . map (Self :: CAMERA_CAPTURE_STATUS) , MANUAL_CONTROL_DATA :: ID => MANUAL_CONTROL_DATA :: deser (version , payload) . map (Self :: MANUAL_CONTROL) , GIMBAL_MANAGER_SET_PITCHYAW_DATA :: ID => GIMBAL_MANAGER_SET_PITCHYAW_DATA :: deser (version , payload) . map (Self :: GIMBAL_MANAGER_SET_PITCHYAW) , GPS_GLOBAL_ORIGIN_DATA :: ID => GPS_GLOBAL_ORIGIN_DATA :: deser (version , payload) . map (Self :: GPS_GLOBAL_ORIGIN) , HIL_CONTROLS_DATA :: ID => HIL_CONTROLS_DATA :: deser (version , payload) . map (Self :: HIL_CONTROLS) , OPTICAL_FLOW_DATA :: ID => OPTICAL_FLOW_DATA :: deser (version , payload) . map (Self :: OPTICAL_FLOW) , OPEN_DRONE_ID_SELF_ID_DATA :: ID => OPEN_DRONE_ID_SELF_ID_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_SELF_ID) , TIME_ESTIMATE_TO_TARGET_DATA :: ID => TIME_ESTIMATE_TO_TARGET_DATA :: deser (version , payload) . map (Self :: TIME_ESTIMATE_TO_TARGET) , PARAM_VALUE_DATA :: ID => PARAM_VALUE_DATA :: deser (version , payload) . map (Self :: PARAM_VALUE) , DEBUG_FLOAT_ARRAY_DATA :: ID => DEBUG_FLOAT_ARRAY_DATA :: deser (version , payload) . map (Self :: DEBUG_FLOAT_ARRAY) , AIS_VESSEL_DATA :: ID => AIS_VESSEL_DATA :: deser (version , payload) . map (Self :: AIS_VESSEL) , ATTITUDE_QUATERNION_COV_DATA :: ID => ATTITUDE_QUATERNION_COV_DATA :: deser (version , payload) . map (Self :: ATTITUDE_QUATERNION_COV) , GLOBAL_POSITION_INT_DATA :: ID => GLOBAL_POSITION_INT_DATA :: deser (version , payload) . map (Self :: GLOBAL_POSITION_INT) , LOG_ENTRY_DATA :: ID => LOG_ENTRY_DATA :: deser (version , payload) . map (Self :: LOG_ENTRY) , OBSTACLE_DISTANCE_DATA :: ID => OBSTACLE_DISTANCE_DATA :: deser (version , payload) . map (Self :: OBSTACLE_DISTANCE) , MISSION_COUNT_DATA :: ID => MISSION_COUNT_DATA :: deser (version , payload) . map (Self :: MISSION_COUNT) , FENCE_STATUS_DATA :: ID => FENCE_STATUS_DATA :: deser (version , payload) . map (Self :: FENCE_STATUS) , EVENT_DATA :: ID => EVENT_DATA :: deser (version , payload) . map (Self :: EVENT) , HIL_SENSOR_DATA :: ID => HIL_SENSOR_DATA :: deser (version , payload) . map (Self :: HIL_SENSOR) , RAW_IMU_DATA :: ID => RAW_IMU_DATA :: deser (version , payload) . map (Self :: RAW_IMU) , V2_EXTENSION_DATA :: ID => V2_EXTENSION_DATA :: deser (version , payload) . map (Self :: V2_EXTENSION) , SMART_BATTERY_INFO_DATA :: ID => SMART_BATTERY_INFO_DATA :: deser (version , payload) . map (Self :: SMART_BATTERY_INFO) , PARAM_EXT_SET_DATA :: ID => PARAM_EXT_SET_DATA :: deser (version , payload) . map (Self :: PARAM_EXT_SET) , TERRAIN_CHECK_DATA :: ID => TERRAIN_CHECK_DATA :: deser (version , payload) . map (Self :: TERRAIN_CHECK) , TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: ID => TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: deser (version , payload) . map (Self :: TRAJECTORY_REPRESENTATION_WAYPOINTS) , CAMERA_IMAGE_CAPTURED_DATA :: ID => CAMERA_IMAGE_CAPTURED_DATA :: deser (version , payload) . map (Self :: CAMERA_IMAGE_CAPTURED) , HEARTBEAT_DATA :: ID => HEARTBEAT_DATA :: deser (version , payload) . map (Self :: HEARTBEAT) , LOG_ERASE_DATA :: ID => LOG_ERASE_DATA :: deser (version , payload) . map (Self :: LOG_ERASE) , MANUAL_SETPOINT_DATA :: ID => MANUAL_SETPOINT_DATA :: deser (version , payload) . map (Self :: MANUAL_SETPOINT) , SYSTEM_TIME_DATA :: ID => SYSTEM_TIME_DATA :: deser (version , payload) . map (Self :: SYSTEM_TIME) , HIL_GPS_DATA :: ID => HIL_GPS_DATA :: deser (version , payload) . map (Self :: HIL_GPS) , ESC_STATUS_DATA :: ID => ESC_STATUS_DATA :: deser (version , payload) . map (Self :: ESC_STATUS) , CAMERA_TRACKING_GEO_STATUS_DATA :: ID => CAMERA_TRACKING_GEO_STATUS_DATA :: deser (version , payload) . map (Self :: CAMERA_TRACKING_GEO_STATUS) , COMMAND_INT_DATA :: ID => COMMAND_INT_DATA :: deser (version , payload) . map (Self :: COMMAND_INT) , HIL_RC_INPUTS_RAW_DATA :: ID => HIL_RC_INPUTS_RAW_DATA :: deser (version , payload) . map (Self :: HIL_RC_INPUTS_RAW) , COMMAND_CANCEL_DATA :: ID => COMMAND_CANCEL_DATA :: deser (version , payload) . map (Self :: COMMAND_CANCEL) , TRAJECTORY_REPRESENTATION_BEZIER_DATA :: ID => TRAJECTORY_REPRESENTATION_BEZIER_DATA :: deser (version , payload) . map (Self :: TRAJECTORY_REPRESENTATION_BEZIER) , MISSION_CURRENT_DATA :: ID => MISSION_CURRENT_DATA :: deser (version , payload) . map (Self :: MISSION_CURRENT) , UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: ID => UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: deser (version , payload) . map (Self :: UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT) , FLIGHT_INFORMATION_DATA :: ID => FLIGHT_INFORMATION_DATA :: deser (version , payload) . map (Self :: FLIGHT_INFORMATION) , SCALED_PRESSURE3_DATA :: ID => SCALED_PRESSURE3_DATA :: deser (version , payload) . map (Self :: SCALED_PRESSURE3) , LOGGING_DATA_DATA :: ID => LOGGING_DATA_DATA :: deser (version , payload) . map (Self :: LOGGING_DATA) , ESTIMATOR_STATUS_DATA :: ID => ESTIMATOR_STATUS_DATA :: deser (version , payload) . map (Self :: ESTIMATOR_STATUS) , SET_GPS_GLOBAL_ORIGIN_DATA :: ID => SET_GPS_GLOBAL_ORIGIN_DATA :: deser (version , payload) . map (Self :: SET_GPS_GLOBAL_ORIGIN) , DEBUG_DATA :: ID => DEBUG_DATA :: deser (version , payload) . map (Self :: DEBUG) , LOG_DATA_DATA :: ID => LOG_DATA_DATA :: deser (version , payload) . map (Self :: LOG_DATA) , LOCAL_POSITION_NED_DATA :: ID => LOCAL_POSITION_NED_DATA :: deser (version , payload) . map (Self :: LOCAL_POSITION_NED) , CANFD_FRAME_DATA :: ID => CANFD_FRAME_DATA :: deser (version , payload) . map (Self :: CANFD_FRAME) , MISSION_REQUEST_INT_DATA :: ID => MISSION_REQUEST_INT_DATA :: deser (version , payload) . map (Self :: MISSION_REQUEST_INT) , COMMAND_LONG_DATA :: ID => COMMAND_LONG_DATA :: deser (version , payload) . map (Self :: COMMAND_LONG) , HIL_STATE_QUATERNION_DATA :: ID => HIL_STATE_QUATERNION_DATA :: deser (version , payload) . map (Self :: HIL_STATE_QUATERNION) , RC_CHANNELS_RAW_DATA :: ID => RC_CHANNELS_RAW_DATA :: deser (version , payload) . map (Self :: RC_CHANNELS_RAW) , DISTANCE_SENSOR_DATA :: ID => DISTANCE_SENSOR_DATA :: deser (version , payload) . map (Self :: DISTANCE_SENSOR) , PARAM_EXT_REQUEST_LIST_DATA :: ID => PARAM_EXT_REQUEST_LIST_DATA :: deser (version , payload) . map (Self :: PARAM_EXT_REQUEST_LIST) , AUTH_KEY_DATA :: ID => AUTH_KEY_DATA :: deser (version , payload) . map (Self :: AUTH_KEY) , MISSION_ACK_DATA :: ID => MISSION_ACK_DATA :: deser (version , payload) . map (Self :: MISSION_ACK) , RESOURCE_REQUEST_DATA :: ID => RESOURCE_REQUEST_DATA :: deser (version , payload) . map (Self :: RESOURCE_REQUEST) , SAFETY_ALLOWED_AREA_DATA :: ID => SAFETY_ALLOWED_AREA_DATA :: deser (version , payload) . map (Self :: SAFETY_ALLOWED_AREA) , CAMERA_SETTINGS_DATA :: ID => CAMERA_SETTINGS_DATA :: deser (version , payload) . map (Self :: CAMERA_SETTINGS) , GIMBAL_MANAGER_SET_ATTITUDE_DATA :: ID => GIMBAL_MANAGER_SET_ATTITUDE_DATA :: deser (version , payload) . map (Self :: GIMBAL_MANAGER_SET_ATTITUDE) , GPS_RTK_DATA :: ID => GPS_RTK_DATA :: deser (version , payload) . map (Self :: GPS_RTK) , PROTOCOL_VERSION_DATA :: ID => PROTOCOL_VERSION_DATA :: deser (version , payload) . map (Self :: PROTOCOL_VERSION) , TERRAIN_REQUEST_DATA :: ID => TERRAIN_REQUEST_DATA :: deser (version , payload) . map (Self :: TERRAIN_REQUEST) , POSITION_TARGET_LOCAL_NED_DATA :: ID => POSITION_TARGET_LOCAL_NED_DATA :: deser (version , payload) . map (Self :: POSITION_TARGET_LOCAL_NED) , WIND_COV_DATA :: ID => WIND_COV_DATA :: deser (version , payload) . map (Self :: WIND_COV) , COLLISION_DATA :: ID => COLLISION_DATA :: deser (version , payload) . map (Self :: COLLISION) , CELLULAR_CONFIG_DATA :: ID => CELLULAR_CONFIG_DATA :: deser (version , payload) . map (Self :: CELLULAR_CONFIG) , CHANGE_OPERATOR_CONTROL_ACK_DATA :: ID => CHANGE_OPERATOR_CONTROL_ACK_DATA :: deser (version , payload) . map (Self :: CHANGE_OPERATOR_CONTROL_ACK) , CONTROL_SYSTEM_STATE_DATA :: ID => CONTROL_SYSTEM_STATE_DATA :: deser (version , payload) . map (Self :: CONTROL_SYSTEM_STATE) , RC_CHANNELS_SCALED_DATA :: ID => RC_CHANNELS_SCALED_DATA :: deser (version , payload) . map (Self :: RC_CHANNELS_SCALED) , CAN_FRAME_DATA :: ID => CAN_FRAME_DATA :: deser (version , payload) . map (Self :: CAN_FRAME) , VICON_POSITION_ESTIMATE_DATA :: ID => VICON_POSITION_ESTIMATE_DATA :: deser (version , payload) . map (Self :: VICON_POSITION_ESTIMATE) , GIMBAL_MANAGER_STATUS_DATA :: ID => GIMBAL_MANAGER_STATUS_DATA :: deser (version , payload) . map (Self :: GIMBAL_MANAGER_STATUS) , SET_MODE_DATA :: ID => SET_MODE_DATA :: deser (version , payload) . map (Self :: SET_MODE) , TERRAIN_DATA_DATA :: ID => TERRAIN_DATA_DATA :: deser (version , payload) . map (Self :: TERRAIN_DATA) , CHANGE_OPERATOR_CONTROL_DATA :: ID => CHANGE_OPERATOR_CONTROL_DATA :: deser (version , payload) . map (Self :: CHANGE_OPERATOR_CONTROL) , PARAM_MAP_RC_DATA :: ID => PARAM_MAP_RC_DATA :: deser (version , payload) . map (Self :: PARAM_MAP_RC) , VIBRATION_DATA :: ID => VIBRATION_DATA :: deser (version , payload) . map (Self :: VIBRATION) , VISION_POSITION_ESTIMATE_DATA :: ID => VISION_POSITION_ESTIMATE_DATA :: deser (version , payload) . map (Self :: VISION_POSITION_ESTIMATE) , GPS2_RTK_DATA :: ID => GPS2_RTK_DATA :: deser (version , payload) . map (Self :: GPS2_RTK) , PLAY_TUNE_V2_DATA :: ID => PLAY_TUNE_V2_DATA :: deser (version , payload) . map (Self :: PLAY_TUNE_V2) , CELLULAR_STATUS_DATA :: ID => CELLULAR_STATUS_DATA :: deser (version , payload) . map (Self :: CELLULAR_STATUS) , OPEN_DRONE_ID_AUTHENTICATION_DATA :: ID => OPEN_DRONE_ID_AUTHENTICATION_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_AUTHENTICATION) , RESPONSE_EVENT_ERROR_DATA :: ID => RESPONSE_EVENT_ERROR_DATA :: deser (version , payload) . map (Self :: RESPONSE_EVENT_ERROR) , SCALED_PRESSURE2_DATA :: ID => SCALED_PRESSURE2_DATA :: deser (version , payload) . map (Self :: SCALED_PRESSURE2) , NAMED_VALUE_FLOAT_DATA :: ID => NAMED_VALUE_FLOAT_DATA :: deser (version , payload) . map (Self :: NAMED_VALUE_FLOAT) , ATTITUDE_QUATERNION_DATA :: ID => ATTITUDE_QUATERNION_DATA :: deser (version , payload) . map (Self :: ATTITUDE_QUATERNION) , TIMESYNC_DATA :: ID => TIMESYNC_DATA :: deser (version , payload) . map (Self :: TIMESYNC) , AUTOPILOT_VERSION_DATA :: ID => AUTOPILOT_VERSION_DATA :: deser (version , payload) . map (Self :: AUTOPILOT_VERSION) , MISSION_REQUEST_PARTIAL_LIST_DATA :: ID => MISSION_REQUEST_PARTIAL_LIST_DATA :: deser (version , payload) . map (Self :: MISSION_REQUEST_PARTIAL_LIST) , VISION_SPEED_ESTIMATE_DATA :: ID => VISION_SPEED_ESTIMATE_DATA :: deser (version , payload) . map (Self :: VISION_SPEED_ESTIMATE) , SCALED_PRESSURE_DATA :: ID => SCALED_PRESSURE_DATA :: deser (version , payload) . map (Self :: SCALED_PRESSURE) , PARAM_REQUEST_READ_DATA :: ID => PARAM_REQUEST_READ_DATA :: deser (version , payload) . map (Self :: PARAM_REQUEST_READ) , PARAM_EXT_ACK_DATA :: ID => PARAM_EXT_ACK_DATA :: deser (version , payload) . map (Self :: PARAM_EXT_ACK) , WIFI_CONFIG_AP_DATA :: ID => WIFI_CONFIG_AP_DATA :: deser (version , payload) . map (Self :: WIFI_CONFIG_AP) , EXTENDED_SYS_STATE_DATA :: ID => EXTENDED_SYS_STATE_DATA :: deser (version , payload) . map (Self :: EXTENDED_SYS_STATE) , OPEN_DRONE_ID_OPERATOR_ID_DATA :: ID => OPEN_DRONE_ID_OPERATOR_ID_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_OPERATOR_ID) , GIMBAL_DEVICE_SET_ATTITUDE_DATA :: ID => GIMBAL_DEVICE_SET_ATTITUDE_DATA :: deser (version , payload) . map (Self :: GIMBAL_DEVICE_SET_ATTITUDE) , VIDEO_STREAM_STATUS_DATA :: ID => VIDEO_STREAM_STATUS_DATA :: deser (version , payload) . map (Self :: VIDEO_STREAM_STATUS) , UAVCAN_NODE_INFO_DATA :: ID => UAVCAN_NODE_INFO_DATA :: deser (version , payload) . map (Self :: UAVCAN_NODE_INFO) , SAFETY_SET_ALLOWED_AREA_DATA :: ID => SAFETY_SET_ALLOWED_AREA_DATA :: deser (version , payload) . map (Self :: SAFETY_SET_ALLOWED_AREA) , GLOBAL_POSITION_INT_COV_DATA :: ID => GLOBAL_POSITION_INT_COV_DATA :: deser (version , payload) . map (Self :: GLOBAL_POSITION_INT_COV) , SYS_STATUS_DATA :: ID => SYS_STATUS_DATA :: deser (version , payload) . map (Self :: SYS_STATUS) , ODOMETRY_DATA :: ID => ODOMETRY_DATA :: deser (version , payload) . map (Self :: ODOMETRY) , CAMERA_INFORMATION_DATA :: ID => CAMERA_INFORMATION_DATA :: deser (version , payload) . map (Self :: CAMERA_INFORMATION) , HIL_STATE_DATA :: ID => HIL_STATE_DATA :: deser (version , payload) . map (Self :: HIL_STATE) , CAMERA_TRACKING_IMAGE_STATUS_DATA :: ID => CAMERA_TRACKING_IMAGE_STATUS_DATA :: deser (version , payload) . map (Self :: CAMERA_TRACKING_IMAGE_STATUS) , SET_ACTUATOR_CONTROL_TARGET_DATA :: ID => SET_ACTUATOR_CONTROL_TARGET_DATA :: deser (version , payload) . map (Self :: SET_ACTUATOR_CONTROL_TARGET) , TERRAIN_REPORT_DATA :: ID => TERRAIN_REPORT_DATA :: deser (version , payload) . map (Self :: TERRAIN_REPORT) , ACTUATOR_OUTPUT_STATUS_DATA :: ID => ACTUATOR_OUTPUT_STATUS_DATA :: deser (version , payload) . map (Self :: ACTUATOR_OUTPUT_STATUS) , PARAM_EXT_REQUEST_READ_DATA :: ID => PARAM_EXT_REQUEST_READ_DATA :: deser (version , payload) . map (Self :: PARAM_EXT_REQUEST_READ) , SUPPORTED_TUNES_DATA :: ID => SUPPORTED_TUNES_DATA :: deser (version , payload) . map (Self :: SUPPORTED_TUNES) , CURRENT_EVENT_SEQUENCE_DATA :: ID => CURRENT_EVENT_SEQUENCE_DATA :: deser (version , payload) . map (Self :: CURRENT_EVENT_SEQUENCE) , PARAM_SET_DATA :: ID => PARAM_SET_DATA :: deser (version , payload) . map (Self :: PARAM_SET) , BATTERY_STATUS_DATA :: ID => BATTERY_STATUS_DATA :: deser (version , payload) . map (Self :: BATTERY_STATUS) , MAG_CAL_REPORT_DATA :: ID => MAG_CAL_REPORT_DATA :: deser (version , payload) . map (Self :: MAG_CAL_REPORT) , STORAGE_INFORMATION_DATA :: ID => STORAGE_INFORMATION_DATA :: deser (version , payload) . map (Self :: STORAGE_INFORMATION) , SETUP_SIGNING_DATA :: ID => SETUP_SIGNING_DATA :: deser (version , payload) . map (Self :: SETUP_SIGNING) , MOUNT_ORIENTATION_DATA :: ID => MOUNT_ORIENTATION_DATA :: deser (version , payload) . map (Self :: MOUNT_ORIENTATION) , OPTICAL_FLOW_RAD_DATA :: ID => OPTICAL_FLOW_RAD_DATA :: deser (version , payload) . map (Self :: OPTICAL_FLOW_RAD) , RC_CHANNELS_DATA :: ID => RC_CHANNELS_DATA :: deser (version , payload) . map (Self :: RC_CHANNELS) , GPS_RTCM_DATA_DATA :: ID => GPS_RTCM_DATA_DATA :: deser (version , payload) . map (Self :: GPS_RTCM_DATA) , ACTUATOR_CONTROL_TARGET_DATA :: ID => ACTUATOR_CONTROL_TARGET_DATA :: deser (version , payload) . map (Self :: ACTUATOR_CONTROL_TARGET) , ORBIT_EXECUTION_STATUS_DATA :: ID => ORBIT_EXECUTION_STATUS_DATA :: deser (version , payload) . map (Self :: ORBIT_EXECUTION_STATUS) , GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: ID => GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: deser (version , payload) . map (Self :: GIMBAL_DEVICE_ATTITUDE_STATUS) , PING_DATA :: ID => PING_DATA :: deser (version , payload) . map (Self :: PING) , ATTITUDE_DATA :: ID => ATTITUDE_DATA :: deser (version , payload) . map (Self :: ATTITUDE) , OPEN_DRONE_ID_ARM_STATUS_DATA :: ID => OPEN_DRONE_ID_ARM_STATUS_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_ARM_STATUS) , LOGGING_ACK_DATA :: ID => LOGGING_ACK_DATA :: deser (version , payload) . map (Self :: LOGGING_ACK) , ATT_POS_MOCAP_DATA :: ID => ATT_POS_MOCAP_DATA :: deser (version , payload) . map (Self :: ATT_POS_MOCAP) , LINK_NODE_STATUS_DATA :: ID => LINK_NODE_STATUS_DATA :: deser (version , payload) . map (Self :: LINK_NODE_STATUS) , MEMORY_VECT_DATA :: ID => MEMORY_VECT_DATA :: deser (version , payload) . map (Self :: MEMORY_VECT) , GPS_STATUS_DATA :: ID => GPS_STATUS_DATA :: deser (version , payload) . map (Self :: GPS_STATUS) , HIL_OPTICAL_FLOW_DATA :: ID => HIL_OPTICAL_FLOW_DATA :: deser (version , payload) . map (Self :: HIL_OPTICAL_FLOW) , SERIAL_CONTROL_DATA :: ID => SERIAL_CONTROL_DATA :: deser (version , payload) . map (Self :: SERIAL_CONTROL) , DATA_TRANSMISSION_HANDSHAKE_DATA :: ID => DATA_TRANSMISSION_HANDSHAKE_DATA :: deser (version , payload) . map (Self :: DATA_TRANSMISSION_HANDSHAKE) , COMMAND_ACK_DATA :: ID => COMMAND_ACK_DATA :: deser (version , payload) . map (Self :: COMMAND_ACK) , OPEN_DRONE_ID_SYSTEM_DATA :: ID => OPEN_DRONE_ID_SYSTEM_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_SYSTEM) , PARAM_EXT_VALUE_DATA :: ID => PARAM_EXT_VALUE_DATA :: deser (version , payload) . map (Self :: PARAM_EXT_VALUE) , GIMBAL_MANAGER_INFORMATION_DATA :: ID => GIMBAL_MANAGER_INFORMATION_DATA :: deser (version , payload) . map (Self :: GIMBAL_MANAGER_INFORMATION) , HYGROMETER_SENSOR_DATA :: ID => HYGROMETER_SENSOR_DATA :: deser (version , payload) . map (Self :: HYGROMETER_SENSOR) , POSITION_TARGET_GLOBAL_INT_DATA :: ID => POSITION_TARGET_GLOBAL_INT_DATA :: deser (version , payload) . map (Self :: POSITION_TARGET_GLOBAL_INT) , AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: ID => AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: deser (version , payload) . map (Self :: AUTOPILOT_STATE_FOR_GIMBAL_DEVICE) , DATA_STREAM_DATA :: ID => DATA_STREAM_DATA :: deser (version , payload) . map (Self :: DATA_STREAM) , POWER_STATUS_DATA :: ID => POWER_STATUS_DATA :: deser (version , payload) . map (Self :: POWER_STATUS) , BUTTON_CHANGE_DATA :: ID => BUTTON_CHANGE_DATA :: deser (version , payload) . map (Self :: BUTTON_CHANGE) , STATUSTEXT_DATA :: ID => STATUSTEXT_DATA :: deser (version , payload) . map (Self :: STATUSTEXT) , HIGHRES_IMU_DATA :: ID => HIGHRES_IMU_DATA :: deser (version , payload) . map (Self :: HIGHRES_IMU) , ESC_INFO_DATA :: ID => ESC_INFO_DATA :: deser (version , payload) . map (Self :: ESC_INFO) , SCALED_IMU_DATA :: ID => SCALED_IMU_DATA :: deser (version , payload) . map (Self :: SCALED_IMU) , MISSION_SET_CURRENT_DATA :: ID => MISSION_SET_CURRENT_DATA :: deser (version , payload) . map (Self :: MISSION_SET_CURRENT) , VIDEO_STREAM_INFORMATION_DATA :: ID => VIDEO_STREAM_INFORMATION_DATA :: deser (version , payload) . map (Self :: VIDEO_STREAM_INFORMATION) , MISSION_WRITE_PARTIAL_LIST_DATA :: ID => MISSION_WRITE_PARTIAL_LIST_DATA :: deser (version , payload) . map (Self :: MISSION_WRITE_PARTIAL_LIST) , SET_ATTITUDE_TARGET_DATA :: ID => SET_ATTITUDE_TARGET_DATA :: deser (version , payload) . map (Self :: SET_ATTITUDE_TARGET) , WHEEL_DISTANCE_DATA :: ID => WHEEL_DISTANCE_DATA :: deser (version , payload) . map (Self :: WHEEL_DISTANCE) , GLOBAL_VISION_POSITION_ESTIMATE_DATA :: ID => GLOBAL_VISION_POSITION_ESTIMATE_DATA :: deser (version , payload) . map (Self :: GLOBAL_VISION_POSITION_ESTIMATE) , WINCH_STATUS_DATA :: ID => WINCH_STATUS_DATA :: deser (version , payload) . map (Self :: WINCH_STATUS) , PLAY_TUNE_DATA :: ID => PLAY_TUNE_DATA :: deser (version , payload) . map (Self :: PLAY_TUNE) , TUNNEL_DATA :: ID => TUNNEL_DATA :: deser (version , payload) . map (Self :: TUNNEL) , MISSION_REQUEST_LIST_DATA :: ID => MISSION_REQUEST_LIST_DATA :: deser (version , payload) . map (Self :: MISSION_REQUEST_LIST) , SET_POSITION_TARGET_GLOBAL_INT_DATA :: ID => SET_POSITION_TARGET_GLOBAL_INT_DATA :: deser (version , payload) . map (Self :: SET_POSITION_TARGET_GLOBAL_INT) , FOLLOW_TARGET_DATA :: ID => FOLLOW_TARGET_DATA :: deser (version , payload) . map (Self :: FOLLOW_TARGET) , REQUEST_EVENT_DATA :: ID => REQUEST_EVENT_DATA :: deser (version , payload) . map (Self :: REQUEST_EVENT) , NAMED_VALUE_INT_DATA :: ID => NAMED_VALUE_INT_DATA :: deser (version , payload) . map (Self :: NAMED_VALUE_INT) , VFR_HUD_DATA :: ID => VFR_HUD_DATA :: deser (version , payload) . map (Self :: VFR_HUD) , LOG_REQUEST_DATA_DATA :: ID => LOG_REQUEST_DATA_DATA :: deser (version , payload) . map (Self :: LOG_REQUEST_DATA) , GPS2_RAW_DATA :: ID => GPS2_RAW_DATA :: deser (version , payload) . map (Self :: GPS2_RAW) , HIGH_LATENCY_DATA :: ID => HIGH_LATENCY_DATA :: deser (version , payload) . map (Self :: HIGH_LATENCY) , RADIO_STATUS_DATA :: ID => RADIO_STATUS_DATA :: deser (version , payload) . map (Self :: RADIO_STATUS) , RAW_PRESSURE_DATA :: ID => RAW_PRESSURE_DATA :: deser (version , payload) . map (Self :: RAW_PRESSURE) , ALTITUDE_DATA :: ID => ALTITUDE_DATA :: deser (version , payload) . map (Self :: ALTITUDE) , SET_POSITION_TARGET_LOCAL_NED_DATA :: ID => SET_POSITION_TARGET_LOCAL_NED_DATA :: deser (version , payload) . map (Self :: SET_POSITION_TARGET_LOCAL_NED) , GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: ID => GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: deser (version , payload) . map (Self :: GIMBAL_MANAGER_SET_MANUAL_CONTROL) , SCALED_IMU2_DATA :: ID => SCALED_IMU2_DATA :: deser (version , payload) . map (Self :: SCALED_IMU2) , GPS_RAW_INT_DATA :: ID => GPS_RAW_INT_DATA :: deser (version , payload) . map (Self :: GPS_RAW_INT) , MISSION_CLEAR_ALL_DATA :: ID => MISSION_CLEAR_ALL_DATA :: deser (version , payload) . map (Self :: MISSION_CLEAR_ALL) , SCALED_IMU3_DATA :: ID => SCALED_IMU3_DATA :: deser (version , payload) . map (Self :: SCALED_IMU3) , OPEN_DRONE_ID_LOCATION_DATA :: ID => OPEN_DRONE_ID_LOCATION_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_LOCATION) , GPS_INJECT_DATA_DATA :: ID => GPS_INJECT_DATA_DATA :: deser (version , payload) . map (Self :: GPS_INJECT_DATA) , FILE_TRANSFER_PROTOCOL_DATA :: ID => FILE_TRANSFER_PROTOCOL_DATA :: deser (version , payload) . map (Self :: FILE_TRANSFER_PROTOCOL) , CAMERA_FOV_STATUS_DATA :: ID => CAMERA_FOV_STATUS_DATA :: deser (version , payload) . map (Self :: CAMERA_FOV_STATUS) , RC_CHANNELS_OVERRIDE_DATA :: ID => RC_CHANNELS_OVERRIDE_DATA :: deser (version , payload) . map (Self :: RC_CHANNELS_OVERRIDE) , LANDING_TARGET_DATA :: ID => LANDING_TARGET_DATA :: deser (version , payload) . map (Self :: LANDING_TARGET) , ISBD_LINK_STATUS_DATA :: ID => ISBD_LINK_STATUS_DATA :: deser (version , payload) . map (Self :: ISBD_LINK_STATUS) , GIMBAL_DEVICE_INFORMATION_DATA :: ID => GIMBAL_DEVICE_INFORMATION_DATA :: deser (version , payload) . map (Self :: GIMBAL_DEVICE_INFORMATION) , SET_HOME_POSITION_DATA :: ID => SET_HOME_POSITION_DATA :: deser (version , payload) . map (Self :: SET_HOME_POSITION) , COMPONENT_INFORMATION_DATA :: ID => COMPONENT_INFORMATION_DATA :: deser (version , payload) . map (Self :: COMPONENT_INFORMATION) , HOME_POSITION_DATA :: ID => HOME_POSITION_DATA :: deser (version , payload) . map (Self :: HOME_POSITION) , CAN_FILTER_MODIFY_DATA :: ID => CAN_FILTER_MODIFY_DATA :: deser (version , payload) . map (Self :: CAN_FILTER_MODIFY) , ENCAPSULATED_DATA_DATA :: ID => ENCAPSULATED_DATA_DATA :: deser (version , payload) . map (Self :: ENCAPSULATED_DATA) , GENERATOR_STATUS_DATA :: ID => GENERATOR_STATUS_DATA :: deser (version , payload) . map (Self :: GENERATOR_STATUS) , MESSAGE_INTERVAL_DATA :: ID => MESSAGE_INTERVAL_DATA :: deser (version , payload) . map (Self :: MESSAGE_INTERVAL) , OPEN_DRONE_ID_MESSAGE_PACK_DATA :: ID => OPEN_DRONE_ID_MESSAGE_PACK_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_MESSAGE_PACK) , LOCAL_POSITION_NED_COV_DATA :: ID => LOCAL_POSITION_NED_COV_DATA :: deser (version , payload) . map (Self :: LOCAL_POSITION_NED_COV) , COMPONENT_METADATA_DATA :: ID => COMPONENT_METADATA_DATA :: deser (version , payload) . map (Self :: COMPONENT_METADATA) , SIM_STATE_DATA :: ID => SIM_STATE_DATA :: deser (version , payload) . map (Self :: SIM_STATE) , SERVO_OUTPUT_RAW_DATA :: ID => SERVO_OUTPUT_RAW_DATA :: deser (version , payload) . map (Self :: SERVO_OUTPUT_RAW) , OPEN_DRONE_ID_BASIC_ID_DATA :: ID => OPEN_DRONE_ID_BASIC_ID_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_BASIC_ID) , LOG_REQUEST_LIST_DATA :: ID => LOG_REQUEST_LIST_DATA :: deser (version , payload) . map (Self :: LOG_REQUEST_LIST) , OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: ID => OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: deser (version , payload) . map (Self :: OPEN_DRONE_ID_SYSTEM_UPDATE) , _ => { Err (:: mavlink_core :: error :: ParserError :: UnknownMessage { id }) } , } } fn message_name (& self) -> & 'static str { match self { Self :: UAVIONIX_ADSB_OUT_CFG (..) => UAVIONIX_ADSB_OUT_CFG_DATA :: NAME , Self :: ADSB_VEHICLE (..) => ADSB_VEHICLE_DATA :: NAME , Self :: MISSION_ITEM (..) => MISSION_ITEM_DATA :: NAME , Self :: CAMERA_TRIGGER (..) => CAMERA_TRIGGER_DATA :: NAME , Self :: ONBOARD_COMPUTER_STATUS (..) => ONBOARD_COMPUTER_STATUS_DATA :: NAME , Self :: ATTITUDE_TARGET (..) => ATTITUDE_TARGET_DATA :: NAME , Self :: HIGH_LATENCY2 (..) => HIGH_LATENCY2_DATA :: NAME , Self :: DEBUG_VECT (..) => DEBUG_VECT_DATA :: NAME , Self :: LOG_REQUEST_END (..) => LOG_REQUEST_END_DATA :: NAME , Self :: NAV_CONTROLLER_OUTPUT (..) => NAV_CONTROLLER_OUTPUT_DATA :: NAME , Self :: UTM_GLOBAL_POSITION (..) => UTM_GLOBAL_POSITION_DATA :: NAME , Self :: GPS_INPUT (..) => GPS_INPUT_DATA :: NAME , Self :: UAVCAN_NODE_STATUS (..) => UAVCAN_NODE_STATUS_DATA :: NAME , Self :: LOGGING_DATA_ACKED (..) => LOGGING_DATA_ACKED_DATA :: NAME , Self :: RAW_RPM (..) => RAW_RPM_DATA :: NAME , Self :: MISSION_REQUEST (..) => MISSION_REQUEST_DATA :: NAME , Self :: HIL_ACTUATOR_CONTROLS (..) => HIL_ACTUATOR_CONTROLS_DATA :: NAME , Self :: PARAM_REQUEST_LIST (..) => PARAM_REQUEST_LIST_DATA :: NAME , Self :: MISSION_ITEM_INT (..) => MISSION_ITEM_INT_DATA :: NAME , Self :: LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET (..) => LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: NAME , Self :: EFI_STATUS (..) => EFI_STATUS_DATA :: NAME , Self :: MISSION_ITEM_REACHED (..) => MISSION_ITEM_REACHED_DATA :: NAME , Self :: REQUEST_DATA_STREAM (..) => REQUEST_DATA_STREAM_DATA :: NAME , Self :: UAVIONIX_ADSB_OUT_DYNAMIC (..) => UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: NAME , Self :: CAMERA_CAPTURE_STATUS (..) => CAMERA_CAPTURE_STATUS_DATA :: NAME , Self :: MANUAL_CONTROL (..) => MANUAL_CONTROL_DATA :: NAME , Self :: GIMBAL_MANAGER_SET_PITCHYAW (..) => GIMBAL_MANAGER_SET_PITCHYAW_DATA :: NAME , Self :: GPS_GLOBAL_ORIGIN (..) => GPS_GLOBAL_ORIGIN_DATA :: NAME , Self :: HIL_CONTROLS (..) => HIL_CONTROLS_DATA :: NAME , Self :: OPTICAL_FLOW (..) => OPTICAL_FLOW_DATA :: NAME , Self :: OPEN_DRONE_ID_SELF_ID (..) => OPEN_DRONE_ID_SELF_ID_DATA :: NAME , Self :: TIME_ESTIMATE_TO_TARGET (..) => TIME_ESTIMATE_TO_TARGET_DATA :: NAME , Self :: PARAM_VALUE (..) => PARAM_VALUE_DATA :: NAME , Self :: DEBUG_FLOAT_ARRAY (..) => DEBUG_FLOAT_ARRAY_DATA :: NAME , Self :: AIS_VESSEL (..) => AIS_VESSEL_DATA :: NAME , Self :: ATTITUDE_QUATERNION_COV (..) => ATTITUDE_QUATERNION_COV_DATA :: NAME , Self :: GLOBAL_POSITION_INT (..) => GLOBAL_POSITION_INT_DATA :: NAME , Self :: LOG_ENTRY (..) => LOG_ENTRY_DATA :: NAME , Self :: OBSTACLE_DISTANCE (..) => OBSTACLE_DISTANCE_DATA :: NAME , Self :: MISSION_COUNT (..) => MISSION_COUNT_DATA :: NAME , Self :: FENCE_STATUS (..) => FENCE_STATUS_DATA :: NAME , Self :: EVENT (..) => EVENT_DATA :: NAME , Self :: HIL_SENSOR (..) => HIL_SENSOR_DATA :: NAME , Self :: RAW_IMU (..) => RAW_IMU_DATA :: NAME , Self :: V2_EXTENSION (..) => V2_EXTENSION_DATA :: NAME , Self :: SMART_BATTERY_INFO (..) => SMART_BATTERY_INFO_DATA :: NAME , Self :: PARAM_EXT_SET (..) => PARAM_EXT_SET_DATA :: NAME , Self :: TERRAIN_CHECK (..) => TERRAIN_CHECK_DATA :: NAME , Self :: TRAJECTORY_REPRESENTATION_WAYPOINTS (..) => TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: NAME , Self :: CAMERA_IMAGE_CAPTURED (..) => CAMERA_IMAGE_CAPTURED_DATA :: NAME , Self :: HEARTBEAT (..) => HEARTBEAT_DATA :: NAME , Self :: LOG_ERASE (..) => LOG_ERASE_DATA :: NAME , Self :: MANUAL_SETPOINT (..) => MANUAL_SETPOINT_DATA :: NAME , Self :: SYSTEM_TIME (..) => SYSTEM_TIME_DATA :: NAME , Self :: HIL_GPS (..) => HIL_GPS_DATA :: NAME , Self :: ESC_STATUS (..) => ESC_STATUS_DATA :: NAME , Self :: CAMERA_TRACKING_GEO_STATUS (..) => CAMERA_TRACKING_GEO_STATUS_DATA :: NAME , Self :: COMMAND_INT (..) => COMMAND_INT_DATA :: NAME , Self :: HIL_RC_INPUTS_RAW (..) => HIL_RC_INPUTS_RAW_DATA :: NAME , Self :: COMMAND_CANCEL (..) => COMMAND_CANCEL_DATA :: NAME , Self :: TRAJECTORY_REPRESENTATION_BEZIER (..) => TRAJECTORY_REPRESENTATION_BEZIER_DATA :: NAME , Self :: MISSION_CURRENT (..) => MISSION_CURRENT_DATA :: NAME , Self :: UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT (..) => UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: NAME , Self :: FLIGHT_INFORMATION (..) => FLIGHT_INFORMATION_DATA :: NAME , Self :: SCALED_PRESSURE3 (..) => SCALED_PRESSURE3_DATA :: NAME , Self :: LOGGING_DATA (..) => LOGGING_DATA_DATA :: NAME , Self :: ESTIMATOR_STATUS (..) => ESTIMATOR_STATUS_DATA :: NAME , Self :: SET_GPS_GLOBAL_ORIGIN (..) => SET_GPS_GLOBAL_ORIGIN_DATA :: NAME , Self :: DEBUG (..) => DEBUG_DATA :: NAME , Self :: LOG_DATA (..) => LOG_DATA_DATA :: NAME , Self :: LOCAL_POSITION_NED (..) => LOCAL_POSITION_NED_DATA :: NAME , Self :: CANFD_FRAME (..) => CANFD_FRAME_DATA :: NAME , Self :: MISSION_REQUEST_INT (..) => MISSION_REQUEST_INT_DATA :: NAME , Self :: COMMAND_LONG (..) => COMMAND_LONG_DATA :: NAME , Self :: HIL_STATE_QUATERNION (..) => HIL_STATE_QUATERNION_DATA :: NAME , Self :: RC_CHANNELS_RAW (..) => RC_CHANNELS_RAW_DATA :: NAME , Self :: DISTANCE_SENSOR (..) => DISTANCE_SENSOR_DATA :: NAME , Self :: PARAM_EXT_REQUEST_LIST (..) => PARAM_EXT_REQUEST_LIST_DATA :: NAME , Self :: AUTH_KEY (..) => AUTH_KEY_DATA :: NAME , Self :: MISSION_ACK (..) => MISSION_ACK_DATA :: NAME , Self :: RESOURCE_REQUEST (..) => RESOURCE_REQUEST_DATA :: NAME , Self :: SAFETY_ALLOWED_AREA (..) => SAFETY_ALLOWED_AREA_DATA :: NAME , Self :: CAMERA_SETTINGS (..) => CAMERA_SETTINGS_DATA :: NAME , Self :: GIMBAL_MANAGER_SET_ATTITUDE (..) => GIMBAL_MANAGER_SET_ATTITUDE_DATA :: NAME , Self :: GPS_RTK (..) => GPS_RTK_DATA :: NAME , Self :: PROTOCOL_VERSION (..) => PROTOCOL_VERSION_DATA :: NAME , Self :: TERRAIN_REQUEST (..) => TERRAIN_REQUEST_DATA :: NAME , Self :: POSITION_TARGET_LOCAL_NED (..) => POSITION_TARGET_LOCAL_NED_DATA :: NAME , Self :: WIND_COV (..) => WIND_COV_DATA :: NAME , Self :: COLLISION (..) => COLLISION_DATA :: NAME , Self :: CELLULAR_CONFIG (..) => CELLULAR_CONFIG_DATA :: NAME , Self :: CHANGE_OPERATOR_CONTROL_ACK (..) => CHANGE_OPERATOR_CONTROL_ACK_DATA :: NAME , Self :: CONTROL_SYSTEM_STATE (..) => CONTROL_SYSTEM_STATE_DATA :: NAME , Self :: RC_CHANNELS_SCALED (..) => RC_CHANNELS_SCALED_DATA :: NAME , Self :: CAN_FRAME (..) => CAN_FRAME_DATA :: NAME , Self :: VICON_POSITION_ESTIMATE (..) => VICON_POSITION_ESTIMATE_DATA :: NAME , Self :: GIMBAL_MANAGER_STATUS (..) => GIMBAL_MANAGER_STATUS_DATA :: NAME , Self :: SET_MODE (..) => SET_MODE_DATA :: NAME , Self :: TERRAIN_DATA (..) => TERRAIN_DATA_DATA :: NAME , Self :: CHANGE_OPERATOR_CONTROL (..) => CHANGE_OPERATOR_CONTROL_DATA :: NAME , Self :: PARAM_MAP_RC (..) => PARAM_MAP_RC_DATA :: NAME , Self :: VIBRATION (..) => VIBRATION_DATA :: NAME , Self :: VISION_POSITION_ESTIMATE (..) => VISION_POSITION_ESTIMATE_DATA :: NAME , Self :: GPS2_RTK (..) => GPS2_RTK_DATA :: NAME , Self :: PLAY_TUNE_V2 (..) => PLAY_TUNE_V2_DATA :: NAME , Self :: CELLULAR_STATUS (..) => CELLULAR_STATUS_DATA :: NAME , Self :: OPEN_DRONE_ID_AUTHENTICATION (..) => OPEN_DRONE_ID_AUTHENTICATION_DATA :: NAME , Self :: RESPONSE_EVENT_ERROR (..) => RESPONSE_EVENT_ERROR_DATA :: NAME , Self :: SCALED_PRESSURE2 (..) => SCALED_PRESSURE2_DATA :: NAME , Self :: NAMED_VALUE_FLOAT (..) => NAMED_VALUE_FLOAT_DATA :: NAME , Self :: ATTITUDE_QUATERNION (..) => ATTITUDE_QUATERNION_DATA :: NAME , Self :: TIMESYNC (..) => TIMESYNC_DATA :: NAME , Self :: AUTOPILOT_VERSION (..) => AUTOPILOT_VERSION_DATA :: NAME , Self :: MISSION_REQUEST_PARTIAL_LIST (..) => MISSION_REQUEST_PARTIAL_LIST_DATA :: NAME , Self :: VISION_SPEED_ESTIMATE (..) => VISION_SPEED_ESTIMATE_DATA :: NAME , Self :: SCALED_PRESSURE (..) => SCALED_PRESSURE_DATA :: NAME , Self :: PARAM_REQUEST_READ (..) => PARAM_REQUEST_READ_DATA :: NAME , Self :: PARAM_EXT_ACK (..) => PARAM_EXT_ACK_DATA :: NAME , Self :: WIFI_CONFIG_AP (..) => WIFI_CONFIG_AP_DATA :: NAME , Self :: EXTENDED_SYS_STATE (..) => EXTENDED_SYS_STATE_DATA :: NAME , Self :: OPEN_DRONE_ID_OPERATOR_ID (..) => OPEN_DRONE_ID_OPERATOR_ID_DATA :: NAME , Self :: GIMBAL_DEVICE_SET_ATTITUDE (..) => GIMBAL_DEVICE_SET_ATTITUDE_DATA :: NAME , Self :: VIDEO_STREAM_STATUS (..) => VIDEO_STREAM_STATUS_DATA :: NAME , Self :: UAVCAN_NODE_INFO (..) => UAVCAN_NODE_INFO_DATA :: NAME , Self :: SAFETY_SET_ALLOWED_AREA (..) => SAFETY_SET_ALLOWED_AREA_DATA :: NAME , Self :: GLOBAL_POSITION_INT_COV (..) => GLOBAL_POSITION_INT_COV_DATA :: NAME , Self :: SYS_STATUS (..) => SYS_STATUS_DATA :: NAME , Self :: ODOMETRY (..) => ODOMETRY_DATA :: NAME , Self :: CAMERA_INFORMATION (..) => CAMERA_INFORMATION_DATA :: NAME , Self :: HIL_STATE (..) => HIL_STATE_DATA :: NAME , Self :: CAMERA_TRACKING_IMAGE_STATUS (..) => CAMERA_TRACKING_IMAGE_STATUS_DATA :: NAME , Self :: SET_ACTUATOR_CONTROL_TARGET (..) => SET_ACTUATOR_CONTROL_TARGET_DATA :: NAME , Self :: TERRAIN_REPORT (..) => TERRAIN_REPORT_DATA :: NAME , Self :: ACTUATOR_OUTPUT_STATUS (..) => ACTUATOR_OUTPUT_STATUS_DATA :: NAME , Self :: PARAM_EXT_REQUEST_READ (..) => PARAM_EXT_REQUEST_READ_DATA :: NAME , Self :: SUPPORTED_TUNES (..) => SUPPORTED_TUNES_DATA :: NAME , Self :: CURRENT_EVENT_SEQUENCE (..) => CURRENT_EVENT_SEQUENCE_DATA :: NAME , Self :: PARAM_SET (..) => PARAM_SET_DATA :: NAME , Self :: BATTERY_STATUS (..) => BATTERY_STATUS_DATA :: NAME , Self :: MAG_CAL_REPORT (..) => MAG_CAL_REPORT_DATA :: NAME , Self :: STORAGE_INFORMATION (..) => STORAGE_INFORMATION_DATA :: NAME , Self :: SETUP_SIGNING (..) => SETUP_SIGNING_DATA :: NAME , Self :: MOUNT_ORIENTATION (..) => MOUNT_ORIENTATION_DATA :: NAME , Self :: OPTICAL_FLOW_RAD (..) => OPTICAL_FLOW_RAD_DATA :: NAME , Self :: RC_CHANNELS (..) => RC_CHANNELS_DATA :: NAME , Self :: GPS_RTCM_DATA (..) => GPS_RTCM_DATA_DATA :: NAME , Self :: ACTUATOR_CONTROL_TARGET (..) => ACTUATOR_CONTROL_TARGET_DATA :: NAME , Self :: ORBIT_EXECUTION_STATUS (..) => ORBIT_EXECUTION_STATUS_DATA :: NAME , Self :: GIMBAL_DEVICE_ATTITUDE_STATUS (..) => GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: NAME , Self :: PING (..) => PING_DATA :: NAME , Self :: ATTITUDE (..) => ATTITUDE_DATA :: NAME , Self :: OPEN_DRONE_ID_ARM_STATUS (..) => OPEN_DRONE_ID_ARM_STATUS_DATA :: NAME , Self :: LOGGING_ACK (..) => LOGGING_ACK_DATA :: NAME , Self :: ATT_POS_MOCAP (..) => ATT_POS_MOCAP_DATA :: NAME , Self :: LINK_NODE_STATUS (..) => LINK_NODE_STATUS_DATA :: NAME , Self :: MEMORY_VECT (..) => MEMORY_VECT_DATA :: NAME , Self :: GPS_STATUS (..) => GPS_STATUS_DATA :: NAME , Self :: HIL_OPTICAL_FLOW (..) => HIL_OPTICAL_FLOW_DATA :: NAME , Self :: SERIAL_CONTROL (..) => SERIAL_CONTROL_DATA :: NAME , Self :: DATA_TRANSMISSION_HANDSHAKE (..) => DATA_TRANSMISSION_HANDSHAKE_DATA :: NAME , Self :: COMMAND_ACK (..) => COMMAND_ACK_DATA :: NAME , Self :: OPEN_DRONE_ID_SYSTEM (..) => OPEN_DRONE_ID_SYSTEM_DATA :: NAME , Self :: PARAM_EXT_VALUE (..) => PARAM_EXT_VALUE_DATA :: NAME , Self :: GIMBAL_MANAGER_INFORMATION (..) => GIMBAL_MANAGER_INFORMATION_DATA :: NAME , Self :: HYGROMETER_SENSOR (..) => HYGROMETER_SENSOR_DATA :: NAME , Self :: POSITION_TARGET_GLOBAL_INT (..) => POSITION_TARGET_GLOBAL_INT_DATA :: NAME , Self :: AUTOPILOT_STATE_FOR_GIMBAL_DEVICE (..) => AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: NAME , Self :: DATA_STREAM (..) => DATA_STREAM_DATA :: NAME , Self :: POWER_STATUS (..) => POWER_STATUS_DATA :: NAME , Self :: BUTTON_CHANGE (..) => BUTTON_CHANGE_DATA :: NAME , Self :: STATUSTEXT (..) => STATUSTEXT_DATA :: NAME , Self :: HIGHRES_IMU (..) => HIGHRES_IMU_DATA :: NAME , Self :: ESC_INFO (..) => ESC_INFO_DATA :: NAME , Self :: SCALED_IMU (..) => SCALED_IMU_DATA :: NAME , Self :: MISSION_SET_CURRENT (..) => MISSION_SET_CURRENT_DATA :: NAME , Self :: VIDEO_STREAM_INFORMATION (..) => VIDEO_STREAM_INFORMATION_DATA :: NAME , Self :: MISSION_WRITE_PARTIAL_LIST (..) => MISSION_WRITE_PARTIAL_LIST_DATA :: NAME , Self :: SET_ATTITUDE_TARGET (..) => SET_ATTITUDE_TARGET_DATA :: NAME , Self :: WHEEL_DISTANCE (..) => WHEEL_DISTANCE_DATA :: NAME , Self :: GLOBAL_VISION_POSITION_ESTIMATE (..) => GLOBAL_VISION_POSITION_ESTIMATE_DATA :: NAME , Self :: WINCH_STATUS (..) => WINCH_STATUS_DATA :: NAME , Self :: PLAY_TUNE (..) => PLAY_TUNE_DATA :: NAME , Self :: TUNNEL (..) => TUNNEL_DATA :: NAME , Self :: MISSION_REQUEST_LIST (..) => MISSION_REQUEST_LIST_DATA :: NAME , Self :: SET_POSITION_TARGET_GLOBAL_INT (..) => SET_POSITION_TARGET_GLOBAL_INT_DATA :: NAME , Self :: FOLLOW_TARGET (..) => FOLLOW_TARGET_DATA :: NAME , Self :: REQUEST_EVENT (..) => REQUEST_EVENT_DATA :: NAME , Self :: NAMED_VALUE_INT (..) => NAMED_VALUE_INT_DATA :: NAME , Self :: VFR_HUD (..) => VFR_HUD_DATA :: NAME , Self :: LOG_REQUEST_DATA (..) => LOG_REQUEST_DATA_DATA :: NAME , Self :: GPS2_RAW (..) => GPS2_RAW_DATA :: NAME , Self :: HIGH_LATENCY (..) => HIGH_LATENCY_DATA :: NAME , Self :: RADIO_STATUS (..) => RADIO_STATUS_DATA :: NAME , Self :: RAW_PRESSURE (..) => RAW_PRESSURE_DATA :: NAME , Self :: ALTITUDE (..) => ALTITUDE_DATA :: NAME , Self :: SET_POSITION_TARGET_LOCAL_NED (..) => SET_POSITION_TARGET_LOCAL_NED_DATA :: NAME , Self :: GIMBAL_MANAGER_SET_MANUAL_CONTROL (..) => GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: NAME , Self :: SCALED_IMU2 (..) => SCALED_IMU2_DATA :: NAME , Self :: GPS_RAW_INT (..) => GPS_RAW_INT_DATA :: NAME , Self :: MISSION_CLEAR_ALL (..) => MISSION_CLEAR_ALL_DATA :: NAME , Self :: SCALED_IMU3 (..) => SCALED_IMU3_DATA :: NAME , Self :: OPEN_DRONE_ID_LOCATION (..) => OPEN_DRONE_ID_LOCATION_DATA :: NAME , Self :: GPS_INJECT_DATA (..) => GPS_INJECT_DATA_DATA :: NAME , Self :: FILE_TRANSFER_PROTOCOL (..) => FILE_TRANSFER_PROTOCOL_DATA :: NAME , Self :: CAMERA_FOV_STATUS (..) => CAMERA_FOV_STATUS_DATA :: NAME , Self :: RC_CHANNELS_OVERRIDE (..) => RC_CHANNELS_OVERRIDE_DATA :: NAME , Self :: LANDING_TARGET (..) => LANDING_TARGET_DATA :: NAME , Self :: ISBD_LINK_STATUS (..) => ISBD_LINK_STATUS_DATA :: NAME , Self :: GIMBAL_DEVICE_INFORMATION (..) => GIMBAL_DEVICE_INFORMATION_DATA :: NAME , Self :: SET_HOME_POSITION (..) => SET_HOME_POSITION_DATA :: NAME , Self :: COMPONENT_INFORMATION (..) => COMPONENT_INFORMATION_DATA :: NAME , Self :: HOME_POSITION (..) => HOME_POSITION_DATA :: NAME , Self :: CAN_FILTER_MODIFY (..) => CAN_FILTER_MODIFY_DATA :: NAME , Self :: ENCAPSULATED_DATA (..) => ENCAPSULATED_DATA_DATA :: NAME , Self :: GENERATOR_STATUS (..) => GENERATOR_STATUS_DATA :: NAME , Self :: MESSAGE_INTERVAL (..) => MESSAGE_INTERVAL_DATA :: NAME , Self :: OPEN_DRONE_ID_MESSAGE_PACK (..) => OPEN_DRONE_ID_MESSAGE_PACK_DATA :: NAME , Self :: LOCAL_POSITION_NED_COV (..) => LOCAL_POSITION_NED_COV_DATA :: NAME , Self :: COMPONENT_METADATA (..) => COMPONENT_METADATA_DATA :: NAME , Self :: SIM_STATE (..) => SIM_STATE_DATA :: NAME , Self :: SERVO_OUTPUT_RAW (..) => SERVO_OUTPUT_RAW_DATA :: NAME , Self :: OPEN_DRONE_ID_BASIC_ID (..) => OPEN_DRONE_ID_BASIC_ID_DATA :: NAME , Self :: LOG_REQUEST_LIST (..) => LOG_REQUEST_LIST_DATA :: NAME , Self :: OPEN_DRONE_ID_SYSTEM_UPDATE (..) => OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: NAME , } } fn message_id (& self) -> u32 { match self { Self :: UAVIONIX_ADSB_OUT_CFG (..) => UAVIONIX_ADSB_OUT_CFG_DATA :: ID , Self :: ADSB_VEHICLE (..) => ADSB_VEHICLE_DATA :: ID , Self :: MISSION_ITEM (..) => MISSION_ITEM_DATA :: ID , Self :: CAMERA_TRIGGER (..) => CAMERA_TRIGGER_DATA :: ID , Self :: ONBOARD_COMPUTER_STATUS (..) => ONBOARD_COMPUTER_STATUS_DATA :: ID , Self :: ATTITUDE_TARGET (..) => ATTITUDE_TARGET_DATA :: ID , Self :: HIGH_LATENCY2 (..) => HIGH_LATENCY2_DATA :: ID , Self :: DEBUG_VECT (..) => DEBUG_VECT_DATA :: ID , Self :: LOG_REQUEST_END (..) => LOG_REQUEST_END_DATA :: ID , Self :: NAV_CONTROLLER_OUTPUT (..) => NAV_CONTROLLER_OUTPUT_DATA :: ID , Self :: UTM_GLOBAL_POSITION (..) => UTM_GLOBAL_POSITION_DATA :: ID , Self :: GPS_INPUT (..) => GPS_INPUT_DATA :: ID , Self :: UAVCAN_NODE_STATUS (..) => UAVCAN_NODE_STATUS_DATA :: ID , Self :: LOGGING_DATA_ACKED (..) => LOGGING_DATA_ACKED_DATA :: ID , Self :: RAW_RPM (..) => RAW_RPM_DATA :: ID , Self :: MISSION_REQUEST (..) => MISSION_REQUEST_DATA :: ID , Self :: HIL_ACTUATOR_CONTROLS (..) => HIL_ACTUATOR_CONTROLS_DATA :: ID , Self :: PARAM_REQUEST_LIST (..) => PARAM_REQUEST_LIST_DATA :: ID , Self :: MISSION_ITEM_INT (..) => MISSION_ITEM_INT_DATA :: ID , Self :: LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET (..) => LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: ID , Self :: EFI_STATUS (..) => EFI_STATUS_DATA :: ID , Self :: MISSION_ITEM_REACHED (..) => MISSION_ITEM_REACHED_DATA :: ID , Self :: REQUEST_DATA_STREAM (..) => REQUEST_DATA_STREAM_DATA :: ID , Self :: UAVIONIX_ADSB_OUT_DYNAMIC (..) => UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: ID , Self :: CAMERA_CAPTURE_STATUS (..) => CAMERA_CAPTURE_STATUS_DATA :: ID , Self :: MANUAL_CONTROL (..) => MANUAL_CONTROL_DATA :: ID , Self :: GIMBAL_MANAGER_SET_PITCHYAW (..) => GIMBAL_MANAGER_SET_PITCHYAW_DATA :: ID , Self :: GPS_GLOBAL_ORIGIN (..) => GPS_GLOBAL_ORIGIN_DATA :: ID , Self :: HIL_CONTROLS (..) => HIL_CONTROLS_DATA :: ID , Self :: OPTICAL_FLOW (..) => OPTICAL_FLOW_DATA :: ID , Self :: OPEN_DRONE_ID_SELF_ID (..) => OPEN_DRONE_ID_SELF_ID_DATA :: ID , Self :: TIME_ESTIMATE_TO_TARGET (..) => TIME_ESTIMATE_TO_TARGET_DATA :: ID , Self :: PARAM_VALUE (..) => PARAM_VALUE_DATA :: ID , Self :: DEBUG_FLOAT_ARRAY (..) => DEBUG_FLOAT_ARRAY_DATA :: ID , Self :: AIS_VESSEL (..) => AIS_VESSEL_DATA :: ID , Self :: ATTITUDE_QUATERNION_COV (..) => ATTITUDE_QUATERNION_COV_DATA :: ID , Self :: GLOBAL_POSITION_INT (..) => GLOBAL_POSITION_INT_DATA :: ID , Self :: LOG_ENTRY (..) => LOG_ENTRY_DATA :: ID , Self :: OBSTACLE_DISTANCE (..) => OBSTACLE_DISTANCE_DATA :: ID , Self :: MISSION_COUNT (..) => MISSION_COUNT_DATA :: ID , Self :: FENCE_STATUS (..) => FENCE_STATUS_DATA :: ID , Self :: EVENT (..) => EVENT_DATA :: ID , Self :: HIL_SENSOR (..) => HIL_SENSOR_DATA :: ID , Self :: RAW_IMU (..) => RAW_IMU_DATA :: ID , Self :: V2_EXTENSION (..) => V2_EXTENSION_DATA :: ID , Self :: SMART_BATTERY_INFO (..) => SMART_BATTERY_INFO_DATA :: ID , Self :: PARAM_EXT_SET (..) => PARAM_EXT_SET_DATA :: ID , Self :: TERRAIN_CHECK (..) => TERRAIN_CHECK_DATA :: ID , Self :: TRAJECTORY_REPRESENTATION_WAYPOINTS (..) => TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: ID , Self :: CAMERA_IMAGE_CAPTURED (..) => CAMERA_IMAGE_CAPTURED_DATA :: ID , Self :: HEARTBEAT (..) => HEARTBEAT_DATA :: ID , Self :: LOG_ERASE (..) => LOG_ERASE_DATA :: ID , Self :: MANUAL_SETPOINT (..) => MANUAL_SETPOINT_DATA :: ID , Self :: SYSTEM_TIME (..) => SYSTEM_TIME_DATA :: ID , Self :: HIL_GPS (..) => HIL_GPS_DATA :: ID , Self :: ESC_STATUS (..) => ESC_STATUS_DATA :: ID , Self :: CAMERA_TRACKING_GEO_STATUS (..) => CAMERA_TRACKING_GEO_STATUS_DATA :: ID , Self :: COMMAND_INT (..) => COMMAND_INT_DATA :: ID , Self :: HIL_RC_INPUTS_RAW (..) => HIL_RC_INPUTS_RAW_DATA :: ID , Self :: COMMAND_CANCEL (..) => COMMAND_CANCEL_DATA :: ID , Self :: TRAJECTORY_REPRESENTATION_BEZIER (..) => TRAJECTORY_REPRESENTATION_BEZIER_DATA :: ID , Self :: MISSION_CURRENT (..) => MISSION_CURRENT_DATA :: ID , Self :: UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT (..) => UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: ID , Self :: FLIGHT_INFORMATION (..) => FLIGHT_INFORMATION_DATA :: ID , Self :: SCALED_PRESSURE3 (..) => SCALED_PRESSURE3_DATA :: ID , Self :: LOGGING_DATA (..) => LOGGING_DATA_DATA :: ID , Self :: ESTIMATOR_STATUS (..) => ESTIMATOR_STATUS_DATA :: ID , Self :: SET_GPS_GLOBAL_ORIGIN (..) => SET_GPS_GLOBAL_ORIGIN_DATA :: ID , Self :: DEBUG (..) => DEBUG_DATA :: ID , Self :: LOG_DATA (..) => LOG_DATA_DATA :: ID , Self :: LOCAL_POSITION_NED (..) => LOCAL_POSITION_NED_DATA :: ID , Self :: CANFD_FRAME (..) => CANFD_FRAME_DATA :: ID , Self :: MISSION_REQUEST_INT (..) => MISSION_REQUEST_INT_DATA :: ID , Self :: COMMAND_LONG (..) => COMMAND_LONG_DATA :: ID , Self :: HIL_STATE_QUATERNION (..) => HIL_STATE_QUATERNION_DATA :: ID , Self :: RC_CHANNELS_RAW (..) => RC_CHANNELS_RAW_DATA :: ID , Self :: DISTANCE_SENSOR (..) => DISTANCE_SENSOR_DATA :: ID , Self :: PARAM_EXT_REQUEST_LIST (..) => PARAM_EXT_REQUEST_LIST_DATA :: ID , Self :: AUTH_KEY (..) => AUTH_KEY_DATA :: ID , Self :: MISSION_ACK (..) => MISSION_ACK_DATA :: ID , Self :: RESOURCE_REQUEST (..) => RESOURCE_REQUEST_DATA :: ID , Self :: SAFETY_ALLOWED_AREA (..) => SAFETY_ALLOWED_AREA_DATA :: ID , Self :: CAMERA_SETTINGS (..) => CAMERA_SETTINGS_DATA :: ID , Self :: GIMBAL_MANAGER_SET_ATTITUDE (..) => GIMBAL_MANAGER_SET_ATTITUDE_DATA :: ID , Self :: GPS_RTK (..) => GPS_RTK_DATA :: ID , Self :: PROTOCOL_VERSION (..) => PROTOCOL_VERSION_DATA :: ID , Self :: TERRAIN_REQUEST (..) => TERRAIN_REQUEST_DATA :: ID , Self :: POSITION_TARGET_LOCAL_NED (..) => POSITION_TARGET_LOCAL_NED_DATA :: ID , Self :: WIND_COV (..) => WIND_COV_DATA :: ID , Self :: COLLISION (..) => COLLISION_DATA :: ID , Self :: CELLULAR_CONFIG (..) => CELLULAR_CONFIG_DATA :: ID , Self :: CHANGE_OPERATOR_CONTROL_ACK (..) => CHANGE_OPERATOR_CONTROL_ACK_DATA :: ID , Self :: CONTROL_SYSTEM_STATE (..) => CONTROL_SYSTEM_STATE_DATA :: ID , Self :: RC_CHANNELS_SCALED (..) => RC_CHANNELS_SCALED_DATA :: ID , Self :: CAN_FRAME (..) => CAN_FRAME_DATA :: ID , Self :: VICON_POSITION_ESTIMATE (..) => VICON_POSITION_ESTIMATE_DATA :: ID , Self :: GIMBAL_MANAGER_STATUS (..) => GIMBAL_MANAGER_STATUS_DATA :: ID , Self :: SET_MODE (..) => SET_MODE_DATA :: ID , Self :: TERRAIN_DATA (..) => TERRAIN_DATA_DATA :: ID , Self :: CHANGE_OPERATOR_CONTROL (..) => CHANGE_OPERATOR_CONTROL_DATA :: ID , Self :: PARAM_MAP_RC (..) => PARAM_MAP_RC_DATA :: ID , Self :: VIBRATION (..) => VIBRATION_DATA :: ID , Self :: VISION_POSITION_ESTIMATE (..) => VISION_POSITION_ESTIMATE_DATA :: ID , Self :: GPS2_RTK (..) => GPS2_RTK_DATA :: ID , Self :: PLAY_TUNE_V2 (..) => PLAY_TUNE_V2_DATA :: ID , Self :: CELLULAR_STATUS (..) => CELLULAR_STATUS_DATA :: ID , Self :: OPEN_DRONE_ID_AUTHENTICATION (..) => OPEN_DRONE_ID_AUTHENTICATION_DATA :: ID , Self :: RESPONSE_EVENT_ERROR (..) => RESPONSE_EVENT_ERROR_DATA :: ID , Self :: SCALED_PRESSURE2 (..) => SCALED_PRESSURE2_DATA :: ID , Self :: NAMED_VALUE_FLOAT (..) => NAMED_VALUE_FLOAT_DATA :: ID , Self :: ATTITUDE_QUATERNION (..) => ATTITUDE_QUATERNION_DATA :: ID , Self :: TIMESYNC (..) => TIMESYNC_DATA :: ID , Self :: AUTOPILOT_VERSION (..) => AUTOPILOT_VERSION_DATA :: ID , Self :: MISSION_REQUEST_PARTIAL_LIST (..) => MISSION_REQUEST_PARTIAL_LIST_DATA :: ID , Self :: VISION_SPEED_ESTIMATE (..) => VISION_SPEED_ESTIMATE_DATA :: ID , Self :: SCALED_PRESSURE (..) => SCALED_PRESSURE_DATA :: ID , Self :: PARAM_REQUEST_READ (..) => PARAM_REQUEST_READ_DATA :: ID , Self :: PARAM_EXT_ACK (..) => PARAM_EXT_ACK_DATA :: ID , Self :: WIFI_CONFIG_AP (..) => WIFI_CONFIG_AP_DATA :: ID , Self :: EXTENDED_SYS_STATE (..) => EXTENDED_SYS_STATE_DATA :: ID , Self :: OPEN_DRONE_ID_OPERATOR_ID (..) => OPEN_DRONE_ID_OPERATOR_ID_DATA :: ID , Self :: GIMBAL_DEVICE_SET_ATTITUDE (..) => GIMBAL_DEVICE_SET_ATTITUDE_DATA :: ID , Self :: VIDEO_STREAM_STATUS (..) => VIDEO_STREAM_STATUS_DATA :: ID , Self :: UAVCAN_NODE_INFO (..) => UAVCAN_NODE_INFO_DATA :: ID , Self :: SAFETY_SET_ALLOWED_AREA (..) => SAFETY_SET_ALLOWED_AREA_DATA :: ID , Self :: GLOBAL_POSITION_INT_COV (..) => GLOBAL_POSITION_INT_COV_DATA :: ID , Self :: SYS_STATUS (..) => SYS_STATUS_DATA :: ID , Self :: ODOMETRY (..) => ODOMETRY_DATA :: ID , Self :: CAMERA_INFORMATION (..) => CAMERA_INFORMATION_DATA :: ID , Self :: HIL_STATE (..) => HIL_STATE_DATA :: ID , Self :: CAMERA_TRACKING_IMAGE_STATUS (..) => CAMERA_TRACKING_IMAGE_STATUS_DATA :: ID , Self :: SET_ACTUATOR_CONTROL_TARGET (..) => SET_ACTUATOR_CONTROL_TARGET_DATA :: ID , Self :: TERRAIN_REPORT (..) => TERRAIN_REPORT_DATA :: ID , Self :: ACTUATOR_OUTPUT_STATUS (..) => ACTUATOR_OUTPUT_STATUS_DATA :: ID , Self :: PARAM_EXT_REQUEST_READ (..) => PARAM_EXT_REQUEST_READ_DATA :: ID , Self :: SUPPORTED_TUNES (..) => SUPPORTED_TUNES_DATA :: ID , Self :: CURRENT_EVENT_SEQUENCE (..) => CURRENT_EVENT_SEQUENCE_DATA :: ID , Self :: PARAM_SET (..) => PARAM_SET_DATA :: ID , Self :: BATTERY_STATUS (..) => BATTERY_STATUS_DATA :: ID , Self :: MAG_CAL_REPORT (..) => MAG_CAL_REPORT_DATA :: ID , Self :: STORAGE_INFORMATION (..) => STORAGE_INFORMATION_DATA :: ID , Self :: SETUP_SIGNING (..) => SETUP_SIGNING_DATA :: ID , Self :: MOUNT_ORIENTATION (..) => MOUNT_ORIENTATION_DATA :: ID , Self :: OPTICAL_FLOW_RAD (..) => OPTICAL_FLOW_RAD_DATA :: ID , Self :: RC_CHANNELS (..) => RC_CHANNELS_DATA :: ID , Self :: GPS_RTCM_DATA (..) => GPS_RTCM_DATA_DATA :: ID , Self :: ACTUATOR_CONTROL_TARGET (..) => ACTUATOR_CONTROL_TARGET_DATA :: ID , Self :: ORBIT_EXECUTION_STATUS (..) => ORBIT_EXECUTION_STATUS_DATA :: ID , Self :: GIMBAL_DEVICE_ATTITUDE_STATUS (..) => GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: ID , Self :: PING (..) => PING_DATA :: ID , Self :: ATTITUDE (..) => ATTITUDE_DATA :: ID , Self :: OPEN_DRONE_ID_ARM_STATUS (..) => OPEN_DRONE_ID_ARM_STATUS_DATA :: ID , Self :: LOGGING_ACK (..) => LOGGING_ACK_DATA :: ID , Self :: ATT_POS_MOCAP (..) => ATT_POS_MOCAP_DATA :: ID , Self :: LINK_NODE_STATUS (..) => LINK_NODE_STATUS_DATA :: ID , Self :: MEMORY_VECT (..) => MEMORY_VECT_DATA :: ID , Self :: GPS_STATUS (..) => GPS_STATUS_DATA :: ID , Self :: HIL_OPTICAL_FLOW (..) => HIL_OPTICAL_FLOW_DATA :: ID , Self :: SERIAL_CONTROL (..) => SERIAL_CONTROL_DATA :: ID , Self :: DATA_TRANSMISSION_HANDSHAKE (..) => DATA_TRANSMISSION_HANDSHAKE_DATA :: ID , Self :: COMMAND_ACK (..) => COMMAND_ACK_DATA :: ID , Self :: OPEN_DRONE_ID_SYSTEM (..) => OPEN_DRONE_ID_SYSTEM_DATA :: ID , Self :: PARAM_EXT_VALUE (..) => PARAM_EXT_VALUE_DATA :: ID , Self :: GIMBAL_MANAGER_INFORMATION (..) => GIMBAL_MANAGER_INFORMATION_DATA :: ID , Self :: HYGROMETER_SENSOR (..) => HYGROMETER_SENSOR_DATA :: ID , Self :: POSITION_TARGET_GLOBAL_INT (..) => POSITION_TARGET_GLOBAL_INT_DATA :: ID , Self :: AUTOPILOT_STATE_FOR_GIMBAL_DEVICE (..) => AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: ID , Self :: DATA_STREAM (..) => DATA_STREAM_DATA :: ID , Self :: POWER_STATUS (..) => POWER_STATUS_DATA :: ID , Self :: BUTTON_CHANGE (..) => BUTTON_CHANGE_DATA :: ID , Self :: STATUSTEXT (..) => STATUSTEXT_DATA :: ID , Self :: HIGHRES_IMU (..) => HIGHRES_IMU_DATA :: ID , Self :: ESC_INFO (..) => ESC_INFO_DATA :: ID , Self :: SCALED_IMU (..) => SCALED_IMU_DATA :: ID , Self :: MISSION_SET_CURRENT (..) => MISSION_SET_CURRENT_DATA :: ID , Self :: VIDEO_STREAM_INFORMATION (..) => VIDEO_STREAM_INFORMATION_DATA :: ID , Self :: MISSION_WRITE_PARTIAL_LIST (..) => MISSION_WRITE_PARTIAL_LIST_DATA :: ID , Self :: SET_ATTITUDE_TARGET (..) => SET_ATTITUDE_TARGET_DATA :: ID , Self :: WHEEL_DISTANCE (..) => WHEEL_DISTANCE_DATA :: ID , Self :: GLOBAL_VISION_POSITION_ESTIMATE (..) => GLOBAL_VISION_POSITION_ESTIMATE_DATA :: ID , Self :: WINCH_STATUS (..) => WINCH_STATUS_DATA :: ID , Self :: PLAY_TUNE (..) => PLAY_TUNE_DATA :: ID , Self :: TUNNEL (..) => TUNNEL_DATA :: ID , Self :: MISSION_REQUEST_LIST (..) => MISSION_REQUEST_LIST_DATA :: ID , Self :: SET_POSITION_TARGET_GLOBAL_INT (..) => SET_POSITION_TARGET_GLOBAL_INT_DATA :: ID , Self :: FOLLOW_TARGET (..) => FOLLOW_TARGET_DATA :: ID , Self :: REQUEST_EVENT (..) => REQUEST_EVENT_DATA :: ID , Self :: NAMED_VALUE_INT (..) => NAMED_VALUE_INT_DATA :: ID , Self :: VFR_HUD (..) => VFR_HUD_DATA :: ID , Self :: LOG_REQUEST_DATA (..) => LOG_REQUEST_DATA_DATA :: ID , Self :: GPS2_RAW (..) => GPS2_RAW_DATA :: ID , Self :: HIGH_LATENCY (..) => HIGH_LATENCY_DATA :: ID , Self :: RADIO_STATUS (..) => RADIO_STATUS_DATA :: ID , Self :: RAW_PRESSURE (..) => RAW_PRESSURE_DATA :: ID , Self :: ALTITUDE (..) => ALTITUDE_DATA :: ID , Self :: SET_POSITION_TARGET_LOCAL_NED (..) => SET_POSITION_TARGET_LOCAL_NED_DATA :: ID , Self :: GIMBAL_MANAGER_SET_MANUAL_CONTROL (..) => GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: ID , Self :: SCALED_IMU2 (..) => SCALED_IMU2_DATA :: ID , Self :: GPS_RAW_INT (..) => GPS_RAW_INT_DATA :: ID , Self :: MISSION_CLEAR_ALL (..) => MISSION_CLEAR_ALL_DATA :: ID , Self :: SCALED_IMU3 (..) => SCALED_IMU3_DATA :: ID , Self :: OPEN_DRONE_ID_LOCATION (..) => OPEN_DRONE_ID_LOCATION_DATA :: ID , Self :: GPS_INJECT_DATA (..) => GPS_INJECT_DATA_DATA :: ID , Self :: FILE_TRANSFER_PROTOCOL (..) => FILE_TRANSFER_PROTOCOL_DATA :: ID , Self :: CAMERA_FOV_STATUS (..) => CAMERA_FOV_STATUS_DATA :: ID , Self :: RC_CHANNELS_OVERRIDE (..) => RC_CHANNELS_OVERRIDE_DATA :: ID , Self :: LANDING_TARGET (..) => LANDING_TARGET_DATA :: ID , Self :: ISBD_LINK_STATUS (..) => ISBD_LINK_STATUS_DATA :: ID , Self :: GIMBAL_DEVICE_INFORMATION (..) => GIMBAL_DEVICE_INFORMATION_DATA :: ID , Self :: SET_HOME_POSITION (..) => SET_HOME_POSITION_DATA :: ID , Self :: COMPONENT_INFORMATION (..) => COMPONENT_INFORMATION_DATA :: ID , Self :: HOME_POSITION (..) => HOME_POSITION_DATA :: ID , Self :: CAN_FILTER_MODIFY (..) => CAN_FILTER_MODIFY_DATA :: ID , Self :: ENCAPSULATED_DATA (..) => ENCAPSULATED_DATA_DATA :: ID , Self :: GENERATOR_STATUS (..) => GENERATOR_STATUS_DATA :: ID , Self :: MESSAGE_INTERVAL (..) => MESSAGE_INTERVAL_DATA :: ID , Self :: OPEN_DRONE_ID_MESSAGE_PACK (..) => OPEN_DRONE_ID_MESSAGE_PACK_DATA :: ID , Self :: LOCAL_POSITION_NED_COV (..) => LOCAL_POSITION_NED_COV_DATA :: ID , Self :: COMPONENT_METADATA (..) => COMPONENT_METADATA_DATA :: ID , Self :: SIM_STATE (..) => SIM_STATE_DATA :: ID , Self :: SERVO_OUTPUT_RAW (..) => SERVO_OUTPUT_RAW_DATA :: ID , Self :: OPEN_DRONE_ID_BASIC_ID (..) => OPEN_DRONE_ID_BASIC_ID_DATA :: ID , Self :: LOG_REQUEST_LIST (..) => LOG_REQUEST_LIST_DATA :: ID , Self :: OPEN_DRONE_ID_SYSTEM_UPDATE (..) => OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: ID , } } fn message_id_from_name (name : & str) -> Result < u32 , & 'static str > { match name { UAVIONIX_ADSB_OUT_CFG_DATA :: NAME => Ok (UAVIONIX_ADSB_OUT_CFG_DATA :: ID) , ADSB_VEHICLE_DATA :: NAME => Ok (ADSB_VEHICLE_DATA :: ID) , MISSION_ITEM_DATA :: NAME => Ok (MISSION_ITEM_DATA :: ID) , CAMERA_TRIGGER_DATA :: NAME => Ok (CAMERA_TRIGGER_DATA :: ID) , ONBOARD_COMPUTER_STATUS_DATA :: NAME => Ok (ONBOARD_COMPUTER_STATUS_DATA :: ID) , ATTITUDE_TARGET_DATA :: NAME => Ok (ATTITUDE_TARGET_DATA :: ID) , HIGH_LATENCY2_DATA :: NAME => Ok (HIGH_LATENCY2_DATA :: ID) , DEBUG_VECT_DATA :: NAME => Ok (DEBUG_VECT_DATA :: ID) , LOG_REQUEST_END_DATA :: NAME => Ok (LOG_REQUEST_END_DATA :: ID) , NAV_CONTROLLER_OUTPUT_DATA :: NAME => Ok (NAV_CONTROLLER_OUTPUT_DATA :: ID) , UTM_GLOBAL_POSITION_DATA :: NAME => Ok (UTM_GLOBAL_POSITION_DATA :: ID) , GPS_INPUT_DATA :: NAME => Ok (GPS_INPUT_DATA :: ID) , UAVCAN_NODE_STATUS_DATA :: NAME => Ok (UAVCAN_NODE_STATUS_DATA :: ID) , LOGGING_DATA_ACKED_DATA :: NAME => Ok (LOGGING_DATA_ACKED_DATA :: ID) , RAW_RPM_DATA :: NAME => Ok (RAW_RPM_DATA :: ID) , MISSION_REQUEST_DATA :: NAME => Ok (MISSION_REQUEST_DATA :: ID) , HIL_ACTUATOR_CONTROLS_DATA :: NAME => Ok (HIL_ACTUATOR_CONTROLS_DATA :: ID) , PARAM_REQUEST_LIST_DATA :: NAME => Ok (PARAM_REQUEST_LIST_DATA :: ID) , MISSION_ITEM_INT_DATA :: NAME => Ok (MISSION_ITEM_INT_DATA :: ID) , LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: NAME => Ok (LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: ID) , EFI_STATUS_DATA :: NAME => Ok (EFI_STATUS_DATA :: ID) , MISSION_ITEM_REACHED_DATA :: NAME => Ok (MISSION_ITEM_REACHED_DATA :: ID) , REQUEST_DATA_STREAM_DATA :: NAME => Ok (REQUEST_DATA_STREAM_DATA :: ID) , UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: NAME => Ok (UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: ID) , CAMERA_CAPTURE_STATUS_DATA :: NAME => Ok (CAMERA_CAPTURE_STATUS_DATA :: ID) , MANUAL_CONTROL_DATA :: NAME => Ok (MANUAL_CONTROL_DATA :: ID) , GIMBAL_MANAGER_SET_PITCHYAW_DATA :: NAME => Ok (GIMBAL_MANAGER_SET_PITCHYAW_DATA :: ID) , GPS_GLOBAL_ORIGIN_DATA :: NAME => Ok (GPS_GLOBAL_ORIGIN_DATA :: ID) , HIL_CONTROLS_DATA :: NAME => Ok (HIL_CONTROLS_DATA :: ID) , OPTICAL_FLOW_DATA :: NAME => Ok (OPTICAL_FLOW_DATA :: ID) , OPEN_DRONE_ID_SELF_ID_DATA :: NAME => Ok (OPEN_DRONE_ID_SELF_ID_DATA :: ID) , TIME_ESTIMATE_TO_TARGET_DATA :: NAME => Ok (TIME_ESTIMATE_TO_TARGET_DATA :: ID) , PARAM_VALUE_DATA :: NAME => Ok (PARAM_VALUE_DATA :: ID) , DEBUG_FLOAT_ARRAY_DATA :: NAME => Ok (DEBUG_FLOAT_ARRAY_DATA :: ID) , AIS_VESSEL_DATA :: NAME => Ok (AIS_VESSEL_DATA :: ID) , ATTITUDE_QUATERNION_COV_DATA :: NAME => Ok (ATTITUDE_QUATERNION_COV_DATA :: ID) , GLOBAL_POSITION_INT_DATA :: NAME => Ok (GLOBAL_POSITION_INT_DATA :: ID) , LOG_ENTRY_DATA :: NAME => Ok (LOG_ENTRY_DATA :: ID) , OBSTACLE_DISTANCE_DATA :: NAME => Ok (OBSTACLE_DISTANCE_DATA :: ID) , MISSION_COUNT_DATA :: NAME => Ok (MISSION_COUNT_DATA :: ID) , FENCE_STATUS_DATA :: NAME => Ok (FENCE_STATUS_DATA :: ID) , EVENT_DATA :: NAME => Ok (EVENT_DATA :: ID) , HIL_SENSOR_DATA :: NAME => Ok (HIL_SENSOR_DATA :: ID) , RAW_IMU_DATA :: NAME => Ok (RAW_IMU_DATA :: ID) , V2_EXTENSION_DATA :: NAME => Ok (V2_EXTENSION_DATA :: ID) , SMART_BATTERY_INFO_DATA :: NAME => Ok (SMART_BATTERY_INFO_DATA :: ID) , PARAM_EXT_SET_DATA :: NAME => Ok (PARAM_EXT_SET_DATA :: ID) , TERRAIN_CHECK_DATA :: NAME => Ok (TERRAIN_CHECK_DATA :: ID) , TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: NAME => Ok (TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: ID) , CAMERA_IMAGE_CAPTURED_DATA :: NAME => Ok (CAMERA_IMAGE_CAPTURED_DATA :: ID) , HEARTBEAT_DATA :: NAME => Ok (HEARTBEAT_DATA :: ID) , LOG_ERASE_DATA :: NAME => Ok (LOG_ERASE_DATA :: ID) , MANUAL_SETPOINT_DATA :: NAME => Ok (MANUAL_SETPOINT_DATA :: ID) , SYSTEM_TIME_DATA :: NAME => Ok (SYSTEM_TIME_DATA :: ID) , HIL_GPS_DATA :: NAME => Ok (HIL_GPS_DATA :: ID) , ESC_STATUS_DATA :: NAME => Ok (ESC_STATUS_DATA :: ID) , CAMERA_TRACKING_GEO_STATUS_DATA :: NAME => Ok (CAMERA_TRACKING_GEO_STATUS_DATA :: ID) , COMMAND_INT_DATA :: NAME => Ok (COMMAND_INT_DATA :: ID) , HIL_RC_INPUTS_RAW_DATA :: NAME => Ok (HIL_RC_INPUTS_RAW_DATA :: ID) , COMMAND_CANCEL_DATA :: NAME => Ok (COMMAND_CANCEL_DATA :: ID) , TRAJECTORY_REPRESENTATION_BEZIER_DATA :: NAME => Ok (TRAJECTORY_REPRESENTATION_BEZIER_DATA :: ID) , MISSION_CURRENT_DATA :: NAME => Ok (MISSION_CURRENT_DATA :: ID) , UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: NAME => Ok (UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: ID) , FLIGHT_INFORMATION_DATA :: NAME => Ok (FLIGHT_INFORMATION_DATA :: ID) , SCALED_PRESSURE3_DATA :: NAME => Ok (SCALED_PRESSURE3_DATA :: ID) , LOGGING_DATA_DATA :: NAME => Ok (LOGGING_DATA_DATA :: ID) , ESTIMATOR_STATUS_DATA :: NAME => Ok (ESTIMATOR_STATUS_DATA :: ID) , SET_GPS_GLOBAL_ORIGIN_DATA :: NAME => Ok (SET_GPS_GLOBAL_ORIGIN_DATA :: ID) , DEBUG_DATA :: NAME => Ok (DEBUG_DATA :: ID) , LOG_DATA_DATA :: NAME => Ok (LOG_DATA_DATA :: ID) , LOCAL_POSITION_NED_DATA :: NAME => Ok (LOCAL_POSITION_NED_DATA :: ID) , CANFD_FRAME_DATA :: NAME => Ok (CANFD_FRAME_DATA :: ID) , MISSION_REQUEST_INT_DATA :: NAME => Ok (MISSION_REQUEST_INT_DATA :: ID) , COMMAND_LONG_DATA :: NAME => Ok (COMMAND_LONG_DATA :: ID) , HIL_STATE_QUATERNION_DATA :: NAME => Ok (HIL_STATE_QUATERNION_DATA :: ID) , RC_CHANNELS_RAW_DATA :: NAME => Ok (RC_CHANNELS_RAW_DATA :: ID) , DISTANCE_SENSOR_DATA :: NAME => Ok (DISTANCE_SENSOR_DATA :: ID) , PARAM_EXT_REQUEST_LIST_DATA :: NAME => Ok (PARAM_EXT_REQUEST_LIST_DATA :: ID) , AUTH_KEY_DATA :: NAME => Ok (AUTH_KEY_DATA :: ID) , MISSION_ACK_DATA :: NAME => Ok (MISSION_ACK_DATA :: ID) , RESOURCE_REQUEST_DATA :: NAME => Ok (RESOURCE_REQUEST_DATA :: ID) , SAFETY_ALLOWED_AREA_DATA :: NAME => Ok (SAFETY_ALLOWED_AREA_DATA :: ID) , CAMERA_SETTINGS_DATA :: NAME => Ok (CAMERA_SETTINGS_DATA :: ID) , GIMBAL_MANAGER_SET_ATTITUDE_DATA :: NAME => Ok (GIMBAL_MANAGER_SET_ATTITUDE_DATA :: ID) , GPS_RTK_DATA :: NAME => Ok (GPS_RTK_DATA :: ID) , PROTOCOL_VERSION_DATA :: NAME => Ok (PROTOCOL_VERSION_DATA :: ID) , TERRAIN_REQUEST_DATA :: NAME => Ok (TERRAIN_REQUEST_DATA :: ID) , POSITION_TARGET_LOCAL_NED_DATA :: NAME => Ok (POSITION_TARGET_LOCAL_NED_DATA :: ID) , WIND_COV_DATA :: NAME => Ok (WIND_COV_DATA :: ID) , COLLISION_DATA :: NAME => Ok (COLLISION_DATA :: ID) , CELLULAR_CONFIG_DATA :: NAME => Ok (CELLULAR_CONFIG_DATA :: ID) , CHANGE_OPERATOR_CONTROL_ACK_DATA :: NAME => Ok (CHANGE_OPERATOR_CONTROL_ACK_DATA :: ID) , CONTROL_SYSTEM_STATE_DATA :: NAME => Ok (CONTROL_SYSTEM_STATE_DATA :: ID) , RC_CHANNELS_SCALED_DATA :: NAME => Ok (RC_CHANNELS_SCALED_DATA :: ID) , CAN_FRAME_DATA :: NAME => Ok (CAN_FRAME_DATA :: ID) , VICON_POSITION_ESTIMATE_DATA :: NAME => Ok (VICON_POSITION_ESTIMATE_DATA :: ID) , GIMBAL_MANAGER_STATUS_DATA :: NAME => Ok (GIMBAL_MANAGER_STATUS_DATA :: ID) , SET_MODE_DATA :: NAME => Ok (SET_MODE_DATA :: ID) , TERRAIN_DATA_DATA :: NAME => Ok (TERRAIN_DATA_DATA :: ID) , CHANGE_OPERATOR_CONTROL_DATA :: NAME => Ok (CHANGE_OPERATOR_CONTROL_DATA :: ID) , PARAM_MAP_RC_DATA :: NAME => Ok (PARAM_MAP_RC_DATA :: ID) , VIBRATION_DATA :: NAME => Ok (VIBRATION_DATA :: ID) , VISION_POSITION_ESTIMATE_DATA :: NAME => Ok (VISION_POSITION_ESTIMATE_DATA :: ID) , GPS2_RTK_DATA :: NAME => Ok (GPS2_RTK_DATA :: ID) , PLAY_TUNE_V2_DATA :: NAME => Ok (PLAY_TUNE_V2_DATA :: ID) , CELLULAR_STATUS_DATA :: NAME => Ok (CELLULAR_STATUS_DATA :: ID) , OPEN_DRONE_ID_AUTHENTICATION_DATA :: NAME => Ok (OPEN_DRONE_ID_AUTHENTICATION_DATA :: ID) , RESPONSE_EVENT_ERROR_DATA :: NAME => Ok (RESPONSE_EVENT_ERROR_DATA :: ID) , SCALED_PRESSURE2_DATA :: NAME => Ok (SCALED_PRESSURE2_DATA :: ID) , NAMED_VALUE_FLOAT_DATA :: NAME => Ok (NAMED_VALUE_FLOAT_DATA :: ID) , ATTITUDE_QUATERNION_DATA :: NAME => Ok (ATTITUDE_QUATERNION_DATA :: ID) , TIMESYNC_DATA :: NAME => Ok (TIMESYNC_DATA :: ID) , AUTOPILOT_VERSION_DATA :: NAME => Ok (AUTOPILOT_VERSION_DATA :: ID) , MISSION_REQUEST_PARTIAL_LIST_DATA :: NAME => Ok (MISSION_REQUEST_PARTIAL_LIST_DATA :: ID) , VISION_SPEED_ESTIMATE_DATA :: NAME => Ok (VISION_SPEED_ESTIMATE_DATA :: ID) , SCALED_PRESSURE_DATA :: NAME => Ok (SCALED_PRESSURE_DATA :: ID) , PARAM_REQUEST_READ_DATA :: NAME => Ok (PARAM_REQUEST_READ_DATA :: ID) , PARAM_EXT_ACK_DATA :: NAME => Ok (PARAM_EXT_ACK_DATA :: ID) , WIFI_CONFIG_AP_DATA :: NAME => Ok (WIFI_CONFIG_AP_DATA :: ID) , EXTENDED_SYS_STATE_DATA :: NAME => Ok (EXTENDED_SYS_STATE_DATA :: ID) , OPEN_DRONE_ID_OPERATOR_ID_DATA :: NAME => Ok (OPEN_DRONE_ID_OPERATOR_ID_DATA :: ID) , GIMBAL_DEVICE_SET_ATTITUDE_DATA :: NAME => Ok (GIMBAL_DEVICE_SET_ATTITUDE_DATA :: ID) , VIDEO_STREAM_STATUS_DATA :: NAME => Ok (VIDEO_STREAM_STATUS_DATA :: ID) , UAVCAN_NODE_INFO_DATA :: NAME => Ok (UAVCAN_NODE_INFO_DATA :: ID) , SAFETY_SET_ALLOWED_AREA_DATA :: NAME => Ok (SAFETY_SET_ALLOWED_AREA_DATA :: ID) , GLOBAL_POSITION_INT_COV_DATA :: NAME => Ok (GLOBAL_POSITION_INT_COV_DATA :: ID) , SYS_STATUS_DATA :: NAME => Ok (SYS_STATUS_DATA :: ID) , ODOMETRY_DATA :: NAME => Ok (ODOMETRY_DATA :: ID) , CAMERA_INFORMATION_DATA :: NAME => Ok (CAMERA_INFORMATION_DATA :: ID) , HIL_STATE_DATA :: NAME => Ok (HIL_STATE_DATA :: ID) , CAMERA_TRACKING_IMAGE_STATUS_DATA :: NAME => Ok (CAMERA_TRACKING_IMAGE_STATUS_DATA :: ID) , SET_ACTUATOR_CONTROL_TARGET_DATA :: NAME => Ok (SET_ACTUATOR_CONTROL_TARGET_DATA :: ID) , TERRAIN_REPORT_DATA :: NAME => Ok (TERRAIN_REPORT_DATA :: ID) , ACTUATOR_OUTPUT_STATUS_DATA :: NAME => Ok (ACTUATOR_OUTPUT_STATUS_DATA :: ID) , PARAM_EXT_REQUEST_READ_DATA :: NAME => Ok (PARAM_EXT_REQUEST_READ_DATA :: ID) , SUPPORTED_TUNES_DATA :: NAME => Ok (SUPPORTED_TUNES_DATA :: ID) , CURRENT_EVENT_SEQUENCE_DATA :: NAME => Ok (CURRENT_EVENT_SEQUENCE_DATA :: ID) , PARAM_SET_DATA :: NAME => Ok (PARAM_SET_DATA :: ID) , BATTERY_STATUS_DATA :: NAME => Ok (BATTERY_STATUS_DATA :: ID) , MAG_CAL_REPORT_DATA :: NAME => Ok (MAG_CAL_REPORT_DATA :: ID) , STORAGE_INFORMATION_DATA :: NAME => Ok (STORAGE_INFORMATION_DATA :: ID) , SETUP_SIGNING_DATA :: NAME => Ok (SETUP_SIGNING_DATA :: ID) , MOUNT_ORIENTATION_DATA :: NAME => Ok (MOUNT_ORIENTATION_DATA :: ID) , OPTICAL_FLOW_RAD_DATA :: NAME => Ok (OPTICAL_FLOW_RAD_DATA :: ID) , RC_CHANNELS_DATA :: NAME => Ok (RC_CHANNELS_DATA :: ID) , GPS_RTCM_DATA_DATA :: NAME => Ok (GPS_RTCM_DATA_DATA :: ID) , ACTUATOR_CONTROL_TARGET_DATA :: NAME => Ok (ACTUATOR_CONTROL_TARGET_DATA :: ID) , ORBIT_EXECUTION_STATUS_DATA :: NAME => Ok (ORBIT_EXECUTION_STATUS_DATA :: ID) , GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: NAME => Ok (GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: ID) , PING_DATA :: NAME => Ok (PING_DATA :: ID) , ATTITUDE_DATA :: NAME => Ok (ATTITUDE_DATA :: ID) , OPEN_DRONE_ID_ARM_STATUS_DATA :: NAME => Ok (OPEN_DRONE_ID_ARM_STATUS_DATA :: ID) , LOGGING_ACK_DATA :: NAME => Ok (LOGGING_ACK_DATA :: ID) , ATT_POS_MOCAP_DATA :: NAME => Ok (ATT_POS_MOCAP_DATA :: ID) , LINK_NODE_STATUS_DATA :: NAME => Ok (LINK_NODE_STATUS_DATA :: ID) , MEMORY_VECT_DATA :: NAME => Ok (MEMORY_VECT_DATA :: ID) , GPS_STATUS_DATA :: NAME => Ok (GPS_STATUS_DATA :: ID) , HIL_OPTICAL_FLOW_DATA :: NAME => Ok (HIL_OPTICAL_FLOW_DATA :: ID) , SERIAL_CONTROL_DATA :: NAME => Ok (SERIAL_CONTROL_DATA :: ID) , DATA_TRANSMISSION_HANDSHAKE_DATA :: NAME => Ok (DATA_TRANSMISSION_HANDSHAKE_DATA :: ID) , COMMAND_ACK_DATA :: NAME => Ok (COMMAND_ACK_DATA :: ID) , OPEN_DRONE_ID_SYSTEM_DATA :: NAME => Ok (OPEN_DRONE_ID_SYSTEM_DATA :: ID) , PARAM_EXT_VALUE_DATA :: NAME => Ok (PARAM_EXT_VALUE_DATA :: ID) , GIMBAL_MANAGER_INFORMATION_DATA :: NAME => Ok (GIMBAL_MANAGER_INFORMATION_DATA :: ID) , HYGROMETER_SENSOR_DATA :: NAME => Ok (HYGROMETER_SENSOR_DATA :: ID) , POSITION_TARGET_GLOBAL_INT_DATA :: NAME => Ok (POSITION_TARGET_GLOBAL_INT_DATA :: ID) , AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: NAME => Ok (AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: ID) , DATA_STREAM_DATA :: NAME => Ok (DATA_STREAM_DATA :: ID) , POWER_STATUS_DATA :: NAME => Ok (POWER_STATUS_DATA :: ID) , BUTTON_CHANGE_DATA :: NAME => Ok (BUTTON_CHANGE_DATA :: ID) , STATUSTEXT_DATA :: NAME => Ok (STATUSTEXT_DATA :: ID) , HIGHRES_IMU_DATA :: NAME => Ok (HIGHRES_IMU_DATA :: ID) , ESC_INFO_DATA :: NAME => Ok (ESC_INFO_DATA :: ID) , SCALED_IMU_DATA :: NAME => Ok (SCALED_IMU_DATA :: ID) , MISSION_SET_CURRENT_DATA :: NAME => Ok (MISSION_SET_CURRENT_DATA :: ID) , VIDEO_STREAM_INFORMATION_DATA :: NAME => Ok (VIDEO_STREAM_INFORMATION_DATA :: ID) , MISSION_WRITE_PARTIAL_LIST_DATA :: NAME => Ok (MISSION_WRITE_PARTIAL_LIST_DATA :: ID) , SET_ATTITUDE_TARGET_DATA :: NAME => Ok (SET_ATTITUDE_TARGET_DATA :: ID) , WHEEL_DISTANCE_DATA :: NAME => Ok (WHEEL_DISTANCE_DATA :: ID) , GLOBAL_VISION_POSITION_ESTIMATE_DATA :: NAME => Ok (GLOBAL_VISION_POSITION_ESTIMATE_DATA :: ID) , WINCH_STATUS_DATA :: NAME => Ok (WINCH_STATUS_DATA :: ID) , PLAY_TUNE_DATA :: NAME => Ok (PLAY_TUNE_DATA :: ID) , TUNNEL_DATA :: NAME => Ok (TUNNEL_DATA :: ID) , MISSION_REQUEST_LIST_DATA :: NAME => Ok (MISSION_REQUEST_LIST_DATA :: ID) , SET_POSITION_TARGET_GLOBAL_INT_DATA :: NAME => Ok (SET_POSITION_TARGET_GLOBAL_INT_DATA :: ID) , FOLLOW_TARGET_DATA :: NAME => Ok (FOLLOW_TARGET_DATA :: ID) , REQUEST_EVENT_DATA :: NAME => Ok (REQUEST_EVENT_DATA :: ID) , NAMED_VALUE_INT_DATA :: NAME => Ok (NAMED_VALUE_INT_DATA :: ID) , VFR_HUD_DATA :: NAME => Ok (VFR_HUD_DATA :: ID) , LOG_REQUEST_DATA_DATA :: NAME => Ok (LOG_REQUEST_DATA_DATA :: ID) , GPS2_RAW_DATA :: NAME => Ok (GPS2_RAW_DATA :: ID) , HIGH_LATENCY_DATA :: NAME => Ok (HIGH_LATENCY_DATA :: ID) , RADIO_STATUS_DATA :: NAME => Ok (RADIO_STATUS_DATA :: ID) , RAW_PRESSURE_DATA :: NAME => Ok (RAW_PRESSURE_DATA :: ID) , ALTITUDE_DATA :: NAME => Ok (ALTITUDE_DATA :: ID) , SET_POSITION_TARGET_LOCAL_NED_DATA :: NAME => Ok (SET_POSITION_TARGET_LOCAL_NED_DATA :: ID) , GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: NAME => Ok (GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: ID) , SCALED_IMU2_DATA :: NAME => Ok (SCALED_IMU2_DATA :: ID) , GPS_RAW_INT_DATA :: NAME => Ok (GPS_RAW_INT_DATA :: ID) , MISSION_CLEAR_ALL_DATA :: NAME => Ok (MISSION_CLEAR_ALL_DATA :: ID) , SCALED_IMU3_DATA :: NAME => Ok (SCALED_IMU3_DATA :: ID) , OPEN_DRONE_ID_LOCATION_DATA :: NAME => Ok (OPEN_DRONE_ID_LOCATION_DATA :: ID) , GPS_INJECT_DATA_DATA :: NAME => Ok (GPS_INJECT_DATA_DATA :: ID) , FILE_TRANSFER_PROTOCOL_DATA :: NAME => Ok (FILE_TRANSFER_PROTOCOL_DATA :: ID) , CAMERA_FOV_STATUS_DATA :: NAME => Ok (CAMERA_FOV_STATUS_DATA :: ID) , RC_CHANNELS_OVERRIDE_DATA :: NAME => Ok (RC_CHANNELS_OVERRIDE_DATA :: ID) , LANDING_TARGET_DATA :: NAME => Ok (LANDING_TARGET_DATA :: ID) , ISBD_LINK_STATUS_DATA :: NAME => Ok (ISBD_LINK_STATUS_DATA :: ID) , GIMBAL_DEVICE_INFORMATION_DATA :: NAME => Ok (GIMBAL_DEVICE_INFORMATION_DATA :: ID) , SET_HOME_POSITION_DATA :: NAME => Ok (SET_HOME_POSITION_DATA :: ID) , COMPONENT_INFORMATION_DATA :: NAME => Ok (COMPONENT_INFORMATION_DATA :: ID) , HOME_POSITION_DATA :: NAME => Ok (HOME_POSITION_DATA :: ID) , CAN_FILTER_MODIFY_DATA :: NAME => Ok (CAN_FILTER_MODIFY_DATA :: ID) , ENCAPSULATED_DATA_DATA :: NAME => Ok (ENCAPSULATED_DATA_DATA :: ID) , GENERATOR_STATUS_DATA :: NAME => Ok (GENERATOR_STATUS_DATA :: ID) , MESSAGE_INTERVAL_DATA :: NAME => Ok (MESSAGE_INTERVAL_DATA :: ID) , OPEN_DRONE_ID_MESSAGE_PACK_DATA :: NAME => Ok (OPEN_DRONE_ID_MESSAGE_PACK_DATA :: ID) , LOCAL_POSITION_NED_COV_DATA :: NAME => Ok (LOCAL_POSITION_NED_COV_DATA :: ID) , COMPONENT_METADATA_DATA :: NAME => Ok (COMPONENT_METADATA_DATA :: ID) , SIM_STATE_DATA :: NAME => Ok (SIM_STATE_DATA :: ID) , SERVO_OUTPUT_RAW_DATA :: NAME => Ok (SERVO_OUTPUT_RAW_DATA :: ID) , OPEN_DRONE_ID_BASIC_ID_DATA :: NAME => Ok (OPEN_DRONE_ID_BASIC_ID_DATA :: ID) , LOG_REQUEST_LIST_DATA :: NAME => Ok (LOG_REQUEST_LIST_DATA :: ID) , OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: NAME => Ok (OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: ID) , _ => { Err ("Invalid message name.") } } } fn default_message_from_id (id : u32) -> Result < Self , & 'static str > { match id { UAVIONIX_ADSB_OUT_CFG_DATA :: ID => Ok (Self :: UAVIONIX_ADSB_OUT_CFG (UAVIONIX_ADSB_OUT_CFG_DATA :: default ())) , ADSB_VEHICLE_DATA :: ID => Ok (Self :: ADSB_VEHICLE (ADSB_VEHICLE_DATA :: default ())) , MISSION_ITEM_DATA :: ID => Ok (Self :: MISSION_ITEM (MISSION_ITEM_DATA :: default ())) , CAMERA_TRIGGER_DATA :: ID => Ok (Self :: CAMERA_TRIGGER (CAMERA_TRIGGER_DATA :: default ())) , ONBOARD_COMPUTER_STATUS_DATA :: ID => Ok (Self :: ONBOARD_COMPUTER_STATUS (ONBOARD_COMPUTER_STATUS_DATA :: default ())) , ATTITUDE_TARGET_DATA :: ID => Ok (Self :: ATTITUDE_TARGET (ATTITUDE_TARGET_DATA :: default ())) , HIGH_LATENCY2_DATA :: ID => Ok (Self :: HIGH_LATENCY2 (HIGH_LATENCY2_DATA :: default ())) , DEBUG_VECT_DATA :: ID => Ok (Self :: DEBUG_VECT (DEBUG_VECT_DATA :: default ())) , LOG_REQUEST_END_DATA :: ID => Ok (Self :: LOG_REQUEST_END (LOG_REQUEST_END_DATA :: default ())) , NAV_CONTROLLER_OUTPUT_DATA :: ID => Ok (Self :: NAV_CONTROLLER_OUTPUT (NAV_CONTROLLER_OUTPUT_DATA :: default ())) , UTM_GLOBAL_POSITION_DATA :: ID => Ok (Self :: UTM_GLOBAL_POSITION (UTM_GLOBAL_POSITION_DATA :: default ())) , GPS_INPUT_DATA :: ID => Ok (Self :: GPS_INPUT (GPS_INPUT_DATA :: default ())) , UAVCAN_NODE_STATUS_DATA :: ID => Ok (Self :: UAVCAN_NODE_STATUS (UAVCAN_NODE_STATUS_DATA :: default ())) , LOGGING_DATA_ACKED_DATA :: ID => Ok (Self :: LOGGING_DATA_ACKED (LOGGING_DATA_ACKED_DATA :: default ())) , RAW_RPM_DATA :: ID => Ok (Self :: RAW_RPM (RAW_RPM_DATA :: default ())) , MISSION_REQUEST_DATA :: ID => Ok (Self :: MISSION_REQUEST (MISSION_REQUEST_DATA :: default ())) , HIL_ACTUATOR_CONTROLS_DATA :: ID => Ok (Self :: HIL_ACTUATOR_CONTROLS (HIL_ACTUATOR_CONTROLS_DATA :: default ())) , PARAM_REQUEST_LIST_DATA :: ID => Ok (Self :: PARAM_REQUEST_LIST (PARAM_REQUEST_LIST_DATA :: default ())) , MISSION_ITEM_INT_DATA :: ID => Ok (Self :: MISSION_ITEM_INT (MISSION_ITEM_INT_DATA :: default ())) , LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: ID => Ok (Self :: LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET (LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: default ())) , EFI_STATUS_DATA :: ID => Ok (Self :: EFI_STATUS (EFI_STATUS_DATA :: default ())) , MISSION_ITEM_REACHED_DATA :: ID => Ok (Self :: MISSION_ITEM_REACHED (MISSION_ITEM_REACHED_DATA :: default ())) , REQUEST_DATA_STREAM_DATA :: ID => Ok (Self :: REQUEST_DATA_STREAM (REQUEST_DATA_STREAM_DATA :: default ())) , UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: ID => Ok (Self :: UAVIONIX_ADSB_OUT_DYNAMIC (UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: default ())) , CAMERA_CAPTURE_STATUS_DATA :: ID => Ok (Self :: CAMERA_CAPTURE_STATUS (CAMERA_CAPTURE_STATUS_DATA :: default ())) , MANUAL_CONTROL_DATA :: ID => Ok (Self :: MANUAL_CONTROL (MANUAL_CONTROL_DATA :: default ())) , GIMBAL_MANAGER_SET_PITCHYAW_DATA :: ID => Ok (Self :: GIMBAL_MANAGER_SET_PITCHYAW (GIMBAL_MANAGER_SET_PITCHYAW_DATA :: default ())) , GPS_GLOBAL_ORIGIN_DATA :: ID => Ok (Self :: GPS_GLOBAL_ORIGIN (GPS_GLOBAL_ORIGIN_DATA :: default ())) , HIL_CONTROLS_DATA :: ID => Ok (Self :: HIL_CONTROLS (HIL_CONTROLS_DATA :: default ())) , OPTICAL_FLOW_DATA :: ID => Ok (Self :: OPTICAL_FLOW (OPTICAL_FLOW_DATA :: default ())) , OPEN_DRONE_ID_SELF_ID_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_SELF_ID (OPEN_DRONE_ID_SELF_ID_DATA :: default ())) , TIME_ESTIMATE_TO_TARGET_DATA :: ID => Ok (Self :: TIME_ESTIMATE_TO_TARGET (TIME_ESTIMATE_TO_TARGET_DATA :: default ())) , PARAM_VALUE_DATA :: ID => Ok (Self :: PARAM_VALUE (PARAM_VALUE_DATA :: default ())) , DEBUG_FLOAT_ARRAY_DATA :: ID => Ok (Self :: DEBUG_FLOAT_ARRAY (DEBUG_FLOAT_ARRAY_DATA :: default ())) , AIS_VESSEL_DATA :: ID => Ok (Self :: AIS_VESSEL (AIS_VESSEL_DATA :: default ())) , ATTITUDE_QUATERNION_COV_DATA :: ID => Ok (Self :: ATTITUDE_QUATERNION_COV (ATTITUDE_QUATERNION_COV_DATA :: default ())) , GLOBAL_POSITION_INT_DATA :: ID => Ok (Self :: GLOBAL_POSITION_INT (GLOBAL_POSITION_INT_DATA :: default ())) , LOG_ENTRY_DATA :: ID => Ok (Self :: LOG_ENTRY (LOG_ENTRY_DATA :: default ())) , OBSTACLE_DISTANCE_DATA :: ID => Ok (Self :: OBSTACLE_DISTANCE (OBSTACLE_DISTANCE_DATA :: default ())) , MISSION_COUNT_DATA :: ID => Ok (Self :: MISSION_COUNT (MISSION_COUNT_DATA :: default ())) , FENCE_STATUS_DATA :: ID => Ok (Self :: FENCE_STATUS (FENCE_STATUS_DATA :: default ())) , EVENT_DATA :: ID => Ok (Self :: EVENT (EVENT_DATA :: default ())) , HIL_SENSOR_DATA :: ID => Ok (Self :: HIL_SENSOR (HIL_SENSOR_DATA :: default ())) , RAW_IMU_DATA :: ID => Ok (Self :: RAW_IMU (RAW_IMU_DATA :: default ())) , V2_EXTENSION_DATA :: ID => Ok (Self :: V2_EXTENSION (V2_EXTENSION_DATA :: default ())) , SMART_BATTERY_INFO_DATA :: ID => Ok (Self :: SMART_BATTERY_INFO (SMART_BATTERY_INFO_DATA :: default ())) , PARAM_EXT_SET_DATA :: ID => Ok (Self :: PARAM_EXT_SET (PARAM_EXT_SET_DATA :: default ())) , TERRAIN_CHECK_DATA :: ID => Ok (Self :: TERRAIN_CHECK (TERRAIN_CHECK_DATA :: default ())) , TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: ID => Ok (Self :: TRAJECTORY_REPRESENTATION_WAYPOINTS (TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: default ())) , CAMERA_IMAGE_CAPTURED_DATA :: ID => Ok (Self :: CAMERA_IMAGE_CAPTURED (CAMERA_IMAGE_CAPTURED_DATA :: default ())) , HEARTBEAT_DATA :: ID => Ok (Self :: HEARTBEAT (HEARTBEAT_DATA :: default ())) , LOG_ERASE_DATA :: ID => Ok (Self :: LOG_ERASE (LOG_ERASE_DATA :: default ())) , MANUAL_SETPOINT_DATA :: ID => Ok (Self :: MANUAL_SETPOINT (MANUAL_SETPOINT_DATA :: default ())) , SYSTEM_TIME_DATA :: ID => Ok (Self :: SYSTEM_TIME (SYSTEM_TIME_DATA :: default ())) , HIL_GPS_DATA :: ID => Ok (Self :: HIL_GPS (HIL_GPS_DATA :: default ())) , ESC_STATUS_DATA :: ID => Ok (Self :: ESC_STATUS (ESC_STATUS_DATA :: default ())) , CAMERA_TRACKING_GEO_STATUS_DATA :: ID => Ok (Self :: CAMERA_TRACKING_GEO_STATUS (CAMERA_TRACKING_GEO_STATUS_DATA :: default ())) , COMMAND_INT_DATA :: ID => Ok (Self :: COMMAND_INT (COMMAND_INT_DATA :: default ())) , HIL_RC_INPUTS_RAW_DATA :: ID => Ok (Self :: HIL_RC_INPUTS_RAW (HIL_RC_INPUTS_RAW_DATA :: default ())) , COMMAND_CANCEL_DATA :: ID => Ok (Self :: COMMAND_CANCEL (COMMAND_CANCEL_DATA :: default ())) , TRAJECTORY_REPRESENTATION_BEZIER_DATA :: ID => Ok (Self :: TRAJECTORY_REPRESENTATION_BEZIER (TRAJECTORY_REPRESENTATION_BEZIER_DATA :: default ())) , MISSION_CURRENT_DATA :: ID => Ok (Self :: MISSION_CURRENT (MISSION_CURRENT_DATA :: default ())) , UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: ID => Ok (Self :: UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT (UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: default ())) , FLIGHT_INFORMATION_DATA :: ID => Ok (Self :: FLIGHT_INFORMATION (FLIGHT_INFORMATION_DATA :: default ())) , SCALED_PRESSURE3_DATA :: ID => Ok (Self :: SCALED_PRESSURE3 (SCALED_PRESSURE3_DATA :: default ())) , LOGGING_DATA_DATA :: ID => Ok (Self :: LOGGING_DATA (LOGGING_DATA_DATA :: default ())) , ESTIMATOR_STATUS_DATA :: ID => Ok (Self :: ESTIMATOR_STATUS (ESTIMATOR_STATUS_DATA :: default ())) , SET_GPS_GLOBAL_ORIGIN_DATA :: ID => Ok (Self :: SET_GPS_GLOBAL_ORIGIN (SET_GPS_GLOBAL_ORIGIN_DATA :: default ())) , DEBUG_DATA :: ID => Ok (Self :: DEBUG (DEBUG_DATA :: default ())) , LOG_DATA_DATA :: ID => Ok (Self :: LOG_DATA (LOG_DATA_DATA :: default ())) , LOCAL_POSITION_NED_DATA :: ID => Ok (Self :: LOCAL_POSITION_NED (LOCAL_POSITION_NED_DATA :: default ())) , CANFD_FRAME_DATA :: ID => Ok (Self :: CANFD_FRAME (CANFD_FRAME_DATA :: default ())) , MISSION_REQUEST_INT_DATA :: ID => Ok (Self :: MISSION_REQUEST_INT (MISSION_REQUEST_INT_DATA :: default ())) , COMMAND_LONG_DATA :: ID => Ok (Self :: COMMAND_LONG (COMMAND_LONG_DATA :: default ())) , HIL_STATE_QUATERNION_DATA :: ID => Ok (Self :: HIL_STATE_QUATERNION (HIL_STATE_QUATERNION_DATA :: default ())) , RC_CHANNELS_RAW_DATA :: ID => Ok (Self :: RC_CHANNELS_RAW (RC_CHANNELS_RAW_DATA :: default ())) , DISTANCE_SENSOR_DATA :: ID => Ok (Self :: DISTANCE_SENSOR (DISTANCE_SENSOR_DATA :: default ())) , PARAM_EXT_REQUEST_LIST_DATA :: ID => Ok (Self :: PARAM_EXT_REQUEST_LIST (PARAM_EXT_REQUEST_LIST_DATA :: default ())) , AUTH_KEY_DATA :: ID => Ok (Self :: AUTH_KEY (AUTH_KEY_DATA :: default ())) , MISSION_ACK_DATA :: ID => Ok (Self :: MISSION_ACK (MISSION_ACK_DATA :: default ())) , RESOURCE_REQUEST_DATA :: ID => Ok (Self :: RESOURCE_REQUEST (RESOURCE_REQUEST_DATA :: default ())) , SAFETY_ALLOWED_AREA_DATA :: ID => Ok (Self :: SAFETY_ALLOWED_AREA (SAFETY_ALLOWED_AREA_DATA :: default ())) , CAMERA_SETTINGS_DATA :: ID => Ok (Self :: CAMERA_SETTINGS (CAMERA_SETTINGS_DATA :: default ())) , GIMBAL_MANAGER_SET_ATTITUDE_DATA :: ID => Ok (Self :: GIMBAL_MANAGER_SET_ATTITUDE (GIMBAL_MANAGER_SET_ATTITUDE_DATA :: default ())) , GPS_RTK_DATA :: ID => Ok (Self :: GPS_RTK (GPS_RTK_DATA :: default ())) , PROTOCOL_VERSION_DATA :: ID => Ok (Self :: PROTOCOL_VERSION (PROTOCOL_VERSION_DATA :: default ())) , TERRAIN_REQUEST_DATA :: ID => Ok (Self :: TERRAIN_REQUEST (TERRAIN_REQUEST_DATA :: default ())) , POSITION_TARGET_LOCAL_NED_DATA :: ID => Ok (Self :: POSITION_TARGET_LOCAL_NED (POSITION_TARGET_LOCAL_NED_DATA :: default ())) , WIND_COV_DATA :: ID => Ok (Self :: WIND_COV (WIND_COV_DATA :: default ())) , COLLISION_DATA :: ID => Ok (Self :: COLLISION (COLLISION_DATA :: default ())) , CELLULAR_CONFIG_DATA :: ID => Ok (Self :: CELLULAR_CONFIG (CELLULAR_CONFIG_DATA :: default ())) , CHANGE_OPERATOR_CONTROL_ACK_DATA :: ID => Ok (Self :: CHANGE_OPERATOR_CONTROL_ACK (CHANGE_OPERATOR_CONTROL_ACK_DATA :: default ())) , CONTROL_SYSTEM_STATE_DATA :: ID => Ok (Self :: CONTROL_SYSTEM_STATE (CONTROL_SYSTEM_STATE_DATA :: default ())) , RC_CHANNELS_SCALED_DATA :: ID => Ok (Self :: RC_CHANNELS_SCALED (RC_CHANNELS_SCALED_DATA :: default ())) , CAN_FRAME_DATA :: ID => Ok (Self :: CAN_FRAME (CAN_FRAME_DATA :: default ())) , VICON_POSITION_ESTIMATE_DATA :: ID => Ok (Self :: VICON_POSITION_ESTIMATE (VICON_POSITION_ESTIMATE_DATA :: default ())) , GIMBAL_MANAGER_STATUS_DATA :: ID => Ok (Self :: GIMBAL_MANAGER_STATUS (GIMBAL_MANAGER_STATUS_DATA :: default ())) , SET_MODE_DATA :: ID => Ok (Self :: SET_MODE (SET_MODE_DATA :: default ())) , TERRAIN_DATA_DATA :: ID => Ok (Self :: TERRAIN_DATA (TERRAIN_DATA_DATA :: default ())) , CHANGE_OPERATOR_CONTROL_DATA :: ID => Ok (Self :: CHANGE_OPERATOR_CONTROL (CHANGE_OPERATOR_CONTROL_DATA :: default ())) , PARAM_MAP_RC_DATA :: ID => Ok (Self :: PARAM_MAP_RC (PARAM_MAP_RC_DATA :: default ())) , VIBRATION_DATA :: ID => Ok (Self :: VIBRATION (VIBRATION_DATA :: default ())) , VISION_POSITION_ESTIMATE_DATA :: ID => Ok (Self :: VISION_POSITION_ESTIMATE (VISION_POSITION_ESTIMATE_DATA :: default ())) , GPS2_RTK_DATA :: ID => Ok (Self :: GPS2_RTK (GPS2_RTK_DATA :: default ())) , PLAY_TUNE_V2_DATA :: ID => Ok (Self :: PLAY_TUNE_V2 (PLAY_TUNE_V2_DATA :: default ())) , CELLULAR_STATUS_DATA :: ID => Ok (Self :: CELLULAR_STATUS (CELLULAR_STATUS_DATA :: default ())) , OPEN_DRONE_ID_AUTHENTICATION_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_AUTHENTICATION (OPEN_DRONE_ID_AUTHENTICATION_DATA :: default ())) , RESPONSE_EVENT_ERROR_DATA :: ID => Ok (Self :: RESPONSE_EVENT_ERROR (RESPONSE_EVENT_ERROR_DATA :: default ())) , SCALED_PRESSURE2_DATA :: ID => Ok (Self :: SCALED_PRESSURE2 (SCALED_PRESSURE2_DATA :: default ())) , NAMED_VALUE_FLOAT_DATA :: ID => Ok (Self :: NAMED_VALUE_FLOAT (NAMED_VALUE_FLOAT_DATA :: default ())) , ATTITUDE_QUATERNION_DATA :: ID => Ok (Self :: ATTITUDE_QUATERNION (ATTITUDE_QUATERNION_DATA :: default ())) , TIMESYNC_DATA :: ID => Ok (Self :: TIMESYNC (TIMESYNC_DATA :: default ())) , AUTOPILOT_VERSION_DATA :: ID => Ok (Self :: AUTOPILOT_VERSION (AUTOPILOT_VERSION_DATA :: default ())) , MISSION_REQUEST_PARTIAL_LIST_DATA :: ID => Ok (Self :: MISSION_REQUEST_PARTIAL_LIST (MISSION_REQUEST_PARTIAL_LIST_DATA :: default ())) , VISION_SPEED_ESTIMATE_DATA :: ID => Ok (Self :: VISION_SPEED_ESTIMATE (VISION_SPEED_ESTIMATE_DATA :: default ())) , SCALED_PRESSURE_DATA :: ID => Ok (Self :: SCALED_PRESSURE (SCALED_PRESSURE_DATA :: default ())) , PARAM_REQUEST_READ_DATA :: ID => Ok (Self :: PARAM_REQUEST_READ (PARAM_REQUEST_READ_DATA :: default ())) , PARAM_EXT_ACK_DATA :: ID => Ok (Self :: PARAM_EXT_ACK (PARAM_EXT_ACK_DATA :: default ())) , WIFI_CONFIG_AP_DATA :: ID => Ok (Self :: WIFI_CONFIG_AP (WIFI_CONFIG_AP_DATA :: default ())) , EXTENDED_SYS_STATE_DATA :: ID => Ok (Self :: EXTENDED_SYS_STATE (EXTENDED_SYS_STATE_DATA :: default ())) , OPEN_DRONE_ID_OPERATOR_ID_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_OPERATOR_ID (OPEN_DRONE_ID_OPERATOR_ID_DATA :: default ())) , GIMBAL_DEVICE_SET_ATTITUDE_DATA :: ID => Ok (Self :: GIMBAL_DEVICE_SET_ATTITUDE (GIMBAL_DEVICE_SET_ATTITUDE_DATA :: default ())) , VIDEO_STREAM_STATUS_DATA :: ID => Ok (Self :: VIDEO_STREAM_STATUS (VIDEO_STREAM_STATUS_DATA :: default ())) , UAVCAN_NODE_INFO_DATA :: ID => Ok (Self :: UAVCAN_NODE_INFO (UAVCAN_NODE_INFO_DATA :: default ())) , SAFETY_SET_ALLOWED_AREA_DATA :: ID => Ok (Self :: SAFETY_SET_ALLOWED_AREA (SAFETY_SET_ALLOWED_AREA_DATA :: default ())) , GLOBAL_POSITION_INT_COV_DATA :: ID => Ok (Self :: GLOBAL_POSITION_INT_COV (GLOBAL_POSITION_INT_COV_DATA :: default ())) , SYS_STATUS_DATA :: ID => Ok (Self :: SYS_STATUS (SYS_STATUS_DATA :: default ())) , ODOMETRY_DATA :: ID => Ok (Self :: ODOMETRY (ODOMETRY_DATA :: default ())) , CAMERA_INFORMATION_DATA :: ID => Ok (Self :: CAMERA_INFORMATION (CAMERA_INFORMATION_DATA :: default ())) , HIL_STATE_DATA :: ID => Ok (Self :: HIL_STATE (HIL_STATE_DATA :: default ())) , CAMERA_TRACKING_IMAGE_STATUS_DATA :: ID => Ok (Self :: CAMERA_TRACKING_IMAGE_STATUS (CAMERA_TRACKING_IMAGE_STATUS_DATA :: default ())) , SET_ACTUATOR_CONTROL_TARGET_DATA :: ID => Ok (Self :: SET_ACTUATOR_CONTROL_TARGET (SET_ACTUATOR_CONTROL_TARGET_DATA :: default ())) , TERRAIN_REPORT_DATA :: ID => Ok (Self :: TERRAIN_REPORT (TERRAIN_REPORT_DATA :: default ())) , ACTUATOR_OUTPUT_STATUS_DATA :: ID => Ok (Self :: ACTUATOR_OUTPUT_STATUS (ACTUATOR_OUTPUT_STATUS_DATA :: default ())) , PARAM_EXT_REQUEST_READ_DATA :: ID => Ok (Self :: PARAM_EXT_REQUEST_READ (PARAM_EXT_REQUEST_READ_DATA :: default ())) , SUPPORTED_TUNES_DATA :: ID => Ok (Self :: SUPPORTED_TUNES (SUPPORTED_TUNES_DATA :: default ())) , CURRENT_EVENT_SEQUENCE_DATA :: ID => Ok (Self :: CURRENT_EVENT_SEQUENCE (CURRENT_EVENT_SEQUENCE_DATA :: default ())) , PARAM_SET_DATA :: ID => Ok (Self :: PARAM_SET (PARAM_SET_DATA :: default ())) , BATTERY_STATUS_DATA :: ID => Ok (Self :: BATTERY_STATUS (BATTERY_STATUS_DATA :: default ())) , MAG_CAL_REPORT_DATA :: ID => Ok (Self :: MAG_CAL_REPORT (MAG_CAL_REPORT_DATA :: default ())) , STORAGE_INFORMATION_DATA :: ID => Ok (Self :: STORAGE_INFORMATION (STORAGE_INFORMATION_DATA :: default ())) , SETUP_SIGNING_DATA :: ID => Ok (Self :: SETUP_SIGNING (SETUP_SIGNING_DATA :: default ())) , MOUNT_ORIENTATION_DATA :: ID => Ok (Self :: MOUNT_ORIENTATION (MOUNT_ORIENTATION_DATA :: default ())) , OPTICAL_FLOW_RAD_DATA :: ID => Ok (Self :: OPTICAL_FLOW_RAD (OPTICAL_FLOW_RAD_DATA :: default ())) , RC_CHANNELS_DATA :: ID => Ok (Self :: RC_CHANNELS (RC_CHANNELS_DATA :: default ())) , GPS_RTCM_DATA_DATA :: ID => Ok (Self :: GPS_RTCM_DATA (GPS_RTCM_DATA_DATA :: default ())) , ACTUATOR_CONTROL_TARGET_DATA :: ID => Ok (Self :: ACTUATOR_CONTROL_TARGET (ACTUATOR_CONTROL_TARGET_DATA :: default ())) , ORBIT_EXECUTION_STATUS_DATA :: ID => Ok (Self :: ORBIT_EXECUTION_STATUS (ORBIT_EXECUTION_STATUS_DATA :: default ())) , GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: ID => Ok (Self :: GIMBAL_DEVICE_ATTITUDE_STATUS (GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: default ())) , PING_DATA :: ID => Ok (Self :: PING (PING_DATA :: default ())) , ATTITUDE_DATA :: ID => Ok (Self :: ATTITUDE (ATTITUDE_DATA :: default ())) , OPEN_DRONE_ID_ARM_STATUS_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_ARM_STATUS (OPEN_DRONE_ID_ARM_STATUS_DATA :: default ())) , LOGGING_ACK_DATA :: ID => Ok (Self :: LOGGING_ACK (LOGGING_ACK_DATA :: default ())) , ATT_POS_MOCAP_DATA :: ID => Ok (Self :: ATT_POS_MOCAP (ATT_POS_MOCAP_DATA :: default ())) , LINK_NODE_STATUS_DATA :: ID => Ok (Self :: LINK_NODE_STATUS (LINK_NODE_STATUS_DATA :: default ())) , MEMORY_VECT_DATA :: ID => Ok (Self :: MEMORY_VECT (MEMORY_VECT_DATA :: default ())) , GPS_STATUS_DATA :: ID => Ok (Self :: GPS_STATUS (GPS_STATUS_DATA :: default ())) , HIL_OPTICAL_FLOW_DATA :: ID => Ok (Self :: HIL_OPTICAL_FLOW (HIL_OPTICAL_FLOW_DATA :: default ())) , SERIAL_CONTROL_DATA :: ID => Ok (Self :: SERIAL_CONTROL (SERIAL_CONTROL_DATA :: default ())) , DATA_TRANSMISSION_HANDSHAKE_DATA :: ID => Ok (Self :: DATA_TRANSMISSION_HANDSHAKE (DATA_TRANSMISSION_HANDSHAKE_DATA :: default ())) , COMMAND_ACK_DATA :: ID => Ok (Self :: COMMAND_ACK (COMMAND_ACK_DATA :: default ())) , OPEN_DRONE_ID_SYSTEM_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_SYSTEM (OPEN_DRONE_ID_SYSTEM_DATA :: default ())) , PARAM_EXT_VALUE_DATA :: ID => Ok (Self :: PARAM_EXT_VALUE (PARAM_EXT_VALUE_DATA :: default ())) , GIMBAL_MANAGER_INFORMATION_DATA :: ID => Ok (Self :: GIMBAL_MANAGER_INFORMATION (GIMBAL_MANAGER_INFORMATION_DATA :: default ())) , HYGROMETER_SENSOR_DATA :: ID => Ok (Self :: HYGROMETER_SENSOR (HYGROMETER_SENSOR_DATA :: default ())) , POSITION_TARGET_GLOBAL_INT_DATA :: ID => Ok (Self :: POSITION_TARGET_GLOBAL_INT (POSITION_TARGET_GLOBAL_INT_DATA :: default ())) , AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: ID => Ok (Self :: AUTOPILOT_STATE_FOR_GIMBAL_DEVICE (AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: default ())) , DATA_STREAM_DATA :: ID => Ok (Self :: DATA_STREAM (DATA_STREAM_DATA :: default ())) , POWER_STATUS_DATA :: ID => Ok (Self :: POWER_STATUS (POWER_STATUS_DATA :: default ())) , BUTTON_CHANGE_DATA :: ID => Ok (Self :: BUTTON_CHANGE (BUTTON_CHANGE_DATA :: default ())) , STATUSTEXT_DATA :: ID => Ok (Self :: STATUSTEXT (STATUSTEXT_DATA :: default ())) , HIGHRES_IMU_DATA :: ID => Ok (Self :: HIGHRES_IMU (HIGHRES_IMU_DATA :: default ())) , ESC_INFO_DATA :: ID => Ok (Self :: ESC_INFO (ESC_INFO_DATA :: default ())) , SCALED_IMU_DATA :: ID => Ok (Self :: SCALED_IMU (SCALED_IMU_DATA :: default ())) , MISSION_SET_CURRENT_DATA :: ID => Ok (Self :: MISSION_SET_CURRENT (MISSION_SET_CURRENT_DATA :: default ())) , VIDEO_STREAM_INFORMATION_DATA :: ID => Ok (Self :: VIDEO_STREAM_INFORMATION (VIDEO_STREAM_INFORMATION_DATA :: default ())) , MISSION_WRITE_PARTIAL_LIST_DATA :: ID => Ok (Self :: MISSION_WRITE_PARTIAL_LIST (MISSION_WRITE_PARTIAL_LIST_DATA :: default ())) , SET_ATTITUDE_TARGET_DATA :: ID => Ok (Self :: SET_ATTITUDE_TARGET (SET_ATTITUDE_TARGET_DATA :: default ())) , WHEEL_DISTANCE_DATA :: ID => Ok (Self :: WHEEL_DISTANCE (WHEEL_DISTANCE_DATA :: default ())) , GLOBAL_VISION_POSITION_ESTIMATE_DATA :: ID => Ok (Self :: GLOBAL_VISION_POSITION_ESTIMATE (GLOBAL_VISION_POSITION_ESTIMATE_DATA :: default ())) , WINCH_STATUS_DATA :: ID => Ok (Self :: WINCH_STATUS (WINCH_STATUS_DATA :: default ())) , PLAY_TUNE_DATA :: ID => Ok (Self :: PLAY_TUNE (PLAY_TUNE_DATA :: default ())) , TUNNEL_DATA :: ID => Ok (Self :: TUNNEL (TUNNEL_DATA :: default ())) , MISSION_REQUEST_LIST_DATA :: ID => Ok (Self :: MISSION_REQUEST_LIST (MISSION_REQUEST_LIST_DATA :: default ())) , SET_POSITION_TARGET_GLOBAL_INT_DATA :: ID => Ok (Self :: SET_POSITION_TARGET_GLOBAL_INT (SET_POSITION_TARGET_GLOBAL_INT_DATA :: default ())) , FOLLOW_TARGET_DATA :: ID => Ok (Self :: FOLLOW_TARGET (FOLLOW_TARGET_DATA :: default ())) , REQUEST_EVENT_DATA :: ID => Ok (Self :: REQUEST_EVENT (REQUEST_EVENT_DATA :: default ())) , NAMED_VALUE_INT_DATA :: ID => Ok (Self :: NAMED_VALUE_INT (NAMED_VALUE_INT_DATA :: default ())) , VFR_HUD_DATA :: ID => Ok (Self :: VFR_HUD (VFR_HUD_DATA :: default ())) , LOG_REQUEST_DATA_DATA :: ID => Ok (Self :: LOG_REQUEST_DATA (LOG_REQUEST_DATA_DATA :: default ())) , GPS2_RAW_DATA :: ID => Ok (Self :: GPS2_RAW (GPS2_RAW_DATA :: default ())) , HIGH_LATENCY_DATA :: ID => Ok (Self :: HIGH_LATENCY (HIGH_LATENCY_DATA :: default ())) , RADIO_STATUS_DATA :: ID => Ok (Self :: RADIO_STATUS (RADIO_STATUS_DATA :: default ())) , RAW_PRESSURE_DATA :: ID => Ok (Self :: RAW_PRESSURE (RAW_PRESSURE_DATA :: default ())) , ALTITUDE_DATA :: ID => Ok (Self :: ALTITUDE (ALTITUDE_DATA :: default ())) , SET_POSITION_TARGET_LOCAL_NED_DATA :: ID => Ok (Self :: SET_POSITION_TARGET_LOCAL_NED (SET_POSITION_TARGET_LOCAL_NED_DATA :: default ())) , GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: ID => Ok (Self :: GIMBAL_MANAGER_SET_MANUAL_CONTROL (GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: default ())) , SCALED_IMU2_DATA :: ID => Ok (Self :: SCALED_IMU2 (SCALED_IMU2_DATA :: default ())) , GPS_RAW_INT_DATA :: ID => Ok (Self :: GPS_RAW_INT (GPS_RAW_INT_DATA :: default ())) , MISSION_CLEAR_ALL_DATA :: ID => Ok (Self :: MISSION_CLEAR_ALL (MISSION_CLEAR_ALL_DATA :: default ())) , SCALED_IMU3_DATA :: ID => Ok (Self :: SCALED_IMU3 (SCALED_IMU3_DATA :: default ())) , OPEN_DRONE_ID_LOCATION_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_LOCATION (OPEN_DRONE_ID_LOCATION_DATA :: default ())) , GPS_INJECT_DATA_DATA :: ID => Ok (Self :: GPS_INJECT_DATA (GPS_INJECT_DATA_DATA :: default ())) , FILE_TRANSFER_PROTOCOL_DATA :: ID => Ok (Self :: FILE_TRANSFER_PROTOCOL (FILE_TRANSFER_PROTOCOL_DATA :: default ())) , CAMERA_FOV_STATUS_DATA :: ID => Ok (Self :: CAMERA_FOV_STATUS (CAMERA_FOV_STATUS_DATA :: default ())) , RC_CHANNELS_OVERRIDE_DATA :: ID => Ok (Self :: RC_CHANNELS_OVERRIDE (RC_CHANNELS_OVERRIDE_DATA :: default ())) , LANDING_TARGET_DATA :: ID => Ok (Self :: LANDING_TARGET (LANDING_TARGET_DATA :: default ())) , ISBD_LINK_STATUS_DATA :: ID => Ok (Self :: ISBD_LINK_STATUS (ISBD_LINK_STATUS_DATA :: default ())) , GIMBAL_DEVICE_INFORMATION_DATA :: ID => Ok (Self :: GIMBAL_DEVICE_INFORMATION (GIMBAL_DEVICE_INFORMATION_DATA :: default ())) , SET_HOME_POSITION_DATA :: ID => Ok (Self :: SET_HOME_POSITION (SET_HOME_POSITION_DATA :: default ())) , COMPONENT_INFORMATION_DATA :: ID => Ok (Self :: COMPONENT_INFORMATION (COMPONENT_INFORMATION_DATA :: default ())) , HOME_POSITION_DATA :: ID => Ok (Self :: HOME_POSITION (HOME_POSITION_DATA :: default ())) , CAN_FILTER_MODIFY_DATA :: ID => Ok (Self :: CAN_FILTER_MODIFY (CAN_FILTER_MODIFY_DATA :: default ())) , ENCAPSULATED_DATA_DATA :: ID => Ok (Self :: ENCAPSULATED_DATA (ENCAPSULATED_DATA_DATA :: default ())) , GENERATOR_STATUS_DATA :: ID => Ok (Self :: GENERATOR_STATUS (GENERATOR_STATUS_DATA :: default ())) , MESSAGE_INTERVAL_DATA :: ID => Ok (Self :: MESSAGE_INTERVAL (MESSAGE_INTERVAL_DATA :: default ())) , OPEN_DRONE_ID_MESSAGE_PACK_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_MESSAGE_PACK (OPEN_DRONE_ID_MESSAGE_PACK_DATA :: default ())) , LOCAL_POSITION_NED_COV_DATA :: ID => Ok (Self :: LOCAL_POSITION_NED_COV (LOCAL_POSITION_NED_COV_DATA :: default ())) , COMPONENT_METADATA_DATA :: ID => Ok (Self :: COMPONENT_METADATA (COMPONENT_METADATA_DATA :: default ())) , SIM_STATE_DATA :: ID => Ok (Self :: SIM_STATE (SIM_STATE_DATA :: default ())) , SERVO_OUTPUT_RAW_DATA :: ID => Ok (Self :: SERVO_OUTPUT_RAW (SERVO_OUTPUT_RAW_DATA :: default ())) , OPEN_DRONE_ID_BASIC_ID_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_BASIC_ID (OPEN_DRONE_ID_BASIC_ID_DATA :: default ())) , LOG_REQUEST_LIST_DATA :: ID => Ok (Self :: LOG_REQUEST_LIST (LOG_REQUEST_LIST_DATA :: default ())) , OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: ID => Ok (Self :: OPEN_DRONE_ID_SYSTEM_UPDATE (OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: default ())) , _ => { Err ("Invalid message id.") } } } fn ser (& self , version : MavlinkVersion , bytes : & mut [u8]) -> usize { match self { Self :: UAVIONIX_ADSB_OUT_CFG (body) => body . ser (version , bytes) , Self :: ADSB_VEHICLE (body) => body . ser (version , bytes) , Self :: MISSION_ITEM (body) => body . ser (version , bytes) , Self :: CAMERA_TRIGGER (body) => body . ser (version , bytes) , Self :: ONBOARD_COMPUTER_STATUS (body) => body . ser (version , bytes) , Self :: ATTITUDE_TARGET (body) => body . ser (version , bytes) , Self :: HIGH_LATENCY2 (body) => body . ser (version , bytes) , Self :: DEBUG_VECT (body) => body . ser (version , bytes) , Self :: LOG_REQUEST_END (body) => body . ser (version , bytes) , Self :: NAV_CONTROLLER_OUTPUT (body) => body . ser (version , bytes) , Self :: UTM_GLOBAL_POSITION (body) => body . ser (version , bytes) , Self :: GPS_INPUT (body) => body . ser (version , bytes) , Self :: UAVCAN_NODE_STATUS (body) => body . ser (version , bytes) , Self :: LOGGING_DATA_ACKED (body) => body . ser (version , bytes) , Self :: RAW_RPM (body) => body . ser (version , bytes) , Self :: MISSION_REQUEST (body) => body . ser (version , bytes) , Self :: HIL_ACTUATOR_CONTROLS (body) => body . ser (version , bytes) , Self :: PARAM_REQUEST_LIST (body) => body . ser (version , bytes) , Self :: MISSION_ITEM_INT (body) => body . ser (version , bytes) , Self :: LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET (body) => body . ser (version , bytes) , Self :: EFI_STATUS (body) => body . ser (version , bytes) , Self :: MISSION_ITEM_REACHED (body) => body . ser (version , bytes) , Self :: REQUEST_DATA_STREAM (body) => body . ser (version , bytes) , Self :: UAVIONIX_ADSB_OUT_DYNAMIC (body) => body . ser (version , bytes) , Self :: CAMERA_CAPTURE_STATUS (body) => body . ser (version , bytes) , Self :: MANUAL_CONTROL (body) => body . ser (version , bytes) , Self :: GIMBAL_MANAGER_SET_PITCHYAW (body) => body . ser (version , bytes) , Self :: GPS_GLOBAL_ORIGIN (body) => body . ser (version , bytes) , Self :: HIL_CONTROLS (body) => body . ser (version , bytes) , Self :: OPTICAL_FLOW (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_SELF_ID (body) => body . ser (version , bytes) , Self :: TIME_ESTIMATE_TO_TARGET (body) => body . ser (version , bytes) , Self :: PARAM_VALUE (body) => body . ser (version , bytes) , Self :: DEBUG_FLOAT_ARRAY (body) => body . ser (version , bytes) , Self :: AIS_VESSEL (body) => body . ser (version , bytes) , Self :: ATTITUDE_QUATERNION_COV (body) => body . ser (version , bytes) , Self :: GLOBAL_POSITION_INT (body) => body . ser (version , bytes) , Self :: LOG_ENTRY (body) => body . ser (version , bytes) , Self :: OBSTACLE_DISTANCE (body) => body . ser (version , bytes) , Self :: MISSION_COUNT (body) => body . ser (version , bytes) , Self :: FENCE_STATUS (body) => body . ser (version , bytes) , Self :: EVENT (body) => body . ser (version , bytes) , Self :: HIL_SENSOR (body) => body . ser (version , bytes) , Self :: RAW_IMU (body) => body . ser (version , bytes) , Self :: V2_EXTENSION (body) => body . ser (version , bytes) , Self :: SMART_BATTERY_INFO (body) => body . ser (version , bytes) , Self :: PARAM_EXT_SET (body) => body . ser (version , bytes) , Self :: TERRAIN_CHECK (body) => body . ser (version , bytes) , Self :: TRAJECTORY_REPRESENTATION_WAYPOINTS (body) => body . ser (version , bytes) , Self :: CAMERA_IMAGE_CAPTURED (body) => body . ser (version , bytes) , Self :: HEARTBEAT (body) => body . ser (version , bytes) , Self :: LOG_ERASE (body) => body . ser (version , bytes) , Self :: MANUAL_SETPOINT (body) => body . ser (version , bytes) , Self :: SYSTEM_TIME (body) => body . ser (version , bytes) , Self :: HIL_GPS (body) => body . ser (version , bytes) , Self :: ESC_STATUS (body) => body . ser (version , bytes) , Self :: CAMERA_TRACKING_GEO_STATUS (body) => body . ser (version , bytes) , Self :: COMMAND_INT (body) => body . ser (version , bytes) , Self :: HIL_RC_INPUTS_RAW (body) => body . ser (version , bytes) , Self :: COMMAND_CANCEL (body) => body . ser (version , bytes) , Self :: TRAJECTORY_REPRESENTATION_BEZIER (body) => body . ser (version , bytes) , Self :: MISSION_CURRENT (body) => body . ser (version , bytes) , Self :: UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT (body) => body . ser (version , bytes) , Self :: FLIGHT_INFORMATION (body) => body . ser (version , bytes) , Self :: SCALED_PRESSURE3 (body) => body . ser (version , bytes) , Self :: LOGGING_DATA (body) => body . ser (version , bytes) , Self :: ESTIMATOR_STATUS (body) => body . ser (version , bytes) , Self :: SET_GPS_GLOBAL_ORIGIN (body) => body . ser (version , bytes) , Self :: DEBUG (body) => body . ser (version , bytes) , Self :: LOG_DATA (body) => body . ser (version , bytes) , Self :: LOCAL_POSITION_NED (body) => body . ser (version , bytes) , Self :: CANFD_FRAME (body) => body . ser (version , bytes) , Self :: MISSION_REQUEST_INT (body) => body . ser (version , bytes) , Self :: COMMAND_LONG (body) => body . ser (version , bytes) , Self :: HIL_STATE_QUATERNION (body) => body . ser (version , bytes) , Self :: RC_CHANNELS_RAW (body) => body . ser (version , bytes) , Self :: DISTANCE_SENSOR (body) => body . ser (version , bytes) , Self :: PARAM_EXT_REQUEST_LIST (body) => body . ser (version , bytes) , Self :: AUTH_KEY (body) => body . ser (version , bytes) , Self :: MISSION_ACK (body) => body . ser (version , bytes) , Self :: RESOURCE_REQUEST (body) => body . ser (version , bytes) , Self :: SAFETY_ALLOWED_AREA (body) => body . ser (version , bytes) , Self :: CAMERA_SETTINGS (body) => body . ser (version , bytes) , Self :: GIMBAL_MANAGER_SET_ATTITUDE (body) => body . ser (version , bytes) , Self :: GPS_RTK (body) => body . ser (version , bytes) , Self :: PROTOCOL_VERSION (body) => body . ser (version , bytes) , Self :: TERRAIN_REQUEST (body) => body . ser (version , bytes) , Self :: POSITION_TARGET_LOCAL_NED (body) => body . ser (version , bytes) , Self :: WIND_COV (body) => body . ser (version , bytes) , Self :: COLLISION (body) => body . ser (version , bytes) , Self :: CELLULAR_CONFIG (body) => body . ser (version , bytes) , Self :: CHANGE_OPERATOR_CONTROL_ACK (body) => body . ser (version , bytes) , Self :: CONTROL_SYSTEM_STATE (body) => body . ser (version , bytes) , Self :: RC_CHANNELS_SCALED (body) => body . ser (version , bytes) , Self :: CAN_FRAME (body) => body . ser (version , bytes) , Self :: VICON_POSITION_ESTIMATE (body) => body . ser (version , bytes) , Self :: GIMBAL_MANAGER_STATUS (body) => body . ser (version , bytes) , Self :: SET_MODE (body) => body . ser (version , bytes) , Self :: TERRAIN_DATA (body) => body . ser (version , bytes) , Self :: CHANGE_OPERATOR_CONTROL (body) => body . ser (version , bytes) , Self :: PARAM_MAP_RC (body) => body . ser (version , bytes) , Self :: VIBRATION (body) => body . ser (version , bytes) , Self :: VISION_POSITION_ESTIMATE (body) => body . ser (version , bytes) , Self :: GPS2_RTK (body) => body . ser (version , bytes) , Self :: PLAY_TUNE_V2 (body) => body . ser (version , bytes) , Self :: CELLULAR_STATUS (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_AUTHENTICATION (body) => body . ser (version , bytes) , Self :: RESPONSE_EVENT_ERROR (body) => body . ser (version , bytes) , Self :: SCALED_PRESSURE2 (body) => body . ser (version , bytes) , Self :: NAMED_VALUE_FLOAT (body) => body . ser (version , bytes) , Self :: ATTITUDE_QUATERNION (body) => body . ser (version , bytes) , Self :: TIMESYNC (body) => body . ser (version , bytes) , Self :: AUTOPILOT_VERSION (body) => body . ser (version , bytes) , Self :: MISSION_REQUEST_PARTIAL_LIST (body) => body . ser (version , bytes) , Self :: VISION_SPEED_ESTIMATE (body) => body . ser (version , bytes) , Self :: SCALED_PRESSURE (body) => body . ser (version , bytes) , Self :: PARAM_REQUEST_READ (body) => body . ser (version , bytes) , Self :: PARAM_EXT_ACK (body) => body . ser (version , bytes) , Self :: WIFI_CONFIG_AP (body) => body . ser (version , bytes) , Self :: EXTENDED_SYS_STATE (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_OPERATOR_ID (body) => body . ser (version , bytes) , Self :: GIMBAL_DEVICE_SET_ATTITUDE (body) => body . ser (version , bytes) , Self :: VIDEO_STREAM_STATUS (body) => body . ser (version , bytes) , Self :: UAVCAN_NODE_INFO (body) => body . ser (version , bytes) , Self :: SAFETY_SET_ALLOWED_AREA (body) => body . ser (version , bytes) , Self :: GLOBAL_POSITION_INT_COV (body) => body . ser (version , bytes) , Self :: SYS_STATUS (body) => body . ser (version , bytes) , Self :: ODOMETRY (body) => body . ser (version , bytes) , Self :: CAMERA_INFORMATION (body) => body . ser (version , bytes) , Self :: HIL_STATE (body) => body . ser (version , bytes) , Self :: CAMERA_TRACKING_IMAGE_STATUS (body) => body . ser (version , bytes) , Self :: SET_ACTUATOR_CONTROL_TARGET (body) => body . ser (version , bytes) , Self :: TERRAIN_REPORT (body) => body . ser (version , bytes) , Self :: ACTUATOR_OUTPUT_STATUS (body) => body . ser (version , bytes) , Self :: PARAM_EXT_REQUEST_READ (body) => body . ser (version , bytes) , Self :: SUPPORTED_TUNES (body) => body . ser (version , bytes) , Self :: CURRENT_EVENT_SEQUENCE (body) => body . ser (version , bytes) , Self :: PARAM_SET (body) => body . ser (version , bytes) , Self :: BATTERY_STATUS (body) => body . ser (version , bytes) , Self :: MAG_CAL_REPORT (body) => body . ser (version , bytes) , Self :: STORAGE_INFORMATION (body) => body . ser (version , bytes) , Self :: SETUP_SIGNING (body) => body . ser (version , bytes) , Self :: MOUNT_ORIENTATION (body) => body . ser (version , bytes) , Self :: OPTICAL_FLOW_RAD (body) => body . ser (version , bytes) , Self :: RC_CHANNELS (body) => body . ser (version , bytes) , Self :: GPS_RTCM_DATA (body) => body . ser (version , bytes) , Self :: ACTUATOR_CONTROL_TARGET (body) => body . ser (version , bytes) , Self :: ORBIT_EXECUTION_STATUS (body) => body . ser (version , bytes) , Self :: GIMBAL_DEVICE_ATTITUDE_STATUS (body) => body . ser (version , bytes) , Self :: PING (body) => body . ser (version , bytes) , Self :: ATTITUDE (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_ARM_STATUS (body) => body . ser (version , bytes) , Self :: LOGGING_ACK (body) => body . ser (version , bytes) , Self :: ATT_POS_MOCAP (body) => body . ser (version , bytes) , Self :: LINK_NODE_STATUS (body) => body . ser (version , bytes) , Self :: MEMORY_VECT (body) => body . ser (version , bytes) , Self :: GPS_STATUS (body) => body . ser (version , bytes) , Self :: HIL_OPTICAL_FLOW (body) => body . ser (version , bytes) , Self :: SERIAL_CONTROL (body) => body . ser (version , bytes) , Self :: DATA_TRANSMISSION_HANDSHAKE (body) => body . ser (version , bytes) , Self :: COMMAND_ACK (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_SYSTEM (body) => body . ser (version , bytes) , Self :: PARAM_EXT_VALUE (body) => body . ser (version , bytes) , Self :: GIMBAL_MANAGER_INFORMATION (body) => body . ser (version , bytes) , Self :: HYGROMETER_SENSOR (body) => body . ser (version , bytes) , Self :: POSITION_TARGET_GLOBAL_INT (body) => body . ser (version , bytes) , Self :: AUTOPILOT_STATE_FOR_GIMBAL_DEVICE (body) => body . ser (version , bytes) , Self :: DATA_STREAM (body) => body . ser (version , bytes) , Self :: POWER_STATUS (body) => body . ser (version , bytes) , Self :: BUTTON_CHANGE (body) => body . ser (version , bytes) , Self :: STATUSTEXT (body) => body . ser (version , bytes) , Self :: HIGHRES_IMU (body) => body . ser (version , bytes) , Self :: ESC_INFO (body) => body . ser (version , bytes) , Self :: SCALED_IMU (body) => body . ser (version , bytes) , Self :: MISSION_SET_CURRENT (body) => body . ser (version , bytes) , Self :: VIDEO_STREAM_INFORMATION (body) => body . ser (version , bytes) , Self :: MISSION_WRITE_PARTIAL_LIST (body) => body . ser (version , bytes) , Self :: SET_ATTITUDE_TARGET (body) => body . ser (version , bytes) , Self :: WHEEL_DISTANCE (body) => body . ser (version , bytes) , Self :: GLOBAL_VISION_POSITION_ESTIMATE (body) => body . ser (version , bytes) , Self :: WINCH_STATUS (body) => body . ser (version , bytes) , Self :: PLAY_TUNE (body) => body . ser (version , bytes) , Self :: TUNNEL (body) => body . ser (version , bytes) , Self :: MISSION_REQUEST_LIST (body) => body . ser (version , bytes) , Self :: SET_POSITION_TARGET_GLOBAL_INT (body) => body . ser (version , bytes) , Self :: FOLLOW_TARGET (body) => body . ser (version , bytes) , Self :: REQUEST_EVENT (body) => body . ser (version , bytes) , Self :: NAMED_VALUE_INT (body) => body . ser (version , bytes) , Self :: VFR_HUD (body) => body . ser (version , bytes) , Self :: LOG_REQUEST_DATA (body) => body . ser (version , bytes) , Self :: GPS2_RAW (body) => body . ser (version , bytes) , Self :: HIGH_LATENCY (body) => body . ser (version , bytes) , Self :: RADIO_STATUS (body) => body . ser (version , bytes) , Self :: RAW_PRESSURE (body) => body . ser (version , bytes) , Self :: ALTITUDE (body) => body . ser (version , bytes) , Self :: SET_POSITION_TARGET_LOCAL_NED (body) => body . ser (version , bytes) , Self :: GIMBAL_MANAGER_SET_MANUAL_CONTROL (body) => body . ser (version , bytes) , Self :: SCALED_IMU2 (body) => body . ser (version , bytes) , Self :: GPS_RAW_INT (body) => body . ser (version , bytes) , Self :: MISSION_CLEAR_ALL (body) => body . ser (version , bytes) , Self :: SCALED_IMU3 (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_LOCATION (body) => body . ser (version , bytes) , Self :: GPS_INJECT_DATA (body) => body . ser (version , bytes) , Self :: FILE_TRANSFER_PROTOCOL (body) => body . ser (version , bytes) , Self :: CAMERA_FOV_STATUS (body) => body . ser (version , bytes) , Self :: RC_CHANNELS_OVERRIDE (body) => body . ser (version , bytes) , Self :: LANDING_TARGET (body) => body . ser (version , bytes) , Self :: ISBD_LINK_STATUS (body) => body . ser (version , bytes) , Self :: GIMBAL_DEVICE_INFORMATION (body) => body . ser (version , bytes) , Self :: SET_HOME_POSITION (body) => body . ser (version , bytes) , Self :: COMPONENT_INFORMATION (body) => body . ser (version , bytes) , Self :: HOME_POSITION (body) => body . ser (version , bytes) , Self :: CAN_FILTER_MODIFY (body) => body . ser (version , bytes) , Self :: ENCAPSULATED_DATA (body) => body . ser (version , bytes) , Self :: GENERATOR_STATUS (body) => body . ser (version , bytes) , Self :: MESSAGE_INTERVAL (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_MESSAGE_PACK (body) => body . ser (version , bytes) , Self :: LOCAL_POSITION_NED_COV (body) => body . ser (version , bytes) , Self :: COMPONENT_METADATA (body) => body . ser (version , bytes) , Self :: SIM_STATE (body) => body . ser (version , bytes) , Self :: SERVO_OUTPUT_RAW (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_BASIC_ID (body) => body . ser (version , bytes) , Self :: LOG_REQUEST_LIST (body) => body . ser (version , bytes) , Self :: OPEN_DRONE_ID_SYSTEM_UPDATE (body) => body . ser (version , bytes) , } } fn extra_crc (id : u32) -> u8 { match id { UAVIONIX_ADSB_OUT_CFG_DATA :: ID => UAVIONIX_ADSB_OUT_CFG_DATA :: EXTRA_CRC , ADSB_VEHICLE_DATA :: ID => ADSB_VEHICLE_DATA :: EXTRA_CRC , MISSION_ITEM_DATA :: ID => MISSION_ITEM_DATA :: EXTRA_CRC , CAMERA_TRIGGER_DATA :: ID => CAMERA_TRIGGER_DATA :: EXTRA_CRC , ONBOARD_COMPUTER_STATUS_DATA :: ID => ONBOARD_COMPUTER_STATUS_DATA :: EXTRA_CRC , ATTITUDE_TARGET_DATA :: ID => ATTITUDE_TARGET_DATA :: EXTRA_CRC , HIGH_LATENCY2_DATA :: ID => HIGH_LATENCY2_DATA :: EXTRA_CRC , DEBUG_VECT_DATA :: ID => DEBUG_VECT_DATA :: EXTRA_CRC , LOG_REQUEST_END_DATA :: ID => LOG_REQUEST_END_DATA :: EXTRA_CRC , NAV_CONTROLLER_OUTPUT_DATA :: ID => NAV_CONTROLLER_OUTPUT_DATA :: EXTRA_CRC , UTM_GLOBAL_POSITION_DATA :: ID => UTM_GLOBAL_POSITION_DATA :: EXTRA_CRC , GPS_INPUT_DATA :: ID => GPS_INPUT_DATA :: EXTRA_CRC , UAVCAN_NODE_STATUS_DATA :: ID => UAVCAN_NODE_STATUS_DATA :: EXTRA_CRC , LOGGING_DATA_ACKED_DATA :: ID => LOGGING_DATA_ACKED_DATA :: EXTRA_CRC , RAW_RPM_DATA :: ID => RAW_RPM_DATA :: EXTRA_CRC , MISSION_REQUEST_DATA :: ID => MISSION_REQUEST_DATA :: EXTRA_CRC , HIL_ACTUATOR_CONTROLS_DATA :: ID => HIL_ACTUATOR_CONTROLS_DATA :: EXTRA_CRC , PARAM_REQUEST_LIST_DATA :: ID => PARAM_REQUEST_LIST_DATA :: EXTRA_CRC , MISSION_ITEM_INT_DATA :: ID => MISSION_ITEM_INT_DATA :: EXTRA_CRC , LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: ID => LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET_DATA :: EXTRA_CRC , EFI_STATUS_DATA :: ID => EFI_STATUS_DATA :: EXTRA_CRC , MISSION_ITEM_REACHED_DATA :: ID => MISSION_ITEM_REACHED_DATA :: EXTRA_CRC , REQUEST_DATA_STREAM_DATA :: ID => REQUEST_DATA_STREAM_DATA :: EXTRA_CRC , UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: ID => UAVIONIX_ADSB_OUT_DYNAMIC_DATA :: EXTRA_CRC , CAMERA_CAPTURE_STATUS_DATA :: ID => CAMERA_CAPTURE_STATUS_DATA :: EXTRA_CRC , MANUAL_CONTROL_DATA :: ID => MANUAL_CONTROL_DATA :: EXTRA_CRC , GIMBAL_MANAGER_SET_PITCHYAW_DATA :: ID => GIMBAL_MANAGER_SET_PITCHYAW_DATA :: EXTRA_CRC , GPS_GLOBAL_ORIGIN_DATA :: ID => GPS_GLOBAL_ORIGIN_DATA :: EXTRA_CRC , HIL_CONTROLS_DATA :: ID => HIL_CONTROLS_DATA :: EXTRA_CRC , OPTICAL_FLOW_DATA :: ID => OPTICAL_FLOW_DATA :: EXTRA_CRC , OPEN_DRONE_ID_SELF_ID_DATA :: ID => OPEN_DRONE_ID_SELF_ID_DATA :: EXTRA_CRC , TIME_ESTIMATE_TO_TARGET_DATA :: ID => TIME_ESTIMATE_TO_TARGET_DATA :: EXTRA_CRC , PARAM_VALUE_DATA :: ID => PARAM_VALUE_DATA :: EXTRA_CRC , DEBUG_FLOAT_ARRAY_DATA :: ID => DEBUG_FLOAT_ARRAY_DATA :: EXTRA_CRC , AIS_VESSEL_DATA :: ID => AIS_VESSEL_DATA :: EXTRA_CRC , ATTITUDE_QUATERNION_COV_DATA :: ID => ATTITUDE_QUATERNION_COV_DATA :: EXTRA_CRC , GLOBAL_POSITION_INT_DATA :: ID => GLOBAL_POSITION_INT_DATA :: EXTRA_CRC , LOG_ENTRY_DATA :: ID => LOG_ENTRY_DATA :: EXTRA_CRC , OBSTACLE_DISTANCE_DATA :: ID => OBSTACLE_DISTANCE_DATA :: EXTRA_CRC , MISSION_COUNT_DATA :: ID => MISSION_COUNT_DATA :: EXTRA_CRC , FENCE_STATUS_DATA :: ID => FENCE_STATUS_DATA :: EXTRA_CRC , EVENT_DATA :: ID => EVENT_DATA :: EXTRA_CRC , HIL_SENSOR_DATA :: ID => HIL_SENSOR_DATA :: EXTRA_CRC , RAW_IMU_DATA :: ID => RAW_IMU_DATA :: EXTRA_CRC , V2_EXTENSION_DATA :: ID => V2_EXTENSION_DATA :: EXTRA_CRC , SMART_BATTERY_INFO_DATA :: ID => SMART_BATTERY_INFO_DATA :: EXTRA_CRC , PARAM_EXT_SET_DATA :: ID => PARAM_EXT_SET_DATA :: EXTRA_CRC , TERRAIN_CHECK_DATA :: ID => TERRAIN_CHECK_DATA :: EXTRA_CRC , TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: ID => TRAJECTORY_REPRESENTATION_WAYPOINTS_DATA :: EXTRA_CRC , CAMERA_IMAGE_CAPTURED_DATA :: ID => CAMERA_IMAGE_CAPTURED_DATA :: EXTRA_CRC , HEARTBEAT_DATA :: ID => HEARTBEAT_DATA :: EXTRA_CRC , LOG_ERASE_DATA :: ID => LOG_ERASE_DATA :: EXTRA_CRC , MANUAL_SETPOINT_DATA :: ID => MANUAL_SETPOINT_DATA :: EXTRA_CRC , SYSTEM_TIME_DATA :: ID => SYSTEM_TIME_DATA :: EXTRA_CRC , HIL_GPS_DATA :: ID => HIL_GPS_DATA :: EXTRA_CRC , ESC_STATUS_DATA :: ID => ESC_STATUS_DATA :: EXTRA_CRC , CAMERA_TRACKING_GEO_STATUS_DATA :: ID => CAMERA_TRACKING_GEO_STATUS_DATA :: EXTRA_CRC , COMMAND_INT_DATA :: ID => COMMAND_INT_DATA :: EXTRA_CRC , HIL_RC_INPUTS_RAW_DATA :: ID => HIL_RC_INPUTS_RAW_DATA :: EXTRA_CRC , COMMAND_CANCEL_DATA :: ID => COMMAND_CANCEL_DATA :: EXTRA_CRC , TRAJECTORY_REPRESENTATION_BEZIER_DATA :: ID => TRAJECTORY_REPRESENTATION_BEZIER_DATA :: EXTRA_CRC , MISSION_CURRENT_DATA :: ID => MISSION_CURRENT_DATA :: EXTRA_CRC , UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: ID => UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT_DATA :: EXTRA_CRC , FLIGHT_INFORMATION_DATA :: ID => FLIGHT_INFORMATION_DATA :: EXTRA_CRC , SCALED_PRESSURE3_DATA :: ID => SCALED_PRESSURE3_DATA :: EXTRA_CRC , LOGGING_DATA_DATA :: ID => LOGGING_DATA_DATA :: EXTRA_CRC , ESTIMATOR_STATUS_DATA :: ID => ESTIMATOR_STATUS_DATA :: EXTRA_CRC , SET_GPS_GLOBAL_ORIGIN_DATA :: ID => SET_GPS_GLOBAL_ORIGIN_DATA :: EXTRA_CRC , DEBUG_DATA :: ID => DEBUG_DATA :: EXTRA_CRC , LOG_DATA_DATA :: ID => LOG_DATA_DATA :: EXTRA_CRC , LOCAL_POSITION_NED_DATA :: ID => LOCAL_POSITION_NED_DATA :: EXTRA_CRC , CANFD_FRAME_DATA :: ID => CANFD_FRAME_DATA :: EXTRA_CRC , MISSION_REQUEST_INT_DATA :: ID => MISSION_REQUEST_INT_DATA :: EXTRA_CRC , COMMAND_LONG_DATA :: ID => COMMAND_LONG_DATA :: EXTRA_CRC , HIL_STATE_QUATERNION_DATA :: ID => HIL_STATE_QUATERNION_DATA :: EXTRA_CRC , RC_CHANNELS_RAW_DATA :: ID => RC_CHANNELS_RAW_DATA :: EXTRA_CRC , DISTANCE_SENSOR_DATA :: ID => DISTANCE_SENSOR_DATA :: EXTRA_CRC , PARAM_EXT_REQUEST_LIST_DATA :: ID => PARAM_EXT_REQUEST_LIST_DATA :: EXTRA_CRC , AUTH_KEY_DATA :: ID => AUTH_KEY_DATA :: EXTRA_CRC , MISSION_ACK_DATA :: ID => MISSION_ACK_DATA :: EXTRA_CRC , RESOURCE_REQUEST_DATA :: ID => RESOURCE_REQUEST_DATA :: EXTRA_CRC , SAFETY_ALLOWED_AREA_DATA :: ID => SAFETY_ALLOWED_AREA_DATA :: EXTRA_CRC , CAMERA_SETTINGS_DATA :: ID => CAMERA_SETTINGS_DATA :: EXTRA_CRC , GIMBAL_MANAGER_SET_ATTITUDE_DATA :: ID => GIMBAL_MANAGER_SET_ATTITUDE_DATA :: EXTRA_CRC , GPS_RTK_DATA :: ID => GPS_RTK_DATA :: EXTRA_CRC , PROTOCOL_VERSION_DATA :: ID => PROTOCOL_VERSION_DATA :: EXTRA_CRC , TERRAIN_REQUEST_DATA :: ID => TERRAIN_REQUEST_DATA :: EXTRA_CRC , POSITION_TARGET_LOCAL_NED_DATA :: ID => POSITION_TARGET_LOCAL_NED_DATA :: EXTRA_CRC , WIND_COV_DATA :: ID => WIND_COV_DATA :: EXTRA_CRC , COLLISION_DATA :: ID => COLLISION_DATA :: EXTRA_CRC , CELLULAR_CONFIG_DATA :: ID => CELLULAR_CONFIG_DATA :: EXTRA_CRC , CHANGE_OPERATOR_CONTROL_ACK_DATA :: ID => CHANGE_OPERATOR_CONTROL_ACK_DATA :: EXTRA_CRC , CONTROL_SYSTEM_STATE_DATA :: ID => CONTROL_SYSTEM_STATE_DATA :: EXTRA_CRC , RC_CHANNELS_SCALED_DATA :: ID => RC_CHANNELS_SCALED_DATA :: EXTRA_CRC , CAN_FRAME_DATA :: ID => CAN_FRAME_DATA :: EXTRA_CRC , VICON_POSITION_ESTIMATE_DATA :: ID => VICON_POSITION_ESTIMATE_DATA :: EXTRA_CRC , GIMBAL_MANAGER_STATUS_DATA :: ID => GIMBAL_MANAGER_STATUS_DATA :: EXTRA_CRC , SET_MODE_DATA :: ID => SET_MODE_DATA :: EXTRA_CRC , TERRAIN_DATA_DATA :: ID => TERRAIN_DATA_DATA :: EXTRA_CRC , CHANGE_OPERATOR_CONTROL_DATA :: ID => CHANGE_OPERATOR_CONTROL_DATA :: EXTRA_CRC , PARAM_MAP_RC_DATA :: ID => PARAM_MAP_RC_DATA :: EXTRA_CRC , VIBRATION_DATA :: ID => VIBRATION_DATA :: EXTRA_CRC , VISION_POSITION_ESTIMATE_DATA :: ID => VISION_POSITION_ESTIMATE_DATA :: EXTRA_CRC , GPS2_RTK_DATA :: ID => GPS2_RTK_DATA :: EXTRA_CRC , PLAY_TUNE_V2_DATA :: ID => PLAY_TUNE_V2_DATA :: EXTRA_CRC , CELLULAR_STATUS_DATA :: ID => CELLULAR_STATUS_DATA :: EXTRA_CRC , OPEN_DRONE_ID_AUTHENTICATION_DATA :: ID => OPEN_DRONE_ID_AUTHENTICATION_DATA :: EXTRA_CRC , RESPONSE_EVENT_ERROR_DATA :: ID => RESPONSE_EVENT_ERROR_DATA :: EXTRA_CRC , SCALED_PRESSURE2_DATA :: ID => SCALED_PRESSURE2_DATA :: EXTRA_CRC , NAMED_VALUE_FLOAT_DATA :: ID => NAMED_VALUE_FLOAT_DATA :: EXTRA_CRC , ATTITUDE_QUATERNION_DATA :: ID => ATTITUDE_QUATERNION_DATA :: EXTRA_CRC , TIMESYNC_DATA :: ID => TIMESYNC_DATA :: EXTRA_CRC , AUTOPILOT_VERSION_DATA :: ID => AUTOPILOT_VERSION_DATA :: EXTRA_CRC , MISSION_REQUEST_PARTIAL_LIST_DATA :: ID => MISSION_REQUEST_PARTIAL_LIST_DATA :: EXTRA_CRC , VISION_SPEED_ESTIMATE_DATA :: ID => VISION_SPEED_ESTIMATE_DATA :: EXTRA_CRC , SCALED_PRESSURE_DATA :: ID => SCALED_PRESSURE_DATA :: EXTRA_CRC , PARAM_REQUEST_READ_DATA :: ID => PARAM_REQUEST_READ_DATA :: EXTRA_CRC , PARAM_EXT_ACK_DATA :: ID => PARAM_EXT_ACK_DATA :: EXTRA_CRC , WIFI_CONFIG_AP_DATA :: ID => WIFI_CONFIG_AP_DATA :: EXTRA_CRC , EXTENDED_SYS_STATE_DATA :: ID => EXTENDED_SYS_STATE_DATA :: EXTRA_CRC , OPEN_DRONE_ID_OPERATOR_ID_DATA :: ID => OPEN_DRONE_ID_OPERATOR_ID_DATA :: EXTRA_CRC , GIMBAL_DEVICE_SET_ATTITUDE_DATA :: ID => GIMBAL_DEVICE_SET_ATTITUDE_DATA :: EXTRA_CRC , VIDEO_STREAM_STATUS_DATA :: ID => VIDEO_STREAM_STATUS_DATA :: EXTRA_CRC , UAVCAN_NODE_INFO_DATA :: ID => UAVCAN_NODE_INFO_DATA :: EXTRA_CRC , SAFETY_SET_ALLOWED_AREA_DATA :: ID => SAFETY_SET_ALLOWED_AREA_DATA :: EXTRA_CRC , GLOBAL_POSITION_INT_COV_DATA :: ID => GLOBAL_POSITION_INT_COV_DATA :: EXTRA_CRC , SYS_STATUS_DATA :: ID => SYS_STATUS_DATA :: EXTRA_CRC , ODOMETRY_DATA :: ID => ODOMETRY_DATA :: EXTRA_CRC , CAMERA_INFORMATION_DATA :: ID => CAMERA_INFORMATION_DATA :: EXTRA_CRC , HIL_STATE_DATA :: ID => HIL_STATE_DATA :: EXTRA_CRC , CAMERA_TRACKING_IMAGE_STATUS_DATA :: ID => CAMERA_TRACKING_IMAGE_STATUS_DATA :: EXTRA_CRC , SET_ACTUATOR_CONTROL_TARGET_DATA :: ID => SET_ACTUATOR_CONTROL_TARGET_DATA :: EXTRA_CRC , TERRAIN_REPORT_DATA :: ID => TERRAIN_REPORT_DATA :: EXTRA_CRC , ACTUATOR_OUTPUT_STATUS_DATA :: ID => ACTUATOR_OUTPUT_STATUS_DATA :: EXTRA_CRC , PARAM_EXT_REQUEST_READ_DATA :: ID => PARAM_EXT_REQUEST_READ_DATA :: EXTRA_CRC , SUPPORTED_TUNES_DATA :: ID => SUPPORTED_TUNES_DATA :: EXTRA_CRC , CURRENT_EVENT_SEQUENCE_DATA :: ID => CURRENT_EVENT_SEQUENCE_DATA :: EXTRA_CRC , PARAM_SET_DATA :: ID => PARAM_SET_DATA :: EXTRA_CRC , BATTERY_STATUS_DATA :: ID => BATTERY_STATUS_DATA :: EXTRA_CRC , MAG_CAL_REPORT_DATA :: ID => MAG_CAL_REPORT_DATA :: EXTRA_CRC , STORAGE_INFORMATION_DATA :: ID => STORAGE_INFORMATION_DATA :: EXTRA_CRC , SETUP_SIGNING_DATA :: ID => SETUP_SIGNING_DATA :: EXTRA_CRC , MOUNT_ORIENTATION_DATA :: ID => MOUNT_ORIENTATION_DATA :: EXTRA_CRC , OPTICAL_FLOW_RAD_DATA :: ID => OPTICAL_FLOW_RAD_DATA :: EXTRA_CRC , RC_CHANNELS_DATA :: ID => RC_CHANNELS_DATA :: EXTRA_CRC , GPS_RTCM_DATA_DATA :: ID => GPS_RTCM_DATA_DATA :: EXTRA_CRC , ACTUATOR_CONTROL_TARGET_DATA :: ID => ACTUATOR_CONTROL_TARGET_DATA :: EXTRA_CRC , ORBIT_EXECUTION_STATUS_DATA :: ID => ORBIT_EXECUTION_STATUS_DATA :: EXTRA_CRC , GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: ID => GIMBAL_DEVICE_ATTITUDE_STATUS_DATA :: EXTRA_CRC , PING_DATA :: ID => PING_DATA :: EXTRA_CRC , ATTITUDE_DATA :: ID => ATTITUDE_DATA :: EXTRA_CRC , OPEN_DRONE_ID_ARM_STATUS_DATA :: ID => OPEN_DRONE_ID_ARM_STATUS_DATA :: EXTRA_CRC , LOGGING_ACK_DATA :: ID => LOGGING_ACK_DATA :: EXTRA_CRC , ATT_POS_MOCAP_DATA :: ID => ATT_POS_MOCAP_DATA :: EXTRA_CRC , LINK_NODE_STATUS_DATA :: ID => LINK_NODE_STATUS_DATA :: EXTRA_CRC , MEMORY_VECT_DATA :: ID => MEMORY_VECT_DATA :: EXTRA_CRC , GPS_STATUS_DATA :: ID => GPS_STATUS_DATA :: EXTRA_CRC , HIL_OPTICAL_FLOW_DATA :: ID => HIL_OPTICAL_FLOW_DATA :: EXTRA_CRC , SERIAL_CONTROL_DATA :: ID => SERIAL_CONTROL_DATA :: EXTRA_CRC , DATA_TRANSMISSION_HANDSHAKE_DATA :: ID => DATA_TRANSMISSION_HANDSHAKE_DATA :: EXTRA_CRC , COMMAND_ACK_DATA :: ID => COMMAND_ACK_DATA :: EXTRA_CRC , OPEN_DRONE_ID_SYSTEM_DATA :: ID => OPEN_DRONE_ID_SYSTEM_DATA :: EXTRA_CRC , PARAM_EXT_VALUE_DATA :: ID => PARAM_EXT_VALUE_DATA :: EXTRA_CRC , GIMBAL_MANAGER_INFORMATION_DATA :: ID => GIMBAL_MANAGER_INFORMATION_DATA :: EXTRA_CRC , HYGROMETER_SENSOR_DATA :: ID => HYGROMETER_SENSOR_DATA :: EXTRA_CRC , POSITION_TARGET_GLOBAL_INT_DATA :: ID => POSITION_TARGET_GLOBAL_INT_DATA :: EXTRA_CRC , AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: ID => AUTOPILOT_STATE_FOR_GIMBAL_DEVICE_DATA :: EXTRA_CRC , DATA_STREAM_DATA :: ID => DATA_STREAM_DATA :: EXTRA_CRC , POWER_STATUS_DATA :: ID => POWER_STATUS_DATA :: EXTRA_CRC , BUTTON_CHANGE_DATA :: ID => BUTTON_CHANGE_DATA :: EXTRA_CRC , STATUSTEXT_DATA :: ID => STATUSTEXT_DATA :: EXTRA_CRC , HIGHRES_IMU_DATA :: ID => HIGHRES_IMU_DATA :: EXTRA_CRC , ESC_INFO_DATA :: ID => ESC_INFO_DATA :: EXTRA_CRC , SCALED_IMU_DATA :: ID => SCALED_IMU_DATA :: EXTRA_CRC , MISSION_SET_CURRENT_DATA :: ID => MISSION_SET_CURRENT_DATA :: EXTRA_CRC , VIDEO_STREAM_INFORMATION_DATA :: ID => VIDEO_STREAM_INFORMATION_DATA :: EXTRA_CRC , MISSION_WRITE_PARTIAL_LIST_DATA :: ID => MISSION_WRITE_PARTIAL_LIST_DATA :: EXTRA_CRC , SET_ATTITUDE_TARGET_DATA :: ID => SET_ATTITUDE_TARGET_DATA :: EXTRA_CRC , WHEEL_DISTANCE_DATA :: ID => WHEEL_DISTANCE_DATA :: EXTRA_CRC , GLOBAL_VISION_POSITION_ESTIMATE_DATA :: ID => GLOBAL_VISION_POSITION_ESTIMATE_DATA :: EXTRA_CRC , WINCH_STATUS_DATA :: ID => WINCH_STATUS_DATA :: EXTRA_CRC , PLAY_TUNE_DATA :: ID => PLAY_TUNE_DATA :: EXTRA_CRC , TUNNEL_DATA :: ID => TUNNEL_DATA :: EXTRA_CRC , MISSION_REQUEST_LIST_DATA :: ID => MISSION_REQUEST_LIST_DATA :: EXTRA_CRC , SET_POSITION_TARGET_GLOBAL_INT_DATA :: ID => SET_POSITION_TARGET_GLOBAL_INT_DATA :: EXTRA_CRC , FOLLOW_TARGET_DATA :: ID => FOLLOW_TARGET_DATA :: EXTRA_CRC , REQUEST_EVENT_DATA :: ID => REQUEST_EVENT_DATA :: EXTRA_CRC , NAMED_VALUE_INT_DATA :: ID => NAMED_VALUE_INT_DATA :: EXTRA_CRC , VFR_HUD_DATA :: ID => VFR_HUD_DATA :: EXTRA_CRC , LOG_REQUEST_DATA_DATA :: ID => LOG_REQUEST_DATA_DATA :: EXTRA_CRC , GPS2_RAW_DATA :: ID => GPS2_RAW_DATA :: EXTRA_CRC , HIGH_LATENCY_DATA :: ID => HIGH_LATENCY_DATA :: EXTRA_CRC , RADIO_STATUS_DATA :: ID => RADIO_STATUS_DATA :: EXTRA_CRC , RAW_PRESSURE_DATA :: ID => RAW_PRESSURE_DATA :: EXTRA_CRC , ALTITUDE_DATA :: ID => ALTITUDE_DATA :: EXTRA_CRC , SET_POSITION_TARGET_LOCAL_NED_DATA :: ID => SET_POSITION_TARGET_LOCAL_NED_DATA :: EXTRA_CRC , GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: ID => GIMBAL_MANAGER_SET_MANUAL_CONTROL_DATA :: EXTRA_CRC , SCALED_IMU2_DATA :: ID => SCALED_IMU2_DATA :: EXTRA_CRC , GPS_RAW_INT_DATA :: ID => GPS_RAW_INT_DATA :: EXTRA_CRC , MISSION_CLEAR_ALL_DATA :: ID => MISSION_CLEAR_ALL_DATA :: EXTRA_CRC , SCALED_IMU3_DATA :: ID => SCALED_IMU3_DATA :: EXTRA_CRC , OPEN_DRONE_ID_LOCATION_DATA :: ID => OPEN_DRONE_ID_LOCATION_DATA :: EXTRA_CRC , GPS_INJECT_DATA_DATA :: ID => GPS_INJECT_DATA_DATA :: EXTRA_CRC , FILE_TRANSFER_PROTOCOL_DATA :: ID => FILE_TRANSFER_PROTOCOL_DATA :: EXTRA_CRC , CAMERA_FOV_STATUS_DATA :: ID => CAMERA_FOV_STATUS_DATA :: EXTRA_CRC , RC_CHANNELS_OVERRIDE_DATA :: ID => RC_CHANNELS_OVERRIDE_DATA :: EXTRA_CRC , LANDING_TARGET_DATA :: ID => LANDING_TARGET_DATA :: EXTRA_CRC , ISBD_LINK_STATUS_DATA :: ID => ISBD_LINK_STATUS_DATA :: EXTRA_CRC , GIMBAL_DEVICE_INFORMATION_DATA :: ID => GIMBAL_DEVICE_INFORMATION_DATA :: EXTRA_CRC , SET_HOME_POSITION_DATA :: ID => SET_HOME_POSITION_DATA :: EXTRA_CRC , COMPONENT_INFORMATION_DATA :: ID => COMPONENT_INFORMATION_DATA :: EXTRA_CRC , HOME_POSITION_DATA :: ID => HOME_POSITION_DATA :: EXTRA_CRC , CAN_FILTER_MODIFY_DATA :: ID => CAN_FILTER_MODIFY_DATA :: EXTRA_CRC , ENCAPSULATED_DATA_DATA :: ID => ENCAPSULATED_DATA_DATA :: EXTRA_CRC , GENERATOR_STATUS_DATA :: ID => GENERATOR_STATUS_DATA :: EXTRA_CRC , MESSAGE_INTERVAL_DATA :: ID => MESSAGE_INTERVAL_DATA :: EXTRA_CRC , OPEN_DRONE_ID_MESSAGE_PACK_DATA :: ID => OPEN_DRONE_ID_MESSAGE_PACK_DATA :: EXTRA_CRC , LOCAL_POSITION_NED_COV_DATA :: ID => LOCAL_POSITION_NED_COV_DATA :: EXTRA_CRC , COMPONENT_METADATA_DATA :: ID => COMPONENT_METADATA_DATA :: EXTRA_CRC , SIM_STATE_DATA :: ID => SIM_STATE_DATA :: EXTRA_CRC , SERVO_OUTPUT_RAW_DATA :: ID => SERVO_OUTPUT_RAW_DATA :: EXTRA_CRC , OPEN_DRONE_ID_BASIC_ID_DATA :: ID => OPEN_DRONE_ID_BASIC_ID_DATA :: EXTRA_CRC , LOG_REQUEST_LIST_DATA :: ID => LOG_REQUEST_LIST_DATA :: EXTRA_CRC , OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: ID => OPEN_DRONE_ID_SYSTEM_UPDATE_DATA :: EXTRA_CRC , _ => { 0 } , } } }
 
\ No newline at end of file diff --git a/src/mavlink_bindgen/error.rs.html b/src/mavlink_bindgen/error.rs.html index 8021fc7723..6366c2bc86 100644 --- a/src/mavlink_bindgen/error.rs.html +++ b/src/mavlink_bindgen/error.rs.html @@ -21,24 +21,36 @@ 21 22 23 +24 +25 +26 +27 +28 +29
use thiserror::Error;
 
 #[derive(Error, Debug)]
 pub enum BindGenError {
     /// Represents a failure to read the MAVLink definitions directory.
-    #[error("Could not read definitions directory {path}")]
+    #[error("Could not read definitions directory {path}: {source}")]
     CouldNotReadDefinitionsDirectory {
         source: std::io::Error,
         path: std::path::PathBuf,
     },
+    /// Represents a failure to read the MAVLink definitions directory.
+    #[error("Could not read definition file {path}: {source}")]
+    CouldNotReadDefinitionFile {
+        source: std::io::Error,
+        path: std::path::PathBuf,
+    },
     /// Represents a failure to read a directory entry in the MAVLink definitions directory.
-    #[error("Could not read MAVLink definitions directory entry {path}")]
+    #[error("Could not read MAVLink definitions directory entry {path}: {source}")]
     CouldNotReadDirectoryEntryInDefinitionsDirectory {
         source: std::io::Error,
         path: std::path::PathBuf,
     },
     /// Represents a failure to create a Rust file for the generated MAVLink bindings.
-    #[error("Could not create Rust bindings file {dest_path}")]
+    #[error("Could not create Rust bindings file {dest_path}: {source}")]
     CouldNotCreateRustBindingsFile {
         source: std::io::Error,
         dest_path: std::path::PathBuf,
diff --git a/src/mavlink_bindgen/lib.rs.html b/src/mavlink_bindgen/lib.rs.html
index 017fc00cc1..528951efd1 100644
--- a/src/mavlink_bindgen/lib.rs.html
+++ b/src/mavlink_bindgen/lib.rs.html
@@ -123,7 +123,7 @@
 123
 124
 125
-
use crate::error::BindGenError;
+
pub use crate::error::BindGenError;
 use std::fs::{read_dir, File};
 use std::io::BufWriter;
 use std::ops::Deref;
@@ -189,7 +189,7 @@
         })?);
 
         // generate code
-        parser::generate(&definitions_dir, &definition_file, &mut outf);
+        parser::generate(&definitions_dir, &definition_file, &mut outf)?;
 
         bindings.push(GeneratedBinding {
             module_name,
diff --git a/src/mavlink_bindgen/parser.rs.html b/src/mavlink_bindgen/parser.rs.html
index b7c918e973..895f30fdb5 100644
--- a/src/mavlink_bindgen/parser.rs.html
+++ b/src/mavlink_bindgen/parser.rs.html
@@ -1470,6 +1470,18 @@
 1470
 1471
 1472
+1473
+1474
+1475
+1476
+1477
+1478
+1479
+1480
+1481
+1482
+1483
+1484
 
use crc_any::CRCu16;
 use std::cmp::Ordering;
 use std::collections::hash_map::Entry;
@@ -1489,6 +1501,8 @@
 #[cfg(feature = "serde")]
 use serde::{Deserialize, Serialize};
 
+use crate::error::BindGenError;
+
 #[derive(Debug, PartialEq, Clone, Default)]
 #[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
 pub struct MavProfile {
@@ -2505,7 +2519,7 @@
     definitions_dir: &Path,
     definition_file: &Path,
     parsed_files: &mut HashSet<PathBuf>,
-) -> MavProfile {
+) -> Result<MavProfile, BindGenError> {
     let in_path = Path::new(&definitions_dir).join(definition_file);
     parsed_files.insert(in_path.clone()); // Keep track of which files have been parsed
 
@@ -2521,7 +2535,11 @@
 
     let mut xml_filter = MavXmlFilter::default();
     let mut events: Vec<Result<Event, quick_xml::Error>> = Vec::new();
-    let mut reader = Reader::from_reader(BufReader::new(File::open(in_path).unwrap()));
+    let file = File::open(&in_path).map_err(|e| BindGenError::CouldNotReadDefinitionFile {
+        source: e,
+        path: in_path.to_path_buf(),
+    })?;
+    let mut reader = Reader::from_reader(BufReader::new(file));
     reader.trim_text(true);
     reader.trim_text_end(true);
 
@@ -2803,7 +2821,7 @@
                         let include_file = Path::new(&definitions_dir).join(include.clone());
                         if !parsed_files.contains(&include_file) {
                             let included_profile =
-                                parse_profile(definitions_dir, &include, parsed_files);
+                                parse_profile(definitions_dir, &include, parsed_files)?;
                             for message in included_profile.messages.values() {
                                 profile.add_message(message);
                             }
@@ -2826,18 +2844,24 @@
     }
 
     //let profile = profile.update_messages(); //TODO verify no longer needed
-    profile.update_enums()
+    Ok(profile.update_enums())
 }
 
 /// Generate protobuf represenation of mavlink message set
 /// Generate rust representation of mavlink message set with appropriate conversion methods
-pub fn generate<W: Write>(definitions_dir: &Path, definition_file: &Path, output_rust: &mut W) {
+pub fn generate<W: Write>(
+    definitions_dir: &Path,
+    definition_file: &Path,
+    output_rust: &mut W,
+) -> Result<(), BindGenError> {
     let mut parsed_files: HashSet<PathBuf> = HashSet::new();
-    let profile = parse_profile(definitions_dir, definition_file, &mut parsed_files);
+    let profile = parse_profile(definitions_dir, definition_file, &mut parsed_files)?;
 
     // rust file
     let rust_tokens = profile.emit_rust();
     writeln!(output_rust, "{rust_tokens}").unwrap();
+
+    Ok(())
 }
 
 /// CRC operates over names of the message and names of its fields